From 65de91436e93e452cb99484831e8b27259cbb95a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 16 Aug 2023 00:14:50 +0000 Subject: [PATCH] Rebuild pages at f6421c8b28f6631ab209774c96d8000f39e2a28e --- CATcher-org_CATcher_master/authorship.json | 2 +- CATcher-org_WATcher_main/authorship.json | 2 +- CATcher-org_WATcher_main/commits.json | 2 +- archive.zip | Bin 1826260 -> 1825969 bytes reposense-logs/reposense.log.0 | 896 ++++++++++----------- summary.json | 2 +- 6 files changed, 452 insertions(+), 452 deletions(-) diff --git a/CATcher-org_CATcher_master/authorship.json b/CATcher-org_CATcher_master/authorship.json index a80fb9c..099fff2 100644 --- a/CATcher-org_CATcher_master/authorship.json +++ b/CATcher-org_CATcher_master/authorship.json @@ -1 +1 @@ -[{"path":"e2e/page-objects/bugReporting.po.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"cheehongw"},"content":"import { expect, Page } from \u0027@playwright/test\u0027;"},{"lineNumber":2,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":3,"author":{"gitId":"cheehongw"},"content":"interface BugReport {"},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":" title: string;"},{"lineNumber":5,"author":{"gitId":"cheehongw"},"content":" severityLabel?: string;"},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":" bugTypeLabel?: string;"},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":"}"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"export class BugReportingPage {"},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":" readonly page: Page;"},{"lineNumber":11,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":12,"author":{"gitId":"cheehongw"},"content":" constructor(page: Page) {"},{"lineNumber":13,"author":{"gitId":"cheehongw"},"content":" this.page \u003d page;"},{"lineNumber":14,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":15,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":" async getPhaseDescription() {"},{"lineNumber":17,"author":{"gitId":"cheehongw"},"content":" return this.page.locator(\u0027app-layout-header\u0027).textContent();"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" async accessNewBugReportingPage() {"},{"lineNumber":21,"author":{"gitId":"cheehongw"},"content":" return this.page.getByRole(\u0027button\u0027, { name: \u0027New Issue\u0027 }).click();"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Identifies a Bug-Report based on the provided parameters."},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param title Title of Bug-Report."},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @param severityLabel Severity assigned to Bug-Report."},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @param bugTypeLabel Bug-Report\u0027s Type."},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @returns true if a unique Bug-Report is present, false otherwise."},{"lineNumber":30,"author":{"gitId":"-"},"content":" */"},{"lineNumber":31,"author":{"gitId":"cheehongw"},"content":" async isBugReportPresent({ title, severityLabel, bugTypeLabel }: BugReport) {"},{"lineNumber":32,"author":{"gitId":"cheehongw"},"content":" let allRows \u003d this.page.locator(\u0027.mat-row\u0027).filter({ hasText: title });"},{"lineNumber":33,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":34,"author":{"gitId":"cheehongw"},"content":" if (severityLabel !\u003d null) {"},{"lineNumber":35,"author":{"gitId":"cheehongw"},"content":" allRows \u003d allRows.filter({ hasText: severityLabel });"},{"lineNumber":36,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":37,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":38,"author":{"gitId":"cheehongw"},"content":" if (bugTypeLabel !\u003d null) {"},{"lineNumber":39,"author":{"gitId":"cheehongw"},"content":" allRows \u003d allRows.filter({ hasText: bugTypeLabel });"},{"lineNumber":40,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":41,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":42,"author":{"gitId":"cheehongw"},"content":" return allRows.count().then((count: number) \u003d\u003e count \u003d\u003d\u003d 1);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"-":17,"cheehongw":27}},{"path":"e2e/page-objects/login.po.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"cheehongw"},"content":"import { expect, Page } from \u0027@playwright/test\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"export class LoginPage {"},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":" readonly page: Page;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":" constructor(page: Page) {"},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":" this.page \u003d page;"},{"lineNumber":8,"author":{"gitId":"-"},"content":" }"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":" async navigateToRoot() {"},{"lineNumber":11,"author":{"gitId":"cheehongw"},"content":" await this.page.goto(\u0027/\u0027);"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":" async login() {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" await this.selectSession();"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"cheehongw"},"content":" /**"},{"lineNumber":19,"author":{"gitId":"cheehongw"},"content":" * Steps to select session on the login page."},{"lineNumber":20,"author":{"gitId":"cheehongw"},"content":" */"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private async selectSession() {"},{"lineNumber":22,"author":{"gitId":"cheehongw"},"content":" await this.page.locator(\u0027app-profiles\u0027).click();"},{"lineNumber":23,"author":{"gitId":"cheehongw"},"content":" await this.page.locator(\u0027mat-option\u0027).locator(\u0027nth\u003d1\u0027).click();"},{"lineNumber":24,"author":{"gitId":"cheehongw"},"content":" await this.page.getByRole(\u0027button\u0027, { name: \u0027Submit\u0027 }).click();"},{"lineNumber":25,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"cheehongw"},"content":" /**"},{"lineNumber":28,"author":{"gitId":"cheehongw"},"content":" * Steps to confirm user when redirected back by Github OAuth"},{"lineNumber":29,"author":{"gitId":"cheehongw"},"content":" */"},{"lineNumber":30,"author":{"gitId":"cheehongw"},"content":" async confirmUser() {"},{"lineNumber":31,"author":{"gitId":"cheehongw"},"content":" await expect(this.page.getByText(\u0027Confirm Login Account\u0027)).toHaveText(\u0027Confirm Login Account\u0027);"},{"lineNumber":32,"author":{"gitId":"cheehongw"},"content":" const login_button \u003d this.page.getByRole(\u0027button\u0027, { name: \u0027github-logo Continue as CAT-Tester\u0027 });"},{"lineNumber":33,"author":{"gitId":"cheehongw"},"content":" await expect(login_button).toBeVisible();"},{"lineNumber":34,"author":{"gitId":"cheehongw"},"content":" await login_button.click();"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" async bypassAuthentication() {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" await this.login();"},{"lineNumber":39,"author":{"gitId":"-"},"content":" await this.confirmUser();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"-":20,"cheehongw":21}},{"path":"e2e/page-objects/newIssue.po.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"cheehongw"},"content":"import { expect, Page } from \u0027@playwright/test\u0027;"},{"lineNumber":2,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":3,"author":{"gitId":"cheehongw"},"content":"type DropdownOptionProps \u003d {"},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":" optionNumber: number;"},{"lineNumber":5,"author":{"gitId":"cheehongw"},"content":" dropdownText: string;"},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":"};"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"export class NewIssuePage {"},{"lineNumber":9,"author":{"gitId":"cheehongw"},"content":" readonly page: Page;"},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":11,"author":{"gitId":"cheehongw"},"content":" constructor(page: Page) {"},{"lineNumber":12,"author":{"gitId":"cheehongw"},"content":" this.page \u003d page;"},{"lineNumber":13,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":14,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":" async enterNewIssueTitle(title: string) {"},{"lineNumber":16,"author":{"gitId":"cheehongw"},"content":" return this.page.locator(\u0027#title\u0027).fill(title);"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" async enterNewBugReportDescription(desc: string) {"},{"lineNumber":20,"author":{"gitId":"cheehongw"},"content":" const textArea \u003d this.page.locator(\u0027.text-input-area\u0027);"},{"lineNumber":21,"author":{"gitId":"cheehongw"},"content":" await textArea.focus();"},{"lineNumber":22,"author":{"gitId":"-"},"content":" await textArea.clear();"},{"lineNumber":23,"author":{"gitId":"cheehongw"},"content":" return textArea.fill(desc);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" async selectSeverityDropdown() {"},{"lineNumber":27,"author":{"gitId":"cheehongw"},"content":" return this.page.locator(\u0027.severity-dropdown\u0027).click();"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" async selectBugTypeDropdown() {"},{"lineNumber":31,"author":{"gitId":"cheehongw"},"content":" return this.page.locator(\u0027.bug-dropdown\u0027).click();"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"cheehongw"},"content":" async selectDropDownOption({ optionNumber, dropdownText }: Partial\u003cDropdownOptionProps\u003e) {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (optionNumber !\u003d null \u0026\u0026 dropdownText !\u003d null) {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" throw new Error(\u0027Supply either Dropdown option number or text, not both.\u0027);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" } else if (optionNumber \u003d\u003d null \u0026\u0026 dropdownText \u003d\u003d null) {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" throw new Error(\u0027No Dropdown identification parameters supplied.\u0027);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"cheehongw"},"content":" await expect(this.page.getByRole(\u0027listbox\u0027)).toBeVisible();"},{"lineNumber":42,"author":{"gitId":"cheehongw"},"content":" const selectedOption \u003d"},{"lineNumber":43,"author":{"gitId":"cheehongw"},"content":" optionNumber !\u003d null ? this.selectDropwdownByOption(optionNumber) : this.selectDropdownByText(dropdownText as string);"},{"lineNumber":44,"author":{"gitId":"cheehongw"},"content":" await selectedOption.click();"},{"lineNumber":45,"author":{"gitId":"cheehongw"},"content":" return expect(this.page.getByRole(\u0027listbox\u0027)).toBeHidden();"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" private selectDropwdownByOption(optionNumber: number) {"},{"lineNumber":49,"author":{"gitId":"cheehongw"},"content":" return this.page.locator(\u0027.mat-option\u0027).nth(optionNumber);"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" private selectDropdownByText(dropdownText: string) {"},{"lineNumber":53,"author":{"gitId":"cheehongw"},"content":" return this.page.locator(\u0027mat-option\u0027).filter({ hasText: dropdownText });"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" async submitBugReport() {"},{"lineNumber":57,"author":{"gitId":"cheehongw"},"content":" return this.page.locator(\u0027.submit-new-bug-report\u0027).click();"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"-":32,"cheehongw":27}},{"path":"e2e/spec/bugReportingPhase.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"cheehongw"},"content":"import { test, expect } from \u0027@playwright/test\u0027;"},{"lineNumber":2,"author":{"gitId":"cheehongw"},"content":"import { LoginPage } from \u0027../page-objects/login.po\u0027;"},{"lineNumber":3,"author":{"gitId":"cheehongw"},"content":"import { BugReportingPage } from \u0027../page-objects/bugReporting.po\u0027;"},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":"import { NewIssuePage } from \u0027../page-objects/newIssue.po\u0027;"},{"lineNumber":5,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":"test.describe(\"CATcher\u0027s Bug Reporting Phase\", () \u003d\u003e {"},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":" let bugReportingPage: BugReportingPage;"},{"lineNumber":8,"author":{"gitId":"cheehongw"},"content":" let loginPage: LoginPage;"},{"lineNumber":9,"author":{"gitId":"cheehongw"},"content":" let newIssuePage: NewIssuePage;"},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":11,"author":{"gitId":"cheehongw"},"content":" test.beforeEach(async ({ page }) \u003d\u003e {"},{"lineNumber":12,"author":{"gitId":"cheehongw"},"content":" loginPage \u003d new LoginPage(page);"},{"lineNumber":13,"author":{"gitId":"cheehongw"},"content":" bugReportingPage \u003d new BugReportingPage(page);"},{"lineNumber":14,"author":{"gitId":"cheehongw"},"content":" newIssuePage \u003d new NewIssuePage(page);"},{"lineNumber":15,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":16,"author":{"gitId":"cheehongw"},"content":" await loginPage.navigateToRoot();"},{"lineNumber":17,"author":{"gitId":"cheehongw"},"content":" await loginPage.bypassAuthentication();"},{"lineNumber":18,"author":{"gitId":"cheehongw"},"content":" });"},{"lineNumber":19,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":20,"author":{"gitId":"cheehongw"},"content":" test(`displays \"Bug Reporting Phase\" in header bar`, async ({ page }) \u003d\u003e {"},{"lineNumber":21,"author":{"gitId":"cheehongw"},"content":" expect(await bugReportingPage.getPhaseDescription()).toContain(\u0027Bug Reporting Phase\u0027);"},{"lineNumber":22,"author":{"gitId":"cheehongw"},"content":" });"},{"lineNumber":23,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":24,"author":{"gitId":"cheehongw"},"content":" test(`creates new bug report`, async ({ page }) \u003d\u003e {"},{"lineNumber":25,"author":{"gitId":"cheehongw"},"content":" const testIssueCreationTitle \u003d \u0027Test Issue Creation Title\u0027;"},{"lineNumber":26,"author":{"gitId":"cheehongw"},"content":" const testIssueCreationDescription \u003d \u0027Test Issue Creation Text\u0027;"},{"lineNumber":27,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":28,"author":{"gitId":"cheehongw"},"content":" await bugReportingPage.accessNewBugReportingPage();"},{"lineNumber":29,"author":{"gitId":"cheehongw"},"content":" await newIssuePage.enterNewIssueTitle(testIssueCreationTitle);"},{"lineNumber":30,"author":{"gitId":"cheehongw"},"content":" await newIssuePage.enterNewBugReportDescription(testIssueCreationDescription);"},{"lineNumber":31,"author":{"gitId":"cheehongw"},"content":" await newIssuePage.selectSeverityDropdown();"},{"lineNumber":32,"author":{"gitId":"cheehongw"},"content":" await newIssuePage.selectDropDownOption({ dropdownText: \u0027Medium\u0027 });"},{"lineNumber":33,"author":{"gitId":"cheehongw"},"content":" await newIssuePage.selectBugTypeDropdown();"},{"lineNumber":34,"author":{"gitId":"cheehongw"},"content":" await newIssuePage.selectDropDownOption({ dropdownText: \u0027DocumentationBug\u0027 });"},{"lineNumber":35,"author":{"gitId":"cheehongw"},"content":" await newIssuePage.submitBugReport();"},{"lineNumber":36,"author":{"gitId":"cheehongw"},"content":" await page.locator(\u0027.back-button\u0027).click();"},{"lineNumber":37,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":38,"author":{"gitId":"cheehongw"},"content":" const isBugReportCorrectlyCreated: boolean \u003d await bugReportingPage.isBugReportPresent({"},{"lineNumber":39,"author":{"gitId":"cheehongw"},"content":" title: testIssueCreationTitle,"},{"lineNumber":40,"author":{"gitId":"cheehongw"},"content":" severityLabel: \u0027Medium\u0027,"},{"lineNumber":41,"author":{"gitId":"cheehongw"},"content":" bugTypeLabel: \u0027DocumentationBug\u0027"},{"lineNumber":42,"author":{"gitId":"cheehongw"},"content":" });"},{"lineNumber":43,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":44,"author":{"gitId":"cheehongw"},"content":" expect(isBugReportCorrectlyCreated).toEqual(true);"},{"lineNumber":45,"author":{"gitId":"cheehongw"},"content":" });"},{"lineNumber":46,"author":{"gitId":"cheehongw"},"content":"});"}],"authorContributionMap":{"cheehongw":46}},{"path":"e2e/spec/login.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"cheehongw"},"content":"import { AppConfig } from \u0027../../src/environments/environment\u0027;"},{"lineNumber":2,"author":{"gitId":"cheehongw"},"content":"import { test, expect } from \u0027@playwright/test\u0027;"},{"lineNumber":3,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":"test.describe(\"CATcher\u0027s Login Page\", () \u003d\u003e {"},{"lineNumber":5,"author":{"gitId":"cheehongw"},"content":" test.beforeEach(async ({ page }) \u003d\u003e {"},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":" await page.goto(\u0027/\u0027);"},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":" });"},{"lineNumber":8,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":9,"author":{"gitId":"cheehongw"},"content":" test(\u0027displays \"CATcher\" in header bar\u0027, async ({ page }) \u003d\u003e {"},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":" const title \u003d await page.locator(\u0027app-layout-header\u0027).textContent();"},{"lineNumber":11,"author":{"gitId":"cheehongw"},"content":" expect(title).toEqual(`CATcher v${AppConfig.version}receiptmail`);"},{"lineNumber":12,"author":{"gitId":"cheehongw"},"content":" });"},{"lineNumber":13,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":14,"author":{"gitId":"cheehongw"},"content":" test(\u0027allows users to authenticate themselves\u0027, async ({ page }) \u003d\u003e {"},{"lineNumber":15,"author":{"gitId":"cheehongw"},"content":" await page.locator(\u0027app-profiles\u0027).click();"},{"lineNumber":16,"author":{"gitId":"cheehongw"},"content":" await page.locator(\u0027mat-option\u0027).locator(\u0027nth\u003d1\u0027).click();"},{"lineNumber":17,"author":{"gitId":"cheehongw"},"content":" await page.getByRole(\u0027button\u0027, { name: \u0027Submit\u0027 }).click();"},{"lineNumber":18,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":19,"author":{"gitId":"cheehongw"},"content":" await expect(page.getByText(\u0027Confirm Login Account\u0027)).toHaveText(\u0027Confirm Login Account\u0027);"},{"lineNumber":20,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":21,"author":{"gitId":"cheehongw"},"content":" const login_button \u003d page.getByRole(\u0027button\u0027, { name: \u0027github-logo Continue as CAT-Tester\u0027 });"},{"lineNumber":22,"author":{"gitId":"cheehongw"},"content":" await expect(login_button).toBeVisible();"},{"lineNumber":23,"author":{"gitId":"cheehongw"},"content":" await login_button.click();"},{"lineNumber":24,"author":{"gitId":"cheehongw"},"content":" });"},{"lineNumber":25,"author":{"gitId":"cheehongw"},"content":"});"}],"authorContributionMap":{"cheehongw":25}},{"path":"playwright.config.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"cheehongw"},"content":"import { defineConfig, devices } from \u0027@playwright/test\u0027;"},{"lineNumber":2,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":3,"author":{"gitId":"cheehongw"},"content":"/**"},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":" * Read environment variables from file."},{"lineNumber":5,"author":{"gitId":"cheehongw"},"content":" * https://github.com/motdotla/dotenv"},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":" */"},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":"// require(\u0027dotenv\u0027).config();"},{"lineNumber":8,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":9,"author":{"gitId":"cheehongw"},"content":"/**"},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":" * See https://playwright.dev/docs/test-configuration."},{"lineNumber":11,"author":{"gitId":"cheehongw"},"content":" */"},{"lineNumber":12,"author":{"gitId":"cheehongw"},"content":"export default defineConfig({"},{"lineNumber":13,"author":{"gitId":"cheehongw"},"content":" testDir: \u0027./e2e/spec/\u0027,"},{"lineNumber":14,"author":{"gitId":"cheehongw"},"content":" /* Maximum time one test can run for. */"},{"lineNumber":15,"author":{"gitId":"cheehongw"},"content":" timeout: 30 * 1000,"},{"lineNumber":16,"author":{"gitId":"cheehongw"},"content":" expect: {"},{"lineNumber":17,"author":{"gitId":"cheehongw"},"content":" /**"},{"lineNumber":18,"author":{"gitId":"cheehongw"},"content":" * Maximum time expect() should wait for the condition to be met."},{"lineNumber":19,"author":{"gitId":"cheehongw"},"content":" * For example in `await expect(locator).toHaveText();`"},{"lineNumber":20,"author":{"gitId":"cheehongw"},"content":" */"},{"lineNumber":21,"author":{"gitId":"cheehongw"},"content":" timeout: 5000"},{"lineNumber":22,"author":{"gitId":"cheehongw"},"content":" },"},{"lineNumber":23,"author":{"gitId":"cheehongw"},"content":" /* Run tests in files in parallel */"},{"lineNumber":24,"author":{"gitId":"cheehongw"},"content":" fullyParallel: true,"},{"lineNumber":25,"author":{"gitId":"cheehongw"},"content":" /* Fail the build on CI if you accidentally left test.only in the source code. */"},{"lineNumber":26,"author":{"gitId":"cheehongw"},"content":" forbidOnly: !!process.env.CI,"},{"lineNumber":27,"author":{"gitId":"cheehongw"},"content":" /* Retry on CI only */"},{"lineNumber":28,"author":{"gitId":"cheehongw"},"content":" retries: process.env.CI ? 2 : 0,"},{"lineNumber":29,"author":{"gitId":"cheehongw"},"content":" /* Opt out of parallel tests on CI. */"},{"lineNumber":30,"author":{"gitId":"cheehongw"},"content":" workers: process.env.CI ? 1 : undefined,"},{"lineNumber":31,"author":{"gitId":"cheehongw"},"content":" /* Reporter to use. See https://playwright.dev/docs/test-reporters */"},{"lineNumber":32,"author":{"gitId":"cheehongw"},"content":" reporter: \u0027html\u0027,"},{"lineNumber":33,"author":{"gitId":"cheehongw"},"content":" /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */"},{"lineNumber":34,"author":{"gitId":"cheehongw"},"content":" use: {"},{"lineNumber":35,"author":{"gitId":"cheehongw"},"content":" /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */"},{"lineNumber":36,"author":{"gitId":"cheehongw"},"content":" actionTimeout: 0,"},{"lineNumber":37,"author":{"gitId":"cheehongw"},"content":" /* Base URL to use in actions like `await page.goto(\u0027/\u0027)`. */"},{"lineNumber":38,"author":{"gitId":"cheehongw"},"content":" baseURL: \u0027http://localhost:4200\u0027,"},{"lineNumber":39,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":40,"author":{"gitId":"cheehongw"},"content":" /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */"},{"lineNumber":41,"author":{"gitId":"cheehongw"},"content":" trace: \u0027on-first-retry\u0027"},{"lineNumber":42,"author":{"gitId":"cheehongw"},"content":" },"},{"lineNumber":43,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":44,"author":{"gitId":"cheehongw"},"content":" /* Configure projects for major browsers */"},{"lineNumber":45,"author":{"gitId":"cheehongw"},"content":" projects: ["},{"lineNumber":46,"author":{"gitId":"cheehongw"},"content":" {"},{"lineNumber":47,"author":{"gitId":"cheehongw"},"content":" name: \u0027chromium\u0027,"},{"lineNumber":48,"author":{"gitId":"cheehongw"},"content":" use: { ...devices[\u0027Desktop Chrome\u0027] }"},{"lineNumber":49,"author":{"gitId":"cheehongw"},"content":" },"},{"lineNumber":50,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":51,"author":{"gitId":"cheehongw"},"content":" {"},{"lineNumber":52,"author":{"gitId":"cheehongw"},"content":" name: \u0027firefox\u0027,"},{"lineNumber":53,"author":{"gitId":"cheehongw"},"content":" use: { ...devices[\u0027Desktop Firefox\u0027] }"},{"lineNumber":54,"author":{"gitId":"cheehongw"},"content":" },"},{"lineNumber":55,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":56,"author":{"gitId":"cheehongw"},"content":" {"},{"lineNumber":57,"author":{"gitId":"cheehongw"},"content":" name: \u0027webkit\u0027,"},{"lineNumber":58,"author":{"gitId":"cheehongw"},"content":" use: { ...devices[\u0027Desktop Safari\u0027] }"},{"lineNumber":59,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":60,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":61,"author":{"gitId":"cheehongw"},"content":" /* Test against mobile viewports. */"},{"lineNumber":62,"author":{"gitId":"cheehongw"},"content":" // {"},{"lineNumber":63,"author":{"gitId":"cheehongw"},"content":" // name: \u0027Mobile Chrome\u0027,"},{"lineNumber":64,"author":{"gitId":"cheehongw"},"content":" // use: { ...devices[\u0027Pixel 5\u0027] },"},{"lineNumber":65,"author":{"gitId":"cheehongw"},"content":" // },"},{"lineNumber":66,"author":{"gitId":"cheehongw"},"content":" // {"},{"lineNumber":67,"author":{"gitId":"cheehongw"},"content":" // name: \u0027Mobile Safari\u0027,"},{"lineNumber":68,"author":{"gitId":"cheehongw"},"content":" // use: { ...devices[\u0027iPhone 12\u0027] },"},{"lineNumber":69,"author":{"gitId":"cheehongw"},"content":" // },"},{"lineNumber":70,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":71,"author":{"gitId":"cheehongw"},"content":" /* Test against branded browsers. */"},{"lineNumber":72,"author":{"gitId":"cheehongw"},"content":" // {"},{"lineNumber":73,"author":{"gitId":"cheehongw"},"content":" // name: \u0027Microsoft Edge\u0027,"},{"lineNumber":74,"author":{"gitId":"cheehongw"},"content":" // use: { channel: \u0027msedge\u0027 },"},{"lineNumber":75,"author":{"gitId":"cheehongw"},"content":" // },"},{"lineNumber":76,"author":{"gitId":"cheehongw"},"content":" // {"},{"lineNumber":77,"author":{"gitId":"cheehongw"},"content":" // name: \u0027Google Chrome\u0027,"},{"lineNumber":78,"author":{"gitId":"cheehongw"},"content":" // use: { channel: \u0027chrome\u0027 },"},{"lineNumber":79,"author":{"gitId":"cheehongw"},"content":" // },"},{"lineNumber":80,"author":{"gitId":"cheehongw"},"content":" ],"},{"lineNumber":81,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":82,"author":{"gitId":"cheehongw"},"content":" /* Folder for test artifacts such as screenshots, videos, traces, etc. */"},{"lineNumber":83,"author":{"gitId":"cheehongw"},"content":" // outputDir: \u0027test-results/\u0027,"},{"lineNumber":84,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":85,"author":{"gitId":"cheehongw"},"content":" /* Run your local dev server before starting the tests */"},{"lineNumber":86,"author":{"gitId":"cheehongw"},"content":" webServer: {"},{"lineNumber":87,"author":{"gitId":"cheehongw"},"content":" command: \u0027npm run ng:serve:test\u0027,"},{"lineNumber":88,"author":{"gitId":"cheehongw"},"content":" port: 4200,"},{"lineNumber":89,"author":{"gitId":"cheehongw"},"content":" reuseExistingServer: !process.env.CI"},{"lineNumber":90,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":91,"author":{"gitId":"cheehongw"},"content":"});"}],"authorContributionMap":{"cheehongw":91}},{"path":"src/app/app.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../environments/environment\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027./core/services/error-handling.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./core/services/logging.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":7,"author":{"gitId":"-"},"content":" selector: \u0027app-root\u0027,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" templateUrl: \u0027./app.component.html\u0027,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./app.component.css\u0027]"},{"lineNumber":10,"author":{"gitId":"-"},"content":"})"},{"lineNumber":11,"author":{"gitId":"-"},"content":"export class AppComponent implements AfterViewInit {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" NOT_CONNECTED_ERROR: Error \u003d new Error(\u0027You are not connected to the internet.\u0027);"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor(logger: LoggingService, public errorHandlingService: ErrorHandlingService) {"},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.info(\u0027AppComponent: AppConfig\u0027, AppConfig);"},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.info(\u0027AppComponent: Mode web\u0027);"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" ngAfterViewInit() {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addListenerForNetworkOffline();"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * This listener checks if CATcher has a connection to a network, and will show an error snackbar if it does not."},{"lineNumber":25,"author":{"gitId":"-"},"content":" */"},{"lineNumber":26,"author":{"gitId":"-"},"content":" addListenerForNetworkOffline() {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" window.addEventListener("},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u0027offline\u0027,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" (event) \u003d\u003e {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(this.NOT_CONNECTED_ERROR);"},{"lineNumber":31,"author":{"gitId":"-"},"content":" },"},{"lineNumber":32,"author":{"gitId":"-"},"content":" false"},{"lineNumber":33,"author":{"gitId":"-"},"content":" );"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":3,"-":32}},{"path":"src/app/app.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpClientModule } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ErrorHandler, NgModule, NgZone } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { BrowserModule, Title } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { BrowserAnimationsModule } from \u0027@angular/platform-browser/animations\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { NavigationEnd, Router } from \u0027@angular/router\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Apollo, ApolloModule } from \u0027apollo-angular\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { HttpLink, HttpLinkModule } from \u0027apollo-angular-link-http\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { InMemoryCache, IntrospectionFragmentMatcher } from \u0027apollo-cache-inmemory\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ApolloLink } from \u0027apollo-link\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { setContext } from \u0027apollo-link-context\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { MarkdownModule, MarkedOptions } from \u0027ngx-markdown\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import \u0027reflect-metadata\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import graphqlTypes from \u0027../../graphql/graphql-types\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import \u0027../polyfills\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { AppRoutingModule } from \u0027./app-routing.module\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { AppComponent } from \u0027./app.component\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { AuthModule } from \u0027./auth/auth.module\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { UserConfirmationComponent } from \u0027./core/guards/user-confirmation/user-confirmation.component\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027./core/services/auth.service\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import { DataService } from \u0027./core/services/data.service\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027./core/services/error-handling.service\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import { AuthServiceFactory } from \u0027./core/services/factories/factory.auth.service\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import { GithubServiceFactory } from \u0027./core/services/factories/factory.github.service\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import { IssueServiceFactory } from \u0027./core/services/factories/factory.issue.service\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./core/services/github.service\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027./core/services/githubevent.service\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027./core/services/issue.service\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./core/services/logging.service\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027./core/services/phase.service\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import { SessionFixConfirmationComponent } from \u0027./core/services/session-fix-confirmation/session-fix-confirmation.component\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./core/services/user.service\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import { PhaseBugReportingModule } from \u0027./phase-bug-reporting/phase-bug-reporting.module\u0027;"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import { PhaseModerationModule } from \u0027./phase-moderation/phase-moderation.module\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import { PhaseTeamResponseModule } from \u0027./phase-team-response/phase-team-response.module\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import { PhaseTesterResponseModule } from \u0027./phase-tester-response/phase-tester-response.module\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import { LabelDefinitionPopupComponent } from \u0027./shared/label-definition-popup/label-definition-popup.component\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import { HeaderComponent } from \u0027./shared/layout\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import { markedOptionsFactory } from \u0027./shared/lib/marked\u0027;"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027./shared/shared.module\u0027;"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":42,"author":{"gitId":"-"},"content":" declarations: [AppComponent, HeaderComponent, UserConfirmationComponent, LabelDefinitionPopupComponent, SessionFixConfirmationComponent],"},{"lineNumber":43,"author":{"gitId":"-"},"content":" imports: ["},{"lineNumber":44,"author":{"gitId":"-"},"content":" BrowserModule,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" PhaseTesterResponseModule,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" BrowserAnimationsModule,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" AuthModule,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" PhaseBugReportingModule,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" PhaseTeamResponseModule,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" PhaseModerationModule,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" SharedModule,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" HttpClientModule,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" MarkdownModule.forRoot({"},{"lineNumber":54,"author":{"gitId":"-"},"content":" markedOptions: {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" provide: MarkedOptions,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" useFactory: markedOptionsFactory"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":59,"author":{"gitId":"-"},"content":" AppRoutingModule,"},{"lineNumber":60,"author":{"gitId":"-"},"content":" ApolloModule,"},{"lineNumber":61,"author":{"gitId":"-"},"content":" HttpLinkModule"},{"lineNumber":62,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":63,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":64,"author":{"gitId":"-"},"content":" {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" provide: GithubService,"},{"lineNumber":66,"author":{"gitId":"-"},"content":" useFactory: GithubServiceFactory,"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" deps: [ErrorHandlingService, Apollo, LoggingService]"},{"lineNumber":68,"author":{"gitId":"-"},"content":" },"},{"lineNumber":69,"author":{"gitId":"-"},"content":" {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" provide: AuthService,"},{"lineNumber":71,"author":{"gitId":"-"},"content":" useFactory: AuthServiceFactory,"},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" deps: [Router, NgZone, GithubService, UserService, IssueService, PhaseService, DataService, GithubEventService, Title, LoggingService]"},{"lineNumber":73,"author":{"gitId":"-"},"content":" },"},{"lineNumber":74,"author":{"gitId":"-"},"content":" {"},{"lineNumber":75,"author":{"gitId":"-"},"content":" provide: IssueService,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" useFactory: IssueServiceFactory,"},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" deps: [GithubService, UserService, PhaseService, DataService, LoggingService]"},{"lineNumber":78,"author":{"gitId":"-"},"content":" },"},{"lineNumber":79,"author":{"gitId":"-"},"content":" {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" provide: ErrorHandler,"},{"lineNumber":81,"author":{"gitId":"-"},"content":" useClass: ErrorHandlingService"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }"},{"lineNumber":83,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":84,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" bootstrap: [AppComponent]"},{"lineNumber":85,"author":{"gitId":"-"},"content":"})"},{"lineNumber":86,"author":{"gitId":"-"},"content":"export class AppModule {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":88,"author":{"gitId":"-"},"content":" private apollo: Apollo,"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private httpLink: HttpLink,"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private authService: AuthService,"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService"},{"lineNumber":93,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" const URI \u003d \u0027https://api.github.com/graphql\u0027;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" const basic \u003d setContext(() \u003d\u003e {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return { headers: { Accept: \u0027charset\u003dutf-8\u0027 } };"},{"lineNumber":97,"author":{"gitId":"-"},"content":" });"},{"lineNumber":98,"author":{"gitId":"-"},"content":" const auth \u003d setContext(() \u003d\u003e {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return { headers: { Authorization: `Token ${this.authService.accessToken.getValue()}` } };"},{"lineNumber":100,"author":{"gitId":"-"},"content":" });"},{"lineNumber":101,"author":{"gitId":"-"},"content":" const link \u003d ApolloLink.from([basic, auth, this.httpLink.create({ uri: URI })]);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" const fragmentMatcher \u003d new IntrospectionFragmentMatcher({"},{"lineNumber":103,"author":{"gitId":"-"},"content":" introspectionQueryResultData: graphqlTypes"},{"lineNumber":104,"author":{"gitId":"-"},"content":" });"},{"lineNumber":105,"author":{"gitId":"-"},"content":" const cache \u003d new InMemoryCache({ fragmentMatcher });"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.apollo.create({"},{"lineNumber":107,"author":{"gitId":"-"},"content":" link: link,"},{"lineNumber":108,"author":{"gitId":"-"},"content":" cache: cache"},{"lineNumber":109,"author":{"gitId":"-"},"content":" });"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.router.events.subscribe((event) \u003d\u003e {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (event instanceof NavigationEnd) {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.errorHandlingService.clearError();"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }"},{"lineNumber":114,"author":{"gitId":"-"},"content":" });"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":4,"-":112}},{"path":"src/app/auth/auth.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, NgZone, OnDestroy, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ActivatedRoute, Router } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Observable, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { filter, map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../environments/environment\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../core/models/github-user.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { ApplicationService } from \u0027../core/services/application.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { AuthService, AuthState } from \u0027../core/services/auth.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../core/services/error-handling.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../core/services/github.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../core/services/logging.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../core/services/phase.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../core/services/user.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"const APPLICATION_VERSION_OUTDATED_ERROR \u003d \u0027Please update to the latest version of CATcher.\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" selector: \u0027app-auth\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" templateUrl: \u0027./auth.component.html\u0027,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./auth.component.css\u0027]"},{"lineNumber":21,"author":{"gitId":"-"},"content":"})"},{"lineNumber":22,"author":{"gitId":"-"},"content":"export class AuthComponent implements OnInit, OnDestroy {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" authState: AuthState;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" accessTokenSubscription: Subscription;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" authStateSubscription: Subscription;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" currentUserName: string;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" urlEncodedSessionName: string;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" sessionInformation: string;"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":31,"author":{"gitId":"-"},"content":" public appService: ApplicationService,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private authService: AuthService,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private ngZone: NgZone,"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private activatedRoute: ActivatedRoute,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private logger: LoggingService"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ) {}"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.logger.startSession();"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" const oauthCode \u003d this.activatedRoute.snapshot.queryParamMap.get(\u0027code\u0027);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" const state \u003d this.activatedRoute.snapshot.queryParamMap.get(\u0027state\u0027);"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (this.authService.isAuthenticated()) {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.router.navigate([this.phaseService.currentPhase]);"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.initAccessTokenSubscription();"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.initAuthStateSubscription();"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.createProfileFromUrlQueryParams();"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (oauthCode) {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // runs upon receiving oauthCode from the redirect"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.restoreOrgDetailsFromLocalStorage();"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(\u0027AuthComponent: Obtained authorisation code from Github\u0027);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.fetchAccessToken(oauthCode, state);"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Will fetch the access token from GitHub."},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param oauthCode - The authorisation code obtained from GitHub."},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param state - The state returned from GitHub."},{"lineNumber":69,"author":{"gitId":"-"},"content":" */"},{"lineNumber":70,"author":{"gitId":"-"},"content":" fetchAccessToken(oauthCode: string, state: string) {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!this.authService.isReturnedStateSame(state)) {"},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`AuthComponent: Received incorrect state ${state}, continue waiting for correct state`);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(\u0027AuthComponent: Retrieving access token from Github\u0027);"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" const accessTokenUrl \u003d `${AppConfig.accessTokenUrl}/${oauthCode}/client_id/${AppConfig.clientId}`;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" fetch(accessTokenUrl)"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .then((res) \u003d\u003e res.json())"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .then((data) \u003d\u003e {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (data.error) {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new Error(data.error);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.authService.storeOAuthAccessToken(data.token);"},{"lineNumber":86,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(\u0027AuthComponent: Sucessfully obtained access token\u0027);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" })"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .catch((err) \u003d\u003e {"},{"lineNumber":89,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`AuthComponent: Error in data fetched from access token URL: ${err}`);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(err);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" });"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" ngOnDestroy() {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (this.authStateSubscription) {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" this.authStateSubscription.unsubscribe();"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (this.accessTokenSubscription) {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" this.accessTokenSubscription.unsubscribe();"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Checks whether the current version of CATcher is outdated."},{"lineNumber":106,"author":{"gitId":"-"},"content":" */"},{"lineNumber":107,"author":{"gitId":"-"},"content":" checkAppIsOutdated(): Observable\u003cany\u003e {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return this.appService.isApplicationOutdated().pipe("},{"lineNumber":109,"author":{"gitId":"-"},"content":" map((isOutdated: boolean) \u003d\u003e {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (isOutdated) {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new Error(APPLICATION_VERSION_OUTDATED_ERROR);"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }"},{"lineNumber":113,"author":{"gitId":"-"},"content":" })"},{"lineNumber":114,"author":{"gitId":"-"},"content":" );"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":" updateSession(sessionEvent: string) {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" this.sessionInformation \u003d sessionEvent;"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" goToSessionSelect() {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }"},{"lineNumber":124,"author":{"gitId":"-"},"content":""},{"lineNumber":125,"author":{"gitId":"-"},"content":" isUserNotAuthenticated(): boolean {"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.NotAuthenticated;"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }"},{"lineNumber":128,"author":{"gitId":"-"},"content":""},{"lineNumber":129,"author":{"gitId":"-"},"content":" isUserAuthenticating(): boolean {"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.AwaitingAuthentication;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }"},{"lineNumber":132,"author":{"gitId":"-"},"content":""},{"lineNumber":133,"author":{"gitId":"-"},"content":" isAwaitingOAuthUserConfirm(): boolean {"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.ConfirmOAuthUser;"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":" get currentSessionOrg(): string {"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!this.sessionInformation) {"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // Retrieve org details of session information from local storage"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return window.localStorage.getItem(\u0027org\u0027);"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return this.getOrgDetails(this.sessionInformation);"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }"},{"lineNumber":144,"author":{"gitId":"-"},"content":""},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Extracts organization and data repository details from local storage"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * and restores them to CATcher."},{"lineNumber":148,"author":{"gitId":"-"},"content":" */"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private restoreOrgDetailsFromLocalStorage() {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" const org \u003d window.localStorage.getItem(\u0027org\u0027);"},{"lineNumber":151,"author":{"gitId":"-"},"content":" const dataRepo \u003d window.localStorage.getItem(\u0027dataRepo\u0027);"},{"lineNumber":152,"author":{"gitId":"-"},"content":" this.githubService.storeOrganizationDetails(org, dataRepo);"},{"lineNumber":153,"author":{"gitId":"-"},"content":" this.phaseService.setSessionData();"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }"},{"lineNumber":155,"author":{"gitId":"-"},"content":""},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Extracts the Organization Details from the input sessionInformation."},{"lineNumber":158,"author":{"gitId":"-"},"content":" * @param sessionInformation - string in the format of \u0027orgName/dataRepo\u0027"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */"},{"lineNumber":160,"author":{"gitId":"-"},"content":" private getOrgDetails(sessionInformation: string) {"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return sessionInformation.split(\u0027/\u0027)[0];"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":" private initAuthStateSubscription() {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" this.authStateSubscription \u003d this.authService.currentAuthState.subscribe((state) \u003d\u003e {"},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e {"},{"lineNumber":167,"author":{"gitId":"-"},"content":" this.authState \u003d state;"},{"lineNumber":168,"author":{"gitId":"-"},"content":" });"},{"lineNumber":169,"author":{"gitId":"-"},"content":" });"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }"},{"lineNumber":171,"author":{"gitId":"-"},"content":""},{"lineNumber":172,"author":{"gitId":"-"},"content":" private initAccessTokenSubscription() {"},{"lineNumber":173,"author":{"gitId":"-"},"content":" this.accessTokenSubscription \u003d this.authService.accessToken"},{"lineNumber":174,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":175,"author":{"gitId":"-"},"content":" filter((token: string) \u003d\u003e !!token),"},{"lineNumber":176,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap(() \u003d\u003e this.userService.getAuthenticatedUser())"},{"lineNumber":177,"author":{"gitId":"-"},"content":" )"},{"lineNumber":178,"author":{"gitId":"-"},"content":" .subscribe((user: GithubUser) \u003d\u003e {"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e {"},{"lineNumber":180,"author":{"gitId":"-"},"content":" this.currentUserName \u003d user.login;"},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.ConfirmOAuthUser);"},{"lineNumber":182,"author":{"gitId":"-"},"content":" });"},{"lineNumber":183,"author":{"gitId":"-"},"content":" });"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }"},{"lineNumber":185,"author":{"gitId":"-"},"content":""},{"lineNumber":186,"author":{"gitId":"-"},"content":" private createProfileFromUrlQueryParams() {"},{"lineNumber":187,"author":{"gitId":"-"},"content":" const urlParams \u003d this.activatedRoute.snapshot.queryParamMap;"},{"lineNumber":188,"author":{"gitId":"-"},"content":" if (urlParams.has(\u0027session\u0027)) {"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.urlEncodedSessionName \u003d urlParams.get(\u0027session\u0027);"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":8,"-":184}},{"path":"src/app/auth/auth.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { CommonModule } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../shared/shared.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { AuthRoutingModule } from \u0027./auth-routing.module\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { AuthComponent } from \u0027./auth.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ConfirmLoginComponent } from \u0027./confirm-login/confirm-login.component\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { JsonParseErrorDialogComponent } from \u0027./profiles/json-parse-error-dialog/json-parse-error-dialog.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ProfilesComponent } from \u0027./profiles/profiles.component\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { SessionSelectionComponent } from \u0027./session-selection/session-selection.component\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":12,"author":{"gitId":"-"},"content":" imports: [AuthRoutingModule, SharedModule, CommonModule],"},{"lineNumber":13,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" declarations: [AuthComponent, ProfilesComponent, JsonParseErrorDialogComponent, ConfirmLoginComponent, SessionSelectionComponent]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class AuthModule {}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":14}},{"path":"src/app/auth/confirm-login/confirm-login.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cbutton mat-stroked-button class\u003d\"sign-in-button\" color\u003d\"primary\" (click)\u003d\"this.completeLoginProcess()\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"logo\"\u003e \u003cimg class\u003d\"github-logo\" src\u003d\"./assets/images/github-logo.png\" alt\u003d\"github-logo\" /\u003e \u003c/span\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cspan\u003e Continue as {{ this.username }} \u003c/span\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"\u003cdiv class\u003d\"mat-body-1\" style\u003d\"margin-top: 20px\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" To change account, please sign into the desired account from the"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003ca href\u003d\"https://github.com/\" (click)\u003d\"onGithubWebsiteClicked()\"\u003eofficial Github website\u003c/a\u003e."},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":8}},{"path":"src/app/auth/confirm-login/confirm-login.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Input, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { AuthService, AuthState } from \u0027../../core/services/auth.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../core/services/user.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":12,"author":{"gitId":"-"},"content":" selector: \u0027app-auth-confirm-login\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" templateUrl: \u0027./confirm-login.component.html\u0027,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./confirm-login.component.css\u0027]"},{"lineNumber":15,"author":{"gitId":"-"},"content":"})"},{"lineNumber":16,"author":{"gitId":"-"},"content":"export class ConfirmLoginComponent implements OnInit {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Input() username: string;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Input() currentSessionOrg: string;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":21,"author":{"gitId":"-"},"content":" private authService: AuthService,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private logger: LoggingService,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private router: Router"},{"lineNumber":28,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" onGithubWebsiteClicked() {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" window.open(\u0027https://github.com/\u0027, \u0027_blank\u0027);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" window.location.reload();"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" logIntoAnotherAccount() {"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(\u0027ConfirmLoginComponent: Logging into another account\u0027);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.authService.startOAuthProcess();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Handles the clean up required after authentication and setting up of user data is completed."},{"lineNumber":44,"author":{"gitId":"-"},"content":" */"},{"lineNumber":45,"author":{"gitId":"-"},"content":" handleAuthSuccess() {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.authService.setTitleWithPhaseDetail();"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.router.navigateByUrl(this.phaseService.currentPhase);"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.Authenticated);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Will complete the process of logging in the given user."},{"lineNumber":53,"author":{"gitId":"-"},"content":" */"},{"lineNumber":54,"author":{"gitId":"-"},"content":" completeLoginProcess(): void {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.phaseService.setPhaseOwners(this.currentSessionOrg, this.username);"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.userService"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .createUserModel(this.username)"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap(() \u003d\u003e this.phaseService.sessionSetup()),"},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap(() \u003d\u003e this.githubEventService.setLatestChangeEvent())"},{"lineNumber":62,"author":{"gitId":"-"},"content":" )"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":64,"author":{"gitId":"-"},"content":" () \u003d\u003e {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.handleAuthSuccess();"},{"lineNumber":66,"author":{"gitId":"-"},"content":" },"},{"lineNumber":67,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`ConfirmLoginComponent: Completion of login process failed with an error: ${error}`);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }"},{"lineNumber":72,"author":{"gitId":"-"},"content":" );"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":5,"-":69}},{"path":"src/app/auth/profiles/profiles.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cmat-form-field class\u003d\"profile-field\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eSelect Session\u003c/mat-label\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-select [value]\u003d\"this.selectedProfile.profileName\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cmat-option (click)\u003d\"selectProfile(this.blankProfile)\"\u003eNone\u003c/mat-option\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cmat-option *ngFor\u003d\"let profile of profiles\" (click)\u003d\"selectProfile(profile)\" [value]\u003d\"profile.profileName\"\u003e{{"},{"lineNumber":6,"author":{"gitId":"-"},"content":" profile.profileName"},{"lineNumber":7,"author":{"gitId":"-"},"content":" }}\u003c/mat-option\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003c/mat-select\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/mat-form-field\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cinput #fileInput type\u003d\"file\" style\u003d\"display: none\" accept\u003d\".json\" (change)\u003d\"this.fileSelected($event)\" /\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cbutton"},{"lineNumber":12,"author":{"gitId":"-"},"content":" class\u003d\"profile-input\""},{"lineNumber":13,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":14,"author":{"gitId":"-"},"content":" mat-icon-button"},{"lineNumber":15,"author":{"gitId":"-"},"content":" (click)\u003d\"this.fileSelectorInitiation(fileInput)\""},{"lineNumber":16,"author":{"gitId":"-"},"content":" disableRipple\u003d\"true\""},{"lineNumber":17,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" matTooltip\u003d\"Configure your custom settings\""},{"lineNumber":18,"author":{"gitId":"-"},"content":" (mousedown)\u003d\"this.animationActivated \u003d true\""},{"lineNumber":19,"author":{"gitId":"-"},"content":" (mouseleave)\u003d\"this.animationActivated \u003d false\""},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cmat-icon [@triggerFileInput]\u003d\"this.animationActivated ? \u0027pressed\u0027 : \u0027normal\u0027\"\u003efolder_open\u003c/mat-icon\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003c/button\u003e"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":21}},{"path":"src/app/auth/session-selection/session-selection.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, EventEmitter, Input, OnInit, Output } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormBuilder, FormGroup, Validators } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Profile } from \u0027../../core/models/profile.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { AuthService, AuthState } from \u0027../../core/services/auth.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../core/services/github.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-session-selection\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./session-selection.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./session-selection.component.css\u0027, \u0027../auth.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class SessionSelectionComponent implements OnInit {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // isSettingUpSession is used to indicate whether CATcher is in the midst of setting up the session."},{"lineNumber":17,"author":{"gitId":"-"},"content":" isSettingUpSession: boolean;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" profileForm: FormGroup;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Input() urlEncodedSessionName: string;"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Output() sessionEmitter: EventEmitter\u003cstring\u003e \u003d new EventEmitter\u003cstring\u003e();"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":25,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private logger: LoggingService,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private authService: AuthService,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.isSettingUpSession \u003d false;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.initProfileForm();"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Fills the login form with data from the given Profile."},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param profile - Profile selected by the user."},{"lineNumber":41,"author":{"gitId":"-"},"content":" */"},{"lineNumber":42,"author":{"gitId":"-"},"content":" onProfileSelect(profile: Profile): void {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.profileForm.get(\u0027session\u0027).setValue(profile.repoName);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.sessionEmitter.emit(profile.repoName);"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" setupSession() {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (this.profileForm.invalid) {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.isSettingUpSession \u003d true;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" const sessionInformation: string \u003d this.profileForm.get(\u0027session\u0027).value;"},{"lineNumber":53,"author":{"gitId":"-"},"content":" const org: string \u003d this.getOrgDetails(sessionInformation);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" const dataRepo: string \u003d this.getDataRepoDetails(sessionInformation);"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Persist session information in local storage"},{"lineNumber":56,"author":{"gitId":"-"},"content":" window.localStorage.setItem(\u0027org\u0027, org);"},{"lineNumber":57,"author":{"gitId":"-"},"content":" window.localStorage.setItem(\u0027dataRepo\u0027, dataRepo);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.githubService.storeOrganizationDetails(org, dataRepo);"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`SessionSelectionComponent: Selected Settings Repo: ${sessionInformation}`);"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.phaseService.storeSessionData().subscribe("},{"lineNumber":63,"author":{"gitId":"-"},"content":" () \u003d\u003e {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" try {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.authService.startOAuthProcess();"},{"lineNumber":66,"author":{"gitId":"-"},"content":" } catch (error) {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":" },"},{"lineNumber":71,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.isSettingUpSession \u003d false;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" },"},{"lineNumber":75,"author":{"gitId":"-"},"content":" () \u003d\u003e (this.isSettingUpSession \u003d false)"},{"lineNumber":76,"author":{"gitId":"-"},"content":" );"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Extracts the Organization Details from the input sessionInformation."},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param sessionInformation - string in the format of \u0027orgName/dataRepo\u0027"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private getOrgDetails(sessionInformation: string) {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return sessionInformation.split(\u0027/\u0027)[0];"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Extracts the Data Repository Details from the input sessionInformation."},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @param sessionInformation - string in the format of \u0027orgName/dataRepo\u0027"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private getDataRepoDetails(sessionInformation: string) {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return sessionInformation.split(\u0027/\u0027)[1];"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" private initProfileForm() {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.profileForm \u003d this.formBuilder.group({"},{"lineNumber":97,"author":{"gitId":"-"},"content":" session: [\u0027\u0027, Validators.required]"},{"lineNumber":98,"author":{"gitId":"-"},"content":" });"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":99}},{"path":"src/app/core/guards/user-confirmation/user-confirmation.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { CanDeactivateIssueGuard } from \u0027../can-deactivate-issue-guard.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * The UserConfirmationComponent is responsible for rendering the UserDialog"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * to verify if certain changes made to relevant inputs are to be discarded."},{"lineNumber":8,"author":{"gitId":"-"},"content":" */"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-user-confirmation\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./user-confirmation.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./user-confirmation.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class UserConfirmationComponent implements OnInit {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // Injection of a reference to Dialog from the Service that it is to be"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // displayed in."},{"lineNumber":18,"author":{"gitId":"-"},"content":" constructor(public dialogRef: MatDialogRef\u003cCanDeactivateIssueGuard\u003e, @Inject(MAT_DIALOG_DATA) public data) {}"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Closes the dialog."},{"lineNumber":24,"author":{"gitId":"-"},"content":" */"},{"lineNumber":25,"author":{"gitId":"-"},"content":" onNoClick(): void {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.dialogRef.close(false);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":27}},{"path":"src/app/core/models/issue-dispute.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Checkbox } from \u0027./checkbox.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"export class IssueDispute {"},{"lineNumber":3,"author":{"gitId":"-"},"content":" readonly TODO_DESCRIPTION \u003d \u0027Done\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":" readonly INITIAL_RESPONSE \u003d \u0027[replace this with your explanation]\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":" readonly TITLE_PREFIX \u003d \u0027## :question: \u0027;"},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":" readonly LINE_BREAK \u003d \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":" title: string; // e.g Issue severity"},{"lineNumber":8,"author":{"gitId":"-"},"content":" description: string; // e.g Team says: xxx\\n Tester says: xxx."},{"lineNumber":9,"author":{"gitId":"-"},"content":" tutorResponse: string; // e.g Not justified. I\u0027ve changed it back."},{"lineNumber":10,"author":{"gitId":"-"},"content":" todo: Checkbox; // e.g - [x] Done"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":" constructor(title: string, description: string) {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" this.title \u003d title;"},{"lineNumber":14,"author":{"gitId":"-"},"content":" this.description \u003d description;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" this.tutorResponse \u003d this.INITIAL_RESPONSE;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.todo \u003d new Checkbox(this.TODO_DESCRIPTION, false);"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" isDone(): boolean {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return this.todo.isChecked;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" /*"},{"lineNumber":24,"author":{"gitId":"-"},"content":" This method is used to format the tutor\u0027s response so that the app can upload it on Github."},{"lineNumber":25,"author":{"gitId":"-"},"content":" Refer to format in https://github.com/CATcher-org/templates#app-collect-tutor-response"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */"},{"lineNumber":27,"author":{"gitId":"-"},"content":" toTutorResponseString(): string {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" let toString \u003d \u0027\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" toString +\u003d this.TITLE_PREFIX + this.title + \u0027\\n\\n\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" toString +\u003d this.todo.toString() + \u0027\\n\\n\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" toString +\u003d this.tutorResponse + \u0027\\n\\n\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" toString +\u003d this.LINE_BREAK;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return toString;"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" compareTo(anotherResponse: IssueDispute): number {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (this.isDone() \u003d\u003d\u003d anotherResponse.isDone()) {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return this.tutorResponse.localeCompare(anotherResponse.tutorResponse);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return this.isDone() ? 1 : -1;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" toString(): string {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" let toString \u003d \u0027\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" toString +\u003d this.TITLE_PREFIX + this.title + \u0027\\n\\n\u0027;"},{"lineNumber":46,"author":{"gitId":"-"},"content":" toString +\u003d this.description + \u0027\\n\\n\u0027;"},{"lineNumber":47,"author":{"gitId":"-"},"content":" toString +\u003d this.LINE_BREAK;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return toString;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" setTutorResponse(response: string) {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.tutorResponse \u003d response;"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }"},{"lineNumber":54,"author":{"gitId":"-"},"content":""},{"lineNumber":55,"author":{"gitId":"-"},"content":" setIsDone(isDone: boolean) {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.todo.setChecked(isDone);"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"-":57,"cheehongw":1}},{"path":"src/app/core/models/issue.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import * as moment from \u0027moment\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../models/phase.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027./comment.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubComment } from \u0027./github/github-comment.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027./github/github-issue.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027./github/github-label.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { HiddenData } from \u0027./hidden-data.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { IssueDispute } from \u0027./issue-dispute.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { Team } from \u0027./team.model\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { TeamAcceptedTemplate } from \u0027./templates/team-accepted-template.model\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { TeamResponseTemplate } from \u0027./templates/team-response-template.model\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { TesterResponseTemplate } from \u0027./templates/tester-response-template.model\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { TutorModerationIssueTemplate } from \u0027./templates/tutor-moderation-issue-template.model\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { TutorModerationTodoTemplate } from \u0027./templates/tutor-moderation-todo-template.model\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { TesterResponse } from \u0027./tester-response.model\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"export class Issue {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /** Basic Fields */"},{"lineNumber":19,"author":{"gitId":"-"},"content":" readonly globalId: string;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" readonly id: number;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" readonly created_at: string;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" readonly githubIssue: GithubIssue;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" githubComments: GithubComment[];"},{"lineNumber":24,"author":{"gitId":"-"},"content":" title: string;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" description: string;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" hiddenDataInDescription: HiddenData;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" /** Fields derived from Labels */"},{"lineNumber":29,"author":{"gitId":"-"},"content":" severity: string;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" type: string;"},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" response?: string; // all instance of this should be renamed to response"},{"lineNumber":32,"author":{"gitId":"-"},"content":" duplicated?: boolean;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" status?: string;"},{"lineNumber":34,"author":{"gitId":"-"},"content":" pending?: string;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" unsure?: boolean;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" teamAssigned?: Team;"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" /** Depending on the phase, assignees attribute can be derived from Github\u0027s assignee feature OR from the Github\u0027s issue description */"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assignees?: string[];"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" /** Fields derived from parsing of Github\u0027s issue description */"},{"lineNumber":42,"author":{"gitId":"-"},"content":" duplicateOf?: number;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" teamResponse?: string;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" testerResponses?: TesterResponse[];"},{"lineNumber":45,"author":{"gitId":"-"},"content":" testerDisagree?: boolean; // whether tester agrees or disagree to teams reponse"},{"lineNumber":46,"author":{"gitId":"-"},"content":" issueComment?: IssueComment; // Issue comment is used for Tutor Response and Tester Response"},{"lineNumber":47,"author":{"gitId":"-"},"content":" issueDisputes?: IssueDispute[];"},{"lineNumber":48,"author":{"gitId":"-"},"content":" teamChosenSeverity?: string;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" teamChosenType?: string;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" teamAccepted?: boolean;"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Fields for error messages during parsing of Github\u0027s issue description */"},{"lineNumber":53,"author":{"gitId":"-"},"content":" teamResponseError: boolean;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" testerResponseError: boolean;"},{"lineNumber":55,"author":{"gitId":"-"},"content":" parseError: string;"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Formats the text to create space at the end of the user input to prevent any issues with"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * the markdown interpretation."},{"lineNumber":60,"author":{"gitId":"-"},"content":" *"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Brought over from comment-editor.component.ts"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */"},{"lineNumber":63,"author":{"gitId":"-"},"content":" static formatText(text: string): string {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (text \u003d\u003d\u003d null) {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return null;"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (text \u003d\u003d\u003d undefined) {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return undefined;"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":" const newLinesRegex \u003d /[\\n\\r]/gi;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" const textSplitArray \u003d text.split(newLinesRegex);"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (textSplitArray.filter((split) \u003d\u003e split.trim() !\u003d\u003d \u0027\u0027).length \u003e 0) {"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return `${text}\\n\\n`;"},{"lineNumber":76,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return text;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Processes and cleans a raw issue description obtained from user input."},{"lineNumber":83,"author":{"gitId":"-"},"content":" */"},{"lineNumber":84,"author":{"gitId":"-"},"content":" static updateDescription(description: string): string {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" const defaultString \u003d \u0027No details provided by bug reporter.\u0027;"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Issue.orDefaultString(Issue.formatText(description), defaultString);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Processes and cleans a raw team response obtained from user input."},{"lineNumber":91,"author":{"gitId":"-"},"content":" */"},{"lineNumber":92,"author":{"gitId":"-"},"content":" static updateTeamResponse(teamResponse: string): string {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" const defaultString \u003d \u0027No details provided by team.\u0027;"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return Issue.orDefaultString(Issue.formatText(teamResponse), defaultString);"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Given two strings, returns the first if it is not an empty string or a false value such as null/undefined."},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Returns the second string if the first is an empty string."},{"lineNumber":100,"author":{"gitId":"-"},"content":" */"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private static orDefaultString(stringA: string, def: string): string {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!stringA) {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return def;"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return stringA.length !\u003d\u003d 0 ? stringA : def;"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" protected constructor(githubIssue: GithubIssue) {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /** Basic Fields */"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.globalId \u003d githubIssue.id;"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.id \u003d +githubIssue.number;"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.created_at \u003d moment(githubIssue.created_at).format(\u0027lll\u0027);"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.title \u003d githubIssue.title;"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.hiddenDataInDescription \u003d new HiddenData(githubIssue.body);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.description \u003d Issue.updateDescription(this.hiddenDataInDescription.originalStringWithoutHiddenData);"},{"lineNumber":116,"author":{"gitId":"-"},"content":" this.githubIssue \u003d githubIssue;"},{"lineNumber":117,"author":{"gitId":"-"},"content":""},{"lineNumber":118,"author":{"gitId":"-"},"content":" /** Fields derived from Labels */"},{"lineNumber":119,"author":{"gitId":"-"},"content":" this.severity \u003d githubIssue.findLabel(GithubLabel.LABELS.severity);"},{"lineNumber":120,"author":{"gitId":"-"},"content":" this.type \u003d githubIssue.findLabel(GithubLabel.LABELS.type);"},{"lineNumber":121,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.response \u003d githubIssue.findLabel(GithubLabel.LABELS.response);"},{"lineNumber":122,"author":{"gitId":"-"},"content":" this.duplicated \u003d !!githubIssue.findLabel(GithubLabel.LABELS.duplicated, false);"},{"lineNumber":123,"author":{"gitId":"-"},"content":" this.status \u003d githubIssue.findLabel(GithubLabel.LABELS.status);"},{"lineNumber":124,"author":{"gitId":"-"},"content":" this.pending \u003d githubIssue.findLabel(GithubLabel.LABELS.pending);"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }"},{"lineNumber":126,"author":{"gitId":"-"},"content":""},{"lineNumber":127,"author":{"gitId":"-"},"content":" public static createPhaseBugReportingIssue(githubIssue: GithubIssue): Issue {"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new Issue(githubIssue);"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }"},{"lineNumber":130,"author":{"gitId":"-"},"content":""},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static createPhaseTeamResponseIssue(githubIssue: GithubIssue, teamData: Team): Issue {"},{"lineNumber":132,"author":{"gitId":"-"},"content":" const issue \u003d new Issue(githubIssue);"},{"lineNumber":133,"author":{"gitId":"-"},"content":" const template \u003d new TeamResponseTemplate(githubIssue.comments);"},{"lineNumber":134,"author":{"gitId":"-"},"content":""},{"lineNumber":135,"author":{"gitId":"-"},"content":" issue.githubComments \u003d githubIssue.comments;"},{"lineNumber":136,"author":{"gitId":"-"},"content":" issue.teamAssigned \u003d teamData;"},{"lineNumber":137,"author":{"gitId":"-"},"content":" issue.assignees \u003d githubIssue.assignees.map((assignee) \u003d\u003e assignee.login);"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" issue.teamResponseError \u003d template.parseFailure;"},{"lineNumber":140,"author":{"gitId":"-"},"content":" issue.parseError \u003d template.parseError;"},{"lineNumber":141,"author":{"gitId":"-"},"content":" issue.issueComment \u003d template.comment;"},{"lineNumber":142,"author":{"gitId":"-"},"content":" issue.teamResponse \u003d template.teamResponse;"},{"lineNumber":143,"author":{"gitId":"-"},"content":" issue.duplicateOf \u003d template.duplicateOf;"},{"lineNumber":144,"author":{"gitId":"-"},"content":" issue.duplicated \u003d issue.duplicateOf !\u003d\u003d undefined \u0026\u0026 issue.duplicateOf !\u003d\u003d null;"},{"lineNumber":145,"author":{"gitId":"-"},"content":""},{"lineNumber":146,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }"},{"lineNumber":148,"author":{"gitId":"-"},"content":""},{"lineNumber":149,"author":{"gitId":"-"},"content":" public static createPhaseTesterResponseIssue(githubIssue: GithubIssue): Issue {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" const issue \u003d new Issue(githubIssue);"},{"lineNumber":151,"author":{"gitId":"-"},"content":" const testerResponseTemplate \u003d new TesterResponseTemplate(githubIssue.comments);"},{"lineNumber":152,"author":{"gitId":"-"},"content":" const teamAcceptedTemplate \u003d new TeamAcceptedTemplate(githubIssue.comments);"},{"lineNumber":153,"author":{"gitId":"-"},"content":""},{"lineNumber":154,"author":{"gitId":"-"},"content":" issue.githubComments \u003d githubIssue.comments;"},{"lineNumber":155,"author":{"gitId":"-"},"content":" issue.testerResponseError \u003d testerResponseTemplate.parseFailure \u0026\u0026 teamAcceptedTemplate.parseFailure;"},{"lineNumber":156,"author":{"gitId":"-"},"content":" issue.parseError \u003d testerResponseTemplate.parseError;"},{"lineNumber":157,"author":{"gitId":"-"},"content":" issue.teamAccepted \u003d teamAcceptedTemplate.teamAccepted;"},{"lineNumber":158,"author":{"gitId":"-"},"content":" issue.issueComment \u003d testerResponseTemplate.comment;"},{"lineNumber":159,"author":{"gitId":"-"},"content":" issue.teamResponse \u003d testerResponseTemplate.teamResponse;"},{"lineNumber":160,"author":{"gitId":"-"},"content":" issue.testerResponses \u003d testerResponseTemplate.testerResponses;"},{"lineNumber":161,"author":{"gitId":"-"},"content":" issue.testerDisagree \u003d testerResponseTemplate.testerDisagree;"},{"lineNumber":162,"author":{"gitId":"-"},"content":""},{"lineNumber":163,"author":{"gitId":"-"},"content":" issue.teamChosenSeverity \u003d testerResponseTemplate.teamChosenSeverity || null;"},{"lineNumber":164,"author":{"gitId":"-"},"content":" issue.teamChosenType \u003d testerResponseTemplate.teamChosenType || null;"},{"lineNumber":165,"author":{"gitId":"-"},"content":""},{"lineNumber":166,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }"},{"lineNumber":168,"author":{"gitId":"-"},"content":""},{"lineNumber":169,"author":{"gitId":"-"},"content":" public static createPhaseModerationIssue(githubIssue: GithubIssue, teamData: Team): Issue {"},{"lineNumber":170,"author":{"gitId":"-"},"content":" const issue \u003d new Issue(githubIssue);"},{"lineNumber":171,"author":{"gitId":"-"},"content":" const issueTemplate \u003d new TutorModerationIssueTemplate(githubIssue);"},{"lineNumber":172,"author":{"gitId":"-"},"content":" const todoTemplate \u003d new TutorModerationTodoTemplate(githubIssue.comments);"},{"lineNumber":173,"author":{"gitId":"-"},"content":""},{"lineNumber":174,"author":{"gitId":"-"},"content":" issue.githubComments \u003d githubIssue.comments;"},{"lineNumber":175,"author":{"gitId":"-"},"content":" issue.teamAssigned \u003d teamData;"},{"lineNumber":176,"author":{"gitId":"-"},"content":" issue.description \u003d issueTemplate.description;"},{"lineNumber":177,"author":{"gitId":"-"},"content":" issue.teamResponse \u003d issueTemplate.teamResponse;"},{"lineNumber":178,"author":{"gitId":"-"},"content":" issue.issueDisputes \u003d issueTemplate.disputes;"},{"lineNumber":179,"author":{"gitId":"-"},"content":""},{"lineNumber":180,"author":{"gitId":"-"},"content":" if (todoTemplate.disputesToResolve \u0026\u0026 todoTemplate.comment) {"},{"lineNumber":181,"author":{"gitId":"-"},"content":" issue.issueDisputes \u003d todoTemplate.disputesToResolve.map((dispute, i) \u003d\u003e {"},{"lineNumber":182,"author":{"gitId":"-"},"content":" dispute.description \u003d issueTemplate.disputes[i].description;"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return dispute;"},{"lineNumber":184,"author":{"gitId":"-"},"content":" });"},{"lineNumber":185,"author":{"gitId":"-"},"content":" issue.issueComment \u003d todoTemplate.comment;"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }"},{"lineNumber":189,"author":{"gitId":"-"},"content":""},{"lineNumber":190,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":191,"author":{"gitId":"-"},"content":" * Creates a new copy of an exact same issue."},{"lineNumber":192,"author":{"gitId":"-"},"content":" * This would come useful in the event when you want to update the issue but not the actual"},{"lineNumber":193,"author":{"gitId":"-"},"content":" * state of the application."},{"lineNumber":194,"author":{"gitId":"-"},"content":" */"},{"lineNumber":195,"author":{"gitId":"-"},"content":" clone(phase: Phase): Issue {"},{"lineNumber":196,"author":{"gitId":"-"},"content":" switch (phase) {"},{"lineNumber":197,"author":{"gitId":"-"},"content":" case Phase.phaseBugReporting:"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return Issue.createPhaseBugReportingIssue(this.githubIssue);"},{"lineNumber":199,"author":{"gitId":"-"},"content":" case Phase.phaseTeamResponse:"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return Issue.createPhaseTeamResponseIssue(this.githubIssue, this.teamAssigned);"},{"lineNumber":201,"author":{"gitId":"-"},"content":" case Phase.phaseTesterResponse:"},{"lineNumber":202,"author":{"gitId":"-"},"content":" return Issue.createPhaseTesterResponseIssue(this.githubIssue);"},{"lineNumber":203,"author":{"gitId":"-"},"content":" case Phase.phaseModeration:"},{"lineNumber":204,"author":{"gitId":"-"},"content":" return Issue.createPhaseModerationIssue(this.githubIssue, this.teamAssigned);"},{"lineNumber":205,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":206,"author":{"gitId":"-"},"content":" return Issue.createPhaseBugReportingIssue(this.githubIssue);"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }"},{"lineNumber":209,"author":{"gitId":"-"},"content":""},{"lineNumber":210,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Depending on the phase of the peer testing, each phase will have a response associated to them."},{"lineNumber":212,"author":{"gitId":"-"},"content":" * This function will allow the current instance of issue to retain the state of response of the given `issue`."},{"lineNumber":213,"author":{"gitId":"-"},"content":" *"},{"lineNumber":214,"author":{"gitId":"-"},"content":" * @param phase - The phase in which you want to retain your responses."},{"lineNumber":215,"author":{"gitId":"-"},"content":" * @param issue - The issue which you want your current instance to retain from."},{"lineNumber":216,"author":{"gitId":"-"},"content":" */"},{"lineNumber":217,"author":{"gitId":"-"},"content":" retainResponses(phase: Phase, issue: Issue) {"},{"lineNumber":218,"author":{"gitId":"-"},"content":" this.issueComment \u003d issue.issueComment;"},{"lineNumber":219,"author":{"gitId":"-"},"content":" this.githubComments \u003d issue.githubComments;"},{"lineNumber":220,"author":{"gitId":"-"},"content":" switch (phase) {"},{"lineNumber":221,"author":{"gitId":"-"},"content":" case Phase.phaseBugReporting:"},{"lineNumber":222,"author":{"gitId":"-"},"content":" this.description \u003d issue.description;"},{"lineNumber":223,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":224,"author":{"gitId":"-"},"content":" case Phase.phaseTeamResponse:"},{"lineNumber":225,"author":{"gitId":"-"},"content":" this.teamResponse \u003d issue.teamResponse;"},{"lineNumber":226,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":227,"author":{"gitId":"-"},"content":" case Phase.phaseTesterResponse:"},{"lineNumber":228,"author":{"gitId":"-"},"content":" this.testerResponses \u003d issue.testerResponses;"},{"lineNumber":229,"author":{"gitId":"-"},"content":" this.teamResponse \u003d issue.teamResponse;"},{"lineNumber":230,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":231,"author":{"gitId":"-"},"content":" case Phase.phaseModeration:"},{"lineNumber":232,"author":{"gitId":"-"},"content":" this.issueDisputes \u003d issue.issueDisputes;"},{"lineNumber":233,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":234,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":235,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }"},{"lineNumber":238,"author":{"gitId":"-"},"content":""},{"lineNumber":239,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * Updates the tester\u0027s responses and team response based on the given githubComment."},{"lineNumber":241,"author":{"gitId":"-"},"content":" * @param githubComment - A version of githubComment to update the issue with."},{"lineNumber":242,"author":{"gitId":"-"},"content":" */"},{"lineNumber":243,"author":{"gitId":"-"},"content":" updateTesterResponse(githubComment: GithubComment): void {"},{"lineNumber":244,"author":{"gitId":"-"},"content":" const template \u003d new TesterResponseTemplate([githubComment]);"},{"lineNumber":245,"author":{"gitId":"-"},"content":" this.issueComment \u003d template.comment;"},{"lineNumber":246,"author":{"gitId":"-"},"content":" this.teamResponse \u003d template.teamResponse;"},{"lineNumber":247,"author":{"gitId":"-"},"content":" this.testerResponses \u003d template.testerResponses;"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }"},{"lineNumber":249,"author":{"gitId":"-"},"content":""},{"lineNumber":250,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":251,"author":{"gitId":"-"},"content":" * Updates the tutor\u0027s resolution of the disputes with a new version of githubComment."},{"lineNumber":252,"author":{"gitId":"-"},"content":" * @param githubComment - A version of githubComment to update the dispute with."},{"lineNumber":253,"author":{"gitId":"-"},"content":" */"},{"lineNumber":254,"author":{"gitId":"-"},"content":" updateDispute(githubComment: GithubComment): void {"},{"lineNumber":255,"author":{"gitId":"-"},"content":" const todoTemplate \u003d new TutorModerationTodoTemplate([githubComment]);"},{"lineNumber":256,"author":{"gitId":"-"},"content":" this.issueComment \u003d todoTemplate.comment;"},{"lineNumber":257,"author":{"gitId":"-"},"content":" this.issueDisputes \u003d todoTemplate.disputesToResolve.map((dispute, i) \u003d\u003e {"},{"lineNumber":258,"author":{"gitId":"-"},"content":" dispute.description \u003d this.issueDisputes[i].description;"},{"lineNumber":259,"author":{"gitId":"-"},"content":" return dispute;"},{"lineNumber":260,"author":{"gitId":"-"},"content":" });"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }"},{"lineNumber":262,"author":{"gitId":"-"},"content":""},{"lineNumber":263,"author":{"gitId":"-"},"content":" createGithubIssueDescription(): string {"},{"lineNumber":264,"author":{"gitId":"-"},"content":" return `${this.description}\\n${this.hiddenDataInDescription.toString()}`;"},{"lineNumber":265,"author":{"gitId":"-"},"content":" }"},{"lineNumber":266,"author":{"gitId":"-"},"content":""},{"lineNumber":267,"author":{"gitId":"-"},"content":" // Template url: https://github.com/CATcher-org/templates#dev-response-phase"},{"lineNumber":268,"author":{"gitId":"-"},"content":" createGithubTeamResponse(): string {"},{"lineNumber":269,"author":{"gitId":"-"},"content":" return ("},{"lineNumber":270,"author":{"gitId":"-"},"content":" `# Team\\\u0027s Response\\n${this.teamResponse}\\n` +"},{"lineNumber":271,"author":{"gitId":"-"},"content":" `## Duplicate status (if any):\\n${this.duplicateOf ? `Duplicate of #${this.duplicateOf}` : `--`}`"},{"lineNumber":272,"author":{"gitId":"-"},"content":" );"},{"lineNumber":273,"author":{"gitId":"-"},"content":" }"},{"lineNumber":274,"author":{"gitId":"-"},"content":""},{"lineNumber":275,"author":{"gitId":"-"},"content":" // Template url: https://github.com/CATcher-org/templates#tutor-moderation"},{"lineNumber":276,"author":{"gitId":"-"},"content":" createGithubTutorResponse(): string {"},{"lineNumber":277,"author":{"gitId":"-"},"content":" let tutorResponseString \u003d \u0027# Tutor Moderation\\n\\n\u0027;"},{"lineNumber":278,"author":{"gitId":"-"},"content":" if (this.issueDisputes !\u003d\u003d undefined) {"},{"lineNumber":279,"author":{"gitId":"-"},"content":" for (const issueDispute of this.issueDisputes) {"},{"lineNumber":280,"author":{"gitId":"-"},"content":" tutorResponseString +\u003d issueDispute.toTutorResponseString();"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }"},{"lineNumber":283,"author":{"gitId":"-"},"content":" return tutorResponseString;"},{"lineNumber":284,"author":{"gitId":"-"},"content":" }"},{"lineNumber":285,"author":{"gitId":"-"},"content":""},{"lineNumber":286,"author":{"gitId":"-"},"content":" // Template url: https://github.com/CATcher-org/templates#teams-response-1"},{"lineNumber":287,"author":{"gitId":"-"},"content":" createGithubTesterResponse(): string {"},{"lineNumber":288,"author":{"gitId":"-"},"content":" return ("},{"lineNumber":289,"author":{"gitId":"-"},"content":" `# Team\\\u0027s Response\\n${this.teamResponse}\\n` +"},{"lineNumber":290,"author":{"gitId":"-"},"content":" `# Items for the Tester to Verify\\n${this.getTesterResponsesString(this.testerResponses)}`"},{"lineNumber":291,"author":{"gitId":"-"},"content":" );"},{"lineNumber":292,"author":{"gitId":"-"},"content":" }"},{"lineNumber":293,"author":{"gitId":"-"},"content":""},{"lineNumber":294,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":295,"author":{"gitId":"-"},"content":" * Gets the number of unresolved disputes in an Issue."},{"lineNumber":296,"author":{"gitId":"-"},"content":" */"},{"lineNumber":297,"author":{"gitId":"-"},"content":" numOfUnresolvedDisputes(): number {"},{"lineNumber":298,"author":{"gitId":"-"},"content":" if (!this.issueDisputes) {"},{"lineNumber":299,"author":{"gitId":"-"},"content":" return 0;"},{"lineNumber":300,"author":{"gitId":"-"},"content":" }"},{"lineNumber":301,"author":{"gitId":"-"},"content":""},{"lineNumber":302,"author":{"gitId":"-"},"content":" return this.issueDisputes.reduce((prev, current) \u003d\u003e prev + Number(!current.isDone()), 0);"},{"lineNumber":303,"author":{"gitId":"-"},"content":" }"},{"lineNumber":304,"author":{"gitId":"-"},"content":""},{"lineNumber":305,"author":{"gitId":"-"},"content":" private getTesterResponsesString(testerResponses: TesterResponse[]): string {"},{"lineNumber":306,"author":{"gitId":"-"},"content":" let testerResponsesString \u003d \u0027\u0027;"},{"lineNumber":307,"author":{"gitId":"-"},"content":" for (const testerResponse of testerResponses) {"},{"lineNumber":308,"author":{"gitId":"-"},"content":" testerResponsesString +\u003d testerResponse.toString();"},{"lineNumber":309,"author":{"gitId":"-"},"content":" }"},{"lineNumber":310,"author":{"gitId":"-"},"content":" return testerResponsesString;"},{"lineNumber":311,"author":{"gitId":"-"},"content":" }"},{"lineNumber":312,"author":{"gitId":"-"},"content":"}"},{"lineNumber":313,"author":{"gitId":"-"},"content":""},{"lineNumber":314,"author":{"gitId":"-"},"content":"export interface Issues {"},{"lineNumber":315,"author":{"gitId":"-"},"content":" [id: number]: Issue;"},{"lineNumber":316,"author":{"gitId":"-"},"content":"}"},{"lineNumber":317,"author":{"gitId":"-"},"content":""},{"lineNumber":318,"author":{"gitId":"-"},"content":"export const SEVERITY_ORDER \u003d { \u0027-\u0027: 0, VeryLow: 1, Low: 2, Medium: 3, High: 4 };"},{"lineNumber":319,"author":{"gitId":"-"},"content":""},{"lineNumber":320,"author":{"gitId":"-"},"content":"export const ISSUE_TYPE_ORDER \u003d { \u0027-\u0027: 0, DocumentationBug: 1, FeatureFlaw: 2, FunctionalityBug: 3 };"},{"lineNumber":321,"author":{"gitId":"-"},"content":""},{"lineNumber":322,"author":{"gitId":"-"},"content":"export enum STATUS {"},{"lineNumber":323,"author":{"gitId":"-"},"content":" Incomplete \u003d \u0027Incomplete\u0027,"},{"lineNumber":324,"author":{"gitId":"-"},"content":" Done \u003d \u0027Done\u0027"},{"lineNumber":325,"author":{"gitId":"-"},"content":"}"},{"lineNumber":326,"author":{"gitId":"-"},"content":""},{"lineNumber":327,"author":{"gitId":"-"},"content":"export enum FILTER {"},{"lineNumber":328,"author":{"gitId":"-"},"content":" NoFilter \u003d \u0027NoFilter\u0027,"},{"lineNumber":329,"author":{"gitId":"-"},"content":" NoAccess \u003d \u0027NoAccess\u0027,"},{"lineNumber":330,"author":{"gitId":"-"},"content":" FilterByCreator \u003d \u0027FilterByCreator\u0027,"},{"lineNumber":331,"author":{"gitId":"-"},"content":" FilterByTeam \u003d \u0027FilterByTeam\u0027,"},{"lineNumber":332,"author":{"gitId":"-"},"content":" FilterByTeamAssigned \u003d \u0027FilterByTeamAssigned\u0027"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}"},{"lineNumber":334,"author":{"gitId":"-"},"content":""},{"lineNumber":335,"author":{"gitId":"-"},"content":"export const IssuesFilter \u003d {"},{"lineNumber":336,"author":{"gitId":"-"},"content":" phaseBugReporting: {"},{"lineNumber":337,"author":{"gitId":"-"},"content":" Student: FILTER.FilterByCreator,"},{"lineNumber":338,"author":{"gitId":"-"},"content":" Tutor: FILTER.NoFilter,"},{"lineNumber":339,"author":{"gitId":"-"},"content":" Admin: FILTER.NoFilter"},{"lineNumber":340,"author":{"gitId":"-"},"content":" },"},{"lineNumber":341,"author":{"gitId":"-"},"content":" phaseTeamResponse: {"},{"lineNumber":342,"author":{"gitId":"-"},"content":" Student: FILTER.FilterByTeam,"},{"lineNumber":343,"author":{"gitId":"-"},"content":" Tutor: FILTER.FilterByTeamAssigned,"},{"lineNumber":344,"author":{"gitId":"-"},"content":" Admin: FILTER.NoFilter"},{"lineNumber":345,"author":{"gitId":"-"},"content":" },"},{"lineNumber":346,"author":{"gitId":"-"},"content":" phaseTesterResponse: {"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Student: FILTER.NoFilter,"},{"lineNumber":348,"author":{"gitId":"-"},"content":" Tutor: FILTER.NoAccess,"},{"lineNumber":349,"author":{"gitId":"-"},"content":" Admin: FILTER.NoFilter"},{"lineNumber":350,"author":{"gitId":"-"},"content":" },"},{"lineNumber":351,"author":{"gitId":"-"},"content":" phaseModeration: {"},{"lineNumber":352,"author":{"gitId":"-"},"content":" Student: FILTER.NoAccess,"},{"lineNumber":353,"author":{"gitId":"-"},"content":" Tutor: FILTER.FilterByTeamAssigned,"},{"lineNumber":354,"author":{"gitId":"-"},"content":" Admin: FILTER.NoFilter"},{"lineNumber":355,"author":{"gitId":"-"},"content":" }"},{"lineNumber":356,"author":{"gitId":"-"},"content":"};"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":354}},{"path":"src/app/core/models/templates/section-parsers/issue-dispute-section-parser.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { IssueDispute } from \u0027../../issue-dispute.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"const { coroutine, everyCharUntil, optionalWhitespace, str } \u003d require(\u0027arcsecond\u0027);"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"const SECTION_TITLE_PREFIX \u003d \u0027## :question: \u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"const TEAM_SAYS_HEADER \u003d \u0027### Team says:\u0027;"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"const LINE_SEPARATOR \u003d \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"export const IssueDisputeSectionParser \u003d coroutine(function* () {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" yield str(SECTION_TITLE_PREFIX);"},{"lineNumber":11,"author":{"gitId":"-"},"content":" const title \u003d yield everyCharUntil(str(TEAM_SAYS_HEADER));"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":" const description \u003d yield everyCharUntil(str(LINE_SEPARATOR));"},{"lineNumber":14,"author":{"gitId":"-"},"content":" yield str(LINE_SEPARATOR);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" yield optionalWhitespace;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":" return new IssueDispute(title.trim(), description.trim());"},{"lineNumber":18,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":17}},{"path":"src/app/core/models/templates/section-parsers/moderation-section-parser.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Checkbox } from \u0027../../checkbox.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { IssueDispute } from \u0027../../issue-dispute.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { buildCheckboxParser } from \u0027./common-parsers.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"const { coroutine, everyCharUntil, lookAhead, optionalWhitespace, str, whitespace } \u003d require(\u0027arcsecond\u0027);"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"const SECTION_TITLE_PREFIX \u003d \u0027## :question: \u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"const DONE_CHECKBOX_DESCRIPTION \u003d \u0027Done\u0027;"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"const LINE_SEPARATOR \u003d \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"export const DoneCheckboxParser \u003d buildCheckboxParser(DONE_CHECKBOX_DESCRIPTION);"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"export const ModerationSectionParser \u003d coroutine(function* () {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" yield str(SECTION_TITLE_PREFIX);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" const title \u003d yield everyCharUntil(str(\u0027- [\u0027)); // every char until the done checkbox"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":" const description \u003d yield lookAhead(everyCharUntil(str(LINE_SEPARATOR)));"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" const doneCheckboxValue \u003d yield DoneCheckboxParser;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" yield whitespace;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" const tutorResponse \u003d yield everyCharUntil(str(LINE_SEPARATOR));"},{"lineNumber":22,"author":{"gitId":"-"},"content":" yield str(LINE_SEPARATOR);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" yield optionalWhitespace;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" const dispute \u003d new IssueDispute(title.trim(), description.trim());"},{"lineNumber":26,"author":{"gitId":"-"},"content":" dispute.todo \u003d new Checkbox(DONE_CHECKBOX_DESCRIPTION, doneCheckboxValue);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" dispute.tutorResponse \u003d tutorResponse.trim();"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" return dispute;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":29}},{"path":"src/app/core/models/templates/section-parsers/tester-response-section-parser.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { buildCheckboxParser } from \u0027./common-parsers.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"const {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" between,"},{"lineNumber":5,"author":{"gitId":"-"},"content":" coroutine,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" everyCharUntil,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" letters,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" lookAhead,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" optionalWhitespace,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" pipeParsers,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" possibly,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" str,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" whitespace"},{"lineNumber":14,"author":{"gitId":"-"},"content":"} \u003d require(\u0027arcsecond\u0027);"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"const SECTION_TITLE_PREFIX \u003d \u0027## :question: Issue \u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"const TEAM_CHOSE_PREFIX \u003d \u0027Team chose \u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"const TESTER_CHOSE_PREFIX \u003d \u0027Originally \u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"const DISAGREE_CHECKBOX_DESCRIPTION \u003d \u0027I disagree\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"const DISAGREEMENT_REASON_PREFIX \u003d \u0027**Reason for disagreement:** \u0027;"},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"const LINE_SEPARATOR \u003d \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"const DUPLICATE_STATUS_MESSAGE \u003d"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \"Team chose to mark this issue as a duplicate of another issue (as explained in the _**Team\u0027s response**_ above)\";"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"export const DisagreeCheckboxParser \u003d buildCheckboxParser(DISAGREE_CHECKBOX_DESCRIPTION);"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":"function buildExtractResponseParser(category: string) {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return between(str(\u0027[`\u0027 + category + \u0027.\u0027))(str(\u0027`]\u0027))(letters);"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":"function buildTeamResponseParser(category: string) {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" const extractResponseParser \u003d buildExtractResponseParser(category);"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" return pipeParsers([str(TEAM_CHOSE_PREFIX), extractResponseParser]);"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":"function buildTesterResponseParser(category: string) {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" const extractResponseParser \u003d buildExtractResponseParser(category);"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" return pipeParsers([str(TESTER_CHOSE_PREFIX), extractResponseParser]);"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":"export const DisagreeReasonParser \u003d coroutine(function* () {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" yield str(DISAGREEMENT_REASON_PREFIX);"},{"lineNumber":45,"author":{"gitId":"-"},"content":" const reasonForDisagreement \u003d yield everyCharUntil(str(LINE_SEPARATOR));"},{"lineNumber":46,"author":{"gitId":"-"},"content":" yield str(LINE_SEPARATOR);"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" return reasonForDisagreement.trim();"},{"lineNumber":49,"author":{"gitId":"-"},"content":"});"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":"// Issue duplicate section has a different format than the other three"},{"lineNumber":52,"author":{"gitId":"-"},"content":"const DuplicateSectionParser \u003d coroutine(function* () {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" yield str(\u0027status\u0027);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" yield whitespace;"},{"lineNumber":55,"author":{"gitId":"-"},"content":" yield str(DUPLICATE_STATUS_MESSAGE);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" yield whitespace;"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":" const disagreeCheckboxValue \u003d yield DisagreeCheckboxParser;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" yield whitespace;"},{"lineNumber":60,"author":{"gitId":"-"},"content":" const reasonForDisagreement \u003d yield DisagreeReasonParser;"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" return {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" disagreeCheckboxValue: disagreeCheckboxValue,"},{"lineNumber":64,"author":{"gitId":"-"},"content":" reasonForDisagreement: reasonForDisagreement"},{"lineNumber":65,"author":{"gitId":"-"},"content":" };"},{"lineNumber":66,"author":{"gitId":"-"},"content":"});"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":"export const TesterResponseSectionParser \u003d coroutine(function* () {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // section title"},{"lineNumber":70,"author":{"gitId":"-"},"content":" yield str(SECTION_TITLE_PREFIX);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" const title \u003d yield letters;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" yield whitespace;"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (title \u003d\u003d\u003d \u0027duplicate\u0027) {"},{"lineNumber":75,"author":{"gitId":"-"},"content":" const dupSectionResult \u003d yield DuplicateSectionParser;"},{"lineNumber":76,"author":{"gitId":"-"},"content":" yield optionalWhitespace;"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" return {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" title: title + \u0027 status\u0027,"},{"lineNumber":80,"author":{"gitId":"-"},"content":" description: DUPLICATE_STATUS_MESSAGE,"},{"lineNumber":81,"author":{"gitId":"-"},"content":" teamChose: null,"},{"lineNumber":82,"author":{"gitId":"-"},"content":" testerChose: null,"},{"lineNumber":83,"author":{"gitId":"-"},"content":" disagreeCheckboxValue: dupSectionResult.disagreeCheckboxValue,"},{"lineNumber":84,"author":{"gitId":"-"},"content":" reasonForDisagreement: dupSectionResult.reasonForDisagreement"},{"lineNumber":85,"author":{"gitId":"-"},"content":" };"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":""},{"lineNumber":88,"author":{"gitId":"-"},"content":" const description \u003d yield lookAhead(everyCharUntil(DisagreeCheckboxParser));"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" // team and tester response"},{"lineNumber":91,"author":{"gitId":"-"},"content":" const teamResponseParser \u003d buildTeamResponseParser(title);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" const testerResponseParser \u003d buildTesterResponseParser(title);"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":" const teamChose \u003d yield teamResponseParser;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" yield whitespace;"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // response section does not have tester response"},{"lineNumber":97,"author":{"gitId":"-"},"content":" const testerChose \u003d yield possibly(testerResponseParser);"},{"lineNumber":98,"author":{"gitId":"-"},"content":" yield optionalWhitespace;"},{"lineNumber":99,"author":{"gitId":"-"},"content":""},{"lineNumber":100,"author":{"gitId":"-"},"content":" const disagreeCheckboxValue \u003d yield DisagreeCheckboxParser;"},{"lineNumber":101,"author":{"gitId":"-"},"content":" yield whitespace;"},{"lineNumber":102,"author":{"gitId":"-"},"content":" const reasonForDisagreement \u003d yield DisagreeReasonParser;"},{"lineNumber":103,"author":{"gitId":"-"},"content":" yield optionalWhitespace;"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" return {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" title: title,"},{"lineNumber":107,"author":{"gitId":"-"},"content":" description: description.trim(),"},{"lineNumber":108,"author":{"gitId":"-"},"content":" teamChose: teamChose,"},{"lineNumber":109,"author":{"gitId":"-"},"content":" testerChose: testerChose,"},{"lineNumber":110,"author":{"gitId":"-"},"content":" disagreeCheckboxValue: disagreeCheckboxValue,"},{"lineNumber":111,"author":{"gitId":"-"},"content":" reasonForDisagreement: reasonForDisagreement"},{"lineNumber":112,"author":{"gitId":"-"},"content":" };"},{"lineNumber":113,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":112}},{"path":"src/app/core/models/tester-response.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Checkbox } from \u0027./checkbox.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"export class TesterResponse {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" readonly TITLE_PREFIX \u003d \u0027## :question: \u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":" readonly DISAGREEMENT_PREFIX \u003d \u0027**Reason for disagreement:** \u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":" readonly INITIAL_RESPONSE \u003d \u0027[replace this with your explanation]\u0027;"},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":" readonly LINE_BREAK \u003d \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":" title: string; // e.g Issue Severity"},{"lineNumber":9,"author":{"gitId":"-"},"content":" description: string; // e.g Team chose `Low`. Originally `High`."},{"lineNumber":10,"author":{"gitId":"-"},"content":" disagreeCheckbox: Checkbox; // e.g - [x] I disagree"},{"lineNumber":11,"author":{"gitId":"-"},"content":" reasonForDisagreement: string;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":" constructor(title: string, description: string, checkboxDescription: string, isChecked: boolean, reasonForDiagreement: string) {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" this.title \u003d title;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" this.description \u003d description;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.disagreeCheckbox \u003d new Checkbox(checkboxDescription, isChecked);"},{"lineNumber":17,"author":{"gitId":"-"},"content":" this.reasonForDisagreement \u003d reasonForDiagreement;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" toString(): string {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" let toString \u003d \u0027\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" toString +\u003d this.TITLE_PREFIX + this.title + \u0027\\n\\n\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" toString +\u003d this.description + \u0027\\n\\n\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" toString +\u003d this.disagreeCheckbox.toString() + \u0027\\n\\n\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" toString +\u003d this.DISAGREEMENT_PREFIX + this.reasonForDisagreement + \u0027\\n\\n\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" toString +\u003d this.LINE_BREAK;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return toString;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" isDisagree(): boolean {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return this.disagreeCheckbox.isChecked;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" compareTo(anotherResponse: TesterResponse): number {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (this.isDisagree() \u003d\u003d\u003d anotherResponse.isDisagree()) {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return this.reasonForDisagreement.localeCompare(anotherResponse.reasonForDisagreement);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return this.isDisagree() ? 1 : -1;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" getTitleInMarkDown(): string {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return `## ${this.title}`;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" getDisagreementWithoutDefaultResponse(): string {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return this.reasonForDisagreement.replace(this.INITIAL_RESPONSE, \u0027 \u0027);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" setDisagree(isDisagree: boolean) {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.disagreeCheckbox.setChecked(isDisagree);"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" setReasonForDisagreement(reason: string) {"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.reasonForDisagreement \u003d reason;"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"-":55,"cheehongw":1}},{"path":"src/app/core/models/undoredo.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"export class UndoRedo\u003cT\u003e {"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" historyArray: Array\u003cT\u003e;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" currIndex: number;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" firstEntryIndex: number;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" lastEntryIndex: number;"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" isSaved: boolean; // to keep track if the latest change have been saved"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" intervalTime: number;"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" timeout: NodeJS.Timeout;"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" saveRunning: boolean;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" getState: () \u003d\u003e T;"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" constructor(capacity: number, getState: () \u003d\u003e T, intervalTime: number \u003d 0) {"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" this.historyArray \u003d new Array\u003cT\u003e(capacity);"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" this.firstEntryIndex \u003d 0;"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" this.lastEntryIndex \u003d -1;"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":" this.currIndex \u003d -1;"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" this.getState \u003d getState;"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" this.isSaved \u003d false;"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" this.saveRunning \u003d false;"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" this.intervalTime \u003d intervalTime;"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" * Function to be called right before a change is made / stores the latest last state"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" * preferably to be called with \"beforeinput\" event"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param entry optional entry to insert"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" updateBeforeChange(entry?: T): void {"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.currIndex \u003d\u003d\u003d -1) {"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" return this.addEntry(entry ?? this.getState(), false);"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" this.createDelayedSave();"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" * Creates a timed delay to add entries to history."},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" * Enables a more natural feel when performing high frequency saving."},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" * Also prevents history from being rapidly filled up"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" * Note:"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" * If interval time is set to 0, this method should not be called"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" * within (input) events. Use addEntry(T) instead."},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" createDelayedSave(): void {"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.saveRunning) {"},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" return;"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":" this.isSaved \u003d false;"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" this.saveRunning \u003d true;"},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":" // if interval time is 0 -\u003e add entry will be called with false as parameter"},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":" this.timeout \u003d setTimeout(() \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" this.addEntry(this.getState(), !!this.intervalTime);"},{"lineNumber":52,"author":{"gitId":"Eclipse-Dominator"},"content":" }, this.intervalTime);"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":54,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":56,"author":{"gitId":"Eclipse-Dominator"},"content":" * Manually inserts changes"},{"lineNumber":57,"author":{"gitId":"Eclipse-Dominator"},"content":" * Should not be called manually in a context of text editors"},{"lineNumber":58,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param entry entry to insert"},{"lineNumber":59,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param isLatest guarentees that the changes are the latest"},{"lineNumber":60,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":61,"author":{"gitId":"Eclipse-Dominator"},"content":" addEntry(entry: T, isLatest: boolean \u003d true): void {"},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":" this.isSaved \u003d isLatest;"},{"lineNumber":63,"author":{"gitId":"Eclipse-Dominator"},"content":" const newIndex \u003d this.incrementIndex(this.currIndex);"},{"lineNumber":64,"author":{"gitId":"Eclipse-Dominator"},"content":" if (newIndex \u003d\u003d\u003d this.firstEntryIndex \u0026\u0026 this.currIndex !\u003d\u003d -1) {"},{"lineNumber":65,"author":{"gitId":"Eclipse-Dominator"},"content":" // in case history is already full."},{"lineNumber":66,"author":{"gitId":"Eclipse-Dominator"},"content":" this.firstEntryIndex \u003d this.incrementIndex(this.firstEntryIndex);"},{"lineNumber":67,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":68,"author":{"gitId":"Eclipse-Dominator"},"content":" this.lastEntryIndex \u003d newIndex; // resets future history"},{"lineNumber":69,"author":{"gitId":"Eclipse-Dominator"},"content":" this.currIndex \u003d newIndex;"},{"lineNumber":70,"author":{"gitId":"Eclipse-Dominator"},"content":" this.historyArray[this.currIndex] \u003d entry;"},{"lineNumber":71,"author":{"gitId":"Eclipse-Dominator"},"content":" this.saveRunning \u003d false;"},{"lineNumber":72,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":73,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":74,"author":{"gitId":"Eclipse-Dominator"},"content":" incrementIndex(i: number): number {"},{"lineNumber":75,"author":{"gitId":"Eclipse-Dominator"},"content":" return (i + 1) % this.historyArray.length;"},{"lineNumber":76,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":77,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":78,"author":{"gitId":"Eclipse-Dominator"},"content":" decrementIndex(i: number): number {"},{"lineNumber":79,"author":{"gitId":"Eclipse-Dominator"},"content":" return (i - 1 + this.historyArray.length) % this.historyArray.length;"},{"lineNumber":80,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":81,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":82,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":83,"author":{"gitId":"Eclipse-Dominator"},"content":" * ignore timeout and forcefuly save the current state"},{"lineNumber":84,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param entry optional parameter for element to be saved"},{"lineNumber":85,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param check dont save if there are no new data"},{"lineNumber":86,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param isLatest is the current state after the save step the latest"},{"lineNumber":87,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":88,"author":{"gitId":"Eclipse-Dominator"},"content":" forceSave(entry?: T, check: boolean \u003d false, isLatest: boolean \u003d true): void {"},{"lineNumber":89,"author":{"gitId":"Eclipse-Dominator"},"content":" // if the there are unsaved changes, saves it"},{"lineNumber":90,"author":{"gitId":"Eclipse-Dominator"},"content":" clearTimeout(this.timeout);"},{"lineNumber":91,"author":{"gitId":"Eclipse-Dominator"},"content":" if (!check || !this.isSaved) {"},{"lineNumber":92,"author":{"gitId":"Eclipse-Dominator"},"content":" this.addEntry(entry ?? this.getState(), isLatest);"},{"lineNumber":93,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":94,"author":{"gitId":"Eclipse-Dominator"},"content":" this.isSaved \u003d isLatest;"},{"lineNumber":95,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":96,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":97,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":98,"author":{"gitId":"Eclipse-Dominator"},"content":" * Stores the before and after state after running the function"},{"lineNumber":99,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param check dont do initial save if there are no new data"},{"lineNumber":100,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":101,"author":{"gitId":"Eclipse-Dominator"},"content":" wrapSave(func: Function, check: boolean \u003d true) {"},{"lineNumber":102,"author":{"gitId":"Eclipse-Dominator"},"content":" clearTimeout(this.timeout);"},{"lineNumber":103,"author":{"gitId":"Eclipse-Dominator"},"content":" if (!check || !this.isSaved) {"},{"lineNumber":104,"author":{"gitId":"Eclipse-Dominator"},"content":" this.addEntry(this.getState(), false);"},{"lineNumber":105,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":106,"author":{"gitId":"Eclipse-Dominator"},"content":" func();"},{"lineNumber":107,"author":{"gitId":"Eclipse-Dominator"},"content":" this.addEntry(this.getState(), true);"},{"lineNumber":108,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":109,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":110,"author":{"gitId":"Eclipse-Dominator"},"content":" undo(): T | null {"},{"lineNumber":111,"author":{"gitId":"Eclipse-Dominator"},"content":" this.forceSave(undefined, true);"},{"lineNumber":112,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.currIndex \u003d\u003d\u003d this.firstEntryIndex || this.currIndex \u003d\u003d\u003d -1) {"},{"lineNumber":113,"author":{"gitId":"Eclipse-Dominator"},"content":" // if there are no more history to unwind"},{"lineNumber":114,"author":{"gitId":"Eclipse-Dominator"},"content":" return null;"},{"lineNumber":115,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":116,"author":{"gitId":"Eclipse-Dominator"},"content":" this.currIndex \u003d this.decrementIndex(this.currIndex);"},{"lineNumber":117,"author":{"gitId":"Eclipse-Dominator"},"content":" return this.historyArray[this.currIndex];"},{"lineNumber":118,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":119,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":120,"author":{"gitId":"Eclipse-Dominator"},"content":" redo(): T | null {"},{"lineNumber":121,"author":{"gitId":"Eclipse-Dominator"},"content":" this.forceSave(undefined, true);"},{"lineNumber":122,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.currIndex \u003d\u003d\u003d this.lastEntryIndex) {"},{"lineNumber":123,"author":{"gitId":"Eclipse-Dominator"},"content":" // if current state is already at the latest iteration"},{"lineNumber":124,"author":{"gitId":"Eclipse-Dominator"},"content":" return null;"},{"lineNumber":125,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":126,"author":{"gitId":"Eclipse-Dominator"},"content":" this.currIndex \u003d this.incrementIndex(this.currIndex);"},{"lineNumber":127,"author":{"gitId":"Eclipse-Dominator"},"content":" return this.historyArray[this.currIndex];"},{"lineNumber":128,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":129,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":129}},{"path":"src/app/core/services/auth.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgZone } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Title } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { BehaviorSubject } from \u0027rxjs\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { generateSessionId } from \u0027../../shared/lib/session\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { uuid } from \u0027../../shared/lib/uuid\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { DataService } from \u0027./data.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027./githubevent.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027./issue.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027./phase.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./user.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"export enum AuthState {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u0027NotAuthenticated\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u0027AwaitingAuthentication\u0027,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u0027ConfirmOAuthUser\u0027,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u0027Authenticated\u0027"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":25,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":26,"author":{"gitId":"-"},"content":"})"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Responsible for initiating the authentication process and querying or"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * updating the application state with regards to authentication."},{"lineNumber":31,"author":{"gitId":"-"},"content":" */"},{"lineNumber":32,"author":{"gitId":"-"},"content":"export class AuthService {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" authStateSource \u003d new BehaviorSubject(AuthState.NotAuthenticated);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" currentAuthState \u003d this.authStateSource.asObservable();"},{"lineNumber":35,"author":{"gitId":"-"},"content":" accessToken \u003d new BehaviorSubject(undefined);"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private state: string;"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" ENABLE_POPUP_MESSAGE \u003d \u0027Please enable pop-ups in your browser\u0027;"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":41,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private ngZone: NgZone,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private dataService: DataService,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private titleService: Title,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private logger: LoggingService"},{"lineNumber":51,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Will store the OAuth token."},{"lineNumber":55,"author":{"gitId":"-"},"content":" */"},{"lineNumber":56,"author":{"gitId":"-"},"content":" storeOAuthAccessToken(token: string) {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.githubService.storeOAuthAccessToken(token);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.accessToken.next(token);"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" reset(): void {"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(\u0027AuthService: Clearing access token and setting AuthState to NotAuthenticated.\u0027);"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.accessToken.next(undefined);"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e this.router.navigate([\u0027\u0027]));"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" logOut(): void {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.githubService.reset();"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.userService.reset();"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.issueService.reset(true);"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.phaseService.reset();"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.dataService.reset();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.githubEventService.reset();"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.logger.reset();"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.setLandingPageTitle();"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.issueService.setIssueTeamFilter(\u0027All Teams\u0027);"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.reset();"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" setTitleWithPhaseDetail(): void {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" const appSetting \u003d require(\u0027../../../../package.json\u0027);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" const title \u003d `${appSetting.name} ${appSetting.version} - ${this.phaseService.getPhaseDetail()}`;"},{"lineNumber":84,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`AuthService: Setting Title as ${title}`);"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.titleService.setTitle(title);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":""},{"lineNumber":88,"author":{"gitId":"-"},"content":" setLandingPageTitle(): void {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" const appSetting \u003d require(\u0027../../../../package.json\u0027);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" const title \u003d `${appSetting.name} ${appSetting.version}`;"},{"lineNumber":91,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`AuthService: Setting LandingPageTitle as ${title}`);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.titleService.setTitle(title);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" isAuthenticated(): boolean {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return this.authStateSource.getValue() \u003d\u003d\u003d AuthState.Authenticated;"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" changeAuthState(newAuthState: AuthState) {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (newAuthState \u003d\u003d\u003d AuthState.Authenticated) {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" const sessionId \u003d generateSessionId();"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.issueService.setSessionId(sessionId);"},{"lineNumber":103,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`AuthService: Successfully authenticated with session: ${sessionId}`);"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.authStateSource.next(newAuthState);"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Generates and assigns an unguessable random \u0027state\u0027 string to pass to Github for protection against cross-site request forgery attacks"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */"},{"lineNumber":111,"author":{"gitId":"-"},"content":" generateStateString() {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.state \u003d uuid();"},{"lineNumber":113,"author":{"gitId":"-"},"content":" sessionStorage.setItem(\u0027state\u0027, this.state);"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }"},{"lineNumber":115,"author":{"gitId":"-"},"content":""},{"lineNumber":116,"author":{"gitId":"-"},"content":" isReturnedStateSame(returnedState: string): boolean {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" const state \u003d sessionStorage.getItem(\u0027state\u0027);"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return returnedState \u003d\u003d\u003d state;"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Will start the Github OAuth web flow process."},{"lineNumber":123,"author":{"gitId":"-"},"content":" */"},{"lineNumber":124,"author":{"gitId":"-"},"content":" startOAuthProcess() {"},{"lineNumber":125,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(\u0027AuthService: Starting authentication\u0027);"},{"lineNumber":126,"author":{"gitId":"-"},"content":" const githubRepoPermission \u003d this.phaseService.githubRepoPermissionLevel();"},{"lineNumber":127,"author":{"gitId":"-"},"content":" this.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":128,"author":{"gitId":"-"},"content":""},{"lineNumber":129,"author":{"gitId":"-"},"content":" this.generateStateString();"},{"lineNumber":130,"author":{"gitId":"-"},"content":" this.redirectToOAuthPage("},{"lineNumber":131,"author":{"gitId":"-"},"content":" encodeURI("},{"lineNumber":132,"author":{"gitId":"-"},"content":" `${AppConfig.githubUrl}/login/oauth/authorize?client_id\u003d${AppConfig.clientId}\u0026scope\u003d${githubRepoPermission},read:user\u0026state\u003d${this.state}`"},{"lineNumber":133,"author":{"gitId":"-"},"content":" )"},{"lineNumber":134,"author":{"gitId":"-"},"content":" );"},{"lineNumber":135,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(\u0027AuthService: Redirecting for Github authentication\u0027);"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }"},{"lineNumber":137,"author":{"gitId":"-"},"content":""},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Will redirect to GitHub OAuth page"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private redirectToOAuthPage(url: string): void {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (url \u003d\u003d null) {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }"},{"lineNumber":145,"author":{"gitId":"-"},"content":" window.location.href \u003d url;"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":6,"-":141}},{"path":"src/app/core/services/dialog.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { FormGroup } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { LabelDefinitionPopupComponent } from \u0027../../shared/label-definition-popup/label-definition-popup.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { UserConfirmationComponent } from \u0027../guards/user-confirmation/user-confirmation.component\u0027;"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Issue } from \u0027../models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":9,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":10,"author":{"gitId":"-"},"content":"})"},{"lineNumber":11,"author":{"gitId":"-"},"content":"export class DialogService {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" constructor(private dialog: MatDialog) {}"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":" openUserConfirmationModal(messages: string[], yesButtonMessage: string, noButtonMessage: string) {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" return this.dialog.open(UserConfirmationComponent, {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" data: {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" messages: messages,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" yesMessage: yesButtonMessage,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" noMessage: noButtonMessage"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }"},{"lineNumber":21,"author":{"gitId":"-"},"content":" });"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" openLabelDefinitionDialog(labelName: String, labelDefinition: String) {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return this.dialog.open(LabelDefinitionPopupComponent, {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" data: {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" header: labelName,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" body: labelDefinition"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }"},{"lineNumber":30,"author":{"gitId":"-"},"content":" });"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" checkIfFieldIsModified(form: FormGroup, initialField: string, formField: string, issue: Issue) {"},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const issueTitleInitialValue \u003d issue[initialField] || \u0027\u0027;"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const isModified \u003d form.get(formField).value !\u003d\u003d issueTitleInitialValue;"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return isModified;"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":39,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" performActionIfModified(isModified: boolean, actionIfModified: () \u003d\u003e void, actionIfNotModified: () \u003d\u003e void) {"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (isModified) {"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // if the field has been edited, request user to confirm the cancellation"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" actionIfModified();"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" } else {"},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // if no changes have been made, simply cancel edit mode without getting confirmation"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" actionIfNotModified();"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":18,"-":30}},{"path":"src/app/core/services/error-handling.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpErrorResponse } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ErrorHandler, Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatSnackBar } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { RequestError } from \u0027@octokit/request-error\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { FormErrorComponent } from \u0027../../shared/error-toasters/form-error/form-error.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GeneralMessageErrorComponent } from \u0027../../shared/error-toasters/general-message-error/general-message-error.component\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"export const ERRORCODE_NOT_FOUND \u003d 404;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"const FILTERABLE \u003d [\u0027node_modules\u0027];"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":14,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":15,"author":{"gitId":"-"},"content":"})"},{"lineNumber":16,"author":{"gitId":"-"},"content":"export class ErrorHandlingService implements ErrorHandler {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" constructor(private snackBar: MatSnackBar, private logger: LoggingService) {}"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" handleError(error: HttpErrorResponse | Error | RequestError, actionCallback?: () \u003d\u003e void) {"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.error(\u0027ErrorHandlingService: \u0027 + error);"},{"lineNumber":21,"author":{"gitId":"-"},"content":" if (error instanceof Error) {"},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.debug(\u0027ErrorHandlingService: \u0027 + this.cleanStack(error.stack));"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }"},{"lineNumber":24,"author":{"gitId":"-"},"content":" if (error instanceof HttpErrorResponse) {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.handleHttpError(error, actionCallback);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" } else if (error.constructor.name \u003d\u003d\u003d \u0027RequestError\u0027) {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.handleHttpError(error as RequestError, actionCallback);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" } else if (typeof error \u003d\u003d\u003d \u0027string\u0027) {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.handleGeneralError(error);"},{"lineNumber":30,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.handleGeneralError(error.message || JSON.stringify(error));"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" private cleanStack(stacktrace: string): string {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return stacktrace"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .split(\u0027\\n\u0027)"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .filter((line) \u003d\u003e !FILTERABLE.some((word) \u003d\u003e line.includes(word))) // exclude lines that contain words in FILTERABLE"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .join(\u0027\\n\u0027);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Ref: https://docs.github.com/en/rest/overview/resources-in-the-rest-api#client-errors"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private handleHttpError(error: HttpErrorResponse | RequestError, actionCallback?: () \u003d\u003e void): void {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // Angular treats 304 Not Modified as an error, we will ignore it."},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (error.status \u003d\u003d\u003d 304) {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!navigator.onLine) {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.handleGeneralError(\u0027No Internet Connection\u0027);"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" switch (error.status) {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" case 500: // Internal Server Error."},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(GeneralMessageErrorComponent, { data: error });"},{"lineNumber":57,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":58,"author":{"gitId":"-"},"content":" case 422: // Form errors"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(FormErrorComponent, { data: error });"},{"lineNumber":60,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case 400: // Bad request"},{"lineNumber":62,"author":{"gitId":"-"},"content":" case 401: // Unauthorized"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case 404: // Not found"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(GeneralMessageErrorComponent, { data: error });"},{"lineNumber":65,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":66,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(GeneralMessageErrorComponent, { data: error });"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":" private handleGeneralError(error: string): void {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(GeneralMessageErrorComponent, { data: { message: error } });"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" clearError() {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.snackBar.dismiss();"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":77}},{"path":"src/app/core/services/factories/factory.github.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Apollo } from \u0027apollo-angular\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../../environments/environment\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../error-handling.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../github.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../logging.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { MockGithubService } from \u0027../mocks/mock.github.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"export function GithubServiceFactory(handling: ErrorHandlingService, apollo: Apollo, logger: LoggingService) {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" if (AppConfig.test) {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" return new MockGithubService();"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }"},{"lineNumber":12,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return new GithubService(handling, apollo, logger);"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":11}},{"path":"src/app/core/services/factories/factory.issue.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../../environments/environment\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { DataService } from \u0027../data.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../github.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../issue.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../logging.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { MockIssueService } from \u0027../mocks/mock.issue.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../phase.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../user.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"export function IssueServiceFactory("},{"lineNumber":11,"author":{"gitId":"-"},"content":" githubService: GithubService,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" userService: UserService,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" phaseService: PhaseService,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" dataService: DataService,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" logger: LoggingService"},{"lineNumber":16,"author":{"gitId":"-"},"content":") {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" if (AppConfig.test) {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new MockIssueService(githubService, phaseService, dataService);"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return new IssueService(githubService, userService, phaseService, dataService, logger);"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":20}},{"path":"src/app/core/services/github.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpErrorResponse } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Apollo, QueryRef } from \u0027apollo-angular\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { ApolloQueryResult } from \u0027apollo-client\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { DocumentNode } from \u0027graphql\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { forkJoin, from, Observable, of, throwError } from \u0027rxjs\u0027;"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { catchError, filter, map, mergeMap, throwIfEmpty } from \u0027rxjs/operators\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" FetchIssue,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" FetchIssueQuery,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" FetchIssues,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" FetchIssuesByTeam,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" FetchIssuesByTeamQuery,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" FetchIssuesQuery,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" FetchLabels,"},{"lineNumber":16,"author":{"gitId":"-"},"content":" FetchLabelsQuery"},{"lineNumber":17,"author":{"gitId":"-"},"content":"} from \u0027../../../../graphql/graphql-types\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import { getNumberOfPages } from \u0027../../shared/lib/github-paginator-parser\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027../models/comment.model\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../models/github-user.model\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import { IssueLastModifiedManagerModel } from \u0027../models/github/cache-manager/issue-last-modified-manager.model\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import { IssuesCacheManager } from \u0027../models/github/cache-manager/issues-cache-manager.model\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import { GithubComment } from \u0027../models/github/github-comment.model\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import { GithubGraphqlIssue } from \u0027../models/github/github-graphql.issue\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import RestGithubIssueFilter from \u0027../models/github/github-issue-filter.model\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027../models/github/github-issue.model\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../models/github/github-label.model\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import { GithubResponse } from \u0027../models/github/github-response.model\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import { GithubRelease } from \u0027../models/github/github.release\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import { SessionData } from \u0027../models/session.model\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import { ERRORCODE_NOT_FOUND, ErrorHandlingService } from \u0027./error-handling.service\u0027;"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"const { Octokit } \u003d require(\u0027@octokit/rest\u0027);"},{"lineNumber":36,"author":{"gitId":"-"},"content":"const CATCHER_ORG \u003d \u0027CATcher-org\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":"const CATCHER_REPO \u003d \u0027CATcher\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":"const UNABLE_TO_OPEN_IN_BROWSER \u003d \u0027Unable to open this issue in Browser\u0027;"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":"let ORG_NAME \u003d \u0027\u0027;"},{"lineNumber":41,"author":{"gitId":"-"},"content":"let MOD_ORG \u003d \u0027\u0027;"},{"lineNumber":42,"author":{"gitId":"-"},"content":"let REPO \u003d \u0027\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":"let DATA_REPO \u003d \u0027\u0027;"},{"lineNumber":44,"author":{"gitId":"-"},"content":"const MAX_ITEMS_PER_PAGE \u003d 100;"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":"let octokit \u003d new Octokit();"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":49,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":50,"author":{"gitId":"-"},"content":"})"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Responsible for communicating with GitHub to create, update, read and delete"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * features related to Github using GitHub API Requests."},{"lineNumber":55,"author":{"gitId":"-"},"content":" * For example, issues, issue labels and repositories."},{"lineNumber":56,"author":{"gitId":"-"},"content":" */"},{"lineNumber":57,"author":{"gitId":"-"},"content":"export class GithubService {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private static readonly IF_NONE_MATCH_EMPTY \u003d { \u0027If-None-Match\u0027: \u0027\u0027 };"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" private issuesCacheManager \u003d new IssuesCacheManager();"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private issuesLastModifiedManager \u003d new IssueLastModifiedManagerModel();"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private issueQueryRefs \u003d new Map\u003cNumber, QueryRef\u003cFetchIssueQuery\u003e\u003e();"},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor(private errorHandlingService: ErrorHandlingService, private apollo: Apollo, private logger: LoggingService) {}"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" storeOAuthAccessToken(accessToken: string) {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" octokit \u003d new Octokit({"},{"lineNumber":68,"author":{"gitId":"-"},"content":" auth() {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return `Token ${accessToken}`;"},{"lineNumber":70,"author":{"gitId":"-"},"content":" },"},{"lineNumber":71,"author":{"gitId":"-"},"content":" log: {"},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" debug: (message, ...otherInfo) \u003d\u003e this.logger.debug(\u0027GithubService: \u0027 + message, ...otherInfo),"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Do not log info for HTTP response 304 due to repeated polling"},{"lineNumber":74,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" info: (message, ...otherInfo) \u003d\u003e"},{"lineNumber":75,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" /304 in \\d+ms$/.test(message) ? undefined : this.logger.info(\u0027GithubService: \u0027 + message, ...otherInfo),"},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" warn: (message, ...otherInfo) \u003d\u003e this.logger.warn(\u0027GithubService: \u0027 + message, ...otherInfo),"},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" error: (message, ...otherInfo) \u003d\u003e this.logger.error(\u0027GithubService: \u0027 + message, ...otherInfo)"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }"},{"lineNumber":79,"author":{"gitId":"-"},"content":" });"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":" storeOrganizationDetails(orgName: string, dataRepo: string) {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" MOD_ORG \u003d orgName;"},{"lineNumber":84,"author":{"gitId":"-"},"content":" DATA_REPO \u003d dataRepo;"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" storePhaseDetails(phaseRepoOwner: string, repoName: string) {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" REPO \u003d repoName;"},{"lineNumber":89,"author":{"gitId":"-"},"content":" ORG_NAME \u003d phaseRepoOwner;"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Fetches an array of filtered GitHubIssues using GraphQL query for a given team."},{"lineNumber":94,"author":{"gitId":"-"},"content":" *"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @param tutorial - The tutorial that the team belongs to."},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @param team - The team\u0027s designated name."},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @param issuesFilter - The issue filter."},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @returns An observable array of filtered GithubIssues"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */"},{"lineNumber":100,"author":{"gitId":"-"},"content":" fetchIssuesGraphqlByTeam(tutorial: string, team: string, issuesFilter: RestGithubIssueFilter): Observable\u003cArray\u003cGithubIssue\u003e\u003e {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" const graphqlFilter \u003d issuesFilter.convertToGraphqlFilter();"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this.toFetchIssues(issuesFilter).pipe("},{"lineNumber":103,"author":{"gitId":"-"},"content":" filter((toFetch) \u003d\u003e toFetch),"},{"lineNumber":104,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap(() \u003d\u003e {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return this.fetchGraphqlList\u003cFetchIssuesByTeamQuery, GithubGraphqlIssue\u003e("},{"lineNumber":106,"author":{"gitId":"-"},"content":" FetchIssuesByTeam,"},{"lineNumber":107,"author":{"gitId":"-"},"content":" {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":109,"author":{"gitId":"-"},"content":" name: REPO,"},{"lineNumber":110,"author":{"gitId":"-"},"content":" filter: {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ...graphqlFilter,"},{"lineNumber":112,"author":{"gitId":"-"},"content":" labels: [...(graphqlFilter.labels ? graphqlFilter.labels : []), team]"},{"lineNumber":113,"author":{"gitId":"-"},"content":" },"},{"lineNumber":114,"author":{"gitId":"-"},"content":" tutorial"},{"lineNumber":115,"author":{"gitId":"-"},"content":" },"},{"lineNumber":116,"author":{"gitId":"-"},"content":" (result) \u003d\u003e result.data.repository.label.issues.edges,"},{"lineNumber":117,"author":{"gitId":"-"},"content":" GithubGraphqlIssue"},{"lineNumber":118,"author":{"gitId":"-"},"content":" );"},{"lineNumber":119,"author":{"gitId":"-"},"content":" })"},{"lineNumber":120,"author":{"gitId":"-"},"content":" );"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }"},{"lineNumber":122,"author":{"gitId":"-"},"content":""},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Fetches an array of filtered GitHubIssues using GraphQL query."},{"lineNumber":125,"author":{"gitId":"-"},"content":" * @param issuesFilter - The issue filter."},{"lineNumber":126,"author":{"gitId":"-"},"content":" * @returns An observable array of filtered GithubIssues"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */"},{"lineNumber":128,"author":{"gitId":"-"},"content":" fetchIssuesGraphql(issuesFilter: RestGithubIssueFilter): Observable\u003cArray\u003cGithubIssue\u003e\u003e {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" const graphqlFilter \u003d issuesFilter.convertToGraphqlFilter();"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return this.toFetchIssues(issuesFilter).pipe("},{"lineNumber":131,"author":{"gitId":"-"},"content":" filter((toFetch) \u003d\u003e toFetch),"},{"lineNumber":132,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap(() \u003d\u003e {"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return this.fetchGraphqlList\u003cFetchIssuesQuery, GithubGraphqlIssue\u003e("},{"lineNumber":134,"author":{"gitId":"-"},"content":" FetchIssues,"},{"lineNumber":135,"author":{"gitId":"-"},"content":" { owner: ORG_NAME, name: REPO, filter: graphqlFilter },"},{"lineNumber":136,"author":{"gitId":"-"},"content":" (result) \u003d\u003e result.data.repository.issues.edges,"},{"lineNumber":137,"author":{"gitId":"-"},"content":" GithubGraphqlIssue"},{"lineNumber":138,"author":{"gitId":"-"},"content":" );"},{"lineNumber":139,"author":{"gitId":"-"},"content":" })"},{"lineNumber":140,"author":{"gitId":"-"},"content":" );"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }"},{"lineNumber":142,"author":{"gitId":"-"},"content":""},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Checks if there are pages of filtered issues that are not cached in the cache model,"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * and updates the model to cache these new pages."},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param filter - The issue filter."},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @returns Observable\u003cboolean\u003e that returns true if there are pages that do not exist in the cache model."},{"lineNumber":148,"author":{"gitId":"-"},"content":" */"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private toFetchIssues(filter: RestGithubIssueFilter): Observable\u003cboolean\u003e {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" let responseInFirstPage: GithubResponse\u003cGithubIssue[]\u003e;"},{"lineNumber":151,"author":{"gitId":"-"},"content":" return this.getIssuesAPICall(filter, 1).pipe("},{"lineNumber":152,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue[]\u003e) \u003d\u003e {"},{"lineNumber":153,"author":{"gitId":"-"},"content":" responseInFirstPage \u003d response;"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return getNumberOfPages(response);"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":156,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((numOfPages: number) \u003d\u003e {"},{"lineNumber":157,"author":{"gitId":"-"},"content":" const apiCalls: Observable\u003cGithubResponse\u003cGithubIssue[]\u003e\u003e[] \u003d [];"},{"lineNumber":158,"author":{"gitId":"-"},"content":" for (let i \u003d 2; i \u003c\u003d numOfPages; i++) {"},{"lineNumber":159,"author":{"gitId":"-"},"content":" apiCalls.push(this.getIssuesAPICall(filter, i));"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return apiCalls.length \u003d\u003d\u003d 0 ? of([]) : forkJoin(apiCalls);"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":163,"author":{"gitId":"-"},"content":" map((resultArray: GithubResponse\u003cGithubIssue[]\u003e[]) \u003d\u003e {"},{"lineNumber":164,"author":{"gitId":"-"},"content":" const responses \u003d [responseInFirstPage, ...resultArray];"},{"lineNumber":165,"author":{"gitId":"-"},"content":" const isCached \u003d responses.reduce((result, response) \u003d\u003e {"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return result \u0026\u0026 response.isCached;"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }, true);"},{"lineNumber":168,"author":{"gitId":"-"},"content":" responses.forEach((resp, index) \u003d\u003e this.issuesCacheManager.set(index + 1, resp));"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return !isCached;"},{"lineNumber":170,"author":{"gitId":"-"},"content":" })"},{"lineNumber":171,"author":{"gitId":"-"},"content":" );"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }"},{"lineNumber":173,"author":{"gitId":"-"},"content":""},{"lineNumber":174,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * Checks if the specified repository exists."},{"lineNumber":176,"author":{"gitId":"-"},"content":" * @param owner - Owner of Specified Repository."},{"lineNumber":177,"author":{"gitId":"-"},"content":" * @param repo - Name of Repository."},{"lineNumber":178,"author":{"gitId":"-"},"content":" */"},{"lineNumber":179,"author":{"gitId":"-"},"content":" isRepositoryPresent(owner: string, repo: string): Observable\u003cboolean\u003e {"},{"lineNumber":180,"author":{"gitId":"-"},"content":" return from(octokit.repos.get({ owner: owner, repo: repo, headers: GithubService.IF_NONE_MATCH_EMPTY })).pipe("},{"lineNumber":181,"author":{"gitId":"-"},"content":" map((rawData: { status: number }) \u003d\u003e {"},{"lineNumber":182,"author":{"gitId":"-"},"content":" return rawData.status !\u003d\u003d ERRORCODE_NOT_FOUND;"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":184,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return of(false);"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":187,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch repo data.\u0027))"},{"lineNumber":188,"author":{"gitId":"-"},"content":" );"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }"},{"lineNumber":190,"author":{"gitId":"-"},"content":""},{"lineNumber":191,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":192,"author":{"gitId":"-"},"content":" * Creates a repository in for the authenticated user location."},{"lineNumber":193,"author":{"gitId":"-"},"content":" * @param name - Name of Repo to create."},{"lineNumber":194,"author":{"gitId":"-"},"content":" * @return Observable\u003cboolean\u003e - That returns true if the repository has been successfully"},{"lineNumber":195,"author":{"gitId":"-"},"content":" * created."},{"lineNumber":196,"author":{"gitId":"-"},"content":" */"},{"lineNumber":197,"author":{"gitId":"-"},"content":" createRepository(name: string): void {"},{"lineNumber":198,"author":{"gitId":"-"},"content":" octokit.repos.createForAuthenticatedUser({ name: name });"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }"},{"lineNumber":200,"author":{"gitId":"-"},"content":""},{"lineNumber":201,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * Fetches information about an issue using GraphQL."},{"lineNumber":203,"author":{"gitId":"-"},"content":" *"},{"lineNumber":204,"author":{"gitId":"-"},"content":" * If the issue is not modified, return a `304 - Not Modified` response."},{"lineNumber":205,"author":{"gitId":"-"},"content":" *"},{"lineNumber":206,"author":{"gitId":"-"},"content":" * @param id - The issue id."},{"lineNumber":207,"author":{"gitId":"-"},"content":" * @returns Observable\u003cGithubGraphqlIssue\u003e that represents the response object."},{"lineNumber":208,"author":{"gitId":"-"},"content":" */"},{"lineNumber":209,"author":{"gitId":"-"},"content":" fetchIssueGraphql(id: number): Observable\u003cGithubGraphqlIssue\u003e {"},{"lineNumber":210,"author":{"gitId":"-"},"content":" if (this.issueQueryRefs.get(id) \u003d\u003d\u003d undefined) {"},{"lineNumber":211,"author":{"gitId":"-"},"content":" const newQueryRef \u003d this.apollo.watchQuery\u003cFetchIssueQuery\u003e({"},{"lineNumber":212,"author":{"gitId":"-"},"content":" query: FetchIssue,"},{"lineNumber":213,"author":{"gitId":"-"},"content":" variables: {"},{"lineNumber":214,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":215,"author":{"gitId":"-"},"content":" name: REPO,"},{"lineNumber":216,"author":{"gitId":"-"},"content":" issueId: id"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }"},{"lineNumber":218,"author":{"gitId":"-"},"content":" });"},{"lineNumber":219,"author":{"gitId":"-"},"content":" this.issueQueryRefs.set(id, newQueryRef);"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }"},{"lineNumber":221,"author":{"gitId":"-"},"content":""},{"lineNumber":222,"author":{"gitId":"-"},"content":" const queryRef \u003d this.issueQueryRefs.get(id);"},{"lineNumber":223,"author":{"gitId":"-"},"content":" return this.toFetchIssue(id).pipe("},{"lineNumber":224,"author":{"gitId":"-"},"content":" filter((toFetch) \u003d\u003e toFetch),"},{"lineNumber":225,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap(() \u003d\u003e from(queryRef.refetch())),"},{"lineNumber":226,"author":{"gitId":"-"},"content":" map((value: ApolloQueryResult\u003cFetchIssueQuery\u003e) \u003d\u003e {"},{"lineNumber":227,"author":{"gitId":"-"},"content":" return new GithubGraphqlIssue(value.data.repository.issue);"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":229,"author":{"gitId":"-"},"content":" throwIfEmpty(() \u003d\u003e new HttpErrorResponse({ status: 304 }))"},{"lineNumber":230,"author":{"gitId":"-"},"content":" );"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }"},{"lineNumber":232,"author":{"gitId":"-"},"content":""},{"lineNumber":233,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Checks if the issue has been modified since the last query, and"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * updates the model to reflect the last modified time."},{"lineNumber":236,"author":{"gitId":"-"},"content":" *"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * @param id - The issue id."},{"lineNumber":238,"author":{"gitId":"-"},"content":" * @returns Observable\u003cboolean\u003e that returns true if the issue has been modified."},{"lineNumber":239,"author":{"gitId":"-"},"content":" */"},{"lineNumber":240,"author":{"gitId":"-"},"content":" toFetchIssue(id: number): Observable\u003cboolean\u003e {"},{"lineNumber":241,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":242,"author":{"gitId":"-"},"content":" octokit.issues.get({"},{"lineNumber":243,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":244,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":245,"author":{"gitId":"-"},"content":" issue_number: id,"},{"lineNumber":246,"author":{"gitId":"-"},"content":" headers: { \u0027If-Modified-Since\u0027: this.issuesLastModifiedManager.get(id) }"},{"lineNumber":247,"author":{"gitId":"-"},"content":" })"},{"lineNumber":248,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":249,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":250,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.set(id, response.headers[\u0027last-modified\u0027]);"},{"lineNumber":251,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":253,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch issue.\u0027))"},{"lineNumber":254,"author":{"gitId":"-"},"content":" );"},{"lineNumber":255,"author":{"gitId":"-"},"content":" }"},{"lineNumber":256,"author":{"gitId":"-"},"content":""},{"lineNumber":257,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":258,"author":{"gitId":"-"},"content":" * Fetches all labels in the current repository."},{"lineNumber":259,"author":{"gitId":"-"},"content":" */"},{"lineNumber":260,"author":{"gitId":"-"},"content":" fetchAllLabels(): Observable\u003cArray\u003cGithubLabel\u003e\u003e {"},{"lineNumber":261,"author":{"gitId":"-"},"content":" const githubLabels \u003d this.fetchGraphqlList\u003cFetchLabelsQuery, GithubLabel\u003e("},{"lineNumber":262,"author":{"gitId":"-"},"content":" FetchLabels,"},{"lineNumber":263,"author":{"gitId":"-"},"content":" { owner: ORG_NAME, name: REPO },"},{"lineNumber":264,"author":{"gitId":"-"},"content":" (result) \u003d\u003e result.data.repository.labels.edges,"},{"lineNumber":265,"author":{"gitId":"-"},"content":" GithubLabel"},{"lineNumber":266,"author":{"gitId":"-"},"content":" );"},{"lineNumber":267,"author":{"gitId":"-"},"content":""},{"lineNumber":268,"author":{"gitId":"-"},"content":" return githubLabels.pipe(catchError((err) \u003d\u003e throwError(\u0027Failed to fetch labels.\u0027)));"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }"},{"lineNumber":270,"author":{"gitId":"-"},"content":""},{"lineNumber":271,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":272,"author":{"gitId":"-"},"content":" * Creates a label in the current repository."},{"lineNumber":273,"author":{"gitId":"-"},"content":" * @param formattedLabelName - name of new label."},{"lineNumber":274,"author":{"gitId":"-"},"content":" * @param labelColor - colour of new label."},{"lineNumber":275,"author":{"gitId":"-"},"content":" */"},{"lineNumber":276,"author":{"gitId":"-"},"content":" createLabel(formattedLabelName: string, labelColor: string): void {"},{"lineNumber":277,"author":{"gitId":"-"},"content":" octokit.issues.createLabel({ owner: ORG_NAME, repo: REPO, name: formattedLabelName, color: labelColor });"},{"lineNumber":278,"author":{"gitId":"-"},"content":" }"},{"lineNumber":279,"author":{"gitId":"-"},"content":""},{"lineNumber":280,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":281,"author":{"gitId":"-"},"content":" * Updates a label\u0027s information in the current repository."},{"lineNumber":282,"author":{"gitId":"-"},"content":" * @param labelName - name of existing label"},{"lineNumber":283,"author":{"gitId":"-"},"content":" * @param labelColor - new color to be assigned to existing label."},{"lineNumber":284,"author":{"gitId":"-"},"content":" */"},{"lineNumber":285,"author":{"gitId":"-"},"content":" updateLabel(labelName: string, labelColor: string): void {"},{"lineNumber":286,"author":{"gitId":"-"},"content":" octokit.issues.updateLabel({ owner: ORG_NAME, repo: REPO, name: labelName, current_name: labelName, color: labelColor });"},{"lineNumber":287,"author":{"gitId":"-"},"content":" }"},{"lineNumber":288,"author":{"gitId":"-"},"content":""},{"lineNumber":289,"author":{"gitId":"-"},"content":" closeIssue(id: number): Observable\u003cGithubIssue\u003e {"},{"lineNumber":290,"author":{"gitId":"-"},"content":" return from(octokit.issues.update({ owner: ORG_NAME, repo: REPO, issue_number: id, state: \u0027closed\u0027 })).pipe("},{"lineNumber":291,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":292,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.set(id, response.headers[\u0027last-modified\u0027]);"},{"lineNumber":293,"author":{"gitId":"-"},"content":" return new GithubIssue(response.data);"},{"lineNumber":294,"author":{"gitId":"-"},"content":" })"},{"lineNumber":295,"author":{"gitId":"-"},"content":" );"},{"lineNumber":296,"author":{"gitId":"-"},"content":" }"},{"lineNumber":297,"author":{"gitId":"-"},"content":""},{"lineNumber":298,"author":{"gitId":"-"},"content":" reopenIssue(id: number): Observable\u003cGithubIssue\u003e {"},{"lineNumber":299,"author":{"gitId":"-"},"content":" return from(octokit.issues.update({ owner: ORG_NAME, repo: REPO, issue_number: id, state: \u0027open\u0027 })).pipe("},{"lineNumber":300,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":301,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.set(id, response.headers[\u0027last-modified\u0027]);"},{"lineNumber":302,"author":{"gitId":"-"},"content":" return new GithubIssue(response.data);"},{"lineNumber":303,"author":{"gitId":"-"},"content":" })"},{"lineNumber":304,"author":{"gitId":"-"},"content":" );"},{"lineNumber":305,"author":{"gitId":"-"},"content":" }"},{"lineNumber":306,"author":{"gitId":"-"},"content":""},{"lineNumber":307,"author":{"gitId":"-"},"content":" createIssue(title: string, description: string, labels: string[]): Observable\u003cGithubIssue\u003e {"},{"lineNumber":308,"author":{"gitId":"-"},"content":" return from(octokit.issues.create({ owner: ORG_NAME, repo: REPO, title: title, body: description, labels: labels })).pipe("},{"lineNumber":309,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":310,"author":{"gitId":"-"},"content":" return new GithubIssue(response.data);"},{"lineNumber":311,"author":{"gitId":"-"},"content":" })"},{"lineNumber":312,"author":{"gitId":"-"},"content":" );"},{"lineNumber":313,"author":{"gitId":"-"},"content":" }"},{"lineNumber":314,"author":{"gitId":"-"},"content":""},{"lineNumber":315,"author":{"gitId":"-"},"content":" createIssueComment(issueId: number, description: string): Observable\u003cGithubComment\u003e {"},{"lineNumber":316,"author":{"gitId":"-"},"content":" return from(octokit.issues.createComment({ owner: ORG_NAME, repo: REPO, issue_number: issueId, body: description })).pipe("},{"lineNumber":317,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubComment\u003e) \u003d\u003e {"},{"lineNumber":318,"author":{"gitId":"-"},"content":" return response.data;"},{"lineNumber":319,"author":{"gitId":"-"},"content":" })"},{"lineNumber":320,"author":{"gitId":"-"},"content":" );"},{"lineNumber":321,"author":{"gitId":"-"},"content":" }"},{"lineNumber":322,"author":{"gitId":"-"},"content":""},{"lineNumber":323,"author":{"gitId":"-"},"content":" updateIssue(id: number, title: string, description: string, labels: string[], assignees?: string[]): Observable\u003cGithubIssue\u003e {"},{"lineNumber":324,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":325,"author":{"gitId":"-"},"content":" octokit.issues.update({"},{"lineNumber":326,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":327,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":328,"author":{"gitId":"-"},"content":" issue_number: id,"},{"lineNumber":329,"author":{"gitId":"-"},"content":" title: title,"},{"lineNumber":330,"author":{"gitId":"-"},"content":" body: description,"},{"lineNumber":331,"author":{"gitId":"-"},"content":" labels: labels,"},{"lineNumber":332,"author":{"gitId":"-"},"content":" assignees: assignees"},{"lineNumber":333,"author":{"gitId":"-"},"content":" })"},{"lineNumber":334,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":335,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":336,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.set(id, response.headers[\u0027last-modified\u0027]);"},{"lineNumber":337,"author":{"gitId":"-"},"content":" return new GithubIssue(response.data);"},{"lineNumber":338,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":339,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":340,"author":{"gitId":"-"},"content":" return throwError(err);"},{"lineNumber":341,"author":{"gitId":"-"},"content":" })"},{"lineNumber":342,"author":{"gitId":"-"},"content":" );"},{"lineNumber":343,"author":{"gitId":"-"},"content":" }"},{"lineNumber":344,"author":{"gitId":"-"},"content":""},{"lineNumber":345,"author":{"gitId":"-"},"content":" updateIssueComment(issueComment: IssueComment): Observable\u003cGithubComment\u003e {"},{"lineNumber":346,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":347,"author":{"gitId":"-"},"content":" octokit.issues.updateComment({ owner: ORG_NAME, repo: REPO, comment_id: issueComment.id, body: issueComment.description })"},{"lineNumber":348,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":349,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubComment\u003e) \u003d\u003e {"},{"lineNumber":350,"author":{"gitId":"-"},"content":" return response.data;"},{"lineNumber":351,"author":{"gitId":"-"},"content":" })"},{"lineNumber":352,"author":{"gitId":"-"},"content":" );"},{"lineNumber":353,"author":{"gitId":"-"},"content":" }"},{"lineNumber":354,"author":{"gitId":"-"},"content":""},{"lineNumber":355,"author":{"gitId":"-"},"content":" uploadFile(filename: string, base64String: string): Observable\u003cany\u003e {"},{"lineNumber":356,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":357,"author":{"gitId":"-"},"content":" octokit.repos.createOrUpdateFile({"},{"lineNumber":358,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":359,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":360,"author":{"gitId":"-"},"content":" path: `files/${filename}`,"},{"lineNumber":361,"author":{"gitId":"-"},"content":" message: \u0027upload file\u0027,"},{"lineNumber":362,"author":{"gitId":"-"},"content":" content: base64String"},{"lineNumber":363,"author":{"gitId":"-"},"content":" })"},{"lineNumber":364,"author":{"gitId":"-"},"content":" );"},{"lineNumber":365,"author":{"gitId":"-"},"content":" }"},{"lineNumber":366,"author":{"gitId":"-"},"content":""},{"lineNumber":367,"author":{"gitId":"-"},"content":" fetchEventsForRepo(): Observable\u003cany[]\u003e {"},{"lineNumber":368,"author":{"gitId":"-"},"content":" return from(octokit.issues.listEventsForRepo({ owner: ORG_NAME, repo: REPO, headers: GithubService.IF_NONE_MATCH_EMPTY })).pipe("},{"lineNumber":369,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":370,"author":{"gitId":"-"},"content":" return response[\u0027data\u0027];"},{"lineNumber":371,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":372,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch events for repo.\u0027))"},{"lineNumber":373,"author":{"gitId":"-"},"content":" );"},{"lineNumber":374,"author":{"gitId":"-"},"content":" }"},{"lineNumber":375,"author":{"gitId":"-"},"content":""},{"lineNumber":376,"author":{"gitId":"-"},"content":" fetchDataFile(): Observable\u003c{}\u003e {"},{"lineNumber":377,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":378,"author":{"gitId":"-"},"content":" octokit.repos.getContents({ owner: MOD_ORG, repo: DATA_REPO, path: \u0027data.csv\u0027, headers: GithubService.IF_NONE_MATCH_EMPTY })"},{"lineNumber":379,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":380,"author":{"gitId":"-"},"content":" map((rawData) \u003d\u003e {"},{"lineNumber":381,"author":{"gitId":"-"},"content":" return { data: atob(rawData[\u0027data\u0027][\u0027content\u0027]) };"},{"lineNumber":382,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":383,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch data file.\u0027))"},{"lineNumber":384,"author":{"gitId":"-"},"content":" );"},{"lineNumber":385,"author":{"gitId":"-"},"content":" }"},{"lineNumber":386,"author":{"gitId":"-"},"content":""},{"lineNumber":387,"author":{"gitId":"-"},"content":" fetchLatestRelease(): Observable\u003cGithubRelease\u003e {"},{"lineNumber":388,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":389,"author":{"gitId":"-"},"content":" octokit.repos.getLatestRelease({ owner: CATCHER_ORG, repo: CATCHER_REPO, headers: GithubService.IF_NONE_MATCH_EMPTY })"},{"lineNumber":390,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":391,"author":{"gitId":"-"},"content":" map((res) \u003d\u003e res[\u0027data\u0027]),"},{"lineNumber":392,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch latest release.\u0027))"},{"lineNumber":393,"author":{"gitId":"-"},"content":" );"},{"lineNumber":394,"author":{"gitId":"-"},"content":" }"},{"lineNumber":395,"author":{"gitId":"-"},"content":""},{"lineNumber":396,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":397,"author":{"gitId":"-"},"content":" * Fetches the data file that is regulates session information."},{"lineNumber":398,"author":{"gitId":"-"},"content":" * @return Observable\u003cSessionData\u003e representing session information."},{"lineNumber":399,"author":{"gitId":"-"},"content":" */"},{"lineNumber":400,"author":{"gitId":"-"},"content":" fetchSettingsFile(): Observable\u003cSessionData\u003e {"},{"lineNumber":401,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":402,"author":{"gitId":"-"},"content":" octokit.repos.getContents({ owner: MOD_ORG, repo: DATA_REPO, path: \u0027settings.json\u0027, headers: GithubService.IF_NONE_MATCH_EMPTY })"},{"lineNumber":403,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":404,"author":{"gitId":"-"},"content":" map((rawData) \u003d\u003e JSON.parse(atob(rawData[\u0027data\u0027][\u0027content\u0027]))),"},{"lineNumber":405,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch settings file.\u0027))"},{"lineNumber":406,"author":{"gitId":"-"},"content":" );"},{"lineNumber":407,"author":{"gitId":"-"},"content":" }"},{"lineNumber":408,"author":{"gitId":"-"},"content":""},{"lineNumber":409,"author":{"gitId":"-"},"content":" fetchAuthenticatedUser(): Observable\u003cGithubUser\u003e {"},{"lineNumber":410,"author":{"gitId":"-"},"content":" return from(octokit.users.getAuthenticated()).pipe("},{"lineNumber":411,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":412,"author":{"gitId":"-"},"content":" return response[\u0027data\u0027];"},{"lineNumber":413,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":414,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch authenticated user.\u0027))"},{"lineNumber":415,"author":{"gitId":"-"},"content":" );"},{"lineNumber":416,"author":{"gitId":"-"},"content":" }"},{"lineNumber":417,"author":{"gitId":"-"},"content":""},{"lineNumber":418,"author":{"gitId":"-"},"content":" getRepoURL(): string {"},{"lineNumber":419,"author":{"gitId":"-"},"content":" return ORG_NAME.concat(\u0027/\u0027).concat(REPO);"},{"lineNumber":420,"author":{"gitId":"-"},"content":" }"},{"lineNumber":421,"author":{"gitId":"-"},"content":""},{"lineNumber":422,"author":{"gitId":"-"},"content":" viewIssueInBrowser(id: number, event: Event) {"},{"lineNumber":423,"author":{"gitId":"-"},"content":" if (id) {"},{"lineNumber":424,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.open(\u0027https://github.com/\u0027.concat(this.getRepoURL()).concat(\u0027/issues/\u0027).concat(String(id)));"},{"lineNumber":425,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":426,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(new Error(UNABLE_TO_OPEN_IN_BROWSER));"},{"lineNumber":427,"author":{"gitId":"-"},"content":" }"},{"lineNumber":428,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":429,"author":{"gitId":"-"},"content":" }"},{"lineNumber":430,"author":{"gitId":"-"},"content":""},{"lineNumber":431,"author":{"gitId":"-"},"content":" reset(): void {"},{"lineNumber":432,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`GithubService: Resetting issues cache`);"},{"lineNumber":433,"author":{"gitId":"-"},"content":" this.issuesCacheManager.clear();"},{"lineNumber":434,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.clear();"},{"lineNumber":435,"author":{"gitId":"-"},"content":" this.issueQueryRefs.clear();"},{"lineNumber":436,"author":{"gitId":"-"},"content":" }"},{"lineNumber":437,"author":{"gitId":"-"},"content":""},{"lineNumber":438,"author":{"gitId":"-"},"content":" getProfilesData(): Promise\u003cResponse\u003e {"},{"lineNumber":439,"author":{"gitId":"-"},"content":" return fetch(AppConfig.clientDataUrl);"},{"lineNumber":440,"author":{"gitId":"-"},"content":" }"},{"lineNumber":441,"author":{"gitId":"-"},"content":""},{"lineNumber":442,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":443,"author":{"gitId":"-"},"content":" * Performs an API call to fetch a page of filtered issues with a given pageNumber."},{"lineNumber":444,"author":{"gitId":"-"},"content":" *"},{"lineNumber":445,"author":{"gitId":"-"},"content":" * The request is sent with the ETag of the latest cached HTTP response."},{"lineNumber":446,"author":{"gitId":"-"},"content":" * If page requested has the same ETag, or the request results in an error,"},{"lineNumber":447,"author":{"gitId":"-"},"content":" * then the cached page is returned instead."},{"lineNumber":448,"author":{"gitId":"-"},"content":" *"},{"lineNumber":449,"author":{"gitId":"-"},"content":" * @param filter - The issue filter"},{"lineNumber":450,"author":{"gitId":"-"},"content":" * @param pageNumber - The page to be fetched"},{"lineNumber":451,"author":{"gitId":"-"},"content":" * @returns An observable representing the response containing a single page of filtered issues"},{"lineNumber":452,"author":{"gitId":"-"},"content":" */"},{"lineNumber":453,"author":{"gitId":"-"},"content":" private getIssuesAPICall(filter: RestGithubIssueFilter, pageNumber: number): Observable\u003cGithubResponse\u003cGithubIssue[]\u003e\u003e {"},{"lineNumber":454,"author":{"gitId":"-"},"content":" const apiCall: Promise\u003cGithubResponse\u003cGithubIssue[]\u003e\u003e \u003d octokit.issues.listForRepo({"},{"lineNumber":455,"author":{"gitId":"-"},"content":" ...filter,"},{"lineNumber":456,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":457,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":458,"author":{"gitId":"-"},"content":" sort: \u0027created\u0027,"},{"lineNumber":459,"author":{"gitId":"-"},"content":" direction: \u0027desc\u0027,"},{"lineNumber":460,"author":{"gitId":"-"},"content":" per_page: MAX_ITEMS_PER_PAGE,"},{"lineNumber":461,"author":{"gitId":"-"},"content":" page: pageNumber,"},{"lineNumber":462,"author":{"gitId":"-"},"content":" headers: { \u0027If-None-Match\u0027: this.issuesCacheManager.getEtagFor(pageNumber) }"},{"lineNumber":463,"author":{"gitId":"-"},"content":" });"},{"lineNumber":464,"author":{"gitId":"-"},"content":" const apiCall$ \u003d from(apiCall);"},{"lineNumber":465,"author":{"gitId":"-"},"content":" return apiCall$.pipe("},{"lineNumber":466,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":467,"author":{"gitId":"-"},"content":" return of(this.issuesCacheManager.get(pageNumber));"},{"lineNumber":468,"author":{"gitId":"-"},"content":" })"},{"lineNumber":469,"author":{"gitId":"-"},"content":" );"},{"lineNumber":470,"author":{"gitId":"-"},"content":" }"},{"lineNumber":471,"author":{"gitId":"-"},"content":""},{"lineNumber":472,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":473,"author":{"gitId":"-"},"content":" * Fetches a list of items using a GraphQL query that queries for paginated data."},{"lineNumber":474,"author":{"gitId":"-"},"content":" *"},{"lineNumber":475,"author":{"gitId":"-"},"content":" * @param query - The GraphQL query that queries for paginated data."},{"lineNumber":476,"author":{"gitId":"-"},"content":" * @param variables - Additional variables for the GraphQL query."},{"lineNumber":477,"author":{"gitId":"-"},"content":" * @callback pluckEdges A function that returns a list of edges in a ApolloQueryResult."},{"lineNumber":478,"author":{"gitId":"-"},"content":" * @callback Model Constructor for the item model."},{"lineNumber":479,"author":{"gitId":"-"},"content":" * @returns A list of items from the query."},{"lineNumber":480,"author":{"gitId":"-"},"content":" */"},{"lineNumber":481,"author":{"gitId":"-"},"content":" private fetchGraphqlList\u003cT, M\u003e("},{"lineNumber":482,"author":{"gitId":"-"},"content":" query: DocumentNode,"},{"lineNumber":483,"author":{"gitId":"-"},"content":" variables: {},"},{"lineNumber":484,"author":{"gitId":"-"},"content":" pluckEdges: (results: ApolloQueryResult\u003cT\u003e) \u003d\u003e Array\u003cany\u003e,"},{"lineNumber":485,"author":{"gitId":"-"},"content":" Model: new (data) \u003d\u003e M"},{"lineNumber":486,"author":{"gitId":"-"},"content":" ): Observable\u003cArray\u003cM\u003e\u003e {"},{"lineNumber":487,"author":{"gitId":"-"},"content":" return from(this.withPagination\u003cT\u003e(pluckEdges)(query, variables)).pipe("},{"lineNumber":488,"author":{"gitId":"-"},"content":" map((results: Array\u003cApolloQueryResult\u003cT\u003e\u003e) \u003d\u003e {"},{"lineNumber":489,"author":{"gitId":"-"},"content":" const issues \u003d results.reduce((accumulated, current) \u003d\u003e accumulated.concat(pluckEdges(current)), []);"},{"lineNumber":490,"author":{"gitId":"-"},"content":" return issues.map((issue) \u003d\u003e new Model(issue.node));"},{"lineNumber":491,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":492,"author":{"gitId":"-"},"content":" throwIfEmpty(() \u003d\u003e {"},{"lineNumber":493,"author":{"gitId":"-"},"content":" return new HttpErrorResponse({ status: 304 });"},{"lineNumber":494,"author":{"gitId":"-"},"content":" })"},{"lineNumber":495,"author":{"gitId":"-"},"content":" );"},{"lineNumber":496,"author":{"gitId":"-"},"content":" }"},{"lineNumber":497,"author":{"gitId":"-"},"content":""},{"lineNumber":498,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":499,"author":{"gitId":"-"},"content":" * Returns an async function that will accept a GraphQL query that requests for paginated items."},{"lineNumber":500,"author":{"gitId":"-"},"content":" * Said function will recursively query for all subsequent pages until a page that has less than 100 items is found,"},{"lineNumber":501,"author":{"gitId":"-"},"content":" * then return all queried pages in an array."},{"lineNumber":502,"author":{"gitId":"-"},"content":" *"},{"lineNumber":503,"author":{"gitId":"-"},"content":" * @callback pluckEdges - A function that returns a list of edges in a ApolloQueryResult."},{"lineNumber":504,"author":{"gitId":"-"},"content":" * @returns an async function that accepts a GraphQL query for paginated data and any additional variables to that query"},{"lineNumber":505,"author":{"gitId":"-"},"content":" */"},{"lineNumber":506,"author":{"gitId":"-"},"content":" private withPagination\u003cT\u003e(pluckEdges: (results: ApolloQueryResult\u003cT\u003e) \u003d\u003e Array\u003cany\u003e) {"},{"lineNumber":507,"author":{"gitId":"-"},"content":" return async (query: DocumentNode, variables: { [key: string]: any } \u003d {}): Promise\u003cArray\u003cApolloQueryResult\u003cT\u003e\u003e\u003e \u003d\u003e {"},{"lineNumber":508,"author":{"gitId":"-"},"content":" const cursor \u003d variables.cursor || null;"},{"lineNumber":509,"author":{"gitId":"-"},"content":" const graphqlQuery \u003d this.apollo.watchQuery\u003cT\u003e({ query, variables: { ...variables, cursor } });"},{"lineNumber":510,"author":{"gitId":"-"},"content":" return graphqlQuery.refetch().then(async (results: ApolloQueryResult\u003cT\u003e) \u003d\u003e {"},{"lineNumber":511,"author":{"gitId":"-"},"content":" const intermediate \u003d Array.isArray(results) ? results : [results];"},{"lineNumber":512,"author":{"gitId":"-"},"content":" const edges \u003d pluckEdges(results);"},{"lineNumber":513,"author":{"gitId":"-"},"content":" const nextCursor \u003d edges.length \u003d\u003d\u003d 0 ? null : edges[edges.length - 1].cursor;"},{"lineNumber":514,"author":{"gitId":"-"},"content":""},{"lineNumber":515,"author":{"gitId":"-"},"content":" if (edges.length \u003c MAX_ITEMS_PER_PAGE || !nextCursor) {"},{"lineNumber":516,"author":{"gitId":"-"},"content":" return intermediate;"},{"lineNumber":517,"author":{"gitId":"-"},"content":" }"},{"lineNumber":518,"author":{"gitId":"-"},"content":" const nextResults \u003d await this.withPagination\u003cT\u003e(pluckEdges)(query, {"},{"lineNumber":519,"author":{"gitId":"-"},"content":" ...variables,"},{"lineNumber":520,"author":{"gitId":"-"},"content":" cursor: nextCursor"},{"lineNumber":521,"author":{"gitId":"-"},"content":" });"},{"lineNumber":522,"author":{"gitId":"-"},"content":" return intermediate.concat(nextResults);"},{"lineNumber":523,"author":{"gitId":"-"},"content":" });"},{"lineNumber":524,"author":{"gitId":"-"},"content":" };"},{"lineNumber":525,"author":{"gitId":"-"},"content":" }"},{"lineNumber":526,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":13,"-":513}},{"path":"src/app/core/services/githubevent.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Observable, of } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027./issue.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":8,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":9,"author":{"gitId":"-"},"content":"})"},{"lineNumber":10,"author":{"gitId":"-"},"content":"export class GithubEventService {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" private lastModified: string; // The timestamp when the title or label of an issue is changed"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private lastModifiedComment: string; // The timestamp when the comment of an issue is changed"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService, private issueService: IssueService) {}"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Calls the Github service api to return the latest github event (e.g renaming an issue\u0027s title)"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * of current repository and store the timestamps of the event in this service"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */"},{"lineNumber":20,"author":{"gitId":"-"},"content":" setLatestChangeEvent(): Observable\u003cany\u003e {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return this.githubService.fetchEventsForRepo().pipe("},{"lineNumber":22,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (response.length \u003d\u003d\u003d 0) {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return response;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.setLastModifiedTime(response[0][\u0027created_at\u0027]);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.setLastModifiedCommentTime(response[0][\u0027issue\u0027][\u0027updated_at\u0027]);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return response;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" })"},{"lineNumber":30,"author":{"gitId":"-"},"content":" );"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns the result whether the latest github event (e.g renaming an issue\u0027s title)"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * of current repository has been retrieved or not."},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @returns true if the issues were fetched from GitHub."},{"lineNumber":37,"author":{"gitId":"-"},"content":" */"},{"lineNumber":38,"author":{"gitId":"-"},"content":" reloadPage(): Observable\u003cboolean\u003e {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return this.githubService.fetchEventsForRepo().pipe("},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((response: any[]) \u003d\u003e {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (response.length \u003d\u003d\u003d 0) {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return of(false);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":" const eventResponse \u003d response[0];"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Will only allow page to reload if the latest modify time is different"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // from last modified, meaning that some changes to the repo has occured."},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (eventResponse[\u0027created_at\u0027] !\u003d\u003d this.lastModified || eventResponse[\u0027issue\u0027][\u0027updated_at\u0027] !\u003d\u003d this.lastModifiedComment) {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.setLastModifiedTime(eventResponse[\u0027created_at\u0027]);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.setLastModifiedCommentTime(eventResponse[\u0027issue\u0027][\u0027updated_at\u0027]);"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return this.issueService.reloadAllIssues().pipe(map((response: any[]) \u003d\u003e true));"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return of(false);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" })"},{"lineNumber":54,"author":{"gitId":"-"},"content":" );"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" private setLastModifiedTime(lastModified: string): void {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.lastModified \u003d lastModified;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" private setLastModifiedCommentTime(lastModified: string): void {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.lastModifiedComment \u003d lastModified;"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.setLastModifiedTime(undefined);"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.setLastModifiedCommentTime(undefined);"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":67}},{"path":"src/app/core/services/issue.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { BehaviorSubject, EMPTY, forkJoin, Observable, of, Subscription, throwError, timer } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { catchError, exhaustMap, finalize, map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027../models/comment.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubComment } from \u0027../models/github/github-comment.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import RestGithubIssueFilter from \u0027../models/github/github-issue-filter.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027../models/github/github-issue.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../models/github/github-label.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { HiddenData } from \u0027../models/hidden-data.model\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { IssueDispute } from \u0027../models/issue-dispute.model\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { FILTER, Issue, Issues, IssuesFilter, STATUS } from \u0027../models/issue.model\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../models/phase.model\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { appVersion } from \u0027./application.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { DataService } from \u0027./data.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027./phase.service\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./user.service\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":21,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":22,"author":{"gitId":"-"},"content":"})"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Responsible for creating and updating issues, and periodically fetching issues"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * using GitHub."},{"lineNumber":27,"author":{"gitId":"-"},"content":" */"},{"lineNumber":28,"author":{"gitId":"-"},"content":"export class IssueService {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" static readonly POLL_INTERVAL \u003d 5000; // 5 seconds"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" issues: Issues;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" issues$: BehaviorSubject\u003cIssue[]\u003e;"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" private sessionId: string;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private issueTeamFilter \u003d \u0027All Teams\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private issuesPollSubscription: Subscription;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /** Whether the IssueService is downloading the data from Github*/"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public isLoading \u003d new BehaviorSubject\u003cboolean\u003e(false);"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":41,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private dataService: DataService,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private logger: LoggingService"},{"lineNumber":46,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.issues$ \u003d new BehaviorSubject(new Array\u003cIssue\u003e());"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" startPollIssues() {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (this.issuesPollSubscription \u003d\u003d\u003d undefined) {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (this.issues$.getValue().length \u003d\u003d\u003d 0) {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.isLoading.next(true);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.issuesPollSubscription \u003d timer(0, IssueService.POLL_INTERVAL)"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":58,"author":{"gitId":"-"},"content":" exhaustMap(() \u003d\u003e {"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this.reloadAllIssues().pipe("},{"lineNumber":60,"author":{"gitId":"-"},"content":" catchError(() \u003d\u003e {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return EMPTY;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":63,"author":{"gitId":"-"},"content":" finalize(() \u003d\u003e this.isLoading.next(false))"},{"lineNumber":64,"author":{"gitId":"-"},"content":" );"},{"lineNumber":65,"author":{"gitId":"-"},"content":" })"},{"lineNumber":66,"author":{"gitId":"-"},"content":" )"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .subscribe();"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" stopPollIssues() {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (this.issuesPollSubscription) {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.issuesPollSubscription.unsubscribe();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.issuesPollSubscription \u003d undefined;"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Will constantly poll and update the application\u0027s state\u0027s with the updated issue."},{"lineNumber":80,"author":{"gitId":"-"},"content":" *"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param issueId - The issue\u0027s id to poll for."},{"lineNumber":82,"author":{"gitId":"-"},"content":" */"},{"lineNumber":83,"author":{"gitId":"-"},"content":" pollIssue(issueId: number): Observable\u003cIssue\u003e {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return timer(0, IssueService.POLL_INTERVAL).pipe("},{"lineNumber":85,"author":{"gitId":"-"},"content":" exhaustMap(() \u003d\u003e {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return this.githubService.fetchIssueGraphql(issueId).pipe("},{"lineNumber":87,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" const issue \u003d this.createIssueModel(response);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" this.updateLocalStore(issue);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":92,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this.getIssue(issueId);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" })"},{"lineNumber":95,"author":{"gitId":"-"},"content":" );"},{"lineNumber":96,"author":{"gitId":"-"},"content":" })"},{"lineNumber":97,"author":{"gitId":"-"},"content":" );"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":""},{"lineNumber":100,"author":{"gitId":"-"},"content":" reloadAllIssues() {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return this.initializeData();"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":" getIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (this.issues \u003d\u003d\u003d undefined) {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return this.getLatestIssue(id);"},{"lineNumber":107,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return of(this.issues[id]);"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":" getLatestIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return this.githubService.fetchIssueGraphql(id).pipe("},{"lineNumber":114,"author":{"gitId":"-"},"content":" map((response: GithubIssue) \u003d\u003e {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.createAndSaveIssueModel(response);"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return this.issues[id];"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":118,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return of(this.issues[id]);"},{"lineNumber":120,"author":{"gitId":"-"},"content":" })"},{"lineNumber":121,"author":{"gitId":"-"},"content":" );"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }"},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"-"},"content":" createIssue(title: string, description: string, severity: string, type: string): Observable\u003cIssue\u003e {"},{"lineNumber":125,"author":{"gitId":"-"},"content":" const labelsArray \u003d [this.createLabel(\u0027severity\u0027, severity), this.createLabel(\u0027type\u0027, type)];"},{"lineNumber":126,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const clientType \u003d \u0027Desktop\u0027;"},{"lineNumber":127,"author":{"gitId":"-"},"content":" const hiddenData \u003d new Map(["},{"lineNumber":128,"author":{"gitId":"-"},"content":" [\u0027session\u0027, this.sessionId],"},{"lineNumber":129,"author":{"gitId":"-"},"content":" [\u0027Version\u0027, `${clientType} v${appVersion}`]"},{"lineNumber":130,"author":{"gitId":"-"},"content":" ]);"},{"lineNumber":131,"author":{"gitId":"-"},"content":" const issueDescription \u003d HiddenData.embedDataIntoString(description, hiddenData);"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return this.githubService"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .createIssue(title, issueDescription, labelsArray)"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .pipe(map((response: GithubIssue) \u003d\u003e this.createIssueModel(response)));"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":" updateIssue(issue: Issue): Observable\u003cIssue\u003e {"},{"lineNumber":138,"author":{"gitId":"-"},"content":" const assignees \u003d this.phaseService.currentPhase \u003d\u003d\u003d Phase.phaseModeration ? [] : issue.assignees;"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return this.githubService"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .updateIssue(issue.id, issue.title, this.createGithubIssueDescription(issue), this.createLabelsForIssue(issue), assignees)"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":142,"author":{"gitId":"-"},"content":" map((response: GithubIssue) \u003d\u003e {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" response.comments \u003d issue.githubComments;"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return this.createIssueModel(response);"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":146,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":147,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.error(\u0027IssueService: \u0027, err); // Log full details of error first"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return throwError(err.response.data.message); // More readable error message"},{"lineNumber":149,"author":{"gitId":"-"},"content":" })"},{"lineNumber":150,"author":{"gitId":"-"},"content":" );"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" updateIssueWithComment(issue: Issue, issueComment: IssueComment): Observable\u003cIssue\u003e {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return this.githubService.updateIssueComment(issueComment).pipe("},{"lineNumber":155,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((updatedComment: GithubComment) \u003d\u003e {"},{"lineNumber":156,"author":{"gitId":"-"},"content":" issue.githubComments \u003d [updatedComment, ...issue.githubComments.filter((c) \u003d\u003e c.id !\u003d\u003d updatedComment.id)];"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return this.updateIssue(issue);"},{"lineNumber":158,"author":{"gitId":"-"},"content":" })"},{"lineNumber":159,"author":{"gitId":"-"},"content":" );"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }"},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":" updateTesterResponse(issue: Issue, issueComment: IssueComment): Observable\u003cIssue\u003e {"},{"lineNumber":163,"author":{"gitId":"-"},"content":" const isTesterResponseExist \u003d this.issues[issue.id].testerResponses;"},{"lineNumber":164,"author":{"gitId":"-"},"content":" const commentApiToCall \u003d isTesterResponseExist"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ? this.githubService.updateIssueComment(issueComment)"},{"lineNumber":166,"author":{"gitId":"-"},"content":" : this.githubService.createIssueComment(issue.id, issueComment.description);"},{"lineNumber":167,"author":{"gitId":"-"},"content":""},{"lineNumber":168,"author":{"gitId":"-"},"content":" const issueClone \u003d issue.clone(this.phaseService.currentPhase);"},{"lineNumber":169,"author":{"gitId":"-"},"content":" issueClone.status \u003d STATUS.Done;"},{"lineNumber":170,"author":{"gitId":"-"},"content":""},{"lineNumber":171,"author":{"gitId":"-"},"content":" return forkJoin([commentApiToCall, this.updateIssue(issueClone)]).pipe("},{"lineNumber":172,"author":{"gitId":"-"},"content":" map((responses) \u003d\u003e {"},{"lineNumber":173,"author":{"gitId":"-"},"content":" const [githubComment, issue] \u003d responses;"},{"lineNumber":174,"author":{"gitId":"-"},"content":" issue.updateTesterResponse(githubComment);"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":176,"author":{"gitId":"-"},"content":" })"},{"lineNumber":177,"author":{"gitId":"-"},"content":" );"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }"},{"lineNumber":179,"author":{"gitId":"-"},"content":""},{"lineNumber":180,"author":{"gitId":"-"},"content":" updateTutorResponse(issue: Issue, issueComment: IssueComment): Observable\u003cIssue\u003e {"},{"lineNumber":181,"author":{"gitId":"-"},"content":" return forkJoin([this.githubService.updateIssueComment(issueComment), this.updateIssue(issue)]).pipe("},{"lineNumber":182,"author":{"gitId":"-"},"content":" map((responses) \u003d\u003e {"},{"lineNumber":183,"author":{"gitId":"-"},"content":" const [githubComment, issue] \u003d responses;"},{"lineNumber":184,"author":{"gitId":"-"},"content":" issue.updateDispute(githubComment);"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":186,"author":{"gitId":"-"},"content":" })"},{"lineNumber":187,"author":{"gitId":"-"},"content":" );"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }"},{"lineNumber":189,"author":{"gitId":"-"},"content":""},{"lineNumber":190,"author":{"gitId":"-"},"content":" createTeamResponse(issue: Issue): Observable\u003cIssue\u003e {"},{"lineNumber":191,"author":{"gitId":"-"},"content":" const teamResponse \u003d issue.createGithubTeamResponse();"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return this.githubService.createIssueComment(issue.id, teamResponse).pipe("},{"lineNumber":193,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((githubComment: GithubComment) \u003d\u003e {"},{"lineNumber":194,"author":{"gitId":"-"},"content":" issue.githubComments \u003d [githubComment, ...issue.githubComments.filter((c) \u003d\u003e c.id !\u003d\u003d githubComment.id)];"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return this.updateIssue(issue);"},{"lineNumber":196,"author":{"gitId":"-"},"content":" })"},{"lineNumber":197,"author":{"gitId":"-"},"content":" );"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }"},{"lineNumber":199,"author":{"gitId":"-"},"content":""},{"lineNumber":200,"author":{"gitId":"-"},"content":" createTutorResponse(issue: Issue, response: string): Observable\u003cIssue\u003e {"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return forkJoin([this.githubService.createIssueComment(issue.id, response), this.updateIssue(issue)]).pipe("},{"lineNumber":202,"author":{"gitId":"-"},"content":" map((responses) \u003d\u003e {"},{"lineNumber":203,"author":{"gitId":"-"},"content":" const [githubComment, issue] \u003d responses;"},{"lineNumber":204,"author":{"gitId":"-"},"content":" issue.updateDispute(githubComment);"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":206,"author":{"gitId":"-"},"content":" })"},{"lineNumber":207,"author":{"gitId":"-"},"content":" );"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }"},{"lineNumber":209,"author":{"gitId":"-"},"content":""},{"lineNumber":210,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * This function will create a github representation of issue\u0027s description. Given the issue model, it will piece together the different"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * attributes to create the github\u0027s description."},{"lineNumber":213,"author":{"gitId":"-"},"content":" *"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */"},{"lineNumber":215,"author":{"gitId":"-"},"content":" private createGithubIssueDescription(issue: Issue): string {"},{"lineNumber":216,"author":{"gitId":"-"},"content":" switch (this.phaseService.currentPhase) {"},{"lineNumber":217,"author":{"gitId":"-"},"content":" case Phase.phaseModeration:"},{"lineNumber":218,"author":{"gitId":"-"},"content":" return ("},{"lineNumber":219,"author":{"gitId":"-"},"content":" `# Issue Description\\n${issue.createGithubIssueDescription()}\\n# Team\\\u0027s Response\\n${issue.teamResponse}\\n ` +"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // `## State the duplicated issue here, if any\\n${issue.duplicateOf ? `Duplicate of #${issue.duplicateOf}` : `--`}\\n` +"},{"lineNumber":221,"author":{"gitId":"-"},"content":" `# Disputes\\n\\n${this.getIssueDisputeString(issue.issueDisputes)}\\n`"},{"lineNumber":222,"author":{"gitId":"-"},"content":" );"},{"lineNumber":223,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":224,"author":{"gitId":"-"},"content":" return issue.createGithubIssueDescription();"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }"},{"lineNumber":227,"author":{"gitId":"-"},"content":""},{"lineNumber":228,"author":{"gitId":"-"},"content":" private getIssueDisputeString(issueDisputes: IssueDispute[]): string {"},{"lineNumber":229,"author":{"gitId":"-"},"content":" let issueDisputeString \u003d \u0027\u0027;"},{"lineNumber":230,"author":{"gitId":"-"},"content":" for (const issueDispute of issueDisputes) {"},{"lineNumber":231,"author":{"gitId":"-"},"content":" issueDisputeString +\u003d issueDispute.toString();"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }"},{"lineNumber":233,"author":{"gitId":"-"},"content":" return issueDisputeString;"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }"},{"lineNumber":235,"author":{"gitId":"-"},"content":""},{"lineNumber":236,"author":{"gitId":"-"},"content":" deleteIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":237,"author":{"gitId":"-"},"content":" return this.githubService.closeIssue(id).pipe("},{"lineNumber":238,"author":{"gitId":"-"},"content":" map((response: GithubIssue) \u003d\u003e {"},{"lineNumber":239,"author":{"gitId":"-"},"content":" const deletedIssue \u003d this.createIssueModel(response);"},{"lineNumber":240,"author":{"gitId":"-"},"content":" this.deleteFromLocalStore(deletedIssue);"},{"lineNumber":241,"author":{"gitId":"-"},"content":" return deletedIssue;"},{"lineNumber":242,"author":{"gitId":"-"},"content":" })"},{"lineNumber":243,"author":{"gitId":"-"},"content":" );"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }"},{"lineNumber":245,"author":{"gitId":"-"},"content":""},{"lineNumber":246,"author":{"gitId":"-"},"content":" undeleteIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":247,"author":{"gitId":"-"},"content":" return this.githubService.reopenIssue(id).pipe("},{"lineNumber":248,"author":{"gitId":"-"},"content":" map((response: GithubIssue) \u003d\u003e {"},{"lineNumber":249,"author":{"gitId":"-"},"content":" const reopenedIssue \u003d this.createIssueModel(response);"},{"lineNumber":250,"author":{"gitId":"-"},"content":" this.updateLocalStore(reopenedIssue);"},{"lineNumber":251,"author":{"gitId":"-"},"content":" return reopenedIssue;"},{"lineNumber":252,"author":{"gitId":"-"},"content":" })"},{"lineNumber":253,"author":{"gitId":"-"},"content":" );"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }"},{"lineNumber":255,"author":{"gitId":"-"},"content":""},{"lineNumber":256,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":257,"author":{"gitId":"-"},"content":" * This function will update the issue\u0027s state of the application. This function needs to be called whenever a issue is deleted."},{"lineNumber":258,"author":{"gitId":"-"},"content":" */"},{"lineNumber":259,"author":{"gitId":"-"},"content":" deleteFromLocalStore(issueToDelete: Issue) {"},{"lineNumber":260,"author":{"gitId":"-"},"content":" const { [issueToDelete.id]: issueToRemove, ...withoutIssueToRemove } \u003d this.issues;"},{"lineNumber":261,"author":{"gitId":"-"},"content":" this.issues \u003d withoutIssueToRemove;"},{"lineNumber":262,"author":{"gitId":"-"},"content":" this.issues$.next(Object.values(this.issues));"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }"},{"lineNumber":264,"author":{"gitId":"-"},"content":""},{"lineNumber":265,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":266,"author":{"gitId":"-"},"content":" * This function will update the issue\u0027s state of the application. This function needs to be called whenever a issue is added/updated."},{"lineNumber":267,"author":{"gitId":"-"},"content":" */"},{"lineNumber":268,"author":{"gitId":"-"},"content":" updateLocalStore(issueToUpdate: Issue) {"},{"lineNumber":269,"author":{"gitId":"-"},"content":" this.issues \u003d {"},{"lineNumber":270,"author":{"gitId":"-"},"content":" ...this.issues,"},{"lineNumber":271,"author":{"gitId":"-"},"content":" [issueToUpdate.id]: issueToUpdate"},{"lineNumber":272,"author":{"gitId":"-"},"content":" };"},{"lineNumber":273,"author":{"gitId":"-"},"content":" this.issues$.next(Object.values(this.issues));"},{"lineNumber":274,"author":{"gitId":"-"},"content":" }"},{"lineNumber":275,"author":{"gitId":"-"},"content":""},{"lineNumber":276,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":277,"author":{"gitId":"-"},"content":" * Check whether the issue has been responded in the phase 2/3."},{"lineNumber":278,"author":{"gitId":"-"},"content":" */"},{"lineNumber":279,"author":{"gitId":"-"},"content":" hasTeamResponse(issueId: number): boolean {"},{"lineNumber":280,"author":{"gitId":"-"},"content":" return !!this.issues[issueId].teamResponse;"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }"},{"lineNumber":282,"author":{"gitId":"-"},"content":""},{"lineNumber":283,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":284,"author":{"gitId":"-"},"content":" * Obtain an observable containing an array of issues that are duplicates of the parentIssue."},{"lineNumber":285,"author":{"gitId":"-"},"content":" */"},{"lineNumber":286,"author":{"gitId":"-"},"content":" getDuplicateIssuesFor(parentIssue: Issue): Observable\u003cIssue[]\u003e {"},{"lineNumber":287,"author":{"gitId":"-"},"content":" return this.issues$.pipe("},{"lineNumber":288,"author":{"gitId":"-"},"content":" map((issues) \u003d\u003e {"},{"lineNumber":289,"author":{"gitId":"-"},"content":" return issues.filter((issue) \u003d\u003e {"},{"lineNumber":290,"author":{"gitId":"-"},"content":" return issue.duplicateOf \u003d\u003d\u003d parentIssue.id;"},{"lineNumber":291,"author":{"gitId":"-"},"content":" });"},{"lineNumber":292,"author":{"gitId":"-"},"content":" })"},{"lineNumber":293,"author":{"gitId":"-"},"content":" );"},{"lineNumber":294,"author":{"gitId":"-"},"content":" }"},{"lineNumber":295,"author":{"gitId":"-"},"content":""},{"lineNumber":296,"author":{"gitId":"-"},"content":" reset(resetSessionId: boolean) {"},{"lineNumber":297,"author":{"gitId":"-"},"content":" if (resetSessionId) {"},{"lineNumber":298,"author":{"gitId":"-"},"content":" this.sessionId \u003d undefined;"},{"lineNumber":299,"author":{"gitId":"-"},"content":" }"},{"lineNumber":300,"author":{"gitId":"-"},"content":""},{"lineNumber":301,"author":{"gitId":"-"},"content":" this.issues \u003d undefined;"},{"lineNumber":302,"author":{"gitId":"-"},"content":" this.issues$.next(new Array\u003cIssue\u003e());"},{"lineNumber":303,"author":{"gitId":"-"},"content":""},{"lineNumber":304,"author":{"gitId":"-"},"content":" this.stopPollIssues();"},{"lineNumber":305,"author":{"gitId":"-"},"content":" this.isLoading.complete();"},{"lineNumber":306,"author":{"gitId":"-"},"content":" this.isLoading \u003d new BehaviorSubject\u003cboolean\u003e(false);"},{"lineNumber":307,"author":{"gitId":"-"},"content":" }"},{"lineNumber":308,"author":{"gitId":"-"},"content":""},{"lineNumber":309,"author":{"gitId":"-"},"content":" private initializeData(): Observable\u003cIssue[]\u003e {"},{"lineNumber":310,"author":{"gitId":"-"},"content":" const issuesAPICallsByFilter: Array\u003cObservable\u003cArray\u003cGithubIssue\u003e\u003e\u003e \u003d [];"},{"lineNumber":311,"author":{"gitId":"-"},"content":""},{"lineNumber":312,"author":{"gitId":"-"},"content":" switch (IssuesFilter[this.phaseService.currentPhase][this.userService.currentUser.role]) {"},{"lineNumber":313,"author":{"gitId":"-"},"content":" case FILTER.FilterByCreator:"},{"lineNumber":314,"author":{"gitId":"-"},"content":" issuesAPICallsByFilter.push("},{"lineNumber":315,"author":{"gitId":"-"},"content":" this.githubService.fetchIssuesGraphql(new RestGithubIssueFilter({ creator: this.userService.currentUser.loginId }))"},{"lineNumber":316,"author":{"gitId":"-"},"content":" );"},{"lineNumber":317,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":318,"author":{"gitId":"-"},"content":" case FILTER.FilterByTeam: // Only student has this filter"},{"lineNumber":319,"author":{"gitId":"-"},"content":" issuesAPICallsByFilter.push("},{"lineNumber":320,"author":{"gitId":"-"},"content":" this.githubService.fetchIssuesGraphqlByTeam("},{"lineNumber":321,"author":{"gitId":"-"},"content":" this.createLabel(\u0027tutorial\u0027, this.userService.currentUser.team.tutorialClassId),"},{"lineNumber":322,"author":{"gitId":"-"},"content":" this.createLabel(\u0027team\u0027, this.userService.currentUser.team.teamId),"},{"lineNumber":323,"author":{"gitId":"-"},"content":" new RestGithubIssueFilter({})"},{"lineNumber":324,"author":{"gitId":"-"},"content":" )"},{"lineNumber":325,"author":{"gitId":"-"},"content":" );"},{"lineNumber":326,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":327,"author":{"gitId":"-"},"content":" case FILTER.FilterByTeamAssigned: // Only for Tutors and Admins"},{"lineNumber":328,"author":{"gitId":"-"},"content":" const allocatedTeams \u003d this.userService.currentUser.allocatedTeams;"},{"lineNumber":329,"author":{"gitId":"-"},"content":" allocatedTeams.forEach((team) \u003d\u003e {"},{"lineNumber":330,"author":{"gitId":"-"},"content":" issuesAPICallsByFilter.push("},{"lineNumber":331,"author":{"gitId":"-"},"content":" this.githubService.fetchIssuesGraphqlByTeam("},{"lineNumber":332,"author":{"gitId":"-"},"content":" this.createLabel(\u0027tutorial\u0027, team.tutorialClassId),"},{"lineNumber":333,"author":{"gitId":"-"},"content":" this.createLabel(\u0027team\u0027, team.teamId),"},{"lineNumber":334,"author":{"gitId":"-"},"content":" new RestGithubIssueFilter({})"},{"lineNumber":335,"author":{"gitId":"-"},"content":" )"},{"lineNumber":336,"author":{"gitId":"-"},"content":" );"},{"lineNumber":337,"author":{"gitId":"-"},"content":" });"},{"lineNumber":338,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":339,"author":{"gitId":"-"},"content":" case FILTER.NoFilter:"},{"lineNumber":340,"author":{"gitId":"-"},"content":" issuesAPICallsByFilter.push(this.githubService.fetchIssuesGraphql(new RestGithubIssueFilter({})));"},{"lineNumber":341,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":342,"author":{"gitId":"-"},"content":" case FILTER.NoAccess:"},{"lineNumber":343,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":344,"author":{"gitId":"-"},"content":" return of([]);"},{"lineNumber":345,"author":{"gitId":"-"},"content":" }"},{"lineNumber":346,"author":{"gitId":"-"},"content":""},{"lineNumber":347,"author":{"gitId":"-"},"content":" // const issuesAPICallsByFilter \u003d filters.map(filter \u003d\u003e this.githubService.fetchIssuesGraphql(filter));"},{"lineNumber":348,"author":{"gitId":"-"},"content":" return forkJoin(issuesAPICallsByFilter).pipe("},{"lineNumber":349,"author":{"gitId":"-"},"content":" map((issuesByFilter: [][]) \u003d\u003e {"},{"lineNumber":350,"author":{"gitId":"-"},"content":" const fetchedIssueIds: Array\u003cNumber\u003e \u003d [];"},{"lineNumber":351,"author":{"gitId":"-"},"content":""},{"lineNumber":352,"author":{"gitId":"-"},"content":" for (const issues of issuesByFilter) {"},{"lineNumber":353,"author":{"gitId":"-"},"content":" for (const issue of issues) {"},{"lineNumber":354,"author":{"gitId":"-"},"content":" fetchedIssueIds.push(this.createIssueModel(issue).id);"},{"lineNumber":355,"author":{"gitId":"-"},"content":" this.createAndSaveIssueModel(issue);"},{"lineNumber":356,"author":{"gitId":"-"},"content":" }"},{"lineNumber":357,"author":{"gitId":"-"},"content":" }"},{"lineNumber":358,"author":{"gitId":"-"},"content":""},{"lineNumber":359,"author":{"gitId":"-"},"content":" const outdatedIssueIds: Array\u003cNumber\u003e \u003d this.getOutdatedIssueIds(fetchedIssueIds);"},{"lineNumber":360,"author":{"gitId":"-"},"content":" this.deleteIssuesFromLocalStore(outdatedIssueIds);"},{"lineNumber":361,"author":{"gitId":"-"},"content":""},{"lineNumber":362,"author":{"gitId":"-"},"content":" return Object.values(this.issues);"},{"lineNumber":363,"author":{"gitId":"-"},"content":" })"},{"lineNumber":364,"author":{"gitId":"-"},"content":" );"},{"lineNumber":365,"author":{"gitId":"-"},"content":" }"},{"lineNumber":366,"author":{"gitId":"-"},"content":""},{"lineNumber":367,"author":{"gitId":"-"},"content":" private createAndSaveIssueModel(githubIssue: GithubIssue): boolean {"},{"lineNumber":368,"author":{"gitId":"-"},"content":" const issue \u003d this.createIssueModel(githubIssue);"},{"lineNumber":369,"author":{"gitId":"-"},"content":" this.updateLocalStore(issue);"},{"lineNumber":370,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":371,"author":{"gitId":"-"},"content":" }"},{"lineNumber":372,"author":{"gitId":"-"},"content":""},{"lineNumber":373,"author":{"gitId":"-"},"content":" private deleteIssuesFromLocalStore(ids: Array\u003cNumber\u003e): void {"},{"lineNumber":374,"author":{"gitId":"-"},"content":" ids.forEach((id: number) \u003d\u003e {"},{"lineNumber":375,"author":{"gitId":"-"},"content":" this.getIssue(id).subscribe((issue) \u003d\u003e this.deleteFromLocalStore(issue));"},{"lineNumber":376,"author":{"gitId":"-"},"content":" });"},{"lineNumber":377,"author":{"gitId":"-"},"content":" }"},{"lineNumber":378,"author":{"gitId":"-"},"content":""},{"lineNumber":379,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":380,"author":{"gitId":"-"},"content":" * Returns an array of outdated issue ids by comparing the ids of the recently"},{"lineNumber":381,"author":{"gitId":"-"},"content":" * fetched issues with the current issue ids in the local store"},{"lineNumber":382,"author":{"gitId":"-"},"content":" */"},{"lineNumber":383,"author":{"gitId":"-"},"content":" private getOutdatedIssueIds(fetchedIssueIds: Array\u003cNumber\u003e): Array\u003cNumber\u003e {"},{"lineNumber":384,"author":{"gitId":"-"},"content":" /*"},{"lineNumber":385,"author":{"gitId":"-"},"content":" Ignore for first fetch or ignore if there is no fetch result"},{"lineNumber":386,"author":{"gitId":"-"},"content":""},{"lineNumber":387,"author":{"gitId":"-"},"content":" We also have to ignore for no fetch result as the cache might return a"},{"lineNumber":388,"author":{"gitId":"-"},"content":" 304 reponse with no differences in issues, resulting in the fetchIssueIds"},{"lineNumber":389,"author":{"gitId":"-"},"content":" to be empty"},{"lineNumber":390,"author":{"gitId":"-"},"content":" */"},{"lineNumber":391,"author":{"gitId":"-"},"content":" if (this.issues \u003d\u003d\u003d undefined || !fetchedIssueIds.length) {"},{"lineNumber":392,"author":{"gitId":"-"},"content":" return [];"},{"lineNumber":393,"author":{"gitId":"-"},"content":" }"},{"lineNumber":394,"author":{"gitId":"-"},"content":""},{"lineNumber":395,"author":{"gitId":"-"},"content":" const fetchedIssueIdsSet \u003d new Set\u003cNumber\u003e(fetchedIssueIds);"},{"lineNumber":396,"author":{"gitId":"-"},"content":""},{"lineNumber":397,"author":{"gitId":"-"},"content":" const result \u003d Object.keys(this.issues)"},{"lineNumber":398,"author":{"gitId":"-"},"content":" .map((x) \u003d\u003e +x)"},{"lineNumber":399,"author":{"gitId":"-"},"content":" .filter((issueId) \u003d\u003e !fetchedIssueIdsSet.has(issueId));"},{"lineNumber":400,"author":{"gitId":"-"},"content":""},{"lineNumber":401,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":402,"author":{"gitId":"-"},"content":" }"},{"lineNumber":403,"author":{"gitId":"-"},"content":""},{"lineNumber":404,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":405,"author":{"gitId":"-"},"content":" * Given an issue model, create the necessary labels for github."},{"lineNumber":406,"author":{"gitId":"-"},"content":" */"},{"lineNumber":407,"author":{"gitId":"-"},"content":" private createLabelsForIssue(issue: Issue): string[] {"},{"lineNumber":408,"author":{"gitId":"-"},"content":" const result \u003d [];"},{"lineNumber":409,"author":{"gitId":"-"},"content":""},{"lineNumber":410,"author":{"gitId":"-"},"content":" if (this.phaseService.currentPhase !\u003d\u003d Phase.phaseBugReporting \u0026\u0026 this.phaseService.currentPhase !\u003d\u003d Phase.phaseTesterResponse) {"},{"lineNumber":411,"author":{"gitId":"-"},"content":" const studentTeam \u003d issue.teamAssigned.id.split(\u0027-\u0027);"},{"lineNumber":412,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027tutorial\u0027, `${studentTeam[0]}-${studentTeam[1]}`), this.createLabel(\u0027team\u0027, studentTeam[2]));"},{"lineNumber":413,"author":{"gitId":"-"},"content":" }"},{"lineNumber":414,"author":{"gitId":"-"},"content":""},{"lineNumber":415,"author":{"gitId":"-"},"content":" if (issue.severity) {"},{"lineNumber":416,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027severity\u0027, issue.severity));"},{"lineNumber":417,"author":{"gitId":"-"},"content":" }"},{"lineNumber":418,"author":{"gitId":"-"},"content":""},{"lineNumber":419,"author":{"gitId":"-"},"content":" if (issue.type) {"},{"lineNumber":420,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027type\u0027, issue.type));"},{"lineNumber":421,"author":{"gitId":"-"},"content":" }"},{"lineNumber":422,"author":{"gitId":"-"},"content":""},{"lineNumber":423,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (issue.response) {"},{"lineNumber":424,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" result.push(this.createLabel(\u0027response\u0027, issue.response));"},{"lineNumber":425,"author":{"gitId":"-"},"content":" }"},{"lineNumber":426,"author":{"gitId":"-"},"content":""},{"lineNumber":427,"author":{"gitId":"-"},"content":" if (issue.duplicated) {"},{"lineNumber":428,"author":{"gitId":"-"},"content":" result.push(\u0027duplicate\u0027);"},{"lineNumber":429,"author":{"gitId":"-"},"content":" }"},{"lineNumber":430,"author":{"gitId":"-"},"content":""},{"lineNumber":431,"author":{"gitId":"-"},"content":" if (issue.status) {"},{"lineNumber":432,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027status\u0027, issue.status));"},{"lineNumber":433,"author":{"gitId":"-"},"content":" }"},{"lineNumber":434,"author":{"gitId":"-"},"content":""},{"lineNumber":435,"author":{"gitId":"-"},"content":" if (issue.pending) {"},{"lineNumber":436,"author":{"gitId":"-"},"content":" if (+issue.pending \u003e 0) {"},{"lineNumber":437,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027pending\u0027, issue.pending));"},{"lineNumber":438,"author":{"gitId":"-"},"content":" }"},{"lineNumber":439,"author":{"gitId":"-"},"content":" }"},{"lineNumber":440,"author":{"gitId":"-"},"content":""},{"lineNumber":441,"author":{"gitId":"-"},"content":" if (issue.unsure) {"},{"lineNumber":442,"author":{"gitId":"-"},"content":" result.push(\u0027unsure\u0027);"},{"lineNumber":443,"author":{"gitId":"-"},"content":" }"},{"lineNumber":444,"author":{"gitId":"-"},"content":""},{"lineNumber":445,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":446,"author":{"gitId":"-"},"content":" }"},{"lineNumber":447,"author":{"gitId":"-"},"content":""},{"lineNumber":448,"author":{"gitId":"-"},"content":" private createLabel(prepend: string, value: string) {"},{"lineNumber":449,"author":{"gitId":"-"},"content":" return `${prepend}.${value}`;"},{"lineNumber":450,"author":{"gitId":"-"},"content":" }"},{"lineNumber":451,"author":{"gitId":"-"},"content":""},{"lineNumber":452,"author":{"gitId":"-"},"content":" private extractTeamIdFromGithubIssue(githubIssue: GithubIssue): string {"},{"lineNumber":453,"author":{"gitId":"-"},"content":" return githubIssue.findLabel(GithubLabel.LABELS.tutorial).concat(\u0027-\u0027).concat(githubIssue.findLabel(GithubLabel.LABELS.team));"},{"lineNumber":454,"author":{"gitId":"-"},"content":" }"},{"lineNumber":455,"author":{"gitId":"-"},"content":""},{"lineNumber":456,"author":{"gitId":"-"},"content":" private createIssueModel(githubIssue: GithubIssue): Issue {"},{"lineNumber":457,"author":{"gitId":"-"},"content":" let issue: Issue;"},{"lineNumber":458,"author":{"gitId":"-"},"content":""},{"lineNumber":459,"author":{"gitId":"-"},"content":" switch (this.phaseService.currentPhase) {"},{"lineNumber":460,"author":{"gitId":"-"},"content":" case Phase.phaseBugReporting:"},{"lineNumber":461,"author":{"gitId":"-"},"content":" issue \u003d Issue.createPhaseBugReportingIssue(githubIssue);"},{"lineNumber":462,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":463,"author":{"gitId":"-"},"content":" case Phase.phaseTeamResponse:"},{"lineNumber":464,"author":{"gitId":"-"},"content":" issue \u003d Issue.createPhaseTeamResponseIssue(githubIssue, this.dataService.getTeam(this.extractTeamIdFromGithubIssue(githubIssue)));"},{"lineNumber":465,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":466,"author":{"gitId":"-"},"content":" case Phase.phaseTesterResponse:"},{"lineNumber":467,"author":{"gitId":"-"},"content":" issue \u003d Issue.createPhaseTesterResponseIssue(githubIssue);"},{"lineNumber":468,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":469,"author":{"gitId":"-"},"content":" case Phase.phaseModeration:"},{"lineNumber":470,"author":{"gitId":"-"},"content":" issue \u003d Issue.createPhaseModerationIssue(githubIssue, this.dataService.getTeam(this.extractTeamIdFromGithubIssue(githubIssue)));"},{"lineNumber":471,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":472,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":473,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":474,"author":{"gitId":"-"},"content":" }"},{"lineNumber":475,"author":{"gitId":"-"},"content":""},{"lineNumber":476,"author":{"gitId":"-"},"content":" if (issue.parseError) {"},{"lineNumber":477,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.error(\u0027IssueService: \u0027 + issue.parseError);"},{"lineNumber":478,"author":{"gitId":"-"},"content":" }"},{"lineNumber":479,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":480,"author":{"gitId":"-"},"content":" }"},{"lineNumber":481,"author":{"gitId":"-"},"content":""},{"lineNumber":482,"author":{"gitId":"-"},"content":" setIssueTeamFilter(filterValue: string) {"},{"lineNumber":483,"author":{"gitId":"-"},"content":" if (filterValue) {"},{"lineNumber":484,"author":{"gitId":"-"},"content":" this.issueTeamFilter \u003d filterValue;"},{"lineNumber":485,"author":{"gitId":"-"},"content":" }"},{"lineNumber":486,"author":{"gitId":"-"},"content":" }"},{"lineNumber":487,"author":{"gitId":"-"},"content":""},{"lineNumber":488,"author":{"gitId":"-"},"content":" setSessionId(sessionId: string) {"},{"lineNumber":489,"author":{"gitId":"-"},"content":" this.sessionId \u003d sessionId;"},{"lineNumber":490,"author":{"gitId":"-"},"content":" }"},{"lineNumber":491,"author":{"gitId":"-"},"content":""},{"lineNumber":492,"author":{"gitId":"-"},"content":" getIssueTeamFilter(): string {"},{"lineNumber":493,"author":{"gitId":"-"},"content":" return this.issueTeamFilter;"},{"lineNumber":494,"author":{"gitId":"-"},"content":" }"},{"lineNumber":495,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":8,"-":487}},{"path":"src/app/core/services/label.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Observable, pipe, UnaryFunction } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../models/github/github-label.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Label } from \u0027../models/label.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"/* The threshold to decide if color is dark or light."},{"lineNumber":10,"author":{"gitId":"-"},"content":"A higher threshold value will result in more colors determined to be \"dark\"."},{"lineNumber":11,"author":{"gitId":"-"},"content":"W3C recommendation is 0.179, but 0.184 is chosen so that some colors (like bright red)"},{"lineNumber":12,"author":{"gitId":"-"},"content":"are considered dark (Github too consider them dark) */"},{"lineNumber":13,"author":{"gitId":"-"},"content":"const COLOR_DARKNESS_THRESHOLD \u003d 0.184;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"const COLOR_BLACK \u003d \u0027000000\u0027; // Dark color for text with light background"},{"lineNumber":16,"author":{"gitId":"-"},"content":"const COLOR_WHITE \u003d \u0027ffffff\u0027; // Light color for text with dark background"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":"const COLOR_RED_PALE \u003d \u0027ffe0e0\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"const COLOR_RED_LIGHT \u003d \u0027ffcccc\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"const COLOR_RED \u003d \u0027ff9999\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"const COLOR_RED_DARK \u003d \u0027ff6666\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":"const COLOR_PURPLE_LIGHT \u003d \u0027d966ff\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":"const COLOR_PURPLE \u003d \u00279900cc\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":"const COLOR_GREEN \u003d \u002700802b\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"const COLOR_ORANGE_PALE \u003d \u0027ffebcc\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"const COLOR_ORANGE_LIGHT \u003d \u0027ffcc80\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"const COLOR_ORANGE \u003d \u0027ff9900\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":"const COLOR_SILVER \u003d \u0027a6a6a6\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":"const COLOR_BLUE \u003d \u00270066ff\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"const DISPLAY_NAME_SEVERITY \u003d \u0027Severity\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":"const DISPLAY_NAME_BUG_TYPE \u003d \u0027Bug Type\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":"const DISPLAY_NAME_RESPONSE \u003d \u0027Response\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":"// The HTML template definition of selected labels are hard-coded here, move to a config file in the future"},{"lineNumber":40,"author":{"gitId":"-"},"content":"const VERY_LOW_DEFINITION \u003d"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u0027\u003cp\u003eA flaw that is \u003cmark\u003epurely cosmetic\u003c/mark\u003e and \u003cmark\u003edoes not affect usage\u003c/mark\u003e. For example, \u0027 +"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u0027\u003cul\u003e\u0027 +"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u0027\u003cli\u003etypo issues\u003c/li\u003e\u0027 +"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u0027\u003cli\u003espacing issues\u003c/li\u003e\u0027 +"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u0027\u003cli\u003elayout issues\u003c/li\u003e\u0027 +"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u0027\u003cli\u003ecolor issues\u003c/li\u003e\u0027 +"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u0027\u003cli\u003efont issues\u003c/li\u003e\u0027 +"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u0027\u003c/ul\u003e\u0027 +"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \"in the docs or the UI that doesn\u0027t affect usage.\u003c/p\u003e\";"},{"lineNumber":50,"author":{"gitId":"-"},"content":"const LOW_DEFINITION \u003d"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u0027\u003cp\u003eA flaw that is unlikely to affect normal operations of the product. \u0027 +"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u0027Appears only in very rare situations and causes a minor inconvenience only.\u003c/p\u003e\u0027;"},{"lineNumber":53,"author":{"gitId":"-"},"content":"const MEDIUM_DEFINITION \u003d \u0027\u003cp\u003eA flaw that causes occasional inconvenience to some users but they can \u0027 + \u0027continue to use the product.\u003c/p\u003e\u0027;"},{"lineNumber":54,"author":{"gitId":"-"},"content":"const HIGH_DEFINITION \u003d"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u0027\u003cp\u003eA flaw that affects most users and causes major problems for users.\u0027 + \u0027i.e., makes the product almost unusable for most users.\u003c/p\u003e\u0027;"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":"const FUNCTIONALITY_BUG_DEFINITION \u003d \u0027\u003cp\u003eA functionality does not work as specified/expected.\u003c/p\u003e\u0027;"},{"lineNumber":58,"author":{"gitId":"-"},"content":"const FEATURE_FLAW_DEFINITION \u003d"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u0027\u003cp\u003eSome functionality missing from a feature delivered in the current version in \u0027 +"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u0027a way that the feature becomes less useful to the intended target user for \u003ci\u003enormal\u003c/i\u003e usage. \u0027 +"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \"i.e., the feature is not \u0027complete\u0027.\\nIn other words, an acceptance-testing bug that falls within \" +"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u0027the scope of the current version features. These issues are counted against the \u003ci\u003eproduct design\u003c/i\u003e aspect \u0027 +"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u0027of the project.\u003c/p\u003e\u0027;"},{"lineNumber":64,"author":{"gitId":"-"},"content":"const DOCUMENTATION_BUG_DEFINITION \u003d"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0027\u003cp\u003eA flaw in the documentation \u0027 + \u0027\u003cspan style\u003d\"color:grey;\"\u003ee.g., a missing step, a wrong instruction, typos\u003c/span\u003e\u003c/p\u003e\u0027;"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":"const ACCEPTED_DEFINITION \u003d \u0027\u003cp\u003eYou accept it as a bug.\u003c/p\u003e\u0027;"},{"lineNumber":68,"author":{"gitId":"-"},"content":"const NOT_IN_SCOPE_DEFINITION \u003d"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u0027\u003cp\u003eIt is a valid issue but not something the team should be penalized for \u0027 +"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u0027\u003cspan style\u003d\"color:grey;\"\u003ee.g., it was not related to features delivered in this version\u003c/span\u003e.\u003c/p\u003e\u0027;"},{"lineNumber":71,"author":{"gitId":"-"},"content":"const REJECTED_DEFINITION \u003d"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \"\u003cp\u003eWhat tester treated as a bug is in fact the expected behavior (from the user\u0027s point of view), or the tester \" +"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u0027was mistaken in some other way.\u003c/p\u003e\u0027;"},{"lineNumber":74,"author":{"gitId":"-"},"content":"const CANNOT_REPRODUCE_DEFINITION \u003d \u0027\u003cp\u003eYou are unable to reproduce the behavior reported in the bug after multiple tries.\u003c/p\u003e\u0027;"},{"lineNumber":75,"author":{"gitId":"-"},"content":"const ISSUE_UNCLEAR_DEFINITION \u003d \u0027\u003cp\u003eThe issue description is not clear.\u003c/p\u003e\u0027;"},{"lineNumber":76,"author":{"gitId":"-"},"content":"const UNDEFINED_DEFINITION \u003d null;"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":"export const LABEL_DEFINITIONS \u003d {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" severityVeryLow: VERY_LOW_DEFINITION,"},{"lineNumber":80,"author":{"gitId":"-"},"content":" severityLow: LOW_DEFINITION,"},{"lineNumber":81,"author":{"gitId":"-"},"content":" severityMedium: MEDIUM_DEFINITION,"},{"lineNumber":82,"author":{"gitId":"-"},"content":" severityHigh: HIGH_DEFINITION,"},{"lineNumber":83,"author":{"gitId":"-"},"content":" typeFunctionalityBug: FUNCTIONALITY_BUG_DEFINITION,"},{"lineNumber":84,"author":{"gitId":"-"},"content":" typeFeatureFlaw: FEATURE_FLAW_DEFINITION,"},{"lineNumber":85,"author":{"gitId":"-"},"content":" typeDocumentationBug: DOCUMENTATION_BUG_DEFINITION,"},{"lineNumber":86,"author":{"gitId":"-"},"content":" responseAccepted: ACCEPTED_DEFINITION,"},{"lineNumber":87,"author":{"gitId":"-"},"content":" responseNotInScope: NOT_IN_SCOPE_DEFINITION,"},{"lineNumber":88,"author":{"gitId":"-"},"content":" responseRejected: REJECTED_DEFINITION,"},{"lineNumber":89,"author":{"gitId":"-"},"content":" responseCannotProduce: CANNOT_REPRODUCE_DEFINITION,"},{"lineNumber":90,"author":{"gitId":"-"},"content":" responseIssueUnclear: ISSUE_UNCLEAR_DEFINITION,"},{"lineNumber":91,"author":{"gitId":"-"},"content":" undefined: UNDEFINED_DEFINITION"},{"lineNumber":92,"author":{"gitId":"-"},"content":"};"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":"const REQUIRED_LABELS \u003d {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" severity: {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" VeryLow: new Label(\u0027severity\u0027, \u0027VeryLow\u0027, COLOR_RED_PALE, VERY_LOW_DEFINITION),"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Low: new Label(\u0027severity\u0027, \u0027Low\u0027, COLOR_RED_LIGHT, LOW_DEFINITION),"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Medium: new Label(\u0027severity\u0027, \u0027Medium\u0027, COLOR_RED, MEDIUM_DEFINITION),"},{"lineNumber":99,"author":{"gitId":"-"},"content":" High: new Label(\u0027severity\u0027, \u0027High\u0027, COLOR_RED_DARK, HIGH_DEFINITION)"},{"lineNumber":100,"author":{"gitId":"-"},"content":" },"},{"lineNumber":101,"author":{"gitId":"-"},"content":" type: {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" DocumentationBug: new Label(\u0027type\u0027, \u0027DocumentationBug\u0027, COLOR_PURPLE_LIGHT, DOCUMENTATION_BUG_DEFINITION),"},{"lineNumber":103,"author":{"gitId":"-"},"content":" FeatureFlaw: new Label(\u0027type\u0027, \u0027FeatureFlaw\u0027, COLOR_PURPLE_LIGHT, FEATURE_FLAW_DEFINITION),"},{"lineNumber":104,"author":{"gitId":"-"},"content":" FunctionalityBug: new Label(\u0027type\u0027, \u0027FunctionalityBug\u0027, COLOR_PURPLE, FUNCTIONALITY_BUG_DEFINITION)"},{"lineNumber":105,"author":{"gitId":"-"},"content":" },"},{"lineNumber":106,"author":{"gitId":"-"},"content":" response: {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Accepted: new Label(\u0027response\u0027, \u0027Accepted\u0027, COLOR_GREEN, ACCEPTED_DEFINITION),"},{"lineNumber":108,"author":{"gitId":"-"},"content":" CannotReproduce: new Label(\u0027response\u0027, \u0027CannotReproduce\u0027, COLOR_ORANGE_PALE, CANNOT_REPRODUCE_DEFINITION),"},{"lineNumber":109,"author":{"gitId":"-"},"content":" IssueUnclear: new Label(\u0027response\u0027, \u0027IssueUnclear\u0027, COLOR_ORANGE_LIGHT, ISSUE_UNCLEAR_DEFINITION),"},{"lineNumber":110,"author":{"gitId":"-"},"content":" NotInScope: new Label(\u0027response\u0027, \u0027NotInScope\u0027, COLOR_ORANGE_LIGHT, NOT_IN_SCOPE_DEFINITION),"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Rejected: new Label(\u0027response\u0027, \u0027Rejected\u0027, COLOR_ORANGE, REJECTED_DEFINITION)"},{"lineNumber":112,"author":{"gitId":"-"},"content":" },"},{"lineNumber":113,"author":{"gitId":"-"},"content":" status: {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Done: new Label(\u0027status\u0027, \u0027Done\u0027, COLOR_SILVER),"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Incomplete: new Label(\u0027status\u0027, \u0027Incomplete\u0027, COLOR_BLACK)"},{"lineNumber":116,"author":{"gitId":"-"},"content":" },"},{"lineNumber":117,"author":{"gitId":"-"},"content":" others: {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" duplicate: new Label(undefined, \u0027duplicate\u0027, COLOR_BLUE)"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":"};"},{"lineNumber":121,"author":{"gitId":"-"},"content":""},{"lineNumber":122,"author":{"gitId":"-"},"content":"export type LabelCategory \u003d keyof typeof REQUIRED_LABELS;"},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":125,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":126,"author":{"gitId":"-"},"content":"})"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Responsible for retrieval and parsing and syncing of label data"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * from the GitHub repository for the CATcher application."},{"lineNumber":131,"author":{"gitId":"-"},"content":" */"},{"lineNumber":132,"author":{"gitId":"-"},"content":"export class LabelService {"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private static severityLabels: Label[] \u003d Object.values(REQUIRED_LABELS.severity);"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private static typeLabels: Label[] \u003d Object.values(REQUIRED_LABELS.type);"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private static responseLabels: Label[] \u003d Object.values(REQUIRED_LABELS.response);"},{"lineNumber":136,"author":{"gitId":"-"},"content":" private static statusLabels: Label[] \u003d Object.values(REQUIRED_LABELS.status);"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private static otherLabels: Label[] \u003d Object.values(REQUIRED_LABELS.others);"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" private static allLabelArrays \u003d {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" severity: LabelService.severityLabels,"},{"lineNumber":141,"author":{"gitId":"-"},"content":" type: LabelService.typeLabels,"},{"lineNumber":142,"author":{"gitId":"-"},"content":" response: LabelService.responseLabels,"},{"lineNumber":143,"author":{"gitId":"-"},"content":" status: LabelService.statusLabels,"},{"lineNumber":144,"author":{"gitId":"-"},"content":" others: LabelService.otherLabels"},{"lineNumber":145,"author":{"gitId":"-"},"content":" };"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private static testerLabelArrays \u003d {"},{"lineNumber":147,"author":{"gitId":"-"},"content":" severity: LabelService.severityLabels,"},{"lineNumber":148,"author":{"gitId":"-"},"content":" type: LabelService.typeLabels"},{"lineNumber":149,"author":{"gitId":"-"},"content":" };"},{"lineNumber":150,"author":{"gitId":"-"},"content":""},{"lineNumber":151,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor(private githubService: GithubService, private logger: LoggingService) {}"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" public static getRequiredLabelsAsArray(needAllLabels: boolean): Label[] {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" let requiredLabels: Label[] \u003d [];"},{"lineNumber":155,"author":{"gitId":"-"},"content":""},{"lineNumber":156,"author":{"gitId":"-"},"content":" const labels \u003d needAllLabels ? Object.values(this.allLabelArrays) : Object.values(this.testerLabelArrays);"},{"lineNumber":157,"author":{"gitId":"-"},"content":" labels.map((label) \u003d\u003e (requiredLabels \u003d requiredLabels.concat(label)));"},{"lineNumber":158,"author":{"gitId":"-"},"content":" return requiredLabels;"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }"},{"lineNumber":160,"author":{"gitId":"-"},"content":""},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Updates the required label to be in sync with the labels on the GitHub repository."},{"lineNumber":163,"author":{"gitId":"-"},"content":" */"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public static updateRequiredLabelColor(labelColor: string, label: Label) {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" const labelArray \u003d LabelService.allLabelArrays[label.labelCategory];"},{"lineNumber":166,"author":{"gitId":"-"},"content":""},{"lineNumber":167,"author":{"gitId":"-"},"content":" if (labelArray) {"},{"lineNumber":168,"author":{"gitId":"-"},"content":" const requiredLabel \u003d labelArray.find((requiredLabel: Label) \u003d\u003e requiredLabel.labelValue \u003d\u003d\u003d label.labelValue);"},{"lineNumber":169,"author":{"gitId":"-"},"content":" requiredLabel.labelColor \u003d labelColor;"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }"},{"lineNumber":172,"author":{"gitId":"-"},"content":""},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns an custom operator which helps to"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * synchronise the labels in our application"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * with the remote repository."},{"lineNumber":177,"author":{"gitId":"-"},"content":" */"},{"lineNumber":178,"author":{"gitId":"-"},"content":" syncLabels(needAllLabels: boolean): UnaryFunction\u003cObservable\u003cboolean\u003e, Observable\u003cany\u003e\u003e {"},{"lineNumber":179,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return pipe(mergeMap(() \u003d\u003e this.synchronizeRemoteLabels(needAllLabels)));"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }"},{"lineNumber":181,"author":{"gitId":"-"},"content":""},{"lineNumber":182,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":183,"author":{"gitId":"-"},"content":" * Synchronizes the labels in github with those required by the application."},{"lineNumber":184,"author":{"gitId":"-"},"content":" */"},{"lineNumber":185,"author":{"gitId":"-"},"content":" synchronizeRemoteLabels(needAllLabels: boolean): Observable\u003cany\u003e {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return this.githubService.fetchAllLabels().pipe("},{"lineNumber":187,"author":{"gitId":"-"},"content":" map((githubLabels) \u003d\u003e githubLabels.map(this.toLabel)),"},{"lineNumber":188,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.ensureRepoHasRequiredLabels(response, LabelService.getRequiredLabelsAsArray(needAllLabels));"},{"lineNumber":190,"author":{"gitId":"-"},"content":" return response;"},{"lineNumber":191,"author":{"gitId":"-"},"content":" })"},{"lineNumber":192,"author":{"gitId":"-"},"content":" );"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }"},{"lineNumber":194,"author":{"gitId":"-"},"content":""},{"lineNumber":195,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":196,"author":{"gitId":"-"},"content":" * Returns all the labels of a certain type (e.g severity)"},{"lineNumber":197,"author":{"gitId":"-"},"content":" * @param attributeName: the type of the label"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * @return an array of label of that type"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */"},{"lineNumber":200,"author":{"gitId":"-"},"content":" getLabelList(attributeName: string): Label[] {"},{"lineNumber":201,"author":{"gitId":"-"},"content":" switch (attributeName) {"},{"lineNumber":202,"author":{"gitId":"-"},"content":" case \u0027severity\u0027:"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return LabelService.severityLabels;"},{"lineNumber":204,"author":{"gitId":"-"},"content":" case \u0027type\u0027:"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return LabelService.typeLabels;"},{"lineNumber":206,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // case \u0027responseTag\u0027:"},{"lineNumber":207,"author":{"gitId":"-"},"content":" case \u0027response\u0027:"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return LabelService.responseLabels;"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }"},{"lineNumber":210,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`LabelService: Unfiltered Attribute ${attributeName} in getLabelList`);"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }"},{"lineNumber":212,"author":{"gitId":"-"},"content":""},{"lineNumber":213,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":214,"author":{"gitId":"-"},"content":" * Returns a title for the label type"},{"lineNumber":215,"author":{"gitId":"-"},"content":" * @param attributeName: the type of the label"},{"lineNumber":216,"author":{"gitId":"-"},"content":" */"},{"lineNumber":217,"author":{"gitId":"-"},"content":" getLabelTitle(attributeName: string): string {"},{"lineNumber":218,"author":{"gitId":"-"},"content":" switch (attributeName) {"},{"lineNumber":219,"author":{"gitId":"-"},"content":" case \u0027severity\u0027:"},{"lineNumber":220,"author":{"gitId":"-"},"content":" return DISPLAY_NAME_SEVERITY;"},{"lineNumber":221,"author":{"gitId":"-"},"content":" case \u0027type\u0027:"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return DISPLAY_NAME_BUG_TYPE;"},{"lineNumber":223,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" case \u0027response\u0027:"},{"lineNumber":224,"author":{"gitId":"-"},"content":" return DISPLAY_NAME_RESPONSE;"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }"},{"lineNumber":226,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`LabelService: Unfiltered Attribute ${attributeName} in getLabelTitle`);"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }"},{"lineNumber":228,"author":{"gitId":"-"},"content":""},{"lineNumber":229,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * Returns the color of the label by searching a list of"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * all available labels."},{"lineNumber":232,"author":{"gitId":"-"},"content":" * @param labelValue: the label\u0027s value (e.g Low / Medium / High / ...)"},{"lineNumber":233,"author":{"gitId":"-"},"content":" */"},{"lineNumber":234,"author":{"gitId":"-"},"content":" getColorOfLabel(labelCategory: LabelCategory, labelValue: string): string {"},{"lineNumber":235,"author":{"gitId":"-"},"content":" if (labelValue \u003d\u003d\u003d \u0027\u0027 || !LabelService.allLabelArrays[labelCategory]) {"},{"lineNumber":236,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`LabelService: Unfiltered Attribute, ${labelValue}: ${labelCategory} in getColorOfLabel`);"},{"lineNumber":237,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":238,"author":{"gitId":"-"},"content":" return COLOR_WHITE;"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }"},{"lineNumber":240,"author":{"gitId":"-"},"content":""},{"lineNumber":241,"author":{"gitId":"-"},"content":" const existingLabel \u003d LabelService.allLabelArrays[labelCategory].find((label: Label) \u003d\u003e label.labelValue \u003d\u003d\u003d labelValue);"},{"lineNumber":242,"author":{"gitId":"-"},"content":""},{"lineNumber":243,"author":{"gitId":"-"},"content":" if (existingLabel \u003d\u003d\u003d undefined || existingLabel.labelColor \u003d\u003d\u003d undefined) {"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return COLOR_WHITE;"},{"lineNumber":245,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":246,"author":{"gitId":"-"},"content":" return existingLabel.labelColor;"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }"},{"lineNumber":249,"author":{"gitId":"-"},"content":""},{"lineNumber":250,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":251,"author":{"gitId":"-"},"content":" * Returns the definition of the label by searching a list of"},{"lineNumber":252,"author":{"gitId":"-"},"content":" * all available labels."},{"lineNumber":253,"author":{"gitId":"-"},"content":" * @param labelValue: the label\u0027s value (e.g Low/ Medium/ High / ...)."},{"lineNumber":254,"author":{"gitId":"-"},"content":" * @param labelCategory: the label\u0027s category (e.g Type/ Severity / ...)."},{"lineNumber":255,"author":{"gitId":"-"},"content":" */"},{"lineNumber":256,"author":{"gitId":"-"},"content":" getLabelDefinition(labelValue: string, labelCategory: string): string {"},{"lineNumber":257,"author":{"gitId":"-"},"content":" if (labelValue \u003d\u003d\u003d \u0027\u0027 || labelValue \u003d\u003d\u003d null || labelCategory \u003d\u003d\u003d \u0027\u0027 || labelCategory \u003d\u003d\u003d null) {"},{"lineNumber":258,"author":{"gitId":"-"},"content":" return null;"},{"lineNumber":259,"author":{"gitId":"-"},"content":" }"},{"lineNumber":260,"author":{"gitId":"-"},"content":""},{"lineNumber":261,"author":{"gitId":"-"},"content":" const existingLabel \u003d LabelService.getRequiredLabelsAsArray(true).find("},{"lineNumber":262,"author":{"gitId":"-"},"content":" (label) \u003d\u003e label.labelValue \u003d\u003d\u003d labelValue \u0026\u0026 label.labelCategory \u003d\u003d\u003d labelCategory"},{"lineNumber":263,"author":{"gitId":"-"},"content":" );"},{"lineNumber":264,"author":{"gitId":"-"},"content":""},{"lineNumber":265,"author":{"gitId":"-"},"content":" if (existingLabel \u003d\u003d\u003d undefined || existingLabel.labelDefinition \u003d\u003d\u003d undefined) {"},{"lineNumber":266,"author":{"gitId":"-"},"content":" return null;"},{"lineNumber":267,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":268,"author":{"gitId":"-"},"content":" return existingLabel.labelDefinition;"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }"},{"lineNumber":270,"author":{"gitId":"-"},"content":" }"},{"lineNumber":271,"author":{"gitId":"-"},"content":""},{"lineNumber":272,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":273,"author":{"gitId":"-"},"content":" * Ensures that the repo has the required labels."},{"lineNumber":274,"author":{"gitId":"-"},"content":" * Compares the actual labels in the repo with the required labels. If an required label is missing,"},{"lineNumber":275,"author":{"gitId":"-"},"content":" * it is added to the repo. If the required label exists but the label color is not as expected,"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * the color is updated. Does not delete actual labels that do not match required labels."},{"lineNumber":277,"author":{"gitId":"-"},"content":" * i.e., the repo might have more labels than the required labels after this operation."},{"lineNumber":278,"author":{"gitId":"-"},"content":" * @param actualLabels: labels in the repo."},{"lineNumber":279,"author":{"gitId":"-"},"content":" * @param requiredLabels: required labels."},{"lineNumber":280,"author":{"gitId":"-"},"content":" */"},{"lineNumber":281,"author":{"gitId":"-"},"content":" private ensureRepoHasRequiredLabels(actualLabels: Label[], requiredLabels: Label[]): void {"},{"lineNumber":282,"author":{"gitId":"-"},"content":" requiredLabels.forEach((label) \u003d\u003e {"},{"lineNumber":283,"author":{"gitId":"-"},"content":" // Finds for a label that has the same name as a required label."},{"lineNumber":284,"author":{"gitId":"-"},"content":" const nameMatchedLabels: Label[] \u003d actualLabels.filter((remoteLabel) \u003d\u003e remoteLabel.getFormattedName() \u003d\u003d\u003d label.getFormattedName());"},{"lineNumber":285,"author":{"gitId":"-"},"content":""},{"lineNumber":286,"author":{"gitId":"-"},"content":" if (nameMatchedLabels.length \u003d\u003d\u003d 0) {"},{"lineNumber":287,"author":{"gitId":"-"},"content":" // Create new Label (Could not find a label with the same name \u0026 category)"},{"lineNumber":288,"author":{"gitId":"-"},"content":" this.githubService.createLabel(label.getFormattedName(), label.labelColor);"},{"lineNumber":289,"author":{"gitId":"-"},"content":" } else if (nameMatchedLabels.length \u003d\u003d\u003d 1) {"},{"lineNumber":290,"author":{"gitId":"-"},"content":" if (nameMatchedLabels[0].equals(label)) {"},{"lineNumber":291,"author":{"gitId":"-"},"content":" // the label exists exactly as expected -\u003e do nothing"},{"lineNumber":292,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":293,"author":{"gitId":"-"},"content":" // the label exists but the color does not match -\u003e update the required label\u0027s color to the one in github"},{"lineNumber":294,"author":{"gitId":"-"},"content":" LabelService.updateRequiredLabelColor(nameMatchedLabels[0].labelColor, label);"},{"lineNumber":295,"author":{"gitId":"-"},"content":" }"},{"lineNumber":296,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":297,"author":{"gitId":"-"},"content":" throw new Error(\u0027Unexpected error: the repo has multiple labels with the same name \u0027 + label.getFormattedName());"},{"lineNumber":298,"author":{"gitId":"-"},"content":" }"},{"lineNumber":299,"author":{"gitId":"-"},"content":" });"},{"lineNumber":300,"author":{"gitId":"-"},"content":" }"},{"lineNumber":301,"author":{"gitId":"-"},"content":""},{"lineNumber":302,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":303,"author":{"gitId":"-"},"content":" * Converts a GithubLabel object to Label object."},{"lineNumber":304,"author":{"gitId":"-"},"content":" */"},{"lineNumber":305,"author":{"gitId":"-"},"content":" toLabel(githubLabel: GithubLabel) {"},{"lineNumber":306,"author":{"gitId":"-"},"content":" let labelCategory: string;"},{"lineNumber":307,"author":{"gitId":"-"},"content":" let labelValue: string;"},{"lineNumber":308,"author":{"gitId":"-"},"content":""},{"lineNumber":309,"author":{"gitId":"-"},"content":" const containsDotRegex \u003d /\\./g;"},{"lineNumber":310,"author":{"gitId":"-"},"content":" const rawName: string \u003d String(githubLabel.name);"},{"lineNumber":311,"author":{"gitId":"-"},"content":" [labelCategory, labelValue] \u003d containsDotRegex.test(rawName) ? githubLabel.name.split(\u0027.\u0027) : [undefined, rawName];"},{"lineNumber":312,"author":{"gitId":"-"},"content":""},{"lineNumber":313,"author":{"gitId":"-"},"content":" const labelColor \u003d githubLabel.color;"},{"lineNumber":314,"author":{"gitId":"-"},"content":" const labelDefinition: string \u003d String(githubLabel.description);"},{"lineNumber":315,"author":{"gitId":"-"},"content":""},{"lineNumber":316,"author":{"gitId":"-"},"content":" return new Label(labelCategory, labelValue, labelColor, labelDefinition);"},{"lineNumber":317,"author":{"gitId":"-"},"content":" }"},{"lineNumber":318,"author":{"gitId":"-"},"content":""},{"lineNumber":319,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":320,"author":{"gitId":"-"},"content":" * Returns true if the given color is considered \"dark\""},{"lineNumber":321,"author":{"gitId":"-"},"content":" * The color is considered \"dark\" if its luminance is less than COLOR_DARKNESS_THRESHOLD"},{"lineNumber":322,"author":{"gitId":"-"},"content":" * @param inputColor: the color"},{"lineNumber":323,"author":{"gitId":"-"},"content":" */"},{"lineNumber":324,"author":{"gitId":"-"},"content":" isDarkColor(inputColor: string): boolean {"},{"lineNumber":325,"author":{"gitId":"-"},"content":" const COLOR \u003d inputColor.charAt(0) \u003d\u003d\u003d \u0027#\u0027 ? inputColor.substring(1, 7) : inputColor;"},{"lineNumber":326,"author":{"gitId":"-"},"content":" const R \u003d parseInt(COLOR.substring(0, 2), 16);"},{"lineNumber":327,"author":{"gitId":"-"},"content":" const G \u003d parseInt(COLOR.substring(2, 4), 16);"},{"lineNumber":328,"author":{"gitId":"-"},"content":" const B \u003d parseInt(COLOR.substring(4, 6), 16);"},{"lineNumber":329,"author":{"gitId":"-"},"content":" const RGB \u003d [R / 255, G / 255, B / 255];"},{"lineNumber":330,"author":{"gitId":"-"},"content":" const LINEAR_RGB \u003d RGB.map((col) \u003d\u003e {"},{"lineNumber":331,"author":{"gitId":"-"},"content":" if (col \u003c\u003d 0.03928) {"},{"lineNumber":332,"author":{"gitId":"-"},"content":" return col / 12.92;"},{"lineNumber":333,"author":{"gitId":"-"},"content":" }"},{"lineNumber":334,"author":{"gitId":"-"},"content":" return Math.pow((col + 0.055) / 1.055, 2.4);"},{"lineNumber":335,"author":{"gitId":"-"},"content":" });"},{"lineNumber":336,"author":{"gitId":"-"},"content":" // Calculate the luminance of the color"},{"lineNumber":337,"author":{"gitId":"-"},"content":" const LUMINANCE \u003d 0.2126 * LINEAR_RGB[0] + 0.7152 * LINEAR_RGB[1] + 0.0722 * LINEAR_RGB[2];"},{"lineNumber":338,"author":{"gitId":"-"},"content":" // The color is \"dark\" if the luminance is lower than the threshold"},{"lineNumber":339,"author":{"gitId":"-"},"content":" return LUMINANCE \u003c COLOR_DARKNESS_THRESHOLD;"},{"lineNumber":340,"author":{"gitId":"-"},"content":" }"},{"lineNumber":341,"author":{"gitId":"-"},"content":""},{"lineNumber":342,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":343,"author":{"gitId":"-"},"content":" * Returns a css style for the label to use"},{"lineNumber":344,"author":{"gitId":"-"},"content":" * @param color: the color of the label"},{"lineNumber":345,"author":{"gitId":"-"},"content":" * @return the style with background-color in rgb"},{"lineNumber":346,"author":{"gitId":"-"},"content":" * @throws exception if input is an invalid color code"},{"lineNumber":347,"author":{"gitId":"-"},"content":" */"},{"lineNumber":348,"author":{"gitId":"-"},"content":" setLabelStyle(color: string, display: string \u003d \u0027inline-flex\u0027) {"},{"lineNumber":349,"author":{"gitId":"-"},"content":" let textColor: string;"},{"lineNumber":350,"author":{"gitId":"-"},"content":""},{"lineNumber":351,"author":{"gitId":"-"},"content":" textColor \u003d this.isDarkColor(color) ? COLOR_WHITE : COLOR_BLACK;"},{"lineNumber":352,"author":{"gitId":"-"},"content":""},{"lineNumber":353,"author":{"gitId":"-"},"content":" const styles \u003d {"},{"lineNumber":354,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${color}`,"},{"lineNumber":355,"author":{"gitId":"-"},"content":" \u0027border-radius\u0027: \u00273px\u0027,"},{"lineNumber":356,"author":{"gitId":"-"},"content":" cursor: \u0027default\u0027,"},{"lineNumber":357,"author":{"gitId":"-"},"content":" padding: \u00273px\u0027,"},{"lineNumber":358,"author":{"gitId":"-"},"content":" color: `#${textColor}`,"},{"lineNumber":359,"author":{"gitId":"-"},"content":" \u0027font-weight\u0027: \u0027410\u0027,"},{"lineNumber":360,"author":{"gitId":"-"},"content":" display: display"},{"lineNumber":361,"author":{"gitId":"-"},"content":" };"},{"lineNumber":362,"author":{"gitId":"-"},"content":""},{"lineNumber":363,"author":{"gitId":"-"},"content":" return styles;"},{"lineNumber":364,"author":{"gitId":"-"},"content":" }"},{"lineNumber":365,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":10,"-":355}},{"path":"src/app/core/services/loading.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { DOCUMENT } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import {"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ComponentFactory,"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ComponentFactoryResolver,"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ComponentRef,"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" Inject,"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" Injectable,"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" Injector,"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" OnDestroy,"},{"lineNumber":10,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" Renderer2,"},{"lineNumber":11,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ViewContainerRef"},{"lineNumber":12,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"} from \u0027@angular/core\u0027;"},{"lineNumber":13,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ThemePalette } from \u0027@angular/material/core\u0027;"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatProgressSpinnerDefaultOptions, MatSpinner, ProgressSpinnerMode } from \u0027@angular/material/progress-spinner\u0027;"},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { BehaviorSubject } from \u0027rxjs\u0027;"},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { pairwise } from \u0027rxjs/operators\u0027;"},{"lineNumber":17,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":18,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"// Use a builder pattern to build the type of spinner we want our"},{"lineNumber":19,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"// loading spinner to display. This listens to prompts given by components"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"// to either display or hide the spinner, by inserting it directly into the"},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"// container that it has to be inserted into."},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"@Injectable({"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"})"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"export class LoadingService implements OnDestroy {"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private isLoading \u003d new BehaviorSubject\u003cboolean\u003e(false);"},{"lineNumber":27,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" readonly spinnerFactory: ComponentFactory\u003cMatSpinner\u003e;"},{"lineNumber":28,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" spinnerContainerRef: ViewContainerRef | null \u003d null;"},{"lineNumber":29,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" spinnerComponentRef: ComponentRef\u003cMatSpinner\u003e | null \u003d null;"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private animationMode: ProgressSpinnerMode \u003d \u0027indeterminate\u0027;"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private options?: MatProgressSpinnerDefaultOptions;"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private spinnerTheme: ThemePalette \u003d \u0027primary\u0027;"},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private classList: string[] \u003d [];"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor("},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" readonly componentFactoryResolver: ComponentFactoryResolver,"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" readonly injector: Injector,"},{"lineNumber":39,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" @Inject(DOCUMENT) private document: Document"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ) {"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerFactory \u003d this.componentFactoryResolver.resolveComponentFactory(MatSpinner);"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Subscribe to changes"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isLoading"},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .pipe(pairwise())"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .subscribe(([previousIsLoading, currentIsLoading]) \u003d\u003e this.onIsLoadingChange(previousIsLoading, currentIsLoading));"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ngOnDestroy(): void {"},{"lineNumber":49,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isLoading.complete();"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.detachSpinnerFromDom();"},{"lineNumber":51,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerContainerRef \u003d null;"},{"lineNumber":52,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":53,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" addAnimationMode(animationMode: ProgressSpinnerMode) {"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.animationMode \u003d animationMode;"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this;"},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":58,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":59,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" addSpinnerOptions(options: MatProgressSpinnerDefaultOptions) {"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.options \u003d options;"},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this;"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" addViewContainerRef(spinnerContainerRef: ViewContainerRef) {"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (spinnerContainerRef \u003d\u003d\u003d undefined) {"},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this;"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":68,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerContainerRef \u003d spinnerContainerRef;"},{"lineNumber":69,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this;"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":71,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" addTheme(theme: ThemePalette) {"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerTheme \u003d theme;"},{"lineNumber":74,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this;"},{"lineNumber":75,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" addCssClasses(classNames: string[]) {"},{"lineNumber":78,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.classList \u003d [];"},{"lineNumber":79,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.classList.push(...classNames);"},{"lineNumber":80,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this;"},{"lineNumber":81,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":82,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":83,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" showLoader(): void {"},{"lineNumber":84,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isLoading.next(true);"},{"lineNumber":85,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":86,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":87,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" hideLoader(): void {"},{"lineNumber":88,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isLoading.next(false);"},{"lineNumber":89,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":90,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":91,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Event listener that attaches or detaches the spinner from"},{"lineNumber":92,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // the DOM based on"},{"lineNumber":93,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private onIsLoadingChange(previousIsLoading: boolean, currentIsLoading: boolean): void {"},{"lineNumber":94,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // No change, don\u0027t edit the dom"},{"lineNumber":95,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (previousIsLoading \u003d\u003d\u003d currentIsLoading) {"},{"lineNumber":96,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return;"},{"lineNumber":97,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":98,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":99,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (currentIsLoading) {"},{"lineNumber":100,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this.attachSpinnerToDom();"},{"lineNumber":101,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":102,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":103,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this.detachSpinnerFromDom();"},{"lineNumber":104,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":105,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":106,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Attaches spinner to the DOM"},{"lineNumber":107,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private attachSpinnerToDom(): void {"},{"lineNumber":108,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (this.spinnerComponentRef !\u003d\u003d null) {"},{"lineNumber":109,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return;"},{"lineNumber":110,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":111,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":112,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const injector \u003d this.getInjector();"},{"lineNumber":113,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":114,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const spinnerRef \u003d this.createSpinner(injector);"},{"lineNumber":115,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":116,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (!this.isAttachableToDocument()) {"},{"lineNumber":117,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerContainerRef.insert(spinnerRef.hostView);"},{"lineNumber":118,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" } else if (spinnerRef.location.nativeElement instanceof Node) {"},{"lineNumber":119,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.document.body.appendChild(spinnerRef.location.nativeElement);"},{"lineNumber":120,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":121,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":122,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" spinnerRef.changeDetectorRef.detectChanges();"},{"lineNumber":123,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":124,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerComponentRef \u003d spinnerRef;"},{"lineNumber":125,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":126,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":127,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Detaches spinner from DOM"},{"lineNumber":128,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private detachSpinnerFromDom(): void {"},{"lineNumber":129,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (this.spinnerComponentRef \u003d\u003d\u003d null) {"},{"lineNumber":130,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return;"},{"lineNumber":131,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":132,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":133,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (!this.isAttachableToDocument()) {"},{"lineNumber":134,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerContainerRef.remove();"},{"lineNumber":135,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" } else if (this.spinnerComponentRef.location.nativeElement instanceof Node) {"},{"lineNumber":136,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.document.body.removeChild(this.spinnerComponentRef.location.nativeElement);"},{"lineNumber":137,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":138,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":139,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerComponentRef.destroy();"},{"lineNumber":140,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerComponentRef \u003d null;"},{"lineNumber":141,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return;"},{"lineNumber":142,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":143,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":144,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Gets the Injector to be used to create the spinner"},{"lineNumber":145,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private getInjector(): Injector {"},{"lineNumber":146,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (this.isAttachableToDocument()) {"},{"lineNumber":147,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this.injector;"},{"lineNumber":148,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":149,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this.spinnerContainerRef.injector;"},{"lineNumber":150,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":151,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":152,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Checks if the spinner is to be attached to the Document or a"},{"lineNumber":153,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // container"},{"lineNumber":154,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private isAttachableToDocument(): boolean {"},{"lineNumber":155,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this.spinnerContainerRef \u003d\u003d\u003d null;"},{"lineNumber":156,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":157,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":158,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Creates and formats the spinner to the specification provided"},{"lineNumber":159,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private createSpinner(injector: Injector) {"},{"lineNumber":160,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const spinnerRef \u003d this.spinnerFactory.create(injector);"},{"lineNumber":161,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (this.options) {"},{"lineNumber":162,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" spinnerRef.instance.diameter \u003d this.options.diameter;"},{"lineNumber":163,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" spinnerRef.instance.strokeWidth \u003d this.options.strokeWidth;"},{"lineNumber":164,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":165,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" spinnerRef.instance.mode \u003d this.animationMode;"},{"lineNumber":166,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" spinnerRef.instance.color \u003d this.spinnerTheme;"},{"lineNumber":167,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const renderer \u003d spinnerRef.injector.get(Renderer2);"},{"lineNumber":168,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" for (const classname of this.classList) {"},{"lineNumber":169,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" renderer.addClass(spinnerRef.location.nativeElement, classname);"},{"lineNumber":170,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":171,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return spinnerRef;"},{"lineNumber":172,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":173,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":173}},{"path":"src/app/core/services/logging.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { downloadAsTextFile } from \u0027../../shared/lib/file-download\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":6,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":7,"author":{"gitId":"-"},"content":"})"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Responsible for logging events and errors while the application is"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * running to ease debugging for CATcher developers and maintainers."},{"lineNumber":12,"author":{"gitId":"-"},"content":" */"},{"lineNumber":13,"author":{"gitId":"-"},"content":"export class LoggingService {"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private logger: Console;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private isInSession \u003d false;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private readonly LOG_KEY \u003d \u0027CATcher-Log\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private readonly LOG_FILE_NAME \u003d \u0027CATcher-log.txt\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public readonly LOG_START_HEADER \u003d `\u003d\u003d\u003d\u003d\u003d\u003d New CATcher v${AppConfig.version} Session Log \u003d\u003d\u003d\u003d\u003d\u003d`;"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public readonly LOG_COUNT_LIMIT \u003d 4;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public readonly SESSION_LOG_SEPARATOR \u003d \u0027\\n\u0027.repeat(2); // More new-lines added for clarity."},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor() {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" this.logger \u003d console;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.startSession();"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.isInSession \u003d false;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Configures loggging Session if Logging Service is not"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * in session."},{"lineNumber":35,"author":{"gitId":"-"},"content":" */"},{"lineNumber":36,"author":{"gitId":"-"},"content":" startSession() {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // Prevents the OAuth Pop-up window from being able to"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // start a session."},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (window.opener \u0026\u0026 window.opener !\u003d\u003d window) {"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!this.isInSession) {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.isInSession \u003d true;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.initializeLogCache();"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" private initializeLogCache() {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.setCachedLog(this.getTrimmedLogCache(this.getCachedLog(), this.LOG_COUNT_LIMIT));"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Trims the existing Log in the browser\u0027s cache to a select number"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * of Sessions if necessary."},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param sessionCount The number of Session Logs to preserve in the cache"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private getTrimmedLogCache(currentLog: string, sessionCount: number): string {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" const currentDateTime \u003d new Date().toLocaleString();"},{"lineNumber":59,"author":{"gitId":"-"},"content":" const logHeaderWithDateTime \u003d `${this.LOG_START_HEADER}\\n${currentDateTime}`;"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Check if Trimming is Necessary"},{"lineNumber":62,"author":{"gitId":"-"},"content":" const numberOfSessions: number \u003d"},{"lineNumber":63,"author":{"gitId":"-"},"content":" currentLog \u003d\u003d null"},{"lineNumber":64,"author":{"gitId":"-"},"content":" ? 0"},{"lineNumber":65,"author":{"gitId":"-"},"content":" : currentLog.split(\u0027\\n\u0027).filter((currentLogLine: string) \u003d\u003e currentLogLine.includes(this.LOG_START_HEADER)).length;"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (numberOfSessions \u003d\u003d\u003d 0) {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return logHeaderWithDateTime;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (numberOfSessions \u003c sessionCount) {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return `${currentLog}${this.SESSION_LOG_SEPARATOR}${logHeaderWithDateTime}`;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" const separatedSessionLogs: string[] \u003d currentLog"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .split(`${this.LOG_START_HEADER}`)"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .filter((line: string) \u003d\u003e !!line)"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .map((line: string) \u003d\u003e `${this.LOG_START_HEADER}\\n${line.trim()}`);"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" separatedSessionLogs.splice(0, separatedSessionLogs.length - sessionCount + 1);"},{"lineNumber":81,"author":{"gitId":"-"},"content":" separatedSessionLogs.push(`${logHeaderWithDateTime}`);"},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" return separatedSessionLogs.join(this.SESSION_LOG_SEPARATOR);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" getCachedLog(): string {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return localStorage.getItem(this.LOG_KEY);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" private setCachedLog(updatedLog: string): void {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" localStorage.setItem(this.LOG_KEY, updatedLog);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":" private updateLog(...updatedLog: any[]): void {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" this.setCachedLog(`${this.getCachedLog()}\\n${updatedLog.toString()}`);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" exportLogFile() {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" const log: string \u003d this.getCachedLog();"},{"lineNumber":100,"author":{"gitId":"-"},"content":" downloadAsTextFile(this.LOG_FILE_NAME, log);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":""},{"lineNumber":103,"author":{"gitId":"-"},"content":" info(...params: any[]) {"},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.updateLog(params);"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.logger.info(params);"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" error(...params: any[]) {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.updateLog(params);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.logger.error(params);"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }"},{"lineNumber":112,"author":{"gitId":"-"},"content":""},{"lineNumber":113,"author":{"gitId":"-"},"content":" warn(...params: any[]) {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.updateLog(params);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.logger.warn(params);"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }"},{"lineNumber":117,"author":{"gitId":"-"},"content":""},{"lineNumber":118,"author":{"gitId":"-"},"content":" debug(...params: any[]) {"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (AppConfig.production) {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Log file will not be updated to keep log messages short"},{"lineNumber":123,"author":{"gitId":"-"},"content":" this.logger.debug(params);"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":123}},{"path":"src/app/core/services/mocks/mock.auth.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgZone } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Title } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { BehaviorSubject } from \u0027rxjs\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { uuid } from \u0027../../../shared/lib/uuid\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { DataService } from \u0027../data.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../github.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../githubevent.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../issue.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../logging.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../phase.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../user.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"export enum AuthState {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u0027NotAuthenticated\u0027,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u0027AwaitingAuthentication\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u0027ConfirmOAuthUser\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u0027Authenticated\u0027"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":23,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":24,"author":{"gitId":"-"},"content":"})"},{"lineNumber":25,"author":{"gitId":"-"},"content":"export class MockAuthService {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" authStateSource \u003d new BehaviorSubject(AuthState.NotAuthenticated);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" currentAuthState \u003d this.authStateSource.asObservable();"},{"lineNumber":28,"author":{"gitId":"-"},"content":" accessToken \u003d new BehaviorSubject(undefined);"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":31,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private ngZone: NgZone,"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private dataService: DataService,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private titleService: Title,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private logger: LoggingService"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Will store the OAuth token."},{"lineNumber":45,"author":{"gitId":"-"},"content":" */"},{"lineNumber":46,"author":{"gitId":"-"},"content":" storeOAuthAccessToken(token: string) {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.githubService.storeOAuthAccessToken(token);"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.accessToken.next(token);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" reset(): void {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.accessToken.next(undefined);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e this.router.navigate([\u0027\u0027]));"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" logOut(): void {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.githubService.reset();"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.userService.reset();"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.issueService.reset(true);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.phaseService.reset();"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.dataService.reset();"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.githubEventService.reset();"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.logger.reset();"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.setLandingPageTitle();"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.issueService.setIssueTeamFilter(\u0027All Teams\u0027);"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.reset();"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":" isAuthenticated(): boolean {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this.authStateSource.getValue() \u003d\u003d\u003d AuthState.Authenticated;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" changeAuthState(newAuthState: AuthState) {"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (newAuthState \u003d\u003d\u003d AuthState.Authenticated) {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" const sessionId \u003d `${Date.now()}-${uuid()}`;"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.issueService.setSessionId(sessionId);"},{"lineNumber":78,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`MockAuthService: Successfully authenticated with session: ${sessionId}`);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.authStateSource.next(newAuthState);"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" setTitleWithPhaseDetail(): void {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" const appSetting \u003d require(\u0027../../../../../package.json\u0027);"},{"lineNumber":85,"author":{"gitId":"-"},"content":" const title \u003d `${appSetting.name} ${appSetting.version} - ${this.phaseService.getPhaseDetail()}`;"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.titleService.setTitle(title);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" setLandingPageTitle(): void {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" const appSetting \u003d require(\u0027../../../../../package.json\u0027);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" const title \u003d `${appSetting.name} ${appSetting.version}`;"},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.titleService.setTitle(title);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Will start the Github OAuth web flow process by issuing \u0027FabricatedToken\u0027."},{"lineNumber":97,"author":{"gitId":"-"},"content":" */"},{"lineNumber":98,"author":{"gitId":"-"},"content":" startOAuthProcess() {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.accessToken.next(\u0027FabricatedToken\u0027);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":100}},{"path":"src/app/core/services/mocks/mock.issue.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { BehaviorSubject, forkJoin, Observable, of, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { catchError, map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { generateIssueWithRandomData } from \u0027../../../../../tests/constants/githubissue.constants\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027../../models/comment.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubComment } from \u0027../../models/github/github-comment.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027../../models/github/github-issue.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../../models/github/github-label.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { HiddenData } from \u0027../../models/hidden-data.model\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { IssueDispute } from \u0027../../models/issue-dispute.model\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { Issue, Issues, STATUS } from \u0027../../models/issue.model\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../models/phase.model\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { DataService } from \u0027../data.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../github.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../phase.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":19,"author":{"gitId":"-"},"content":"})"},{"lineNumber":20,"author":{"gitId":"-"},"content":"export class MockIssueService {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" static readonly POLL_INTERVAL \u003d 5000; // 5 seconds"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" issues: Issues;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" issues$: BehaviorSubject\u003cIssue[]\u003e;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" private sessionId: string;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private issueTeamFilter \u003d \u0027All Teams\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private issuesPollSubscription: Subscription;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /** Whether the IssueService is downloading the data from Github*/"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public isLoading \u003d new BehaviorSubject\u003cboolean\u003e(false);"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService, private phaseService: PhaseService, private dataService: DataService) {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.issues$ \u003d new BehaviorSubject(new Array\u003cIssue\u003e());"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Loads Issues and Prevents polling during testing."},{"lineNumber":38,"author":{"gitId":"-"},"content":" */"},{"lineNumber":39,"author":{"gitId":"-"},"content":" startPollIssues() {"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (this.issuesPollSubscription \u003d\u003d\u003d undefined) {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (this.issues$.getValue().length \u003d\u003d\u003d 0) {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.isLoading.next(true);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.issuesPollSubscription \u003d of(this.reloadAllIssues()).subscribe((result) \u003d\u003e this.isLoading.next(false));"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" stopPollIssues() {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (this.issuesPollSubscription) {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.issuesPollSubscription.unsubscribe();"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.issuesPollSubscription \u003d undefined;"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Simply returns the existing issue, to simulate polling."},{"lineNumber":58,"author":{"gitId":"-"},"content":" */"},{"lineNumber":59,"author":{"gitId":"-"},"content":" pollIssue(issueId: number): Observable\u003cIssue\u003e {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return of(this.issues[issueId]);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" reloadAllIssues() {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this.initializeData();"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" getIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (this.issues \u003d\u003d\u003d undefined) {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this.getLatestIssue(id);"},{"lineNumber":70,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return of(this.issues[id]);"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" getLatestIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return this.githubService.fetchIssueGraphql(id).pipe("},{"lineNumber":77,"author":{"gitId":"-"},"content":" map((response: GithubIssue) \u003d\u003e {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.createAndSaveIssueModel(response);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return this.issues[id];"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":81,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return of(this.issues[id]);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" })"},{"lineNumber":84,"author":{"gitId":"-"},"content":" );"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" createIssue(title: string, description: string, severity: string, type: string): Observable\u003cIssue\u003e {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" const labelsArray \u003d [this.createLabel(\u0027severity\u0027, severity), this.createLabel(\u0027type\u0027, type)];"},{"lineNumber":89,"author":{"gitId":"-"},"content":" const hiddenData \u003d new Map([[\u0027session\u0027, this.sessionId]]);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" const issueDescription \u003d HiddenData.embedDataIntoString(description, hiddenData);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this.githubService"},{"lineNumber":92,"author":{"gitId":"-"},"content":" .createIssue(title, issueDescription, labelsArray)"},{"lineNumber":93,"author":{"gitId":"-"},"content":" .pipe(map((response: GithubIssue) \u003d\u003e this.createIssueModel(response)));"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }"},{"lineNumber":95,"author":{"gitId":"-"},"content":""},{"lineNumber":96,"author":{"gitId":"-"},"content":" updateIssue(issue: Issue): Observable\u003cIssue\u003e {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" const assignees \u003d this.phaseService.currentPhase \u003d\u003d\u003d Phase.phaseModeration ? [] : issue.assignees;"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return this.githubService"},{"lineNumber":99,"author":{"gitId":"-"},"content":" .updateIssue(issue.id, issue.title, this.createGithubIssueDescription(issue), this.createLabelsForIssue(issue), assignees)"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":101,"author":{"gitId":"-"},"content":" map((response: GithubIssue) \u003d\u003e {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" response.comments \u003d issue.githubComments;"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return this.createIssueModel(response);"},{"lineNumber":104,"author":{"gitId":"-"},"content":" })"},{"lineNumber":105,"author":{"gitId":"-"},"content":" );"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" updateIssueWithComment(issue: Issue, issueComment: IssueComment): Observable\u003cIssue\u003e {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return this.githubService.updateIssueComment(issueComment).pipe("},{"lineNumber":110,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((updatedComment: GithubComment) \u003d\u003e {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" issue.githubComments \u003d [updatedComment, ...issue.githubComments.filter((c) \u003d\u003e c.id !\u003d\u003d updatedComment.id)];"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return this.updateIssue(issue);"},{"lineNumber":113,"author":{"gitId":"-"},"content":" })"},{"lineNumber":114,"author":{"gitId":"-"},"content":" );"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":" updateTesterResponse(issue: Issue, issueComment: IssueComment): Observable\u003cIssue\u003e {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" const isTesterResponseExist \u003d this.issues[issue.id].testerResponses;"},{"lineNumber":119,"author":{"gitId":"-"},"content":" const commentApiToCall \u003d isTesterResponseExist"},{"lineNumber":120,"author":{"gitId":"-"},"content":" ? this.githubService.updateIssueComment(issueComment)"},{"lineNumber":121,"author":{"gitId":"-"},"content":" : this.githubService.createIssueComment(issue.id, issueComment.description);"},{"lineNumber":122,"author":{"gitId":"-"},"content":""},{"lineNumber":123,"author":{"gitId":"-"},"content":" const issueClone \u003d issue.clone(this.phaseService.currentPhase);"},{"lineNumber":124,"author":{"gitId":"-"},"content":" issueClone.status \u003d STATUS.Done;"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":" return forkJoin([commentApiToCall, this.updateIssue(issueClone)]).pipe("},{"lineNumber":127,"author":{"gitId":"-"},"content":" map((responses) \u003d\u003e {"},{"lineNumber":128,"author":{"gitId":"-"},"content":" const [githubComment, issue] \u003d responses;"},{"lineNumber":129,"author":{"gitId":"-"},"content":" issue.updateTesterResponse(githubComment);"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" })"},{"lineNumber":132,"author":{"gitId":"-"},"content":" );"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }"},{"lineNumber":134,"author":{"gitId":"-"},"content":""},{"lineNumber":135,"author":{"gitId":"-"},"content":" updateTutorResponse(issue: Issue, issueComment: IssueComment): Observable\u003cIssue\u003e {"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return forkJoin([this.githubService.updateIssueComment(issueComment), this.updateIssue(issue)]).pipe("},{"lineNumber":137,"author":{"gitId":"-"},"content":" map((responses) \u003d\u003e {"},{"lineNumber":138,"author":{"gitId":"-"},"content":" const [githubComment, issue] \u003d responses;"},{"lineNumber":139,"author":{"gitId":"-"},"content":" issue.updateDispute(githubComment);"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":141,"author":{"gitId":"-"},"content":" })"},{"lineNumber":142,"author":{"gitId":"-"},"content":" );"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }"},{"lineNumber":144,"author":{"gitId":"-"},"content":""},{"lineNumber":145,"author":{"gitId":"-"},"content":" createTeamResponse(issue: Issue): Observable\u003cIssue\u003e {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" const teamResponse \u003d issue.createGithubTeamResponse();"},{"lineNumber":147,"author":{"gitId":"-"},"content":" return this.githubService.createIssueComment(issue.id, teamResponse).pipe("},{"lineNumber":148,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((githubComment: GithubComment) \u003d\u003e {"},{"lineNumber":149,"author":{"gitId":"-"},"content":" issue.githubComments \u003d [githubComment, ...issue.githubComments.filter((c) \u003d\u003e c.id !\u003d\u003d githubComment.id)];"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return this.updateIssue(issue);"},{"lineNumber":151,"author":{"gitId":"-"},"content":" })"},{"lineNumber":152,"author":{"gitId":"-"},"content":" );"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }"},{"lineNumber":154,"author":{"gitId":"-"},"content":""},{"lineNumber":155,"author":{"gitId":"-"},"content":" createTutorResponse(issue: Issue, response: string): Observable\u003cIssue\u003e {"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return forkJoin([this.githubService.createIssueComment(issue.id, response), this.updateIssue(issue)]).pipe("},{"lineNumber":157,"author":{"gitId":"-"},"content":" map((responses) \u003d\u003e {"},{"lineNumber":158,"author":{"gitId":"-"},"content":" const [githubComment, issue] \u003d responses;"},{"lineNumber":159,"author":{"gitId":"-"},"content":" issue.updateDispute(githubComment);"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":161,"author":{"gitId":"-"},"content":" })"},{"lineNumber":162,"author":{"gitId":"-"},"content":" );"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }"},{"lineNumber":164,"author":{"gitId":"-"},"content":""},{"lineNumber":165,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * This function will create a github representation of issue\u0027s description. Given the issue model, it will piece together the different"},{"lineNumber":167,"author":{"gitId":"-"},"content":" * attributes to create the github\u0027s description."},{"lineNumber":168,"author":{"gitId":"-"},"content":" *"},{"lineNumber":169,"author":{"gitId":"-"},"content":" */"},{"lineNumber":170,"author":{"gitId":"-"},"content":" private createGithubIssueDescription(issue: Issue): string {"},{"lineNumber":171,"author":{"gitId":"-"},"content":" switch (this.phaseService.currentPhase) {"},{"lineNumber":172,"author":{"gitId":"-"},"content":" case Phase.phaseModeration:"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return ("},{"lineNumber":174,"author":{"gitId":"-"},"content":" `# Issue Description\\n${issue.createGithubIssueDescription()}\\n# Team\\\u0027s Response\\n${issue.teamResponse}\\n ` +"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // `## State the duplicated issue here, if any\\n${issue.duplicateOf ? `Duplicate of #${issue.duplicateOf}` : `--`}\\n` +"},{"lineNumber":176,"author":{"gitId":"-"},"content":" `# Disputes\\n\\n${this.getIssueDisputeString(issue.issueDisputes)}\\n`"},{"lineNumber":177,"author":{"gitId":"-"},"content":" );"},{"lineNumber":178,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return issue.createGithubIssueDescription();"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }"},{"lineNumber":182,"author":{"gitId":"-"},"content":""},{"lineNumber":183,"author":{"gitId":"-"},"content":" private getIssueDisputeString(issueDisputes: IssueDispute[]): string {"},{"lineNumber":184,"author":{"gitId":"-"},"content":" let issueDisputeString \u003d \u0027\u0027;"},{"lineNumber":185,"author":{"gitId":"-"},"content":" for (const issueDispute of issueDisputes) {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" issueDisputeString +\u003d issueDispute.toString();"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }"},{"lineNumber":188,"author":{"gitId":"-"},"content":" return issueDisputeString;"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }"},{"lineNumber":190,"author":{"gitId":"-"},"content":""},{"lineNumber":191,"author":{"gitId":"-"},"content":" deleteIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return this.githubService.closeIssue(id).pipe("},{"lineNumber":193,"author":{"gitId":"-"},"content":" map((response: GithubIssue) \u003d\u003e {"},{"lineNumber":194,"author":{"gitId":"-"},"content":" const deletedIssue \u003d this.createIssueModel(response);"},{"lineNumber":195,"author":{"gitId":"-"},"content":" this.deleteFromLocalStore(deletedIssue);"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return deletedIssue;"},{"lineNumber":197,"author":{"gitId":"-"},"content":" })"},{"lineNumber":198,"author":{"gitId":"-"},"content":" );"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }"},{"lineNumber":200,"author":{"gitId":"-"},"content":""},{"lineNumber":201,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * This function will update the issue\u0027s state of the application. This function needs to be called whenever a issue is deleted."},{"lineNumber":203,"author":{"gitId":"-"},"content":" */"},{"lineNumber":204,"author":{"gitId":"-"},"content":" deleteFromLocalStore(issueToDelete: Issue) {"},{"lineNumber":205,"author":{"gitId":"-"},"content":" const { [issueToDelete.id]: issueToRemove, ...withoutIssueToRemove } \u003d this.issues;"},{"lineNumber":206,"author":{"gitId":"-"},"content":" this.issues \u003d withoutIssueToRemove;"},{"lineNumber":207,"author":{"gitId":"-"},"content":" this.issues$.next(Object.values(this.issues));"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }"},{"lineNumber":209,"author":{"gitId":"-"},"content":""},{"lineNumber":210,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * This function will update the issue\u0027s state of the application. This function needs to be called whenever a issue is added/updated."},{"lineNumber":212,"author":{"gitId":"-"},"content":" */"},{"lineNumber":213,"author":{"gitId":"-"},"content":" updateLocalStore(issueToUpdate: Issue) {"},{"lineNumber":214,"author":{"gitId":"-"},"content":" this.issues \u003d {"},{"lineNumber":215,"author":{"gitId":"-"},"content":" ...this.issues,"},{"lineNumber":216,"author":{"gitId":"-"},"content":" [issueToUpdate.id]: issueToUpdate"},{"lineNumber":217,"author":{"gitId":"-"},"content":" };"},{"lineNumber":218,"author":{"gitId":"-"},"content":" this.issues$.next(Object.values(this.issues));"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }"},{"lineNumber":220,"author":{"gitId":"-"},"content":""},{"lineNumber":221,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":222,"author":{"gitId":"-"},"content":" * Check whether the issue has been responded in the phase 2/3."},{"lineNumber":223,"author":{"gitId":"-"},"content":" */"},{"lineNumber":224,"author":{"gitId":"-"},"content":" hasTeamResponse(issueId: number): boolean {"},{"lineNumber":225,"author":{"gitId":"-"},"content":" return !!this.issues[issueId].teamResponse;"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }"},{"lineNumber":227,"author":{"gitId":"-"},"content":""},{"lineNumber":228,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Obtain an observable containing an array of issues that are duplicates of the parentIssue."},{"lineNumber":230,"author":{"gitId":"-"},"content":" */"},{"lineNumber":231,"author":{"gitId":"-"},"content":" getDuplicateIssuesFor(parentIssue: Issue): Observable\u003cIssue[]\u003e {"},{"lineNumber":232,"author":{"gitId":"-"},"content":" return this.issues$.pipe("},{"lineNumber":233,"author":{"gitId":"-"},"content":" map((issues) \u003d\u003e {"},{"lineNumber":234,"author":{"gitId":"-"},"content":" return issues.filter((issue) \u003d\u003e {"},{"lineNumber":235,"author":{"gitId":"-"},"content":" return issue.duplicateOf \u003d\u003d\u003d parentIssue.id;"},{"lineNumber":236,"author":{"gitId":"-"},"content":" });"},{"lineNumber":237,"author":{"gitId":"-"},"content":" })"},{"lineNumber":238,"author":{"gitId":"-"},"content":" );"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }"},{"lineNumber":240,"author":{"gitId":"-"},"content":""},{"lineNumber":241,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":242,"author":{"gitId":"-"},"content":" this.issues \u003d undefined;"},{"lineNumber":243,"author":{"gitId":"-"},"content":" this.sessionId \u003d undefined;"},{"lineNumber":244,"author":{"gitId":"-"},"content":" this.issues$.next(new Array\u003cIssue\u003e());"},{"lineNumber":245,"author":{"gitId":"-"},"content":""},{"lineNumber":246,"author":{"gitId":"-"},"content":" this.stopPollIssues();"},{"lineNumber":247,"author":{"gitId":"-"},"content":" this.isLoading.complete();"},{"lineNumber":248,"author":{"gitId":"-"},"content":" this.isLoading \u003d new BehaviorSubject\u003cboolean\u003e(false);"},{"lineNumber":249,"author":{"gitId":"-"},"content":" }"},{"lineNumber":250,"author":{"gitId":"-"},"content":""},{"lineNumber":251,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":252,"author":{"gitId":"-"},"content":" * Populates store with random issues depending on the current test phase."},{"lineNumber":253,"author":{"gitId":"-"},"content":" */"},{"lineNumber":254,"author":{"gitId":"-"},"content":" private initializeData(): Observable\u003cIssue[]\u003e {"},{"lineNumber":255,"author":{"gitId":"-"},"content":" if (this.issues !\u003d null) {"},{"lineNumber":256,"author":{"gitId":"-"},"content":" return of(Object.values(this.issues));"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }"},{"lineNumber":258,"author":{"gitId":"-"},"content":""},{"lineNumber":259,"author":{"gitId":"-"},"content":" const NUM_ISSUES \u003d 10;"},{"lineNumber":260,"author":{"gitId":"-"},"content":" const generatedIssues: Array\u003cGithubIssue\u003e \u003d [];"},{"lineNumber":261,"author":{"gitId":"-"},"content":""},{"lineNumber":262,"author":{"gitId":"-"},"content":" switch (this.phaseService.currentPhase) {"},{"lineNumber":263,"author":{"gitId":"-"},"content":" case Phase.phaseBugReporting:"},{"lineNumber":264,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c NUM_ISSUES; i++) {"},{"lineNumber":265,"author":{"gitId":"-"},"content":" generatedIssues.push(generateIssueWithRandomData());"},{"lineNumber":266,"author":{"gitId":"-"},"content":" }"},{"lineNumber":267,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }"},{"lineNumber":269,"author":{"gitId":"-"},"content":""},{"lineNumber":270,"author":{"gitId":"-"},"content":" for (const issue of generatedIssues) {"},{"lineNumber":271,"author":{"gitId":"-"},"content":" this.createAndSaveIssueModel(issue);"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }"},{"lineNumber":273,"author":{"gitId":"-"},"content":""},{"lineNumber":274,"author":{"gitId":"-"},"content":" return of(Object.values(this.issues));"},{"lineNumber":275,"author":{"gitId":"-"},"content":" }"},{"lineNumber":276,"author":{"gitId":"-"},"content":""},{"lineNumber":277,"author":{"gitId":"-"},"content":" private createAndSaveIssueModel(githubIssue: GithubIssue): boolean {"},{"lineNumber":278,"author":{"gitId":"-"},"content":" const issue \u003d this.createIssueModel(githubIssue);"},{"lineNumber":279,"author":{"gitId":"-"},"content":" this.updateLocalStore(issue);"},{"lineNumber":280,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }"},{"lineNumber":282,"author":{"gitId":"-"},"content":""},{"lineNumber":283,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":284,"author":{"gitId":"-"},"content":" * Given an issue model, create the necessary labels for github."},{"lineNumber":285,"author":{"gitId":"-"},"content":" */"},{"lineNumber":286,"author":{"gitId":"-"},"content":" private createLabelsForIssue(issue: Issue): string[] {"},{"lineNumber":287,"author":{"gitId":"-"},"content":" const result \u003d [];"},{"lineNumber":288,"author":{"gitId":"-"},"content":""},{"lineNumber":289,"author":{"gitId":"-"},"content":" if (this.phaseService.currentPhase !\u003d\u003d Phase.phaseBugReporting \u0026\u0026 this.phaseService.currentPhase !\u003d\u003d Phase.phaseTesterResponse) {"},{"lineNumber":290,"author":{"gitId":"-"},"content":" const studentTeam \u003d issue.teamAssigned.id.split(\u0027-\u0027);"},{"lineNumber":291,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027tutorial\u0027, `${studentTeam[0]}-${studentTeam[1]}`), this.createLabel(\u0027team\u0027, studentTeam[2]));"},{"lineNumber":292,"author":{"gitId":"-"},"content":" }"},{"lineNumber":293,"author":{"gitId":"-"},"content":""},{"lineNumber":294,"author":{"gitId":"-"},"content":" if (issue.severity) {"},{"lineNumber":295,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027severity\u0027, issue.severity));"},{"lineNumber":296,"author":{"gitId":"-"},"content":" }"},{"lineNumber":297,"author":{"gitId":"-"},"content":""},{"lineNumber":298,"author":{"gitId":"-"},"content":" if (issue.type) {"},{"lineNumber":299,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027type\u0027, issue.type));"},{"lineNumber":300,"author":{"gitId":"-"},"content":" }"},{"lineNumber":301,"author":{"gitId":"-"},"content":""},{"lineNumber":302,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (issue.response) {"},{"lineNumber":303,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" result.push(this.createLabel(\u0027response\u0027, issue.response));"},{"lineNumber":304,"author":{"gitId":"-"},"content":" }"},{"lineNumber":305,"author":{"gitId":"-"},"content":""},{"lineNumber":306,"author":{"gitId":"-"},"content":" if (issue.duplicated) {"},{"lineNumber":307,"author":{"gitId":"-"},"content":" result.push(\u0027duplicate\u0027);"},{"lineNumber":308,"author":{"gitId":"-"},"content":" }"},{"lineNumber":309,"author":{"gitId":"-"},"content":""},{"lineNumber":310,"author":{"gitId":"-"},"content":" if (issue.status) {"},{"lineNumber":311,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027status\u0027, issue.status));"},{"lineNumber":312,"author":{"gitId":"-"},"content":" }"},{"lineNumber":313,"author":{"gitId":"-"},"content":""},{"lineNumber":314,"author":{"gitId":"-"},"content":" if (issue.pending) {"},{"lineNumber":315,"author":{"gitId":"-"},"content":" if (+issue.pending \u003e 0) {"},{"lineNumber":316,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027pending\u0027, issue.pending));"},{"lineNumber":317,"author":{"gitId":"-"},"content":" }"},{"lineNumber":318,"author":{"gitId":"-"},"content":" }"},{"lineNumber":319,"author":{"gitId":"-"},"content":""},{"lineNumber":320,"author":{"gitId":"-"},"content":" if (issue.unsure) {"},{"lineNumber":321,"author":{"gitId":"-"},"content":" result.push(\u0027unsure\u0027);"},{"lineNumber":322,"author":{"gitId":"-"},"content":" }"},{"lineNumber":323,"author":{"gitId":"-"},"content":""},{"lineNumber":324,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":325,"author":{"gitId":"-"},"content":" }"},{"lineNumber":326,"author":{"gitId":"-"},"content":""},{"lineNumber":327,"author":{"gitId":"-"},"content":" private createLabel(prepend: string, value: string) {"},{"lineNumber":328,"author":{"gitId":"-"},"content":" return `${prepend}.${value}`;"},{"lineNumber":329,"author":{"gitId":"-"},"content":" }"},{"lineNumber":330,"author":{"gitId":"-"},"content":""},{"lineNumber":331,"author":{"gitId":"-"},"content":" private extractTeamIdFromGithubIssue(githubIssue: GithubIssue): string {"},{"lineNumber":332,"author":{"gitId":"-"},"content":" return githubIssue.findLabel(GithubLabel.LABELS.tutorial).concat(\u0027-\u0027).concat(githubIssue.findLabel(GithubLabel.LABELS.team));"},{"lineNumber":333,"author":{"gitId":"-"},"content":" }"},{"lineNumber":334,"author":{"gitId":"-"},"content":""},{"lineNumber":335,"author":{"gitId":"-"},"content":" private createIssueModel(githubIssue: GithubIssue): Issue {"},{"lineNumber":336,"author":{"gitId":"-"},"content":" switch (this.phaseService.currentPhase) {"},{"lineNumber":337,"author":{"gitId":"-"},"content":" case Phase.phaseBugReporting:"},{"lineNumber":338,"author":{"gitId":"-"},"content":" return Issue.createPhaseBugReportingIssue(githubIssue);"},{"lineNumber":339,"author":{"gitId":"-"},"content":" case Phase.phaseTeamResponse:"},{"lineNumber":340,"author":{"gitId":"-"},"content":" return Issue.createPhaseTeamResponseIssue(githubIssue, this.dataService.getTeam(this.extractTeamIdFromGithubIssue(githubIssue)));"},{"lineNumber":341,"author":{"gitId":"-"},"content":" case Phase.phaseTesterResponse:"},{"lineNumber":342,"author":{"gitId":"-"},"content":" return Issue.createPhaseTesterResponseIssue(githubIssue);"},{"lineNumber":343,"author":{"gitId":"-"},"content":" case Phase.phaseModeration:"},{"lineNumber":344,"author":{"gitId":"-"},"content":" return Issue.createPhaseModerationIssue(githubIssue, this.dataService.getTeam(this.extractTeamIdFromGithubIssue(githubIssue)));"},{"lineNumber":345,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":346,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":347,"author":{"gitId":"-"},"content":" }"},{"lineNumber":348,"author":{"gitId":"-"},"content":" }"},{"lineNumber":349,"author":{"gitId":"-"},"content":""},{"lineNumber":350,"author":{"gitId":"-"},"content":" setIssueTeamFilter(filterValue: string) {"},{"lineNumber":351,"author":{"gitId":"-"},"content":" if (filterValue) {"},{"lineNumber":352,"author":{"gitId":"-"},"content":" this.issueTeamFilter \u003d filterValue;"},{"lineNumber":353,"author":{"gitId":"-"},"content":" }"},{"lineNumber":354,"author":{"gitId":"-"},"content":" }"},{"lineNumber":355,"author":{"gitId":"-"},"content":""},{"lineNumber":356,"author":{"gitId":"-"},"content":" setSessionId(sessionId: string) {"},{"lineNumber":357,"author":{"gitId":"-"},"content":" this.sessionId \u003d sessionId;"},{"lineNumber":358,"author":{"gitId":"-"},"content":" }"},{"lineNumber":359,"author":{"gitId":"-"},"content":""},{"lineNumber":360,"author":{"gitId":"-"},"content":" getIssueTeamFilter(): string {"},{"lineNumber":361,"author":{"gitId":"-"},"content":" return this.issueTeamFilter;"},{"lineNumber":362,"author":{"gitId":"-"},"content":" }"},{"lineNumber":363,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":5,"-":358}},{"path":"src/app/core/services/phase.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Observable, pipe } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { map, mergeMap, retry, tap } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { throwIfFalse } from \u0027../../shared/lib/custom-ops\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../models/phase.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { assertSessionDataIntegrity, SessionData } from \u0027../models/session.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027./label.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { RepoCreatorService } from \u0027./repo-creator.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"export const SESSION_AVALIABILITY_FIX_FAILED \u003d \u0027Session Availability Fix failed.\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"export const PhaseDescription \u003d {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" [Phase.phaseBugReporting]: \u0027Bug Reporting Phase\u0027,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" [Phase.phaseTeamResponse]: \"Team\u0027s Response Phase\","},{"lineNumber":16,"author":{"gitId":"-"},"content":" [Phase.phaseTesterResponse]: \"Tester\u0027s Response Phase\","},{"lineNumber":17,"author":{"gitId":"-"},"content":" [Phase.phaseModeration]: \u0027Moderation Phase\u0027"},{"lineNumber":18,"author":{"gitId":"-"},"content":"};"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":21,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":22,"author":{"gitId":"-"},"content":"})"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Responsible for managing the current phase of CATcher as well as the"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * current session data and repository details related to the session."},{"lineNumber":27,"author":{"gitId":"-"},"content":" */"},{"lineNumber":28,"author":{"gitId":"-"},"content":"export class PhaseService {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public currentPhase: Phase;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private repoName: string;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private orgName: string;"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" public sessionData: SessionData;"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" private phaseRepoOwners \u003d {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" phaseBugReporting: \u0027\u0027,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" phaseTeamResponse: \u0027\u0027,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" phaseTesterResponse: \u0027\u0027,"},{"lineNumber":39,"author":{"gitId":"-"},"content":" phaseModeration: \u0027\u0027"},{"lineNumber":40,"author":{"gitId":"-"},"content":" };"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService, private labelService: LabelService, private repoCreatorService: RepoCreatorService) {}"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Stores the location of the repositories belonging to"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * each phase of the application."},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @param org - name of organization."},{"lineNumber":47,"author":{"gitId":"-"},"content":" * @param user - name of user."},{"lineNumber":48,"author":{"gitId":"-"},"content":" */"},{"lineNumber":49,"author":{"gitId":"-"},"content":" setPhaseOwners(org: string, user: string): void {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.orgName \u003d org;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.phaseRepoOwners.phaseBugReporting \u003d user;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.phaseRepoOwners.phaseTeamResponse \u003d org;"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.phaseRepoOwners.phaseTesterResponse \u003d user;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.phaseRepoOwners.phaseModeration \u003d org;"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns the name of the owner of a given phase."},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @param phase"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */"},{"lineNumber":61,"author":{"gitId":"-"},"content":" getPhaseOwner(phase: string): string {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this.phaseRepoOwners[phase];"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" fetchSessionData(): Observable\u003cSessionData\u003e {"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return this.githubService.fetchSettingsFile().pipe(map((data) \u003d\u003e data as SessionData));"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Will fetch session data and update phase service with it."},{"lineNumber":71,"author":{"gitId":"-"},"content":" */"},{"lineNumber":72,"author":{"gitId":"-"},"content":" storeSessionData(): Observable\u003cvoid\u003e {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this.fetchSessionData().pipe("},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertSessionDataIntegrity(),"},{"lineNumber":75,"author":{"gitId":"-"},"content":" map((sessionData: SessionData) \u003d\u003e {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" localStorage.setItem(\u0027sessionData\u0027, JSON.stringify(sessionData));"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.updateSessionParameters(sessionData);"},{"lineNumber":78,"author":{"gitId":"-"},"content":" })"},{"lineNumber":79,"author":{"gitId":"-"},"content":" );"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Retrieves session data from local storage and update phase service with it."},{"lineNumber":84,"author":{"gitId":"-"},"content":" */"},{"lineNumber":85,"author":{"gitId":"-"},"content":" setSessionData() {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" const sessionData \u003d JSON.parse(localStorage.getItem(\u0027sessionData\u0027));"},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.updateSessionParameters(sessionData);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Determines the github\u0027s level of repo permission required for the phase."},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Ref: https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps#available-scopes"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */"},{"lineNumber":94,"author":{"gitId":"-"},"content":" githubRepoPermissionLevel(): string {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (this.sessionData.openPhases.includes(Phase.phaseModeration)) {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return \u0027repo\u0027;"},{"lineNumber":97,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return \u0027public_repo\u0027;"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Checks if the necessary repository is available and creates it if the permissions are available."},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @param sessionData"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */"},{"lineNumber":106,"author":{"gitId":"-"},"content":" verifySessionAvailability(sessionData: SessionData): Observable\u003cboolean\u003e {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return this.githubService.isRepositoryPresent(this.phaseRepoOwners[this.currentPhase], sessionData[this.currentPhase]);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Stores session data and sets current session\u0027s phase."},{"lineNumber":112,"author":{"gitId":"-"},"content":" * @param sessionData"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */"},{"lineNumber":114,"author":{"gitId":"-"},"content":" updateSessionParameters(sessionData: SessionData) {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.sessionData \u003d sessionData;"},{"lineNumber":116,"author":{"gitId":"-"},"content":" this.currentPhase \u003d Phase[sessionData.openPhases[0]];"},{"lineNumber":117,"author":{"gitId":"-"},"content":" this.repoName \u003d sessionData[sessionData.openPhases[0]];"},{"lineNumber":118,"author":{"gitId":"-"},"content":" this.githubService.storePhaseDetails(this.phaseRepoOwners[this.currentPhase], this.repoName);"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Ensures that the necessary data for the current session is available"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * and synchronized with the remote server."},{"lineNumber":124,"author":{"gitId":"-"},"content":" */"},{"lineNumber":125,"author":{"gitId":"-"},"content":" sessionSetup(): Observable\u003cany\u003e {"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // Permission Caching Mechanism to prevent repeating permission request."},{"lineNumber":127,"author":{"gitId":"-"},"content":" let isSessionFixPermissionGranted \u003d false;"},{"lineNumber":128,"author":{"gitId":"-"},"content":" const cacheSessionFixPermission \u003d () \u003d\u003e {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return pipe("},{"lineNumber":130,"author":{"gitId":"-"},"content":" tap((sessionFixPermission: boolean | null) \u003d\u003e {"},{"lineNumber":131,"author":{"gitId":"-"},"content":" isSessionFixPermissionGranted \u003d sessionFixPermission ? sessionFixPermission : false;"},{"lineNumber":132,"author":{"gitId":"-"},"content":" })"},{"lineNumber":133,"author":{"gitId":"-"},"content":" );"},{"lineNumber":134,"author":{"gitId":"-"},"content":" };"},{"lineNumber":135,"author":{"gitId":"-"},"content":""},{"lineNumber":136,"author":{"gitId":"-"},"content":" return this.fetchSessionData().pipe("},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertSessionDataIntegrity(),"},{"lineNumber":138,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((sessionData: SessionData) \u003d\u003e {"},{"lineNumber":139,"author":{"gitId":"-"},"content":" this.updateSessionParameters(sessionData);"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return this.verifySessionAvailability(sessionData);"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":142,"author":{"gitId":"-"},"content":" this.repoCreatorService.requestRepoCreationPermissions(this.currentPhase, this.sessionData[this.currentPhase]),"},{"lineNumber":143,"author":{"gitId":"-"},"content":" cacheSessionFixPermission(),"},{"lineNumber":144,"author":{"gitId":"-"},"content":" this.repoCreatorService.verifyRepoCreationPermissions(this.currentPhase),"},{"lineNumber":145,"author":{"gitId":"-"},"content":" this.repoCreatorService.attemptRepoCreation(this.sessionData[this.currentPhase]),"},{"lineNumber":146,"author":{"gitId":"-"},"content":" this.repoCreatorService.verifyRepoCreation(this.getPhaseOwner(this.currentPhase), this.sessionData[this.currentPhase]),"},{"lineNumber":147,"author":{"gitId":"-"},"content":" throwIfFalse("},{"lineNumber":148,"author":{"gitId":"-"},"content":" (isSessionCreated: boolean) \u003d\u003e isSessionCreated,"},{"lineNumber":149,"author":{"gitId":"-"},"content":" () \u003d\u003e new Error(SESSION_AVALIABILITY_FIX_FAILED)"},{"lineNumber":150,"author":{"gitId":"-"},"content":" ),"},{"lineNumber":151,"author":{"gitId":"-"},"content":" this.labelService.syncLabels(this.isTeamOrModerationPhase()),"},{"lineNumber":152,"author":{"gitId":"-"},"content":" retry(1) // Retry once, to handle edge case where GitHub API cannot immediately confirm existence of the newly created repo."},{"lineNumber":153,"author":{"gitId":"-"},"content":" );"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }"},{"lineNumber":155,"author":{"gitId":"-"},"content":""},{"lineNumber":156,"author":{"gitId":"-"},"content":" private isTeamOrModerationPhase(): boolean {"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return this.currentPhase \u003d\u003d\u003d Phase.phaseTeamResponse || this.currentPhase \u003d\u003d\u003d Phase.phaseModeration;"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }"},{"lineNumber":159,"author":{"gitId":"-"},"content":""},{"lineNumber":160,"author":{"gitId":"-"},"content":" public getPhaseDetail() {"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return this.orgName.concat(\u0027/\u0027).concat(this.repoName);"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" this.currentPhase \u003d null;"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }"},{"lineNumber":167,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":165}},{"path":"src/app/core/services/repo-creator.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatDialog, MatDialogRef } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Observable, of, pipe, UnaryFunction } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { mergeMap, tap } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../models/phase.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { UserRole } from \u0027../models/user.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { SessionFixConfirmationComponent } from \u0027./session-fix-confirmation/session-fix-confirmation.component\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./user.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"export const MISSING_REQUIRED_REPO \u003d \u0027You cannot proceed without the required repository.\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"export const CURRENT_PHASE_REPO_CLOSED \u003d \"Current Phase\u0027s Repository has not been opened.\";"},{"lineNumber":13,"author":{"gitId":"-"},"content":"export const BUG_REPORTING_INVALID_ROLE \u003d \"\u0027Bug-Reporting Phase\u0027s repository initialisation is only available to Students.\u0027\";"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":16,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":17,"author":{"gitId":"-"},"content":"})"},{"lineNumber":18,"author":{"gitId":"-"},"content":"export class RepoCreatorService {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService, private userService: UserService, private repoCreationConfirmationDialog: MatDialog) {}"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Prompts user to allow CATcher to create a repo, if repo does not"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * exist and current phase is the bug reporting phase."},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param currentPhase the current phase of the session."},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param phaseRepo the name of the specified repository."},{"lineNumber":26,"author":{"gitId":"-"},"content":" */"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public requestRepoCreationPermissions("},{"lineNumber":28,"author":{"gitId":"-"},"content":" currentPhase: Phase,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" phaseRepo: string"},{"lineNumber":30,"author":{"gitId":"-"},"content":" ): UnaryFunction\u003cObservable\u003cboolean\u003e, Observable\u003cboolean | null\u003e\u003e {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return pipe("},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((isRepoPresent: boolean) \u003d\u003e {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!isRepoPresent \u0026\u0026 currentPhase \u003d\u003d\u003d Phase.phaseBugReporting) {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return this.openRepoCreationConfirmation(phaseRepo);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return of(null);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }"},{"lineNumber":38,"author":{"gitId":"-"},"content":" })"},{"lineNumber":39,"author":{"gitId":"-"},"content":" );"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Launches the SessionFixConfirmation Dialog."},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @param phaseRepo the name of the specified repository."},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @return Observable\u003cboolean\u003e - Representing user\u0027s permission grant."},{"lineNumber":46,"author":{"gitId":"-"},"content":" */"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private openRepoCreationConfirmation(phaseRepo: string): Observable\u003cboolean\u003e {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" const dialogRef: MatDialogRef\u003cSessionFixConfirmationComponent\u003e \u003d this.repoCreationConfirmationDialog.open("},{"lineNumber":49,"author":{"gitId":"-"},"content":" SessionFixConfirmationComponent,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" data: { user: this.userService.currentUser.loginId, repoName: phaseRepo }"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":" );"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return dialogRef.afterClosed();"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Checks if the current phase and current user role match the given permissions"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * for the user to create the phase repository if deemed necessary"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param currentPhase the current phase of the session."},{"lineNumber":61,"author":{"gitId":"-"},"content":" */"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public verifyRepoCreationPermissions(currentPhase: Phase): UnaryFunction\u003cObservable\u003cboolean | null\u003e, Observable\u003cboolean | null\u003e\u003e {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return pipe("},{"lineNumber":64,"author":{"gitId":"-"},"content":" tap((repoCreationPermission: boolean | null) \u003d\u003e {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (repoCreationPermission \u003d\u003d\u003d null) {"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (repoCreationPermission \u003d\u003d\u003d false) {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new Error(MISSING_REQUIRED_REPO);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" } else if (currentPhase !\u003d\u003d Phase.phaseBugReporting) {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new Error(CURRENT_PHASE_REPO_CLOSED);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } else if (this.userService.currentUser.role !\u003d\u003d UserRole.Student) {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new Error(BUG_REPORTING_INVALID_ROLE);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"-"},"content":" })"},{"lineNumber":77,"author":{"gitId":"-"},"content":" );"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Attempts to create the repository if permissions have been given to do so."},{"lineNumber":82,"author":{"gitId":"-"},"content":" * @param phaseRepo the name of the specified repository."},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @return - Dummy Observable to give the API sometime to propagate if the creation of the new"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * repository is needed since the API Call used here does not return any response."},{"lineNumber":85,"author":{"gitId":"-"},"content":" */"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public attemptRepoCreation(phaseRepo: string): UnaryFunction\u003cObservable\u003cboolean | null\u003e, Observable\u003cboolean | null\u003e\u003e {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return pipe("},{"lineNumber":88,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((repoCreationPermission: boolean | null) \u003d\u003e {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (repoCreationPermission \u003d\u003d\u003d null) {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // No Session Fix Necessary"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return of(null);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.githubService.createRepository(phaseRepo);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new Observable\u003cboolean\u003e((subscriber) \u003d\u003e {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e subscriber.next(true), 1000);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" });"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"-"},"content":" })"},{"lineNumber":99,"author":{"gitId":"-"},"content":" );"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Checks if the specified repository has been created."},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @param phaseOwner the user or organization holding the specified repository."},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @param phaseRepo the name of the specified repository."},{"lineNumber":106,"author":{"gitId":"-"},"content":" */"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public verifyRepoCreation(phaseOwner: string, phaseRepo: string): UnaryFunction\u003cObservable\u003cboolean | null\u003e, Observable\u003cboolean\u003e\u003e {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return pipe("},{"lineNumber":109,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((isFixAttempted: boolean | null) \u003d\u003e {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!isFixAttempted) {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // If no fix has been attempted, there is no need to verify fix outcome."},{"lineNumber":112,"author":{"gitId":"-"},"content":" return of(true);"},{"lineNumber":113,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // Verify that Repository has been created if a fix attempt has occurred."},{"lineNumber":115,"author":{"gitId":"-"},"content":" return this.githubService.isRepositoryPresent(phaseOwner, phaseRepo);"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }"},{"lineNumber":117,"author":{"gitId":"-"},"content":" })"},{"lineNumber":118,"author":{"gitId":"-"},"content":" );"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":4,"-":116}},{"path":"src/app/core/services/session-fix-confirmation/session-fix-confirmation.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"export interface RepositoryData {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" user: string;"},{"lineNumber":6,"author":{"gitId":"-"},"content":" repoName: string;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":10,"author":{"gitId":"-"},"content":" selector: \u0027app-session-fix-confirmation\u0027,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" templateUrl: \u0027./session-fix-confirmation.component.html\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./session-fix-confirmation.component.css\u0027]"},{"lineNumber":13,"author":{"gitId":"-"},"content":"})"},{"lineNumber":14,"author":{"gitId":"-"},"content":"export class SessionFixConfirmationComponent implements OnInit {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" constructor(public dialogRef: MatDialogRef\u003cSessionFixConfirmationComponent\u003e, @Inject(MAT_DIALOG_DATA) public data: RepositoryData) {}"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":17}},{"path":"src/app/core/services/user.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { filter, map, throwIfEmpty } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../models/github-user.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Team } from \u0027../models/team.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { User, UserRole } from \u0027../models/user.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { DataService } from \u0027./data.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":12,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":13,"author":{"gitId":"-"},"content":"})"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Responsible for creation of users and teams within the CATcher application."},{"lineNumber":17,"author":{"gitId":"-"},"content":" */"},{"lineNumber":18,"author":{"gitId":"-"},"content":"export class UserService {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public currentUser: User;"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor(private githubService: GithubService, private dataService: DataService, private logger: LoggingService) {}"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Get the authenticated user if it exist."},{"lineNumber":25,"author":{"gitId":"-"},"content":" */"},{"lineNumber":26,"author":{"gitId":"-"},"content":" getAuthenticatedUser(): Observable\u003cGithubUser\u003e {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return this.githubService.fetchAuthenticatedUser().pipe("},{"lineNumber":28,"author":{"gitId":"-"},"content":" map((data: GithubUser) \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return data;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" })"},{"lineNumber":31,"author":{"gitId":"-"},"content":" );"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" createUserModel(userLoginId: string): Observable\u003cUser\u003e {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return this.dataService.getDataFile().pipe("},{"lineNumber":36,"author":{"gitId":"-"},"content":" map((jsonData: {}) \u003d\u003e {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.currentUser \u003d this.createUser(jsonData, userLoginId);"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return this.currentUser;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":40,"author":{"gitId":"-"},"content":" filter((user) \u003d\u003e user !\u003d\u003d null),"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throwIfEmpty(() \u003d\u003e new Error(\u0027Unauthorized user.\u0027))"},{"lineNumber":42,"author":{"gitId":"-"},"content":" );"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(\u0027UserService: Clearing current user\u0027);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.currentUser \u003d undefined;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" private createUser(data: {}, userLoginId: string): User {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" const lowerCaseUserLoginId \u003d userLoginId.toLowerCase();"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" const userRole \u003d this.parseUserRole(data, lowerCaseUserLoginId);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" switch (userRole) {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" case UserRole.Student:"},{"lineNumber":56,"author":{"gitId":"-"},"content":" const teamId \u003d data[DataService.STUDENTS_ALLOCATION][lowerCaseUserLoginId][DataService.TEAM_ID];"},{"lineNumber":57,"author":{"gitId":"-"},"content":" const studentTeam \u003d this.createTeamModel(data[DataService.TEAM_STRUCTURE], teamId);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return \u003cUser\u003e{ loginId: userLoginId, role: userRole, team: studentTeam };"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" case UserRole.Tutor:"},{"lineNumber":61,"author":{"gitId":"-"},"content":" const tutorTeams: Array\u003cTeam\u003e \u003d Object.keys("},{"lineNumber":62,"author":{"gitId":"-"},"content":" data[DataService.TUTORS_ALLOCATION][lowerCaseUserLoginId]"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ).map((allocatedTeamId: string) \u003d\u003e this.createTeamModel(data[DataService.TEAM_STRUCTURE], allocatedTeamId));"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" return \u003cUser\u003e{ loginId: userLoginId, role: userRole, allocatedTeams: tutorTeams };"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" case UserRole.Admin:"},{"lineNumber":68,"author":{"gitId":"-"},"content":" const studentTeams: Array\u003cTeam\u003e \u003d Object.keys("},{"lineNumber":69,"author":{"gitId":"-"},"content":" data[DataService.ADMINS_ALLOCATION][lowerCaseUserLoginId]"},{"lineNumber":70,"author":{"gitId":"-"},"content":" ).map((allocatedTeamId: string) \u003d\u003e this.createTeamModel(data[DataService.TEAM_STRUCTURE], allocatedTeamId));"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":" return \u003cUser\u003e{ loginId: userLoginId, role: userRole, allocatedTeams: studentTeams };"},{"lineNumber":73,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return null;"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" private createTeamModel(teamData: {}, teamId: string): Team {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" const teammates: Array\u003cUser\u003e \u003d Object.values(teamData[teamId]).map("},{"lineNumber":80,"author":{"gitId":"-"},"content":" (teammate: string) \u003d\u003e \u003cUser\u003e{ loginId: teammate, role: UserRole.Student }"},{"lineNumber":81,"author":{"gitId":"-"},"content":" );"},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new Team({ id: teamId, teamMembers: teammates });"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * To be used to parse the JSON data containing data pertaining to the user role."},{"lineNumber":88,"author":{"gitId":"-"},"content":" *"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @return NULL if user is unauthorized, meaning that no role is specified for the user."},{"lineNumber":90,"author":{"gitId":"-"},"content":" * else the the role with the highest access rights will be returned."},{"lineNumber":91,"author":{"gitId":"-"},"content":" */"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private parseUserRole(data: {}, userLoginId: string): UserRole {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" let userRole: UserRole;"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (data[DataService.ROLES][DataService.STUDENTS] \u0026\u0026 data[DataService.ROLES][DataService.STUDENTS][[userLoginId]]) {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" userRole \u003d UserRole.Student;"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (data[DataService.ROLES][DataService.TUTORS] \u0026\u0026 data[DataService.ROLES][DataService.TUTORS][[userLoginId]]) {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" userRole \u003d UserRole.Tutor;"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (data[DataService.ROLES][DataService.ADMINS] \u0026\u0026 data[DataService.ROLES][DataService.ADMINS][[userLoginId]]) {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" userRole \u003d UserRole.Admin;"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return userRole;"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":3,"-":102}},{"path":"src/app/shared/action-toasters/action-toasters.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { CommonModule } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MaterialModule } from \u0027../material.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { UndoActionComponent } from \u0027./undo-action/undo-action.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":7,"author":{"gitId":"-"},"content":" imports: [CommonModule, MaterialModule],"},{"lineNumber":8,"author":{"gitId":"-"},"content":" declarations: [UndoActionComponent],"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" exports: [UndoActionComponent]"},{"lineNumber":10,"author":{"gitId":"-"},"content":"})"},{"lineNumber":11,"author":{"gitId":"-"},"content":"export class ActionToasterModule {}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":10}},{"path":"src/app/shared/action-toasters/undo-action/undo-action.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatSnackBarRef, MAT_SNACK_BAR_DATA } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"-"},"content":" selector: \u0027app-undo-action\u0027,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" templateUrl: \u0027./undo-action.component.html\u0027"},{"lineNumber":7,"author":{"gitId":"-"},"content":"})"},{"lineNumber":8,"author":{"gitId":"-"},"content":"export class UndoActionComponent {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" constructor(public snackBarRef: MatSnackBarRef\u003cUndoActionComponent\u003e, @Inject(MAT_SNACK_BAR_DATA) public data: any) {}"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":9}},{"path":"src/app/shared/comment-editor/comment-editor.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cform [formGroup]\u003d\"commentForm\" style\u003d\"min-height: 350px\"\u003e"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-tab-group class\u003d\"mat-elevation-z1\" animationDuration\u003d\"0ms\" (selectedTabChange)\u003d\"commentField.setValue(commentTextArea.value)\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-tab label\u003d\"Write\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cdiv"},{"lineNumber":5,"author":{"gitId":"-"},"content":" #dropArea"},{"lineNumber":6,"author":{"gitId":"-"},"content":" class\u003d\"tab-content\""},{"lineNumber":7,"author":{"gitId":"-"},"content":" (dragleave)\u003d\"onDragExit($event)\""},{"lineNumber":8,"author":{"gitId":"-"},"content":" (dragenter)\u003d\"onDragEnter($event)\""},{"lineNumber":9,"author":{"gitId":"-"},"content":" (drop)\u003d\"onDrop($event)\""},{"lineNumber":10,"author":{"gitId":"-"},"content":" (dragover)\u003d\"enableFileDrop($event)\""},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003capp-markdown-toolbar [forTextAreaId]\u003d\"this.id\"\u003e\u003c/app-markdown-toolbar\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"outline\" style\u003d\"width: 100%\"\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cmat-label\u003e\u003c/mat-label\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003ctextarea"},{"lineNumber":16,"author":{"gitId":"-"},"content":" (paste)\u003d\"onPaste($event)\""},{"lineNumber":17,"author":{"gitId":"-"},"content":" (keydown)\u003d\"onKeyPress($event)\""},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" (beforeinput)\u003d\"handleBeforeInputChange($event)\""},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" (input)\u003d\"handleInputChange($event)\""},{"lineNumber":20,"author":{"gitId":"-"},"content":" #commentTextArea"},{"lineNumber":21,"author":{"gitId":"-"},"content":" (dragover)\u003d\"disableCaretMovement($event)\""},{"lineNumber":22,"author":{"gitId":"-"},"content":" id\u003d\"{{ this.id }}\""},{"lineNumber":23,"author":{"gitId":"-"},"content":" formControlName\u003d\"{{ this.id }}\""},{"lineNumber":24,"author":{"gitId":"-"},"content":" matInput"},{"lineNumber":25,"author":{"gitId":"-"},"content":" cdkTextareaAutosize"},{"lineNumber":26,"author":{"gitId":"-"},"content":" #autosize\u003d\"cdkTextareaAutosize\""},{"lineNumber":27,"author":{"gitId":"-"},"content":" cdkAutosizeMinRows\u003d\"10\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" cdkAutosizeMaxRows\u003d\"20\""},{"lineNumber":29,"author":{"gitId":"-"},"content":" class\u003d\"text-input-area\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" placeholder\u003d\"{{ this.placeholderText }}\""},{"lineNumber":31,"author":{"gitId":"-"},"content":" maxlength\u003d\"{{ this.maxLength }}\""},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003e\u003c/textarea\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cmat-error *ngIf\u003d\"commentField.errors \u0026\u0026 commentField.errors[\u0027required\u0027] \u0026\u0026 commentField.touched\"\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Description required."},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/mat-error\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cmat-error *ngIf\u003d\"commentField.errors \u0026\u0026 commentField.errors[\u0027maxLength\u0027]\"\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Description cannot exceed {{ maxLength }} characters."},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/mat-error\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cmat-hint *ngIf\u003d\"commentField.value?.length \u003e\u003d maxLength - 50\"\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" {{ maxLength - commentField.value?.length }} character(s) remaining."},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/mat-hint\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"drag-and-drop\"\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"!isInErrorState\"\u003e Attach files by dragging \u0026 dropping or select them by clicking here. \u003c/span\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"isInErrorState\" class\u003d\"error\"\u003e {{ uploadErrorMessage }} \u003c/span\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cinput"},{"lineNumber":47,"author":{"gitId":"-"},"content":" #fileInput"},{"lineNumber":48,"author":{"gitId":"-"},"content":" [disabled]\u003d\"this.commentField.disabled\""},{"lineNumber":49,"author":{"gitId":"-"},"content":" [accept]\u003d\"SUPPORTED_FILE_TYPES\""},{"lineNumber":50,"author":{"gitId":"-"},"content":" type\u003d\"file\""},{"lineNumber":51,"author":{"gitId":"-"},"content":" class\u003d\"file\""},{"lineNumber":52,"author":{"gitId":"-"},"content":" (change)\u003d\"onFileInputUpload($event, fileInput)\""},{"lineNumber":53,"author":{"gitId":"-"},"content":" /\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/mat-tab\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cmat-tab label\u003d\"Preview\"\u003e"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"tab-content\" style\u003d\"min-height: 228px\"\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003cmarkdown #markdownArea *ngIf\u003d\"commentField.value !\u003d\u003d \u0027\u0027\" [data]\u003d\"sanitize(commentField.value)\"\u003e\u003c/markdown\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"commentField.value \u003d\u003d\u003d \u0027\u0027\"\u003eNothing to preview.\u003c/div\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/mat-tab\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/mat-tab-group\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003c/form\u003e"}],"authorContributionMap":{"Eclipse-Dominator":3,"-":62}},{"path":"src/app/shared/comment-editor/comment-editor.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpErrorResponse } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { AbstractControl, FormGroup, Validators } from \u0027@angular/forms\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import * as DOMPurify from \u0027dompurify\u0027;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"import { UndoRedo } from \u0027../../core/models/undoredo.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { FILE_TYPE_SUPPORT_ERROR, getSizeExceedErrorMsg, SUPPORTED_FILE_TYPES, UploadService } from \u0027../../core/services/upload.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { insertUploadingText, insertUploadUrl, insertUploadUrlVideo } from \u0027./upload-text-insertor\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"const BYTES_PER_MB \u003d 1024 * 1024;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"const SHOWN_MAX_UPLOAD_SIZE_MB \u003d 10;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"const SHOWN_MAX_VIDEO_UPLOAD_SIZE_MB \u003d 5;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"const TIME_BETWEEN_UPLOADS_MS \u003d 250;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"const MAX_UPLOAD_SIZE \u003d (SHOWN_MAX_UPLOAD_SIZE_MB + 1) * BYTES_PER_MB; // 11MB to allow 10.x MB"},{"lineNumber":17,"author":{"gitId":"-"},"content":"const MAX_VIDEO_UPLOAD_SIZE \u003d (SHOWN_MAX_VIDEO_UPLOAD_SIZE_MB + 1) * BYTES_PER_MB; // 6MB to allow 5.x MB"},{"lineNumber":18,"author":{"gitId":"-"},"content":"const ISSUE_BODY_SIZE_LIMIT \u003d 40000;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"const SPACE \u003d \u0027 \u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":"type textEntry \u003d {"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" text: string;"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" selectStart: number;"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" selectEnd: number;"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":"};"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":29,"author":{"gitId":"-"},"content":" selector: \u0027app-comment-editor\u0027,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" templateUrl: \u0027./comment-editor.component.html\u0027,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./comment-editor.component.css\u0027]"},{"lineNumber":32,"author":{"gitId":"-"},"content":"})"},{"lineNumber":33,"author":{"gitId":"-"},"content":"export class CommentEditorComponent implements OnInit {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" readonly SUPPORTED_FILE_TYPES \u003d SUPPORTED_FILE_TYPES;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" constructor(private uploadService: UploadService, private errorHandlingService: ErrorHandlingService, private logger: LoggingService) {}"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Input() commentField: AbstractControl; // Compulsory Input"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Input() commentForm: FormGroup; // Compulsory Input"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Input() id: string; // Compulsory Input"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Input() initialDescription?: string;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" placeholderText \u003d \u0027No details provided.\u0027;"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Allows the comment editor to control the overall form\u0027s completeness."},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Input() isFormPending?: boolean;"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Output() isFormPendingChange: EventEmitter\u003cboolean\u003e \u003d new EventEmitter\u003cboolean\u003e();"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Allow the comment editor to control the text of the submit button to prompt the user."},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Input() submitButtonText?: string;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Output() submitButtonTextChange: EventEmitter\u003cstring\u003e \u003d new EventEmitter\u003cstring\u003e();"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" initialSubmitButtonText: string;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" lastUploadingTime: string;"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" @ViewChild(\u0027dropArea\u0027, { static: true }) dropArea;"},{"lineNumber":57,"author":{"gitId":"Eclipse-Dominator"},"content":" @ViewChild(\u0027commentTextArea\u0027, { static: true }) commentTextArea: ElementRef\u003cHTMLTextAreaElement\u003e;"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @ViewChild(\u0027markdownArea\u0027) markdownArea;"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" dragActiveCounter \u003d 0;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" uploadErrorMessage: string;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" maxLength \u003d ISSUE_BODY_SIZE_LIMIT;"},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"Eclipse-Dominator"},"content":" history: UndoRedo\u003ctextEntry\u003e;"},{"lineNumber":65,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" formatFileUploadingButtonText(currentButtonText: string) {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return currentButtonText + \u0027 (Waiting for File Upload to finish...)\u0027;"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (this.initialDescription !\u003d\u003d undefined) {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.commentField.setValue(this.initialDescription);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (this.commentField \u003d\u003d\u003d undefined || this.commentForm \u003d\u003d\u003d undefined || this.id \u003d\u003d\u003d undefined) {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new Error(\"Comment Editor\u0027s compulsory properties are not defined.\");"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.initialSubmitButtonText \u003d this.submitButtonText;"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.commentField.setValidators([Validators.maxLength(this.maxLength)]);"},{"lineNumber":81,"author":{"gitId":"Eclipse-Dominator"},"content":" this.history \u003d new UndoRedo\u003ctextEntry\u003e("},{"lineNumber":82,"author":{"gitId":"Eclipse-Dominator"},"content":" 75,"},{"lineNumber":83,"author":{"gitId":"Eclipse-Dominator"},"content":" () \u003d\u003e {"},{"lineNumber":84,"author":{"gitId":"Eclipse-Dominator"},"content":" return {"},{"lineNumber":85,"author":{"gitId":"Eclipse-Dominator"},"content":" text: this.commentTextArea.nativeElement.value,"},{"lineNumber":86,"author":{"gitId":"Eclipse-Dominator"},"content":" selectStart: this.commentTextArea.nativeElement.selectionStart,"},{"lineNumber":87,"author":{"gitId":"Eclipse-Dominator"},"content":" selectEnd: this.commentTextArea.nativeElement.selectionEnd"},{"lineNumber":88,"author":{"gitId":"Eclipse-Dominator"},"content":" };"},{"lineNumber":89,"author":{"gitId":"Eclipse-Dominator"},"content":" },"},{"lineNumber":90,"author":{"gitId":"Eclipse-Dominator"},"content":" 500"},{"lineNumber":91,"author":{"gitId":"Eclipse-Dominator"},"content":" );"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"Eclipse-Dominator"},"content":" onKeyPress(event: KeyboardEvent) {"},{"lineNumber":95,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.isUndo(event)) {"},{"lineNumber":96,"author":{"gitId":"Eclipse-Dominator"},"content":" event.preventDefault();"},{"lineNumber":97,"author":{"gitId":"Eclipse-Dominator"},"content":" this.undo();"},{"lineNumber":98,"author":{"gitId":"Eclipse-Dominator"},"content":" return;"},{"lineNumber":99,"author":{"gitId":"Eclipse-Dominator"},"content":" } else if (this.isRedo(event)) {"},{"lineNumber":100,"author":{"gitId":"Eclipse-Dominator"},"content":" this.redo();"},{"lineNumber":101,"author":{"gitId":"Eclipse-Dominator"},"content":" event.preventDefault();"},{"lineNumber":102,"author":{"gitId":"Eclipse-Dominator"},"content":" return;"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.isControlKeyPressed(event) \u0026\u0026 !event.shiftKey) {"},{"lineNumber":106,"author":{"gitId":"Eclipse-Dominator"},"content":" switch (event.code) {"},{"lineNumber":107,"author":{"gitId":"Eclipse-Dominator"},"content":" case \u0027KeyB\u0027:"},{"lineNumber":108,"author":{"gitId":"-"},"content":" event.preventDefault();"},{"lineNumber":109,"author":{"gitId":"Eclipse-Dominator"},"content":" this.history.wrapSave(() \u003d\u003e this.insertOrRemoveCharsFromHighlightedText(\u0027**\u0027));"},{"lineNumber":110,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":111,"author":{"gitId":"Eclipse-Dominator"},"content":" case \u0027KeyI\u0027:"},{"lineNumber":112,"author":{"gitId":"-"},"content":" event.preventDefault();"},{"lineNumber":113,"author":{"gitId":"Eclipse-Dominator"},"content":" this.history.wrapSave(() \u003d\u003e this.insertOrRemoveCharsFromHighlightedText(\u0027_\u0027));"},{"lineNumber":114,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":115,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" onDragEnter(event) {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" event.preventDefault();"},{"lineNumber":123,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":124,"author":{"gitId":"-"},"content":""},{"lineNumber":125,"author":{"gitId":"-"},"content":" this.dragActiveCounter++;"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (this.commentField.disabled) {"},{"lineNumber":127,"author":{"gitId":"-"},"content":" this.dropArea.nativeElement.classList.add(\u0027highlight-drag-box-disabled\u0027);"},{"lineNumber":128,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" this.dropArea.nativeElement.classList.add(\u0027highlight-drag-box\u0027);"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }"},{"lineNumber":132,"author":{"gitId":"-"},"content":""},{"lineNumber":133,"author":{"gitId":"-"},"content":" // Prevent cursor in textarea from moving when file is dragged over it."},{"lineNumber":134,"author":{"gitId":"-"},"content":" disableCaretMovement(event) {"},{"lineNumber":135,"author":{"gitId":"-"},"content":" event.preventDefault();"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }"},{"lineNumber":137,"author":{"gitId":"-"},"content":""},{"lineNumber":138,"author":{"gitId":"-"},"content":" // Sanitize markdown"},{"lineNumber":139,"author":{"gitId":"-"},"content":" sanitize(commentFieldValue) {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return DOMPurify.sanitize(commentFieldValue);"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }"},{"lineNumber":142,"author":{"gitId":"-"},"content":""},{"lineNumber":143,"author":{"gitId":"-"},"content":" // To enable file drop in non-input elements, the dragOver event must be cancelled."},{"lineNumber":144,"author":{"gitId":"-"},"content":" enableFileDrop(event) {"},{"lineNumber":145,"author":{"gitId":"-"},"content":" event.preventDefault();"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }"},{"lineNumber":147,"author":{"gitId":"-"},"content":""},{"lineNumber":148,"author":{"gitId":"-"},"content":" onDrop(event) {"},{"lineNumber":149,"author":{"gitId":"-"},"content":" event.preventDefault();"},{"lineNumber":150,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":151,"author":{"gitId":"-"},"content":" this.removeHighlightBorderStyle();"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (this.commentField.disabled) {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }"},{"lineNumber":156,"author":{"gitId":"-"},"content":""},{"lineNumber":157,"author":{"gitId":"-"},"content":" const files \u003d event.dataTransfer.files;"},{"lineNumber":158,"author":{"gitId":"-"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":" if (files \u003d\u003d\u003d undefined || files.length \u003c\u003d 0) {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }"},{"lineNumber":162,"author":{"gitId":"-"},"content":""},{"lineNumber":163,"author":{"gitId":"-"},"content":" this.commentTextArea.nativeElement.focus();"},{"lineNumber":164,"author":{"gitId":"-"},"content":""},{"lineNumber":165,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c files.length; i++) {"},{"lineNumber":166,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":167,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`CommentEditorComponent: File ${i + 1} of ${files.length}. Begin uploading ${files[i].name}.`);"},{"lineNumber":168,"author":{"gitId":"-"},"content":" this.readAndUploadFile(files[i]);"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }, TIME_BETWEEN_UPLOADS_MS * i);"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }"},{"lineNumber":172,"author":{"gitId":"-"},"content":""},{"lineNumber":173,"author":{"gitId":"-"},"content":" onDragExit(event) {"},{"lineNumber":174,"author":{"gitId":"-"},"content":" event.preventDefault();"},{"lineNumber":175,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":176,"author":{"gitId":"-"},"content":""},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.removeHighlightBorderStyle();"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }"},{"lineNumber":179,"author":{"gitId":"-"},"content":""},{"lineNumber":180,"author":{"gitId":"-"},"content":" onFileInputUpload(event, fileInput) {"},{"lineNumber":181,"author":{"gitId":"-"},"content":" event.preventDefault();"},{"lineNumber":182,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":183,"author":{"gitId":"-"},"content":""},{"lineNumber":184,"author":{"gitId":"-"},"content":" const files \u003d fileInput.files;"},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (files.length \u003e 0) {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.readAndUploadFile(files[0]);"},{"lineNumber":187,"author":{"gitId":"-"},"content":" fileInput.value \u003d \u0027\u0027;"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }"},{"lineNumber":190,"author":{"gitId":"-"},"content":""},{"lineNumber":191,"author":{"gitId":"-"},"content":" updateParentFormsSubmittability(isFormPending: boolean, submitButtonText: string) {"},{"lineNumber":192,"author":{"gitId":"-"},"content":" this.isFormPendingChange.emit(isFormPending);"},{"lineNumber":193,"author":{"gitId":"-"},"content":" this.submitButtonTextChange.emit(submitButtonText);"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }"},{"lineNumber":195,"author":{"gitId":"-"},"content":""},{"lineNumber":196,"author":{"gitId":"-"},"content":" readAndUploadFile(file: File): void {"},{"lineNumber":197,"author":{"gitId":"-"},"content":" this.uploadErrorMessage \u003d null;"},{"lineNumber":198,"author":{"gitId":"-"},"content":" const reader \u003d new FileReader();"},{"lineNumber":199,"author":{"gitId":"-"},"content":" const filename \u003d file.name;"},{"lineNumber":200,"author":{"gitId":"-"},"content":" const insertedText \u003d insertUploadingText(filename, this.commentField, this.commentTextArea);"},{"lineNumber":201,"author":{"gitId":"-"},"content":""},{"lineNumber":202,"author":{"gitId":"-"},"content":" if (file.size \u003e\u003d MAX_UPLOAD_SIZE) {"},{"lineNumber":203,"author":{"gitId":"-"},"content":" this.handleUploadError(getSizeExceedErrorMsg(\u0027file\u0027, SHOWN_MAX_UPLOAD_SIZE_MB), insertedText);"},{"lineNumber":204,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }"},{"lineNumber":206,"author":{"gitId":"-"},"content":""},{"lineNumber":207,"author":{"gitId":"-"},"content":" if (this.uploadService.isVideoFile(filename) \u0026\u0026 file.size \u003e\u003d MAX_VIDEO_UPLOAD_SIZE) {"},{"lineNumber":208,"author":{"gitId":"-"},"content":" this.handleUploadError(getSizeExceedErrorMsg(\u0027video\u0027, SHOWN_MAX_VIDEO_UPLOAD_SIZE_MB), insertedText);"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }"},{"lineNumber":211,"author":{"gitId":"-"},"content":""},{"lineNumber":212,"author":{"gitId":"-"},"content":" if (!this.uploadService.isSupportedFileType(filename)) {"},{"lineNumber":213,"author":{"gitId":"-"},"content":" this.handleUploadError(FILE_TYPE_SUPPORT_ERROR, insertedText);"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }"},{"lineNumber":216,"author":{"gitId":"-"},"content":""},{"lineNumber":217,"author":{"gitId":"-"},"content":" // Log the most recent upload."},{"lineNumber":218,"author":{"gitId":"-"},"content":" this.lastUploadingTime \u003d new Date().getTime().toString();"},{"lineNumber":219,"author":{"gitId":"-"},"content":" const currentFileUploadTime \u003d this.lastUploadingTime;"},{"lineNumber":220,"author":{"gitId":"-"},"content":""},{"lineNumber":221,"author":{"gitId":"-"},"content":" // Prevents Form Submission during Upload"},{"lineNumber":222,"author":{"gitId":"-"},"content":" this.updateParentFormsSubmittability(true, this.formatFileUploadingButtonText(this.initialSubmitButtonText));"},{"lineNumber":223,"author":{"gitId":"-"},"content":""},{"lineNumber":224,"author":{"gitId":"-"},"content":" reader.onload \u003d () \u003d\u003e {"},{"lineNumber":225,"author":{"gitId":"-"},"content":" this.uploadService.uploadFile(reader.result, filename).subscribe("},{"lineNumber":226,"author":{"gitId":"-"},"content":" (response) \u003d\u003e {"},{"lineNumber":227,"author":{"gitId":"-"},"content":" if (this.uploadService.isVideoFile(filename)) {"},{"lineNumber":228,"author":{"gitId":"-"},"content":" insertUploadUrlVideo(filename, response.data.content.download_url, this.commentField, this.commentTextArea);"},{"lineNumber":229,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":230,"author":{"gitId":"-"},"content":" insertUploadUrl(filename, response.data.content.download_url, this.commentField, this.commentTextArea);"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }"},{"lineNumber":232,"author":{"gitId":"Eclipse-Dominator"},"content":" this.history.forceSave();"},{"lineNumber":233,"author":{"gitId":"-"},"content":" },"},{"lineNumber":234,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":235,"author":{"gitId":"-"},"content":" this.handleUploadError(error, insertedText);"},{"lineNumber":236,"author":{"gitId":"-"},"content":" // Allow button enabling if this is the last file that was uploaded."},{"lineNumber":237,"author":{"gitId":"-"},"content":" if (currentFileUploadTime \u003d\u003d\u003d this.lastUploadingTime) {"},{"lineNumber":238,"author":{"gitId":"-"},"content":" this.updateParentFormsSubmittability(false, this.initialSubmitButtonText);"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }"},{"lineNumber":240,"author":{"gitId":"-"},"content":" },"},{"lineNumber":241,"author":{"gitId":"-"},"content":" () \u003d\u003e {"},{"lineNumber":242,"author":{"gitId":"-"},"content":" // Allow button enabling if this is the last file that was uploaded."},{"lineNumber":243,"author":{"gitId":"-"},"content":" if (currentFileUploadTime \u003d\u003d\u003d this.lastUploadingTime) {"},{"lineNumber":244,"author":{"gitId":"-"},"content":" this.updateParentFormsSubmittability(false, this.initialSubmitButtonText);"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }"},{"lineNumber":247,"author":{"gitId":"-"},"content":" );"},{"lineNumber":248,"author":{"gitId":"-"},"content":" };"},{"lineNumber":249,"author":{"gitId":"-"},"content":" reader.readAsDataURL(file);"},{"lineNumber":250,"author":{"gitId":"-"},"content":" }"},{"lineNumber":251,"author":{"gitId":"-"},"content":""},{"lineNumber":252,"author":{"gitId":"Eclipse-Dominator"},"content":" onPaste(event: ClipboardEvent) {"},{"lineNumber":253,"author":{"gitId":"Eclipse-Dominator"},"content":" // the text area is not changed at this point"},{"lineNumber":254,"author":{"gitId":"Eclipse-Dominator"},"content":" this.history.forceSave(null, true, false);"},{"lineNumber":255,"author":{"gitId":"-"},"content":" const items \u003d event.clipboardData.items;"},{"lineNumber":256,"author":{"gitId":"-"},"content":" let blob \u003d null;"},{"lineNumber":257,"author":{"gitId":"-"},"content":" for (const item of items) {"},{"lineNumber":258,"author":{"gitId":"-"},"content":" if (item.type.indexOf(\u0027image\u0027) \u003d\u003d\u003d 0) {"},{"lineNumber":259,"author":{"gitId":"-"},"content":" blob \u003d item.getAsFile();"},{"lineNumber":260,"author":{"gitId":"Eclipse-Dominator"},"content":" event.stopPropagation();"},{"lineNumber":261,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":262,"author":{"gitId":"-"},"content":" }"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }"},{"lineNumber":264,"author":{"gitId":"-"},"content":" if (blob) {"},{"lineNumber":265,"author":{"gitId":"-"},"content":" this.readAndUploadFile(blob);"},{"lineNumber":266,"author":{"gitId":"-"},"content":" }"},{"lineNumber":267,"author":{"gitId":"-"},"content":" }"},{"lineNumber":268,"author":{"gitId":"-"},"content":""},{"lineNumber":269,"author":{"gitId":"Eclipse-Dominator"},"content":" handleBeforeInputChange(event: InputEvent): void {"},{"lineNumber":270,"author":{"gitId":"Eclipse-Dominator"},"content":" switch (event.inputType) {"},{"lineNumber":271,"author":{"gitId":"Eclipse-Dominator"},"content":" case \u0027historyUndo\u0027:"},{"lineNumber":272,"author":{"gitId":"Eclipse-Dominator"},"content":" case \u0027historyRedo\u0027:"},{"lineNumber":273,"author":{"gitId":"Eclipse-Dominator"},"content":" // ignore these events that doesn\u0027t modify the text"},{"lineNumber":274,"author":{"gitId":"Eclipse-Dominator"},"content":" event.preventDefault();"},{"lineNumber":275,"author":{"gitId":"Eclipse-Dominator"},"content":" break;"},{"lineNumber":276,"author":{"gitId":"Eclipse-Dominator"},"content":" case \u0027insertFromPaste\u0027:"},{"lineNumber":277,"author":{"gitId":"Eclipse-Dominator"},"content":" // paste events will be handled exclusively by onPaste"},{"lineNumber":278,"author":{"gitId":"Eclipse-Dominator"},"content":" break;"},{"lineNumber":279,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":280,"author":{"gitId":"Eclipse-Dominator"},"content":" default:"},{"lineNumber":281,"author":{"gitId":"Eclipse-Dominator"},"content":" this.history.updateBeforeChange();"},{"lineNumber":282,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":283,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":284,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":285,"author":{"gitId":"Eclipse-Dominator"},"content":" handleInputChange(event: InputEvent): void {"},{"lineNumber":286,"author":{"gitId":"Eclipse-Dominator"},"content":" switch (event.inputType) {"},{"lineNumber":287,"author":{"gitId":"Eclipse-Dominator"},"content":" case \u0027historyUndo\u0027:"},{"lineNumber":288,"author":{"gitId":"Eclipse-Dominator"},"content":" case \u0027historyRedo\u0027:"},{"lineNumber":289,"author":{"gitId":"Eclipse-Dominator"},"content":" // ignore these events that doesn\u0027t modify the text"},{"lineNumber":290,"author":{"gitId":"Eclipse-Dominator"},"content":" event.preventDefault();"},{"lineNumber":291,"author":{"gitId":"Eclipse-Dominator"},"content":" break;"},{"lineNumber":292,"author":{"gitId":"Eclipse-Dominator"},"content":" case \u0027insertFromPaste\u0027:"},{"lineNumber":293,"author":{"gitId":"Eclipse-Dominator"},"content":" // paste events will be handled exclusively by onPaste"},{"lineNumber":294,"author":{"gitId":"Eclipse-Dominator"},"content":" break;"},{"lineNumber":295,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":296,"author":{"gitId":"Eclipse-Dominator"},"content":" default:"},{"lineNumber":297,"author":{"gitId":"Eclipse-Dominator"},"content":" this.history.createDelayedSave();"},{"lineNumber":298,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":299,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":300,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":301,"author":{"gitId":"Eclipse-Dominator"},"content":" private undo(): void {"},{"lineNumber":302,"author":{"gitId":"Eclipse-Dominator"},"content":" const entry \u003d this.history.undo();"},{"lineNumber":303,"author":{"gitId":"Eclipse-Dominator"},"content":" if (entry \u003d\u003d\u003d null) {"},{"lineNumber":304,"author":{"gitId":"Eclipse-Dominator"},"content":" return;"},{"lineNumber":305,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":306,"author":{"gitId":"Eclipse-Dominator"},"content":" this.commentField.setValue(entry.text);"},{"lineNumber":307,"author":{"gitId":"Eclipse-Dominator"},"content":" this.commentTextArea.nativeElement.setSelectionRange(entry.selectStart, entry.selectEnd);"},{"lineNumber":308,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":309,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":310,"author":{"gitId":"Eclipse-Dominator"},"content":" private redo(): void {"},{"lineNumber":311,"author":{"gitId":"Eclipse-Dominator"},"content":" const entry \u003d this.history.redo();"},{"lineNumber":312,"author":{"gitId":"Eclipse-Dominator"},"content":" if (entry \u003d\u003d\u003d null) {"},{"lineNumber":313,"author":{"gitId":"Eclipse-Dominator"},"content":" return;"},{"lineNumber":314,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":315,"author":{"gitId":"Eclipse-Dominator"},"content":" this.commentTextArea.nativeElement.value \u003d entry.text;"},{"lineNumber":316,"author":{"gitId":"Eclipse-Dominator"},"content":" this.commentTextArea.nativeElement.setSelectionRange(entry.selectStart, entry.selectEnd);"},{"lineNumber":317,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":318,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":319,"author":{"gitId":"-"},"content":" get isInErrorState(): boolean {"},{"lineNumber":320,"author":{"gitId":"-"},"content":" return !!this.uploadErrorMessage;"},{"lineNumber":321,"author":{"gitId":"-"},"content":" }"},{"lineNumber":322,"author":{"gitId":"-"},"content":""},{"lineNumber":323,"author":{"gitId":"-"},"content":" private handleUploadError(error, insertedText: string) {"},{"lineNumber":324,"author":{"gitId":"-"},"content":" if (error instanceof HttpErrorResponse) {"},{"lineNumber":325,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":326,"author":{"gitId":"-"},"content":" this.uploadErrorMessage \u003d \u0027Something went wrong while uploading your file. Please try again.\u0027;"},{"lineNumber":327,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":328,"author":{"gitId":"-"},"content":" this.uploadErrorMessage \u003d error;"},{"lineNumber":329,"author":{"gitId":"-"},"content":" }"},{"lineNumber":330,"author":{"gitId":"-"},"content":" this.commentField.setValue(this.commentField.value.replace(insertedText, \u0027\u0027));"},{"lineNumber":331,"author":{"gitId":"Eclipse-Dominator"},"content":" this.history.forceSave();"},{"lineNumber":332,"author":{"gitId":"-"},"content":" }"},{"lineNumber":333,"author":{"gitId":"-"},"content":""},{"lineNumber":334,"author":{"gitId":"-"},"content":" private removeHighlightBorderStyle() {"},{"lineNumber":335,"author":{"gitId":"-"},"content":" this.dragActiveCounter--;"},{"lineNumber":336,"author":{"gitId":"-"},"content":" if (this.dragActiveCounter \u003d\u003d\u003d 0) {"},{"lineNumber":337,"author":{"gitId":"-"},"content":" // To make sure when dragging over a child element, drop area is still highlight."},{"lineNumber":338,"author":{"gitId":"-"},"content":" this.dropArea.nativeElement.classList.remove(\u0027highlight-drag-box\u0027);"},{"lineNumber":339,"author":{"gitId":"-"},"content":" this.dropArea.nativeElement.classList.remove(\u0027highlight-drag-box-disabled\u0027);"},{"lineNumber":340,"author":{"gitId":"-"},"content":" }"},{"lineNumber":341,"author":{"gitId":"-"},"content":" }"},{"lineNumber":342,"author":{"gitId":"-"},"content":""},{"lineNumber":343,"author":{"gitId":"Eclipse-Dominator"},"content":" private isControlKeyPressed(event: KeyboardEvent) {"},{"lineNumber":344,"author":{"gitId":"-"},"content":" if (navigator.platform.indexOf(\u0027Mac\u0027) \u003d\u003d\u003d 0) {"},{"lineNumber":345,"author":{"gitId":"-"},"content":" return event.metaKey;"},{"lineNumber":346,"author":{"gitId":"-"},"content":" }"},{"lineNumber":347,"author":{"gitId":"-"},"content":" return event.ctrlKey;"},{"lineNumber":348,"author":{"gitId":"-"},"content":" }"},{"lineNumber":349,"author":{"gitId":"-"},"content":""},{"lineNumber":350,"author":{"gitId":"Eclipse-Dominator"},"content":" private isUndo(event: KeyboardEvent) {"},{"lineNumber":351,"author":{"gitId":"Eclipse-Dominator"},"content":" // prevents undo from firing when ctrl shift z is pressed"},{"lineNumber":352,"author":{"gitId":"Eclipse-Dominator"},"content":" if (navigator.platform.indexOf(\u0027Mac\u0027) \u003d\u003d\u003d 0) {"},{"lineNumber":353,"author":{"gitId":"Eclipse-Dominator"},"content":" return event.metaKey \u0026\u0026 event.code \u003d\u003d\u003d \u0027KeyZ\u0027 \u0026\u0026 !event.shiftKey;"},{"lineNumber":354,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":355,"author":{"gitId":"Eclipse-Dominator"},"content":" return event.ctrlKey \u0026\u0026 event.code \u003d\u003d\u003d \u0027KeyZ\u0027 \u0026\u0026 !event.shiftKey;"},{"lineNumber":356,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":357,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":358,"author":{"gitId":"Eclipse-Dominator"},"content":" private isRedo(event: KeyboardEvent) {"},{"lineNumber":359,"author":{"gitId":"Eclipse-Dominator"},"content":" if (navigator.platform.indexOf(\u0027Mac\u0027) \u003d\u003d\u003d 0) {"},{"lineNumber":360,"author":{"gitId":"Eclipse-Dominator"},"content":" return event.metaKey \u0026\u0026 event.shiftKey \u0026\u0026 event.code \u003d\u003d\u003d \u0027KeyZ\u0027;"},{"lineNumber":361,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":362,"author":{"gitId":"Eclipse-Dominator"},"content":" return (event.ctrlKey \u0026\u0026 event.shiftKey \u0026\u0026 event.code \u003d\u003d\u003d \u0027KeyZ\u0027) || (event.ctrlKey \u0026\u0026 event.code \u003d\u003d\u003d \u0027KeyY\u0027);"},{"lineNumber":363,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":364,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":365,"author":{"gitId":"-"},"content":" private insertOrRemoveCharsFromHighlightedText(char) {"},{"lineNumber":366,"author":{"gitId":"-"},"content":" const selectionStart \u003d this.commentTextArea.nativeElement.selectionStart;"},{"lineNumber":367,"author":{"gitId":"-"},"content":" const selectionEnd \u003d this.commentTextArea.nativeElement.selectionEnd;"},{"lineNumber":368,"author":{"gitId":"Eclipse-Dominator"},"content":" const currentText \u003d this.commentTextArea.nativeElement.value;"},{"lineNumber":369,"author":{"gitId":"-"},"content":" const highlightedText \u003d currentText.slice(selectionStart, selectionEnd);"},{"lineNumber":370,"author":{"gitId":"-"},"content":" const highlightedTextTrimmed \u003d highlightedText.trim();"},{"lineNumber":371,"author":{"gitId":"-"},"content":" const spacesRemovedLeft \u003d highlightedText.trimRight().length - highlightedTextTrimmed.length;"},{"lineNumber":372,"author":{"gitId":"-"},"content":" const spacesRemovedRight \u003d highlightedText.trimLeft().length - highlightedTextTrimmed.length;"},{"lineNumber":373,"author":{"gitId":"-"},"content":""},{"lineNumber":374,"author":{"gitId":"-"},"content":" if (this.hasCharsBeforeAndAfterHighlight(selectionStart, selectionEnd, currentText, char)) {"},{"lineNumber":375,"author":{"gitId":"-"},"content":" this.removeCharsBeforeAndAfterHighlightedText(selectionStart, selectionEnd, currentText, highlightedText, char);"},{"lineNumber":376,"author":{"gitId":"-"},"content":" } else if (this.hasCharsInTrimmedHighlight(highlightedText, char)) {"},{"lineNumber":377,"author":{"gitId":"-"},"content":" this.removeCharsFromHighlightedText("},{"lineNumber":378,"author":{"gitId":"-"},"content":" selectionStart,"},{"lineNumber":379,"author":{"gitId":"-"},"content":" selectionEnd,"},{"lineNumber":380,"author":{"gitId":"-"},"content":" currentText,"},{"lineNumber":381,"author":{"gitId":"-"},"content":" highlightedTextTrimmed,"},{"lineNumber":382,"author":{"gitId":"-"},"content":" char,"},{"lineNumber":383,"author":{"gitId":"-"},"content":" spacesRemovedLeft,"},{"lineNumber":384,"author":{"gitId":"-"},"content":" spacesRemovedRight"},{"lineNumber":385,"author":{"gitId":"-"},"content":" );"},{"lineNumber":386,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":387,"author":{"gitId":"-"},"content":" this.insertCharsToHighlightedText("},{"lineNumber":388,"author":{"gitId":"-"},"content":" selectionStart,"},{"lineNumber":389,"author":{"gitId":"-"},"content":" selectionEnd,"},{"lineNumber":390,"author":{"gitId":"-"},"content":" currentText,"},{"lineNumber":391,"author":{"gitId":"-"},"content":" highlightedTextTrimmed,"},{"lineNumber":392,"author":{"gitId":"-"},"content":" char,"},{"lineNumber":393,"author":{"gitId":"-"},"content":" spacesRemovedLeft,"},{"lineNumber":394,"author":{"gitId":"-"},"content":" spacesRemovedRight"},{"lineNumber":395,"author":{"gitId":"-"},"content":" );"},{"lineNumber":396,"author":{"gitId":"-"},"content":" }"},{"lineNumber":397,"author":{"gitId":"-"},"content":" }"},{"lineNumber":398,"author":{"gitId":"-"},"content":""},{"lineNumber":399,"author":{"gitId":"-"},"content":" private hasCharsBeforeAndAfterHighlight(selectionStart, selectionEnd, currentText, char) {"},{"lineNumber":400,"author":{"gitId":"-"},"content":" const hasInsertedCharBefore \u003d currentText.slice(selectionStart - char.length, selectionStart) \u003d\u003d\u003d char;"},{"lineNumber":401,"author":{"gitId":"-"},"content":" const hasInsertedCharAfter \u003d currentText.slice(selectionEnd, selectionEnd + char.length) \u003d\u003d\u003d char;"},{"lineNumber":402,"author":{"gitId":"-"},"content":" return hasInsertedCharBefore \u0026\u0026 hasInsertedCharAfter;"},{"lineNumber":403,"author":{"gitId":"-"},"content":" }"},{"lineNumber":404,"author":{"gitId":"-"},"content":""},{"lineNumber":405,"author":{"gitId":"-"},"content":" private hasCharsInTrimmedHighlight(highlightedText, char) {"},{"lineNumber":406,"author":{"gitId":"-"},"content":" const highlightedTextTrimmed \u003d highlightedText.trim();"},{"lineNumber":407,"author":{"gitId":"-"},"content":" const hasCharAtFront \u003d highlightedTextTrimmed.slice(0, char.length) \u003d\u003d\u003d char;"},{"lineNumber":408,"author":{"gitId":"-"},"content":" const hasCharAtEnd \u003d highlightedTextTrimmed.slice(-char.length) \u003d\u003d\u003d char;"},{"lineNumber":409,"author":{"gitId":"-"},"content":" return hasCharAtFront \u0026\u0026 hasCharAtEnd;"},{"lineNumber":410,"author":{"gitId":"-"},"content":" }"},{"lineNumber":411,"author":{"gitId":"-"},"content":""},{"lineNumber":412,"author":{"gitId":"-"},"content":" private removeCharsBeforeAndAfterHighlightedText(selectionStart, selectionEnd, currentText, highlightedText, char) {"},{"lineNumber":413,"author":{"gitId":"-"},"content":" this.commentField.setValue("},{"lineNumber":414,"author":{"gitId":"-"},"content":" currentText.slice(0, selectionStart - char.length) + highlightedText + currentText.slice(selectionEnd + char.length)"},{"lineNumber":415,"author":{"gitId":"-"},"content":" );"},{"lineNumber":416,"author":{"gitId":"-"},"content":" this.commentTextArea.nativeElement.setSelectionRange(selectionStart - char.length, selectionEnd - char.length);"},{"lineNumber":417,"author":{"gitId":"-"},"content":" }"},{"lineNumber":418,"author":{"gitId":"-"},"content":""},{"lineNumber":419,"author":{"gitId":"-"},"content":" private removeCharsFromHighlightedText("},{"lineNumber":420,"author":{"gitId":"-"},"content":" selectionStart,"},{"lineNumber":421,"author":{"gitId":"-"},"content":" selectionEnd,"},{"lineNumber":422,"author":{"gitId":"-"},"content":" currentText,"},{"lineNumber":423,"author":{"gitId":"-"},"content":" highlightedTextTrimmed,"},{"lineNumber":424,"author":{"gitId":"-"},"content":" char,"},{"lineNumber":425,"author":{"gitId":"-"},"content":" spacesRemovedLeft,"},{"lineNumber":426,"author":{"gitId":"-"},"content":" spacesRemovedRight"},{"lineNumber":427,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":428,"author":{"gitId":"-"},"content":" this.commentField.setValue("},{"lineNumber":429,"author":{"gitId":"-"},"content":" currentText.slice(0, selectionStart) +"},{"lineNumber":430,"author":{"gitId":"-"},"content":" SPACE.repeat(spacesRemovedLeft) +"},{"lineNumber":431,"author":{"gitId":"-"},"content":" highlightedTextTrimmed.slice(char.length, -char.length) +"},{"lineNumber":432,"author":{"gitId":"-"},"content":" SPACE.repeat(spacesRemovedRight) +"},{"lineNumber":433,"author":{"gitId":"-"},"content":" currentText.slice(selectionEnd)"},{"lineNumber":434,"author":{"gitId":"-"},"content":" );"},{"lineNumber":435,"author":{"gitId":"-"},"content":" this.commentTextArea.nativeElement.setSelectionRange("},{"lineNumber":436,"author":{"gitId":"-"},"content":" selectionStart + spacesRemovedLeft,"},{"lineNumber":437,"author":{"gitId":"-"},"content":" selectionEnd - 2 * char.length - spacesRemovedRight"},{"lineNumber":438,"author":{"gitId":"-"},"content":" );"},{"lineNumber":439,"author":{"gitId":"-"},"content":" }"},{"lineNumber":440,"author":{"gitId":"-"},"content":""},{"lineNumber":441,"author":{"gitId":"-"},"content":" private insertCharsToHighlightedText("},{"lineNumber":442,"author":{"gitId":"-"},"content":" selectionStart,"},{"lineNumber":443,"author":{"gitId":"-"},"content":" selectionEnd,"},{"lineNumber":444,"author":{"gitId":"-"},"content":" currentText,"},{"lineNumber":445,"author":{"gitId":"-"},"content":" highlightedTextTrimmed,"},{"lineNumber":446,"author":{"gitId":"-"},"content":" char,"},{"lineNumber":447,"author":{"gitId":"-"},"content":" spacesRemovedLeft,"},{"lineNumber":448,"author":{"gitId":"-"},"content":" spacesRemovedRight"},{"lineNumber":449,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":450,"author":{"gitId":"-"},"content":" this.commentField.setValue("},{"lineNumber":451,"author":{"gitId":"-"},"content":" currentText.slice(0, selectionStart) +"},{"lineNumber":452,"author":{"gitId":"-"},"content":" SPACE.repeat(spacesRemovedLeft) +"},{"lineNumber":453,"author":{"gitId":"-"},"content":" char +"},{"lineNumber":454,"author":{"gitId":"-"},"content":" highlightedTextTrimmed +"},{"lineNumber":455,"author":{"gitId":"-"},"content":" char +"},{"lineNumber":456,"author":{"gitId":"-"},"content":" SPACE.repeat(spacesRemovedRight) +"},{"lineNumber":457,"author":{"gitId":"-"},"content":" currentText.slice(selectionEnd)"},{"lineNumber":458,"author":{"gitId":"-"},"content":" );"},{"lineNumber":459,"author":{"gitId":"-"},"content":" this.commentTextArea.nativeElement.setSelectionRange("},{"lineNumber":460,"author":{"gitId":"-"},"content":" selectionStart + char.length + spacesRemovedLeft,"},{"lineNumber":461,"author":{"gitId":"-"},"content":" selectionEnd + char.length - spacesRemovedRight"},{"lineNumber":462,"author":{"gitId":"-"},"content":" );"},{"lineNumber":463,"author":{"gitId":"-"},"content":" }"},{"lineNumber":464,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":110,"vigneshsankariyer1234567890":1,"-":353}},{"path":"src/app/shared/comment-editor/markdown-toolbar/markdown-toolbar.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c!-- A toolbar component for text area. --\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003c!-- Provided by a third-party library: https://github.com/github/markdown-toolbar-element --\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003cmarkdown-toolbar [attr.for]\u003d\"forTextAreaId\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cmd-bold\u003e"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add bold text\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eformat_bold\u003c/mat-icon\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003c/md-bold\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cmd-italic\u003e"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add italic text\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eformat_italic\u003c/mat-icon\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/md-italic\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cmd-header\u003e"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add heading text\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003etitle\u003c/mat-icon\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/md-header\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cmd-quote\u003e"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add a quote\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eformat_quote\u003c/mat-icon\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/md-quote\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cmd-code\u003e"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add code\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003ecode\u003c/mat-icon\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/md-code\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cmd-link\u003e"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add a link\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003elink\u003c/mat-icon\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/md-link\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cmd-image\u003e"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add a image via link\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eimage\u003c/mat-icon\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/md-image\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cmd-unordered-list\u003e"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add a bulleted list\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eformat_list_bulleted\u003c/mat-icon\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/md-unordered-list\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cmd-ordered-list\u003e"},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add a numbered list\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eformat_list_numbered\u003c/mat-icon\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/md-ordered-list\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cmd-task-list\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cmd-header\u003e"},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add a task list\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003etask\u003c/mat-icon\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/md-header\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/md-task-list\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003c/markdown-toolbar\u003e"}],"authorContributionMap":{"Eclipse-Dominator":10,"-":46}},{"path":"src/app/shared/error-toasters/error-toaster.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { CommonModule } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MaterialModule } from \u0027../material.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { FormErrorComponent } from \u0027./form-error/form-error.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GeneralMessageErrorComponent } from \u0027./general-message-error/general-message-error.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { InvalidCredentialsErrorComponent } from \u0027./invalid-credentials-error/invalid-credentials-error.component\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { ToasterComponent } from \u0027./toaster/toaster.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":10,"author":{"gitId":"-"},"content":" imports: [CommonModule, MaterialModule],"},{"lineNumber":11,"author":{"gitId":"-"},"content":" declarations: [GeneralMessageErrorComponent, FormErrorComponent, InvalidCredentialsErrorComponent, ToasterComponent],"},{"lineNumber":12,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" exports: [GeneralMessageErrorComponent, FormErrorComponent, InvalidCredentialsErrorComponent]"},{"lineNumber":13,"author":{"gitId":"-"},"content":"})"},{"lineNumber":14,"author":{"gitId":"-"},"content":"export class ErrorToasterModule {}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":13}},{"path":"src/app/shared/error-toasters/invalid-credentials-error/invalid-credentials-error.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatSnackBarRef, MAT_SNACK_BAR_DATA } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"-"},"content":" selector: \u0027app-form-error\u0027,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" templateUrl: \u0027./invalid-credentials-error.component.html\u0027"},{"lineNumber":7,"author":{"gitId":"-"},"content":"})"},{"lineNumber":8,"author":{"gitId":"-"},"content":"export class InvalidCredentialsErrorComponent {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" constructor(public snackBarRef: MatSnackBarRef\u003cInvalidCredentialsErrorComponent\u003e, @Inject(MAT_SNACK_BAR_DATA) public data: any) {}"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":9}},{"path":"src/app/shared/issue-tables/IssuesDataTable.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { DataSource } from \u0027@angular/cdk/table\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { BehaviorSubject, merge, Observable, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"import { map } from \u0027rxjs/operators\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { paginateData } from \u0027./issue-paginator\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { getSortedData } from \u0027./issue-sorter\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { applySearchFilter } from \u0027./search-filter\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"export class IssuesDataTable extends DataSource\u003cIssue\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private filterChange \u003d new BehaviorSubject(\u0027\u0027);"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private teamFilterChange \u003d new BehaviorSubject(\u0027\u0027);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private issuesSubject \u003d new BehaviorSubject\u003cIssue[]\u003e([]);"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private issueSubscription: Subscription;"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":" public isLoading$ \u003d this.issueService.isLoading.asObservable();"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":21,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private sort: MatSort,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private paginator: MatPaginator,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private displayedColumn: string[],"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private defaultFilter?: (issue: Issue) \u003d\u003e boolean"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" super();"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" connect(): Observable\u003cIssue[]\u003e {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return this.issuesSubject.asObservable();"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" disconnect() {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.filterChange.complete();"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.teamFilterChange.complete();"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.issuesSubject.complete();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.issueSubscription.unsubscribe();"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.issueService.stopPollIssues();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" loadIssues() {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" const displayDataChanges \u003d ["},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.issueService.issues$,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.paginator.page,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.sort.sortChange,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.filterChange,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.teamFilterChange"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.issueService.startPollIssues();"},{"lineNumber":52,"author":{"gitId":"Eclipse-Dominator"},"content":" this.issueSubscription \u003d merge(...displayDataChanges)"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":54,"author":{"gitId":"-"},"content":" map(() \u003d\u003e {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" let data \u003d \u003cIssue[]\u003eObject.values(this.issueService.issues$.getValue()).reverse();"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (this.defaultFilter) {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" data \u003d data.filter(this.defaultFilter);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }"},{"lineNumber":59,"author":{"gitId":"-"},"content":" data \u003d getSortedData(this.sort, data);"},{"lineNumber":60,"author":{"gitId":"-"},"content":" data \u003d this.getFilteredTeamData(data);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" data \u003d applySearchFilter(this.filter, this.displayedColumn, this.issueService, data);"},{"lineNumber":62,"author":{"gitId":"-"},"content":" data \u003d paginateData(this.paginator, data);"},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"-"},"content":" return data;"},{"lineNumber":65,"author":{"gitId":"-"},"content":" })"},{"lineNumber":66,"author":{"gitId":"-"},"content":" )"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .subscribe((issues) \u003d\u003e {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.issuesSubject.next(issues);"},{"lineNumber":69,"author":{"gitId":"-"},"content":" });"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":" get filter(): string {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this.filterChange.value;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" set filter(filter: string) {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.filterChange.next(filter);"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" get teamFilter(): string {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this.teamFilterChange.value;"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }"},{"lineNumber":83,"author":{"gitId":"-"},"content":""},{"lineNumber":84,"author":{"gitId":"-"},"content":" set teamFilter(teamFilter: string) {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.teamFilterChange.next(teamFilter);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.issueService.setIssueTeamFilter(this.teamFilterChange.value);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" private getFilteredTeamData(data: Issue[]): Issue[] {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return data.filter((issue) \u003d\u003e {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!this.teamFilter || this.teamFilter \u003d\u003d\u003d \u0027All Teams\u0027) {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return issue.teamAssigned.id \u003d\u003d\u003d this.teamFilter;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" });"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":2,"-":95}},{"path":"src/app/shared/issue-tables/issue-tables-columns.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"export enum TABLE_COLUMNS {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" ID \u003d \u0027id\u0027,"},{"lineNumber":3,"author":{"gitId":"-"},"content":" TITLE \u003d \u0027title\u0027,"},{"lineNumber":4,"author":{"gitId":"-"},"content":" TEAM_ASSIGNED \u003d \u0027teamAssigned\u0027,"},{"lineNumber":5,"author":{"gitId":"-"},"content":" TYPE \u003d \u0027type\u0027,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" SEVERITY \u003d \u0027severity\u0027,"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" RESPONSE \u003d \u0027response\u0027,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" TESTER_DISAGREE \u003d \u0027testerDisagree\u0027,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" ASSIGNEE \u003d \u0027assignees\u0027,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" DUPLICATED_ISSUES \u003d \u0027duplicatedIssues\u0027,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" TODO \u003d \u0027Todo Remaining\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" ACTIONS \u003d \u0027actions\u0027"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":12}},{"path":"src/app/shared/issue-tables/issue-tables.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cmat-table [dataSource]\u003d\"this.issues\" matSort class\u003d\"mat-elevation-z8\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003c!-- ID Column --\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"id\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e ID \u003c/mat-header-cell\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cspan (click)\u003d\"$event.stopPropagation()\" style\u003d\"cursor: default\"\u003e{{ issue.id }}\u003c/span\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c!-- Title Column --\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"title\"\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Title \u003c/mat-header-cell\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ca class\u003d\"no-underline link-grey-dark\" [routerLink]\u003d\"\u0027issues/\u0027 + issue.id\"\u003e {{ this.fitTitleText(issue.title) }} \u003c/a\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c!-- Team Assigned Column --\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cng-container *ngIf\u003d\"userService.currentUser.role !\u003d\u003d \u0027Student\u0027\" matColumnDef\u003d\"teamAssigned\"\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Team \u003c/mat-header-cell\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e {{ (issue.teamAssigned \u0026\u0026 issue.teamAssigned.id) || \u0027-\u0027 }} \u003c/mat-cell\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Type Column --\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"type\"\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Type \u003c/mat-header-cell\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":29,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"this.labelService.setLabelStyle(this.labelService.getColorOfLabel(\u0027type\u0027, issue.type))\""},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" {{ issue.type || \u0027-\u0027 }}"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":35,"author":{"gitId":"-"},"content":" *ngIf\u003d\"issue.teamChosenType \u0026\u0026 issue.teamChosenType !\u003d issue.type\""},{"lineNumber":36,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":37,"author":{"gitId":"-"},"content":" style\u003d\"display: inline; padding: 1px 2px\""},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cmat-icon class\u003d\"arrow-right\"\u003earrow_right_alt\u003c/mat-icon\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *ngIf\u003d\"issue.teamChosenType \u0026\u0026 issue.teamChosenType !\u003d issue.type\""},{"lineNumber":43,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":44,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"this.labelService.setLabelStyle(this.labelService.getColorOfLabel(\u0027type\u0027, issue.teamChosenType))\""},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" {{ issue.teamChosenType }}"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c!-- Severity Column --\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"severity\"\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Severity \u003c/mat-header-cell\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":56,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":57,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"this.labelService.setLabelStyle(this.labelService.getColorOfLabel(\u0027severity\u0027, issue.severity))\""},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":59,"author":{"gitId":"-"},"content":" {{ issue.severity || \u0027-\u0027 }}"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":62,"author":{"gitId":"-"},"content":" *ngIf\u003d\"issue.teamChosenSeverity \u0026\u0026 issue.teamChosenSeverity !\u003d issue.severity\""},{"lineNumber":63,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":64,"author":{"gitId":"-"},"content":" style\u003d\"display: inline; margin: 3px\""},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003cmat-icon class\u003d\"arrow-right\"\u003earrow_right_alt\u003c/mat-icon\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *ngIf\u003d\"issue.teamChosenSeverity \u0026\u0026 issue.teamChosenSeverity !\u003d issue.severity\""},{"lineNumber":70,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":71,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"this.labelService.setLabelStyle(this.labelService.getColorOfLabel(\u0027severity\u0027, issue.teamChosenSeverity))\""},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":" {{ issue.teamChosenSeverity }}"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":76,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003c!--Response Tag Column--\u003e"},{"lineNumber":79,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cng-container matColumnDef\u003d\"response\"\u003e"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Response \u003c/mat-header-cell\u003e"},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":83,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":84,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" *ngIf\u003d\"issue.response\""},{"lineNumber":85,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" [ngStyle]\u003d\"this.labelService.setLabelStyle(this.labelService.getColorOfLabel(\u0027response\u0027, issue.response))\""},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":87,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" {{ issue.response }}"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":89,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cspan *ngIf\u003d\"!issue.response\" style\u003d\"margin-left: 10%\"\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003cmat-icon matTooltip\u003d\"Should not be empty\" matTooltipPosition\u003d\"above\" color\u003d\"warn\"\u003ewarning\u003c/mat-icon\u003e"},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003c!--Assignee Column--\u003e"},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"assignees\"\u003e"},{"lineNumber":97,"author":{"gitId":"-"},"content":" \u003cmat-header-cell mat-header-cell *matHeaderCellDef mat-sort-header\u003e Assignees \u003c/mat-header-cell\u003e"},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u003cspan (click)\u003d\"$event.stopPropagation()\" style\u003d\"cursor: default\" *ngIf\u003d\"issue.assignees.length !\u003d\u003d 0\"\u003e"},{"lineNumber":100,"author":{"gitId":"-"},"content":" {{ issue.assignees.join(\u0027, \u0027) }}"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"issue.assignees.length \u003d\u003d\u003d 0\" style\u003d\"margin-left: 5%\"\u003e"},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u003cmat-icon matTooltip\u003d\"We strongly recommend assigning all issues to someone\" matTooltipPosition\u003d\"above\" style\u003d\"color: #ffab40\"\u003e"},{"lineNumber":104,"author":{"gitId":"-"},"content":" warning"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u003c/mat-icon\u003e"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u003c!-- Duplicated Issues Column --\u003e"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"duplicatedIssues\"\u003e"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef\u003e Duplicates \u003c/mat-header-cell\u003e"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"(issueService.getDuplicateIssuesFor(issue) | async).length \u003d\u003d\u003d 0\"\u003e-\u003c/div\u003e"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u003cmat-chip-list"},{"lineNumber":116,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let duplicateIssue of issueService.getDuplicateIssuesFor(issue) | async\""},{"lineNumber":117,"author":{"gitId":"-"},"content":" style\u003d\"display: inline-block; margin-left: 5px\""},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":119,"author":{"gitId":"-"},"content":" \u003cmat-chip"},{"lineNumber":120,"author":{"gitId":"-"},"content":" [routerLink]\u003d\"[\u0027issues/\u0027 + duplicateIssue.id]\""},{"lineNumber":121,"author":{"gitId":"-"},"content":" [matTooltip]\u003d\"duplicateIssue.title\""},{"lineNumber":122,"author":{"gitId":"-"},"content":" matTooltipPosition\u003d\"above\""},{"lineNumber":123,"author":{"gitId":"-"},"content":" style\u003d\"font-size: 12px; cursor: pointer\""},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":125,"author":{"gitId":"-"},"content":" #{{ duplicateIssue.id }}"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \u003c/mat-chip\u003e"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u003c/mat-chip-list\u003e"},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":130,"author":{"gitId":"-"},"content":""},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u003c!-- To do Column --\u003e"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"Todo Remaining\"\u003e"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Todo Remaining \u003c/mat-header-cell\u003e"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"isTodoListChecked(issue) \u0026\u0026 issue.issueDisputes.length \u003e 0\"\u003e \u003cfont color\u003d\"green\"\u003eAll tasks are completed\u003c/font\u003e \u003c/span\u003e"},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"!isTodoListChecked(issue)\"\u003e"},{"lineNumber":137,"author":{"gitId":"-"},"content":" \u003cfont color\u003d\"red\""},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u003e{{ issue.issueDisputes.length - todoFinished(issue) }}/{{ issue.issueDisputes.length }} tasks pending.\u003c/font"},{"lineNumber":139,"author":{"gitId":"-"},"content":" \u003e\u003c/span"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003cprogress"},{"lineNumber":142,"author":{"gitId":"-"},"content":" *ngIf\u003d\"issue.issueDisputes.length \u003e 0\""},{"lineNumber":143,"author":{"gitId":"-"},"content":" value\u003d\"{{ todoFinished(issue) }}\""},{"lineNumber":144,"author":{"gitId":"-"},"content":" max\u003d\"{{ issue.issueDisputes.length }}\""},{"lineNumber":145,"author":{"gitId":"-"},"content":" role\u003d\"progressbar\""},{"lineNumber":146,"author":{"gitId":"-"},"content":" style\u003d\"width: 100%\""},{"lineNumber":147,"author":{"gitId":"-"},"content":" aria-valuenow\u003d\"100\""},{"lineNumber":148,"author":{"gitId":"-"},"content":" aria-valuemin\u003d\"0\""},{"lineNumber":149,"author":{"gitId":"-"},"content":" aria-valuemax\u003d\"100\""},{"lineNumber":150,"author":{"gitId":"-"},"content":" \u003e\u003c/progress\u003e"},{"lineNumber":151,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"issue.issueDisputes.length \u003d\u003d\u003d 0\"\u003e No Todo List for this issue \u003c/span\u003e"},{"lineNumber":152,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":153,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":154,"author":{"gitId":"-"},"content":""},{"lineNumber":155,"author":{"gitId":"-"},"content":" \u003c!--Tester Disagree Column--\u003e"},{"lineNumber":156,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"testerDisagree\"\u003e"},{"lineNumber":157,"author":{"gitId":"-"},"content":" \u003cmat-header-cell mat-header-cell *matHeaderCellDef mat-sort-header\u003eResponse\u003c/mat-header-cell\u003e"},{"lineNumber":158,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":159,"author":{"gitId":"-"},"content":" \u003c!-- Response Agree/Disagree colours are the same as Response Agree/Rejected label colours for uniformity in the app --\u003e"},{"lineNumber":160,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":161,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":162,"author":{"gitId":"-"},"content":" *ngIf\u003d\"issue.testerDisagree\""},{"lineNumber":163,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"this.labelService.setLabelStyle(this.labelService.getColorOfLabel(\u0027response\u0027, \u0027Rejected\u0027))\""},{"lineNumber":164,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":165,"author":{"gitId":"-"},"content":" Disagree"},{"lineNumber":166,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":168,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":169,"author":{"gitId":"-"},"content":" *ngIf\u003d\"!issue.testerDisagree\""},{"lineNumber":170,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"this.labelService.setLabelStyle(this.labelService.getColorOfLabel(\u0027response\u0027, \u0027Accepted\u0027))\""},{"lineNumber":171,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Agree"},{"lineNumber":173,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":174,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":175,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":176,"author":{"gitId":"-"},"content":""},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u003c!-- Action Buttons Column --\u003e"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"actions\"\u003e"},{"lineNumber":179,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef\u003e Actions \u003c/mat-header-cell\u003e"},{"lineNumber":180,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":181,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":182,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":183,"author":{"gitId":"-"},"content":" matTooltip\u003d\"View this issue on GitHub\""},{"lineNumber":184,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isActionVisible(action_buttons.VIEW_IN_WEB)\""},{"lineNumber":185,"author":{"gitId":"-"},"content":" (click)\u003d\"this.viewIssueInBrowser(issue.id, $event)\""},{"lineNumber":186,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.8)\""},{"lineNumber":187,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eopen_in_new\u003c/mat-icon\u003e"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":190,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":191,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isResponseEditable() \u0026\u0026 !issue.status \u0026\u0026 this.isActionVisible(action_buttons.RESPOND_TO_ISSUE); else tryEditIssue\""},{"lineNumber":192,"author":{"gitId":"-"},"content":" [routerLink]\u003d\"\u0027issues/\u0027 + issue.id\""},{"lineNumber":193,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":194,"author":{"gitId":"-"},"content":" color\u003d\"accent\""},{"lineNumber":195,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.8)\""},{"lineNumber":196,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Respond to this issue\""},{"lineNumber":197,"author":{"gitId":"-"},"content":" (click)\u003d\"this.logIssueRespondRouting(issue.id)\""},{"lineNumber":198,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":199,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003efeedback\u003c/mat-icon\u003e"},{"lineNumber":200,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":201,"author":{"gitId":"-"},"content":" \u003cng-template #tryEditIssue\u003e"},{"lineNumber":202,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":203,"author":{"gitId":"-"},"content":" *ngIf\u003d\"permissions.isIssueEditable() \u0026\u0026 this.isActionVisible(action_buttons.FIX_ISSUE)\""},{"lineNumber":204,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":205,"author":{"gitId":"-"},"content":" color\u003d\"accent\""},{"lineNumber":206,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.8)\""},{"lineNumber":207,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Edit this issue\""},{"lineNumber":208,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":209,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eedit\u003c/mat-icon\u003e"},{"lineNumber":210,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":211,"author":{"gitId":"-"},"content":" \u003c/ng-template\u003e"},{"lineNumber":212,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":213,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isResponseEditable() \u0026\u0026 issue.status \u0026\u0026 this.isActionVisible(action_buttons.MARK_AS_RESPONDED)\""},{"lineNumber":214,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":215,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":216,"author":{"gitId":"-"},"content":" (click)\u003d\"markAsResponded(issue, $event)\""},{"lineNumber":217,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.8)\""},{"lineNumber":218,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Mark this issue as Responded\""},{"lineNumber":219,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003echeck_circle\u003c/mat-icon\u003e"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":223,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":224,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Mark this issue as Pending\""},{"lineNumber":225,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":226,"author":{"gitId":"-"},"content":" (click)\u003d\"markAsPending(issue, $event)\""},{"lineNumber":227,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.8)\""},{"lineNumber":228,"author":{"gitId":"-"},"content":" *ngIf\u003d\""},{"lineNumber":229,"author":{"gitId":"-"},"content":" (userService.currentUser.role \u003d\u003d\u003d \u0027Student\u0027 || userService.currentUser.role \u003d\u003d\u003d \u0027Admin\u0027) \u0026\u0026"},{"lineNumber":230,"author":{"gitId":"-"},"content":" this.isActionVisible(action_buttons.MARK_AS_PENDING)"},{"lineNumber":231,"author":{"gitId":"-"},"content":" \""},{"lineNumber":232,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":233,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003ecancel\u003c/mat-icon\u003e"},{"lineNumber":234,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":236,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":238,"author":{"gitId":"-"},"content":" *ngIf\u003d\"permissions.isIssueDeletable() \u0026\u0026 !issuesPendingDeletion[issue.id] \u0026\u0026 this.isActionVisible(action_buttons.DELETE_ISSUE)\""},{"lineNumber":239,"author":{"gitId":"-"},"content":" (click)\u003d\"openDeleteDialog(issue.id, $event); $event.stopPropagation()\""},{"lineNumber":240,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Delete this issue\""},{"lineNumber":241,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.8)\""},{"lineNumber":242,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":243,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003edelete_outline\u003c/mat-icon\u003e"},{"lineNumber":244,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":245,"author":{"gitId":"-"},"content":" \u003cmat-spinner"},{"lineNumber":246,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":247,"author":{"gitId":"-"},"content":" [diameter]\u003d\"25\""},{"lineNumber":248,"author":{"gitId":"-"},"content":" style\u003d\"display: inline; padding-right: 30px; margin-left: 5px\""},{"lineNumber":249,"author":{"gitId":"-"},"content":" *ngIf\u003d\"issuesPendingDeletion[issue.id] \u0026\u0026 this.isActionVisible(action_buttons.DELETE_ISSUE)\""},{"lineNumber":250,"author":{"gitId":"-"},"content":" \u003e\u003c/mat-spinner\u003e"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":253,"author":{"gitId":"-"},"content":""},{"lineNumber":254,"author":{"gitId":"-"},"content":" \u003cmat-header-row *matHeaderRowDef\u003d\"this.headers\"\u003e\u003c/mat-header-row\u003e\u003e"},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u003cmat-row"},{"lineNumber":256,"author":{"gitId":"-"},"content":" *matRowDef\u003d\"let issue; columns: this.headers\""},{"lineNumber":257,"author":{"gitId":"-"},"content":" (click)\u003d\"this.logIssueEditRouting(issue.id)\""},{"lineNumber":258,"author":{"gitId":"-"},"content":" [routerLink]\u003d\"\u0027issues/\u0027 + issue.id\""},{"lineNumber":259,"author":{"gitId":"-"},"content":" style\u003d\"cursor: pointer\""},{"lineNumber":260,"author":{"gitId":"-"},"content":" \u003e\u003c/mat-row\u003e"},{"lineNumber":261,"author":{"gitId":"-"},"content":"\u003c/mat-table\u003e"},{"lineNumber":262,"author":{"gitId":"-"},"content":"\u003cmat-card *ngIf\u003d\"this.issues.isLoading$ | async\" style\u003d\"display: flex; justify-content: center; align-items: center\"\u003e"},{"lineNumber":263,"author":{"gitId":"-"},"content":" \u003cmat-progress-spinner color\u003d\"primary\" mode\u003d\"indeterminate\" diameter\u003d\"50\" strokeWidth\u003d\"5\"\u003e\u003c/mat-progress-spinner\u003e"},{"lineNumber":264,"author":{"gitId":"-"},"content":"\u003c/mat-card\u003e"},{"lineNumber":265,"author":{"gitId":"-"},"content":"\u003cmat-paginator [pageSize]\u003d\"20\" [pageSizeOptions]\u003d\"[10, 20, 50]\"\u003e\u003c/mat-paginator\u003e"}],"authorContributionMap":{"vigneshsankariyer1234567890":5,"-":260}},{"path":"src/app/shared/issue-tables/issue-tables.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, Input, OnInit, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatSnackBar } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { finalize } from \u0027rxjs/operators\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Issue, STATUS } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../core/services/dialog.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../core/services/github.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../core/services/label.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../core/services/permission.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../core/services/user.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { UndoActionComponent } from \u0027../../shared/action-toasters/undo-action/undo-action.component\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { IssuesDataTable } from \u0027./IssuesDataTable\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"export enum ACTION_BUTTONS {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" VIEW_IN_WEB,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" MARK_AS_RESPONDED,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" MARK_AS_PENDING,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" RESPOND_TO_ISSUE,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" FIX_ISSUE,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" DELETE_ISSUE"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":29,"author":{"gitId":"-"},"content":" selector: \u0027app-issue-tables\u0027,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" templateUrl: \u0027./issue-tables.component.html\u0027,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./issue-tables.component.css\u0027]"},{"lineNumber":32,"author":{"gitId":"-"},"content":"})"},{"lineNumber":33,"author":{"gitId":"-"},"content":"export class IssueTablesComponent implements OnInit, AfterViewInit {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" snackBarAutoCloseTime \u003d 3000;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Input() headers: string[];"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Input() actions: ACTION_BUTTONS[];"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Input() filters?: any \u003d undefined;"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" @ViewChild(MatSort, { static: true }) sort: MatSort;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" issues: IssuesDataTable;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" issuesPendingDeletion: { [id: number]: boolean };"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" public readonly action_buttons \u003d ACTION_BUTTONS;"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Messages for the modal popup window upon deleting an issue"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private readonly deleteIssueModalMessages \u003d [\u0027Do you wish to delete this issue?\u0027, \u0027This action is irreversible!\u0027];"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private readonly yesButtonModalMessage \u003d \u0027Yes, I wish to delete this issue\u0027;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private readonly noButtonModalMessage \u003d \"No, I don\u0027t wish to delete this issue\";"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":54,"author":{"gitId":"-"},"content":" public userService: UserService,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public permissions: PermissionService,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public labelService: LabelService,"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public issueService: IssueService,"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private logger: LoggingService,"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private dialogService: DialogService,"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private snackBar: MatSnackBar \u003d null"},{"lineNumber":64,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.issues \u003d new IssuesDataTable(this.issueService, this.sort, this.paginator, this.headers, this.filters);"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.issuesPendingDeletion \u003d {};"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.issues.loadIssues();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" });"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Formats the title text to account for those that contain long words."},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @param title - Title of Issue that is to be displayed in the Table Row."},{"lineNumber":80,"author":{"gitId":"-"},"content":" */"},{"lineNumber":81,"author":{"gitId":"-"},"content":" fitTitleText(title: string): string {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // Arbitrary Length of Characters beyond which an overflow occurs."},{"lineNumber":83,"author":{"gitId":"-"},"content":" const MAX_WORD_LENGTH \u003d 43;"},{"lineNumber":84,"author":{"gitId":"-"},"content":" const SPLITTER_TEXT \u003d \u0027 \u0027;"},{"lineNumber":85,"author":{"gitId":"-"},"content":" const ELLIPSES \u003d \u0027...\u0027;"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" return title"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .split(SPLITTER_TEXT)"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .map((word) \u003d\u003e {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (word.length \u003e MAX_WORD_LENGTH) {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return word.substring(0, MAX_WORD_LENGTH - 5).concat(ELLIPSES);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return word;"},{"lineNumber":94,"author":{"gitId":"-"},"content":" })"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .join(SPLITTER_TEXT);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" isActionVisible(action: ACTION_BUTTONS): boolean {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this.actions.includes(action);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" markAsResponded(issue: Issue, event: Event) {"},{"lineNumber":103,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`IssueTablesComponent: Marking Issue ${issue.id} as Responded`);"},{"lineNumber":104,"author":{"gitId":"-"},"content":" const newIssue \u003d issue.clone(this.phaseService.currentPhase);"},{"lineNumber":105,"author":{"gitId":"-"},"content":" newIssue.status \u003d STATUS.Done;"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.issueService.updateIssue(newIssue).subscribe("},{"lineNumber":107,"author":{"gitId":"-"},"content":" (updatedIssue) \u003d\u003e {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" this.issueService.updateLocalStore(updatedIssue);"},{"lineNumber":109,"author":{"gitId":"-"},"content":" },"},{"lineNumber":110,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }"},{"lineNumber":113,"author":{"gitId":"-"},"content":" );"},{"lineNumber":114,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":" isResponseEditable() {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return this.permissions.isTeamResponseEditable() || this.permissions.isTesterResponseEditable();"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" markAsPending(issue: Issue, event: Event) {"},{"lineNumber":122,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`IssueTablesComponent: Marking Issue ${issue.id} as Pending`);"},{"lineNumber":123,"author":{"gitId":"-"},"content":" const newIssue \u003d issue.clone(this.phaseService.currentPhase);"},{"lineNumber":124,"author":{"gitId":"-"},"content":" newIssue.status \u003d STATUS.Incomplete;"},{"lineNumber":125,"author":{"gitId":"-"},"content":" this.issueService.updateIssue(newIssue).subscribe("},{"lineNumber":126,"author":{"gitId":"-"},"content":" (updatedIssue) \u003d\u003e {"},{"lineNumber":127,"author":{"gitId":"-"},"content":" this.issueService.updateLocalStore(updatedIssue);"},{"lineNumber":128,"author":{"gitId":"-"},"content":" },"},{"lineNumber":129,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":130,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }"},{"lineNumber":132,"author":{"gitId":"-"},"content":" );"},{"lineNumber":133,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }"},{"lineNumber":135,"author":{"gitId":"-"},"content":""},{"lineNumber":136,"author":{"gitId":"-"},"content":" logIssueRespondRouting(id: number) {"},{"lineNumber":137,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`IssueTablesComponent: Proceeding to Respond to Issue ${id}`);"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }"},{"lineNumber":139,"author":{"gitId":"-"},"content":""},{"lineNumber":140,"author":{"gitId":"-"},"content":" logIssueEditRouting(id: number) {"},{"lineNumber":141,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`IssueTablesComponent: Proceeding to Edit Issue ${id}`);"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }"},{"lineNumber":143,"author":{"gitId":"-"},"content":""},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Gets the number of resolved disputes."},{"lineNumber":146,"author":{"gitId":"-"},"content":" */"},{"lineNumber":147,"author":{"gitId":"-"},"content":" todoFinished(issue: Issue): number {"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return issue.issueDisputes.length - issue.numOfUnresolvedDisputes();"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }"},{"lineNumber":150,"author":{"gitId":"-"},"content":""},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Checks if all the disputes are resolved."},{"lineNumber":153,"author":{"gitId":"-"},"content":" */"},{"lineNumber":154,"author":{"gitId":"-"},"content":" isTodoListChecked(issue: Issue): boolean {"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return issue.issueDisputes \u0026\u0026 issue.numOfUnresolvedDisputes() \u003d\u003d\u003d 0;"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }"},{"lineNumber":157,"author":{"gitId":"-"},"content":""},{"lineNumber":158,"author":{"gitId":"-"},"content":" viewIssueInBrowser(id: number, event: Event) {"},{"lineNumber":159,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`IssueTablesComponent: Opening Issue ${id} on Github`);"},{"lineNumber":160,"author":{"gitId":"-"},"content":" this.githubService.viewIssueInBrowser(id, event);"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }"},{"lineNumber":162,"author":{"gitId":"-"},"content":""},{"lineNumber":163,"author":{"gitId":"-"},"content":" deleteIssue(id: number, event: Event) {"},{"lineNumber":164,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`IssueTablesComponent: Deleting Issue ${id}`);"},{"lineNumber":165,"author":{"gitId":"-"},"content":" this.issuesPendingDeletion \u003d {"},{"lineNumber":166,"author":{"gitId":"-"},"content":" ...this.issuesPendingDeletion,"},{"lineNumber":167,"author":{"gitId":"-"},"content":" [id]: true"},{"lineNumber":168,"author":{"gitId":"-"},"content":" };"},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.issueService"},{"lineNumber":170,"author":{"gitId":"-"},"content":" .deleteIssue(id)"},{"lineNumber":171,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":172,"author":{"gitId":"-"},"content":" finalize(() \u003d\u003e {"},{"lineNumber":173,"author":{"gitId":"-"},"content":" const { [id]: issueRemoved, ...theRest } \u003d this.issuesPendingDeletion;"},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.issuesPendingDeletion \u003d theRest;"},{"lineNumber":175,"author":{"gitId":"-"},"content":" })"},{"lineNumber":176,"author":{"gitId":"-"},"content":" )"},{"lineNumber":177,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":178,"author":{"gitId":"-"},"content":" (removedIssue) \u003d\u003e {},"},{"lineNumber":179,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":180,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }"},{"lineNumber":182,"author":{"gitId":"-"},"content":" );"},{"lineNumber":183,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":184,"author":{"gitId":"-"},"content":""},{"lineNumber":185,"author":{"gitId":"-"},"content":" let snackBarRef \u003d null;"},{"lineNumber":186,"author":{"gitId":"-"},"content":" snackBarRef \u003d this.snackBar.openFromComponent(UndoActionComponent, {"},{"lineNumber":187,"author":{"gitId":"-"},"content":" data: { message: `Deleted issue ${id}` },"},{"lineNumber":188,"author":{"gitId":"-"},"content":" duration: this.snackBarAutoCloseTime"},{"lineNumber":189,"author":{"gitId":"-"},"content":" });"},{"lineNumber":190,"author":{"gitId":"-"},"content":" snackBarRef.onAction().subscribe(() \u003d\u003e {"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.undeleteIssue(id, event);"},{"lineNumber":192,"author":{"gitId":"-"},"content":" });"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }"},{"lineNumber":194,"author":{"gitId":"-"},"content":""},{"lineNumber":195,"author":{"gitId":"-"},"content":" undeleteIssue(id: number, event: Event) {"},{"lineNumber":196,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`IssueTablesComponent: Undeleting Issue ${id}`);"},{"lineNumber":197,"author":{"gitId":"-"},"content":" this.issueService.undeleteIssue(id).subscribe("},{"lineNumber":198,"author":{"gitId":"-"},"content":" (reopenedIssue) \u003d\u003e {},"},{"lineNumber":199,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":200,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }"},{"lineNumber":202,"author":{"gitId":"-"},"content":" );"},{"lineNumber":203,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":204,"author":{"gitId":"-"},"content":""},{"lineNumber":205,"author":{"gitId":"-"},"content":" this.snackBar.open(`Restored issue ${id}`, \u0027\u0027, { duration: this.snackBarAutoCloseTime });"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }"},{"lineNumber":207,"author":{"gitId":"-"},"content":""},{"lineNumber":208,"author":{"gitId":"-"},"content":" openDeleteDialog(id: number, event: Event) {"},{"lineNumber":209,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openUserConfirmationModal("},{"lineNumber":210,"author":{"gitId":"-"},"content":" this.deleteIssueModalMessages,"},{"lineNumber":211,"author":{"gitId":"-"},"content":" this.yesButtonModalMessage,"},{"lineNumber":212,"author":{"gitId":"-"},"content":" this.noButtonModalMessage"},{"lineNumber":213,"author":{"gitId":"-"},"content":" );"},{"lineNumber":214,"author":{"gitId":"-"},"content":""},{"lineNumber":215,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (res) {"},{"lineNumber":217,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`IssueTablesComponent: Deleting issue ${id}`);"},{"lineNumber":218,"author":{"gitId":"-"},"content":" this.deleteIssue(id, event);"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }"},{"lineNumber":220,"author":{"gitId":"-"},"content":" });"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }"},{"lineNumber":222,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":9,"-":213}},{"path":"src/app/shared/issue/conflict-dialog/conflict-dialog.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatTabChangeEvent } from \u0027@angular/material/tabs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { DomSanitizer, SafeHtml } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Conflict } from \u0027../../../core/models/conflict/conflict.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../../core/services/label.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A Component that is in a form of a dialog modal and its purpose is to"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * display the difference between 2 pieces of text."},{"lineNumber":12,"author":{"gitId":"-"},"content":" */"},{"lineNumber":13,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":14,"author":{"gitId":"-"},"content":" selector: \u0027app-conflict-dialog\u0027,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" templateUrl: \u0027conflict-dialog.component.html\u0027,"},{"lineNumber":16,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./conflict-dialog.component.css\u0027]"},{"lineNumber":17,"author":{"gitId":"-"},"content":"})"},{"lineNumber":18,"author":{"gitId":"-"},"content":"export class ConflictDialogComponent {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" isOnPreview \u003d false;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" isReady \u003d false;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" showDiff \u003d true;"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" diffHtml: SafeHtml;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" updatedHtml: SafeHtml;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":27,"author":{"gitId":"-"},"content":" public dialogRef: MatDialogRef\u003cConflictDialogComponent\u003e,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Inject(MAT_DIALOG_DATA) public data: Conflict,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private sanitizer: DomSanitizer,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public labelService: LabelService,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public issueService: IssueService"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.diffHtml \u003d this.sanitizer.bypassSecurityTrustHtml(data.getHtmlDiffString());"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.updatedHtml \u003d this.sanitizer.bypassSecurityTrustHtml(data.getHtmlUpdatedString());"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.isReady \u003d true;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" close(): void {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.dialogRef.close();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" handleChangeShowDiff() {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.showDiff \u003d !this.showDiff;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" handleTabChange(event: MatTabChangeEvent): void {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.isOnPreview \u003d event.index \u003d\u003d\u003d 1;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":48}},{"path":"src/app/shared/issue/description/description.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"span {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" vertical-align: middle;"},{"lineNumber":3,"author":{"gitId":"-"},"content":" margin-left: 5px;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":":host ::ng-deep .mat-progress-spinner {"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" color: rgba(0, 0, 0, 0.5);"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" display: inline-block;"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" vertical-align: middle;"},{"lineNumber":10,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" margin-left: 5px;"},{"lineNumber":11,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":7,"-":4}},{"path":"src/app/shared/issue/description/description.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003ch3 class\u003d\"mat-title\"\u003e{{ descriptionTitle }}\u003c/h3\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003cform [formGroup]\u003d\"issueDescriptionForm\" #myForm\u003d\"ngForm\" (ngSubmit)\u003d\"updateDescription(myForm)\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"timeline-comment\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"timeline-header\"\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cspan\u003e \u003cstrong\u003e Tester \u003c/strong\u003e posted on {{ issue.created_at }}. \u003c/span\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cbutton style\u003d\"float: right\" mat-button *ngIf\u003d\"permissions.isIssueDescriptionEditable() \u0026\u0026 !isEditing\" (click)\u003d\"changeToEditMode()\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" Edit"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"!isEditing\" class\u003d\"comment\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmarkdown [data]\u003d\"issue.description\"\u003e\u003c/markdown\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"isEditing\"\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003capp-comment-editor"},{"lineNumber":15,"author":{"gitId":"-"},"content":" [id]\u003d\"\u0027description\u0027\""},{"lineNumber":16,"author":{"gitId":"-"},"content":" [commentField]\u003d\"this.issueDescriptionForm.get(\u0027description\u0027)\""},{"lineNumber":17,"author":{"gitId":"-"},"content":" [commentForm]\u003d\"this.issueDescriptionForm\""},{"lineNumber":18,"author":{"gitId":"-"},"content":" [(isFormPending)]\u003d\"this.isSavePending\""},{"lineNumber":19,"author":{"gitId":"-"},"content":" [(submitButtonText)]\u003d\"this.submitButtonText\""},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/app-comment-editor\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"editor-actions\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":24,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":25,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":26,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":27,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isSavePending\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" mat-raised-button"},{"lineNumber":29,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" (click)\u003d\"viewChanges()\""},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" View Updated Description"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":35,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":36,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":37,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isSavePending\""},{"lineNumber":38,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":39,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":40,"author":{"gitId":"-"},"content":" (click)\u003d\"openCancelDialogIfModified()\""},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Cancel"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":45,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":46,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":47,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":48,"author":{"gitId":"-"},"content":" [disabled]\u003d\"issueDescriptionForm.invalid || isSavePending\""},{"lineNumber":49,"author":{"gitId":"-"},"content":" mat-raised-button"},{"lineNumber":50,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ submitButtonText }}"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" class\u003d\"editor-action additional-editor-style\""},{"lineNumber":56,"author":{"gitId":"-"},"content":" *ngIf\u003d\"!conflict\""},{"lineNumber":57,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":58,"author":{"gitId":"-"},"content":" [disabled]\u003d\"issueDescriptionForm.invalid || isSavePending\""},{"lineNumber":59,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":60,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cmat-button-content\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" {{ submitButtonText }}"},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cng-container #loadingSpinnerContainer\u003e\u003c/ng-container\u003e"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003c/mat-button-content\u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003c/form\u003e"}],"authorContributionMap":{"Eclipse-Dominator":1,"vigneshsankariyer1234567890":4,"-":65}},{"path":"src/app/shared/issue/description/description.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Component, EventEmitter, Input, OnInit, Output, ViewChild, ViewContainerRef } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormBuilder, FormGroup, NgForm } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { throwError } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Conflict } from \u0027../../../core/models/conflict/conflict.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../../core/services/dialog.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../core/services/error-handling.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":11,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoadingService } from \u0027../../../core/services/loading.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../../core/services/permission.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../core/services/phase.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { SUBMIT_BUTTON_TEXT } from \u0027../../view-issue/view-issue.component\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { ConflictDialogComponent } from \u0027../conflict-dialog/conflict-dialog.component\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" selector: \u0027app-issue-description\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" templateUrl: \u0027./description.component.html\u0027,"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" styleUrls: [\u0027./description.component.css\u0027],"},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" providers: [LoadingService]"},{"lineNumber":22,"author":{"gitId":"-"},"content":"})"},{"lineNumber":23,"author":{"gitId":"-"},"content":"export class DescriptionComponent implements OnInit {"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // The container of the loading spinner"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" @ViewChild(\u0027loadingSpinnerContainer\u0027, {"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" read: ViewContainerRef,"},{"lineNumber":27,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" static: false"},{"lineNumber":28,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":29,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingSpinnerContainer: ViewContainerRef;"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" isSavePending \u003d false;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" issueDescriptionForm: FormGroup;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" conflict: Conflict;"},{"lineNumber":34,"author":{"gitId":"-"},"content":" submitButtonText: string;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Input() issue: Issue;"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() descriptionTitle: string;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Input() isEditing: boolean;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Output() issueUpdated \u003d new EventEmitter\u003cIssue\u003e();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Output() changeEditState \u003d new EventEmitter\u003cboolean\u003e();"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Messages for the modal popup window upon cancelling edit"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private readonly cancelEditModalMessages \u003d [\u0027Do you wish to cancel?\u0027, \u0027Your changes will be discarded.\u0027];"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private readonly yesButtonModalMessage \u003d \u0027Cancel\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private readonly noButtonModalMessage \u003d \u0027Continue editing\u0027;"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":48,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private dialog: MatDialog,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public permissions: PermissionService,"},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private dialogService: DialogService,"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public loadingService: LoadingService"},{"lineNumber":56,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" showSpinner(): void {"},{"lineNumber":59,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService.addViewContainerRef(this.loadingSpinnerContainer).showLoader();"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isSavePending \u003d true;"},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" hideSpinner(): void {"},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService.hideLoader();"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isSavePending \u003d false;"},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.issueDescriptionForm \u003d this.formBuilder.group({"},{"lineNumber":70,"author":{"gitId":"-"},"content":" description: [\u0027\u0027]"},{"lineNumber":71,"author":{"gitId":"-"},"content":" });"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.SAVE;"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Build the loading service spinner"},{"lineNumber":74,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService"},{"lineNumber":75,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addAnimationMode(\u0027indeterminate\u0027)"},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addSpinnerOptions({ diameter: 15, strokeWidth: 2 })"},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addTheme(\u0027warn\u0027)"},{"lineNumber":78,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addCssClasses([\u0027mat-progress-spinner\u0027]);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" changeToEditMode() {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.changeEditState.emit(true);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.issueDescriptionForm.setValue({"},{"lineNumber":84,"author":{"gitId":"-"},"content":" description: this.issue[\u0027description\u0027] || \u0027\u0027"},{"lineNumber":85,"author":{"gitId":"-"},"content":" });"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":""},{"lineNumber":88,"author":{"gitId":"-"},"content":" updateDescription(form: NgForm) {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (this.issueDescriptionForm.invalid) {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.showSpinner();"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.issueService"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .getLatestIssue(this.issue.id)"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":97,"author":{"gitId":"-"},"content":" map((issue: Issue) \u003d\u003e {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return issue.description \u003d\u003d\u003d this.issue.description;"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":100,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((isSaveToUpdate: boolean) \u003d\u003e {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (isSaveToUpdate || this.submitButtonText \u003d\u003d\u003d SUBMIT_BUTTON_TEXT.OVERWRITE) {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this.issueService.updateIssue(this.getUpdatedIssue());"},{"lineNumber":103,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.conflict \u003d new Conflict(this.issue.description, this.issueService.issues[this.issue.id].description);"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.OVERWRITE;"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.viewChanges();"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return throwError(\u0027The content you are editing has changed. Please verify the changes and try again.\u0027);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }"},{"lineNumber":109,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":110,"author":{"gitId":"-"},"content":" )"},{"lineNumber":111,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":112,"author":{"gitId":"-"},"content":" (editedIssue: Issue) \u003d\u003e {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(editedIssue);"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.resetToDefault();"},{"lineNumber":115,"author":{"gitId":"-"},"content":" form.resetForm();"},{"lineNumber":116,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.hideSpinner();"},{"lineNumber":117,"author":{"gitId":"-"},"content":" },"},{"lineNumber":118,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":119,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":120,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.hideSpinner();"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }"},{"lineNumber":122,"author":{"gitId":"-"},"content":" );"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }"},{"lineNumber":124,"author":{"gitId":"-"},"content":""},{"lineNumber":125,"author":{"gitId":"-"},"content":" viewChanges(): void {"},{"lineNumber":126,"author":{"gitId":"-"},"content":" this.dialog.open(ConflictDialogComponent, {"},{"lineNumber":127,"author":{"gitId":"-"},"content":" data: this.conflict,"},{"lineNumber":128,"author":{"gitId":"-"},"content":" autoFocus: false"},{"lineNumber":129,"author":{"gitId":"-"},"content":" });"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }"},{"lineNumber":131,"author":{"gitId":"-"},"content":""},{"lineNumber":132,"author":{"gitId":"-"},"content":" resetToDefault(): void {"},{"lineNumber":133,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.SAVE;"},{"lineNumber":134,"author":{"gitId":"-"},"content":" this.conflict \u003d undefined;"},{"lineNumber":135,"author":{"gitId":"-"},"content":" this.changeEditState.emit(false);"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }"},{"lineNumber":137,"author":{"gitId":"-"},"content":""},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * When user exits exit mode, we will need to sync the issue in IssueService with this component."},{"lineNumber":140,"author":{"gitId":"-"},"content":" */"},{"lineNumber":141,"author":{"gitId":"-"},"content":" cancelEditMode(): void {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" this.issueService.getIssue(this.issue.id).subscribe((issue: Issue) \u003d\u003e {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(issue);"},{"lineNumber":144,"author":{"gitId":"-"},"content":" this.resetToDefault();"},{"lineNumber":145,"author":{"gitId":"-"},"content":" });"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }"},{"lineNumber":147,"author":{"gitId":"-"},"content":""},{"lineNumber":148,"author":{"gitId":"-"},"content":" openCancelDialogIfModified(): void {"},{"lineNumber":149,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const isModified \u003d this.dialogService.checkIfFieldIsModified(this.issueDescriptionForm, \u0027description\u0027, \u0027description\u0027, this.issue);"},{"lineNumber":150,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.dialogService.performActionIfModified("},{"lineNumber":151,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" isModified,"},{"lineNumber":152,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" () \u003d\u003e this.openCancelDialog(),"},{"lineNumber":153,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" () \u003d\u003e this.cancelEditMode()"},{"lineNumber":154,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }"},{"lineNumber":156,"author":{"gitId":"-"},"content":""},{"lineNumber":157,"author":{"gitId":"-"},"content":" openCancelDialog(): void {"},{"lineNumber":158,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openUserConfirmationModal("},{"lineNumber":159,"author":{"gitId":"-"},"content":" this.cancelEditModalMessages,"},{"lineNumber":160,"author":{"gitId":"-"},"content":" this.yesButtonModalMessage,"},{"lineNumber":161,"author":{"gitId":"-"},"content":" this.noButtonModalMessage"},{"lineNumber":162,"author":{"gitId":"-"},"content":" );"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" if (res) {"},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.cancelEditMode();"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }"},{"lineNumber":168,"author":{"gitId":"-"},"content":" });"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }"},{"lineNumber":170,"author":{"gitId":"-"},"content":""},{"lineNumber":171,"author":{"gitId":"-"},"content":" private getUpdatedIssue(): Issue {"},{"lineNumber":172,"author":{"gitId":"-"},"content":" const newIssue \u003d this.issue.clone(this.phaseService.currentPhase);"},{"lineNumber":173,"author":{"gitId":"-"},"content":" newIssue.description \u003d Issue.updateDescription(this.issueDescriptionForm.get(\u0027description\u0027).value);"},{"lineNumber":174,"author":{"gitId":"-"},"content":" return newIssue;"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":1,"vigneshsankariyer1234567890":41,"-":134}},{"path":"src/app/shared/issue/duplicateOf/duplicate-of.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormControl } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatCheckbox } from \u0027@angular/material/checkbox\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { MatSelect, MatSelectChange } from \u0027@angular/material/select\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Observable, ReplaySubject, Subject } from \u0027rxjs\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { first, map, takeUntil } from \u0027rxjs/operators\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../core/services/error-handling.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../../core/services/permission.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../core/services/phase.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027../../issue-tables/issue-tables-columns\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { applySearchFilter } from \u0027../../issue-tables/search-filter\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":16,"author":{"gitId":"-"},"content":" selector: \u0027app-duplicate-of-component\u0027,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" templateUrl: \u0027./duplicate-of.component.html\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./duplicate-of.component.css\u0027],"},{"lineNumber":19,"author":{"gitId":"-"},"content":" encapsulation: ViewEncapsulation.None"},{"lineNumber":20,"author":{"gitId":"-"},"content":"})"},{"lineNumber":21,"author":{"gitId":"-"},"content":"export class DuplicateOfComponent implements OnInit, OnDestroy {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" isEditing \u003d false;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" duplicatedIssueList: Observable\u003cIssue[]\u003e;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" searchFilterCtrl: FormControl \u003d new FormControl();"},{"lineNumber":25,"author":{"gitId":"-"},"content":" filteredDuplicateIssueList: ReplaySubject\u003cIssue[]\u003e \u003d new ReplaySubject\u003cIssue[]\u003e(1);"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Input() issue: Issue;"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Output() issueUpdated \u003d new EventEmitter\u003cIssue\u003e();"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" @ViewChild(MatSelect, { static: true }) duplicateOfSelection: MatSelect;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @ViewChild(MatCheckbox, { static: true }) duplicatedCheckbox: MatCheckbox;"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" // A subject that will emit a signal when this component is being destroyed"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private _onDestroy \u003d new Subject\u003cvoid\u003e();"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" // Max chars visible for a duplicate entry in duplicates dropdown list."},{"lineNumber":38,"author":{"gitId":"-"},"content":" readonly MAX_TITLE_LENGTH_FOR_DUPLICATE_ISSUE \u003d 17;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // Max chars visible for a non-duplicate entry in duplicates dropdown list."},{"lineNumber":40,"author":{"gitId":"-"},"content":" readonly MAX_TITLE_LENGTH_FOR_NON_DUPLICATE_ISSUE \u003d 37;"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":43,"author":{"gitId":"-"},"content":" public issueService: IssueService,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public permissions: PermissionService,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private phaseService: PhaseService"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Checks if the supplied issue requires a tooltip"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * in the UI as some information may be hidden due to truncation."},{"lineNumber":52,"author":{"gitId":"-"},"content":" * @param issue - Displayed issue that may need a tooltip."},{"lineNumber":53,"author":{"gitId":"-"},"content":" * @return - true (to enable tooltip) / false (to disable tooltip)"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */"},{"lineNumber":55,"author":{"gitId":"-"},"content":" isTooltipNecessary(issue: Issue): boolean {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Maximum Possible Title length varies based on whether the issue"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // is a duplicate. (Whether the Duplicate Issue Tag is visible)"},{"lineNumber":58,"author":{"gitId":"-"},"content":" let maxTitleLength: number;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" maxTitleLength \u003d issue.duplicated ? this.MAX_TITLE_LENGTH_FOR_DUPLICATE_ISSUE : this.MAX_TITLE_LENGTH_FOR_NON_DUPLICATE_ISSUE;"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" return issue.title.length \u003e maxTitleLength;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }"},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this._onDestroy.next(); // Emits the destroy signal"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this._onDestroy.complete();"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.duplicatedIssueList \u003d this.getDupIssueList();"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Populate the filtered list with all the issues first"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.duplicatedIssueList.pipe(first()).subscribe((issues) \u003d\u003e this.filteredDuplicateIssueList.next(issues));"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.searchFilterCtrl.valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((_) \u003d\u003e this.filterIssues());"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" private filterIssues(): void {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.changeFilter(this.duplicatedIssueList, this.searchFilterCtrl.value).subscribe((issues) \u003d\u003e"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.filteredDuplicateIssueList.next(issues)"},{"lineNumber":79,"author":{"gitId":"-"},"content":" );"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":" updateDuplicateStatus(event: MatSelectChange) {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" const latestIssue \u003d this.getUpdatedIssue(event);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.issueService.updateIssueWithComment(latestIssue, latestIssue.issueComment).subscribe("},{"lineNumber":85,"author":{"gitId":"-"},"content":" (issue) \u003d\u003e this.issueUpdated.emit(issue),"},{"lineNumber":86,"author":{"gitId":"-"},"content":" (error) \u003d\u003e this.errorHandlingService.handleError(error)"},{"lineNumber":87,"author":{"gitId":"-"},"content":" );"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" dupIssueOptionIsDisabled(issue: Issue): boolean {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return issue.duplicated || !!issue.duplicateOf;"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":" getDisabledDupOptionErrorText(issue: Issue): string {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return this.dupIssueOptionIsDisabled(issue) ? \u0027Duplicate of #\u0027 + issue.duplicateOf : \u0027\u0027;"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" handleCheckboxChange(event) {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (event.checked) {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" this.openSelection();"},{"lineNumber":101,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.isEditing \u003d false;"},{"lineNumber":103,"author":{"gitId":"-"},"content":" this.duplicateOfSelection.close();"},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.duplicateOfSelection.value \u003d null;"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.updateDuplicateStatus(null);"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":" openSelection() {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.isEditing \u003d true;"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.duplicateOfSelection.open();"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }"},{"lineNumber":113,"author":{"gitId":"-"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":" handleSelectionOpenChange(isOpen) {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (!isOpen) {"},{"lineNumber":116,"author":{"gitId":"-"},"content":" this.isEditing \u003d false;"},{"lineNumber":117,"author":{"gitId":"-"},"content":" this.duplicatedCheckbox.checked \u003d this.duplicateOfSelection.value;"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" getUpdatedIssue(duplicateCheckboxEvent: MatSelectChange): Issue {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" const clone \u003d this.issue.clone(this.phaseService.currentPhase);"},{"lineNumber":123,"author":{"gitId":"-"},"content":" clone.duplicated \u003d !!duplicateCheckboxEvent;"},{"lineNumber":124,"author":{"gitId":"-"},"content":" clone.duplicateOf \u003d duplicateCheckboxEvent ? duplicateCheckboxEvent.value : null;"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (duplicateCheckboxEvent) {"},{"lineNumber":126,"author":{"gitId":"-"},"content":" const duplicatedIssue \u003d this.issueService.issues[clone.duplicateOf];"},{"lineNumber":127,"author":{"gitId":"-"},"content":" clone.severity \u003d duplicatedIssue.severity;"},{"lineNumber":128,"author":{"gitId":"-"},"content":" clone.type \u003d duplicatedIssue.type;"},{"lineNumber":129,"author":{"gitId":"-"},"content":" clone.assignees \u003d duplicatedIssue.assignees;"},{"lineNumber":130,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" clone.response \u003d duplicatedIssue.response;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }"},{"lineNumber":132,"author":{"gitId":"-"},"content":" clone.issueComment.description \u003d clone.createGithubTeamResponse();"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return clone;"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }"},{"lineNumber":135,"author":{"gitId":"-"},"content":""},{"lineNumber":136,"author":{"gitId":"-"},"content":" private changeFilter(issuesObservable: Observable\u003cIssue[]\u003e, searchInputString): Observable\u003cIssue[]\u003e {"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return issuesObservable.pipe("},{"lineNumber":138,"author":{"gitId":"-"},"content":" first(),"},{"lineNumber":139,"author":{"gitId":"-"},"content":" map((issues) \u003d\u003e {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return applySearchFilter(searchInputString, [TABLE_COLUMNS.ID, TABLE_COLUMNS.TITLE], this.issueService, issues);"},{"lineNumber":141,"author":{"gitId":"-"},"content":" })"},{"lineNumber":142,"author":{"gitId":"-"},"content":" );"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }"},{"lineNumber":144,"author":{"gitId":"-"},"content":""},{"lineNumber":145,"author":{"gitId":"-"},"content":" private getDupIssueList(): Observable\u003cIssue[]\u003e {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return this.issueService.issues$.pipe("},{"lineNumber":147,"author":{"gitId":"-"},"content":" map((issues) \u003d\u003e {"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return issues.filter((issue) \u003d\u003e {"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return this.issue.id !\u003d\u003d issue.id \u0026\u0026 this.issue.teamAssigned.id \u003d\u003d\u003d issue.teamAssigned.id;"},{"lineNumber":150,"author":{"gitId":"-"},"content":" });"},{"lineNumber":151,"author":{"gitId":"-"},"content":" })"},{"lineNumber":152,"author":{"gitId":"-"},"content":" );"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":153}},{"path":"src/app/shared/issue/issue-components.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatProgressBarModule } from \u0027@angular/material/progress-bar\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MarkdownModule } from \u0027ngx-markdown\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { NgxMatSelectSearchModule } from \u0027ngx-mat-select-search\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { CommentEditorModule } from \u0027../comment-editor/comment-editor.module\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../shared.module\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { AssigneeComponent } from \u0027./assignee/assignee.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ConflictDialogComponent } from \u0027./conflict-dialog/conflict-dialog.component\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { DescriptionComponent } from \u0027./description/description.component\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { DuplicatedIssuesComponent } from \u0027./duplicatedIssues/duplicated-issues.component\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { DuplicateOfComponent } from \u0027./duplicateOf/duplicate-of.component\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { LabelComponent } from \u0027./label/label.component\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { TitleComponent } from \u0027./title/title.component\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { UnsureCheckboxComponent } from \u0027./unsure-checkbox/unsure-checkbox.component\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":17,"author":{"gitId":"-"},"content":" imports: [SharedModule, CommentEditorModule, MatProgressBarModule, NgxMatSelectSearchModule, MarkdownModule.forChild()],"},{"lineNumber":18,"author":{"gitId":"-"},"content":" declarations: ["},{"lineNumber":19,"author":{"gitId":"-"},"content":" TitleComponent,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" DescriptionComponent,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" LabelComponent,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" AssigneeComponent,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" DuplicateOfComponent,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" DuplicatedIssuesComponent,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" UnsureCheckboxComponent,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ConflictDialogComponent"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":28,"author":{"gitId":"-"},"content":" exports: ["},{"lineNumber":29,"author":{"gitId":"-"},"content":" TitleComponent,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" DescriptionComponent,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" LabelComponent,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" AssigneeComponent,"},{"lineNumber":33,"author":{"gitId":"-"},"content":" DuplicateOfComponent,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" DuplicatedIssuesComponent,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" UnsureCheckboxComponent,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ConflictDialogComponent"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ]"},{"lineNumber":38,"author":{"gitId":"-"},"content":"})"},{"lineNumber":39,"author":{"gitId":"-"},"content":"export class IssueComponentsModule {}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":38}},{"path":"src/app/shared/issue/label/label.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".no-arrow .mat-select-arrow {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" visibility: hidden;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":":host ::ng-deep .mat-progress-spinner {"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" color: rgba(0, 0, 0, 0.5);"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" display: inline-block;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" vertical-align: middle;"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"}"},{"lineNumber":10,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":".option {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" background-color: Transparent;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" border: none;"},{"lineNumber":14,"author":{"gitId":"-"},"content":" outline: none;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" margin-right: 30px;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":".infoPopup {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" background: transparent;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" border: none;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" outline: none;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" text-align: center;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":".labelLine {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" display: grid;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" grid-template-columns: 3fr 1fr;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":".labelInfo {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" font-size: 1em;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" text-align: left;"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":6,"-":27}},{"path":"src/app/shared/issue/label/label.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"mat-title\"\u003e {{ this.labelService.getLabelTitle(attributeName) }} \u003c/span\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003cbutton"},{"lineNumber":3,"author":{"gitId":"-"},"content":" *ngIf\u003d\"permissions.isIssueLabelsEditable() \u0026\u0026 !issue.duplicateOf\""},{"lineNumber":4,"author":{"gitId":"-"},"content":" style\u003d\"float: right\""},{"lineNumber":5,"author":{"gitId":"-"},"content":" [matMenuTriggerFor]\u003d\"labelList\""},{"lineNumber":6,"author":{"gitId":"-"},"content":" mat-icon-button"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cmat-icon style\u003d\"font-size: 20px; margin-bottom: 7px; color: #586069\" *ngIf\u003d\"!isSavePending\"\u003e edit \u003c/mat-icon\u003e"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cng-container #loadingSpinnerContainer\u003e\u003c/ng-container\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cmat-menu #labelList\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cdiv mat-menu-item class\u003d\"labelLine\" *ngFor\u003d\"let value of labelValues\" [ngStyle]\u003d\"{ \u0027padding-left\u0027: \u002715px\u0027, \u0027padding-right\u0027: \u002715px\u0027 }\"\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cbutton class\u003d\"labelInfo option\" (click)\u003d\"updateLabel(value.labelValue)\" [disabled]\u003d\"value.labelValue \u003d\u003d\u003d this.issue[attributeName]\"\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cmat-icon [ngStyle]\u003d\"{ color: \u0027#\u0027 + value.labelColor, \u0027font-size\u0027: \u00271.8em\u0027 }\"\u003estop\u003c/mat-icon\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cspan\u003e {{ value.labelValue }}\u003c/span\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cbutton *ngIf\u003d\"hasLabelDefinition(value)\" class\u003d\"infoPopup\" (click)\u003d\"openDefinitionPage(value); $event.stopPropagation()\"\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cmat-icon style\u003d\"font-size: 20px\"\u003einfo\u003c/mat-icon\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003c/mat-menu\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003cp [ngStyle]\u003d\"this.labelService.setLabelStyle(this.labelColor)\"\u003e{{ issue[attributeName] || \u0027-\u0027 }}\u003c/p\u003e"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":23}},{"path":"src/app/shared/issue/label/label.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild, ViewContainerRef } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { first } from \u0027rxjs/operators\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../..//core/services/dialog.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Label } from \u0027../../../core/models/label.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../core/services/error-handling.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { LabelCategory, LabelService } from \u0027../../../core/services/label.service\u0027;"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoadingService } from \u0027../../../core/services/loading.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../../core/services/permission.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../core/services/phase.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":14,"author":{"gitId":"-"},"content":" selector: \u0027app-issue-label\u0027,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" templateUrl: \u0027./label.component.html\u0027,"},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" styleUrls: [\u0027./label.component.css\u0027],"},{"lineNumber":17,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" providers: [LoadingService]"},{"lineNumber":18,"author":{"gitId":"-"},"content":"})"},{"lineNumber":19,"author":{"gitId":"-"},"content":"export class LabelComponent implements OnInit, OnChanges {"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // The container of the loading spinner"},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" @ViewChild(\u0027loadingSpinnerContainer\u0027, {"},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" read: ViewContainerRef,"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" static: false"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingSpinnerContainer: ViewContainerRef;"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" labelValues: Label[];"},{"lineNumber":28,"author":{"gitId":"-"},"content":" labelColor: string;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" labelDefinition?: string;"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" isSavePending: boolean;"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Input() issue: Issue;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Input() attributeName: LabelCategory;"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Output() issueUpdated \u003d new EventEmitter\u003cIssue\u003e();"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":38,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public labelService: LabelService,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public permissions: PermissionService,"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public dialogService: DialogService,"},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public loadingService: LoadingService"},{"lineNumber":45,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" showSpinner(): void {"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService.addViewContainerRef(this.loadingSpinnerContainer).showLoader();"},{"lineNumber":49,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isSavePending \u003d true;"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":51,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":52,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" hideSpinner(): void {"},{"lineNumber":53,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService.hideLoader();"},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isSavePending \u003d false;"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // Get the list of labels based on their type (severity, type, response)"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.labelValues \u003d this.labelService.getLabelList(this.attributeName);"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Build the loading service spinner"},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addAnimationMode(\u0027indeterminate\u0027)"},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addSpinnerOptions({ diameter: 15, strokeWidth: 2 })"},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addCssClasses([\u0027mat-progress-spinner\u0027]);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" ngOnChanges() {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Color will change when @Input issue changes"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.labelColor \u003d this.labelService.getColorOfLabel(this.attributeName, this.issue[this.attributeName]);"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":" updateLabel(value: string) {"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.showSpinner();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" const newIssue \u003d this.issue.clone(this.phaseService.currentPhase);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" newIssue[this.attributeName] \u003d value;"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.issueService.updateIssue(newIssue).subscribe("},{"lineNumber":77,"author":{"gitId":"-"},"content":" (updatedIssue: Issue) \u003d\u003e {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(updatedIssue);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.labelColor \u003d this.labelService.getColorOfLabel(this.attributeName, updatedIssue[this.attributeName]);"},{"lineNumber":80,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.hideSpinner();"},{"lineNumber":81,"author":{"gitId":"-"},"content":" },"},{"lineNumber":82,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":84,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.hideSpinner();"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }"},{"lineNumber":86,"author":{"gitId":"-"},"content":" );"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Update labels of duplicate issues"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.issueService"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .getDuplicateIssuesFor(this.issue)"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .pipe(first())"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .subscribe((issues: Issue[]) \u003d\u003e {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" issues.forEach((issue: Issue) \u003d\u003e {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" const newDuplicateIssue \u003d issue.clone(this.phaseService.currentPhase);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" newDuplicateIssue[this.attributeName] \u003d value;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" this.issueService.updateIssue(newDuplicateIssue);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" });"},{"lineNumber":97,"author":{"gitId":"-"},"content":" });"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":""},{"lineNumber":100,"author":{"gitId":"-"},"content":" openDefinitionPage(value: Label): void {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.labelDefinition \u003d this.labelService.getLabelDefinition(value.labelValue, value.labelCategory);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.dialogService.openLabelDefinitionDialog(value.getFormattedName(), this.labelDefinition);"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" hasLabelDefinition(value: Label): boolean {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return this.labelService.getLabelDefinition(value.labelValue, value.labelCategory) !\u003d\u003d null;"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":32,"-":76}},{"path":"src/app/shared/issue/title/title.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".row {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" display: flex;"},{"lineNumber":3,"author":{"gitId":"-"},"content":" flex-direction: row;"},{"lineNumber":4,"author":{"gitId":"-"},"content":" justify-content: space-between;"},{"lineNumber":5,"author":{"gitId":"-"},"content":" align-items: flex-start;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":".title {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" margin: 0 0 16px;"},{"lineNumber":10,"author":{"gitId":"-"},"content":" overflow-wrap: anywhere;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":".title-button {"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" display: flex;"},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" flex-direction: row;"},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" align-items: center;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" margin: 5px;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" float: right;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":":host ::ng-deep .mat-progress-spinner {"},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" color: rgba(0, 0, 0, 0.5);"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" display: inline-block;"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" vertical-align: middle;"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" margin-left: 5px;"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":10,"-":16}},{"path":"src/app/shared/issue/title/title.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv *ngIf\u003d\"!isEditing\" class\u003d\"row\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003ch1 class\u003d\"mat-display-1 title\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" {{ issue.title }} \u003cspan style\u003d\"color: #a3aab1\"\u003e#{{ issue.id }}\u003c/span\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003c/h1\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row\"\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cbutton *ngIf\u003d\"permissions.isIssueTitleEditable()\" mat-stroked-button color\u003d\"primary\" class\u003d\"title-button\" (click)\u003d\"changeToEditMode()\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" Edit"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":10,"author":{"gitId":"-"},"content":" *ngIf\u003d\"permissions.isIssueCreatable()\""},{"lineNumber":11,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":12,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":13,"author":{"gitId":"-"},"content":" class\u003d\"title-button\""},{"lineNumber":14,"author":{"gitId":"-"},"content":" [routerLink]\u003d\"\u0027/\u0027 + phaseService.currentPhase + \u0027/issues/new\u0027\""},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" New Issue"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"\u003cdiv *ngIf\u003d\"isEditing\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cform [formGroup]\u003d\"issueTitleForm\" #myForm\u003d\"ngForm\" (ngSubmit)\u003d\"updateTitle(myForm)\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cmat-form-field style\u003d\"width: 80%\"\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cinput id\u003d\"title\" formControlName\u003d\"title\" matInput placeholder\u003d\"Title\" required maxlength\u003d\"256\" /\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cmat-error *ngIf\u003d\"issueTitleForm.get(\u0027title\u0027).hasError(\u0027required\u0027)\"\u003e Title is required. \u003c/mat-error\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cmat-error *ngIf\u003d\"issueTitleForm.get(\u0027title\u0027).hasError(\u0027maxlength\u0027)\"\u003e Title cannot exceed 256 characters. \u003c/mat-error\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cmat-hint *ngIf\u003d\"issueTitleForm.get(\u0027title\u0027).value?.length \u003e\u003d 206\"\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" {{ 256 - issueTitleForm.get(\u0027title\u0027).value?.length }} characters remaining."},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/mat-hint\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cbutton type\u003d\"submit\" [disabled]\u003d\"issueTitleForm.invalid || isSavePending\" mat-stroked-button color\u003d\"primary\" class\u003d\"title-button\"\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Save"},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cng-container #loadingSpinnerContainer\u003e\u003c/ng-container\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":37,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":38,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isSavePending\""},{"lineNumber":39,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":40,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":41,"author":{"gitId":"-"},"content":" class\u003d\"title-button\""},{"lineNumber":42,"author":{"gitId":"-"},"content":" (click)\u003d\"openCancelDialogIfModified()\""},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Cancel"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/form\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":46}},{"path":"src/app/shared/issue/title/title.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Component, EventEmitter, Input, OnInit, Output, ViewChild, ViewContainerRef } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormBuilder, FormControl, FormGroup, NgForm, Validators } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { finalize } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../../core/services/dialog.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../core/services/error-handling.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoadingService } from \u0027../../../core/services/loading.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../../core/services/permission.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../core/services/phase.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":13,"author":{"gitId":"-"},"content":" selector: \u0027app-issue-title\u0027,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" templateUrl: \u0027./title.component.html\u0027,"},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" styleUrls: [\u0027./title.component.css\u0027],"},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" providers: [LoadingService]"},{"lineNumber":17,"author":{"gitId":"-"},"content":"})"},{"lineNumber":18,"author":{"gitId":"-"},"content":"export class TitleComponent implements OnInit {"},{"lineNumber":19,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // The container of the loading spinner"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" @ViewChild(\u0027loadingSpinnerContainer\u0027, {"},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" read: ViewContainerRef,"},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" static: false"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingSpinnerContainer: ViewContainerRef;"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" isEditing \u003d false;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" isSavePending \u003d false;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" issueTitleForm: FormGroup;"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Input() issue: Issue;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Output() issueUpdated \u003d new EventEmitter\u003cIssue\u003e();"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Messages for the modal popup window upon cancelling edit"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private readonly cancelEditModalMessages \u003d [\u0027Do you wish to cancel?\u0027, \u0027Your changes will be discarded.\u0027];"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private readonly yesButtonModalMessage \u003d \u0027Cancel\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private readonly noButtonModalMessage \u003d \u0027Continue editing\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":39,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public permissions: PermissionService,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public phaseService: PhaseService,"},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private dialogService: DialogService,"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public loadingService: LoadingService"},{"lineNumber":46,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.issueTitleForm \u003d this.formBuilder.group({"},{"lineNumber":50,"author":{"gitId":"-"},"content":" title: new FormControl(\u0027\u0027, [Validators.required, Validators.maxLength(256)])"},{"lineNumber":51,"author":{"gitId":"-"},"content":" });"},{"lineNumber":52,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Build the loading service spinner"},{"lineNumber":53,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService"},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addAnimationMode(\u0027indeterminate\u0027)"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addSpinnerOptions({ diameter: 15, strokeWidth: 2 })"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addCssClasses([\u0027mat-progress-spinner\u0027]);"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":" changeToEditMode() {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.isEditing \u003d true;"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.issueTitleForm.setValue({"},{"lineNumber":63,"author":{"gitId":"-"},"content":" title: this.issue.title || \u0027\u0027"},{"lineNumber":64,"author":{"gitId":"-"},"content":" });"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" cancelEditMode() {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.isEditing \u003d false;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" updateTitle(form: NgForm) {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (this.issueTitleForm.invalid) {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.showSpinner();"},{"lineNumber":77,"author":{"gitId":"-"},"content":" const newIssue \u003d this.issue.clone(this.phaseService.currentPhase);"},{"lineNumber":78,"author":{"gitId":"-"},"content":" newIssue.title \u003d this.issueTitleForm.get(\u0027title\u0027).value;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.issueService"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .updateIssue(newIssue)"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":82,"author":{"gitId":"-"},"content":" finalize(() \u003d\u003e {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.isEditing \u003d false;"},{"lineNumber":84,"author":{"gitId":"-"},"content":" })"},{"lineNumber":85,"author":{"gitId":"-"},"content":" )"},{"lineNumber":86,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":87,"author":{"gitId":"-"},"content":" (editedIssue: Issue) \u003d\u003e {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(editedIssue);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" form.resetForm();"},{"lineNumber":90,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.hideSpinner();"},{"lineNumber":91,"author":{"gitId":"-"},"content":" },"},{"lineNumber":92,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":94,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.hideSpinner();"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":" );"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" openCancelDialogIfModified(): void {"},{"lineNumber":100,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const isModified \u003d this.dialogService.checkIfFieldIsModified(this.issueTitleForm, \u0027title\u0027, \u0027title\u0027, this.issue);"},{"lineNumber":101,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.dialogService.performActionIfModified("},{"lineNumber":102,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" isModified,"},{"lineNumber":103,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" () \u003d\u003e this.openCancelDialog(),"},{"lineNumber":104,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" () \u003d\u003e this.cancelEditMode()"},{"lineNumber":105,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" openCancelDialog(): void {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openUserConfirmationModal("},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.cancelEditModalMessages,"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.yesButtonModalMessage,"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.noButtonModalMessage"},{"lineNumber":113,"author":{"gitId":"-"},"content":" );"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (res) {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" this.cancelEditMode();"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }"},{"lineNumber":119,"author":{"gitId":"-"},"content":" });"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }"},{"lineNumber":121,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":122,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" showSpinner() {"},{"lineNumber":123,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService.addViewContainerRef(this.loadingSpinnerContainer).showLoader();"},{"lineNumber":124,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isSavePending \u003d true;"},{"lineNumber":125,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":126,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":127,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" hideSpinner() {"},{"lineNumber":128,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService.hideLoader();"},{"lineNumber":129,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isSavePending \u003d false;"},{"lineNumber":130,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":37,"-":94}},{"path":"src/app/shared/label-definition-popup/label-definition-popup.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { DomSanitizer } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * The LabelDefinitionPopupComponent is responsible for rendering the UserDialog"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * to show the definition of the corresponding label."},{"lineNumber":8,"author":{"gitId":"-"},"content":" */"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-label-definition-popup\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./label-definition-popup.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./label-definition-popup.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class LabelDefinitionPopupComponent {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" labelName: string;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" labelDefinitionHtmlTemplate;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // Injection of a reference to Dialog from the Service that it is to be"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // displayed in."},{"lineNumber":20,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":21,"author":{"gitId":"-"},"content":" public dialogRef: MatDialogRef\u003cLabelDefinitionPopupComponent\u003e,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Inject(MAT_DIALOG_DATA) public data,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private _sanitizer: DomSanitizer"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.labelName \u003d data.header;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // since we only display HTML fetched from our own source, we can safely bypass the sanitization of HTML"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.labelDefinitionHtmlTemplate \u003d _sanitizer.bypassSecurityTrustHtml(data.body);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Closes the dialog."},{"lineNumber":32,"author":{"gitId":"-"},"content":" */"},{"lineNumber":33,"author":{"gitId":"-"},"content":" onNoClick(): void {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.dialogRef.close(false);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":35}},{"path":"src/app/shared/layout/header.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Location } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Component, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Router, RoutesRecognized } from \u0027@angular/router\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { filter, pairwise } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../core/models/phase.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { UserRole } from \u0027../../core/models/user.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027../../core/services/auth.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../core/services/dialog.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../core/services/github.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { PhaseDescription, PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../core/services/user.service\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":"const ISSUE_TRACKER_URL \u003d \u0027https://github.com/CATcher-org/CATcher/issues\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":21,"author":{"gitId":"-"},"content":" selector: \u0027app-layout-header\u0027,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" templateUrl: \u0027./header.component.html\u0027"},{"lineNumber":23,"author":{"gitId":"-"},"content":"})"},{"lineNumber":24,"author":{"gitId":"-"},"content":"export class HeaderComponent implements OnInit {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private prevUrl;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" isReloadButtonDisabled \u003d false;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ISSUE_FILTER \u003d \u0027/issues?q\u003dis:issue+is:open\u0027; // the filtered list must be an issue and must be open"},{"lineNumber":28,"author":{"gitId":"-"},"content":" TUTORIAL_LABEL \u003d \u0027+label:tutorial.\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" TEAM_LABEL \u003d \u0027+label:team.\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" EXCLUDE_DUPLICATE \u003d \u0027+-label:duplicate\u0027; // exclude duplicate issues"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" // Messages for the modal popup window upon logging out"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private readonly logOutDialogMessages \u003d [\u0027Do you wish to log out?\u0027];"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private readonly yesButtonDialogMessage \u003d \u0027Yes, I wish to log out\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private readonly noButtonDialogMessage \u003d \"No, I don\u0027t wish to log out\";"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":38,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public auth: AuthService,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public phaseService: PhaseService,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public userService: UserService,"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public logger: LoggingService,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private location: Location,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private dialogService: DialogService"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" router.events"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":52,"author":{"gitId":"-"},"content":" filter((e: any) \u003d\u003e e instanceof RoutesRecognized),"},{"lineNumber":53,"author":{"gitId":"-"},"content":" pairwise()"},{"lineNumber":54,"author":{"gitId":"-"},"content":" )"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .subscribe((e) \u003d\u003e {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.prevUrl \u003d e[0].urlAfterRedirects;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" });"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Replaces and resets the current phase data and routes the app to the"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * newly selected phase."},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @param openPhase - Open Phase that is selected by the user."},{"lineNumber":66,"author":{"gitId":"-"},"content":" */"},{"lineNumber":67,"author":{"gitId":"-"},"content":" routeToSelectedPhase(openPhase: string): void {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Do nothing if the selected phase is the current phase."},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (this.phaseService.currentPhase \u003d\u003d\u003d Phase[openPhase]) {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Replace Current Phase Data."},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.phaseService.currentPhase \u003d Phase[openPhase];"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.githubService.storePhaseDetails("},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.phaseService.getPhaseOwner(this.phaseService.currentPhase),"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.phaseService.sessionData[openPhase]"},{"lineNumber":77,"author":{"gitId":"-"},"content":" );"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" // Remove current phase issues and load selected phase issues."},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.githubService.reset();"},{"lineNumber":81,"author":{"gitId":"-"},"content":" this.issueService.reset(false);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.reload();"},{"lineNumber":83,"author":{"gitId":"-"},"content":""},{"lineNumber":84,"author":{"gitId":"-"},"content":" // Route app to new phase."},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.router.navigateByUrl(this.phaseService.currentPhase);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":""},{"lineNumber":88,"author":{"gitId":"-"},"content":" isBackButtonShown(): boolean {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return `/${this.phaseService.currentPhase}` !\u003d\u003d this.router.url \u0026\u0026 this.router.url !\u003d\u003d \u0027/\u0027 \u0026\u0026 !this.router.url.startsWith(\u0027/?code\u0027);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":" isReloadButtonShown(): boolean {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this.router.url !\u003d\u003d \u0027/phaseBugReporting/issues/new\u0027;"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }"},{"lineNumber":95,"author":{"gitId":"-"},"content":""},{"lineNumber":96,"author":{"gitId":"-"},"content":" isOpenUrlButtonShown(): boolean {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return ("},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.phaseService.currentPhase \u003d\u003d\u003d Phase.phaseBugReporting ||"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.userService.currentUser.role \u003d\u003d\u003d UserRole.Student ||"},{"lineNumber":100,"author":{"gitId":"-"},"content":" this.issueService.getIssueTeamFilter() !\u003d\u003d \u0027All Teams\u0027 ||"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.router.url.includes(\u0027/issues\u0027)"},{"lineNumber":102,"author":{"gitId":"-"},"content":" );"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" getVersion(): string {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return AppConfig.version;"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":" getPhaseDescription(openPhase: string): string {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return PhaseDescription[openPhase];"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }"},{"lineNumber":112,"author":{"gitId":"-"},"content":""},{"lineNumber":113,"author":{"gitId":"-"},"content":" goBack() {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (this.prevUrl \u003d\u003d\u003d `/${this.phaseService.currentPhase}/issues/new`) {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.router.navigate([\u0027/phaseBugReporting\u0027]);"},{"lineNumber":116,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" this.location.back();"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" viewBrowser() {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" const routerUrl \u003d this.router.url.substring(1); // remove the first \u0027/\u0027 from string"},{"lineNumber":123,"author":{"gitId":"-"},"content":" const issueUrlIndex \u003d routerUrl.indexOf(\u0027/\u0027); // find the index of second \u0027/\u0027"},{"lineNumber":124,"author":{"gitId":"-"},"content":" let issueUrl: string;"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":" // If can\u0027t find the index of second \u0027/\u0027, then router is at the /issues (table list) page"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (issueUrlIndex \u003c 0) {"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // Apply filters to the issueUrl"},{"lineNumber":129,"author":{"gitId":"-"},"content":" issueUrl \u003d this.ISSUE_FILTER.concat(this.getTeamFilterString());"},{"lineNumber":130,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // issueUrl will be from the second \u0027/\u0027"},{"lineNumber":132,"author":{"gitId":"-"},"content":" issueUrl \u003d routerUrl.substring(issueUrlIndex);"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // Open the url in user\u0027s preferred browser"},{"lineNumber":135,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.open(\u0027https://github.com/\u0027.concat(this.githubService.getRepoURL()).concat(issueUrl));"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }"},{"lineNumber":137,"author":{"gitId":"-"},"content":""},{"lineNumber":138,"author":{"gitId":"-"},"content":" openIssueTracker() {"},{"lineNumber":139,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.open(ISSUE_TRACKER_URL);"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }"},{"lineNumber":141,"author":{"gitId":"-"},"content":""},{"lineNumber":142,"author":{"gitId":"-"},"content":" private getTeamFilterString() {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // First Phase does not need team filtering"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (this.phaseService.currentPhase \u003d\u003d\u003d Phase.phaseBugReporting || this.phaseService.currentPhase \u003d\u003d\u003d Phase.phaseTesterResponse) {"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return \u0027\u0027;"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }"},{"lineNumber":147,"author":{"gitId":"-"},"content":""},{"lineNumber":148,"author":{"gitId":"-"},"content":" // Initialise the team filter for Students in other Phases, as they do not have team filter assigned by default"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (this.userService.currentUser.team) {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" this.issueService.setIssueTeamFilter(this.userService.currentUser.team.id); // e.g W12-3"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" const teamFilter \u003d this.issueService.getIssueTeamFilter().split(\u0027-\u0027); // e.g CS2103T-W12-3 -\u003e CS2103T, W12 and 3"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // The team filter string E.g \"+label:tutorial.W12+label:team.3\""},{"lineNumber":155,"author":{"gitId":"-"},"content":" const teamFilterString \u003d this.TUTORIAL_LABEL.concat(`${teamFilter[0]}-${teamFilter[1]}`).concat(this.TEAM_LABEL).concat(teamFilter[2]);"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // Only include duplicate Issues in last Phase"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return this.phaseService.currentPhase \u003d\u003d\u003d Phase.phaseModeration ? teamFilterString : this.EXCLUDE_DUPLICATE.concat(teamFilterString);"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }"},{"lineNumber":159,"author":{"gitId":"-"},"content":""},{"lineNumber":160,"author":{"gitId":"-"},"content":" reload() {"},{"lineNumber":161,"author":{"gitId":"-"},"content":" this.isReloadButtonDisabled \u003d true;"},{"lineNumber":162,"author":{"gitId":"-"},"content":""},{"lineNumber":163,"author":{"gitId":"-"},"content":" this.githubEventService.reloadPage().subscribe("},{"lineNumber":164,"author":{"gitId":"-"},"content":" (success) \u003d\u003e success,"},{"lineNumber":165,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error, () \u003d\u003e this.githubEventService.reloadPage());"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }"},{"lineNumber":168,"author":{"gitId":"-"},"content":" );"},{"lineNumber":169,"author":{"gitId":"-"},"content":""},{"lineNumber":170,"author":{"gitId":"-"},"content":" // Prevent user from spamming the reload button"},{"lineNumber":171,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":172,"author":{"gitId":"-"},"content":" this.isReloadButtonDisabled \u003d false;"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }, 3000);"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }"},{"lineNumber":175,"author":{"gitId":"-"},"content":""},{"lineNumber":176,"author":{"gitId":"-"},"content":" logOut() {"},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.auth.logOut();"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }"},{"lineNumber":179,"author":{"gitId":"-"},"content":""},{"lineNumber":180,"author":{"gitId":"-"},"content":" openLogOutDialog() {"},{"lineNumber":181,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openUserConfirmationModal("},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.logOutDialogMessages,"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.yesButtonDialogMessage,"},{"lineNumber":184,"author":{"gitId":"-"},"content":" this.noButtonDialogMessage"},{"lineNumber":185,"author":{"gitId":"-"},"content":" );"},{"lineNumber":186,"author":{"gitId":"-"},"content":""},{"lineNumber":187,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":188,"author":{"gitId":"-"},"content":" if (res) {"},{"lineNumber":189,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`HeaderComponent: Logging out from ${this.userService.currentUser.loginId}`);"},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.logOut();"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }"},{"lineNumber":192,"author":{"gitId":"-"},"content":" });"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }"},{"lineNumber":194,"author":{"gitId":"-"},"content":""},{"lineNumber":195,"author":{"gitId":"-"},"content":" exportLogFile() {"},{"lineNumber":196,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.exportLogFile();"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":5,"-":193}},{"path":"src/app/shared/lib/marked.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { MarkedOptions, MarkedRenderer } from \u0027ngx-markdown\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"export function markedOptionsFactory(): MarkedOptions {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" const renderer \u003d new MarkedRenderer();"},{"lineNumber":5,"author":{"gitId":"-"},"content":" const linkRenderer \u003d renderer.link;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":" renderer.link \u003d (href, title, text) \u003d\u003e {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" const html \u003d linkRenderer.call(renderer, href, title, text);"},{"lineNumber":9,"author":{"gitId":"-"},"content":" return html.replace(/^\u003ca /, \u0027\u003ca target\u003d\"_blank\" \u0027);"},{"lineNumber":10,"author":{"gitId":"-"},"content":" };"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" renderer.checkbox \u003d (checked) \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" return checked ? \u0027\u003ci class\u003d\"fa-solid fa-square-check\"\u003e\u003c/i\u003e \u0027 : \u0027\u003ci class\u003d\"fa-solid fa-square\"\u003e\u003c/i\u003e \u0027;"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" };"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":" return {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" renderer,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" gfm: true,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" breaks: false,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" pedantic: false,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" smartLists: true,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" smartypants: false"},{"lineNumber":23,"author":{"gitId":"-"},"content":" };"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":4,"-":20}},{"path":"src/app/shared/view-issue/issue-dispute/issue-dispute.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormBuilder, FormControl, FormGroup, NgForm, Validators } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Observable, throwError } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { finalize, map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027../../../core/models/comment.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../core/services/error-handling.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../../core/services/github.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../core/services/phase.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../../core/services/user.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { CommentEditorComponent } from \u0027../../comment-editor/comment-editor.component\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { SUBMIT_BUTTON_TEXT } from \u0027../view-issue.component\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":16,"author":{"gitId":"-"},"content":" selector: \u0027app-issue-dispute\u0027,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" templateUrl: \u0027./issue-dispute.component.html\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./issue-dispute.component.css\u0027]"},{"lineNumber":19,"author":{"gitId":"-"},"content":"})"},{"lineNumber":20,"author":{"gitId":"-"},"content":"export class IssueDisputeComponent implements OnInit, OnChanges {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" tutorResponseForm: FormGroup;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" isFormPending \u003d false;"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" submitButtonText: string;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Input() issue: Issue;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Input() isEditing: boolean;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Output() issueUpdated \u003d new EventEmitter\u003cIssue\u003e();"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Output() updateEditState \u003d new EventEmitter\u003cboolean\u003e();"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @ViewChild(CommentEditorComponent) commentEditor: CommentEditorComponent;"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":33,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public userService: UserService,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private phaseService: PhaseService"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.resetForm();"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d this.isNewResponse() ? SUBMIT_BUTTON_TEXT.SUBMIT : SUBMIT_BUTTON_TEXT.SAVE;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.updateEditState.emit(this.isNewResponse());"},{"lineNumber":46,"author":{"gitId":"-"},"content":" });"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" ngOnChanges(changes: SimpleChanges) {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Whenever there is a change in value of issue, we reset the form so to render the most up to date form."},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (!this.isEditing \u0026\u0026 changes.issue \u0026\u0026 changes.issue.previousValue !\u003d\u003d changes.issue.currentValue) {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.resetForm();"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" submitTutorResponseForm(form: NgForm) {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (this.tutorResponseForm.invalid) {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.isFormPending \u003d true;"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.issue.pending \u003d \u0027\u0027 + this.getNumOfPending();"},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.isSafeToSubmitTutorResponse()"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((isSave: boolean) \u003d\u003e {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (isSave || this.isUpdatingDeletedResponse()) {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (this.issue.issueComment \u0026\u0026 !this.isUpdatingDeletedResponse()) {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this.updateTutorResponse();"},{"lineNumber":70,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this.createTutorResponse();"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.OVERWRITE;"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return throwError(\u0027The content you are editing has changed. Please verify the changes and try again.\u0027);"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":78,"author":{"gitId":"-"},"content":" finalize(() \u003d\u003e (this.isFormPending \u003d false))"},{"lineNumber":79,"author":{"gitId":"-"},"content":" )"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":81,"author":{"gitId":"-"},"content":" (issue: Issue) \u003d\u003e {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(issue);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.resetToDefault();"},{"lineNumber":84,"author":{"gitId":"-"},"content":" },"},{"lineNumber":85,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":" );"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }"},{"lineNumber":90,"author":{"gitId":"-"},"content":""},{"lineNumber":91,"author":{"gitId":"-"},"content":" updateTutorResponse(): Observable\u003cIssue\u003e {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return this.issueService.updateTutorResponse(this.issue, \u003cIssueComment\u003e{"},{"lineNumber":93,"author":{"gitId":"-"},"content":" ...this.issue.issueComment,"},{"lineNumber":94,"author":{"gitId":"-"},"content":" description: this.getTutorResponseFromForm()"},{"lineNumber":95,"author":{"gitId":"-"},"content":" });"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" createTutorResponse(): Observable\u003cIssue\u003e {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" const tutorResponse \u003d this.getTutorResponseFromForm();"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return this.issueService.createTutorResponse(this.issue, tutorResponse);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":""},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @return - Determines whether it is safe to submit an issue dispute\u0027s resolution."},{"lineNumber":105,"author":{"gitId":"-"},"content":" */"},{"lineNumber":106,"author":{"gitId":"-"},"content":" isSafeToSubmitTutorResponse(): Observable\u003cboolean\u003e {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return this.issueService.getLatestIssue(this.issue.id).pipe("},{"lineNumber":108,"author":{"gitId":"-"},"content":" map((issue: Issue) \u003d\u003e {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (issue.issueComment \u0026\u0026 !!issue.issueComment \u003d\u003d\u003d !!this.issue.issueComment) {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c issue.issueDisputes.length; i++) {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (issue.issueDisputes[i].compareTo(this.issue.issueDisputes[i]) !\u003d\u003d 0) {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":116,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return !!issue.issueComment \u003d\u003d\u003d !!this.issue.issueComment;"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }"},{"lineNumber":119,"author":{"gitId":"-"},"content":" })"},{"lineNumber":120,"author":{"gitId":"-"},"content":" );"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }"},{"lineNumber":122,"author":{"gitId":"-"},"content":""},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Determines whether the user is updating a response that has already been deleted on Github."},{"lineNumber":125,"author":{"gitId":"-"},"content":" */"},{"lineNumber":126,"author":{"gitId":"-"},"content":" isUpdatingDeletedResponse(): boolean {"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return this.issue.issueComment \u0026\u0026 !this.issueService.issues[this.issue.id].issueComment;"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Resets to default form state."},{"lineNumber":132,"author":{"gitId":"-"},"content":" */"},{"lineNumber":133,"author":{"gitId":"-"},"content":" resetToDefault(): void {"},{"lineNumber":134,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.SAVE;"},{"lineNumber":135,"author":{"gitId":"-"},"content":" this.updateEditState.emit(false);"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.resetForm();"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" viewInGithub(): void {"},{"lineNumber":140,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.open("},{"lineNumber":141,"author":{"gitId":"-"},"content":" `https://github.com/${this.githubService.getRepoURL()}/issues/` + `${this.issue.id}#issuecomment-${this.issue.issueComment.id}`"},{"lineNumber":142,"author":{"gitId":"-"},"content":" );"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }"},{"lineNumber":144,"author":{"gitId":"-"},"content":""},{"lineNumber":145,"author":{"gitId":"-"},"content":" changeToEditMode() {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" this.updateEditState.emit(true);"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }"},{"lineNumber":148,"author":{"gitId":"-"},"content":""},{"lineNumber":149,"author":{"gitId":"-"},"content":" cancelEditMode() {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" this.issueService.getIssue(this.issue.id).subscribe((issue: Issue) \u003d\u003e {"},{"lineNumber":151,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(issue);"},{"lineNumber":152,"author":{"gitId":"-"},"content":" this.resetToDefault();"},{"lineNumber":153,"author":{"gitId":"-"},"content":" });"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }"},{"lineNumber":155,"author":{"gitId":"-"},"content":""},{"lineNumber":156,"author":{"gitId":"-"},"content":" trackDisputeList(index: number, item: string[]): string {"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return item[index];"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }"},{"lineNumber":159,"author":{"gitId":"-"},"content":""},{"lineNumber":160,"author":{"gitId":"-"},"content":" isNewResponse(): boolean {"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return !this.issue.issueComment;"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":165,"author":{"gitId":"-"},"content":" * Will reset the form to the initial values of `this.issue`."},{"lineNumber":166,"author":{"gitId":"-"},"content":" */"},{"lineNumber":167,"author":{"gitId":"-"},"content":" resetForm(): void {"},{"lineNumber":168,"author":{"gitId":"-"},"content":" this.tutorResponseForm \u003d this.formBuilder.group(this.createFormGroup());"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }"},{"lineNumber":170,"author":{"gitId":"-"},"content":""},{"lineNumber":171,"author":{"gitId":"-"},"content":" getItemTitleText(title: string): string {"},{"lineNumber":172,"author":{"gitId":"-"},"content":" return \u0027## \u0027 + title;"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }"},{"lineNumber":174,"author":{"gitId":"-"},"content":""},{"lineNumber":175,"author":{"gitId":"-"},"content":" getNumOfPending(): number {"},{"lineNumber":176,"author":{"gitId":"-"},"content":" let pending \u003d this.issue.issueDisputes.length; // Initial pending is number of disputes"},{"lineNumber":177,"author":{"gitId":"-"},"content":" for (const issueDispute of this.issue.issueDisputes) {"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // For each number of Done that is checked, reduce pending by one"},{"lineNumber":179,"author":{"gitId":"-"},"content":" if (issueDispute.isDone()) {"},{"lineNumber":180,"author":{"gitId":"-"},"content":" pending--;"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return pending;"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }"},{"lineNumber":185,"author":{"gitId":"-"},"content":""},{"lineNumber":186,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":187,"author":{"gitId":"-"},"content":" * Will create a form group with initial values in `this.issue`."},{"lineNumber":188,"author":{"gitId":"-"},"content":" */"},{"lineNumber":189,"author":{"gitId":"-"},"content":" createFormGroup() {"},{"lineNumber":190,"author":{"gitId":"-"},"content":" const group: any \u003d {};"},{"lineNumber":191,"author":{"gitId":"-"},"content":" // initialize fields for tutor response and the checkboxes for tutor to mark \"Done\""},{"lineNumber":192,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c this.issue.issueDisputes.length; i++) {"},{"lineNumber":193,"author":{"gitId":"-"},"content":" const dispute \u003d this.issue.issueDisputes[i];"},{"lineNumber":194,"author":{"gitId":"-"},"content":" group[this.getTutorResponseFormId(i)] \u003d new FormControl(dispute.tutorResponse, Validators.required);"},{"lineNumber":195,"author":{"gitId":"-"},"content":" group[this.getTodoFormId(i)] \u003d new FormControl({ value: dispute.isDone(), disabled: !this.isEditing }, Validators.required);"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }"},{"lineNumber":197,"author":{"gitId":"-"},"content":" return group;"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }"},{"lineNumber":199,"author":{"gitId":"-"},"content":""},{"lineNumber":200,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":201,"author":{"gitId":"-"},"content":" * Obtain the updated Github comment format for the tutor response based on the values in the form and `this.issue`."},{"lineNumber":202,"author":{"gitId":"-"},"content":" */"},{"lineNumber":203,"author":{"gitId":"-"},"content":" getTutorResponseFromForm(): string {"},{"lineNumber":204,"author":{"gitId":"-"},"content":" if (!this.issue.issueDisputes) {"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return \u0027\u0027;"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }"},{"lineNumber":207,"author":{"gitId":"-"},"content":""},{"lineNumber":208,"author":{"gitId":"-"},"content":" const values \u003d this.tutorResponseForm.getRawValue();"},{"lineNumber":209,"author":{"gitId":"-"},"content":" const todos \u003d [];"},{"lineNumber":210,"author":{"gitId":"-"},"content":" const responses \u003d [];"},{"lineNumber":211,"author":{"gitId":"-"},"content":" const updatedIssue \u003d this.issue.clone(this.phaseService.currentPhase);"},{"lineNumber":212,"author":{"gitId":"-"},"content":""},{"lineNumber":213,"author":{"gitId":"-"},"content":" let index \u003d 0;"},{"lineNumber":214,"author":{"gitId":"-"},"content":" for (const [key, value] of Object.entries(values)) {"},{"lineNumber":215,"author":{"gitId":"-"},"content":" if (key.startsWith(\u0027todo\u0027)) {"},{"lineNumber":216,"author":{"gitId":"-"},"content":" todos.push(value);"},{"lineNumber":217,"author":{"gitId":"-"},"content":" } else if (key.startsWith(\u0027tutor-response\u0027)) {"},{"lineNumber":218,"author":{"gitId":"-"},"content":" responses.push(value);"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }"},{"lineNumber":220,"author":{"gitId":"-"},"content":" index++;"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }"},{"lineNumber":222,"author":{"gitId":"-"},"content":""},{"lineNumber":223,"author":{"gitId":"-"},"content":" index \u003d 0;"},{"lineNumber":224,"author":{"gitId":"-"},"content":" for (const dispute of updatedIssue.issueDisputes) {"},{"lineNumber":225,"author":{"gitId":"-"},"content":" const isDone \u003d todos[index] \u003d\u003d\u003d undefined ? dispute.isDone() : todos[index];"},{"lineNumber":226,"author":{"gitId":"-"},"content":" const tutorResponse \u003d responses[index] || dispute.tutorResponse;"},{"lineNumber":227,"author":{"gitId":"-"},"content":" updatedIssue.issueDisputes[index].setTutorResponse(tutorResponse);"},{"lineNumber":228,"author":{"gitId":"-"},"content":" updatedIssue.issueDisputes[index].setIsDone(isDone);"},{"lineNumber":229,"author":{"gitId":"-"},"content":" index++;"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }"},{"lineNumber":231,"author":{"gitId":"-"},"content":" return updatedIssue.createGithubTutorResponse();"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }"},{"lineNumber":233,"author":{"gitId":"-"},"content":""},{"lineNumber":234,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * @param index - index of dispute which the tutor resolve."},{"lineNumber":236,"author":{"gitId":"-"},"content":" */"},{"lineNumber":237,"author":{"gitId":"-"},"content":" getTutorResponseFormId(index: number): string {"},{"lineNumber":238,"author":{"gitId":"-"},"content":" return `tutor-response-${index}`;"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }"},{"lineNumber":240,"author":{"gitId":"-"},"content":""},{"lineNumber":241,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":242,"author":{"gitId":"-"},"content":" * @param index - index of dispute which the tutor resolve."},{"lineNumber":243,"author":{"gitId":"-"},"content":" */"},{"lineNumber":244,"author":{"gitId":"-"},"content":" getTodoFormId(index: number): string {"},{"lineNumber":245,"author":{"gitId":"-"},"content":" return `todo-${index}`;"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }"},{"lineNumber":247,"author":{"gitId":"-"},"content":""},{"lineNumber":248,"author":{"gitId":"-"},"content":" get conflict(): boolean {"},{"lineNumber":249,"author":{"gitId":"-"},"content":" return this.submitButtonText \u003d\u003d\u003d SUBMIT_BUTTON_TEXT.OVERWRITE;"},{"lineNumber":250,"author":{"gitId":"-"},"content":" }"},{"lineNumber":251,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":4,"-":247}},{"path":"src/app/shared/view-issue/new-team-response/conflict-dialog/conflict-dialog.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv style\u003d\"display: flex; margin-bottom: 20px; align-items: center\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003ch1 mat-dialog-title style\u003d\"margin: 0\"\u003e{{ \u0027A new response was submitted by another user\u0027 }}\u003c/h1\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cbutton mat-icon-button color\u003d\"default\" style\u003d\"margin: 0 0 0 auto\" (click)\u003d\"close()\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eclose\u003c/mat-icon\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003cdiv mat-dialog-content style\u003d\"display: flex\"\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"column left\"\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cmat-tab-group class\u003d\"mat-elevation-z1\" animationDuration\u003d\"0ms\" (selectedTabChange)\u003d\"handleTabChange($event)\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmat-tab label\u003d\"Updated Markdown Text\"\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"tab-content\" *ngIf\u003d\"isReady\"\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cdiv [innerHTML]\u003d\"updatedHtml\"\u003e\u003c/div\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/mat-tab\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cmat-tab label\u003d\"Preview\"\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"tab-content\"\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cmarkdown\u003e{{ data.teamResponse }}\u003c/markdown\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/mat-tab\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/mat-tab-group\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"column right\"\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"data.type\"\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"mat-title\"\u003e Type \u003c/span\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c!-- This component isn\u0027t used, but when it is we need to fix this method --\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cp [ngStyle]\u003d\"labelService.setLabelStyle(labelService.getColorOfLabel(data.type))\"\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" {{ data.type || \u0027-\u0027 }}"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/p\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"data.severity\"\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"mat-title\"\u003e Severity \u003c/span\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cp [ngStyle]\u003d\"labelService.setLabelStyle(labelService.getColorOfLabel(data.severity))\"\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" {{ data.severity || \u0027-\u0027 }}"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/p\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cdiv *ngIf\u003d\"data.response\"\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"mat-title\"\u003e Response \u003c/span\u003e"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cp [ngStyle]\u003d\"labelService.setLabelStyle(labelService.getColorOfLabel(data.response))\"\u003e"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" {{ data.response || \u0027-\u0027 }}"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/p\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"data.assignees\"\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003capp-assignee-component [issue]\u003d\"data\" [team]\u003d\"data.teamAssigned\" [isEditable]\u003d\"false\"\u003e \u003c/app-assignee-component\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":""},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"data.duplicateOf\"\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cdiv\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"mat-title\"\u003eA Duplicate Of:\u003c/span\u003e"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cp style\u003d\"margin-top: 5px\"\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":" {{ \u0027#\u0027 + data.duplicateOf + \u0027: \u0027 + (issueService.getIssue(data.duplicateOf) | async).title }}"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003c/p\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"vigneshsankariyer1234567890":3,"-":62}},{"path":"src/app/shared/view-issue/new-team-response/conflict-dialog/conflict-dialog.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatTabChangeEvent } from \u0027@angular/material/tabs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { DomSanitizer, SafeHtml } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../core/models/issue.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../core/services/issue.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../../../core/services/label.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { escapeHTML, replaceNewlinesWithBreakLines } from \u0027../../../lib/html\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-conflict-dialog\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027conflict-dialog.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./conflict-dialog.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class ConflictDialogComponent {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" isOnPreview \u003d false;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" isReady \u003d false;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" updatedHtml: SafeHtml;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":21,"author":{"gitId":"-"},"content":" public dialogRef: MatDialogRef\u003cConflictDialogComponent\u003e,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Inject(MAT_DIALOG_DATA) public data: Issue,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private sanitizer: DomSanitizer,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public labelService: LabelService,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public issueService: IssueService"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.updatedHtml \u003d this.sanitizer.bypassSecurityTrustHtml(replaceNewlinesWithBreakLines(escapeHTML(data.teamResponse)));"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.isReady \u003d true;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" close(): void {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.dialogRef.close();"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" handleTabChange(event: MatTabChangeEvent): void {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.isOnPreview \u003d event.index \u003d\u003d\u003d 1;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":37}},{"path":"src/app/shared/view-issue/new-team-response/new-team-response.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cform [formGroup]\u003d\"newTeamResponseForm\" #myForm\u003d\"ngForm\" (ngSubmit)\u003d\"submitNewTeamResponse(myForm)\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"timeline-comment\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"timeline-header\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"vertical-align: middle; margin-left: 5px\"\u003e Post your team\u0027s response here. \u003c/span\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003cdiv\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"(issueService.getDuplicateIssuesFor(this.issue) | async).length \u003d\u003d\u003d 0; else displayDuplicates\" class\u003d\"container\"\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cdiv\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cmat-checkbox"},{"lineNumber":11,"author":{"gitId":"-"},"content":" style\u003d\"display: inline-block; width: 20%\""},{"lineNumber":12,"author":{"gitId":"-"},"content":" formControlName\u003d\"duplicated\""},{"lineNumber":13,"author":{"gitId":"-"},"content":" (change)\u003d\"handleChangeOfDuplicateCheckbox($event)\""},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" A Duplicate Of:"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/mat-checkbox\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cmat-form-field [style.visibility]\u003d\"!duplicated.value ? \u0027hidden\u0027 : \u0027visible\u0027\" style\u003d\"display: inline-block; width: 50%\"\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cmat-select formControlName\u003d\"duplicateOf\" placeholder\u003d\"Duplicate of\"\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cmat-option\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cngx-mat-select-search"},{"lineNumber":22,"author":{"gitId":"-"},"content":" placeholderLabel\u003d\"Search issues\""},{"lineNumber":23,"author":{"gitId":"-"},"content":" noEntriesFoundLabel\u003d\"No issues found\""},{"lineNumber":24,"author":{"gitId":"-"},"content":" [formControl]\u003d\"searchFilterCtrl\""},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003e\u003c/ngx-mat-select-search\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/mat-option\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cmat-option"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let issue of filteredDuplicateIssueList | async\""},{"lineNumber":29,"author":{"gitId":"-"},"content":" [disabled]\u003d\"dupIssueOptionIsDisabled(issue)\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" [value]\u003d\"issue.id\""},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"mat-body-strong\"\u003e #{{ issue.id }}: \u003c/span\u003e \u003cspan class\u003d\"mat-body\"\u003e{{ issue.title }}\u003c/span\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"dupIssueOptionIsDisabled(issue)\" class\u003d\"mat-caption\" style\u003d\"color: #f44336\"\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ({{ getDisabledDupOptionErrorText(issue) }})"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/mat-option\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/mat-select\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cmat-error *ngIf\u003d\"duplicateOf.errors \u0026\u0026 duplicateOf.errors[\u0027required\u0027] \u0026\u0026 duplicateOf.touched\"\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Need to specify the duplicated issue."},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/mat-error\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cng-template #displayDuplicates\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"container\"\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003capp-duplicated-issues-component [issue]\u003d\"this.issue\"\u003e\u003c/app-duplicated-issues-component\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/ng-template\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"container\" [style.display]\u003d\"duplicated.value ? \u0027none\u0027 : \u0027grid\u0027\"\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"left-half\"\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003capp-label-dropdown"},{"lineNumber":54,"author":{"gitId":"-"},"content":" [initialValue]\u003d\"this.issue.severity\""},{"lineNumber":55,"author":{"gitId":"-"},"content":" attributeName\u003d\"severity\""},{"lineNumber":56,"author":{"gitId":"-"},"content":" [dropdownForm]\u003d\"newTeamResponseForm\""},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003e\u003c/app-label-dropdown\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"right-half\"\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003capp-label-dropdown"},{"lineNumber":62,"author":{"gitId":"-"},"content":" [initialValue]\u003d\"this.issue.type\""},{"lineNumber":63,"author":{"gitId":"-"},"content":" attributeName\u003d\"type\""},{"lineNumber":64,"author":{"gitId":"-"},"content":" [dropdownForm]\u003d\"newTeamResponseForm\""},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003e\u003c/app-label-dropdown\u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"container\" [style.display]\u003d\"duplicated.value ? \u0027none\u0027 : \u0027grid\u0027\"\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003cmat-form-field class\u003d\"left-half\"\u003e"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u003cmat-select placeholder\u003d\"Assignees\" formControlName\u003d\"assignees\" multiple\u003e"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003cmat-option *ngFor\u003d\"let member of teamMembers\" [value]\u003d\"member\"\u003e{{ member }}\u003c/mat-option\u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u003c/mat-select\u003e"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003cmat-error *ngIf\u003d\"assignees.errors \u0026\u0026 assignees.errors[\u0027required\u0027] \u0026\u0026 assignees.touched\"\u003e Assignee(s) required. \u003c/mat-error\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"right-half\"\u003e"},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003capp-label-dropdown"},{"lineNumber":79,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" [initialValue]\u003d\"this.issue.response\""},{"lineNumber":80,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" attributeName\u003d\"response\""},{"lineNumber":81,"author":{"gitId":"-"},"content":" [dropdownForm]\u003d\"newTeamResponseForm\""},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003e\u003c/app-label-dropdown\u003e"},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":84,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003capp-comment-editor"},{"lineNumber":87,"author":{"gitId":"-"},"content":" [id]\u003d\"\u0027description\u0027\""},{"lineNumber":88,"author":{"gitId":"-"},"content":" [commentField]\u003d\"this.newTeamResponseForm.get(\u0027description\u0027)\""},{"lineNumber":89,"author":{"gitId":"-"},"content":" [commentForm]\u003d\"this.newTeamResponseForm\""},{"lineNumber":90,"author":{"gitId":"-"},"content":" [(isFormPending)]\u003d\"this.isFormPending\""},{"lineNumber":91,"author":{"gitId":"-"},"content":" [(submitButtonText)]\u003d\"this.submitButtonText\""},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c/app-comment-editor\u003e"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"editor-actions\"\u003e"},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":97,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":98,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":99,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":100,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isFormPending\""},{"lineNumber":101,"author":{"gitId":"-"},"content":" mat-raised-button"},{"lineNumber":102,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":103,"author":{"gitId":"-"},"content":" (click)\u003d\"viewUpdatedResponse()\""},{"lineNumber":104,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":105,"author":{"gitId":"-"},"content":" View Updated Response"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":108,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":109,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":110,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":111,"author":{"gitId":"-"},"content":" [disabled]\u003d\"newTeamResponseForm.invalid || isFormPending\""},{"lineNumber":112,"author":{"gitId":"-"},"content":" mat-raised-button"},{"lineNumber":113,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":115,"author":{"gitId":"-"},"content":" {{ submitButtonText }}"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":118,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":119,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":120,"author":{"gitId":"-"},"content":" *ngIf\u003d\"!conflict\""},{"lineNumber":121,"author":{"gitId":"-"},"content":" [disabled]\u003d\"newTeamResponseForm.invalid || isFormPending\""},{"lineNumber":122,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":125,"author":{"gitId":"-"},"content":" {{ submitButtonText }}"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":128,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":129,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":130,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":131,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isFormPending\""},{"lineNumber":132,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":133,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":134,"author":{"gitId":"-"},"content":" (click)\u003d\"refresh()\""},{"lineNumber":135,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Updated response will overwrite your changes\""},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Cancel"},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":139,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":142,"author":{"gitId":"-"},"content":"\u003c/form\u003e"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":140}},{"path":"src/app/shared/view-issue/new-team-response/new-team-response.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormBuilder, FormControl, FormGroup, NgForm, Validators } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatCheckboxChange } from \u0027@angular/material/checkbox\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Observable, ReplaySubject, Subject, throwError } from \u0027rxjs\u0027;"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { finalize, first, map, mergeMap, takeUntil } from \u0027rxjs/operators\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027../../../core/models/comment.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { Conflict } from \u0027../../../core/models/conflict/conflict.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { Issue, STATUS } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../core/services/error-handling.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../../core/services/label.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../core/services/phase.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027../../issue-tables/issue-tables-columns\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { applySearchFilter } from \u0027../../issue-tables/search-filter\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { SUBMIT_BUTTON_TEXT } from \u0027../view-issue.component\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { ConflictDialogComponent } from \u0027./conflict-dialog/conflict-dialog.component\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":20,"author":{"gitId":"-"},"content":" selector: \u0027app-new-team-response\u0027,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" templateUrl: \u0027./new-team-response.component.html\u0027,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./new-team-response.component.css\u0027]"},{"lineNumber":23,"author":{"gitId":"-"},"content":"})"},{"lineNumber":24,"author":{"gitId":"-"},"content":"export class NewTeamResponseComponent implements OnInit, OnDestroy {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" newTeamResponseForm: FormGroup;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" teamMembers: string[];"},{"lineNumber":27,"author":{"gitId":"-"},"content":" duplicatedIssueList: Observable\u003cIssue[]\u003e;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" conflict: Conflict;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" searchFilterCtrl: FormControl \u003d new FormControl();"},{"lineNumber":30,"author":{"gitId":"-"},"content":" filteredDuplicateIssueList: ReplaySubject\u003cIssue[]\u003e \u003d new ReplaySubject\u003cIssue[]\u003e(1);"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" isFormPending \u003d false;"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" submitButtonText: string;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Input() issue: Issue;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Output() issueUpdated \u003d new EventEmitter\u003cIssue\u003e();"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" // A subject that will emit a signal when this component is being destroyed"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private _onDestroy \u003d new Subject\u003cvoid\u003e();"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":43,"author":{"gitId":"-"},"content":" public issueService: IssueService,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public labelService: LabelService,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private dialog: MatDialog,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private phaseService: PhaseService"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.teamMembers \u003d this.issue.teamAssigned.teamMembers.map((member) \u003d\u003e {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return member.loginId;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" });"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.duplicatedIssueList \u003d this.getDupIssueList();"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Populate the filtered list with all the issues first"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.duplicatedIssueList.pipe(first()).subscribe((issues) \u003d\u003e this.filteredDuplicateIssueList.next(issues));"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.searchFilterCtrl.valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((_) \u003d\u003e this.filterIssues());"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.newTeamResponseForm \u003d this.formBuilder.group({"},{"lineNumber":60,"author":{"gitId":"-"},"content":" description: [\u0027\u0027],"},{"lineNumber":61,"author":{"gitId":"-"},"content":" severity: [this.issue.severity, Validators.required],"},{"lineNumber":62,"author":{"gitId":"-"},"content":" type: [this.issue.type, Validators.required],"},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" response: [this.issue.response, Validators.required],"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assignees: [this.issue.assignees.map((a) \u003d\u003e a.toLowerCase())],"},{"lineNumber":65,"author":{"gitId":"-"},"content":" duplicated: [false],"},{"lineNumber":66,"author":{"gitId":"-"},"content":" duplicateOf: [\u0027\u0027]"},{"lineNumber":67,"author":{"gitId":"-"},"content":" });"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.duplicated.valueChanges.subscribe((checked) \u003d\u003e {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (checked) {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.duplicateOf.setValidators(Validators.required);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.responseTag.setValidators(null);"},{"lineNumber":72,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.duplicateOf.setValidators(null);"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.responseTag.setValidators(Validators.required);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.duplicateOf.updateValueAndValidity();"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.responseTag.updateValueAndValidity();"},{"lineNumber":78,"author":{"gitId":"-"},"content":" });"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.SUBMIT;"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":" private filterIssues(): void {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.changeFilter(this.duplicatedIssueList, this.searchFilterCtrl.value).subscribe((issues) \u003d\u003e"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.filteredDuplicateIssueList.next(issues)"},{"lineNumber":85,"author":{"gitId":"-"},"content":" );"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":""},{"lineNumber":88,"author":{"gitId":"-"},"content":" private changeFilter(issuesObservable: Observable\u003cIssue[]\u003e, searchInputString): Observable\u003cIssue[]\u003e {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return issuesObservable.pipe("},{"lineNumber":90,"author":{"gitId":"-"},"content":" first(),"},{"lineNumber":91,"author":{"gitId":"-"},"content":" map((issues) \u003d\u003e {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return applySearchFilter(searchInputString, [TABLE_COLUMNS.ID, TABLE_COLUMNS.TITLE], this.issueService, issues);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" })"},{"lineNumber":94,"author":{"gitId":"-"},"content":" );"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this._onDestroy.next(); // Emits the destroy signal"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this._onDestroy.complete();"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" submitNewTeamResponse(form: NgForm) {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (this.newTeamResponseForm.invalid) {"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.isFormPending \u003d true;"},{"lineNumber":107,"author":{"gitId":"-"},"content":" const latestIssue \u003d this.getUpdatedIssue();"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.isSafeToSubmit()"},{"lineNumber":110,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":111,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((isSaveToSubmit: boolean) \u003d\u003e {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" const newCommentDescription \u003d latestIssue.createGithubTeamResponse();"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (isSaveToSubmit) {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return this.issueService.createTeamResponse(latestIssue);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" } else if (this.submitButtonText \u003d\u003d\u003d SUBMIT_BUTTON_TEXT.OVERWRITE) {"},{"lineNumber":116,"author":{"gitId":"-"},"content":" const issueCommentId \u003d this.issueService.issues[this.issue.id].issueComment.id;"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return this.issueService.updateIssueWithComment(latestIssue, \u003cIssueComment\u003e{"},{"lineNumber":118,"author":{"gitId":"-"},"content":" id: issueCommentId,"},{"lineNumber":119,"author":{"gitId":"-"},"content":" description: newCommentDescription"},{"lineNumber":120,"author":{"gitId":"-"},"content":" });"},{"lineNumber":121,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" this.conflict \u003d new Conflict(\u0027 \u0027, this.issueService.issues[this.issue.id].teamResponse);"},{"lineNumber":123,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.OVERWRITE;"},{"lineNumber":124,"author":{"gitId":"-"},"content":" this.viewUpdatedResponse();"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return throwError(\u0027A response has been submitted. Please verify the changes and try again.\u0027);"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":128,"author":{"gitId":"-"},"content":" finalize(() \u003d\u003e (this.isFormPending \u003d false))"},{"lineNumber":129,"author":{"gitId":"-"},"content":" )"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":131,"author":{"gitId":"-"},"content":" (updatedIssue: Issue) \u003d\u003e {"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // updatedIssue.issueComment \u003d updatedComment;"},{"lineNumber":133,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(updatedIssue);"},{"lineNumber":134,"author":{"gitId":"-"},"content":" form.resetForm();"},{"lineNumber":135,"author":{"gitId":"-"},"content":" },"},{"lineNumber":136,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":137,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }"},{"lineNumber":139,"author":{"gitId":"-"},"content":" );"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }"},{"lineNumber":141,"author":{"gitId":"-"},"content":""},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * @return - Determines whether it is safe to submit a tester response."},{"lineNumber":144,"author":{"gitId":"-"},"content":" */"},{"lineNumber":145,"author":{"gitId":"-"},"content":" isSafeToSubmit(): Observable\u003cboolean\u003e {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return this.issueService.getLatestIssue(this.issue.id).pipe("},{"lineNumber":147,"author":{"gitId":"-"},"content":" map((issue: Issue) \u003d\u003e {"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return !issue.teamResponse;"},{"lineNumber":149,"author":{"gitId":"-"},"content":" })"},{"lineNumber":150,"author":{"gitId":"-"},"content":" );"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * @return - an updated copy of issue with its updated value from the form."},{"lineNumber":155,"author":{"gitId":"-"},"content":" */"},{"lineNumber":156,"author":{"gitId":"-"},"content":" getUpdatedIssue(): Issue {"},{"lineNumber":157,"author":{"gitId":"-"},"content":" const clone \u003d this.issue.clone(this.phaseService.currentPhase);"},{"lineNumber":158,"author":{"gitId":"-"},"content":" clone.duplicated \u003d this.duplicated.value;"},{"lineNumber":159,"author":{"gitId":"-"},"content":" clone.duplicateOf \u003d this.duplicateOf.value;"},{"lineNumber":160,"author":{"gitId":"-"},"content":" if (clone.duplicated) {"},{"lineNumber":161,"author":{"gitId":"-"},"content":" const duplicatedIssue \u003d this.issueService.issues[clone.duplicateOf];"},{"lineNumber":162,"author":{"gitId":"-"},"content":" clone.severity \u003d duplicatedIssue.severity;"},{"lineNumber":163,"author":{"gitId":"-"},"content":" clone.type \u003d duplicatedIssue.type;"},{"lineNumber":164,"author":{"gitId":"-"},"content":" clone.assignees \u003d duplicatedIssue.assignees;"},{"lineNumber":165,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" clone.response \u003d duplicatedIssue.response;"},{"lineNumber":166,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":167,"author":{"gitId":"-"},"content":" clone.severity \u003d this.severity.value;"},{"lineNumber":168,"author":{"gitId":"-"},"content":" clone.type \u003d this.type.value;"},{"lineNumber":169,"author":{"gitId":"-"},"content":" clone.assignees \u003d this.assignees.value;"},{"lineNumber":170,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" clone.response \u003d this.responseTag.value;"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }"},{"lineNumber":172,"author":{"gitId":"-"},"content":" clone.status \u003d STATUS.Done;"},{"lineNumber":173,"author":{"gitId":"-"},"content":" clone.teamResponse \u003d Issue.updateTeamResponse(this.description.value);"},{"lineNumber":174,"author":{"gitId":"-"},"content":" return clone;"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }"},{"lineNumber":176,"author":{"gitId":"-"},"content":""},{"lineNumber":177,"author":{"gitId":"-"},"content":" dupIssueOptionIsDisabled(issue: Issue): boolean {"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return issue.duplicated || !!issue.duplicateOf;"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }"},{"lineNumber":180,"author":{"gitId":"-"},"content":""},{"lineNumber":181,"author":{"gitId":"-"},"content":" getDisabledDupOptionErrorText(issue: Issue): string {"},{"lineNumber":182,"author":{"gitId":"-"},"content":" return this.dupIssueOptionIsDisabled(issue) ? \u0027Duplicate of #\u0027 + issue.duplicateOf : \u0027\u0027;"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }"},{"lineNumber":184,"author":{"gitId":"-"},"content":""},{"lineNumber":185,"author":{"gitId":"-"},"content":" handleChangeOfDuplicateCheckbox(event: MatCheckboxChange) {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (event.checked) {"},{"lineNumber":187,"author":{"gitId":"-"},"content":" this.responseTag.setValue(\u0027\u0027);"},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.assignees.setValue([]);"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.responseTag.markAsUntouched();"},{"lineNumber":190,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.duplicateOf.setValue(\u0027\u0027);"},{"lineNumber":192,"author":{"gitId":"-"},"content":" this.duplicateOf.markAsUntouched();"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }"},{"lineNumber":195,"author":{"gitId":"-"},"content":""},{"lineNumber":196,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":197,"author":{"gitId":"-"},"content":" * Pops up a dialog that shows the updated team response that was submitted."},{"lineNumber":198,"author":{"gitId":"-"},"content":" */"},{"lineNumber":199,"author":{"gitId":"-"},"content":" viewUpdatedResponse(): void {"},{"lineNumber":200,"author":{"gitId":"-"},"content":" this.dialog.open(ConflictDialogComponent, {"},{"lineNumber":201,"author":{"gitId":"-"},"content":" data: this.issueService.issues[this.issue.id],"},{"lineNumber":202,"author":{"gitId":"-"},"content":" autoFocus: false"},{"lineNumber":203,"author":{"gitId":"-"},"content":" });"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }"},{"lineNumber":205,"author":{"gitId":"-"},"content":""},{"lineNumber":206,"author":{"gitId":"-"},"content":" refresh(): void {"},{"lineNumber":207,"author":{"gitId":"-"},"content":" const updatedIssue \u003d this.issueService.issues[this.issue.id];"},{"lineNumber":208,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(updatedIssue);"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }"},{"lineNumber":210,"author":{"gitId":"-"},"content":""},{"lineNumber":211,"author":{"gitId":"-"},"content":" private getDupIssueList(): Observable\u003cIssue[]\u003e {"},{"lineNumber":212,"author":{"gitId":"-"},"content":" return this.issueService.issues$.pipe("},{"lineNumber":213,"author":{"gitId":"-"},"content":" map((issues) \u003d\u003e {"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return issues.filter((issue) \u003d\u003e {"},{"lineNumber":215,"author":{"gitId":"-"},"content":" return this.issue.id !\u003d\u003d issue.id;"},{"lineNumber":216,"author":{"gitId":"-"},"content":" });"},{"lineNumber":217,"author":{"gitId":"-"},"content":" })"},{"lineNumber":218,"author":{"gitId":"-"},"content":" );"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }"},{"lineNumber":220,"author":{"gitId":"-"},"content":""},{"lineNumber":221,"author":{"gitId":"-"},"content":" get description() {"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return this.newTeamResponseForm.get(\u0027description\u0027);"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }"},{"lineNumber":224,"author":{"gitId":"-"},"content":""},{"lineNumber":225,"author":{"gitId":"-"},"content":" get severity() {"},{"lineNumber":226,"author":{"gitId":"-"},"content":" return this.newTeamResponseForm.get(\u0027severity\u0027);"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }"},{"lineNumber":228,"author":{"gitId":"-"},"content":""},{"lineNumber":229,"author":{"gitId":"-"},"content":" get type() {"},{"lineNumber":230,"author":{"gitId":"-"},"content":" return this.newTeamResponseForm.get(\u0027type\u0027);"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }"},{"lineNumber":232,"author":{"gitId":"-"},"content":""},{"lineNumber":233,"author":{"gitId":"-"},"content":" get assignees() {"},{"lineNumber":234,"author":{"gitId":"-"},"content":" return this.newTeamResponseForm.get(\u0027assignees\u0027);"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }"},{"lineNumber":236,"author":{"gitId":"-"},"content":""},{"lineNumber":237,"author":{"gitId":"-"},"content":" get responseTag() {"},{"lineNumber":238,"author":{"gitId":"-"},"content":" return this.newTeamResponseForm.get(\u0027response\u0027);"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }"},{"lineNumber":240,"author":{"gitId":"-"},"content":""},{"lineNumber":241,"author":{"gitId":"-"},"content":" get duplicated() {"},{"lineNumber":242,"author":{"gitId":"-"},"content":" return this.newTeamResponseForm.get(\u0027duplicated\u0027);"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }"},{"lineNumber":244,"author":{"gitId":"-"},"content":""},{"lineNumber":245,"author":{"gitId":"-"},"content":" get duplicateOf() {"},{"lineNumber":246,"author":{"gitId":"-"},"content":" return this.newTeamResponseForm.get(\u0027duplicateOf\u0027);"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":5,"-":243}},{"path":"src/app/shared/view-issue/new-team-response/new-team-response.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { CommonModule } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MarkdownModule } from \u0027ngx-markdown\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { NgxMatSelectSearchModule } from \u0027ngx-mat-select-search\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { CommentEditorModule } from \u0027../../comment-editor/comment-editor.module\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { IssueComponentsModule } from \u0027../../issue/issue-components.module\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LabelDropdownModule } from \u0027../../label-dropdown/label-dropdown.module\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../../shared.module\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ConflictDialogComponent } from \u0027./conflict-dialog/conflict-dialog.component\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { NewTeamResponseComponent } from \u0027./new-team-response.component\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exports: [NewTeamResponseComponent, ConflictDialogComponent],"},{"lineNumber":14,"author":{"gitId":"-"},"content":" declarations: [NewTeamResponseComponent, ConflictDialogComponent],"},{"lineNumber":15,"author":{"gitId":"-"},"content":" imports: ["},{"lineNumber":16,"author":{"gitId":"-"},"content":" CommonModule,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" CommentEditorModule,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" SharedModule,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" IssueComponentsModule,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" LabelDropdownModule,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" MarkdownModule.forChild(),"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NgxMatSelectSearchModule"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ]"},{"lineNumber":24,"author":{"gitId":"-"},"content":"})"},{"lineNumber":25,"author":{"gitId":"-"},"content":"export class NewTeamResponseModule {}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":24}},{"path":"src/app/shared/view-issue/team-response/team-response.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, EventEmitter, Input, OnInit, Output } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormBuilder, FormGroup, NgForm } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Observable, throwError } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { finalize, map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027../../../core/models/comment.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Conflict } from \u0027../../../core/models/conflict/conflict.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { Issue, STATUS } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../../core/services/dialog.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../core/services/error-handling.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../../core/services/permission.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../core/services/phase.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { ConflictDialogComponent } from \u0027../../issue/conflict-dialog/conflict-dialog.component\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { SUBMIT_BUTTON_TEXT } from \u0027../view-issue.component\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" selector: \u0027app-team-response\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" templateUrl: \u0027./team-response.component.html\u0027,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./team-response.component.css\u0027]"},{"lineNumber":21,"author":{"gitId":"-"},"content":"})"},{"lineNumber":22,"author":{"gitId":"-"},"content":"export class TeamResponseComponent implements OnInit {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" isSavePending \u003d false;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" responseForm: FormGroup;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" conflict: Conflict;"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" submitButtonText: string;"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Input() issue: Issue;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Input() isEditing: boolean;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Output() issueUpdated \u003d new EventEmitter\u003cIssue\u003e();"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Output() updateEditState \u003d new EventEmitter\u003cboolean\u003e();"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" // Messages for the modal popup window upon cancelling edit"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private readonly cancelEditModalMessages \u003d [\u0027Do you wish to cancel?\u0027, \u0027Your changes will be discarded.\u0027];"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private readonly yesButtonModalMessage \u003d \u0027Cancel\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private readonly noButtonModalMessage \u003d \u0027Continue editing\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":40,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private permissions: PermissionService,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private dialog: MatDialog,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private dialogService: DialogService"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.responseForm \u003d this.formBuilder.group({"},{"lineNumber":51,"author":{"gitId":"-"},"content":" description: [\u0027\u0027]"},{"lineNumber":52,"author":{"gitId":"-"},"content":" });"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.SAVE;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" changeToEditMode() {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.updateEditState.emit(true);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.responseForm.setValue({"},{"lineNumber":59,"author":{"gitId":"-"},"content":" description: this.issue.teamResponse || \u0027\u0027"},{"lineNumber":60,"author":{"gitId":"-"},"content":" });"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" updateResponse(form: NgForm) {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (this.responseForm.invalid) {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.isSavePending \u003d true;"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" const updatedIssue \u003d this.getUpdatedIssue();"},{"lineNumber":70,"author":{"gitId":"-"},"content":" const updatedIssueComment \u003d \u003cIssueComment\u003e{"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ...updatedIssue.issueComment,"},{"lineNumber":72,"author":{"gitId":"-"},"content":" description: updatedIssue.createGithubTeamResponse()"},{"lineNumber":73,"author":{"gitId":"-"},"content":" };"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.isSafeToUpdate()"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((isSaveToUpdate: boolean) \u003d\u003e {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (isSaveToUpdate || this.submitButtonText \u003d\u003d\u003d SUBMIT_BUTTON_TEXT.OVERWRITE) {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return this.issueService.updateIssueWithComment(updatedIssue, updatedIssueComment);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" } else if (this.isUpdatingDeletedResponse()) {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this.issueService.createTeamResponse(updatedIssue);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.conflict \u003d new Conflict(this.issue.teamResponse, this.issueService.issues[this.issue.id].teamResponse);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.OVERWRITE;"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.viewChanges();"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return throwError(\u0027The content you are editing has changed. Please verify the changes and try again.\u0027);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":89,"author":{"gitId":"-"},"content":" finalize(() \u003d\u003e (this.isSavePending \u003d false))"},{"lineNumber":90,"author":{"gitId":"-"},"content":" )"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":92,"author":{"gitId":"-"},"content":" (updatedIssue: Issue) \u003d\u003e {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(updatedIssue);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.resetToDefault();"},{"lineNumber":95,"author":{"gitId":"-"},"content":" form.resetForm();"},{"lineNumber":96,"author":{"gitId":"-"},"content":" },"},{"lineNumber":97,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }"},{"lineNumber":100,"author":{"gitId":"-"},"content":" );"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":""},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @return - Determines whether it is safe to updated an existing team response."},{"lineNumber":105,"author":{"gitId":"-"},"content":" */"},{"lineNumber":106,"author":{"gitId":"-"},"content":" isSafeToUpdate(): Observable\u003cboolean\u003e {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return this.issueService.getLatestIssue(this.issue.id).pipe("},{"lineNumber":108,"author":{"gitId":"-"},"content":" map((issue: Issue) \u003d\u003e {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return issue.teamResponse \u003d\u003d\u003d this.issue.teamResponse;"},{"lineNumber":110,"author":{"gitId":"-"},"content":" })"},{"lineNumber":111,"author":{"gitId":"-"},"content":" );"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }"},{"lineNumber":113,"author":{"gitId":"-"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Determines whether the user is updating a response that has already been deleted on Github."},{"lineNumber":116,"author":{"gitId":"-"},"content":" */"},{"lineNumber":117,"author":{"gitId":"-"},"content":" isUpdatingDeletedResponse(): boolean {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return this.issue.teamResponse \u0026\u0026 !this.issueService.issues[this.issue.id].teamResponse;"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" canEditIssue(): boolean {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return this.permissions.isTeamResponseEditable();"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }"},{"lineNumber":124,"author":{"gitId":"-"},"content":""},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Resets to default form state."},{"lineNumber":127,"author":{"gitId":"-"},"content":" */"},{"lineNumber":128,"author":{"gitId":"-"},"content":" resetToDefault(): void {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.SAVE;"},{"lineNumber":130,"author":{"gitId":"-"},"content":" this.conflict \u003d undefined;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" this.updateEditState.emit(false);"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }"},{"lineNumber":133,"author":{"gitId":"-"},"content":""},{"lineNumber":134,"author":{"gitId":"-"},"content":" viewChanges(): void {"},{"lineNumber":135,"author":{"gitId":"-"},"content":" this.dialog.open(ConflictDialogComponent, {"},{"lineNumber":136,"author":{"gitId":"-"},"content":" data: this.conflict,"},{"lineNumber":137,"author":{"gitId":"-"},"content":" autoFocus: false"},{"lineNumber":138,"author":{"gitId":"-"},"content":" });"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }"},{"lineNumber":140,"author":{"gitId":"-"},"content":""},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * When user exits exit mode, we will need to sync the issue in IssueService with this component."},{"lineNumber":143,"author":{"gitId":"-"},"content":" */"},{"lineNumber":144,"author":{"gitId":"-"},"content":" cancelEditMode(): void {"},{"lineNumber":145,"author":{"gitId":"-"},"content":" this.issueService.getIssue(this.issue.id).subscribe((issue: Issue) \u003d\u003e {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(issue);"},{"lineNumber":147,"author":{"gitId":"-"},"content":" this.resetToDefault();"},{"lineNumber":148,"author":{"gitId":"-"},"content":" });"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }"},{"lineNumber":150,"author":{"gitId":"-"},"content":""},{"lineNumber":151,"author":{"gitId":"-"},"content":" openCancelDialogIfModified(): void {"},{"lineNumber":152,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const isModified \u003d this.dialogService.checkIfFieldIsModified(this.responseForm, \u0027teamResponse\u0027, \u0027description\u0027, this.issue);"},{"lineNumber":153,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.dialogService.performActionIfModified("},{"lineNumber":154,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" isModified,"},{"lineNumber":155,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" () \u003d\u003e this.openCancelDialog(),"},{"lineNumber":156,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" () \u003d\u003e this.cancelEditMode()"},{"lineNumber":157,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }"},{"lineNumber":159,"author":{"gitId":"-"},"content":""},{"lineNumber":160,"author":{"gitId":"-"},"content":" openCancelDialog(): void {"},{"lineNumber":161,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openUserConfirmationModal("},{"lineNumber":162,"author":{"gitId":"-"},"content":" this.cancelEditModalMessages,"},{"lineNumber":163,"author":{"gitId":"-"},"content":" this.yesButtonModalMessage,"},{"lineNumber":164,"author":{"gitId":"-"},"content":" this.noButtonModalMessage"},{"lineNumber":165,"author":{"gitId":"-"},"content":" );"},{"lineNumber":166,"author":{"gitId":"-"},"content":""},{"lineNumber":167,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":168,"author":{"gitId":"-"},"content":" if (res) {"},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.cancelEditMode();"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }"},{"lineNumber":171,"author":{"gitId":"-"},"content":" });"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }"},{"lineNumber":173,"author":{"gitId":"-"},"content":""},{"lineNumber":174,"author":{"gitId":"-"},"content":" private getUpdatedIssue(): Issue {"},{"lineNumber":175,"author":{"gitId":"-"},"content":" const clone \u003d this.issue.clone(this.phaseService.currentPhase);"},{"lineNumber":176,"author":{"gitId":"-"},"content":" clone.teamResponse \u003d Issue.updateTeamResponse(this.responseForm.get(\u0027description\u0027).value);"},{"lineNumber":177,"author":{"gitId":"-"},"content":" if (!clone.status) {"},{"lineNumber":178,"author":{"gitId":"-"},"content":" clone.status \u003d clone.teamResponse \u003d\u003d\u003d \u0027\u0027 ? STATUS.Incomplete : STATUS.Done;"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }"},{"lineNumber":180,"author":{"gitId":"-"},"content":" return clone;"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":8,"-":174}},{"path":"src/app/shared/view-issue/tester-response/conflict-dialog/conflict-dialog.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { DomSanitizer, SafeHtml } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Conflict } from \u0027../../../../core/models/conflict/conflict.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { TesterResponse } from \u0027../../../../core/models/tester-response.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../core/services/issue.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../../../core/services/label.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"export interface TesterResponseConflictData {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" outdatedResponses: TesterResponse[];"},{"lineNumber":11,"author":{"gitId":"-"},"content":" updatedResponses: TesterResponse[];"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":15,"author":{"gitId":"-"},"content":" selector: \u0027app-conflict-dialog\u0027,"},{"lineNumber":16,"author":{"gitId":"-"},"content":" templateUrl: \u0027conflict-dialog.component.html\u0027,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./conflict-dialog.component.css\u0027]"},{"lineNumber":18,"author":{"gitId":"-"},"content":"})"},{"lineNumber":19,"author":{"gitId":"-"},"content":"export class ConflictDialogComponent {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" isReady \u003d false;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" showDiff \u003d true;"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" conflicts: Conflict[] \u003d [];"},{"lineNumber":24,"author":{"gitId":"-"},"content":" diffHtmls: SafeHtml[] \u003d [];"},{"lineNumber":25,"author":{"gitId":"-"},"content":" updatedHtmls: SafeHtml[] \u003d [];"},{"lineNumber":26,"author":{"gitId":"-"},"content":" panelOpenStates: boolean[] \u003d [];"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":29,"author":{"gitId":"-"},"content":" public dialogRef: MatDialogRef\u003cConflictDialogComponent\u003e,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Inject(MAT_DIALOG_DATA) public data: TesterResponseConflictData,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private sanitizer: DomSanitizer,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public labelService: LabelService,"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public issueService: IssueService"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c data.updatedResponses.length; i++) {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.conflicts.push("},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Conflict("},{"lineNumber":38,"author":{"gitId":"-"},"content":" data.outdatedResponses[i].getDisagreementWithoutDefaultResponse(),"},{"lineNumber":39,"author":{"gitId":"-"},"content":" data.updatedResponses[i].getDisagreementWithoutDefaultResponse()"},{"lineNumber":40,"author":{"gitId":"-"},"content":" )"},{"lineNumber":41,"author":{"gitId":"-"},"content":" );"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.diffHtmls.push(this.sanitizer.bypassSecurityTrustHtml(this.conflicts[i].getHtmlDiffString()));"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.updatedHtmls.push(this.sanitizer.bypassSecurityTrustHtml(this.conflicts[i].getHtmlUpdatedString()));"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.panelOpenStates.push(data.outdatedResponses[i].compareTo(data.updatedResponses[i]) !\u003d\u003d 0);"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.isReady \u003d true;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" close(): void {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.dialogRef.close();"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" handleChangeShowDiff() {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.showDiff \u003d !this.showDiff;"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":56}},{"path":"src/app/shared/view-issue/tester-response/tester-response.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormBuilder, FormControl, FormGroup, Validators } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Observable, throwError } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { finalize, map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027../../../core/models/comment.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { TesterResponse } from \u0027../../../core/models/tester-response.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { UserRole } from \u0027../../../core/models/user.model\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../../core/services/dialog.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../core/services/error-handling.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../core/services/phase.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../../core/services/user.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { CommentEditorComponent } from \u0027../../comment-editor/comment-editor.component\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { SUBMIT_BUTTON_TEXT } from \u0027../view-issue.component\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { ConflictDialogComponent, TesterResponseConflictData } from \u0027./conflict-dialog/conflict-dialog.component\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":20,"author":{"gitId":"-"},"content":" selector: \u0027app-tester-response\u0027,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" templateUrl: \u0027./tester-response.component.html\u0027,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./tester-response.component.css\u0027]"},{"lineNumber":23,"author":{"gitId":"-"},"content":"})"},{"lineNumber":24,"author":{"gitId":"-"},"content":"export class TesterResponseComponent implements OnInit, OnChanges {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" testerResponseForm: FormGroup;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" isFormPending \u003d false;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" submitButtonText: string;"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Input() issue: Issue;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Input() isEditing: boolean;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Output() issueUpdated \u003d new EventEmitter\u003cIssue\u003e();"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Output() updateEditState \u003d new EventEmitter\u003cboolean\u003e();"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @ViewChild(CommentEditorComponent) commentEditor: CommentEditorComponent;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" // Messages for the modal popup window upon cancelling edit"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private readonly cancelEditModalMessages \u003d [\u0027Do you wish to cancel?\u0027, \u0027Your changes will be discarded.\u0027];"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private readonly yesButtonModalMessage \u003d \u0027Cancel\u0027;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private readonly noButtonModalMessage \u003d \u0027Continue editing\u0027;"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" private readonly responseRadioIdentifier \u003d \u0027response-radio\u0027;"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private readonly responseTextIdentifier \u003d \u0027tester-response\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":45,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public userService: UserService,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private dialog: MatDialog,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private dialogService: DialogService"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.resetForm();"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d this.isNewResponse() ? SUBMIT_BUTTON_TEXT.SUBMIT : SUBMIT_BUTTON_TEXT.SAVE;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.updateEditState.emit(this.isNewResponse());"},{"lineNumber":59,"author":{"gitId":"-"},"content":" });"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" ngOnChanges(changes: SimpleChanges) {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Whenever there is a change in value of issue, we reset the form so to render the most up to date form."},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!this.isEditing \u0026\u0026 changes.issue \u0026\u0026 changes.issue.previousValue !\u003d\u003d changes.issue.currentValue) {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.resetForm();"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" submitTesterResponseForm() {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (this.testerResponseForm.invalid) {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.isFormPending \u003d true;"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.isSafeToSubmit()"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((isSaveToSubmit: boolean) \u003d\u003e {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (isSaveToSubmit || this.isUpdatingDeletedResponse() || this.submitButtonText \u003d\u003d\u003d SUBMIT_BUTTON_TEXT.OVERWRITE) {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return this.issueService.updateTesterResponse(this.issue, \u003cIssueComment\u003e{"},{"lineNumber":80,"author":{"gitId":"-"},"content":" ...this.issue.issueComment,"},{"lineNumber":81,"author":{"gitId":"-"},"content":" description: this.getTesterResponseFromForm()"},{"lineNumber":82,"author":{"gitId":"-"},"content":" });"},{"lineNumber":83,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.OVERWRITE;"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.viewChanges();"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return throwError(\u0027The content you are editing has changed. Please verify the changes and try again.\u0027);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":89,"author":{"gitId":"-"},"content":" finalize(() \u003d\u003e (this.isFormPending \u003d false))"},{"lineNumber":90,"author":{"gitId":"-"},"content":" )"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":92,"author":{"gitId":"-"},"content":" (updatedIssue: Issue) \u003d\u003e {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(updatedIssue);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.resetToDefault();"},{"lineNumber":95,"author":{"gitId":"-"},"content":" },"},{"lineNumber":96,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":" );"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @return - Determines whether it is safe to submit a tester response."},{"lineNumber":104,"author":{"gitId":"-"},"content":" */"},{"lineNumber":105,"author":{"gitId":"-"},"content":" isSafeToSubmit(): Observable\u003cboolean\u003e {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return this.issueService.getLatestIssue(this.issue.id).pipe("},{"lineNumber":107,"author":{"gitId":"-"},"content":" map((issue: Issue) \u003d\u003e {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!issue.testerResponses) {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return issue.testerResponses.reduce((result, response, index) \u003d\u003e {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return result \u0026\u0026 response.compareTo(this.issue.testerResponses[index]) \u003d\u003d\u003d 0;"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }, true);"},{"lineNumber":114,"author":{"gitId":"-"},"content":" })"},{"lineNumber":115,"author":{"gitId":"-"},"content":" );"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }"},{"lineNumber":117,"author":{"gitId":"-"},"content":""},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Determines whether the user is updating a response that has already been deleted on Github."},{"lineNumber":120,"author":{"gitId":"-"},"content":" */"},{"lineNumber":121,"author":{"gitId":"-"},"content":" isUpdatingDeletedResponse(): boolean {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return this.issue.testerResponses \u0026\u0026 !this.issueService.issues[this.issue.id].testerResponses;"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }"},{"lineNumber":124,"author":{"gitId":"-"},"content":""},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Pops up a dialog that shows the difference between the outdated tester\u0027s response and the updated one."},{"lineNumber":127,"author":{"gitId":"-"},"content":" */"},{"lineNumber":128,"author":{"gitId":"-"},"content":" viewChanges(): void {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" this.dialog.open(ConflictDialogComponent, {"},{"lineNumber":130,"author":{"gitId":"-"},"content":" data: \u003cTesterResponseConflictData\u003e{"},{"lineNumber":131,"author":{"gitId":"-"},"content":" outdatedResponses: this.issue.testerResponses,"},{"lineNumber":132,"author":{"gitId":"-"},"content":" updatedResponses: this.issueService.issues[this.issue.id].testerResponses"},{"lineNumber":133,"author":{"gitId":"-"},"content":" },"},{"lineNumber":134,"author":{"gitId":"-"},"content":" autoFocus: false"},{"lineNumber":135,"author":{"gitId":"-"},"content":" });"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }"},{"lineNumber":137,"author":{"gitId":"-"},"content":""},{"lineNumber":138,"author":{"gitId":"-"},"content":" changeToEditMode() {"},{"lineNumber":139,"author":{"gitId":"-"},"content":" this.updateEditState.emit(true);"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }"},{"lineNumber":141,"author":{"gitId":"-"},"content":""},{"lineNumber":142,"author":{"gitId":"-"},"content":" openCancelDialogIfModified(): void {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" const reasonForDisagreementIsModified \u003d this.issue.testerResponses"},{"lineNumber":144,"author":{"gitId":"-"},"content":" .filter((t: TesterResponse, index: number) \u003d\u003e this.isResponseDisagreed(index))"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .map((t: TesterResponse, index: number) \u003d\u003e {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" const currentValue \u003d this.getTesterResponseText(index);"},{"lineNumber":147,"author":{"gitId":"-"},"content":" const initialValue \u003d t.reasonForDisagreement || \u0027\u0027;"},{"lineNumber":148,"author":{"gitId":"-"},"content":""},{"lineNumber":149,"author":{"gitId":"-"},"content":" return currentValue !\u003d\u003d initialValue;"},{"lineNumber":150,"author":{"gitId":"-"},"content":" })"},{"lineNumber":151,"author":{"gitId":"-"},"content":" .reduce((a, b) \u003d\u003e a || b, false);"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" const disagreementIsModified \u003d this.issue.testerResponses"},{"lineNumber":154,"author":{"gitId":"-"},"content":" .map((t: TesterResponse, index: number) \u003d\u003e {"},{"lineNumber":155,"author":{"gitId":"-"},"content":" const currentValue \u003d this.isResponseDisagreed(index);"},{"lineNumber":156,"author":{"gitId":"-"},"content":" const initialValue \u003d t.isDisagree();"},{"lineNumber":157,"author":{"gitId":"-"},"content":""},{"lineNumber":158,"author":{"gitId":"-"},"content":" return currentValue !\u003d\u003d initialValue;"},{"lineNumber":159,"author":{"gitId":"-"},"content":" })"},{"lineNumber":160,"author":{"gitId":"-"},"content":" .reduce((a, b) \u003d\u003e a || b, false);"},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":" const isModified \u003d reasonForDisagreementIsModified || disagreementIsModified;"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.dialogService.performActionIfModified("},{"lineNumber":165,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" isModified,"},{"lineNumber":166,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" () \u003d\u003e this.openCancelDialog(),"},{"lineNumber":167,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" () \u003d\u003e this.cancelEditMode()"},{"lineNumber":168,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }"},{"lineNumber":170,"author":{"gitId":"-"},"content":""},{"lineNumber":171,"author":{"gitId":"-"},"content":" openCancelDialog(): void {"},{"lineNumber":172,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openUserConfirmationModal("},{"lineNumber":173,"author":{"gitId":"-"},"content":" this.cancelEditModalMessages,"},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.yesButtonModalMessage,"},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.noButtonModalMessage"},{"lineNumber":176,"author":{"gitId":"-"},"content":" );"},{"lineNumber":177,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":178,"author":{"gitId":"-"},"content":" if (res) {"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.cancelEditMode();"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }"},{"lineNumber":181,"author":{"gitId":"-"},"content":" });"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }"},{"lineNumber":183,"author":{"gitId":"-"},"content":""},{"lineNumber":184,"author":{"gitId":"-"},"content":" cancelEditMode() {"},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.issueService.getIssue(this.issue.id).subscribe((issue: Issue) \u003d\u003e {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(issue);"},{"lineNumber":187,"author":{"gitId":"-"},"content":" this.resetToDefault();"},{"lineNumber":188,"author":{"gitId":"-"},"content":" });"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }"},{"lineNumber":190,"author":{"gitId":"-"},"content":""},{"lineNumber":191,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":192,"author":{"gitId":"-"},"content":" * Resets to default form state."},{"lineNumber":193,"author":{"gitId":"-"},"content":" */"},{"lineNumber":194,"author":{"gitId":"-"},"content":" resetToDefault(): void {"},{"lineNumber":195,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.SAVE;"},{"lineNumber":196,"author":{"gitId":"-"},"content":" this.updateEditState.emit(false);"},{"lineNumber":197,"author":{"gitId":"-"},"content":" this.resetForm();"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }"},{"lineNumber":199,"author":{"gitId":"-"},"content":""},{"lineNumber":200,"author":{"gitId":"-"},"content":" handleChangeOfDisagreeRadioButton(event, index: number) {"},{"lineNumber":201,"author":{"gitId":"-"},"content":" const responseFormControl \u003d this.testerResponseForm.get(this.getTesterResponseFormId(index));"},{"lineNumber":202,"author":{"gitId":"-"},"content":" const isDisagreeChecked \u003d this.isResponseDisagreed(index);"},{"lineNumber":203,"author":{"gitId":"-"},"content":" if (isDisagreeChecked) {"},{"lineNumber":204,"author":{"gitId":"-"},"content":" responseFormControl.enable();"},{"lineNumber":205,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":206,"author":{"gitId":"-"},"content":" responseFormControl.disable();"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }"},{"lineNumber":209,"author":{"gitId":"-"},"content":""},{"lineNumber":210,"author":{"gitId":"-"},"content":" trackDisagreeList(index: number, item: string[]): string {"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return item[index];"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }"},{"lineNumber":213,"author":{"gitId":"-"},"content":""},{"lineNumber":214,"author":{"gitId":"-"},"content":" isNewResponse(): boolean {"},{"lineNumber":215,"author":{"gitId":"-"},"content":" return !this.issue.status \u0026\u0026 this.userService.currentUser.role \u003d\u003d\u003d UserRole.Student;"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }"},{"lineNumber":217,"author":{"gitId":"-"},"content":""},{"lineNumber":218,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":219,"author":{"gitId":"-"},"content":" * Will create a form group with initial values in `this.issue`."},{"lineNumber":220,"author":{"gitId":"-"},"content":" */"},{"lineNumber":221,"author":{"gitId":"-"},"content":" createFormGroup() {"},{"lineNumber":222,"author":{"gitId":"-"},"content":" const group: any \u003d {};"},{"lineNumber":223,"author":{"gitId":"-"},"content":" // initialize fields for tester response and the radio buttons for tester to choose \"Agree\" / \"Disagree\""},{"lineNumber":224,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c this.issue.testerResponses.length; i++) {"},{"lineNumber":225,"author":{"gitId":"-"},"content":" const response \u003d this.issue.testerResponses[i];"},{"lineNumber":226,"author":{"gitId":"-"},"content":" group[this.getTesterResponseFormId(i)] \u003d new FormControl("},{"lineNumber":227,"author":{"gitId":"-"},"content":" {"},{"lineNumber":228,"author":{"gitId":"-"},"content":" value: response.reasonForDisagreement,"},{"lineNumber":229,"author":{"gitId":"-"},"content":" disabled: !response.isDisagree()"},{"lineNumber":230,"author":{"gitId":"-"},"content":" },"},{"lineNumber":231,"author":{"gitId":"-"},"content":" Validators.required"},{"lineNumber":232,"author":{"gitId":"-"},"content":" );"},{"lineNumber":233,"author":{"gitId":"-"},"content":" group[this.getDisagreeRadioFormId(i)] \u003d new FormControl("},{"lineNumber":234,"author":{"gitId":"-"},"content":" {"},{"lineNumber":235,"author":{"gitId":"-"},"content":" value: response.isDisagree(),"},{"lineNumber":236,"author":{"gitId":"-"},"content":" disabled: !this.isEditing"},{"lineNumber":237,"author":{"gitId":"-"},"content":" },"},{"lineNumber":238,"author":{"gitId":"-"},"content":" Validators.required"},{"lineNumber":239,"author":{"gitId":"-"},"content":" );"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }"},{"lineNumber":241,"author":{"gitId":"-"},"content":" return group;"},{"lineNumber":242,"author":{"gitId":"-"},"content":" }"},{"lineNumber":243,"author":{"gitId":"-"},"content":""},{"lineNumber":244,"author":{"gitId":"-"},"content":" resetForm(): void {"},{"lineNumber":245,"author":{"gitId":"-"},"content":" this.testerResponseForm \u003d this.formBuilder.group(this.createFormGroup());"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }"},{"lineNumber":247,"author":{"gitId":"-"},"content":""},{"lineNumber":248,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Based on the updated form and `this.issue` we obtain the updated tester response in Github format."},{"lineNumber":250,"author":{"gitId":"-"},"content":" */"},{"lineNumber":251,"author":{"gitId":"-"},"content":" getTesterResponseFromForm(): string {"},{"lineNumber":252,"author":{"gitId":"-"},"content":" if (!this.issue.testerResponses) {"},{"lineNumber":253,"author":{"gitId":"-"},"content":" return \u0027\u0027;"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }"},{"lineNumber":255,"author":{"gitId":"-"},"content":""},{"lineNumber":256,"author":{"gitId":"-"},"content":" const updatedIssue \u003d this.issue.clone(this.phaseService.currentPhase);"},{"lineNumber":257,"author":{"gitId":"-"},"content":""},{"lineNumber":258,"author":{"gitId":"-"},"content":" updatedIssue.testerResponses.map((response: TesterResponse, index: number) \u003d\u003e {"},{"lineNumber":259,"author":{"gitId":"-"},"content":" // Filter Keys based on Response Index"},{"lineNumber":260,"author":{"gitId":"-"},"content":" const isDisagree \u003d this.isResponseDisagreed(index);"},{"lineNumber":261,"author":{"gitId":"-"},"content":" const reason \u003d isDisagree ? this.getTesterResponseText(index) || response.reasonForDisagreement : response.INITIAL_RESPONSE;"},{"lineNumber":262,"author":{"gitId":"-"},"content":""},{"lineNumber":263,"author":{"gitId":"-"},"content":" response.setDisagree(isDisagree);"},{"lineNumber":264,"author":{"gitId":"-"},"content":" response.setReasonForDisagreement(reason);"},{"lineNumber":265,"author":{"gitId":"-"},"content":" return response;"},{"lineNumber":266,"author":{"gitId":"-"},"content":" });"},{"lineNumber":267,"author":{"gitId":"-"},"content":""},{"lineNumber":268,"author":{"gitId":"-"},"content":" return updatedIssue.createGithubTesterResponse();"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }"},{"lineNumber":270,"author":{"gitId":"-"},"content":""},{"lineNumber":271,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":272,"author":{"gitId":"-"},"content":" * @param index - index of action which the tester disagree."},{"lineNumber":273,"author":{"gitId":"-"},"content":" */"},{"lineNumber":274,"author":{"gitId":"-"},"content":" getTesterResponseFormId(index: number): string {"},{"lineNumber":275,"author":{"gitId":"-"},"content":" return `${this.responseTextIdentifier}-${index}`;"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }"},{"lineNumber":277,"author":{"gitId":"-"},"content":""},{"lineNumber":278,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":279,"author":{"gitId":"-"},"content":" * Gets the Tester\u0027s Response text."},{"lineNumber":280,"author":{"gitId":"-"},"content":" * @param index Tester Response Index."},{"lineNumber":281,"author":{"gitId":"-"},"content":" */"},{"lineNumber":282,"author":{"gitId":"-"},"content":" getTesterResponseText(index: number): string {"},{"lineNumber":283,"author":{"gitId":"-"},"content":" return this.testerResponseForm.get(this.getTesterResponseFormId(index)).value;"},{"lineNumber":284,"author":{"gitId":"-"},"content":" }"},{"lineNumber":285,"author":{"gitId":"-"},"content":""},{"lineNumber":286,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":287,"author":{"gitId":"-"},"content":" * @param index - index of action which the tester disagree."},{"lineNumber":288,"author":{"gitId":"-"},"content":" */"},{"lineNumber":289,"author":{"gitId":"-"},"content":" getDisagreeRadioFormId(index: number): string {"},{"lineNumber":290,"author":{"gitId":"-"},"content":" return `${this.responseRadioIdentifier}-${index}`;"},{"lineNumber":291,"author":{"gitId":"-"},"content":" }"},{"lineNumber":292,"author":{"gitId":"-"},"content":""},{"lineNumber":293,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":294,"author":{"gitId":"-"},"content":" * Checks if Tester Response was agreed to or disagreed with."},{"lineNumber":295,"author":{"gitId":"-"},"content":" * @param index Tester Response Index,"},{"lineNumber":296,"author":{"gitId":"-"},"content":" * @returns true if response was disagreed with, false if response was agreed with."},{"lineNumber":297,"author":{"gitId":"-"},"content":" */"},{"lineNumber":298,"author":{"gitId":"-"},"content":" isResponseDisagreed(index: number): boolean {"},{"lineNumber":299,"author":{"gitId":"-"},"content":" return this.testerResponseForm.get(this.getDisagreeRadioFormId(index)).value;"},{"lineNumber":300,"author":{"gitId":"-"},"content":" }"},{"lineNumber":301,"author":{"gitId":"-"},"content":""},{"lineNumber":302,"author":{"gitId":"-"},"content":" get conflict(): boolean {"},{"lineNumber":303,"author":{"gitId":"-"},"content":" return this.submitButtonText \u003d\u003d\u003d SUBMIT_BUTTON_TEXT.OVERWRITE;"},{"lineNumber":304,"author":{"gitId":"-"},"content":" }"},{"lineNumber":305,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":7,"-":298}},{"path":"src/app/shared/view-issue/view-issue.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv *ngIf\u003d\"isIssueLoading\" class\u003d\"centralize\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cmat-spinner [diameter]\u003d\"47\"\u003e\u003c/mat-spinner\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cdiv *ngIf\u003d\"!isIssueLoading\"\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003capp-issue-title [issue]\u003d\"issue\" (issueUpdated)\u003d\"updateIssue($event)\"\u003e\u003c/app-issue-title\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"column left\"\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003c!-- Tester\u0027s Post --\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003capp-issue-description"},{"lineNumber":14,"author":{"gitId":"-"},"content":" [isEditing]\u003d\"isIssueDescriptionEditing\""},{"lineNumber":15,"author":{"gitId":"-"},"content":" (changeEditState)\u003d\"updateDescriptionEditState($event)\""},{"lineNumber":16,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.TESTER_POST)\""},{"lineNumber":17,"author":{"gitId":"-"},"content":" [issue]\u003d\"issue\""},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" descriptionTitle\u003d\"Description of Issue\""},{"lineNumber":19,"author":{"gitId":"-"},"content":" (issueUpdated)\u003d\"updateIssue($event)\""},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/app-issue-description\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Team\u0027s Response --\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003capp-team-response"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.TEAM_RESPONSE) \u0026\u0026 issue.teamResponse\""},{"lineNumber":26,"author":{"gitId":"-"},"content":" [issue]\u003d\"issue\""},{"lineNumber":27,"author":{"gitId":"-"},"content":" [isEditing]\u003d\"isTeamResponseEditing\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" (updateEditState)\u003d\"updateTeamResponseEditState($event)\""},{"lineNumber":29,"author":{"gitId":"-"},"content":" (issueUpdated)\u003d\"updateIssue($event)\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/app-team-response\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c!-- New Team\u0027s Response --\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003capp-new-team-response *ngIf\u003d\"hasNoTeamResponse()\" [issue]\u003d\"issue\" (issueUpdated)\u003d\"updateIssue($event)\"\u003e \u003c/app-new-team-response\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c!-- Team Response Parsing Error --\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003capp-parse-error *ngIf\u003d\"hasTeamResponseParseError()\" [phase]\u003d\"\u0027Team Response\u0027\"\u003e \u003c/app-parse-error\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c!-- Tester\u0027s Response --\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003capp-tester-response"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.TESTER_RESPONSE) \u0026\u0026 issue.testerResponses \u0026\u0026 issue.testerResponses.length !\u003d\u003d 0\""},{"lineNumber":42,"author":{"gitId":"-"},"content":" [issue]\u003d\"issue\""},{"lineNumber":43,"author":{"gitId":"-"},"content":" [isEditing]\u003d\"isTesterResponseEditing\""},{"lineNumber":44,"author":{"gitId":"-"},"content":" (updateEditState)\u003d\"updateTesterResponseEditState($event)\""},{"lineNumber":45,"author":{"gitId":"-"},"content":" (issueUpdated)\u003d\"updateIssue($event)\""},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/app-tester-response\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c!-- Tester Response Parsing Error --\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003capp-parse-error"},{"lineNumber":51,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.TESTER_RESPONSE) \u0026\u0026 issue.testerResponseError\""},{"lineNumber":52,"author":{"gitId":"-"},"content":" [phase]\u003d\"\u0027Tester Response\u0027\""},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/app-parse-error\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c!-- Team Accepted --\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003capp-team-accepted *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.TESTER_RESPONSE) \u0026\u0026 issue.teamAccepted\"\u003e \u003c/app-team-accepted\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c!-- Issue Disputes For Tutor\u0027s Response --\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003capp-issue-dispute"},{"lineNumber":61,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.ISSUE_DISPUTE)\""},{"lineNumber":62,"author":{"gitId":"-"},"content":" [issue]\u003d\"issue\""},{"lineNumber":63,"author":{"gitId":"-"},"content":" (issueUpdated)\u003d\"updateIssue($event)\""},{"lineNumber":64,"author":{"gitId":"-"},"content":" [isEditing]\u003d\"isTutorResponseEditing\""},{"lineNumber":65,"author":{"gitId":"-"},"content":" (updateEditState)\u003d\"updateTutorResponseEditState($event)\""},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/app-issue-dispute\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"column right\"\u003e"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u003cdiv"},{"lineNumber":72,"author":{"gitId":"-"},"content":" *ngIf\u003d\""},{"lineNumber":73,"author":{"gitId":"-"},"content":" (this.isComponentVisible(issueComponentsEnum.NEW_TEAM_RESPONSE) \u0026\u0026 issue.teamResponse) ||"},{"lineNumber":74,"author":{"gitId":"-"},"content":" (this.isComponentVisible(issueComponentsEnum.TESTER_RESPONSE) \u0026\u0026 this.userService.currentUser.role \u003d\u003d\u003d userRole.Student) ||"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.isComponentVisible(issueComponentsEnum.ISSUE_DISPUTE) ||"},{"lineNumber":76,"author":{"gitId":"-"},"content":" !this.isComponentVisible(issueComponentsEnum.TEAM_RESPONSE)"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \""},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":79,"author":{"gitId":"-"},"content":" \u003c!-- Severity Label --\u003e"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003capp-issue-label"},{"lineNumber":81,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.SEVERITY_LABEL)\""},{"lineNumber":82,"author":{"gitId":"-"},"content":" [issue]\u003d\"issue\""},{"lineNumber":83,"author":{"gitId":"-"},"content":" attributeName\u003d\"severity\""},{"lineNumber":84,"author":{"gitId":"-"},"content":" (issueUpdated)\u003d\"updateIssue($event)\""},{"lineNumber":85,"author":{"gitId":"-"},"content":" \u003e\u003c/app-issue-label\u003e"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003c!-- Bug Type Label --\u003e"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.TYPE_LABEL)\"\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003capp-issue-label [issue]\u003d\"issue\" attributeName\u003d\"type\" (issueUpdated)\u003d\"updateIssue($event)\"\u003e\u003c/app-issue-label\u003e"},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c!-- Response Label --\u003e"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.RESPONSE_LABEL)\"\u003e"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":96,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003capp-issue-label [issue]\u003d\"issue\" attributeName\u003d\"response\" (issueUpdated)\u003d\"updateIssue($event)\"\u003e\u003c/app-issue-label\u003e"},{"lineNumber":97,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u003c!-- Assignee to this Issue --\u003e"},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.ASSIGNEE)\"\u003e"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u003capp-assignee-component [issue]\u003d\"issue\" [team]\u003d\"issue.teamAssigned\" (issueUpdated)\u003d\"updateIssue($event)\"\u003e\u003c/app-assignee-component\u003e"},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u003c!-- Duplicate information --\u003e"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003cdiv"},{"lineNumber":107,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.DUPLICATE) \u0026\u0026 (issueService.getDuplicateIssuesFor(issue) | async).length !\u003d\u003d 0\""},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u003capp-duplicated-issues-component [issue]\u003d\"issue\"\u003e\u003c/app-duplicated-issues-component\u003e"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u003cbr /\u003e"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u003cdiv"},{"lineNumber":114,"author":{"gitId":"-"},"content":" *ngIf\u003d\""},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.isComponentVisible(issueComponentsEnum.DUPLICATE) \u0026\u0026"},{"lineNumber":116,"author":{"gitId":"-"},"content":" (issue.duplicateOf || (issueService.getDuplicateIssuesFor(issue) | async).length \u003d\u003d\u003d 0)"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \""},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":119,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u003capp-duplicate-of-component [issue]\u003d\"issue\" (issueUpdated)\u003d\"updateIssue($event)\"\u003e\u003c/app-duplicate-of-component\u003e"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":122,"author":{"gitId":"-"},"content":""},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u003c!-- Faulty issue warning --\u003e"},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003cdiv"},{"lineNumber":125,"author":{"gitId":"-"},"content":" style\u003d\"margin-top: 15px; color: red\""},{"lineNumber":126,"author":{"gitId":"-"},"content":" *ngIf\u003d\""},{"lineNumber":127,"author":{"gitId":"-"},"content":" this.isComponentVisible(issueComponentsEnum.DUPLICATE) \u0026\u0026"},{"lineNumber":128,"author":{"gitId":"-"},"content":" (issueService.getDuplicateIssuesFor(issue) | async).length !\u003d\u003d 0 \u0026\u0026"},{"lineNumber":129,"author":{"gitId":"-"},"content":" (issue.duplicateOf || (issueService.getDuplicateIssuesFor(issue) | async).length \u003d\u003d\u003d 0)"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \""},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Need your resolution. An issue cannot have both duplicated issues and duplicated status."},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":134,"author":{"gitId":"-"},"content":""},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u003c!-- Unsure checkbox --\u003e"},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.UNSURE_CHECKBOX)\"\u003e"},{"lineNumber":137,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u003capp-unsure-checkbox [issue]\u003d\"issue\" (issueUpdated)\u003d\"updateIssue($event)\"\u003e\u003c/app-unsure-checkbox\u003e"},{"lineNumber":139,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":142,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":143,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"Eclipse-Dominator":1,"vigneshsankariyer1234567890":1,"-":141}},{"path":"src/assets/fontawesome/css/fontawesome.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"/*!"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" * Font Awesome Free 6.3.0 by @fontawesome - https://fontawesome.com"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" * Copyright 2023 Fonticons, Inc."},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":".fa {"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" font-family: var(--fa-style-family, \u0027Font Awesome 6 Free\u0027);"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" font-weight: var(--fa-style, 900);"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":".fa,"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-brands,"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-classic,"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-regular,"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sharp,"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-solid,"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":".fab,"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":".far,"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":".fas {"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" -moz-osx-font-smoothing: grayscale;"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-font-smoothing: antialiased;"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":" display: var(--fa-display, inline-block);"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" font-style: normal;"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" font-variant: normal;"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: 1;"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" text-rendering: auto;"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-classic,"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-regular,"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-solid,"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":".far,"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":".fas {"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" font-family: \u0027Font Awesome 6 Free\u0027;"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-brands,"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":".fab {"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" font-family: \u0027Font Awesome 6 Brands\u0027;"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-1x {"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 1em;"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-2x {"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 2em;"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-3x {"},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 3em;"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-4x {"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 4em;"},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-5x {"},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 5em;"},{"lineNumber":52,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-6x {"},{"lineNumber":54,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 6em;"},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":56,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-7x {"},{"lineNumber":57,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 7em;"},{"lineNumber":58,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":59,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-8x {"},{"lineNumber":60,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 8em;"},{"lineNumber":61,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-9x {"},{"lineNumber":63,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 9em;"},{"lineNumber":64,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":65,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-10x {"},{"lineNumber":66,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 10em;"},{"lineNumber":67,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":68,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-2xs {"},{"lineNumber":69,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 0.625em;"},{"lineNumber":70,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: 0.1em;"},{"lineNumber":71,"author":{"gitId":"Eclipse-Dominator"},"content":" vertical-align: 0.225em;"},{"lineNumber":72,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":73,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-xs {"},{"lineNumber":74,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 0.75em;"},{"lineNumber":75,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: 0.08333em;"},{"lineNumber":76,"author":{"gitId":"Eclipse-Dominator"},"content":" vertical-align: 0.125em;"},{"lineNumber":77,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":78,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sm {"},{"lineNumber":79,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 0.875em;"},{"lineNumber":80,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: 0.07143em;"},{"lineNumber":81,"author":{"gitId":"Eclipse-Dominator"},"content":" vertical-align: 0.05357em;"},{"lineNumber":82,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":83,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lg {"},{"lineNumber":84,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 1.25em;"},{"lineNumber":85,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: 0.05em;"},{"lineNumber":86,"author":{"gitId":"Eclipse-Dominator"},"content":" vertical-align: -0.075em;"},{"lineNumber":87,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":88,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-xl {"},{"lineNumber":89,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 1.5em;"},{"lineNumber":90,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: 0.04167em;"},{"lineNumber":91,"author":{"gitId":"Eclipse-Dominator"},"content":" vertical-align: -0.125em;"},{"lineNumber":92,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":93,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-2xl {"},{"lineNumber":94,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 2em;"},{"lineNumber":95,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: 0.03125em;"},{"lineNumber":96,"author":{"gitId":"Eclipse-Dominator"},"content":" vertical-align: -0.1875em;"},{"lineNumber":97,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":98,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fw {"},{"lineNumber":99,"author":{"gitId":"Eclipse-Dominator"},"content":" text-align: center;"},{"lineNumber":100,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 1.25em;"},{"lineNumber":101,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":102,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ul {"},{"lineNumber":103,"author":{"gitId":"Eclipse-Dominator"},"content":" list-style-type: none;"},{"lineNumber":104,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-left: var(--fa-li-margin, 2.5em);"},{"lineNumber":105,"author":{"gitId":"Eclipse-Dominator"},"content":" padding-left: 0;"},{"lineNumber":106,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":107,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ul \u003e li {"},{"lineNumber":108,"author":{"gitId":"Eclipse-Dominator"},"content":" position: relative;"},{"lineNumber":109,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":110,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-li {"},{"lineNumber":111,"author":{"gitId":"Eclipse-Dominator"},"content":" left: calc(var(--fa-li-width, 2em) * -1);"},{"lineNumber":112,"author":{"gitId":"Eclipse-Dominator"},"content":" position: absolute;"},{"lineNumber":113,"author":{"gitId":"Eclipse-Dominator"},"content":" text-align: center;"},{"lineNumber":114,"author":{"gitId":"Eclipse-Dominator"},"content":" width: var(--fa-li-width, 2em);"},{"lineNumber":115,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: inherit;"},{"lineNumber":116,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":117,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-border {"},{"lineNumber":118,"author":{"gitId":"Eclipse-Dominator"},"content":" border-radius: var(--fa-border-radius, 0.1em);"},{"lineNumber":119,"author":{"gitId":"Eclipse-Dominator"},"content":" border: var(--fa-border-width, 0.08em) var(--fa-border-style, solid) var(--fa-border-color, #eee);"},{"lineNumber":120,"author":{"gitId":"Eclipse-Dominator"},"content":" padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);"},{"lineNumber":121,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":122,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pull-left {"},{"lineNumber":123,"author":{"gitId":"Eclipse-Dominator"},"content":" float: left;"},{"lineNumber":124,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-right: var(--fa-pull-margin, 0.3em);"},{"lineNumber":125,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":126,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pull-right {"},{"lineNumber":127,"author":{"gitId":"Eclipse-Dominator"},"content":" float: right;"},{"lineNumber":128,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-left: var(--fa-pull-margin, 0.3em);"},{"lineNumber":129,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":130,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-beat {"},{"lineNumber":131,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-name: fa-beat;"},{"lineNumber":132,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-name: fa-beat;"},{"lineNumber":133,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":134,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":135,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":136,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":137,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":138,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":139,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":140,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":141,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);"},{"lineNumber":142,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-timing-function: var(--fa-animation-timing, ease-in-out);"},{"lineNumber":143,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":144,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bounce {"},{"lineNumber":145,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-name: fa-bounce;"},{"lineNumber":146,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-name: fa-bounce;"},{"lineNumber":147,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":148,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":149,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":150,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":151,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":152,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":153,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":154,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":155,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));"},{"lineNumber":156,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));"},{"lineNumber":157,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":158,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fade {"},{"lineNumber":159,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-name: fa-fade;"},{"lineNumber":160,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-name: fa-fade;"},{"lineNumber":161,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":162,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":163,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));"},{"lineNumber":164,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));"},{"lineNumber":165,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":166,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-beat-fade,"},{"lineNumber":167,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fade {"},{"lineNumber":168,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":169,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":170,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":171,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":172,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":173,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":174,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":175,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-beat-fade {"},{"lineNumber":176,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-name: fa-beat-fade;"},{"lineNumber":177,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-name: fa-beat-fade;"},{"lineNumber":178,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":179,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":180,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));"},{"lineNumber":181,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));"},{"lineNumber":182,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":183,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flip {"},{"lineNumber":184,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-name: fa-flip;"},{"lineNumber":185,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-name: fa-flip;"},{"lineNumber":186,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":187,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":188,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":189,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":190,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":191,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":192,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":193,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":194,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);"},{"lineNumber":195,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-timing-function: var(--fa-animation-timing, ease-in-out);"},{"lineNumber":196,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":197,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shake {"},{"lineNumber":198,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-name: fa-shake;"},{"lineNumber":199,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-name: fa-shake;"},{"lineNumber":200,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":201,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":202,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":203,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":204,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-timing-function: var(--fa-animation-timing, linear);"},{"lineNumber":205,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-timing-function: var(--fa-animation-timing, linear);"},{"lineNumber":206,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":207,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shake,"},{"lineNumber":208,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spin {"},{"lineNumber":209,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":210,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":211,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":212,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":213,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":214,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spin {"},{"lineNumber":215,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-name: fa-spin;"},{"lineNumber":216,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-name: fa-spin;"},{"lineNumber":217,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-duration: var(--fa-animation-duration, 2s);"},{"lineNumber":218,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-duration: var(--fa-animation-duration, 2s);"},{"lineNumber":219,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":220,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":221,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-timing-function: var(--fa-animation-timing, linear);"},{"lineNumber":222,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-timing-function: var(--fa-animation-timing, linear);"},{"lineNumber":223,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":224,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spin-reverse {"},{"lineNumber":225,"author":{"gitId":"Eclipse-Dominator"},"content":" --fa-animation-direction: reverse;"},{"lineNumber":226,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":227,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pulse,"},{"lineNumber":228,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spin-pulse {"},{"lineNumber":229,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-name: fa-spin;"},{"lineNumber":230,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-name: fa-spin;"},{"lineNumber":231,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":232,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":233,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":234,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":235,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":236,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":237,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));"},{"lineNumber":238,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-timing-function: var(--fa-animation-timing, steps(8));"},{"lineNumber":239,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":240,"author":{"gitId":"Eclipse-Dominator"},"content":"@media (prefers-reduced-motion: reduce) {"},{"lineNumber":241,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-beat,"},{"lineNumber":242,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-beat-fade,"},{"lineNumber":243,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-bounce,"},{"lineNumber":244,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-fade,"},{"lineNumber":245,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-flip,"},{"lineNumber":246,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-pulse,"},{"lineNumber":247,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-shake,"},{"lineNumber":248,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-spin,"},{"lineNumber":249,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-spin-pulse {"},{"lineNumber":250,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-delay: -1ms;"},{"lineNumber":251,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-delay: -1ms;"},{"lineNumber":252,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-duration: 1ms;"},{"lineNumber":253,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-duration: 1ms;"},{"lineNumber":254,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: 1;"},{"lineNumber":255,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: 1;"},{"lineNumber":256,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transition-delay: 0s;"},{"lineNumber":257,"author":{"gitId":"Eclipse-Dominator"},"content":" transition-delay: 0s;"},{"lineNumber":258,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transition-duration: 0s;"},{"lineNumber":259,"author":{"gitId":"Eclipse-Dominator"},"content":" transition-duration: 0s;"},{"lineNumber":260,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":261,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":262,"author":{"gitId":"Eclipse-Dominator"},"content":"@-webkit-keyframes fa-beat {"},{"lineNumber":263,"author":{"gitId":"Eclipse-Dominator"},"content":" 0%,"},{"lineNumber":264,"author":{"gitId":"Eclipse-Dominator"},"content":" 90% {"},{"lineNumber":265,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1);"},{"lineNumber":266,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1);"},{"lineNumber":267,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":268,"author":{"gitId":"Eclipse-Dominator"},"content":" 45% {"},{"lineNumber":269,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-beat-scale, 1.25));"},{"lineNumber":270,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-beat-scale, 1.25));"},{"lineNumber":271,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":272,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":273,"author":{"gitId":"Eclipse-Dominator"},"content":"@keyframes fa-beat {"},{"lineNumber":274,"author":{"gitId":"Eclipse-Dominator"},"content":" 0%,"},{"lineNumber":275,"author":{"gitId":"Eclipse-Dominator"},"content":" 90% {"},{"lineNumber":276,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1);"},{"lineNumber":277,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1);"},{"lineNumber":278,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":279,"author":{"gitId":"Eclipse-Dominator"},"content":" 45% {"},{"lineNumber":280,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-beat-scale, 1.25));"},{"lineNumber":281,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-beat-scale, 1.25));"},{"lineNumber":282,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":283,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":284,"author":{"gitId":"Eclipse-Dominator"},"content":"@-webkit-keyframes fa-bounce {"},{"lineNumber":285,"author":{"gitId":"Eclipse-Dominator"},"content":" 0% {"},{"lineNumber":286,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1) translateY(0);"},{"lineNumber":287,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1) translateY(0);"},{"lineNumber":288,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":289,"author":{"gitId":"Eclipse-Dominator"},"content":" 10% {"},{"lineNumber":290,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);"},{"lineNumber":291,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);"},{"lineNumber":292,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":293,"author":{"gitId":"Eclipse-Dominator"},"content":" 30% {"},{"lineNumber":294,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1))"},{"lineNumber":295,"author":{"gitId":"Eclipse-Dominator"},"content":" translateY(var(--fa-bounce-height, -0.5em));"},{"lineNumber":296,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));"},{"lineNumber":297,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":298,"author":{"gitId":"Eclipse-Dominator"},"content":" 50% {"},{"lineNumber":299,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);"},{"lineNumber":300,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);"},{"lineNumber":301,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":302,"author":{"gitId":"Eclipse-Dominator"},"content":" 57% {"},{"lineNumber":303,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1) translateY(var(--fa-bounce-rebound, -0.125em));"},{"lineNumber":304,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1) translateY(var(--fa-bounce-rebound, -0.125em));"},{"lineNumber":305,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":306,"author":{"gitId":"Eclipse-Dominator"},"content":" 64% {"},{"lineNumber":307,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1) translateY(0);"},{"lineNumber":308,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1) translateY(0);"},{"lineNumber":309,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":310,"author":{"gitId":"Eclipse-Dominator"},"content":" to {"},{"lineNumber":311,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1) translateY(0);"},{"lineNumber":312,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1) translateY(0);"},{"lineNumber":313,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":314,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":315,"author":{"gitId":"Eclipse-Dominator"},"content":"@keyframes fa-bounce {"},{"lineNumber":316,"author":{"gitId":"Eclipse-Dominator"},"content":" 0% {"},{"lineNumber":317,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1) translateY(0);"},{"lineNumber":318,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1) translateY(0);"},{"lineNumber":319,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":320,"author":{"gitId":"Eclipse-Dominator"},"content":" 10% {"},{"lineNumber":321,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);"},{"lineNumber":322,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);"},{"lineNumber":323,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":324,"author":{"gitId":"Eclipse-Dominator"},"content":" 30% {"},{"lineNumber":325,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1))"},{"lineNumber":326,"author":{"gitId":"Eclipse-Dominator"},"content":" translateY(var(--fa-bounce-height, -0.5em));"},{"lineNumber":327,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));"},{"lineNumber":328,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":329,"author":{"gitId":"Eclipse-Dominator"},"content":" 50% {"},{"lineNumber":330,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);"},{"lineNumber":331,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);"},{"lineNumber":332,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":333,"author":{"gitId":"Eclipse-Dominator"},"content":" 57% {"},{"lineNumber":334,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1) translateY(var(--fa-bounce-rebound, -0.125em));"},{"lineNumber":335,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1) translateY(var(--fa-bounce-rebound, -0.125em));"},{"lineNumber":336,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":337,"author":{"gitId":"Eclipse-Dominator"},"content":" 64% {"},{"lineNumber":338,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1) translateY(0);"},{"lineNumber":339,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1) translateY(0);"},{"lineNumber":340,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":341,"author":{"gitId":"Eclipse-Dominator"},"content":" to {"},{"lineNumber":342,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1) translateY(0);"},{"lineNumber":343,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1) translateY(0);"},{"lineNumber":344,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":345,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":346,"author":{"gitId":"Eclipse-Dominator"},"content":"@-webkit-keyframes fa-fade {"},{"lineNumber":347,"author":{"gitId":"Eclipse-Dominator"},"content":" 50% {"},{"lineNumber":348,"author":{"gitId":"Eclipse-Dominator"},"content":" opacity: var(--fa-fade-opacity, 0.4);"},{"lineNumber":349,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":350,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":351,"author":{"gitId":"Eclipse-Dominator"},"content":"@keyframes fa-fade {"},{"lineNumber":352,"author":{"gitId":"Eclipse-Dominator"},"content":" 50% {"},{"lineNumber":353,"author":{"gitId":"Eclipse-Dominator"},"content":" opacity: var(--fa-fade-opacity, 0.4);"},{"lineNumber":354,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":355,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":356,"author":{"gitId":"Eclipse-Dominator"},"content":"@-webkit-keyframes fa-beat-fade {"},{"lineNumber":357,"author":{"gitId":"Eclipse-Dominator"},"content":" 0%,"},{"lineNumber":358,"author":{"gitId":"Eclipse-Dominator"},"content":" to {"},{"lineNumber":359,"author":{"gitId":"Eclipse-Dominator"},"content":" opacity: var(--fa-beat-fade-opacity, 0.4);"},{"lineNumber":360,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1);"},{"lineNumber":361,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1);"},{"lineNumber":362,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":363,"author":{"gitId":"Eclipse-Dominator"},"content":" 50% {"},{"lineNumber":364,"author":{"gitId":"Eclipse-Dominator"},"content":" opacity: 1;"},{"lineNumber":365,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));"},{"lineNumber":366,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-beat-fade-scale, 1.125));"},{"lineNumber":367,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":368,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":369,"author":{"gitId":"Eclipse-Dominator"},"content":"@keyframes fa-beat-fade {"},{"lineNumber":370,"author":{"gitId":"Eclipse-Dominator"},"content":" 0%,"},{"lineNumber":371,"author":{"gitId":"Eclipse-Dominator"},"content":" to {"},{"lineNumber":372,"author":{"gitId":"Eclipse-Dominator"},"content":" opacity: var(--fa-beat-fade-opacity, 0.4);"},{"lineNumber":373,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1);"},{"lineNumber":374,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1);"},{"lineNumber":375,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":376,"author":{"gitId":"Eclipse-Dominator"},"content":" 50% {"},{"lineNumber":377,"author":{"gitId":"Eclipse-Dominator"},"content":" opacity: 1;"},{"lineNumber":378,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));"},{"lineNumber":379,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-beat-fade-scale, 1.125));"},{"lineNumber":380,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":381,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":382,"author":{"gitId":"Eclipse-Dominator"},"content":"@-webkit-keyframes fa-flip {"},{"lineNumber":383,"author":{"gitId":"Eclipse-Dominator"},"content":" 50% {"},{"lineNumber":384,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));"},{"lineNumber":385,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));"},{"lineNumber":386,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":387,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":388,"author":{"gitId":"Eclipse-Dominator"},"content":"@keyframes fa-flip {"},{"lineNumber":389,"author":{"gitId":"Eclipse-Dominator"},"content":" 50% {"},{"lineNumber":390,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));"},{"lineNumber":391,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));"},{"lineNumber":392,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":393,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":394,"author":{"gitId":"Eclipse-Dominator"},"content":"@-webkit-keyframes fa-shake {"},{"lineNumber":395,"author":{"gitId":"Eclipse-Dominator"},"content":" 0% {"},{"lineNumber":396,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(-15deg);"},{"lineNumber":397,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(-15deg);"},{"lineNumber":398,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":399,"author":{"gitId":"Eclipse-Dominator"},"content":" 4% {"},{"lineNumber":400,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(15deg);"},{"lineNumber":401,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(15deg);"},{"lineNumber":402,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":403,"author":{"gitId":"Eclipse-Dominator"},"content":" 8%,"},{"lineNumber":404,"author":{"gitId":"Eclipse-Dominator"},"content":" 24% {"},{"lineNumber":405,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(-18deg);"},{"lineNumber":406,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(-18deg);"},{"lineNumber":407,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":408,"author":{"gitId":"Eclipse-Dominator"},"content":" 12%,"},{"lineNumber":409,"author":{"gitId":"Eclipse-Dominator"},"content":" 28% {"},{"lineNumber":410,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(18deg);"},{"lineNumber":411,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(18deg);"},{"lineNumber":412,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":413,"author":{"gitId":"Eclipse-Dominator"},"content":" 16% {"},{"lineNumber":414,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(-22deg);"},{"lineNumber":415,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(-22deg);"},{"lineNumber":416,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":417,"author":{"gitId":"Eclipse-Dominator"},"content":" 20% {"},{"lineNumber":418,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(22deg);"},{"lineNumber":419,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(22deg);"},{"lineNumber":420,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":421,"author":{"gitId":"Eclipse-Dominator"},"content":" 32% {"},{"lineNumber":422,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(-12deg);"},{"lineNumber":423,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(-12deg);"},{"lineNumber":424,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":425,"author":{"gitId":"Eclipse-Dominator"},"content":" 36% {"},{"lineNumber":426,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(12deg);"},{"lineNumber":427,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(12deg);"},{"lineNumber":428,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":429,"author":{"gitId":"Eclipse-Dominator"},"content":" 40%,"},{"lineNumber":430,"author":{"gitId":"Eclipse-Dominator"},"content":" to {"},{"lineNumber":431,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(0deg);"},{"lineNumber":432,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(0deg);"},{"lineNumber":433,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":434,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":435,"author":{"gitId":"Eclipse-Dominator"},"content":"@keyframes fa-shake {"},{"lineNumber":436,"author":{"gitId":"Eclipse-Dominator"},"content":" 0% {"},{"lineNumber":437,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(-15deg);"},{"lineNumber":438,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(-15deg);"},{"lineNumber":439,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":440,"author":{"gitId":"Eclipse-Dominator"},"content":" 4% {"},{"lineNumber":441,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(15deg);"},{"lineNumber":442,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(15deg);"},{"lineNumber":443,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":444,"author":{"gitId":"Eclipse-Dominator"},"content":" 8%,"},{"lineNumber":445,"author":{"gitId":"Eclipse-Dominator"},"content":" 24% {"},{"lineNumber":446,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(-18deg);"},{"lineNumber":447,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(-18deg);"},{"lineNumber":448,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":449,"author":{"gitId":"Eclipse-Dominator"},"content":" 12%,"},{"lineNumber":450,"author":{"gitId":"Eclipse-Dominator"},"content":" 28% {"},{"lineNumber":451,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(18deg);"},{"lineNumber":452,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(18deg);"},{"lineNumber":453,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":454,"author":{"gitId":"Eclipse-Dominator"},"content":" 16% {"},{"lineNumber":455,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(-22deg);"},{"lineNumber":456,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(-22deg);"},{"lineNumber":457,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":458,"author":{"gitId":"Eclipse-Dominator"},"content":" 20% {"},{"lineNumber":459,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(22deg);"},{"lineNumber":460,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(22deg);"},{"lineNumber":461,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":462,"author":{"gitId":"Eclipse-Dominator"},"content":" 32% {"},{"lineNumber":463,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(-12deg);"},{"lineNumber":464,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(-12deg);"},{"lineNumber":465,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":466,"author":{"gitId":"Eclipse-Dominator"},"content":" 36% {"},{"lineNumber":467,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(12deg);"},{"lineNumber":468,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(12deg);"},{"lineNumber":469,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":470,"author":{"gitId":"Eclipse-Dominator"},"content":" 40%,"},{"lineNumber":471,"author":{"gitId":"Eclipse-Dominator"},"content":" to {"},{"lineNumber":472,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(0deg);"},{"lineNumber":473,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(0deg);"},{"lineNumber":474,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":475,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":476,"author":{"gitId":"Eclipse-Dominator"},"content":"@-webkit-keyframes fa-spin {"},{"lineNumber":477,"author":{"gitId":"Eclipse-Dominator"},"content":" 0% {"},{"lineNumber":478,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(0deg);"},{"lineNumber":479,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(0deg);"},{"lineNumber":480,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":481,"author":{"gitId":"Eclipse-Dominator"},"content":" to {"},{"lineNumber":482,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(1turn);"},{"lineNumber":483,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(1turn);"},{"lineNumber":484,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":485,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":486,"author":{"gitId":"Eclipse-Dominator"},"content":"@keyframes fa-spin {"},{"lineNumber":487,"author":{"gitId":"Eclipse-Dominator"},"content":" 0% {"},{"lineNumber":488,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(0deg);"},{"lineNumber":489,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(0deg);"},{"lineNumber":490,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":491,"author":{"gitId":"Eclipse-Dominator"},"content":" to {"},{"lineNumber":492,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(1turn);"},{"lineNumber":493,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(1turn);"},{"lineNumber":494,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":495,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":496,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-90 {"},{"lineNumber":497,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(90deg);"},{"lineNumber":498,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(90deg);"},{"lineNumber":499,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":500,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-180 {"},{"lineNumber":501,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(180deg);"},{"lineNumber":502,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(180deg);"},{"lineNumber":503,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":504,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-270 {"},{"lineNumber":505,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(270deg);"},{"lineNumber":506,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(270deg);"},{"lineNumber":507,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":508,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flip-horizontal {"},{"lineNumber":509,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scaleX(-1);"},{"lineNumber":510,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scaleX(-1);"},{"lineNumber":511,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":512,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flip-vertical {"},{"lineNumber":513,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scaleY(-1);"},{"lineNumber":514,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scaleY(-1);"},{"lineNumber":515,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":516,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flip-both,"},{"lineNumber":517,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flip-horizontal.fa-flip-vertical {"},{"lineNumber":518,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(-1);"},{"lineNumber":519,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(-1);"},{"lineNumber":520,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":521,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-by {"},{"lineNumber":522,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(var(--fa-rotate-angle, none));"},{"lineNumber":523,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(var(--fa-rotate-angle, none));"},{"lineNumber":524,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":525,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stack {"},{"lineNumber":526,"author":{"gitId":"Eclipse-Dominator"},"content":" display: inline-block;"},{"lineNumber":527,"author":{"gitId":"Eclipse-Dominator"},"content":" height: 2em;"},{"lineNumber":528,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: 2em;"},{"lineNumber":529,"author":{"gitId":"Eclipse-Dominator"},"content":" position: relative;"},{"lineNumber":530,"author":{"gitId":"Eclipse-Dominator"},"content":" vertical-align: middle;"},{"lineNumber":531,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 2.5em;"},{"lineNumber":532,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":533,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stack-1x,"},{"lineNumber":534,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stack-2x {"},{"lineNumber":535,"author":{"gitId":"Eclipse-Dominator"},"content":" left: 0;"},{"lineNumber":536,"author":{"gitId":"Eclipse-Dominator"},"content":" position: absolute;"},{"lineNumber":537,"author":{"gitId":"Eclipse-Dominator"},"content":" text-align: center;"},{"lineNumber":538,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 100%;"},{"lineNumber":539,"author":{"gitId":"Eclipse-Dominator"},"content":" z-index: var(--fa-stack-z-index, auto);"},{"lineNumber":540,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":541,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stack-1x {"},{"lineNumber":542,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: inherit;"},{"lineNumber":543,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":544,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stack-2x {"},{"lineNumber":545,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 2em;"},{"lineNumber":546,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":547,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-inverse {"},{"lineNumber":548,"author":{"gitId":"Eclipse-Dominator"},"content":" color: var(--fa-inverse, #fff);"},{"lineNumber":549,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":550,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":551,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-0:before {"},{"lineNumber":552,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\30\u0027;"},{"lineNumber":553,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":554,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-1:before {"},{"lineNumber":555,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\31\u0027;"},{"lineNumber":556,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":557,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-2:before {"},{"lineNumber":558,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\32\u0027;"},{"lineNumber":559,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":560,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-3:before {"},{"lineNumber":561,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\33\u0027;"},{"lineNumber":562,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":563,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-4:before {"},{"lineNumber":564,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\34\u0027;"},{"lineNumber":565,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":566,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-5:before {"},{"lineNumber":567,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\35\u0027;"},{"lineNumber":568,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":569,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-6:before {"},{"lineNumber":570,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\36\u0027;"},{"lineNumber":571,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":572,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-7:before {"},{"lineNumber":573,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\37\u0027;"},{"lineNumber":574,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":575,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-8:before {"},{"lineNumber":576,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\38\u0027;"},{"lineNumber":577,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":578,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-9:before {"},{"lineNumber":579,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\39\u0027;"},{"lineNumber":580,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":581,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fill-drip:before {"},{"lineNumber":582,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f576\u0027;"},{"lineNumber":583,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":584,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-to-circle:before {"},{"lineNumber":585,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4bd\u0027;"},{"lineNumber":586,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":587,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chevron-circle-right:before,"},{"lineNumber":588,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-chevron-right:before {"},{"lineNumber":589,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f138\u0027;"},{"lineNumber":590,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":591,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-at:before {"},{"lineNumber":592,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\40\u0027;"},{"lineNumber":593,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":594,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trash-alt:before,"},{"lineNumber":595,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trash-can:before {"},{"lineNumber":596,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2ed\u0027;"},{"lineNumber":597,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":598,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-text-height:before {"},{"lineNumber":599,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f034\u0027;"},{"lineNumber":600,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":601,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-times:before,"},{"lineNumber":602,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-xmark:before {"},{"lineNumber":603,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f235\u0027;"},{"lineNumber":604,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":605,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stethoscope:before {"},{"lineNumber":606,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0f1\u0027;"},{"lineNumber":607,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":608,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comment-alt:before,"},{"lineNumber":609,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-message:before {"},{"lineNumber":610,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f27a\u0027;"},{"lineNumber":611,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":612,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-info:before {"},{"lineNumber":613,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f129\u0027;"},{"lineNumber":614,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":615,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-compress-alt:before,"},{"lineNumber":616,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-down-left-and-up-right-to-center:before {"},{"lineNumber":617,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f422\u0027;"},{"lineNumber":618,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":619,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-explosion:before {"},{"lineNumber":620,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e9\u0027;"},{"lineNumber":621,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":622,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-alt:before,"},{"lineNumber":623,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-lines:before,"},{"lineNumber":624,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-text:before {"},{"lineNumber":625,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f15c\u0027;"},{"lineNumber":626,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":627,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wave-square:before {"},{"lineNumber":628,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f83e\u0027;"},{"lineNumber":629,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":630,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ring:before {"},{"lineNumber":631,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f70b\u0027;"},{"lineNumber":632,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":633,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-un:before {"},{"lineNumber":634,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d9\u0027;"},{"lineNumber":635,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":636,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice-three:before {"},{"lineNumber":637,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f527\u0027;"},{"lineNumber":638,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":639,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-alt:before,"},{"lineNumber":640,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-days:before {"},{"lineNumber":641,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f073\u0027;"},{"lineNumber":642,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":643,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-anchor-circle-check:before {"},{"lineNumber":644,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4aa\u0027;"},{"lineNumber":645,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":646,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-circle-arrow-right:before {"},{"lineNumber":647,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d1\u0027;"},{"lineNumber":648,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":649,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volleyball-ball:before,"},{"lineNumber":650,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volleyball:before {"},{"lineNumber":651,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f45f\u0027;"},{"lineNumber":652,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":653,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-up-to-line:before {"},{"lineNumber":654,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c2\u0027;"},{"lineNumber":655,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":656,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-desc:before,"},{"lineNumber":657,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-down:before {"},{"lineNumber":658,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0dd\u0027;"},{"lineNumber":659,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":660,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-minus:before,"},{"lineNumber":661,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-minus-circle:before {"},{"lineNumber":662,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f056\u0027;"},{"lineNumber":663,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":664,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-door-open:before {"},{"lineNumber":665,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f52b\u0027;"},{"lineNumber":666,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":667,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-right-from-bracket:before,"},{"lineNumber":668,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sign-out-alt:before {"},{"lineNumber":669,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2f5\u0027;"},{"lineNumber":670,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":671,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-atom:before {"},{"lineNumber":672,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5d2\u0027;"},{"lineNumber":673,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":674,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-soap:before {"},{"lineNumber":675,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e06e\u0027;"},{"lineNumber":676,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":677,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-music-camera-bolt:before,"},{"lineNumber":678,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-icons:before {"},{"lineNumber":679,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f86d\u0027;"},{"lineNumber":680,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":681,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-microphone-alt-slash:before,"},{"lineNumber":682,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-microphone-lines-slash:before {"},{"lineNumber":683,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f539\u0027;"},{"lineNumber":684,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":685,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bridge-circle-check:before {"},{"lineNumber":686,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c9\u0027;"},{"lineNumber":687,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":688,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pump-medical:before {"},{"lineNumber":689,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e06a\u0027;"},{"lineNumber":690,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":691,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fingerprint:before {"},{"lineNumber":692,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f577\u0027;"},{"lineNumber":693,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":694,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-point-right:before {"},{"lineNumber":695,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a4\u0027;"},{"lineNumber":696,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":697,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magnifying-glass-location:before,"},{"lineNumber":698,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-search-location:before {"},{"lineNumber":699,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f689\u0027;"},{"lineNumber":700,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":701,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-forward-step:before,"},{"lineNumber":702,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-step-forward:before {"},{"lineNumber":703,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f051\u0027;"},{"lineNumber":704,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":705,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-smile-beam:before,"},{"lineNumber":706,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-smile-beam:before {"},{"lineNumber":707,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5b8\u0027;"},{"lineNumber":708,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":709,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flag-checkered:before {"},{"lineNumber":710,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f11e\u0027;"},{"lineNumber":711,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":712,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-football-ball:before,"},{"lineNumber":713,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-football:before {"},{"lineNumber":714,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f44e\u0027;"},{"lineNumber":715,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":716,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-school-circle-exclamation:before {"},{"lineNumber":717,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e56c\u0027;"},{"lineNumber":718,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":719,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-crop:before {"},{"lineNumber":720,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f125\u0027;"},{"lineNumber":721,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":722,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angle-double-down:before,"},{"lineNumber":723,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angles-down:before {"},{"lineNumber":724,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f103\u0027;"},{"lineNumber":725,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":726,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users-rectangle:before {"},{"lineNumber":727,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e594\u0027;"},{"lineNumber":728,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":729,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-roof:before {"},{"lineNumber":730,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e537\u0027;"},{"lineNumber":731,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":732,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-line:before {"},{"lineNumber":733,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e534\u0027;"},{"lineNumber":734,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":735,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-beer-mug-empty:before,"},{"lineNumber":736,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-beer:before {"},{"lineNumber":737,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0fc\u0027;"},{"lineNumber":738,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":739,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-diagram-predecessor:before {"},{"lineNumber":740,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e477\u0027;"},{"lineNumber":741,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":742,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-long:before,"},{"lineNumber":743,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-long-arrow-up:before {"},{"lineNumber":744,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f176\u0027;"},{"lineNumber":745,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":746,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-burn:before,"},{"lineNumber":747,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fire-flame-simple:before {"},{"lineNumber":748,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f46a\u0027;"},{"lineNumber":749,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":750,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-male:before,"},{"lineNumber":751,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person:before {"},{"lineNumber":752,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f183\u0027;"},{"lineNumber":753,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":754,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laptop:before {"},{"lineNumber":755,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f109\u0027;"},{"lineNumber":756,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":757,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-csv:before {"},{"lineNumber":758,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6dd\u0027;"},{"lineNumber":759,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":760,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-menorah:before {"},{"lineNumber":761,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f676\u0027;"},{"lineNumber":762,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":763,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-plane:before {"},{"lineNumber":764,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e58f\u0027;"},{"lineNumber":765,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":766,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-record-vinyl:before {"},{"lineNumber":767,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f8d9\u0027;"},{"lineNumber":768,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":769,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-stars:before,"},{"lineNumber":770,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-stars:before {"},{"lineNumber":771,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f587\u0027;"},{"lineNumber":772,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":773,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bong:before {"},{"lineNumber":774,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f55c\u0027;"},{"lineNumber":775,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":776,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pastafarianism:before,"},{"lineNumber":777,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spaghetti-monster-flying:before {"},{"lineNumber":778,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f67b\u0027;"},{"lineNumber":779,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":780,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-up-across-line:before {"},{"lineNumber":781,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4af\u0027;"},{"lineNumber":782,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":783,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spoon:before,"},{"lineNumber":784,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-utensil-spoon:before {"},{"lineNumber":785,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2e5\u0027;"},{"lineNumber":786,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":787,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-jar-wheat:before {"},{"lineNumber":788,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e517\u0027;"},{"lineNumber":789,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":790,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-envelopes-bulk:before,"},{"lineNumber":791,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mail-bulk:before {"},{"lineNumber":792,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f674\u0027;"},{"lineNumber":793,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":794,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-circle-exclamation:before {"},{"lineNumber":795,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4eb\u0027;"},{"lineNumber":796,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":797,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-h:before,"},{"lineNumber":798,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hospital-symbol:before {"},{"lineNumber":799,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f47e\u0027;"},{"lineNumber":800,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":801,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pager:before {"},{"lineNumber":802,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f815\u0027;"},{"lineNumber":803,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":804,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-address-book:before,"},{"lineNumber":805,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-contact-book:before {"},{"lineNumber":806,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2b9\u0027;"},{"lineNumber":807,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":808,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-strikethrough:before {"},{"lineNumber":809,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0cc\u0027;"},{"lineNumber":810,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":811,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-k:before {"},{"lineNumber":812,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\4b\u0027;"},{"lineNumber":813,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":814,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-landmark-flag:before {"},{"lineNumber":815,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e51c\u0027;"},{"lineNumber":816,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":817,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pencil-alt:before,"},{"lineNumber":818,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pencil:before {"},{"lineNumber":819,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f303\u0027;"},{"lineNumber":820,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":821,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-backward:before {"},{"lineNumber":822,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f04a\u0027;"},{"lineNumber":823,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":824,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caret-right:before {"},{"lineNumber":825,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0da\u0027;"},{"lineNumber":826,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":827,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comments:before {"},{"lineNumber":828,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f086\u0027;"},{"lineNumber":829,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":830,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-clipboard:before,"},{"lineNumber":831,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-paste:before {"},{"lineNumber":832,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ea\u0027;"},{"lineNumber":833,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":834,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-code-pull-request:before {"},{"lineNumber":835,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e13c\u0027;"},{"lineNumber":836,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":837,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clipboard-list:before {"},{"lineNumber":838,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f46d\u0027;"},{"lineNumber":839,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":840,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-loading:before,"},{"lineNumber":841,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-ramp-box:before {"},{"lineNumber":842,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4de\u0027;"},{"lineNumber":843,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":844,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-check:before {"},{"lineNumber":845,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4fc\u0027;"},{"lineNumber":846,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":847,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vial-virus:before {"},{"lineNumber":848,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e597\u0027;"},{"lineNumber":849,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":850,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sheet-plastic:before {"},{"lineNumber":851,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e571\u0027;"},{"lineNumber":852,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":853,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-blog:before {"},{"lineNumber":854,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f781\u0027;"},{"lineNumber":855,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":856,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-ninja:before {"},{"lineNumber":857,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f504\u0027;"},{"lineNumber":858,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":859,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-arrow-up-from-line:before {"},{"lineNumber":860,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e539\u0027;"},{"lineNumber":861,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":862,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-scroll-torah:before,"},{"lineNumber":863,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-torah:before {"},{"lineNumber":864,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6a0\u0027;"},{"lineNumber":865,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":866,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-broom-ball:before,"},{"lineNumber":867,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-quidditch-broom-ball:before,"},{"lineNumber":868,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-quidditch:before {"},{"lineNumber":869,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f458\u0027;"},{"lineNumber":870,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":871,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-toggle-off:before {"},{"lineNumber":872,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f204\u0027;"},{"lineNumber":873,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":874,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-archive:before,"},{"lineNumber":875,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-box-archive:before {"},{"lineNumber":876,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f187\u0027;"},{"lineNumber":877,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":878,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-drowning:before {"},{"lineNumber":879,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e545\u0027;"},{"lineNumber":880,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":881,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-9-1:before,"},{"lineNumber":882,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-numeric-desc:before,"},{"lineNumber":883,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-numeric-down-alt:before {"},{"lineNumber":884,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f886\u0027;"},{"lineNumber":885,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":886,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-tongue-squint:before,"},{"lineNumber":887,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-tongue-squint:before {"},{"lineNumber":888,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f58a\u0027;"},{"lineNumber":889,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":890,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spray-can:before {"},{"lineNumber":891,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5bd\u0027;"},{"lineNumber":892,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":893,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-monster:before {"},{"lineNumber":894,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f63b\u0027;"},{"lineNumber":895,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":896,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-w:before {"},{"lineNumber":897,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\57\u0027;"},{"lineNumber":898,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":899,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-earth-africa:before,"},{"lineNumber":900,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-globe-africa:before {"},{"lineNumber":901,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f57c\u0027;"},{"lineNumber":902,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":903,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rainbow:before {"},{"lineNumber":904,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f75b\u0027;"},{"lineNumber":905,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":906,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-notch:before {"},{"lineNumber":907,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1ce\u0027;"},{"lineNumber":908,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":909,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tablet-alt:before,"},{"lineNumber":910,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tablet-screen-button:before {"},{"lineNumber":911,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3fa\u0027;"},{"lineNumber":912,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":913,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-paw:before {"},{"lineNumber":914,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1b0\u0027;"},{"lineNumber":915,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":916,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud:before {"},{"lineNumber":917,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c2\u0027;"},{"lineNumber":918,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":919,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trowel-bricks:before {"},{"lineNumber":920,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e58a\u0027;"},{"lineNumber":921,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":922,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-flushed:before,"},{"lineNumber":923,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flushed:before {"},{"lineNumber":924,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f579\u0027;"},{"lineNumber":925,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":926,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hospital-user:before {"},{"lineNumber":927,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f80d\u0027;"},{"lineNumber":928,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":929,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tent-arrow-left-right:before {"},{"lineNumber":930,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e57f\u0027;"},{"lineNumber":931,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":932,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gavel:before,"},{"lineNumber":933,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-legal:before {"},{"lineNumber":934,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0e3\u0027;"},{"lineNumber":935,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":936,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-binoculars:before {"},{"lineNumber":937,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1e5\u0027;"},{"lineNumber":938,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":939,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-microphone-slash:before {"},{"lineNumber":940,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f131\u0027;"},{"lineNumber":941,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":942,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-box-tissue:before {"},{"lineNumber":943,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e05b\u0027;"},{"lineNumber":944,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":945,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-motorcycle:before {"},{"lineNumber":946,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f21c\u0027;"},{"lineNumber":947,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":948,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bell-concierge:before,"},{"lineNumber":949,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-concierge-bell:before {"},{"lineNumber":950,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f562\u0027;"},{"lineNumber":951,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":952,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pen-ruler:before,"},{"lineNumber":953,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pencil-ruler:before {"},{"lineNumber":954,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5ae\u0027;"},{"lineNumber":955,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":956,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-arrows-left-right:before,"},{"lineNumber":957,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-arrows:before {"},{"lineNumber":958,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e068\u0027;"},{"lineNumber":959,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":960,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars-and-venus-burst:before {"},{"lineNumber":961,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e523\u0027;"},{"lineNumber":962,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":963,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caret-square-right:before,"},{"lineNumber":964,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-caret-right:before {"},{"lineNumber":965,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f152\u0027;"},{"lineNumber":966,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":967,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cut:before,"},{"lineNumber":968,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-scissors:before {"},{"lineNumber":969,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c4\u0027;"},{"lineNumber":970,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":971,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sun-plant-wilt:before {"},{"lineNumber":972,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e57a\u0027;"},{"lineNumber":973,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":974,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-toilets-portable:before {"},{"lineNumber":975,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e584\u0027;"},{"lineNumber":976,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":977,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hockey-puck:before {"},{"lineNumber":978,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f453\u0027;"},{"lineNumber":979,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":980,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-table:before {"},{"lineNumber":981,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ce\u0027;"},{"lineNumber":982,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":983,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magnifying-glass-arrow-right:before {"},{"lineNumber":984,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e521\u0027;"},{"lineNumber":985,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":986,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-digital-tachograph:before,"},{"lineNumber":987,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tachograph-digital:before {"},{"lineNumber":988,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f566\u0027;"},{"lineNumber":989,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":990,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users-slash:before {"},{"lineNumber":991,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e073\u0027;"},{"lineNumber":992,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":993,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clover:before {"},{"lineNumber":994,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e139\u0027;"},{"lineNumber":995,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":996,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mail-reply:before,"},{"lineNumber":997,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-reply:before {"},{"lineNumber":998,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3e5\u0027;"},{"lineNumber":999,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1000,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-star-and-crescent:before {"},{"lineNumber":1001,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f699\u0027;"},{"lineNumber":1002,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1003,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-fire:before {"},{"lineNumber":1004,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e50c\u0027;"},{"lineNumber":1005,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1006,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-minus-square:before,"},{"lineNumber":1007,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-minus:before {"},{"lineNumber":1008,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f146\u0027;"},{"lineNumber":1009,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1010,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-helicopter:before {"},{"lineNumber":1011,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f533\u0027;"},{"lineNumber":1012,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1013,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-compass:before {"},{"lineNumber":1014,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f14e\u0027;"},{"lineNumber":1015,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1016,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caret-square-down:before,"},{"lineNumber":1017,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-caret-down:before {"},{"lineNumber":1018,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f150\u0027;"},{"lineNumber":1019,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1020,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-circle-question:before {"},{"lineNumber":1021,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ef\u0027;"},{"lineNumber":1022,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1023,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laptop-code:before {"},{"lineNumber":1024,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5fc\u0027;"},{"lineNumber":1025,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1026,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-swatchbook:before {"},{"lineNumber":1027,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c3\u0027;"},{"lineNumber":1028,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1029,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-prescription-bottle:before {"},{"lineNumber":1030,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f485\u0027;"},{"lineNumber":1031,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1032,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bars:before,"},{"lineNumber":1033,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-navicon:before {"},{"lineNumber":1034,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c9\u0027;"},{"lineNumber":1035,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1036,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-group:before {"},{"lineNumber":1037,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e533\u0027;"},{"lineNumber":1038,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1039,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hourglass-3:before,"},{"lineNumber":1040,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hourglass-end:before {"},{"lineNumber":1041,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f253\u0027;"},{"lineNumber":1042,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1043,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-broken:before,"},{"lineNumber":1044,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-crack:before {"},{"lineNumber":1045,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7a9\u0027;"},{"lineNumber":1046,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1047,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-external-link-square-alt:before,"},{"lineNumber":1048,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-up-right:before {"},{"lineNumber":1049,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f360\u0027;"},{"lineNumber":1050,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1051,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-kiss-beam:before,"},{"lineNumber":1052,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-kiss-beam:before {"},{"lineNumber":1053,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f597\u0027;"},{"lineNumber":1054,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1055,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-film:before {"},{"lineNumber":1056,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f008\u0027;"},{"lineNumber":1057,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1058,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ruler-horizontal:before {"},{"lineNumber":1059,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f547\u0027;"},{"lineNumber":1060,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1061,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-robbery:before {"},{"lineNumber":1062,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e536\u0027;"},{"lineNumber":1063,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1064,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lightbulb:before {"},{"lineNumber":1065,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0eb\u0027;"},{"lineNumber":1066,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1067,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caret-left:before {"},{"lineNumber":1068,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0d9\u0027;"},{"lineNumber":1069,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1070,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-exclamation:before,"},{"lineNumber":1071,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-exclamation-circle:before {"},{"lineNumber":1072,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f06a\u0027;"},{"lineNumber":1073,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1074,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-school-circle-xmark:before {"},{"lineNumber":1075,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e56d\u0027;"},{"lineNumber":1076,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1077,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right-from-bracket:before,"},{"lineNumber":1078,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sign-out:before {"},{"lineNumber":1079,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f08b\u0027;"},{"lineNumber":1080,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1081,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chevron-circle-down:before,"},{"lineNumber":1082,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-chevron-down:before {"},{"lineNumber":1083,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f13a\u0027;"},{"lineNumber":1084,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1085,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-unlock-alt:before,"},{"lineNumber":1086,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-unlock-keyhole:before {"},{"lineNumber":1087,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f13e\u0027;"},{"lineNumber":1088,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1089,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-showers-heavy:before {"},{"lineNumber":1090,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f740\u0027;"},{"lineNumber":1091,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1092,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-headphones-alt:before,"},{"lineNumber":1093,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-headphones-simple:before {"},{"lineNumber":1094,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f58f\u0027;"},{"lineNumber":1095,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1096,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sitemap:before {"},{"lineNumber":1097,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0e8\u0027;"},{"lineNumber":1098,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1099,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-dollar-to-slot:before,"},{"lineNumber":1100,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-donate:before {"},{"lineNumber":1101,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4b9\u0027;"},{"lineNumber":1102,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1103,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-memory:before {"},{"lineNumber":1104,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f538\u0027;"},{"lineNumber":1105,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1106,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-road-spikes:before {"},{"lineNumber":1107,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e568\u0027;"},{"lineNumber":1108,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1109,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fire-burner:before {"},{"lineNumber":1110,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f1\u0027;"},{"lineNumber":1111,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1112,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flag:before {"},{"lineNumber":1113,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f024\u0027;"},{"lineNumber":1114,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1115,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hanukiah:before {"},{"lineNumber":1116,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6e6\u0027;"},{"lineNumber":1117,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1118,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-feather:before {"},{"lineNumber":1119,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f52d\u0027;"},{"lineNumber":1120,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1121,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-down:before,"},{"lineNumber":1122,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-low:before {"},{"lineNumber":1123,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f027\u0027;"},{"lineNumber":1124,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1125,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comment-slash:before {"},{"lineNumber":1126,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4b3\u0027;"},{"lineNumber":1127,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1128,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-sun-rain:before {"},{"lineNumber":1129,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f743\u0027;"},{"lineNumber":1130,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1131,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-compress:before {"},{"lineNumber":1132,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f066\u0027;"},{"lineNumber":1133,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1134,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wheat-alt:before,"},{"lineNumber":1135,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wheat-awn:before {"},{"lineNumber":1136,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e2cd\u0027;"},{"lineNumber":1137,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1138,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ankh:before {"},{"lineNumber":1139,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f644\u0027;"},{"lineNumber":1140,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1141,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-holding-child:before {"},{"lineNumber":1142,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4fa\u0027;"},{"lineNumber":1143,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1144,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-asterisk:before {"},{"lineNumber":1145,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\2a\u0027;"},{"lineNumber":1146,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1147,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-check-square:before,"},{"lineNumber":1148,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-check:before {"},{"lineNumber":1149,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f14a\u0027;"},{"lineNumber":1150,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1151,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-peseta-sign:before {"},{"lineNumber":1152,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e221\u0027;"},{"lineNumber":1153,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1154,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-header:before,"},{"lineNumber":1155,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heading:before {"},{"lineNumber":1156,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1dc\u0027;"},{"lineNumber":1157,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1158,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ghost:before {"},{"lineNumber":1159,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6e2\u0027;"},{"lineNumber":1160,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1161,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list-squares:before,"},{"lineNumber":1162,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list:before {"},{"lineNumber":1163,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f03a\u0027;"},{"lineNumber":1164,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1165,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-phone-square-alt:before,"},{"lineNumber":1166,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-phone-flip:before {"},{"lineNumber":1167,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f87b\u0027;"},{"lineNumber":1168,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1169,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cart-plus:before {"},{"lineNumber":1170,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f217\u0027;"},{"lineNumber":1171,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1172,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gamepad:before {"},{"lineNumber":1173,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f11b\u0027;"},{"lineNumber":1174,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1175,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-dot:before,"},{"lineNumber":1176,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dot-circle:before {"},{"lineNumber":1177,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f192\u0027;"},{"lineNumber":1178,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1179,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dizzy:before,"},{"lineNumber":1180,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-dizzy:before {"},{"lineNumber":1181,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f567\u0027;"},{"lineNumber":1182,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1183,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-egg:before {"},{"lineNumber":1184,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7fb\u0027;"},{"lineNumber":1185,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1186,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-medical-circle-xmark:before {"},{"lineNumber":1187,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e513\u0027;"},{"lineNumber":1188,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1189,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-campground:before {"},{"lineNumber":1190,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6bb\u0027;"},{"lineNumber":1191,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1192,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-folder-plus:before {"},{"lineNumber":1193,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f65e\u0027;"},{"lineNumber":1194,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1195,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-futbol-ball:before,"},{"lineNumber":1196,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-futbol:before,"},{"lineNumber":1197,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-soccer-ball:before {"},{"lineNumber":1198,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1e3\u0027;"},{"lineNumber":1199,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1200,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-paint-brush:before,"},{"lineNumber":1201,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-paintbrush:before {"},{"lineNumber":1202,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1fc\u0027;"},{"lineNumber":1203,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1204,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lock:before {"},{"lineNumber":1205,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f023\u0027;"},{"lineNumber":1206,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1207,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gas-pump:before {"},{"lineNumber":1208,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f52f\u0027;"},{"lineNumber":1209,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1210,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hot-tub-person:before,"},{"lineNumber":1211,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hot-tub:before {"},{"lineNumber":1212,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f593\u0027;"},{"lineNumber":1213,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1214,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map-location:before,"},{"lineNumber":1215,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map-marked:before {"},{"lineNumber":1216,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f59f\u0027;"},{"lineNumber":1217,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1218,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-flood-water:before {"},{"lineNumber":1219,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e50e\u0027;"},{"lineNumber":1220,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1221,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tree:before {"},{"lineNumber":1222,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1bb\u0027;"},{"lineNumber":1223,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1224,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bridge-lock:before {"},{"lineNumber":1225,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4cc\u0027;"},{"lineNumber":1226,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1227,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sack-dollar:before {"},{"lineNumber":1228,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f81d\u0027;"},{"lineNumber":1229,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1230,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-edit:before,"},{"lineNumber":1231,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pen-to-square:before {"},{"lineNumber":1232,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f044\u0027;"},{"lineNumber":1233,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1234,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car-side:before {"},{"lineNumber":1235,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5e4\u0027;"},{"lineNumber":1236,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1237,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-share-alt:before,"},{"lineNumber":1238,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-share-nodes:before {"},{"lineNumber":1239,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1e0\u0027;"},{"lineNumber":1240,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1241,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-circle-minus:before {"},{"lineNumber":1242,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ff\u0027;"},{"lineNumber":1243,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1244,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hourglass-2:before,"},{"lineNumber":1245,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hourglass-half:before {"},{"lineNumber":1246,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f252\u0027;"},{"lineNumber":1247,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1248,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-microscope:before {"},{"lineNumber":1249,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f610\u0027;"},{"lineNumber":1250,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1251,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sink:before {"},{"lineNumber":1252,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e06d\u0027;"},{"lineNumber":1253,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1254,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bag-shopping:before,"},{"lineNumber":1255,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shopping-bag:before {"},{"lineNumber":1256,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f290\u0027;"},{"lineNumber":1257,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1258,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-z-a:before,"},{"lineNumber":1259,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-alpha-desc:before,"},{"lineNumber":1260,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-alpha-down-alt:before {"},{"lineNumber":1261,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f881\u0027;"},{"lineNumber":1262,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1263,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mitten:before {"},{"lineNumber":1264,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7b5\u0027;"},{"lineNumber":1265,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1266,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-rays:before {"},{"lineNumber":1267,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e54d\u0027;"},{"lineNumber":1268,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1269,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users:before {"},{"lineNumber":1270,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c0\u0027;"},{"lineNumber":1271,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1272,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eye-slash:before {"},{"lineNumber":1273,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f070\u0027;"},{"lineNumber":1274,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1275,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flask-vial:before {"},{"lineNumber":1276,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f3\u0027;"},{"lineNumber":1277,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1278,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-paper:before,"},{"lineNumber":1279,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand:before {"},{"lineNumber":1280,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f256\u0027;"},{"lineNumber":1281,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1282,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-om:before {"},{"lineNumber":1283,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f679\u0027;"},{"lineNumber":1284,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1285,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-worm:before {"},{"lineNumber":1286,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e599\u0027;"},{"lineNumber":1287,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1288,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-circle-xmark:before {"},{"lineNumber":1289,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e50b\u0027;"},{"lineNumber":1290,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1291,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plug:before {"},{"lineNumber":1292,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1e6\u0027;"},{"lineNumber":1293,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1294,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chevron-up:before {"},{"lineNumber":1295,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f077\u0027;"},{"lineNumber":1296,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1297,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-spock:before {"},{"lineNumber":1298,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f259\u0027;"},{"lineNumber":1299,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1300,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stopwatch:before {"},{"lineNumber":1301,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2f2\u0027;"},{"lineNumber":1302,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1303,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-kiss:before,"},{"lineNumber":1304,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-kiss:before {"},{"lineNumber":1305,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f596\u0027;"},{"lineNumber":1306,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1307,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bridge-circle-xmark:before {"},{"lineNumber":1308,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4cb\u0027;"},{"lineNumber":1309,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1310,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-tongue:before,"},{"lineNumber":1311,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-tongue:before {"},{"lineNumber":1312,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f589\u0027;"},{"lineNumber":1313,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1314,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chess-bishop:before {"},{"lineNumber":1315,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f43a\u0027;"},{"lineNumber":1316,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1317,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-wink:before,"},{"lineNumber":1318,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-wink:before {"},{"lineNumber":1319,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f58c\u0027;"},{"lineNumber":1320,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1321,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-deaf:before,"},{"lineNumber":1322,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-deafness:before,"},{"lineNumber":1323,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ear-deaf:before,"},{"lineNumber":1324,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hard-of-hearing:before {"},{"lineNumber":1325,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2a4\u0027;"},{"lineNumber":1326,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1327,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-road-circle-check:before {"},{"lineNumber":1328,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e564\u0027;"},{"lineNumber":1329,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1330,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice-five:before {"},{"lineNumber":1331,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f523\u0027;"},{"lineNumber":1332,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1333,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rss-square:before,"},{"lineNumber":1334,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-rss:before {"},{"lineNumber":1335,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f143\u0027;"},{"lineNumber":1336,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1337,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-land-mine-on:before {"},{"lineNumber":1338,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e51b\u0027;"},{"lineNumber":1339,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1340,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-i-cursor:before {"},{"lineNumber":1341,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f246\u0027;"},{"lineNumber":1342,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1343,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stamp:before {"},{"lineNumber":1344,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5bf\u0027;"},{"lineNumber":1345,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1346,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stairs:before {"},{"lineNumber":1347,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e289\u0027;"},{"lineNumber":1348,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1349,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-i:before {"},{"lineNumber":1350,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\49\u0027;"},{"lineNumber":1351,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1352,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hryvnia-sign:before,"},{"lineNumber":1353,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hryvnia:before {"},{"lineNumber":1354,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6f2\u0027;"},{"lineNumber":1355,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1356,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pills:before {"},{"lineNumber":1357,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f484\u0027;"},{"lineNumber":1358,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1359,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-wide:before,"},{"lineNumber":1360,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-alt:before {"},{"lineNumber":1361,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f581\u0027;"},{"lineNumber":1362,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1363,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tooth:before {"},{"lineNumber":1364,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c9\u0027;"},{"lineNumber":1365,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1366,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-v:before {"},{"lineNumber":1367,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\56\u0027;"},{"lineNumber":1368,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1369,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bangladeshi-taka-sign:before {"},{"lineNumber":1370,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e2e6\u0027;"},{"lineNumber":1371,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1372,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bicycle:before {"},{"lineNumber":1373,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f206\u0027;"},{"lineNumber":1374,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1375,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rod-asclepius:before,"},{"lineNumber":1376,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rod-snake:before,"},{"lineNumber":1377,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-staff-aesculapius:before,"},{"lineNumber":1378,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-staff-snake:before {"},{"lineNumber":1379,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e579\u0027;"},{"lineNumber":1380,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1381,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-head-side-cough-slash:before {"},{"lineNumber":1382,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e062\u0027;"},{"lineNumber":1383,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1384,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ambulance:before,"},{"lineNumber":1385,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-medical:before {"},{"lineNumber":1386,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0f9\u0027;"},{"lineNumber":1387,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1388,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wheat-awn-circle-exclamation:before {"},{"lineNumber":1389,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e598\u0027;"},{"lineNumber":1390,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1391,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-snowman:before {"},{"lineNumber":1392,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7d0\u0027;"},{"lineNumber":1393,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1394,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mortar-pestle:before {"},{"lineNumber":1395,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5a7\u0027;"},{"lineNumber":1396,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1397,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-road-barrier:before {"},{"lineNumber":1398,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e562\u0027;"},{"lineNumber":1399,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1400,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-school:before {"},{"lineNumber":1401,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f549\u0027;"},{"lineNumber":1402,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1403,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-igloo:before {"},{"lineNumber":1404,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7ae\u0027;"},{"lineNumber":1405,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1406,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-joint:before {"},{"lineNumber":1407,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f595\u0027;"},{"lineNumber":1408,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1409,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angle-right:before {"},{"lineNumber":1410,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f105\u0027;"},{"lineNumber":1411,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1412,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-horse:before {"},{"lineNumber":1413,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6f0\u0027;"},{"lineNumber":1414,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1415,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-q:before {"},{"lineNumber":1416,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\51\u0027;"},{"lineNumber":1417,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1418,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-g:before {"},{"lineNumber":1419,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\47\u0027;"},{"lineNumber":1420,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1421,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-notes-medical:before {"},{"lineNumber":1422,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f481\u0027;"},{"lineNumber":1423,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1424,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-2:before,"},{"lineNumber":1425,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-half:before,"},{"lineNumber":1426,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-2:before,"},{"lineNumber":1427,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-half:before {"},{"lineNumber":1428,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2c9\u0027;"},{"lineNumber":1429,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1430,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dong-sign:before {"},{"lineNumber":1431,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e169\u0027;"},{"lineNumber":1432,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1433,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-capsules:before {"},{"lineNumber":1434,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f46b\u0027;"},{"lineNumber":1435,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1436,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-poo-bolt:before,"},{"lineNumber":1437,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-poo-storm:before {"},{"lineNumber":1438,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f75a\u0027;"},{"lineNumber":1439,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1440,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-frown-open:before,"},{"lineNumber":1441,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-frown-open:before {"},{"lineNumber":1442,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f57a\u0027;"},{"lineNumber":1443,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1444,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-point-up:before {"},{"lineNumber":1445,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a6\u0027;"},{"lineNumber":1446,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1447,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill:before {"},{"lineNumber":1448,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0d6\u0027;"},{"lineNumber":1449,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1450,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bookmark:before {"},{"lineNumber":1451,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f02e\u0027;"},{"lineNumber":1452,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1453,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-align-justify:before {"},{"lineNumber":1454,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f039\u0027;"},{"lineNumber":1455,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1456,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-umbrella-beach:before {"},{"lineNumber":1457,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5ca\u0027;"},{"lineNumber":1458,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1459,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-helmet-un:before {"},{"lineNumber":1460,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e503\u0027;"},{"lineNumber":1461,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1462,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bullseye:before {"},{"lineNumber":1463,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f140\u0027;"},{"lineNumber":1464,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1465,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bacon:before {"},{"lineNumber":1466,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7e5\u0027;"},{"lineNumber":1467,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1468,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-point-down:before {"},{"lineNumber":1469,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a7\u0027;"},{"lineNumber":1470,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1471,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-from-bracket:before {"},{"lineNumber":1472,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e09a\u0027;"},{"lineNumber":1473,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1474,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-folder-blank:before,"},{"lineNumber":1475,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-folder:before {"},{"lineNumber":1476,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f07b\u0027;"},{"lineNumber":1477,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1478,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-medical-alt:before,"},{"lineNumber":1479,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-waveform:before {"},{"lineNumber":1480,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f478\u0027;"},{"lineNumber":1481,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1482,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-radiation:before {"},{"lineNumber":1483,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7b9\u0027;"},{"lineNumber":1484,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1485,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chart-simple:before {"},{"lineNumber":1486,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e473\u0027;"},{"lineNumber":1487,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1488,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars-stroke:before {"},{"lineNumber":1489,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f229\u0027;"},{"lineNumber":1490,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1491,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vial:before {"},{"lineNumber":1492,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f492\u0027;"},{"lineNumber":1493,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1494,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dashboard:before,"},{"lineNumber":1495,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gauge-med:before,"},{"lineNumber":1496,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gauge:before,"},{"lineNumber":1497,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tachometer-alt-average:before {"},{"lineNumber":1498,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f624\u0027;"},{"lineNumber":1499,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1500,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magic-wand-sparkles:before,"},{"lineNumber":1501,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wand-magic-sparkles:before {"},{"lineNumber":1502,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e2ca\u0027;"},{"lineNumber":1503,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1504,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-e:before {"},{"lineNumber":1505,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\45\u0027;"},{"lineNumber":1506,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1507,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pen-alt:before,"},{"lineNumber":1508,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pen-clip:before {"},{"lineNumber":1509,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f305\u0027;"},{"lineNumber":1510,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1511,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bridge-circle-exclamation:before {"},{"lineNumber":1512,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ca\u0027;"},{"lineNumber":1513,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1514,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user:before {"},{"lineNumber":1515,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f007\u0027;"},{"lineNumber":1516,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1517,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-school-circle-check:before {"},{"lineNumber":1518,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e56b\u0027;"},{"lineNumber":1519,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1520,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dumpster:before {"},{"lineNumber":1521,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f793\u0027;"},{"lineNumber":1522,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1523,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shuttle-van:before,"},{"lineNumber":1524,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-van-shuttle:before {"},{"lineNumber":1525,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5b6\u0027;"},{"lineNumber":1526,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1527,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-user:before {"},{"lineNumber":1528,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4da\u0027;"},{"lineNumber":1529,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1530,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caret-square-left:before,"},{"lineNumber":1531,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-caret-left:before {"},{"lineNumber":1532,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f191\u0027;"},{"lineNumber":1533,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1534,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-highlighter:before {"},{"lineNumber":1535,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f591\u0027;"},{"lineNumber":1536,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1537,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-key:before {"},{"lineNumber":1538,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f084\u0027;"},{"lineNumber":1539,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1540,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bullhorn:before {"},{"lineNumber":1541,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a1\u0027;"},{"lineNumber":1542,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1543,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-globe:before {"},{"lineNumber":1544,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ac\u0027;"},{"lineNumber":1545,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1546,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-synagogue:before {"},{"lineNumber":1547,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f69b\u0027;"},{"lineNumber":1548,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1549,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-half-dress:before {"},{"lineNumber":1550,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e548\u0027;"},{"lineNumber":1551,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1552,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-road-bridge:before {"},{"lineNumber":1553,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e563\u0027;"},{"lineNumber":1554,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1555,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-location-arrow:before {"},{"lineNumber":1556,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f124\u0027;"},{"lineNumber":1557,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1558,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-c:before {"},{"lineNumber":1559,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\43\u0027;"},{"lineNumber":1560,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1561,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tablet-button:before {"},{"lineNumber":1562,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f10a\u0027;"},{"lineNumber":1563,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1564,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-lock:before {"},{"lineNumber":1565,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d6\u0027;"},{"lineNumber":1566,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1567,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pizza-slice:before {"},{"lineNumber":1568,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f818\u0027;"},{"lineNumber":1569,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1570,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill-wave:before {"},{"lineNumber":1571,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f53a\u0027;"},{"lineNumber":1572,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1573,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-area-chart:before,"},{"lineNumber":1574,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chart-area:before {"},{"lineNumber":1575,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1fe\u0027;"},{"lineNumber":1576,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1577,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-flag:before {"},{"lineNumber":1578,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e50d\u0027;"},{"lineNumber":1579,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1580,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-circle-minus:before {"},{"lineNumber":1581,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e540\u0027;"},{"lineNumber":1582,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1583,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ban:before,"},{"lineNumber":1584,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cancel:before {"},{"lineNumber":1585,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f05e\u0027;"},{"lineNumber":1586,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1587,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-camera-rotate:before {"},{"lineNumber":1588,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0d8\u0027;"},{"lineNumber":1589,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1590,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-air-freshener:before,"},{"lineNumber":1591,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spray-can-sparkles:before {"},{"lineNumber":1592,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5d0\u0027;"},{"lineNumber":1593,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1594,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-star:before {"},{"lineNumber":1595,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f005\u0027;"},{"lineNumber":1596,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1597,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-repeat:before {"},{"lineNumber":1598,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f363\u0027;"},{"lineNumber":1599,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1600,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cross:before {"},{"lineNumber":1601,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f654\u0027;"},{"lineNumber":1602,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1603,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-box:before {"},{"lineNumber":1604,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f466\u0027;"},{"lineNumber":1605,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1606,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-venus-mars:before {"},{"lineNumber":1607,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f228\u0027;"},{"lineNumber":1608,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1609,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-pointer:before,"},{"lineNumber":1610,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mouse-pointer:before {"},{"lineNumber":1611,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f245\u0027;"},{"lineNumber":1612,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1613,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-expand-arrows-alt:before,"},{"lineNumber":1614,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-maximize:before {"},{"lineNumber":1615,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f31e\u0027;"},{"lineNumber":1616,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1617,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-charging-station:before {"},{"lineNumber":1618,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5e7\u0027;"},{"lineNumber":1619,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1620,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shapes:before,"},{"lineNumber":1621,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-triangle-circle-square:before {"},{"lineNumber":1622,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f61f\u0027;"},{"lineNumber":1623,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1624,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-random:before,"},{"lineNumber":1625,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shuffle:before {"},{"lineNumber":1626,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f074\u0027;"},{"lineNumber":1627,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1628,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-running:before,"},{"lineNumber":1629,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-running:before {"},{"lineNumber":1630,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f70c\u0027;"},{"lineNumber":1631,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1632,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile-retro:before {"},{"lineNumber":1633,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e527\u0027;"},{"lineNumber":1634,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1635,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grip-lines-vertical:before {"},{"lineNumber":1636,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7a5\u0027;"},{"lineNumber":1637,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1638,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spider:before {"},{"lineNumber":1639,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f717\u0027;"},{"lineNumber":1640,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1641,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-bound:before {"},{"lineNumber":1642,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f9\u0027;"},{"lineNumber":1643,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1644,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-invoice-dollar:before {"},{"lineNumber":1645,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f571\u0027;"},{"lineNumber":1646,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1647,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane-circle-exclamation:before {"},{"lineNumber":1648,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e556\u0027;"},{"lineNumber":1649,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1650,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-x-ray:before {"},{"lineNumber":1651,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f497\u0027;"},{"lineNumber":1652,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1653,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spell-check:before {"},{"lineNumber":1654,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f891\u0027;"},{"lineNumber":1655,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1656,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-slash:before {"},{"lineNumber":1657,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f715\u0027;"},{"lineNumber":1658,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1659,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-computer-mouse:before,"},{"lineNumber":1660,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mouse:before {"},{"lineNumber":1661,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f8cc\u0027;"},{"lineNumber":1662,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1663,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right-to-bracket:before,"},{"lineNumber":1664,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sign-in:before {"},{"lineNumber":1665,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f090\u0027;"},{"lineNumber":1666,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1667,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shop-slash:before,"},{"lineNumber":1668,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-store-alt-slash:before {"},{"lineNumber":1669,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e070\u0027;"},{"lineNumber":1670,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1671,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-server:before {"},{"lineNumber":1672,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f233\u0027;"},{"lineNumber":1673,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1674,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-virus-covid-slash:before {"},{"lineNumber":1675,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4a9\u0027;"},{"lineNumber":1676,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1677,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shop-lock:before {"},{"lineNumber":1678,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4a5\u0027;"},{"lineNumber":1679,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1680,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hourglass-1:before,"},{"lineNumber":1681,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hourglass-start:before {"},{"lineNumber":1682,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f251\u0027;"},{"lineNumber":1683,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1684,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-blender-phone:before {"},{"lineNumber":1685,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6b6\u0027;"},{"lineNumber":1686,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1687,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-wheat:before {"},{"lineNumber":1688,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4db\u0027;"},{"lineNumber":1689,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1690,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-breastfeeding:before {"},{"lineNumber":1691,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e53a\u0027;"},{"lineNumber":1692,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1693,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-right-to-bracket:before,"},{"lineNumber":1694,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sign-in-alt:before {"},{"lineNumber":1695,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2f6\u0027;"},{"lineNumber":1696,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1697,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-venus:before {"},{"lineNumber":1698,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f221\u0027;"},{"lineNumber":1699,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1700,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-passport:before {"},{"lineNumber":1701,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5ab\u0027;"},{"lineNumber":1702,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1703,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-pulse:before,"},{"lineNumber":1704,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heartbeat:before {"},{"lineNumber":1705,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f21e\u0027;"},{"lineNumber":1706,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1707,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-carry-box:before,"},{"lineNumber":1708,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-carry:before {"},{"lineNumber":1709,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4ce\u0027;"},{"lineNumber":1710,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1711,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-high:before {"},{"lineNumber":1712,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f769\u0027;"},{"lineNumber":1713,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1714,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-microchip:before {"},{"lineNumber":1715,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2db\u0027;"},{"lineNumber":1716,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1717,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-crown:before {"},{"lineNumber":1718,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f521\u0027;"},{"lineNumber":1719,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1720,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-weight-hanging:before {"},{"lineNumber":1721,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5cd\u0027;"},{"lineNumber":1722,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1723,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-xmarks-lines:before {"},{"lineNumber":1724,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e59a\u0027;"},{"lineNumber":1725,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1726,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-prescription:before {"},{"lineNumber":1727,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f572\u0027;"},{"lineNumber":1728,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1729,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-weight-scale:before,"},{"lineNumber":1730,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-weight:before {"},{"lineNumber":1731,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f496\u0027;"},{"lineNumber":1732,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1733,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-friends:before,"},{"lineNumber":1734,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-group:before {"},{"lineNumber":1735,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f500\u0027;"},{"lineNumber":1736,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1737,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-a-z:before,"},{"lineNumber":1738,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-alpha-up:before {"},{"lineNumber":1739,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f15e\u0027;"},{"lineNumber":1740,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1741,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chess-knight:before {"},{"lineNumber":1742,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f441\u0027;"},{"lineNumber":1743,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1744,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-laugh-squint:before,"},{"lineNumber":1745,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laugh-squint:before {"},{"lineNumber":1746,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f59b\u0027;"},{"lineNumber":1747,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1748,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wheelchair:before {"},{"lineNumber":1749,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f193\u0027;"},{"lineNumber":1750,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1751,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-circle-up:before,"},{"lineNumber":1752,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-arrow-up:before {"},{"lineNumber":1753,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0aa\u0027;"},{"lineNumber":1754,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1755,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-toggle-on:before {"},{"lineNumber":1756,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f205\u0027;"},{"lineNumber":1757,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1758,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-walking:before,"},{"lineNumber":1759,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-walking:before {"},{"lineNumber":1760,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f554\u0027;"},{"lineNumber":1761,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1762,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-l:before {"},{"lineNumber":1763,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\4c\u0027;"},{"lineNumber":1764,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1765,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fire:before {"},{"lineNumber":1766,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f06d\u0027;"},{"lineNumber":1767,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1768,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bed-pulse:before,"},{"lineNumber":1769,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-procedures:before {"},{"lineNumber":1770,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f487\u0027;"},{"lineNumber":1771,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1772,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shuttle-space:before,"},{"lineNumber":1773,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-space-shuttle:before {"},{"lineNumber":1774,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f197\u0027;"},{"lineNumber":1775,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1776,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-laugh:before,"},{"lineNumber":1777,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laugh:before {"},{"lineNumber":1778,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f599\u0027;"},{"lineNumber":1779,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1780,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-folder-open:before {"},{"lineNumber":1781,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f07c\u0027;"},{"lineNumber":1782,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1783,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-circle-plus:before {"},{"lineNumber":1784,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e500\u0027;"},{"lineNumber":1785,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1786,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-code-fork:before {"},{"lineNumber":1787,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e13b\u0027;"},{"lineNumber":1788,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1789,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-city:before {"},{"lineNumber":1790,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f64f\u0027;"},{"lineNumber":1791,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1792,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-microphone-alt:before,"},{"lineNumber":1793,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-microphone-lines:before {"},{"lineNumber":1794,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3c9\u0027;"},{"lineNumber":1795,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1796,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pepper-hot:before {"},{"lineNumber":1797,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f816\u0027;"},{"lineNumber":1798,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1799,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-unlock:before {"},{"lineNumber":1800,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f09c\u0027;"},{"lineNumber":1801,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1802,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-colon-sign:before {"},{"lineNumber":1803,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e140\u0027;"},{"lineNumber":1804,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1805,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-headset:before {"},{"lineNumber":1806,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f590\u0027;"},{"lineNumber":1807,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1808,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-store-slash:before {"},{"lineNumber":1809,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e071\u0027;"},{"lineNumber":1810,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1811,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-road-circle-xmark:before {"},{"lineNumber":1812,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e566\u0027;"},{"lineNumber":1813,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1814,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-minus:before {"},{"lineNumber":1815,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f503\u0027;"},{"lineNumber":1816,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1817,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars-stroke-up:before,"},{"lineNumber":1818,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars-stroke-v:before {"},{"lineNumber":1819,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f22a\u0027;"},{"lineNumber":1820,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1821,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-champagne-glasses:before,"},{"lineNumber":1822,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-glass-cheers:before {"},{"lineNumber":1823,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f79f\u0027;"},{"lineNumber":1824,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1825,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clipboard:before {"},{"lineNumber":1826,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f328\u0027;"},{"lineNumber":1827,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1828,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-circle-exclamation:before {"},{"lineNumber":1829,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e50a\u0027;"},{"lineNumber":1830,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1831,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-arrow-up:before,"},{"lineNumber":1832,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-upload:before {"},{"lineNumber":1833,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f574\u0027;"},{"lineNumber":1834,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1835,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wifi-3:before,"},{"lineNumber":1836,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wifi-strong:before,"},{"lineNumber":1837,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wifi:before {"},{"lineNumber":1838,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1eb\u0027;"},{"lineNumber":1839,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1840,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bath:before,"},{"lineNumber":1841,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bathtub:before {"},{"lineNumber":1842,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2cd\u0027;"},{"lineNumber":1843,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1844,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-underline:before {"},{"lineNumber":1845,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0cd\u0027;"},{"lineNumber":1846,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1847,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-edit:before,"},{"lineNumber":1848,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-pen:before {"},{"lineNumber":1849,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4ff\u0027;"},{"lineNumber":1850,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1851,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-signature:before {"},{"lineNumber":1852,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5b7\u0027;"},{"lineNumber":1853,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1854,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stroopwafel:before {"},{"lineNumber":1855,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f551\u0027;"},{"lineNumber":1856,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1857,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bold:before {"},{"lineNumber":1858,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f032\u0027;"},{"lineNumber":1859,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1860,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-anchor-lock:before {"},{"lineNumber":1861,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ad\u0027;"},{"lineNumber":1862,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1863,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-ngo:before {"},{"lineNumber":1864,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d7\u0027;"},{"lineNumber":1865,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1866,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-manat-sign:before {"},{"lineNumber":1867,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1d5\u0027;"},{"lineNumber":1868,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1869,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-not-equal:before {"},{"lineNumber":1870,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f53e\u0027;"},{"lineNumber":1871,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1872,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-border-style:before,"},{"lineNumber":1873,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-border-top-left:before {"},{"lineNumber":1874,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f853\u0027;"},{"lineNumber":1875,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1876,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map-location-dot:before,"},{"lineNumber":1877,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map-marked-alt:before {"},{"lineNumber":1878,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5a0\u0027;"},{"lineNumber":1879,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1880,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-jedi:before {"},{"lineNumber":1881,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f669\u0027;"},{"lineNumber":1882,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1883,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-poll:before,"},{"lineNumber":1884,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-poll-vertical:before {"},{"lineNumber":1885,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f681\u0027;"},{"lineNumber":1886,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1887,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mug-hot:before {"},{"lineNumber":1888,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7b6\u0027;"},{"lineNumber":1889,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1890,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-car:before,"},{"lineNumber":1891,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car-battery:before {"},{"lineNumber":1892,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5df\u0027;"},{"lineNumber":1893,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1894,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gift:before {"},{"lineNumber":1895,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f06b\u0027;"},{"lineNumber":1896,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1897,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice-two:before {"},{"lineNumber":1898,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f528\u0027;"},{"lineNumber":1899,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1900,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chess-queen:before {"},{"lineNumber":1901,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f445\u0027;"},{"lineNumber":1902,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1903,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-glasses:before {"},{"lineNumber":1904,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f530\u0027;"},{"lineNumber":1905,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1906,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chess-board:before {"},{"lineNumber":1907,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f43c\u0027;"},{"lineNumber":1908,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1909,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-circle-check:before {"},{"lineNumber":1910,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d2\u0027;"},{"lineNumber":1911,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1912,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-chalkboard:before {"},{"lineNumber":1913,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e53d\u0027;"},{"lineNumber":1914,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1915,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars-stroke-h:before,"},{"lineNumber":1916,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars-stroke-right:before {"},{"lineNumber":1917,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f22b\u0027;"},{"lineNumber":1918,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1919,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-back-fist:before,"},{"lineNumber":1920,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-rock:before {"},{"lineNumber":1921,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f255\u0027;"},{"lineNumber":1922,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1923,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caret-square-up:before,"},{"lineNumber":1924,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-caret-up:before {"},{"lineNumber":1925,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f151\u0027;"},{"lineNumber":1926,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1927,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-showers-water:before {"},{"lineNumber":1928,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e4\u0027;"},{"lineNumber":1929,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1930,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bar-chart:before,"},{"lineNumber":1931,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chart-bar:before {"},{"lineNumber":1932,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f080\u0027;"},{"lineNumber":1933,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1934,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-bubbles:before,"},{"lineNumber":1935,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-wash:before {"},{"lineNumber":1936,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e05e\u0027;"},{"lineNumber":1937,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1938,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-less-than-equal:before {"},{"lineNumber":1939,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f537\u0027;"},{"lineNumber":1940,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1941,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-train:before {"},{"lineNumber":1942,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f238\u0027;"},{"lineNumber":1943,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1944,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eye-low-vision:before,"},{"lineNumber":1945,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-low-vision:before {"},{"lineNumber":1946,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2a8\u0027;"},{"lineNumber":1947,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1948,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-crow:before {"},{"lineNumber":1949,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f520\u0027;"},{"lineNumber":1950,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1951,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sailboat:before {"},{"lineNumber":1952,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e445\u0027;"},{"lineNumber":1953,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1954,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-window-restore:before {"},{"lineNumber":1955,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2d2\u0027;"},{"lineNumber":1956,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1957,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plus-square:before,"},{"lineNumber":1958,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-plus:before {"},{"lineNumber":1959,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0fe\u0027;"},{"lineNumber":1960,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1961,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-torii-gate:before {"},{"lineNumber":1962,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6a1\u0027;"},{"lineNumber":1963,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1964,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-frog:before {"},{"lineNumber":1965,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f52e\u0027;"},{"lineNumber":1966,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1967,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bucket:before {"},{"lineNumber":1968,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4cf\u0027;"},{"lineNumber":1969,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1970,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-image:before {"},{"lineNumber":1971,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f03e\u0027;"},{"lineNumber":1972,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1973,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-microphone:before {"},{"lineNumber":1974,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f130\u0027;"},{"lineNumber":1975,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1976,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cow:before {"},{"lineNumber":1977,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6c8\u0027;"},{"lineNumber":1978,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1979,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caret-up:before {"},{"lineNumber":1980,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0d8\u0027;"},{"lineNumber":1981,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1982,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-screwdriver:before {"},{"lineNumber":1983,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f54a\u0027;"},{"lineNumber":1984,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1985,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-folder-closed:before {"},{"lineNumber":1986,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e185\u0027;"},{"lineNumber":1987,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1988,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-tsunami:before {"},{"lineNumber":1989,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e515\u0027;"},{"lineNumber":1990,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1991,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-nfi:before {"},{"lineNumber":1992,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e576\u0027;"},{"lineNumber":1993,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1994,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-from-ground-water:before {"},{"lineNumber":1995,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4b5\u0027;"},{"lineNumber":1996,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1997,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-glass-martini-alt:before,"},{"lineNumber":1998,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-martini-glass:before {"},{"lineNumber":1999,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f57b\u0027;"},{"lineNumber":2000,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2001,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-back:before,"},{"lineNumber":2002,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-backward:before,"},{"lineNumber":2003,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-left:before,"},{"lineNumber":2004,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-undo-alt:before {"},{"lineNumber":2005,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2ea\u0027;"},{"lineNumber":2006,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2007,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-columns:before,"},{"lineNumber":2008,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-table-columns:before {"},{"lineNumber":2009,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0db\u0027;"},{"lineNumber":2010,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2011,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lemon:before {"},{"lineNumber":2012,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f094\u0027;"},{"lineNumber":2013,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2014,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-head-side-mask:before {"},{"lineNumber":2015,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e063\u0027;"},{"lineNumber":2016,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2017,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-handshake:before {"},{"lineNumber":2018,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2b5\u0027;"},{"lineNumber":2019,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2020,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gem:before {"},{"lineNumber":2021,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3a5\u0027;"},{"lineNumber":2022,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2023,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dolly-box:before,"},{"lineNumber":2024,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dolly:before {"},{"lineNumber":2025,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f472\u0027;"},{"lineNumber":2026,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2027,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-smoking:before {"},{"lineNumber":2028,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f48d\u0027;"},{"lineNumber":2029,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2030,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-compress-arrows-alt:before,"},{"lineNumber":2031,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-minimize:before {"},{"lineNumber":2032,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f78c\u0027;"},{"lineNumber":2033,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2034,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-monument:before {"},{"lineNumber":2035,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5a6\u0027;"},{"lineNumber":2036,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2037,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-snowplow:before {"},{"lineNumber":2038,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7d2\u0027;"},{"lineNumber":2039,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2040,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angle-double-right:before,"},{"lineNumber":2041,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angles-right:before {"},{"lineNumber":2042,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f101\u0027;"},{"lineNumber":2043,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2044,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cannabis:before {"},{"lineNumber":2045,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f55f\u0027;"},{"lineNumber":2046,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2047,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-play:before,"},{"lineNumber":2048,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-play-circle:before {"},{"lineNumber":2049,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f144\u0027;"},{"lineNumber":2050,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2051,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tablets:before {"},{"lineNumber":2052,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f490\u0027;"},{"lineNumber":2053,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2054,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ethernet:before {"},{"lineNumber":2055,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f796\u0027;"},{"lineNumber":2056,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2057,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eur:before,"},{"lineNumber":2058,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-euro-sign:before,"},{"lineNumber":2059,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-euro:before {"},{"lineNumber":2060,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f153\u0027;"},{"lineNumber":2061,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2062,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chair:before {"},{"lineNumber":2063,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6c0\u0027;"},{"lineNumber":2064,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2065,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-check-circle:before,"},{"lineNumber":2066,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-check:before {"},{"lineNumber":2067,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f058\u0027;"},{"lineNumber":2068,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2069,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-stop:before,"},{"lineNumber":2070,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stop-circle:before {"},{"lineNumber":2071,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f28d\u0027;"},{"lineNumber":2072,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2073,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-compass-drafting:before,"},{"lineNumber":2074,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-drafting-compass:before {"},{"lineNumber":2075,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f568\u0027;"},{"lineNumber":2076,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2077,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plate-wheat:before {"},{"lineNumber":2078,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e55a\u0027;"},{"lineNumber":2079,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2080,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-icicles:before {"},{"lineNumber":2081,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7ad\u0027;"},{"lineNumber":2082,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2083,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-shelter:before {"},{"lineNumber":2084,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e54f\u0027;"},{"lineNumber":2085,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2086,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-neuter:before {"},{"lineNumber":2087,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f22c\u0027;"},{"lineNumber":2088,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2089,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-id-badge:before {"},{"lineNumber":2090,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2c1\u0027;"},{"lineNumber":2091,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2092,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-marker:before {"},{"lineNumber":2093,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5a1\u0027;"},{"lineNumber":2094,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2095,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-laugh-beam:before,"},{"lineNumber":2096,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laugh-beam:before {"},{"lineNumber":2097,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f59a\u0027;"},{"lineNumber":2098,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2099,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-helicopter-symbol:before {"},{"lineNumber":2100,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e502\u0027;"},{"lineNumber":2101,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2102,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-universal-access:before {"},{"lineNumber":2103,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f29a\u0027;"},{"lineNumber":2104,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2105,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chevron-circle-up:before,"},{"lineNumber":2106,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-chevron-up:before {"},{"lineNumber":2107,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f139\u0027;"},{"lineNumber":2108,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2109,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lari-sign:before {"},{"lineNumber":2110,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1c8\u0027;"},{"lineNumber":2111,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2112,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volcano:before {"},{"lineNumber":2113,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f770\u0027;"},{"lineNumber":2114,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2115,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-walking-dashed-line-arrow-right:before {"},{"lineNumber":2116,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e553\u0027;"},{"lineNumber":2117,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2118,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gbp:before,"},{"lineNumber":2119,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pound-sign:before,"},{"lineNumber":2120,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sterling-sign:before {"},{"lineNumber":2121,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f154\u0027;"},{"lineNumber":2122,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2123,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-viruses:before {"},{"lineNumber":2124,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e076\u0027;"},{"lineNumber":2125,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2126,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-person-confined:before {"},{"lineNumber":2127,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e577\u0027;"},{"lineNumber":2128,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2129,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-tie:before {"},{"lineNumber":2130,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f508\u0027;"},{"lineNumber":2131,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2132,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-long:before,"},{"lineNumber":2133,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-long-arrow-down:before {"},{"lineNumber":2134,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f175\u0027;"},{"lineNumber":2135,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2136,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tent-arrow-down-to-line:before {"},{"lineNumber":2137,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e57e\u0027;"},{"lineNumber":2138,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2139,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-certificate:before {"},{"lineNumber":2140,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a3\u0027;"},{"lineNumber":2141,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2142,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mail-reply-all:before,"},{"lineNumber":2143,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-reply-all:before {"},{"lineNumber":2144,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f122\u0027;"},{"lineNumber":2145,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2146,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-suitcase:before {"},{"lineNumber":2147,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0f2\u0027;"},{"lineNumber":2148,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2149,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-skating:before,"},{"lineNumber":2150,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-skating:before {"},{"lineNumber":2151,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7c5\u0027;"},{"lineNumber":2152,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2153,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-filter-circle-dollar:before,"},{"lineNumber":2154,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-funnel-dollar:before {"},{"lineNumber":2155,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f662\u0027;"},{"lineNumber":2156,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2157,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-camera-retro:before {"},{"lineNumber":2158,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f083\u0027;"},{"lineNumber":2159,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2160,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-circle-down:before,"},{"lineNumber":2161,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-arrow-down:before {"},{"lineNumber":2162,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ab\u0027;"},{"lineNumber":2163,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2164,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right-to-file:before,"},{"lineNumber":2165,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-import:before {"},{"lineNumber":2166,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f56f\u0027;"},{"lineNumber":2167,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2168,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-external-link-square:before,"},{"lineNumber":2169,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-arrow-up-right:before {"},{"lineNumber":2170,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f14c\u0027;"},{"lineNumber":2171,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2172,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-box-open:before {"},{"lineNumber":2173,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f49e\u0027;"},{"lineNumber":2174,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2175,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-scroll:before {"},{"lineNumber":2176,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f70e\u0027;"},{"lineNumber":2177,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2178,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spa:before {"},{"lineNumber":2179,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5bb\u0027;"},{"lineNumber":2180,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2181,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-location-pin-lock:before {"},{"lineNumber":2182,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e51f\u0027;"},{"lineNumber":2183,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2184,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pause:before {"},{"lineNumber":2185,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f04c\u0027;"},{"lineNumber":2186,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2187,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hill-avalanche:before {"},{"lineNumber":2188,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e507\u0027;"},{"lineNumber":2189,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2190,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-0:before,"},{"lineNumber":2191,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-empty:before,"},{"lineNumber":2192,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-0:before,"},{"lineNumber":2193,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-empty:before {"},{"lineNumber":2194,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2cb\u0027;"},{"lineNumber":2195,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2196,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bomb:before {"},{"lineNumber":2197,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1e2\u0027;"},{"lineNumber":2198,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2199,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-registered:before {"},{"lineNumber":2200,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f25d\u0027;"},{"lineNumber":2201,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2202,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-address-card:before,"},{"lineNumber":2203,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-contact-card:before,"},{"lineNumber":2204,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vcard:before {"},{"lineNumber":2205,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2bb\u0027;"},{"lineNumber":2206,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2207,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-balance-scale-right:before,"},{"lineNumber":2208,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-scale-unbalanced-flip:before {"},{"lineNumber":2209,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f516\u0027;"},{"lineNumber":2210,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2211,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-subscript:before {"},{"lineNumber":2212,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f12c\u0027;"},{"lineNumber":2213,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2214,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-diamond-turn-right:before,"},{"lineNumber":2215,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-directions:before {"},{"lineNumber":2216,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5eb\u0027;"},{"lineNumber":2217,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2218,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-burst:before {"},{"lineNumber":2219,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4dc\u0027;"},{"lineNumber":2220,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2221,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-laptop:before,"},{"lineNumber":2222,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laptop-house:before {"},{"lineNumber":2223,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e066\u0027;"},{"lineNumber":2224,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2225,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-tired:before,"},{"lineNumber":2226,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tired:before {"},{"lineNumber":2227,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c8\u0027;"},{"lineNumber":2228,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2229,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bills:before {"},{"lineNumber":2230,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1f3\u0027;"},{"lineNumber":2231,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2232,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-smog:before {"},{"lineNumber":2233,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f75f\u0027;"},{"lineNumber":2234,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2235,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-crutch:before {"},{"lineNumber":2236,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7f7\u0027;"},{"lineNumber":2237,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2238,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-arrow-up:before,"},{"lineNumber":2239,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-upload-alt:before,"},{"lineNumber":2240,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-upload:before {"},{"lineNumber":2241,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ee\u0027;"},{"lineNumber":2242,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2243,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-palette:before {"},{"lineNumber":2244,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f53f\u0027;"},{"lineNumber":2245,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2246,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-turn-right:before {"},{"lineNumber":2247,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c0\u0027;"},{"lineNumber":2248,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2249,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vest:before {"},{"lineNumber":2250,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e085\u0027;"},{"lineNumber":2251,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2252,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ferry:before {"},{"lineNumber":2253,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ea\u0027;"},{"lineNumber":2254,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2255,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-down-to-people:before {"},{"lineNumber":2256,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4b9\u0027;"},{"lineNumber":2257,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2258,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-seedling:before,"},{"lineNumber":2259,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sprout:before {"},{"lineNumber":2260,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4d8\u0027;"},{"lineNumber":2261,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2262,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-alt-h:before,"},{"lineNumber":2263,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-left-right:before {"},{"lineNumber":2264,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f337\u0027;"},{"lineNumber":2265,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2266,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-boxes-packing:before {"},{"lineNumber":2267,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c7\u0027;"},{"lineNumber":2268,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2269,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-circle-left:before,"},{"lineNumber":2270,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-arrow-left:before {"},{"lineNumber":2271,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a8\u0027;"},{"lineNumber":2272,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2273,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-group-arrows-rotate:before {"},{"lineNumber":2274,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f6\u0027;"},{"lineNumber":2275,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2276,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bowl-food:before {"},{"lineNumber":2277,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c6\u0027;"},{"lineNumber":2278,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2279,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-candy-cane:before {"},{"lineNumber":2280,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f786\u0027;"},{"lineNumber":2281,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2282,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-wide-short:before,"},{"lineNumber":2283,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-amount-asc:before,"},{"lineNumber":2284,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-amount-down:before {"},{"lineNumber":2285,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f160\u0027;"},{"lineNumber":2286,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2287,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-bolt:before,"},{"lineNumber":2288,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thunderstorm:before {"},{"lineNumber":2289,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f76c\u0027;"},{"lineNumber":2290,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2291,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-remove-format:before,"},{"lineNumber":2292,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-text-slash:before {"},{"lineNumber":2293,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f87d\u0027;"},{"lineNumber":2294,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2295,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-smile-wink:before,"},{"lineNumber":2296,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-smile-wink:before {"},{"lineNumber":2297,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4da\u0027;"},{"lineNumber":2298,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2299,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-word:before {"},{"lineNumber":2300,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c2\u0027;"},{"lineNumber":2301,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2302,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-powerpoint:before {"},{"lineNumber":2303,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c4\u0027;"},{"lineNumber":2304,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2305,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-h:before,"},{"lineNumber":2306,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-left-right:before {"},{"lineNumber":2307,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f07e\u0027;"},{"lineNumber":2308,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2309,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-lock:before {"},{"lineNumber":2310,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e510\u0027;"},{"lineNumber":2311,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2312,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-arrow-down:before,"},{"lineNumber":2313,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-download-alt:before,"},{"lineNumber":2314,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-download:before {"},{"lineNumber":2315,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ed\u0027;"},{"lineNumber":2316,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2317,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-children:before {"},{"lineNumber":2318,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e1\u0027;"},{"lineNumber":2319,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2320,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-blackboard:before,"},{"lineNumber":2321,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chalkboard:before {"},{"lineNumber":2322,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f51b\u0027;"},{"lineNumber":2323,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2324,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-alt-slash:before,"},{"lineNumber":2325,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-large-slash:before {"},{"lineNumber":2326,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4fa\u0027;"},{"lineNumber":2327,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2328,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-envelope-open:before {"},{"lineNumber":2329,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2b6\u0027;"},{"lineNumber":2330,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2331,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-handshake-alt-slash:before,"},{"lineNumber":2332,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-handshake-simple-slash:before {"},{"lineNumber":2333,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e05f\u0027;"},{"lineNumber":2334,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2335,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mattress-pillow:before {"},{"lineNumber":2336,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e525\u0027;"},{"lineNumber":2337,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2338,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-guarani-sign:before {"},{"lineNumber":2339,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e19a\u0027;"},{"lineNumber":2340,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2341,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-rotate:before,"},{"lineNumber":2342,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-refresh:before,"},{"lineNumber":2343,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sync:before {"},{"lineNumber":2344,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f021\u0027;"},{"lineNumber":2345,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2346,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fire-extinguisher:before {"},{"lineNumber":2347,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f134\u0027;"},{"lineNumber":2348,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2349,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cruzeiro-sign:before {"},{"lineNumber":2350,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e152\u0027;"},{"lineNumber":2351,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2352,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-greater-than-equal:before {"},{"lineNumber":2353,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f532\u0027;"},{"lineNumber":2354,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2355,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shield-alt:before,"},{"lineNumber":2356,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shield-halved:before {"},{"lineNumber":2357,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3ed\u0027;"},{"lineNumber":2358,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2359,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-atlas:before,"},{"lineNumber":2360,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-atlas:before {"},{"lineNumber":2361,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f558\u0027;"},{"lineNumber":2362,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2363,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-virus:before {"},{"lineNumber":2364,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e074\u0027;"},{"lineNumber":2365,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2366,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-envelope-circle-check:before {"},{"lineNumber":2367,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e8\u0027;"},{"lineNumber":2368,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2369,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-layer-group:before {"},{"lineNumber":2370,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5fd\u0027;"},{"lineNumber":2371,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2372,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-to-dot:before {"},{"lineNumber":2373,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4be\u0027;"},{"lineNumber":2374,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2375,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-archway:before {"},{"lineNumber":2376,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f557\u0027;"},{"lineNumber":2377,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2378,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-circle-check:before {"},{"lineNumber":2379,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4fd\u0027;"},{"lineNumber":2380,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2381,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-chimney-crack:before,"},{"lineNumber":2382,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-damage:before {"},{"lineNumber":2383,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6f1\u0027;"},{"lineNumber":2384,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2385,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-archive:before,"},{"lineNumber":2386,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-zipper:before {"},{"lineNumber":2387,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c6\u0027;"},{"lineNumber":2388,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2389,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square:before {"},{"lineNumber":2390,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c8\u0027;"},{"lineNumber":2391,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2392,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-glass-martini:before,"},{"lineNumber":2393,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-martini-glass-empty:before {"},{"lineNumber":2394,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f000\u0027;"},{"lineNumber":2395,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2396,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-couch:before {"},{"lineNumber":2397,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4b8\u0027;"},{"lineNumber":2398,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2399,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cedi-sign:before {"},{"lineNumber":2400,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0df\u0027;"},{"lineNumber":2401,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2402,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-italic:before {"},{"lineNumber":2403,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f033\u0027;"},{"lineNumber":2404,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2405,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-church:before {"},{"lineNumber":2406,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f51d\u0027;"},{"lineNumber":2407,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2408,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comments-dollar:before {"},{"lineNumber":2409,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f653\u0027;"},{"lineNumber":2410,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2411,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-democrat:before {"},{"lineNumber":2412,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f747\u0027;"},{"lineNumber":2413,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2414,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-z:before {"},{"lineNumber":2415,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\5a\u0027;"},{"lineNumber":2416,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2417,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-skiing:before,"},{"lineNumber":2418,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-skiing:before {"},{"lineNumber":2419,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7c9\u0027;"},{"lineNumber":2420,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2421,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-road-lock:before {"},{"lineNumber":2422,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e567\u0027;"},{"lineNumber":2423,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2424,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-a:before {"},{"lineNumber":2425,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\41\u0027;"},{"lineNumber":2426,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2427,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-arrow-down:before,"},{"lineNumber":2428,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-down:before {"},{"lineNumber":2429,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e03f\u0027;"},{"lineNumber":2430,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2431,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-feather-alt:before,"},{"lineNumber":2432,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-feather-pointed:before {"},{"lineNumber":2433,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f56b\u0027;"},{"lineNumber":2434,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2435,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-p:before {"},{"lineNumber":2436,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\50\u0027;"},{"lineNumber":2437,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2438,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-snowflake:before {"},{"lineNumber":2439,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2dc\u0027;"},{"lineNumber":2440,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2441,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-newspaper:before {"},{"lineNumber":2442,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1ea\u0027;"},{"lineNumber":2443,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2444,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ad:before,"},{"lineNumber":2445,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rectangle-ad:before {"},{"lineNumber":2446,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f641\u0027;"},{"lineNumber":2447,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2448,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-circle-right:before,"},{"lineNumber":2449,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-arrow-right:before {"},{"lineNumber":2450,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a9\u0027;"},{"lineNumber":2451,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2452,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-filter-circle-xmark:before {"},{"lineNumber":2453,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e17b\u0027;"},{"lineNumber":2454,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2455,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-locust:before {"},{"lineNumber":2456,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e520\u0027;"},{"lineNumber":2457,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2458,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort:before,"},{"lineNumber":2459,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-unsorted:before {"},{"lineNumber":2460,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0dc\u0027;"},{"lineNumber":2461,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2462,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list-1-2:before,"},{"lineNumber":2463,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list-numeric:before,"},{"lineNumber":2464,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list-ol:before {"},{"lineNumber":2465,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0cb\u0027;"},{"lineNumber":2466,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2467,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-dress-burst:before {"},{"lineNumber":2468,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e544\u0027;"},{"lineNumber":2469,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2470,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-check-alt:before,"},{"lineNumber":2471,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-check-dollar:before {"},{"lineNumber":2472,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f53d\u0027;"},{"lineNumber":2473,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2474,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vector-square:before {"},{"lineNumber":2475,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5cb\u0027;"},{"lineNumber":2476,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2477,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bread-slice:before {"},{"lineNumber":2478,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7ec\u0027;"},{"lineNumber":2479,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2480,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-language:before {"},{"lineNumber":2481,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1ab\u0027;"},{"lineNumber":2482,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2483,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-kiss-wink-heart:before,"},{"lineNumber":2484,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-kiss-wink-heart:before {"},{"lineNumber":2485,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f598\u0027;"},{"lineNumber":2486,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2487,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-filter:before {"},{"lineNumber":2488,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0b0\u0027;"},{"lineNumber":2489,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2490,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-question:before {"},{"lineNumber":2491,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\3f\u0027;"},{"lineNumber":2492,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2493,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-signature:before {"},{"lineNumber":2494,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f573\u0027;"},{"lineNumber":2495,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2496,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-alt:before,"},{"lineNumber":2497,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-up-down-left-right:before {"},{"lineNumber":2498,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0b2\u0027;"},{"lineNumber":2499,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2500,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-chimney-user:before {"},{"lineNumber":2501,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e065\u0027;"},{"lineNumber":2502,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2503,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-holding-heart:before {"},{"lineNumber":2504,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4be\u0027;"},{"lineNumber":2505,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2506,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-puzzle-piece:before {"},{"lineNumber":2507,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f12e\u0027;"},{"lineNumber":2508,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2509,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-check:before {"},{"lineNumber":2510,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f53c\u0027;"},{"lineNumber":2511,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2512,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-star-half-alt:before,"},{"lineNumber":2513,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-star-half-stroke:before {"},{"lineNumber":2514,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c0\u0027;"},{"lineNumber":2515,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2516,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-code:before {"},{"lineNumber":2517,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f121\u0027;"},{"lineNumber":2518,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2519,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-glass-whiskey:before,"},{"lineNumber":2520,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-whiskey-glass:before {"},{"lineNumber":2521,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7a0\u0027;"},{"lineNumber":2522,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2523,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-circle-exclamation:before {"},{"lineNumber":2524,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d3\u0027;"},{"lineNumber":2525,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2526,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magnifying-glass-chart:before {"},{"lineNumber":2527,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e522\u0027;"},{"lineNumber":2528,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2529,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-right-from-square:before,"},{"lineNumber":2530,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-external-link:before {"},{"lineNumber":2531,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f08e\u0027;"},{"lineNumber":2532,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2533,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cubes-stacked:before {"},{"lineNumber":2534,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e6\u0027;"},{"lineNumber":2535,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2536,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-krw:before,"},{"lineNumber":2537,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-won-sign:before,"},{"lineNumber":2538,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-won:before {"},{"lineNumber":2539,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f159\u0027;"},{"lineNumber":2540,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2541,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-virus-covid:before {"},{"lineNumber":2542,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4a8\u0027;"},{"lineNumber":2543,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2544,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-austral-sign:before {"},{"lineNumber":2545,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0a9\u0027;"},{"lineNumber":2546,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2547,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-f:before {"},{"lineNumber":2548,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\46\u0027;"},{"lineNumber":2549,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2550,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-leaf:before {"},{"lineNumber":2551,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f06c\u0027;"},{"lineNumber":2552,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2553,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-road:before {"},{"lineNumber":2554,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f018\u0027;"},{"lineNumber":2555,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2556,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cab:before,"},{"lineNumber":2557,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-taxi:before {"},{"lineNumber":2558,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1ba\u0027;"},{"lineNumber":2559,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2560,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-circle-plus:before {"},{"lineNumber":2561,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e541\u0027;"},{"lineNumber":2562,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2563,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chart-pie:before,"},{"lineNumber":2564,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pie-chart:before {"},{"lineNumber":2565,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f200\u0027;"},{"lineNumber":2566,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2567,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bolt-lightning:before {"},{"lineNumber":2568,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0b7\u0027;"},{"lineNumber":2569,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2570,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sack-xmark:before {"},{"lineNumber":2571,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e56a\u0027;"},{"lineNumber":2572,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2573,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-excel:before {"},{"lineNumber":2574,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c3\u0027;"},{"lineNumber":2575,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2576,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-contract:before {"},{"lineNumber":2577,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f56c\u0027;"},{"lineNumber":2578,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2579,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fish-fins:before {"},{"lineNumber":2580,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f2\u0027;"},{"lineNumber":2581,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2582,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-flag:before {"},{"lineNumber":2583,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d5\u0027;"},{"lineNumber":2584,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2585,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-beam:before,"},{"lineNumber":2586,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-beam:before {"},{"lineNumber":2587,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f582\u0027;"},{"lineNumber":2588,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2589,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-object-ungroup:before {"},{"lineNumber":2590,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f248\u0027;"},{"lineNumber":2591,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2592,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-poop:before {"},{"lineNumber":2593,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f619\u0027;"},{"lineNumber":2594,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2595,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-location-pin:before,"},{"lineNumber":2596,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map-marker:before {"},{"lineNumber":2597,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f041\u0027;"},{"lineNumber":2598,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2599,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-kaaba:before {"},{"lineNumber":2600,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f66b\u0027;"},{"lineNumber":2601,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2602,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-toilet-paper:before {"},{"lineNumber":2603,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f71e\u0027;"},{"lineNumber":2604,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2605,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hard-hat:before,"},{"lineNumber":2606,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hat-hard:before,"},{"lineNumber":2607,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-helmet-safety:before {"},{"lineNumber":2608,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f807\u0027;"},{"lineNumber":2609,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2610,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eject:before {"},{"lineNumber":2611,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f052\u0027;"},{"lineNumber":2612,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2613,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-alt-circle-right:before,"},{"lineNumber":2614,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-right:before {"},{"lineNumber":2615,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f35a\u0027;"},{"lineNumber":2616,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2617,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane-circle-check:before {"},{"lineNumber":2618,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e555\u0027;"},{"lineNumber":2619,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2620,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-rolling-eyes:before,"},{"lineNumber":2621,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-meh-rolling-eyes:before {"},{"lineNumber":2622,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5a5\u0027;"},{"lineNumber":2623,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2624,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-object-group:before {"},{"lineNumber":2625,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f247\u0027;"},{"lineNumber":2626,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2627,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chart-line:before,"},{"lineNumber":2628,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-line-chart:before {"},{"lineNumber":2629,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f201\u0027;"},{"lineNumber":2630,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2631,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mask-ventilator:before {"},{"lineNumber":2632,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e524\u0027;"},{"lineNumber":2633,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2634,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right:before {"},{"lineNumber":2635,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f061\u0027;"},{"lineNumber":2636,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2637,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map-signs:before,"},{"lineNumber":2638,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-signs-post:before {"},{"lineNumber":2639,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f277\u0027;"},{"lineNumber":2640,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2641,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cash-register:before {"},{"lineNumber":2642,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f788\u0027;"},{"lineNumber":2643,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2644,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-circle-question:before {"},{"lineNumber":2645,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e542\u0027;"},{"lineNumber":2646,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2647,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-h:before {"},{"lineNumber":2648,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\48\u0027;"},{"lineNumber":2649,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2650,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tarp:before {"},{"lineNumber":2651,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e57b\u0027;"},{"lineNumber":2652,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2653,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-screwdriver-wrench:before,"},{"lineNumber":2654,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tools:before {"},{"lineNumber":2655,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7d9\u0027;"},{"lineNumber":2656,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2657,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-to-eye:before {"},{"lineNumber":2658,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4bf\u0027;"},{"lineNumber":2659,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2660,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plug-circle-bolt:before {"},{"lineNumber":2661,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e55b\u0027;"},{"lineNumber":2662,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2663,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart:before {"},{"lineNumber":2664,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f004\u0027;"},{"lineNumber":2665,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2666,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars-and-venus:before {"},{"lineNumber":2667,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f224\u0027;"},{"lineNumber":2668,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2669,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-home-user:before,"},{"lineNumber":2670,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-user:before {"},{"lineNumber":2671,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1b0\u0027;"},{"lineNumber":2672,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2673,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dumpster-fire:before {"},{"lineNumber":2674,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f794\u0027;"},{"lineNumber":2675,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2676,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-crack:before {"},{"lineNumber":2677,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e3b1\u0027;"},{"lineNumber":2678,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2679,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cocktail:before,"},{"lineNumber":2680,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-martini-glass-citrus:before {"},{"lineNumber":2681,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f561\u0027;"},{"lineNumber":2682,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2683,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-surprise:before,"},{"lineNumber":2684,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-surprise:before {"},{"lineNumber":2685,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c2\u0027;"},{"lineNumber":2686,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2687,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bottle-water:before {"},{"lineNumber":2688,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c5\u0027;"},{"lineNumber":2689,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2690,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-pause:before,"},{"lineNumber":2691,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pause-circle:before {"},{"lineNumber":2692,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f28b\u0027;"},{"lineNumber":2693,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2694,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-toilet-paper-slash:before {"},{"lineNumber":2695,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e072\u0027;"},{"lineNumber":2696,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2697,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-apple-alt:before,"},{"lineNumber":2698,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-apple-whole:before {"},{"lineNumber":2699,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5d1\u0027;"},{"lineNumber":2700,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2701,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-kitchen-set:before {"},{"lineNumber":2702,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e51a\u0027;"},{"lineNumber":2703,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2704,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-r:before {"},{"lineNumber":2705,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\52\u0027;"},{"lineNumber":2706,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2707,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-1:before,"},{"lineNumber":2708,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-quarter:before,"},{"lineNumber":2709,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-1:before,"},{"lineNumber":2710,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-quarter:before {"},{"lineNumber":2711,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2ca\u0027;"},{"lineNumber":2712,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2713,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cube:before {"},{"lineNumber":2714,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1b2\u0027;"},{"lineNumber":2715,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2716,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bitcoin-sign:before {"},{"lineNumber":2717,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0b4\u0027;"},{"lineNumber":2718,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2719,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shield-dog:before {"},{"lineNumber":2720,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e573\u0027;"},{"lineNumber":2721,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2722,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-solar-panel:before {"},{"lineNumber":2723,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5ba\u0027;"},{"lineNumber":2724,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2725,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lock-open:before {"},{"lineNumber":2726,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3c1\u0027;"},{"lineNumber":2727,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2728,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-elevator:before {"},{"lineNumber":2729,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e16d\u0027;"},{"lineNumber":2730,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2731,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill-transfer:before {"},{"lineNumber":2732,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e528\u0027;"},{"lineNumber":2733,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2734,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill-trend-up:before {"},{"lineNumber":2735,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e529\u0027;"},{"lineNumber":2736,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2737,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-flood-water-circle-arrow-right:before {"},{"lineNumber":2738,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e50f\u0027;"},{"lineNumber":2739,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2740,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-poll-h:before,"},{"lineNumber":2741,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-poll-horizontal:before {"},{"lineNumber":2742,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f682\u0027;"},{"lineNumber":2743,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2744,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle:before {"},{"lineNumber":2745,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f111\u0027;"},{"lineNumber":2746,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2747,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-backward-fast:before,"},{"lineNumber":2748,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fast-backward:before {"},{"lineNumber":2749,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f049\u0027;"},{"lineNumber":2750,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2751,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-recycle:before {"},{"lineNumber":2752,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1b8\u0027;"},{"lineNumber":2753,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2754,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-astronaut:before {"},{"lineNumber":2755,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4fb\u0027;"},{"lineNumber":2756,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2757,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane-slash:before {"},{"lineNumber":2758,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e069\u0027;"},{"lineNumber":2759,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2760,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trademark:before {"},{"lineNumber":2761,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f25c\u0027;"},{"lineNumber":2762,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2763,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-basketball-ball:before,"},{"lineNumber":2764,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-basketball:before {"},{"lineNumber":2765,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f434\u0027;"},{"lineNumber":2766,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2767,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-satellite-dish:before {"},{"lineNumber":2768,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7c0\u0027;"},{"lineNumber":2769,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2770,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-alt-circle-up:before,"},{"lineNumber":2771,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-up:before {"},{"lineNumber":2772,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f35b\u0027;"},{"lineNumber":2773,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2774,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile-alt:before,"},{"lineNumber":2775,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile-screen-button:before {"},{"lineNumber":2776,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3cd\u0027;"},{"lineNumber":2777,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2778,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-high:before,"},{"lineNumber":2779,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-up:before {"},{"lineNumber":2780,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f028\u0027;"},{"lineNumber":2781,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2782,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users-rays:before {"},{"lineNumber":2783,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e593\u0027;"},{"lineNumber":2784,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2785,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wallet:before {"},{"lineNumber":2786,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f555\u0027;"},{"lineNumber":2787,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2788,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clipboard-check:before {"},{"lineNumber":2789,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f46c\u0027;"},{"lineNumber":2790,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2791,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-audio:before {"},{"lineNumber":2792,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c7\u0027;"},{"lineNumber":2793,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2794,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-burger:before,"},{"lineNumber":2795,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hamburger:before {"},{"lineNumber":2796,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f805\u0027;"},{"lineNumber":2797,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2798,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wrench:before {"},{"lineNumber":2799,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ad\u0027;"},{"lineNumber":2800,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2801,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bugs:before {"},{"lineNumber":2802,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d0\u0027;"},{"lineNumber":2803,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2804,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rupee-sign:before,"},{"lineNumber":2805,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rupee:before {"},{"lineNumber":2806,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f156\u0027;"},{"lineNumber":2807,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2808,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-image:before {"},{"lineNumber":2809,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c5\u0027;"},{"lineNumber":2810,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2811,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-question:before,"},{"lineNumber":2812,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-question-circle:before {"},{"lineNumber":2813,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f059\u0027;"},{"lineNumber":2814,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2815,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane-departure:before {"},{"lineNumber":2816,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5b0\u0027;"},{"lineNumber":2817,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2818,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-handshake-slash:before {"},{"lineNumber":2819,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e060\u0027;"},{"lineNumber":2820,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2821,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-bookmark:before {"},{"lineNumber":2822,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0bb\u0027;"},{"lineNumber":2823,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2824,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-code-branch:before {"},{"lineNumber":2825,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f126\u0027;"},{"lineNumber":2826,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2827,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hat-cowboy:before {"},{"lineNumber":2828,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f8c0\u0027;"},{"lineNumber":2829,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2830,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bridge:before {"},{"lineNumber":2831,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c8\u0027;"},{"lineNumber":2832,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2833,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-phone-alt:before,"},{"lineNumber":2834,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-phone-flip:before {"},{"lineNumber":2835,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f879\u0027;"},{"lineNumber":2836,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2837,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-front:before {"},{"lineNumber":2838,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e2b7\u0027;"},{"lineNumber":2839,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2840,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cat:before {"},{"lineNumber":2841,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6be\u0027;"},{"lineNumber":2842,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2843,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-anchor-circle-exclamation:before {"},{"lineNumber":2844,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ab\u0027;"},{"lineNumber":2845,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2846,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-field:before {"},{"lineNumber":2847,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e58d\u0027;"},{"lineNumber":2848,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2849,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-route:before {"},{"lineNumber":2850,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4d7\u0027;"},{"lineNumber":2851,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2852,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clipboard-question:before {"},{"lineNumber":2853,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e3\u0027;"},{"lineNumber":2854,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2855,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-panorama:before {"},{"lineNumber":2856,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e209\u0027;"},{"lineNumber":2857,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2858,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comment-medical:before {"},{"lineNumber":2859,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7f5\u0027;"},{"lineNumber":2860,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2861,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-teeth-open:before {"},{"lineNumber":2862,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f62f\u0027;"},{"lineNumber":2863,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2864,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-circle-minus:before {"},{"lineNumber":2865,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ed\u0027;"},{"lineNumber":2866,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2867,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tags:before {"},{"lineNumber":2868,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f02c\u0027;"},{"lineNumber":2869,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2870,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wine-glass:before {"},{"lineNumber":2871,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4e3\u0027;"},{"lineNumber":2872,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2873,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fast-forward:before,"},{"lineNumber":2874,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-forward-fast:before {"},{"lineNumber":2875,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f050\u0027;"},{"lineNumber":2876,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2877,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-meh-blank:before,"},{"lineNumber":2878,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-meh-blank:before {"},{"lineNumber":2879,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5a4\u0027;"},{"lineNumber":2880,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2881,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-parking:before,"},{"lineNumber":2882,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-parking:before {"},{"lineNumber":2883,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f540\u0027;"},{"lineNumber":2884,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2885,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-signal:before {"},{"lineNumber":2886,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e012\u0027;"},{"lineNumber":2887,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2888,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bars-progress:before,"},{"lineNumber":2889,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tasks-alt:before {"},{"lineNumber":2890,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f828\u0027;"},{"lineNumber":2891,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2892,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-faucet-drip:before {"},{"lineNumber":2893,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e006\u0027;"},{"lineNumber":2894,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2895,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cart-flatbed:before,"},{"lineNumber":2896,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dolly-flatbed:before {"},{"lineNumber":2897,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f474\u0027;"},{"lineNumber":2898,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2899,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ban-smoking:before,"},{"lineNumber":2900,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-smoking-ban:before {"},{"lineNumber":2901,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f54d\u0027;"},{"lineNumber":2902,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2903,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-terminal:before {"},{"lineNumber":2904,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f120\u0027;"},{"lineNumber":2905,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2906,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile-button:before {"},{"lineNumber":2907,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f10b\u0027;"},{"lineNumber":2908,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2909,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-medical-flag:before {"},{"lineNumber":2910,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e514\u0027;"},{"lineNumber":2911,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2912,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-basket-shopping:before,"},{"lineNumber":2913,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shopping-basket:before {"},{"lineNumber":2914,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f291\u0027;"},{"lineNumber":2915,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2916,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tape:before {"},{"lineNumber":2917,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4db\u0027;"},{"lineNumber":2918,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2919,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bus-alt:before,"},{"lineNumber":2920,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bus-simple:before {"},{"lineNumber":2921,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f55e\u0027;"},{"lineNumber":2922,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2923,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eye:before {"},{"lineNumber":2924,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f06e\u0027;"},{"lineNumber":2925,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2926,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-sad-cry:before,"},{"lineNumber":2927,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sad-cry:before {"},{"lineNumber":2928,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5b3\u0027;"},{"lineNumber":2929,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2930,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-audio-description:before {"},{"lineNumber":2931,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f29e\u0027;"},{"lineNumber":2932,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2933,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-military-to-person:before {"},{"lineNumber":2934,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e54c\u0027;"},{"lineNumber":2935,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2936,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-shield:before {"},{"lineNumber":2937,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f0\u0027;"},{"lineNumber":2938,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2939,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-slash:before {"},{"lineNumber":2940,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f506\u0027;"},{"lineNumber":2941,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2942,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pen:before {"},{"lineNumber":2943,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f304\u0027;"},{"lineNumber":2944,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2945,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tower-observation:before {"},{"lineNumber":2946,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e586\u0027;"},{"lineNumber":2947,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2948,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-code:before {"},{"lineNumber":2949,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c9\u0027;"},{"lineNumber":2950,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2951,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-signal-5:before,"},{"lineNumber":2952,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-signal-perfect:before,"},{"lineNumber":2953,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-signal:before {"},{"lineNumber":2954,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f012\u0027;"},{"lineNumber":2955,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2956,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bus:before {"},{"lineNumber":2957,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f207\u0027;"},{"lineNumber":2958,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2959,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-circle-xmark:before {"},{"lineNumber":2960,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e501\u0027;"},{"lineNumber":2961,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2962,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-home-lg:before,"},{"lineNumber":2963,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-chimney:before {"},{"lineNumber":2964,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e3af\u0027;"},{"lineNumber":2965,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2966,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-window-maximize:before {"},{"lineNumber":2967,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2d0\u0027;"},{"lineNumber":2968,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2969,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-frown:before,"},{"lineNumber":2970,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-frown:before {"},{"lineNumber":2971,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f119\u0027;"},{"lineNumber":2972,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2973,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-prescription:before {"},{"lineNumber":2974,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5b1\u0027;"},{"lineNumber":2975,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2976,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shop:before,"},{"lineNumber":2977,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-store-alt:before {"},{"lineNumber":2978,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f54f\u0027;"},{"lineNumber":2979,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2980,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-floppy-disk:before,"},{"lineNumber":2981,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-save:before {"},{"lineNumber":2982,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c7\u0027;"},{"lineNumber":2983,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2984,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vihara:before {"},{"lineNumber":2985,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6a7\u0027;"},{"lineNumber":2986,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2987,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-balance-scale-left:before,"},{"lineNumber":2988,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-scale-unbalanced:before {"},{"lineNumber":2989,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f515\u0027;"},{"lineNumber":2990,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2991,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-asc:before,"},{"lineNumber":2992,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-up:before {"},{"lineNumber":2993,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0de\u0027;"},{"lineNumber":2994,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2995,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comment-dots:before,"},{"lineNumber":2996,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-commenting:before {"},{"lineNumber":2997,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4ad\u0027;"},{"lineNumber":2998,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2999,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plant-wilt:before {"},{"lineNumber":3000,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e5aa\u0027;"},{"lineNumber":3001,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3002,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-diamond:before {"},{"lineNumber":3003,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f219\u0027;"},{"lineNumber":3004,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3005,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-squint:before,"},{"lineNumber":3006,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-squint:before {"},{"lineNumber":3007,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f585\u0027;"},{"lineNumber":3008,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3009,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-holding-dollar:before,"},{"lineNumber":3010,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-holding-usd:before {"},{"lineNumber":3011,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4c0\u0027;"},{"lineNumber":3012,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3013,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bacterium:before {"},{"lineNumber":3014,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e05a\u0027;"},{"lineNumber":3015,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3016,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-pointer:before {"},{"lineNumber":3017,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f25a\u0027;"},{"lineNumber":3018,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3019,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-drum-steelpan:before {"},{"lineNumber":3020,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f56a\u0027;"},{"lineNumber":3021,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3022,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-scissors:before {"},{"lineNumber":3023,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f257\u0027;"},{"lineNumber":3024,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3025,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-praying:before,"},{"lineNumber":3026,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-praying-hands:before {"},{"lineNumber":3027,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f684\u0027;"},{"lineNumber":3028,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3029,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right-rotate:before,"},{"lineNumber":3030,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-rotate-forward:before,"},{"lineNumber":3031,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-rotate-right:before,"},{"lineNumber":3032,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-redo:before {"},{"lineNumber":3033,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f01e\u0027;"},{"lineNumber":3034,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3035,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-biohazard:before {"},{"lineNumber":3036,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f780\u0027;"},{"lineNumber":3037,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3038,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-location-crosshairs:before,"},{"lineNumber":3039,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-location:before {"},{"lineNumber":3040,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f601\u0027;"},{"lineNumber":3041,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3042,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars-double:before {"},{"lineNumber":3043,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f227\u0027;"},{"lineNumber":3044,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3045,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-child-dress:before {"},{"lineNumber":3046,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e59c\u0027;"},{"lineNumber":3047,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3048,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users-between-lines:before {"},{"lineNumber":3049,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e591\u0027;"},{"lineNumber":3050,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3051,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lungs-virus:before {"},{"lineNumber":3052,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e067\u0027;"},{"lineNumber":3053,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3054,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-tears:before,"},{"lineNumber":3055,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-tears:before {"},{"lineNumber":3056,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f588\u0027;"},{"lineNumber":3057,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3058,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-phone:before {"},{"lineNumber":3059,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f095\u0027;"},{"lineNumber":3060,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3061,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-times:before,"},{"lineNumber":3062,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-xmark:before {"},{"lineNumber":3063,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f273\u0027;"},{"lineNumber":3064,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3065,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-child-reaching:before {"},{"lineNumber":3066,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e59d\u0027;"},{"lineNumber":3067,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3068,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-head-side-virus:before {"},{"lineNumber":3069,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e064\u0027;"},{"lineNumber":3070,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3071,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-cog:before,"},{"lineNumber":3072,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-gear:before {"},{"lineNumber":3073,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4fe\u0027;"},{"lineNumber":3074,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3075,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-1-9:before,"},{"lineNumber":3076,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-numeric-up:before {"},{"lineNumber":3077,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f163\u0027;"},{"lineNumber":3078,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3079,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-door-closed:before {"},{"lineNumber":3080,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f52a\u0027;"},{"lineNumber":3081,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3082,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shield-virus:before {"},{"lineNumber":3083,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e06c\u0027;"},{"lineNumber":3084,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3085,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice-six:before {"},{"lineNumber":3086,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f526\u0027;"},{"lineNumber":3087,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3088,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mosquito-net:before {"},{"lineNumber":3089,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e52c\u0027;"},{"lineNumber":3090,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3091,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bridge-water:before {"},{"lineNumber":3092,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ce\u0027;"},{"lineNumber":3093,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3094,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-booth:before {"},{"lineNumber":3095,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f756\u0027;"},{"lineNumber":3096,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3097,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-text-width:before {"},{"lineNumber":3098,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f035\u0027;"},{"lineNumber":3099,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3100,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hat-wizard:before {"},{"lineNumber":3101,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6e8\u0027;"},{"lineNumber":3102,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3103,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pen-fancy:before {"},{"lineNumber":3104,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5ac\u0027;"},{"lineNumber":3105,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3106,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-digging:before,"},{"lineNumber":3107,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-digging:before {"},{"lineNumber":3108,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f85e\u0027;"},{"lineNumber":3109,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3110,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trash:before {"},{"lineNumber":3111,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1f8\u0027;"},{"lineNumber":3112,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3113,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gauge-simple-med:before,"},{"lineNumber":3114,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gauge-simple:before,"},{"lineNumber":3115,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tachometer-average:before {"},{"lineNumber":3116,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f629\u0027;"},{"lineNumber":3117,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3118,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-medical:before {"},{"lineNumber":3119,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7e6\u0027;"},{"lineNumber":3120,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3121,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-poo:before {"},{"lineNumber":3122,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2fe\u0027;"},{"lineNumber":3123,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3124,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-quote-right-alt:before,"},{"lineNumber":3125,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-quote-right:before {"},{"lineNumber":3126,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f10e\u0027;"},{"lineNumber":3127,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3128,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shirt:before,"},{"lineNumber":3129,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-t-shirt:before,"},{"lineNumber":3130,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tshirt:before {"},{"lineNumber":3131,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f553\u0027;"},{"lineNumber":3132,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3133,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cubes:before {"},{"lineNumber":3134,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1b3\u0027;"},{"lineNumber":3135,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3136,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-divide:before {"},{"lineNumber":3137,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f529\u0027;"},{"lineNumber":3138,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3139,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tenge-sign:before,"},{"lineNumber":3140,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tenge:before {"},{"lineNumber":3141,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7d7\u0027;"},{"lineNumber":3142,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3143,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-headphones:before {"},{"lineNumber":3144,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f025\u0027;"},{"lineNumber":3145,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3146,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-holding:before {"},{"lineNumber":3147,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4c2\u0027;"},{"lineNumber":3148,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3149,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-clapping:before {"},{"lineNumber":3150,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1a8\u0027;"},{"lineNumber":3151,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3152,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-republican:before {"},{"lineNumber":3153,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f75e\u0027;"},{"lineNumber":3154,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3155,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-left:before {"},{"lineNumber":3156,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f060\u0027;"},{"lineNumber":3157,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3158,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-circle-xmark:before {"},{"lineNumber":3159,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e543\u0027;"},{"lineNumber":3160,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3161,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ruler:before {"},{"lineNumber":3162,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f545\u0027;"},{"lineNumber":3163,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3164,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-align-left:before {"},{"lineNumber":3165,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f036\u0027;"},{"lineNumber":3166,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3167,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice-d6:before {"},{"lineNumber":3168,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6d1\u0027;"},{"lineNumber":3169,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3170,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-restroom:before {"},{"lineNumber":3171,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7bd\u0027;"},{"lineNumber":3172,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3173,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-j:before {"},{"lineNumber":3174,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\4a\u0027;"},{"lineNumber":3175,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3176,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users-viewfinder:before {"},{"lineNumber":3177,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e595\u0027;"},{"lineNumber":3178,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3179,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-video:before {"},{"lineNumber":3180,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c8\u0027;"},{"lineNumber":3181,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3182,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-external-link-alt:before,"},{"lineNumber":3183,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-up-right-from-square:before {"},{"lineNumber":3184,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f35d\u0027;"},{"lineNumber":3185,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3186,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-table-cells:before,"},{"lineNumber":3187,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-th:before {"},{"lineNumber":3188,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f00a\u0027;"},{"lineNumber":3189,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3190,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-pdf:before {"},{"lineNumber":3191,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c1\u0027;"},{"lineNumber":3192,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3193,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bible:before,"},{"lineNumber":3194,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-bible:before {"},{"lineNumber":3195,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f647\u0027;"},{"lineNumber":3196,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3197,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-o:before {"},{"lineNumber":3198,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\4f\u0027;"},{"lineNumber":3199,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3200,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-medkit:before,"},{"lineNumber":3201,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-suitcase-medical:before {"},{"lineNumber":3202,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0fa\u0027;"},{"lineNumber":3203,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3204,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-secret:before {"},{"lineNumber":3205,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f21b\u0027;"},{"lineNumber":3206,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3207,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-otter:before {"},{"lineNumber":3208,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f700\u0027;"},{"lineNumber":3209,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3210,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-female:before,"},{"lineNumber":3211,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-dress:before {"},{"lineNumber":3212,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f182\u0027;"},{"lineNumber":3213,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3214,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comment-dollar:before {"},{"lineNumber":3215,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f651\u0027;"},{"lineNumber":3216,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3217,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-briefcase-clock:before,"},{"lineNumber":3218,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-business-time:before {"},{"lineNumber":3219,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f64a\u0027;"},{"lineNumber":3220,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3221,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-table-cells-large:before,"},{"lineNumber":3222,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-th-large:before {"},{"lineNumber":3223,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f009\u0027;"},{"lineNumber":3224,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3225,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-tanakh:before,"},{"lineNumber":3226,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tanakh:before {"},{"lineNumber":3227,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f827\u0027;"},{"lineNumber":3228,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3229,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-phone-volume:before,"},{"lineNumber":3230,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-control-phone:before {"},{"lineNumber":3231,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2a0\u0027;"},{"lineNumber":3232,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3233,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hat-cowboy-side:before {"},{"lineNumber":3234,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f8c1\u0027;"},{"lineNumber":3235,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3236,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clipboard-user:before {"},{"lineNumber":3237,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7f3\u0027;"},{"lineNumber":3238,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3239,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-child:before {"},{"lineNumber":3240,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1ae\u0027;"},{"lineNumber":3241,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3242,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lira-sign:before {"},{"lineNumber":3243,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f195\u0027;"},{"lineNumber":3244,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3245,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-satellite:before {"},{"lineNumber":3246,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7bf\u0027;"},{"lineNumber":3247,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3248,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane-lock:before {"},{"lineNumber":3249,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e558\u0027;"},{"lineNumber":3250,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3251,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tag:before {"},{"lineNumber":3252,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f02b\u0027;"},{"lineNumber":3253,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3254,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comment:before {"},{"lineNumber":3255,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f075\u0027;"},{"lineNumber":3256,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3257,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-birthday-cake:before,"},{"lineNumber":3258,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cake-candles:before,"},{"lineNumber":3259,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cake:before {"},{"lineNumber":3260,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1fd\u0027;"},{"lineNumber":3261,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3262,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-envelope:before {"},{"lineNumber":3263,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0e0\u0027;"},{"lineNumber":3264,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3265,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angle-double-up:before,"},{"lineNumber":3266,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angles-up:before {"},{"lineNumber":3267,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f102\u0027;"},{"lineNumber":3268,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3269,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-paperclip:before {"},{"lineNumber":3270,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c6\u0027;"},{"lineNumber":3271,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3272,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right-to-city:before {"},{"lineNumber":3273,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4b3\u0027;"},{"lineNumber":3274,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3275,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ribbon:before {"},{"lineNumber":3276,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4d6\u0027;"},{"lineNumber":3277,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3278,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lungs:before {"},{"lineNumber":3279,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f604\u0027;"},{"lineNumber":3280,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3281,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-9-1:before,"},{"lineNumber":3282,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-numeric-up-alt:before {"},{"lineNumber":3283,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f887\u0027;"},{"lineNumber":3284,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3285,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-litecoin-sign:before {"},{"lineNumber":3286,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1d3\u0027;"},{"lineNumber":3287,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3288,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-border-none:before {"},{"lineNumber":3289,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f850\u0027;"},{"lineNumber":3290,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3291,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-nodes:before {"},{"lineNumber":3292,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e2\u0027;"},{"lineNumber":3293,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3294,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-parachute-box:before {"},{"lineNumber":3295,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4cd\u0027;"},{"lineNumber":3296,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3297,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-indent:before {"},{"lineNumber":3298,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f03c\u0027;"},{"lineNumber":3299,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3300,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-field-un:before {"},{"lineNumber":3301,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e58e\u0027;"},{"lineNumber":3302,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3303,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hourglass-empty:before,"},{"lineNumber":3304,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hourglass:before {"},{"lineNumber":3305,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f254\u0027;"},{"lineNumber":3306,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3307,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mountain:before {"},{"lineNumber":3308,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6fc\u0027;"},{"lineNumber":3309,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3310,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-doctor:before,"},{"lineNumber":3311,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-md:before {"},{"lineNumber":3312,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0f0\u0027;"},{"lineNumber":3313,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3314,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-info:before,"},{"lineNumber":3315,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-info-circle:before {"},{"lineNumber":3316,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f05a\u0027;"},{"lineNumber":3317,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3318,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-meatball:before {"},{"lineNumber":3319,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f73b\u0027;"},{"lineNumber":3320,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3321,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-camera-alt:before,"},{"lineNumber":3322,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-camera:before {"},{"lineNumber":3323,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f030\u0027;"},{"lineNumber":3324,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3325,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-virus:before {"},{"lineNumber":3326,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e578\u0027;"},{"lineNumber":3327,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3328,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-meteor:before {"},{"lineNumber":3329,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f753\u0027;"},{"lineNumber":3330,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3331,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car-on:before {"},{"lineNumber":3332,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4dd\u0027;"},{"lineNumber":3333,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3334,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sleigh:before {"},{"lineNumber":3335,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7cc\u0027;"},{"lineNumber":3336,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3337,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-1-9:before,"},{"lineNumber":3338,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-numeric-asc:before,"},{"lineNumber":3339,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-numeric-down:before {"},{"lineNumber":3340,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f162\u0027;"},{"lineNumber":3341,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3342,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-holding-droplet:before,"},{"lineNumber":3343,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-holding-water:before {"},{"lineNumber":3344,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4c1\u0027;"},{"lineNumber":3345,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3346,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-water:before {"},{"lineNumber":3347,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f773\u0027;"},{"lineNumber":3348,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3349,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-check:before {"},{"lineNumber":3350,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f274\u0027;"},{"lineNumber":3351,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3352,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-braille:before {"},{"lineNumber":3353,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2a1\u0027;"},{"lineNumber":3354,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3355,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-prescription-bottle-alt:before,"},{"lineNumber":3356,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-prescription-bottle-medical:before {"},{"lineNumber":3357,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f486\u0027;"},{"lineNumber":3358,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3359,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-landmark:before {"},{"lineNumber":3360,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f66f\u0027;"},{"lineNumber":3361,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3362,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck:before {"},{"lineNumber":3363,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0d1\u0027;"},{"lineNumber":3364,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3365,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-crosshairs:before {"},{"lineNumber":3366,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f05b\u0027;"},{"lineNumber":3367,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3368,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-cane:before {"},{"lineNumber":3369,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e53c\u0027;"},{"lineNumber":3370,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3371,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tent:before {"},{"lineNumber":3372,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e57d\u0027;"},{"lineNumber":3373,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3374,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vest-patches:before {"},{"lineNumber":3375,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e086\u0027;"},{"lineNumber":3376,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3377,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-check-double:before {"},{"lineNumber":3378,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f560\u0027;"},{"lineNumber":3379,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3380,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-a-z:before,"},{"lineNumber":3381,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-alpha-asc:before,"},{"lineNumber":3382,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-alpha-down:before {"},{"lineNumber":3383,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f15d\u0027;"},{"lineNumber":3384,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3385,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill-wheat:before {"},{"lineNumber":3386,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e52a\u0027;"},{"lineNumber":3387,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3388,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cookie:before {"},{"lineNumber":3389,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f563\u0027;"},{"lineNumber":3390,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3391,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-left-rotate:before,"},{"lineNumber":3392,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-rotate-back:before,"},{"lineNumber":3393,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-rotate-backward:before,"},{"lineNumber":3394,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-rotate-left:before,"},{"lineNumber":3395,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-undo:before {"},{"lineNumber":3396,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0e2\u0027;"},{"lineNumber":3397,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3398,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hard-drive:before,"},{"lineNumber":3399,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hdd:before {"},{"lineNumber":3400,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a0\u0027;"},{"lineNumber":3401,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3402,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-squint-tears:before,"},{"lineNumber":3403,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-squint-tears:before {"},{"lineNumber":3404,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f586\u0027;"},{"lineNumber":3405,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3406,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dumbbell:before {"},{"lineNumber":3407,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f44b\u0027;"},{"lineNumber":3408,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3409,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list-alt:before,"},{"lineNumber":3410,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rectangle-list:before {"},{"lineNumber":3411,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f022\u0027;"},{"lineNumber":3412,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3413,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tarp-droplet:before {"},{"lineNumber":3414,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e57c\u0027;"},{"lineNumber":3415,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3416,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-medical-circle-check:before {"},{"lineNumber":3417,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e511\u0027;"},{"lineNumber":3418,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3419,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-skiing-nordic:before,"},{"lineNumber":3420,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-skiing-nordic:before {"},{"lineNumber":3421,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7ca\u0027;"},{"lineNumber":3422,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3423,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-plus:before {"},{"lineNumber":3424,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f271\u0027;"},{"lineNumber":3425,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3426,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane-arrival:before {"},{"lineNumber":3427,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5af\u0027;"},{"lineNumber":3428,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3429,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-alt-circle-left:before,"},{"lineNumber":3430,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-left:before {"},{"lineNumber":3431,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f359\u0027;"},{"lineNumber":3432,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3433,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-subway:before,"},{"lineNumber":3434,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-train-subway:before {"},{"lineNumber":3435,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f239\u0027;"},{"lineNumber":3436,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3437,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chart-gantt:before {"},{"lineNumber":3438,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0e4\u0027;"},{"lineNumber":3439,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3440,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-indian-rupee-sign:before,"},{"lineNumber":3441,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-indian-rupee:before,"},{"lineNumber":3442,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-inr:before {"},{"lineNumber":3443,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1bc\u0027;"},{"lineNumber":3444,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3445,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-crop-alt:before,"},{"lineNumber":3446,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-crop-simple:before {"},{"lineNumber":3447,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f565\u0027;"},{"lineNumber":3448,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3449,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill-1:before,"},{"lineNumber":3450,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill-alt:before {"},{"lineNumber":3451,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3d1\u0027;"},{"lineNumber":3452,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3453,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-left-long:before,"},{"lineNumber":3454,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-long-arrow-alt-left:before {"},{"lineNumber":3455,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f30a\u0027;"},{"lineNumber":3456,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3457,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dna:before {"},{"lineNumber":3458,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f471\u0027;"},{"lineNumber":3459,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3460,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-virus-slash:before {"},{"lineNumber":3461,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e075\u0027;"},{"lineNumber":3462,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3463,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-minus:before,"},{"lineNumber":3464,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-subtract:before {"},{"lineNumber":3465,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f068\u0027;"},{"lineNumber":3466,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3467,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chess:before {"},{"lineNumber":3468,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f439\u0027;"},{"lineNumber":3469,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3470,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-left-long:before,"},{"lineNumber":3471,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-long-arrow-left:before {"},{"lineNumber":3472,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f177\u0027;"},{"lineNumber":3473,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3474,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plug-circle-check:before {"},{"lineNumber":3475,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e55c\u0027;"},{"lineNumber":3476,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3477,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-street-view:before {"},{"lineNumber":3478,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f21d\u0027;"},{"lineNumber":3479,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3480,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-franc-sign:before {"},{"lineNumber":3481,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e18f\u0027;"},{"lineNumber":3482,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3483,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-off:before {"},{"lineNumber":3484,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f026\u0027;"},{"lineNumber":3485,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3486,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-american-sign-language-interpreting:before,"},{"lineNumber":3487,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-asl-interpreting:before,"},{"lineNumber":3488,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-american-sign-language-interpreting:before,"},{"lineNumber":3489,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-asl-interpreting:before {"},{"lineNumber":3490,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2a3\u0027;"},{"lineNumber":3491,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3492,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cog:before,"},{"lineNumber":3493,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gear:before {"},{"lineNumber":3494,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f013\u0027;"},{"lineNumber":3495,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3496,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-droplet-slash:before,"},{"lineNumber":3497,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tint-slash:before {"},{"lineNumber":3498,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c7\u0027;"},{"lineNumber":3499,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3500,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mosque:before {"},{"lineNumber":3501,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f678\u0027;"},{"lineNumber":3502,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3503,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mosquito:before {"},{"lineNumber":3504,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e52b\u0027;"},{"lineNumber":3505,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3506,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-star-of-david:before {"},{"lineNumber":3507,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f69a\u0027;"},{"lineNumber":3508,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3509,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-military-rifle:before {"},{"lineNumber":3510,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e54b\u0027;"},{"lineNumber":3511,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3512,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cart-shopping:before,"},{"lineNumber":3513,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shopping-cart:before {"},{"lineNumber":3514,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f07a\u0027;"},{"lineNumber":3515,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3516,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vials:before {"},{"lineNumber":3517,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f493\u0027;"},{"lineNumber":3518,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3519,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plug-circle-plus:before {"},{"lineNumber":3520,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e55f\u0027;"},{"lineNumber":3521,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3522,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-place-of-worship:before {"},{"lineNumber":3523,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f67f\u0027;"},{"lineNumber":3524,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3525,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grip-vertical:before {"},{"lineNumber":3526,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f58e\u0027;"},{"lineNumber":3527,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3528,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-turn-up:before,"},{"lineNumber":3529,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-level-up:before {"},{"lineNumber":3530,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f148\u0027;"},{"lineNumber":3531,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3532,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-u:before {"},{"lineNumber":3533,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\55\u0027;"},{"lineNumber":3534,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3535,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-root-alt:before,"},{"lineNumber":3536,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-root-variable:before {"},{"lineNumber":3537,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f698\u0027;"},{"lineNumber":3538,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3539,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clock-four:before,"},{"lineNumber":3540,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clock:before {"},{"lineNumber":3541,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f017\u0027;"},{"lineNumber":3542,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3543,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-backward-step:before,"},{"lineNumber":3544,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-step-backward:before {"},{"lineNumber":3545,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f048\u0027;"},{"lineNumber":3546,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3547,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pallet:before {"},{"lineNumber":3548,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f482\u0027;"},{"lineNumber":3549,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3550,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-faucet:before {"},{"lineNumber":3551,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e005\u0027;"},{"lineNumber":3552,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3553,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-baseball-bat-ball:before {"},{"lineNumber":3554,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f432\u0027;"},{"lineNumber":3555,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3556,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-s:before {"},{"lineNumber":3557,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\53\u0027;"},{"lineNumber":3558,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3559,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-timeline:before {"},{"lineNumber":3560,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e29c\u0027;"},{"lineNumber":3561,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3562,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-keyboard:before {"},{"lineNumber":3563,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f11c\u0027;"},{"lineNumber":3564,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3565,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caret-down:before {"},{"lineNumber":3566,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0d7\u0027;"},{"lineNumber":3567,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3568,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clinic-medical:before,"},{"lineNumber":3569,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-chimney-medical:before {"},{"lineNumber":3570,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7f2\u0027;"},{"lineNumber":3571,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3572,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-3:before,"},{"lineNumber":3573,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-three-quarters:before,"},{"lineNumber":3574,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-3:before,"},{"lineNumber":3575,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-three-quarters:before {"},{"lineNumber":3576,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2c8\u0027;"},{"lineNumber":3577,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3578,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile-android-alt:before,"},{"lineNumber":3579,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile-screen:before {"},{"lineNumber":3580,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3cf\u0027;"},{"lineNumber":3581,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3582,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane-up:before {"},{"lineNumber":3583,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e22d\u0027;"},{"lineNumber":3584,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3585,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-piggy-bank:before {"},{"lineNumber":3586,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4d3\u0027;"},{"lineNumber":3587,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3588,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-3:before,"},{"lineNumber":3589,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-half:before {"},{"lineNumber":3590,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f242\u0027;"},{"lineNumber":3591,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3592,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mountain-city:before {"},{"lineNumber":3593,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e52e\u0027;"},{"lineNumber":3594,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3595,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-coins:before {"},{"lineNumber":3596,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f51e\u0027;"},{"lineNumber":3597,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3598,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-khanda:before {"},{"lineNumber":3599,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f66d\u0027;"},{"lineNumber":3600,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3601,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sliders-h:before,"},{"lineNumber":3602,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sliders:before {"},{"lineNumber":3603,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1de\u0027;"},{"lineNumber":3604,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3605,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-folder-tree:before {"},{"lineNumber":3606,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f802\u0027;"},{"lineNumber":3607,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3608,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-network-wired:before {"},{"lineNumber":3609,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6ff\u0027;"},{"lineNumber":3610,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3611,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map-pin:before {"},{"lineNumber":3612,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f276\u0027;"},{"lineNumber":3613,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3614,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hamsa:before {"},{"lineNumber":3615,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f665\u0027;"},{"lineNumber":3616,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3617,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cent-sign:before {"},{"lineNumber":3618,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e3f5\u0027;"},{"lineNumber":3619,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3620,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flask:before {"},{"lineNumber":3621,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c3\u0027;"},{"lineNumber":3622,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3623,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-pregnant:before {"},{"lineNumber":3624,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e31e\u0027;"},{"lineNumber":3625,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3626,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wand-sparkles:before {"},{"lineNumber":3627,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f72b\u0027;"},{"lineNumber":3628,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3629,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ellipsis-v:before,"},{"lineNumber":3630,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ellipsis-vertical:before {"},{"lineNumber":3631,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f142\u0027;"},{"lineNumber":3632,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3633,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ticket:before {"},{"lineNumber":3634,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f145\u0027;"},{"lineNumber":3635,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3636,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-power-off:before {"},{"lineNumber":3637,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f011\u0027;"},{"lineNumber":3638,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3639,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-long-arrow-alt-right:before,"},{"lineNumber":3640,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-right-long:before {"},{"lineNumber":3641,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f30b\u0027;"},{"lineNumber":3642,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3643,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flag-usa:before {"},{"lineNumber":3644,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f74d\u0027;"},{"lineNumber":3645,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3646,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laptop-file:before {"},{"lineNumber":3647,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e51d\u0027;"},{"lineNumber":3648,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3649,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-teletype:before,"},{"lineNumber":3650,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tty:before {"},{"lineNumber":3651,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1e4\u0027;"},{"lineNumber":3652,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3653,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-diagram-next:before {"},{"lineNumber":3654,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e476\u0027;"},{"lineNumber":3655,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3656,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-rifle:before {"},{"lineNumber":3657,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e54e\u0027;"},{"lineNumber":3658,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3659,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-medical-circle-exclamation:before {"},{"lineNumber":3660,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e512\u0027;"},{"lineNumber":3661,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3662,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-closed-captioning:before {"},{"lineNumber":3663,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f20a\u0027;"},{"lineNumber":3664,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3665,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hiking:before,"},{"lineNumber":3666,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-hiking:before {"},{"lineNumber":3667,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6ec\u0027;"},{"lineNumber":3668,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3669,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-venus-double:before {"},{"lineNumber":3670,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f226\u0027;"},{"lineNumber":3671,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3672,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-images:before {"},{"lineNumber":3673,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f302\u0027;"},{"lineNumber":3674,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3675,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calculator:before {"},{"lineNumber":3676,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1ec\u0027;"},{"lineNumber":3677,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3678,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-pulling:before {"},{"lineNumber":3679,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e535\u0027;"},{"lineNumber":3680,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3681,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-n:before {"},{"lineNumber":3682,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\4e\u0027;"},{"lineNumber":3683,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3684,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cable-car:before,"},{"lineNumber":3685,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tram:before {"},{"lineNumber":3686,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7da\u0027;"},{"lineNumber":3687,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3688,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-rain:before {"},{"lineNumber":3689,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f73d\u0027;"},{"lineNumber":3690,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3691,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-circle-xmark:before {"},{"lineNumber":3692,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d4\u0027;"},{"lineNumber":3693,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3694,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ship:before {"},{"lineNumber":3695,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f21a\u0027;"},{"lineNumber":3696,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3697,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-down-to-line:before {"},{"lineNumber":3698,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4b8\u0027;"},{"lineNumber":3699,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3700,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-download:before {"},{"lineNumber":3701,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f019\u0027;"},{"lineNumber":3702,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3703,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin:before,"},{"lineNumber":3704,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin:before {"},{"lineNumber":3705,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f580\u0027;"},{"lineNumber":3706,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3707,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-backspace:before,"},{"lineNumber":3708,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-delete-left:before {"},{"lineNumber":3709,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f55a\u0027;"},{"lineNumber":3710,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3711,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eye-dropper-empty:before,"},{"lineNumber":3712,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eye-dropper:before,"},{"lineNumber":3713,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eyedropper:before {"},{"lineNumber":3714,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1fb\u0027;"},{"lineNumber":3715,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3716,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-circle-check:before {"},{"lineNumber":3717,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e5a0\u0027;"},{"lineNumber":3718,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3719,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-forward:before {"},{"lineNumber":3720,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f04e\u0027;"},{"lineNumber":3721,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3722,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile-android:before,"},{"lineNumber":3723,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile-phone:before,"},{"lineNumber":3724,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile:before {"},{"lineNumber":3725,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3ce\u0027;"},{"lineNumber":3726,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3727,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-meh:before,"},{"lineNumber":3728,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-meh:before {"},{"lineNumber":3729,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f11a\u0027;"},{"lineNumber":3730,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3731,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-align-center:before {"},{"lineNumber":3732,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f037\u0027;"},{"lineNumber":3733,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3734,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-dead:before,"},{"lineNumber":3735,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-skull:before {"},{"lineNumber":3736,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6b7\u0027;"},{"lineNumber":3737,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3738,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-drivers-license:before,"},{"lineNumber":3739,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-id-card:before {"},{"lineNumber":3740,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2c2\u0027;"},{"lineNumber":3741,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3742,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dedent:before,"},{"lineNumber":3743,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-outdent:before {"},{"lineNumber":3744,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f03b\u0027;"},{"lineNumber":3745,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3746,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-circle-exclamation:before {"},{"lineNumber":3747,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4fe\u0027;"},{"lineNumber":3748,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3749,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-home-alt:before,"},{"lineNumber":3750,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-home-lg-alt:before,"},{"lineNumber":3751,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-home:before,"},{"lineNumber":3752,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house:before {"},{"lineNumber":3753,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f015\u0027;"},{"lineNumber":3754,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3755,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-week:before {"},{"lineNumber":3756,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f784\u0027;"},{"lineNumber":3757,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3758,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laptop-medical:before {"},{"lineNumber":3759,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f812\u0027;"},{"lineNumber":3760,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3761,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-b:before {"},{"lineNumber":3762,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\42\u0027;"},{"lineNumber":3763,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3764,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-medical:before {"},{"lineNumber":3765,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f477\u0027;"},{"lineNumber":3766,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3767,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice-one:before {"},{"lineNumber":3768,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f525\u0027;"},{"lineNumber":3769,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3770,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-kiwi-bird:before {"},{"lineNumber":3771,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f535\u0027;"},{"lineNumber":3772,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3773,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right-arrow-left:before,"},{"lineNumber":3774,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-exchange:before {"},{"lineNumber":3775,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ec\u0027;"},{"lineNumber":3776,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3777,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-redo-alt:before,"},{"lineNumber":3778,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-forward:before,"},{"lineNumber":3779,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-right:before {"},{"lineNumber":3780,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2f9\u0027;"},{"lineNumber":3781,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3782,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cutlery:before,"},{"lineNumber":3783,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-utensils:before {"},{"lineNumber":3784,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2e7\u0027;"},{"lineNumber":3785,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3786,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-wide-short:before,"},{"lineNumber":3787,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-amount-up:before {"},{"lineNumber":3788,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f161\u0027;"},{"lineNumber":3789,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3790,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mill-sign:before {"},{"lineNumber":3791,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1ed\u0027;"},{"lineNumber":3792,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3793,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bowl-rice:before {"},{"lineNumber":3794,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e2eb\u0027;"},{"lineNumber":3795,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3796,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-skull:before {"},{"lineNumber":3797,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f54c\u0027;"},{"lineNumber":3798,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3799,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-broadcast-tower:before,"},{"lineNumber":3800,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tower-broadcast:before {"},{"lineNumber":3801,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f519\u0027;"},{"lineNumber":3802,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3803,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-pickup:before {"},{"lineNumber":3804,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f63c\u0027;"},{"lineNumber":3805,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3806,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-long-arrow-alt-up:before,"},{"lineNumber":3807,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-up-long:before {"},{"lineNumber":3808,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f30c\u0027;"},{"lineNumber":3809,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3810,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stop:before {"},{"lineNumber":3811,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f04d\u0027;"},{"lineNumber":3812,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3813,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-code-merge:before {"},{"lineNumber":3814,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f387\u0027;"},{"lineNumber":3815,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3816,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-upload:before {"},{"lineNumber":3817,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f093\u0027;"},{"lineNumber":3818,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3819,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hurricane:before {"},{"lineNumber":3820,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f751\u0027;"},{"lineNumber":3821,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3822,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mound:before {"},{"lineNumber":3823,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e52d\u0027;"},{"lineNumber":3824,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3825,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-toilet-portable:before {"},{"lineNumber":3826,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e583\u0027;"},{"lineNumber":3827,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3828,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-compact-disc:before {"},{"lineNumber":3829,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f51f\u0027;"},{"lineNumber":3830,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3831,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-arrow-down:before,"},{"lineNumber":3832,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-download:before {"},{"lineNumber":3833,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f56d\u0027;"},{"lineNumber":3834,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3835,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caravan:before {"},{"lineNumber":3836,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f8ff\u0027;"},{"lineNumber":3837,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3838,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shield-cat:before {"},{"lineNumber":3839,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e572\u0027;"},{"lineNumber":3840,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3841,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bolt:before,"},{"lineNumber":3842,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-zap:before {"},{"lineNumber":3843,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0e7\u0027;"},{"lineNumber":3844,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3845,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-glass-water:before {"},{"lineNumber":3846,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f4\u0027;"},{"lineNumber":3847,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3848,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-oil-well:before {"},{"lineNumber":3849,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e532\u0027;"},{"lineNumber":3850,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3851,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vault:before {"},{"lineNumber":3852,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e2c5\u0027;"},{"lineNumber":3853,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3854,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars:before {"},{"lineNumber":3855,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f222\u0027;"},{"lineNumber":3856,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3857,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-toilet:before {"},{"lineNumber":3858,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7d8\u0027;"},{"lineNumber":3859,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3860,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane-circle-xmark:before {"},{"lineNumber":3861,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e557\u0027;"},{"lineNumber":3862,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3863,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cny:before,"},{"lineNumber":3864,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-jpy:before,"},{"lineNumber":3865,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rmb:before,"},{"lineNumber":3866,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-yen-sign:before,"},{"lineNumber":3867,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-yen:before {"},{"lineNumber":3868,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f157\u0027;"},{"lineNumber":3869,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3870,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rouble:before,"},{"lineNumber":3871,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rub:before,"},{"lineNumber":3872,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ruble-sign:before,"},{"lineNumber":3873,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ruble:before {"},{"lineNumber":3874,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f158\u0027;"},{"lineNumber":3875,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3876,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sun:before {"},{"lineNumber":3877,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f185\u0027;"},{"lineNumber":3878,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3879,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-guitar:before {"},{"lineNumber":3880,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7a6\u0027;"},{"lineNumber":3881,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3882,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-laugh-wink:before,"},{"lineNumber":3883,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laugh-wink:before {"},{"lineNumber":3884,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f59c\u0027;"},{"lineNumber":3885,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3886,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-horse-head:before {"},{"lineNumber":3887,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7ab\u0027;"},{"lineNumber":3888,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3889,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bore-hole:before {"},{"lineNumber":3890,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c3\u0027;"},{"lineNumber":3891,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3892,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-industry:before {"},{"lineNumber":3893,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f275\u0027;"},{"lineNumber":3894,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3895,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-alt-circle-down:before,"},{"lineNumber":3896,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-down:before {"},{"lineNumber":3897,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f358\u0027;"},{"lineNumber":3898,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3899,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-turn-to-dots:before {"},{"lineNumber":3900,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c1\u0027;"},{"lineNumber":3901,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3902,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-florin-sign:before {"},{"lineNumber":3903,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e184\u0027;"},{"lineNumber":3904,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3905,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-short-wide:before,"},{"lineNumber":3906,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-amount-desc:before,"},{"lineNumber":3907,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-amount-down-alt:before {"},{"lineNumber":3908,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f884\u0027;"},{"lineNumber":3909,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3910,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-less-than:before {"},{"lineNumber":3911,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\3c\u0027;"},{"lineNumber":3912,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3913,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angle-down:before {"},{"lineNumber":3914,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f107\u0027;"},{"lineNumber":3915,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3916,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car-tunnel:before {"},{"lineNumber":3917,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4de\u0027;"},{"lineNumber":3918,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3919,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-head-side-cough:before {"},{"lineNumber":3920,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e061\u0027;"},{"lineNumber":3921,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3922,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grip-lines:before {"},{"lineNumber":3923,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7a4\u0027;"},{"lineNumber":3924,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3925,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thumbs-down:before {"},{"lineNumber":3926,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f165\u0027;"},{"lineNumber":3927,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3928,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-lock:before {"},{"lineNumber":3929,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f502\u0027;"},{"lineNumber":3930,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3931,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right-long:before,"},{"lineNumber":3932,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-long-arrow-right:before {"},{"lineNumber":3933,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f178\u0027;"},{"lineNumber":3934,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3935,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-anchor-circle-xmark:before {"},{"lineNumber":3936,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ac\u0027;"},{"lineNumber":3937,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3938,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ellipsis-h:before,"},{"lineNumber":3939,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ellipsis:before {"},{"lineNumber":3940,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f141\u0027;"},{"lineNumber":3941,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3942,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chess-pawn:before {"},{"lineNumber":3943,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f443\u0027;"},{"lineNumber":3944,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3945,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-first-aid:before,"},{"lineNumber":3946,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-kit-medical:before {"},{"lineNumber":3947,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f479\u0027;"},{"lineNumber":3948,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3949,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-through-window:before {"},{"lineNumber":3950,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e5a9\u0027;"},{"lineNumber":3951,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3952,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-toolbox:before {"},{"lineNumber":3953,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f552\u0027;"},{"lineNumber":3954,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3955,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-holding-circle:before {"},{"lineNumber":3956,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4fb\u0027;"},{"lineNumber":3957,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3958,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bug:before {"},{"lineNumber":3959,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f188\u0027;"},{"lineNumber":3960,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3961,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-credit-card-alt:before,"},{"lineNumber":3962,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-credit-card:before {"},{"lineNumber":3963,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f09d\u0027;"},{"lineNumber":3964,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3965,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-automobile:before,"},{"lineNumber":3966,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car:before {"},{"lineNumber":3967,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1b9\u0027;"},{"lineNumber":3968,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3969,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-holding-hand:before {"},{"lineNumber":3970,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f7\u0027;"},{"lineNumber":3971,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3972,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-open-reader:before,"},{"lineNumber":3973,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-reader:before {"},{"lineNumber":3974,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5da\u0027;"},{"lineNumber":3975,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3976,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mountain-sun:before {"},{"lineNumber":3977,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e52f\u0027;"},{"lineNumber":3978,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3979,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-left-right-to-line:before {"},{"lineNumber":3980,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ba\u0027;"},{"lineNumber":3981,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3982,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice-d20:before {"},{"lineNumber":3983,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6cf\u0027;"},{"lineNumber":3984,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3985,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-droplet:before {"},{"lineNumber":3986,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e58c\u0027;"},{"lineNumber":3987,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3988,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-circle-xmark:before {"},{"lineNumber":3989,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e5a1\u0027;"},{"lineNumber":3990,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3991,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-arrow-up:before,"},{"lineNumber":3992,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-up:before {"},{"lineNumber":3993,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e040\u0027;"},{"lineNumber":3994,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3995,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-medal:before {"},{"lineNumber":3996,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5a2\u0027;"},{"lineNumber":3997,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3998,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bed:before {"},{"lineNumber":3999,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f236\u0027;"},{"lineNumber":4000,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4001,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-h-square:before,"},{"lineNumber":4002,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-h:before {"},{"lineNumber":4003,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0fd\u0027;"},{"lineNumber":4004,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4005,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-podcast:before {"},{"lineNumber":4006,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2ce\u0027;"},{"lineNumber":4007,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4008,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-4:before,"},{"lineNumber":4009,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-full:before,"},{"lineNumber":4010,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-4:before,"},{"lineNumber":4011,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-full:before {"},{"lineNumber":4012,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2c7\u0027;"},{"lineNumber":4013,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4014,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bell:before {"},{"lineNumber":4015,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0f3\u0027;"},{"lineNumber":4016,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4017,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-superscript:before {"},{"lineNumber":4018,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f12b\u0027;"},{"lineNumber":4019,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4020,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plug-circle-xmark:before {"},{"lineNumber":4021,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e560\u0027;"},{"lineNumber":4022,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4023,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-star-of-life:before {"},{"lineNumber":4024,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f621\u0027;"},{"lineNumber":4025,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4026,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-phone-slash:before {"},{"lineNumber":4027,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3dd\u0027;"},{"lineNumber":4028,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4029,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-paint-roller:before {"},{"lineNumber":4030,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5aa\u0027;"},{"lineNumber":4031,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4032,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-helping:before,"},{"lineNumber":4033,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-handshake-angle:before {"},{"lineNumber":4034,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4c4\u0027;"},{"lineNumber":4035,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4036,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-location-dot:before,"},{"lineNumber":4037,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map-marker-alt:before {"},{"lineNumber":4038,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3c5\u0027;"},{"lineNumber":4039,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4040,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file:before {"},{"lineNumber":4041,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f15b\u0027;"},{"lineNumber":4042,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4043,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-greater-than:before {"},{"lineNumber":4044,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\3e\u0027;"},{"lineNumber":4045,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4046,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-swimming:before,"},{"lineNumber":4047,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-swimmer:before {"},{"lineNumber":4048,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c4\u0027;"},{"lineNumber":4049,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4050,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down:before {"},{"lineNumber":4051,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f063\u0027;"},{"lineNumber":4052,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4053,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-droplet:before,"},{"lineNumber":4054,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tint:before {"},{"lineNumber":4055,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f043\u0027;"},{"lineNumber":4056,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4057,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eraser:before {"},{"lineNumber":4058,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f12d\u0027;"},{"lineNumber":4059,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4060,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-earth-america:before,"},{"lineNumber":4061,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-earth-americas:before,"},{"lineNumber":4062,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-earth:before,"},{"lineNumber":4063,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-globe-americas:before {"},{"lineNumber":4064,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f57d\u0027;"},{"lineNumber":4065,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4066,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-burst:before {"},{"lineNumber":4067,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e53b\u0027;"},{"lineNumber":4068,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4069,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dove:before {"},{"lineNumber":4070,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4ba\u0027;"},{"lineNumber":4071,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4072,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-0:before,"},{"lineNumber":4073,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-empty:before {"},{"lineNumber":4074,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f244\u0027;"},{"lineNumber":4075,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4076,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-socks:before {"},{"lineNumber":4077,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f696\u0027;"},{"lineNumber":4078,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4079,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-inbox:before {"},{"lineNumber":4080,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f01c\u0027;"},{"lineNumber":4081,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4082,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-section:before {"},{"lineNumber":4083,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e447\u0027;"},{"lineNumber":4084,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4085,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gauge-high:before,"},{"lineNumber":4086,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tachometer-alt-fast:before,"},{"lineNumber":4087,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tachometer-alt:before {"},{"lineNumber":4088,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f625\u0027;"},{"lineNumber":4089,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4090,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-envelope-open-text:before {"},{"lineNumber":4091,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f658\u0027;"},{"lineNumber":4092,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4093,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hospital-alt:before,"},{"lineNumber":4094,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hospital-wide:before,"},{"lineNumber":4095,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hospital:before {"},{"lineNumber":4096,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0f8\u0027;"},{"lineNumber":4097,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4098,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wine-bottle:before {"},{"lineNumber":4099,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f72f\u0027;"},{"lineNumber":4100,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4101,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chess-rook:before {"},{"lineNumber":4102,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f447\u0027;"},{"lineNumber":4103,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4104,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bars-staggered:before,"},{"lineNumber":4105,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-reorder:before,"},{"lineNumber":4106,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stream:before {"},{"lineNumber":4107,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f550\u0027;"},{"lineNumber":4108,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4109,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dharmachakra:before {"},{"lineNumber":4110,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f655\u0027;"},{"lineNumber":4111,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4112,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hotdog:before {"},{"lineNumber":4113,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f80f\u0027;"},{"lineNumber":4114,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4115,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-blind:before,"},{"lineNumber":4116,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-walking-with-cane:before {"},{"lineNumber":4117,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f29d\u0027;"},{"lineNumber":4118,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4119,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-drum:before {"},{"lineNumber":4120,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f569\u0027;"},{"lineNumber":4121,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4122,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ice-cream:before {"},{"lineNumber":4123,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f810\u0027;"},{"lineNumber":4124,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4125,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-circle-bolt:before {"},{"lineNumber":4126,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4fc\u0027;"},{"lineNumber":4127,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4128,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fax:before {"},{"lineNumber":4129,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1ac\u0027;"},{"lineNumber":4130,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4131,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-paragraph:before {"},{"lineNumber":4132,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1dd\u0027;"},{"lineNumber":4133,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4134,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-check-to-slot:before,"},{"lineNumber":4135,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vote-yea:before {"},{"lineNumber":4136,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f772\u0027;"},{"lineNumber":4137,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4138,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-star-half:before {"},{"lineNumber":4139,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f089\u0027;"},{"lineNumber":4140,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4141,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-boxes-alt:before,"},{"lineNumber":4142,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-boxes-stacked:before,"},{"lineNumber":4143,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-boxes:before {"},{"lineNumber":4144,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f468\u0027;"},{"lineNumber":4145,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4146,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chain:before,"},{"lineNumber":4147,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-link:before {"},{"lineNumber":4148,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c1\u0027;"},{"lineNumber":4149,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4150,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-assistive-listening-systems:before,"},{"lineNumber":4151,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ear-listen:before {"},{"lineNumber":4152,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2a2\u0027;"},{"lineNumber":4153,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4154,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tree-city:before {"},{"lineNumber":4155,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e587\u0027;"},{"lineNumber":4156,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4157,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-play:before {"},{"lineNumber":4158,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f04b\u0027;"},{"lineNumber":4159,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4160,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-font:before {"},{"lineNumber":4161,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f031\u0027;"},{"lineNumber":4162,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4163,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rupiah-sign:before {"},{"lineNumber":4164,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e23d\u0027;"},{"lineNumber":4165,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4166,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magnifying-glass:before,"},{"lineNumber":4167,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-search:before {"},{"lineNumber":4168,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f002\u0027;"},{"lineNumber":4169,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4170,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ping-pong-paddle-ball:before,"},{"lineNumber":4171,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-table-tennis-paddle-ball:before,"},{"lineNumber":4172,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-table-tennis:before {"},{"lineNumber":4173,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f45d\u0027;"},{"lineNumber":4174,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4175,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-diagnoses:before,"},{"lineNumber":4176,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-dots-from-line:before {"},{"lineNumber":4177,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f470\u0027;"},{"lineNumber":4178,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4179,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trash-can-arrow-up:before,"},{"lineNumber":4180,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trash-restore-alt:before {"},{"lineNumber":4181,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f82a\u0027;"},{"lineNumber":4182,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4183,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-naira-sign:before {"},{"lineNumber":4184,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1f6\u0027;"},{"lineNumber":4185,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4186,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cart-arrow-down:before {"},{"lineNumber":4187,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f218\u0027;"},{"lineNumber":4188,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4189,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-walkie-talkie:before {"},{"lineNumber":4190,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f8ef\u0027;"},{"lineNumber":4191,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4192,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-edit:before,"},{"lineNumber":4193,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-pen:before {"},{"lineNumber":4194,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f31c\u0027;"},{"lineNumber":4195,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4196,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-receipt:before {"},{"lineNumber":4197,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f543\u0027;"},{"lineNumber":4198,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4199,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pen-square:before,"},{"lineNumber":4200,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pencil-square:before,"},{"lineNumber":4201,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-pen:before {"},{"lineNumber":4202,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f14b\u0027;"},{"lineNumber":4203,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4204,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-suitcase-rolling:before {"},{"lineNumber":4205,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c1\u0027;"},{"lineNumber":4206,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4207,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-circle-exclamation:before {"},{"lineNumber":4208,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e53f\u0027;"},{"lineNumber":4209,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4210,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chevron-down:before {"},{"lineNumber":4211,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f078\u0027;"},{"lineNumber":4212,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4213,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-5:before,"},{"lineNumber":4214,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-full:before,"},{"lineNumber":4215,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery:before {"},{"lineNumber":4216,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f240\u0027;"},{"lineNumber":4217,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4218,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-skull-crossbones:before {"},{"lineNumber":4219,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f714\u0027;"},{"lineNumber":4220,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4221,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-code-compare:before {"},{"lineNumber":4222,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e13a\u0027;"},{"lineNumber":4223,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4224,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list-dots:before,"},{"lineNumber":4225,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list-ul:before {"},{"lineNumber":4226,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ca\u0027;"},{"lineNumber":4227,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4228,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-school-lock:before {"},{"lineNumber":4229,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e56f\u0027;"},{"lineNumber":4230,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4231,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tower-cell:before {"},{"lineNumber":4232,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e585\u0027;"},{"lineNumber":4233,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4234,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-down-long:before,"},{"lineNumber":4235,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-long-arrow-alt-down:before {"},{"lineNumber":4236,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f309\u0027;"},{"lineNumber":4237,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4238,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ranking-star:before {"},{"lineNumber":4239,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e561\u0027;"},{"lineNumber":4240,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4241,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chess-king:before {"},{"lineNumber":4242,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f43f\u0027;"},{"lineNumber":4243,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4244,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-harassing:before {"},{"lineNumber":4245,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e549\u0027;"},{"lineNumber":4246,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4247,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-brazilian-real-sign:before {"},{"lineNumber":4248,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e46c\u0027;"},{"lineNumber":4249,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4250,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-landmark-alt:before,"},{"lineNumber":4251,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-landmark-dome:before {"},{"lineNumber":4252,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f752\u0027;"},{"lineNumber":4253,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4254,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up:before {"},{"lineNumber":4255,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f062\u0027;"},{"lineNumber":4256,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4257,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-television:before,"},{"lineNumber":4258,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tv-alt:before,"},{"lineNumber":4259,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tv:before {"},{"lineNumber":4260,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f26c\u0027;"},{"lineNumber":4261,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4262,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shrimp:before {"},{"lineNumber":4263,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e448\u0027;"},{"lineNumber":4264,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4265,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list-check:before,"},{"lineNumber":4266,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tasks:before {"},{"lineNumber":4267,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ae\u0027;"},{"lineNumber":4268,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4269,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-jug-detergent:before {"},{"lineNumber":4270,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e519\u0027;"},{"lineNumber":4271,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4272,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-user:before,"},{"lineNumber":4273,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-circle:before {"},{"lineNumber":4274,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2bd\u0027;"},{"lineNumber":4275,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4276,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-shield:before {"},{"lineNumber":4277,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f505\u0027;"},{"lineNumber":4278,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4279,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wind:before {"},{"lineNumber":4280,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f72e\u0027;"},{"lineNumber":4281,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4282,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car-burst:before,"},{"lineNumber":4283,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car-crash:before {"},{"lineNumber":4284,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5e1\u0027;"},{"lineNumber":4285,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4286,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-y:before {"},{"lineNumber":4287,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\59\u0027;"},{"lineNumber":4288,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4289,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-snowboarding:before,"},{"lineNumber":4290,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-snowboarding:before {"},{"lineNumber":4291,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7ce\u0027;"},{"lineNumber":4292,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4293,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shipping-fast:before,"},{"lineNumber":4294,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-fast:before {"},{"lineNumber":4295,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f48b\u0027;"},{"lineNumber":4296,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4297,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fish:before {"},{"lineNumber":4298,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f578\u0027;"},{"lineNumber":4299,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4300,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-graduate:before {"},{"lineNumber":4301,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f501\u0027;"},{"lineNumber":4302,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4303,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-adjust:before,"},{"lineNumber":4304,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-half-stroke:before {"},{"lineNumber":4305,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f042\u0027;"},{"lineNumber":4306,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4307,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clapperboard:before {"},{"lineNumber":4308,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e131\u0027;"},{"lineNumber":4309,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4310,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-radiation:before,"},{"lineNumber":4311,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-radiation-alt:before {"},{"lineNumber":4312,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7ba\u0027;"},{"lineNumber":4313,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4314,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-baseball-ball:before,"},{"lineNumber":4315,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-baseball:before {"},{"lineNumber":4316,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f433\u0027;"},{"lineNumber":4317,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4318,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-jet-fighter-up:before {"},{"lineNumber":4319,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e518\u0027;"},{"lineNumber":4320,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4321,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-diagram-project:before,"},{"lineNumber":4322,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-project-diagram:before {"},{"lineNumber":4323,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f542\u0027;"},{"lineNumber":4324,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4325,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-copy:before {"},{"lineNumber":4326,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c5\u0027;"},{"lineNumber":4327,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4328,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-mute:before,"},{"lineNumber":4329,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-times:before,"},{"lineNumber":4330,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-xmark:before {"},{"lineNumber":4331,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6a9\u0027;"},{"lineNumber":4332,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4333,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-sparkles:before {"},{"lineNumber":4334,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e05d\u0027;"},{"lineNumber":4335,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4336,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grip-horizontal:before,"},{"lineNumber":4337,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grip:before {"},{"lineNumber":4338,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f58d\u0027;"},{"lineNumber":4339,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4340,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-share-from-square:before,"},{"lineNumber":4341,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-share-square:before {"},{"lineNumber":4342,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f14d\u0027;"},{"lineNumber":4343,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4344,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-child-combatant:before,"},{"lineNumber":4345,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-child-rifle:before {"},{"lineNumber":4346,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e0\u0027;"},{"lineNumber":4347,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4348,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gun:before {"},{"lineNumber":4349,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e19b\u0027;"},{"lineNumber":4350,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4351,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-phone-square:before,"},{"lineNumber":4352,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-phone:before {"},{"lineNumber":4353,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f098\u0027;"},{"lineNumber":4354,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4355,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-add:before,"},{"lineNumber":4356,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plus:before {"},{"lineNumber":4357,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\2b\u0027;"},{"lineNumber":4358,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4359,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-expand:before {"},{"lineNumber":4360,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f065\u0027;"},{"lineNumber":4361,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4362,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-computer:before {"},{"lineNumber":4363,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e5\u0027;"},{"lineNumber":4364,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4365,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-close:before,"},{"lineNumber":4366,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-multiply:before,"},{"lineNumber":4367,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-remove:before,"},{"lineNumber":4368,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-times:before,"},{"lineNumber":4369,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-xmark:before {"},{"lineNumber":4370,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f00d\u0027;"},{"lineNumber":4371,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4372,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-up-down-left-right:before,"},{"lineNumber":4373,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows:before {"},{"lineNumber":4374,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f047\u0027;"},{"lineNumber":4375,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4376,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chalkboard-teacher:before,"},{"lineNumber":4377,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chalkboard-user:before {"},{"lineNumber":4378,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f51c\u0027;"},{"lineNumber":4379,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4380,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-peso-sign:before {"},{"lineNumber":4381,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e222\u0027;"},{"lineNumber":4382,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4383,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-shield:before {"},{"lineNumber":4384,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d8\u0027;"},{"lineNumber":4385,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4386,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-baby:before {"},{"lineNumber":4387,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f77c\u0027;"},{"lineNumber":4388,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4389,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users-line:before {"},{"lineNumber":4390,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e592\u0027;"},{"lineNumber":4391,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4392,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-quote-left-alt:before,"},{"lineNumber":4393,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-quote-left:before {"},{"lineNumber":4394,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f10d\u0027;"},{"lineNumber":4395,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4396,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tractor:before {"},{"lineNumber":4397,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f722\u0027;"},{"lineNumber":4398,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4399,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trash-arrow-up:before,"},{"lineNumber":4400,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trash-restore:before {"},{"lineNumber":4401,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f829\u0027;"},{"lineNumber":4402,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4403,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-up-lock:before {"},{"lineNumber":4404,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4b0\u0027;"},{"lineNumber":4405,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4406,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lines-leaning:before {"},{"lineNumber":4407,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e51e\u0027;"},{"lineNumber":4408,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4409,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ruler-combined:before {"},{"lineNumber":4410,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f546\u0027;"},{"lineNumber":4411,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4412,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-copyright:before {"},{"lineNumber":4413,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1f9\u0027;"},{"lineNumber":4414,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4415,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-equals:before {"},{"lineNumber":4416,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\3d\u0027;"},{"lineNumber":4417,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4418,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-blender:before {"},{"lineNumber":4419,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f517\u0027;"},{"lineNumber":4420,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4421,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-teeth:before {"},{"lineNumber":4422,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f62e\u0027;"},{"lineNumber":4423,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4424,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ils:before,"},{"lineNumber":4425,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shekel-sign:before,"},{"lineNumber":4426,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shekel:before,"},{"lineNumber":4427,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sheqel-sign:before,"},{"lineNumber":4428,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sheqel:before {"},{"lineNumber":4429,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f20b\u0027;"},{"lineNumber":4430,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4431,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map:before {"},{"lineNumber":4432,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f279\u0027;"},{"lineNumber":4433,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4434,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rocket:before {"},{"lineNumber":4435,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f135\u0027;"},{"lineNumber":4436,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4437,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-photo-film:before,"},{"lineNumber":4438,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-photo-video:before {"},{"lineNumber":4439,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f87c\u0027;"},{"lineNumber":4440,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4441,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-folder-minus:before {"},{"lineNumber":4442,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f65d\u0027;"},{"lineNumber":4443,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4444,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-store:before {"},{"lineNumber":4445,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f54e\u0027;"},{"lineNumber":4446,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4447,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-trend-up:before {"},{"lineNumber":4448,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e098\u0027;"},{"lineNumber":4449,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4450,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plug-circle-minus:before {"},{"lineNumber":4451,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e55e\u0027;"},{"lineNumber":4452,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4453,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sign-hanging:before,"},{"lineNumber":4454,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sign:before {"},{"lineNumber":4455,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4d9\u0027;"},{"lineNumber":4456,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4457,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bezier-curve:before {"},{"lineNumber":4458,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f55b\u0027;"},{"lineNumber":4459,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4460,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bell-slash:before {"},{"lineNumber":4461,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1f6\u0027;"},{"lineNumber":4462,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4463,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tablet-android:before,"},{"lineNumber":4464,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tablet:before {"},{"lineNumber":4465,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3fb\u0027;"},{"lineNumber":4466,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4467,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-school-flag:before {"},{"lineNumber":4468,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e56e\u0027;"},{"lineNumber":4469,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4470,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fill:before {"},{"lineNumber":4471,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f575\u0027;"},{"lineNumber":4472,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4473,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angle-up:before {"},{"lineNumber":4474,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f106\u0027;"},{"lineNumber":4475,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4476,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-drumstick-bite:before {"},{"lineNumber":4477,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6d7\u0027;"},{"lineNumber":4478,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4479,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-holly-berry:before {"},{"lineNumber":4480,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7aa\u0027;"},{"lineNumber":4481,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4482,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chevron-left:before {"},{"lineNumber":4483,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f053\u0027;"},{"lineNumber":4484,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4485,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bacteria:before {"},{"lineNumber":4486,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e059\u0027;"},{"lineNumber":4487,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4488,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-lizard:before {"},{"lineNumber":4489,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f258\u0027;"},{"lineNumber":4490,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4491,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-notdef:before {"},{"lineNumber":4492,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1fe\u0027;"},{"lineNumber":4493,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4494,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-disease:before {"},{"lineNumber":4495,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7fa\u0027;"},{"lineNumber":4496,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4497,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-briefcase-medical:before {"},{"lineNumber":4498,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f469\u0027;"},{"lineNumber":4499,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4500,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-genderless:before {"},{"lineNumber":4501,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f22d\u0027;"},{"lineNumber":4502,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4503,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chevron-right:before {"},{"lineNumber":4504,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f054\u0027;"},{"lineNumber":4505,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4506,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-retweet:before {"},{"lineNumber":4507,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f079\u0027;"},{"lineNumber":4508,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4509,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car-alt:before,"},{"lineNumber":4510,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car-rear:before {"},{"lineNumber":4511,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5de\u0027;"},{"lineNumber":4512,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4513,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pump-soap:before {"},{"lineNumber":4514,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e06b\u0027;"},{"lineNumber":4515,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4516,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-video-slash:before {"},{"lineNumber":4517,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4e2\u0027;"},{"lineNumber":4518,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4519,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-2:before,"},{"lineNumber":4520,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-quarter:before {"},{"lineNumber":4521,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f243\u0027;"},{"lineNumber":4522,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4523,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-radio:before {"},{"lineNumber":4524,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f8d7\u0027;"},{"lineNumber":4525,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4526,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-baby-carriage:before,"},{"lineNumber":4527,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-carriage-baby:before {"},{"lineNumber":4528,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f77d\u0027;"},{"lineNumber":4529,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4530,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-traffic-light:before {"},{"lineNumber":4531,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f637\u0027;"},{"lineNumber":4532,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4533,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer:before {"},{"lineNumber":4534,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f491\u0027;"},{"lineNumber":4535,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4536,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vr-cardboard:before {"},{"lineNumber":4537,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f729\u0027;"},{"lineNumber":4538,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4539,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-middle-finger:before {"},{"lineNumber":4540,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f806\u0027;"},{"lineNumber":4541,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4542,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-percent:before,"},{"lineNumber":4543,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-percentage:before {"},{"lineNumber":4544,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\25\u0027;"},{"lineNumber":4545,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4546,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-moving:before {"},{"lineNumber":4547,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4df\u0027;"},{"lineNumber":4548,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4549,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-glass-water-droplet:before {"},{"lineNumber":4550,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f5\u0027;"},{"lineNumber":4551,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4552,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-display:before {"},{"lineNumber":4553,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e163\u0027;"},{"lineNumber":4554,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4555,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-smile:before,"},{"lineNumber":4556,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-smile:before {"},{"lineNumber":4557,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f118\u0027;"},{"lineNumber":4558,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4559,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thumb-tack:before,"},{"lineNumber":4560,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thumbtack:before {"},{"lineNumber":4561,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f08d\u0027;"},{"lineNumber":4562,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4563,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trophy:before {"},{"lineNumber":4564,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f091\u0027;"},{"lineNumber":4565,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4566,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-praying:before,"},{"lineNumber":4567,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pray:before {"},{"lineNumber":4568,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f683\u0027;"},{"lineNumber":4569,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4570,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hammer:before {"},{"lineNumber":4571,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6e3\u0027;"},{"lineNumber":4572,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4573,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-peace:before {"},{"lineNumber":4574,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f25b\u0027;"},{"lineNumber":4575,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4576,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate:before,"},{"lineNumber":4577,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sync-alt:before {"},{"lineNumber":4578,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2f1\u0027;"},{"lineNumber":4579,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4580,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spinner:before {"},{"lineNumber":4581,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f110\u0027;"},{"lineNumber":4582,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4583,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-robot:before {"},{"lineNumber":4584,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f544\u0027;"},{"lineNumber":4585,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4586,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-peace:before {"},{"lineNumber":4587,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f67c\u0027;"},{"lineNumber":4588,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4589,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cogs:before,"},{"lineNumber":4590,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gears:before {"},{"lineNumber":4591,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f085\u0027;"},{"lineNumber":4592,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4593,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-warehouse:before {"},{"lineNumber":4594,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f494\u0027;"},{"lineNumber":4595,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4596,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-right-dots:before {"},{"lineNumber":4597,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4b7\u0027;"},{"lineNumber":4598,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4599,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-splotch:before {"},{"lineNumber":4600,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5bc\u0027;"},{"lineNumber":4601,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4602,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-hearts:before,"},{"lineNumber":4603,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-hearts:before {"},{"lineNumber":4604,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f584\u0027;"},{"lineNumber":4605,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4606,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice-four:before {"},{"lineNumber":4607,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f524\u0027;"},{"lineNumber":4608,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4609,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sim-card:before {"},{"lineNumber":4610,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7c4\u0027;"},{"lineNumber":4611,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4612,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-transgender-alt:before,"},{"lineNumber":4613,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-transgender:before {"},{"lineNumber":4614,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f225\u0027;"},{"lineNumber":4615,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4616,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mercury:before {"},{"lineNumber":4617,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f223\u0027;"},{"lineNumber":4618,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4619,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-turn-down:before,"},{"lineNumber":4620,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-level-down:before {"},{"lineNumber":4621,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f149\u0027;"},{"lineNumber":4622,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4623,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-falling-burst:before {"},{"lineNumber":4624,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e547\u0027;"},{"lineNumber":4625,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4626,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-award:before {"},{"lineNumber":4627,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f559\u0027;"},{"lineNumber":4628,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4629,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ticket-alt:before,"},{"lineNumber":4630,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ticket-simple:before {"},{"lineNumber":4631,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3ff\u0027;"},{"lineNumber":4632,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4633,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building:before {"},{"lineNumber":4634,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1ad\u0027;"},{"lineNumber":4635,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4636,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angle-double-left:before,"},{"lineNumber":4637,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angles-left:before {"},{"lineNumber":4638,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f100\u0027;"},{"lineNumber":4639,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4640,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-qrcode:before {"},{"lineNumber":4641,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f029\u0027;"},{"lineNumber":4642,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4643,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clock-rotate-left:before,"},{"lineNumber":4644,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-history:before {"},{"lineNumber":4645,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1da\u0027;"},{"lineNumber":4646,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4647,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-beam-sweat:before,"},{"lineNumber":4648,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-beam-sweat:before {"},{"lineNumber":4649,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f583\u0027;"},{"lineNumber":4650,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4651,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right-from-file:before,"},{"lineNumber":4652,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-export:before {"},{"lineNumber":4653,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f56e\u0027;"},{"lineNumber":4654,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4655,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shield-blank:before,"},{"lineNumber":4656,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shield:before {"},{"lineNumber":4657,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f132\u0027;"},{"lineNumber":4658,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4659,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-short-wide:before,"},{"lineNumber":4660,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-amount-up-alt:before {"},{"lineNumber":4661,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f885\u0027;"},{"lineNumber":4662,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4663,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-medical:before {"},{"lineNumber":4664,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e3b2\u0027;"},{"lineNumber":4665,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4666,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-golf-ball-tee:before,"},{"lineNumber":4667,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-golf-ball:before {"},{"lineNumber":4668,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f450\u0027;"},{"lineNumber":4669,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4670,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chevron-circle-left:before,"},{"lineNumber":4671,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-chevron-left:before {"},{"lineNumber":4672,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f137\u0027;"},{"lineNumber":4673,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4674,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-chimney-window:before {"},{"lineNumber":4675,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e00d\u0027;"},{"lineNumber":4676,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4677,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pen-nib:before {"},{"lineNumber":4678,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5ad\u0027;"},{"lineNumber":4679,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4680,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tent-arrow-turn-left:before {"},{"lineNumber":4681,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e580\u0027;"},{"lineNumber":4682,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4683,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tents:before {"},{"lineNumber":4684,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e582\u0027;"},{"lineNumber":4685,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4686,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magic:before,"},{"lineNumber":4687,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wand-magic:before {"},{"lineNumber":4688,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0d0\u0027;"},{"lineNumber":4689,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4690,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dog:before {"},{"lineNumber":4691,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6d3\u0027;"},{"lineNumber":4692,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4693,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-carrot:before {"},{"lineNumber":4694,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f787\u0027;"},{"lineNumber":4695,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4696,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-moon:before {"},{"lineNumber":4697,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f186\u0027;"},{"lineNumber":4698,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4699,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wine-glass-alt:before,"},{"lineNumber":4700,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wine-glass-empty:before {"},{"lineNumber":4701,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5ce\u0027;"},{"lineNumber":4702,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4703,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cheese:before {"},{"lineNumber":4704,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7ef\u0027;"},{"lineNumber":4705,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4706,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-yin-yang:before {"},{"lineNumber":4707,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6ad\u0027;"},{"lineNumber":4708,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4709,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-music:before {"},{"lineNumber":4710,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f001\u0027;"},{"lineNumber":4711,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4712,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-code-commit:before {"},{"lineNumber":4713,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f386\u0027;"},{"lineNumber":4714,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4715,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-low:before {"},{"lineNumber":4716,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f76b\u0027;"},{"lineNumber":4717,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4718,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-biking:before,"},{"lineNumber":4719,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-biking:before {"},{"lineNumber":4720,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f84a\u0027;"},{"lineNumber":4721,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4722,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-broom:before {"},{"lineNumber":4723,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f51a\u0027;"},{"lineNumber":4724,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4725,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shield-heart:before {"},{"lineNumber":4726,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e574\u0027;"},{"lineNumber":4727,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4728,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gopuram:before {"},{"lineNumber":4729,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f664\u0027;"},{"lineNumber":4730,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4731,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-earth-oceania:before,"},{"lineNumber":4732,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-globe-oceania:before {"},{"lineNumber":4733,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e47b\u0027;"},{"lineNumber":4734,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4735,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-xmark:before,"},{"lineNumber":4736,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-times-square:before,"},{"lineNumber":4737,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-xmark-square:before {"},{"lineNumber":4738,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2d3\u0027;"},{"lineNumber":4739,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4740,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hashtag:before {"},{"lineNumber":4741,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\23\u0027;"},{"lineNumber":4742,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4743,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-expand-alt:before,"},{"lineNumber":4744,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-up-right-and-down-left-from-center:before {"},{"lineNumber":4745,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f424\u0027;"},{"lineNumber":4746,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4747,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-oil-can:before {"},{"lineNumber":4748,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f613\u0027;"},{"lineNumber":4749,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4750,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-t:before {"},{"lineNumber":4751,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\54\u0027;"},{"lineNumber":4752,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4753,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hippo:before {"},{"lineNumber":4754,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6ed\u0027;"},{"lineNumber":4755,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4756,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chart-column:before {"},{"lineNumber":4757,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0e3\u0027;"},{"lineNumber":4758,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4759,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-infinity:before {"},{"lineNumber":4760,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f534\u0027;"},{"lineNumber":4761,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4762,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vial-circle-check:before {"},{"lineNumber":4763,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e596\u0027;"},{"lineNumber":4764,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4765,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-arrow-down-to-line:before {"},{"lineNumber":4766,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e538\u0027;"},{"lineNumber":4767,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4768,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-voicemail:before {"},{"lineNumber":4769,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f897\u0027;"},{"lineNumber":4770,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4771,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fan:before {"},{"lineNumber":4772,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f863\u0027;"},{"lineNumber":4773,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4774,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-walking-luggage:before {"},{"lineNumber":4775,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e554\u0027;"},{"lineNumber":4776,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4777,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-alt-v:before,"},{"lineNumber":4778,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-up-down:before {"},{"lineNumber":4779,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f338\u0027;"},{"lineNumber":4780,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4781,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-moon-rain:before {"},{"lineNumber":4782,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f73c\u0027;"},{"lineNumber":4783,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4784,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar:before {"},{"lineNumber":4785,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f133\u0027;"},{"lineNumber":4786,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4787,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trailer:before {"},{"lineNumber":4788,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e041\u0027;"},{"lineNumber":4789,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4790,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bahai:before,"},{"lineNumber":4791,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-haykal:before {"},{"lineNumber":4792,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f666\u0027;"},{"lineNumber":4793,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4794,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sd-card:before {"},{"lineNumber":4795,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7c2\u0027;"},{"lineNumber":4796,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4797,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dragon:before {"},{"lineNumber":4798,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6d5\u0027;"},{"lineNumber":4799,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4800,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shoe-prints:before {"},{"lineNumber":4801,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f54b\u0027;"},{"lineNumber":4802,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4803,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-plus:before,"},{"lineNumber":4804,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plus-circle:before {"},{"lineNumber":4805,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f055\u0027;"},{"lineNumber":4806,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4807,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-tongue-wink:before,"},{"lineNumber":4808,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-tongue-wink:before {"},{"lineNumber":4809,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f58b\u0027;"},{"lineNumber":4810,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4811,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-holding:before {"},{"lineNumber":4812,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4bd\u0027;"},{"lineNumber":4813,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4814,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plug-circle-exclamation:before {"},{"lineNumber":4815,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e55d\u0027;"},{"lineNumber":4816,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4817,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chain-broken:before,"},{"lineNumber":4818,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chain-slash:before,"},{"lineNumber":4819,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-link-slash:before,"},{"lineNumber":4820,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-unlink:before {"},{"lineNumber":4821,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f127\u0027;"},{"lineNumber":4822,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4823,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clone:before {"},{"lineNumber":4824,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f24d\u0027;"},{"lineNumber":4825,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4826,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-walking-arrow-loop-left:before {"},{"lineNumber":4827,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e551\u0027;"},{"lineNumber":4828,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4829,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-z-a:before,"},{"lineNumber":4830,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-alpha-up-alt:before {"},{"lineNumber":4831,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f882\u0027;"},{"lineNumber":4832,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4833,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fire-alt:before,"},{"lineNumber":4834,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fire-flame-curved:before {"},{"lineNumber":4835,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7e4\u0027;"},{"lineNumber":4836,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4837,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tornado:before {"},{"lineNumber":4838,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f76f\u0027;"},{"lineNumber":4839,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4840,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-circle-plus:before {"},{"lineNumber":4841,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e494\u0027;"},{"lineNumber":4842,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4843,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-quran:before,"},{"lineNumber":4844,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-quran:before {"},{"lineNumber":4845,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f687\u0027;"},{"lineNumber":4846,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4847,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-anchor:before {"},{"lineNumber":4848,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f13d\u0027;"},{"lineNumber":4849,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4850,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-border-all:before {"},{"lineNumber":4851,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f84c\u0027;"},{"lineNumber":4852,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4853,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angry:before,"},{"lineNumber":4854,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-angry:before {"},{"lineNumber":4855,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f556\u0027;"},{"lineNumber":4856,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4857,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cookie-bite:before {"},{"lineNumber":4858,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f564\u0027;"},{"lineNumber":4859,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4860,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-trend-down:before {"},{"lineNumber":4861,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e097\u0027;"},{"lineNumber":4862,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4863,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-feed:before,"},{"lineNumber":4864,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rss:before {"},{"lineNumber":4865,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f09e\u0027;"},{"lineNumber":4866,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4867,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-draw-polygon:before {"},{"lineNumber":4868,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5ee\u0027;"},{"lineNumber":4869,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4870,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-balance-scale:before,"},{"lineNumber":4871,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-scale-balanced:before {"},{"lineNumber":4872,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f24e\u0027;"},{"lineNumber":4873,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4874,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gauge-simple-high:before,"},{"lineNumber":4875,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tachometer-fast:before,"},{"lineNumber":4876,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tachometer:before {"},{"lineNumber":4877,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f62a\u0027;"},{"lineNumber":4878,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4879,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shower:before {"},{"lineNumber":4880,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2cc\u0027;"},{"lineNumber":4881,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4882,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-desktop-alt:before,"},{"lineNumber":4883,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-desktop:before {"},{"lineNumber":4884,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f390\u0027;"},{"lineNumber":4885,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4886,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-m:before {"},{"lineNumber":4887,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\4d\u0027;"},{"lineNumber":4888,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4889,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-table-list:before,"},{"lineNumber":4890,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-th-list:before {"},{"lineNumber":4891,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f00b\u0027;"},{"lineNumber":4892,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4893,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comment-sms:before,"},{"lineNumber":4894,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sms:before {"},{"lineNumber":4895,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7cd\u0027;"},{"lineNumber":4896,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4897,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book:before {"},{"lineNumber":4898,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f02d\u0027;"},{"lineNumber":4899,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4900,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-plus:before {"},{"lineNumber":4901,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f234\u0027;"},{"lineNumber":4902,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4903,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-check:before {"},{"lineNumber":4904,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f00c\u0027;"},{"lineNumber":4905,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4906,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-4:before,"},{"lineNumber":4907,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-three-quarters:before {"},{"lineNumber":4908,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f241\u0027;"},{"lineNumber":4909,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4910,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-circle-check:before {"},{"lineNumber":4911,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e509\u0027;"},{"lineNumber":4912,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4913,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angle-left:before {"},{"lineNumber":4914,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f104\u0027;"},{"lineNumber":4915,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4916,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-diagram-successor:before {"},{"lineNumber":4917,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e47a\u0027;"},{"lineNumber":4918,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4919,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-arrow-right:before {"},{"lineNumber":4920,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e58b\u0027;"},{"lineNumber":4921,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4922,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-split-up-and-left:before {"},{"lineNumber":4923,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4bc\u0027;"},{"lineNumber":4924,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4925,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fist-raised:before,"},{"lineNumber":4926,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-fist:before {"},{"lineNumber":4927,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6de\u0027;"},{"lineNumber":4928,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4929,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-moon:before {"},{"lineNumber":4930,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6c3\u0027;"},{"lineNumber":4931,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4932,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-briefcase:before {"},{"lineNumber":4933,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0b1\u0027;"},{"lineNumber":4934,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4935,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-falling:before {"},{"lineNumber":4936,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e546\u0027;"},{"lineNumber":4937,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4938,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-image-portrait:before,"},{"lineNumber":4939,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-portrait:before {"},{"lineNumber":4940,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3e0\u0027;"},{"lineNumber":4941,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4942,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-tag:before {"},{"lineNumber":4943,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f507\u0027;"},{"lineNumber":4944,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4945,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rug:before {"},{"lineNumber":4946,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e569\u0027;"},{"lineNumber":4947,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4948,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-earth-europe:before,"},{"lineNumber":4949,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-globe-europe:before {"},{"lineNumber":4950,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7a2\u0027;"},{"lineNumber":4951,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4952,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cart-flatbed-suitcase:before,"},{"lineNumber":4953,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-luggage-cart:before {"},{"lineNumber":4954,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f59d\u0027;"},{"lineNumber":4955,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4956,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rectangle-times:before,"},{"lineNumber":4957,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rectangle-xmark:before,"},{"lineNumber":4958,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-times-rectangle:before,"},{"lineNumber":4959,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-window-close:before {"},{"lineNumber":4960,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f410\u0027;"},{"lineNumber":4961,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4962,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-baht-sign:before {"},{"lineNumber":4963,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0ac\u0027;"},{"lineNumber":4964,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4965,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-open:before {"},{"lineNumber":4966,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f518\u0027;"},{"lineNumber":4967,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4968,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-journal-whills:before,"},{"lineNumber":4969,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-journal-whills:before {"},{"lineNumber":4970,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f66a\u0027;"},{"lineNumber":4971,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4972,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-handcuffs:before {"},{"lineNumber":4973,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f8\u0027;"},{"lineNumber":4974,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4975,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-exclamation-triangle:before,"},{"lineNumber":4976,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-triangle-exclamation:before,"},{"lineNumber":4977,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-warning:before {"},{"lineNumber":4978,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f071\u0027;"},{"lineNumber":4979,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4980,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-database:before {"},{"lineNumber":4981,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c0\u0027;"},{"lineNumber":4982,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4983,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-turn-right:before,"},{"lineNumber":4984,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mail-forward:before,"},{"lineNumber":4985,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-share:before {"},{"lineNumber":4986,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f064\u0027;"},{"lineNumber":4987,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4988,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bottle-droplet:before {"},{"lineNumber":4989,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c4\u0027;"},{"lineNumber":4990,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4991,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mask-face:before {"},{"lineNumber":4992,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1d7\u0027;"},{"lineNumber":4993,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4994,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hill-rockslide:before {"},{"lineNumber":4995,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e508\u0027;"},{"lineNumber":4996,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4997,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-exchange-alt:before,"},{"lineNumber":4998,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-right-left:before {"},{"lineNumber":4999,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f362\u0027;"},{"lineNumber":5000,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5001,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-paper-plane:before {"},{"lineNumber":5002,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1d8\u0027;"},{"lineNumber":5003,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5004,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-road-circle-exclamation:before {"},{"lineNumber":5005,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e565\u0027;"},{"lineNumber":5006,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5007,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dungeon:before {"},{"lineNumber":5008,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6d9\u0027;"},{"lineNumber":5009,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5010,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-align-right:before {"},{"lineNumber":5011,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f038\u0027;"},{"lineNumber":5012,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5013,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill-1-wave:before,"},{"lineNumber":5014,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill-wave-alt:before {"},{"lineNumber":5015,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f53b\u0027;"},{"lineNumber":5016,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5017,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-life-ring:before {"},{"lineNumber":5018,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1cd\u0027;"},{"lineNumber":5019,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5020,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands:before,"},{"lineNumber":5021,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sign-language:before,"},{"lineNumber":5022,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-signing:before {"},{"lineNumber":5023,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2a7\u0027;"},{"lineNumber":5024,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5025,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-day:before {"},{"lineNumber":5026,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f783\u0027;"},{"lineNumber":5027,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5028,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ladder-water:before,"},{"lineNumber":5029,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-swimming-pool:before,"},{"lineNumber":5030,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-water-ladder:before {"},{"lineNumber":5031,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c5\u0027;"},{"lineNumber":5032,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5033,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-up-down:before,"},{"lineNumber":5034,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-v:before {"},{"lineNumber":5035,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f07d\u0027;"},{"lineNumber":5036,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5037,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grimace:before,"},{"lineNumber":5038,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grimace:before {"},{"lineNumber":5039,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f57f\u0027;"},{"lineNumber":5040,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5041,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wheelchair-alt:before,"},{"lineNumber":5042,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wheelchair-move:before {"},{"lineNumber":5043,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e2ce\u0027;"},{"lineNumber":5044,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5045,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-level-down-alt:before,"},{"lineNumber":5046,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-turn-down:before {"},{"lineNumber":5047,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3be\u0027;"},{"lineNumber":5048,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5049,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-walking-arrow-right:before {"},{"lineNumber":5050,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e552\u0027;"},{"lineNumber":5051,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5052,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-envelope-square:before,"},{"lineNumber":5053,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-envelope:before {"},{"lineNumber":5054,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f199\u0027;"},{"lineNumber":5055,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5056,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice:before {"},{"lineNumber":5057,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f522\u0027;"},{"lineNumber":5058,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5059,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bowling-ball:before {"},{"lineNumber":5060,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f436\u0027;"},{"lineNumber":5061,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5062,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-brain:before {"},{"lineNumber":5063,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5dc\u0027;"},{"lineNumber":5064,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5065,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-band-aid:before,"},{"lineNumber":5066,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bandage:before {"},{"lineNumber":5067,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f462\u0027;"},{"lineNumber":5068,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5069,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-minus:before {"},{"lineNumber":5070,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f272\u0027;"},{"lineNumber":5071,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5072,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-xmark:before,"},{"lineNumber":5073,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-times-circle:before,"},{"lineNumber":5074,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-xmark-circle:before {"},{"lineNumber":5075,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f057\u0027;"},{"lineNumber":5076,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5077,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gifts:before {"},{"lineNumber":5078,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f79c\u0027;"},{"lineNumber":5079,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5080,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hotel:before {"},{"lineNumber":5081,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f594\u0027;"},{"lineNumber":5082,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5083,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-earth-asia:before,"},{"lineNumber":5084,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-globe-asia:before {"},{"lineNumber":5085,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f57e\u0027;"},{"lineNumber":5086,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5087,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-id-card-alt:before,"},{"lineNumber":5088,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-id-card-clip:before {"},{"lineNumber":5089,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f47f\u0027;"},{"lineNumber":5090,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5091,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magnifying-glass-plus:before,"},{"lineNumber":5092,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-search-plus:before {"},{"lineNumber":5093,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f00e\u0027;"},{"lineNumber":5094,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5095,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thumbs-up:before {"},{"lineNumber":5096,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f164\u0027;"},{"lineNumber":5097,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5098,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-clock:before {"},{"lineNumber":5099,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4fd\u0027;"},{"lineNumber":5100,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5101,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-allergies:before,"},{"lineNumber":5102,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-dots:before {"},{"lineNumber":5103,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f461\u0027;"},{"lineNumber":5104,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5105,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-invoice:before {"},{"lineNumber":5106,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f570\u0027;"},{"lineNumber":5107,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5108,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-window-minimize:before {"},{"lineNumber":5109,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2d1\u0027;"},{"lineNumber":5110,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5111,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-coffee:before,"},{"lineNumber":5112,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mug-saucer:before {"},{"lineNumber":5113,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0f4\u0027;"},{"lineNumber":5114,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5115,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-brush:before {"},{"lineNumber":5116,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f55d\u0027;"},{"lineNumber":5117,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5118,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mask:before {"},{"lineNumber":5119,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6fa\u0027;"},{"lineNumber":5120,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5121,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magnifying-glass-minus:before,"},{"lineNumber":5122,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-search-minus:before {"},{"lineNumber":5123,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f010\u0027;"},{"lineNumber":5124,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5125,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ruler-vertical:before {"},{"lineNumber":5126,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f548\u0027;"},{"lineNumber":5127,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5128,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-alt:before,"},{"lineNumber":5129,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-large:before {"},{"lineNumber":5130,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f406\u0027;"},{"lineNumber":5131,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5132,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-train-tram:before {"},{"lineNumber":5133,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e5b4\u0027;"},{"lineNumber":5134,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5135,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-nurse:before {"},{"lineNumber":5136,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f82f\u0027;"},{"lineNumber":5137,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5138,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-syringe:before {"},{"lineNumber":5139,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f48e\u0027;"},{"lineNumber":5140,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5141,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-sun:before {"},{"lineNumber":5142,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6c4\u0027;"},{"lineNumber":5143,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5144,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stopwatch-20:before {"},{"lineNumber":5145,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e06f\u0027;"},{"lineNumber":5146,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5147,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-full:before {"},{"lineNumber":5148,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f45c\u0027;"},{"lineNumber":5149,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5150,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magnet:before {"},{"lineNumber":5151,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f076\u0027;"},{"lineNumber":5152,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5153,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-jar:before {"},{"lineNumber":5154,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e516\u0027;"},{"lineNumber":5155,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5156,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-note-sticky:before,"},{"lineNumber":5157,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sticky-note:before {"},{"lineNumber":5158,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f249\u0027;"},{"lineNumber":5159,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5160,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bug-slash:before {"},{"lineNumber":5161,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e490\u0027;"},{"lineNumber":5162,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5163,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-from-water-pump:before {"},{"lineNumber":5164,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4b6\u0027;"},{"lineNumber":5165,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5166,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bone:before {"},{"lineNumber":5167,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5d7\u0027;"},{"lineNumber":5168,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5169,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-injured:before {"},{"lineNumber":5170,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f728\u0027;"},{"lineNumber":5171,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5172,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-sad-tear:before,"},{"lineNumber":5173,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sad-tear:before {"},{"lineNumber":5174,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5b4\u0027;"},{"lineNumber":5175,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5176,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane:before {"},{"lineNumber":5177,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f072\u0027;"},{"lineNumber":5178,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5179,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tent-arrows-down:before {"},{"lineNumber":5180,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e581\u0027;"},{"lineNumber":5181,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5182,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-exclamation:before {"},{"lineNumber":5183,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\21\u0027;"},{"lineNumber":5184,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5185,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-spin:before {"},{"lineNumber":5186,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4bb\u0027;"},{"lineNumber":5187,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5188,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-print:before {"},{"lineNumber":5189,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f02f\u0027;"},{"lineNumber":5190,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5191,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-try:before,"},{"lineNumber":5192,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-turkish-lira-sign:before,"},{"lineNumber":5193,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-turkish-lira:before {"},{"lineNumber":5194,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e2bb\u0027;"},{"lineNumber":5195,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5196,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dollar-sign:before,"},{"lineNumber":5197,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dollar:before,"},{"lineNumber":5198,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-usd:before {"},{"lineNumber":5199,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\24\u0027;"},{"lineNumber":5200,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5201,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-x:before {"},{"lineNumber":5202,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\58\u0027;"},{"lineNumber":5203,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5204,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magnifying-glass-dollar:before,"},{"lineNumber":5205,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-search-dollar:before {"},{"lineNumber":5206,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f688\u0027;"},{"lineNumber":5207,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5208,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users-cog:before,"},{"lineNumber":5209,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users-gear:before {"},{"lineNumber":5210,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f509\u0027;"},{"lineNumber":5211,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5212,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-military-pointing:before {"},{"lineNumber":5213,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e54a\u0027;"},{"lineNumber":5214,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5215,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bank:before,"},{"lineNumber":5216,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-columns:before,"},{"lineNumber":5217,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-institution:before,"},{"lineNumber":5218,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-museum:before,"},{"lineNumber":5219,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-university:before {"},{"lineNumber":5220,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f19c\u0027;"},{"lineNumber":5221,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5222,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-umbrella:before {"},{"lineNumber":5223,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0e9\u0027;"},{"lineNumber":5224,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5225,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trowel:before {"},{"lineNumber":5226,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e589\u0027;"},{"lineNumber":5227,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5228,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-d:before {"},{"lineNumber":5229,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\44\u0027;"},{"lineNumber":5230,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5231,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stapler:before {"},{"lineNumber":5232,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e5af\u0027;"},{"lineNumber":5233,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5234,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-masks-theater:before,"},{"lineNumber":5235,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-theater-masks:before {"},{"lineNumber":5236,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f630\u0027;"},{"lineNumber":5237,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5238,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-kip-sign:before {"},{"lineNumber":5239,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1c4\u0027;"},{"lineNumber":5240,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5241,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-point-left:before {"},{"lineNumber":5242,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a5\u0027;"},{"lineNumber":5243,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5244,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-handshake-alt:before,"},{"lineNumber":5245,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-handshake-simple:before {"},{"lineNumber":5246,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4c6\u0027;"},{"lineNumber":5247,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5248,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fighter-jet:before,"},{"lineNumber":5249,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-jet-fighter:before {"},{"lineNumber":5250,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0fb\u0027;"},{"lineNumber":5251,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5252,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-share-alt-square:before,"},{"lineNumber":5253,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-share-nodes:before {"},{"lineNumber":5254,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1e1\u0027;"},{"lineNumber":5255,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5256,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-barcode:before {"},{"lineNumber":5257,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f02a\u0027;"},{"lineNumber":5258,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5259,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plus-minus:before {"},{"lineNumber":5260,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e43c\u0027;"},{"lineNumber":5261,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5262,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-video-camera:before,"},{"lineNumber":5263,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-video:before {"},{"lineNumber":5264,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f03d\u0027;"},{"lineNumber":5265,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5266,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-graduation-cap:before,"},{"lineNumber":5267,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mortar-board:before {"},{"lineNumber":5268,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f19d\u0027;"},{"lineNumber":5269,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5270,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-holding-medical:before {"},{"lineNumber":5271,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e05c\u0027;"},{"lineNumber":5272,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5273,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-circle-check:before {"},{"lineNumber":5274,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e53e\u0027;"},{"lineNumber":5275,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5276,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-level-up-alt:before,"},{"lineNumber":5277,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-turn-up:before {"},{"lineNumber":5278,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3bf\u0027;"},{"lineNumber":5279,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5280,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sr-only,"},{"lineNumber":5281,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sr-only-focusable:not(:focus),"},{"lineNumber":5282,"author":{"gitId":"Eclipse-Dominator"},"content":".sr-only,"},{"lineNumber":5283,"author":{"gitId":"Eclipse-Dominator"},"content":".sr-only-focusable:not(:focus) {"},{"lineNumber":5284,"author":{"gitId":"Eclipse-Dominator"},"content":" position: absolute;"},{"lineNumber":5285,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 1px;"},{"lineNumber":5286,"author":{"gitId":"Eclipse-Dominator"},"content":" height: 1px;"},{"lineNumber":5287,"author":{"gitId":"Eclipse-Dominator"},"content":" padding: 0;"},{"lineNumber":5288,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: -1px;"},{"lineNumber":5289,"author":{"gitId":"Eclipse-Dominator"},"content":" overflow: hidden;"},{"lineNumber":5290,"author":{"gitId":"Eclipse-Dominator"},"content":" clip: rect(0, 0, 0, 0);"},{"lineNumber":5291,"author":{"gitId":"Eclipse-Dominator"},"content":" white-space: nowrap;"},{"lineNumber":5292,"author":{"gitId":"Eclipse-Dominator"},"content":" border-width: 0;"},{"lineNumber":5293,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":5293}},{"path":"src/assets/fontawesome/css/solid.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"/*!"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" * Font Awesome Free 6.3.0 by @fontawesome - https://fontawesome.com"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" * Copyright 2023 Fonticons, Inc."},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":":host,"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":":root {"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" --fa-style-family-classic: \u0027Font Awesome 6 Free\u0027;"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" --fa-font-solid: normal 900 1em/1 \u0027Font Awesome 6 Free\u0027;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":"@font-face {"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" font-family: \u0027Font Awesome 6 Free\u0027;"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" font-style: normal;"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" font-weight: 900;"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" font-display: block;"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":" src: url(../webfonts/fa-solid-900.woff2) format(\u0027woff2\u0027), url(../webfonts/fa-solid-900.ttf) format(\u0027truetype\u0027);"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-solid,"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":".fas {"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" font-weight: 900;"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":21}},{"path":"src/polyfills.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"/***************************************************************************************************"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" * Load `$localize` onto the global scope - used if i18n tags appear in Angular templates."},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" */"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import \u0027@angular/localize/init\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * This file includes polyfills needed by Angular and is loaded before the app."},{"lineNumber":7,"author":{"gitId":"-"},"content":" * You can add your own extra polyfills to this file."},{"lineNumber":8,"author":{"gitId":"-"},"content":" *"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * This file is divided into 2 sections:"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers."},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 2. Application imports. Files imported after ZoneJS that should be loaded before your main"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * file."},{"lineNumber":13,"author":{"gitId":"-"},"content":" *"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * automatically update themselves. This includes Safari \u003e\u003d 10, Chrome \u003e\u003d 55 (including Opera),"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Edge \u003e\u003d 13 on the desktop, and iOS 10 and Chrome on mobile."},{"lineNumber":17,"author":{"gitId":"-"},"content":" *"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Learn more in https://angular.io/guide/browser-support"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"/***************************************************************************************************"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * BROWSER POLYFILLS"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"/** IE10 and IE11 requires the following for NgClass support on SVG elements */"},{"lineNumber":26,"author":{"gitId":"-"},"content":"// import \u0027classlist.js\u0027; // Run `npm install --save classlist.js`."},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Web Animations `@angular/platform-browser/animations`"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari."},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0)."},{"lineNumber":32,"author":{"gitId":"-"},"content":" */"},{"lineNumber":33,"author":{"gitId":"-"},"content":"// import \u0027web-animations-js\u0027; // Run `npm install --save web-animations-js`."},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * By default, zone.js will patch all possible macroTask and DomEvents"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * user can disable parts of macroTask/DomEvents patch by setting following flags"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * because those flags need to be set before `zone.js` being loaded, and webpack"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * will put import in the top of bundle, so user need to create a separate file"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * in this directory (for example: zone-flags.ts), and put the following flags"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * into that file, and then add the following code before importing zone.js."},{"lineNumber":42,"author":{"gitId":"-"},"content":" * import \u0027./zone-flags.ts\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * The flags allowed in zone-flags.ts are listed here."},{"lineNumber":45,"author":{"gitId":"-"},"content":" *"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * The following flags will work for all browsers."},{"lineNumber":47,"author":{"gitId":"-"},"content":" *"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * (window as any).__Zone_disable_requestAnimationFrame \u003d true; // disable patch requestAnimationFrame"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * (window as any).__Zone_disable_on_property \u003d true; // disable patch onProperty such as onclick"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * (window as any).__zone_symbol__UNPATCHED_EVENTS \u003d [\u0027scroll\u0027, \u0027mousemove\u0027]; // disable patch specified eventNames"},{"lineNumber":51,"author":{"gitId":"-"},"content":" *"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * with the following flag, it will bypass `zone.js` patch for IE/Edge"},{"lineNumber":54,"author":{"gitId":"-"},"content":" *"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * (window as any).__Zone_enable_cross_context_check \u003d true;"},{"lineNumber":56,"author":{"gitId":"-"},"content":" *"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":"/***************************************************************************************************"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Zone JS is required by default for Angular itself."},{"lineNumber":61,"author":{"gitId":"-"},"content":" */"},{"lineNumber":62,"author":{"gitId":"-"},"content":"import \u0027zone.js/dist/zone\u0027; // Included with Angular CLI."},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"-"},"content":"/***************************************************************************************************"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * APPLICATION IMPORTS"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"(window as any).global \u003d window;"}],"authorContributionMap":{"vigneshsankariyer1234567890":5,"-":62}},{"path":"src/styles.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"/* You can add global styles to this file, and also import other style files */"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"@import \u0027./assets/fontawesome/css/fontawesome.min.css\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"@import \u0027./assets/fontawesome/css/solid.min.css\u0027;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"html,"},{"lineNumber":6,"author":{"gitId":"-"},"content":"body {"},{"lineNumber":7,"author":{"gitId":"-"},"content":" margin: 0;"},{"lineNumber":8,"author":{"gitId":"-"},"content":" padding: 0;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":" min-height: 100vh;"},{"lineNumber":11,"author":{"gitId":"-"},"content":" height: 100%;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"html,"},{"lineNumber":15,"author":{"gitId":"-"},"content":"body {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" height: 100%;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}"},{"lineNumber":18,"author":{"gitId":"-"},"content":"body {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" margin: 0;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" font-family: Roboto, \u0027Helvetica Neue\u0027, sans-serif;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":"/* Timeline comment style */"},{"lineNumber":24,"author":{"gitId":"-"},"content":".timeline-header {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" background-color: #f1f8ff;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" border-bottom: 1px solid #c0d3eb;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" border-top-left-radius: 3px;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" border-top-right-radius: 3px;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" color: #586069;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" height: 35px;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" padding: 5px;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":".timeline-comment {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" overflow: auto;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" border: 1px solid #c0d3eb;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" background-color: #fff;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" border-radius: 3px;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" margin-bottom: 30px;"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":".comment {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" padding: 15px;"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":".question-mark {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" color: red;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" font-size: 35px;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" margin: 0 10px 15px 0;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" text-shadow: -1.5px 0 black, 0 1.5px black, 1.5px 0 black, 0 -1.5px black;"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}"},{"lineNumber":52,"author":{"gitId":"-"},"content":"/* Timeline comment style */"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":"/* MaterialUI icon styles */"},{"lineNumber":55,"author":{"gitId":"-"},"content":".material-icons-outlined,"},{"lineNumber":56,"author":{"gitId":"-"},"content":".material-icons.material-icons--outlined,"},{"lineNumber":57,"author":{"gitId":"-"},"content":".material-icons-two-tone,"},{"lineNumber":58,"author":{"gitId":"-"},"content":".material-icons.material-icons--two-tone,"},{"lineNumber":59,"author":{"gitId":"-"},"content":".material-icons-round,"},{"lineNumber":60,"author":{"gitId":"-"},"content":".material-icons.material-icons--round,"},{"lineNumber":61,"author":{"gitId":"-"},"content":".material-icons-sharp,"},{"lineNumber":62,"author":{"gitId":"-"},"content":".material-icons.material-icons--sharp {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" font-weight: normal;"},{"lineNumber":64,"author":{"gitId":"-"},"content":" font-style: normal;"},{"lineNumber":65,"author":{"gitId":"-"},"content":" font-size: 24px;"},{"lineNumber":66,"author":{"gitId":"-"},"content":" line-height: 1;"},{"lineNumber":67,"author":{"gitId":"-"},"content":" letter-spacing: normal;"},{"lineNumber":68,"author":{"gitId":"-"},"content":" text-transform: none;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" display: inline-block;"},{"lineNumber":70,"author":{"gitId":"-"},"content":" white-space: nowrap;"},{"lineNumber":71,"author":{"gitId":"-"},"content":" word-wrap: normal;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" direction: ltr;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \u0027liga\u0027;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" -webkit-font-smoothing: antialiased;"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":".material-icons-outlined,"},{"lineNumber":78,"author":{"gitId":"-"},"content":".material-icons.material-icons--outlined {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" font-family: \u0027Material Icons Outlined\u0027;"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":".material-icons-two-tone,"},{"lineNumber":83,"author":{"gitId":"-"},"content":".material-icons.material-icons--two-tone {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" font-family: \u0027Material Icons Two Tone\u0027;"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":".material-icons-round,"},{"lineNumber":88,"author":{"gitId":"-"},"content":".material-icons.material-icons--round {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" font-family: \u0027Material Icons Round\u0027;"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":".material-icons-sharp,"},{"lineNumber":93,"author":{"gitId":"-"},"content":".material-icons.material-icons--sharp {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" font-family: \u0027Material Icons Sharp\u0027;"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}"},{"lineNumber":96,"author":{"gitId":"-"},"content":"/* MaterialUI icon styles */"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":".link-grey-dark {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" color: #24292e;"},{"lineNumber":100,"author":{"gitId":"-"},"content":" font-weight: 500;"},{"lineNumber":101,"author":{"gitId":"-"},"content":" font-size: 16px;"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":".link-grey-dark:hover {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" color: #0366d6;"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":".no-underline {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" text-decoration: none !important;"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":".grid-flush-left {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" position: absolute;"},{"lineNumber":114,"author":{"gitId":"-"},"content":" left: 5px;"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":".grid-flush-right {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" position: absolute;"},{"lineNumber":119,"author":{"gitId":"-"},"content":" right: 5px;"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}"},{"lineNumber":121,"author":{"gitId":"-"},"content":""},{"lineNumber":122,"author":{"gitId":"-"},"content":".mat-table tbody tr:hover td {"},{"lineNumber":123,"author":{"gitId":"-"},"content":" background-color: #e8e8ee;"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":"table {"},{"lineNumber":127,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":128,"author":{"gitId":"-"},"content":" table-layout: fixed;"},{"lineNumber":129,"author":{"gitId":"-"},"content":"}"},{"lineNumber":130,"author":{"gitId":"-"},"content":""},{"lineNumber":131,"author":{"gitId":"-"},"content":".centralize {"},{"lineNumber":132,"author":{"gitId":"-"},"content":" display: flex;"},{"lineNumber":133,"author":{"gitId":"-"},"content":" justify-content: center;"},{"lineNumber":134,"author":{"gitId":"-"},"content":" align-items: center;"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":".editor-actions {"},{"lineNumber":138,"author":{"gitId":"-"},"content":" float: right;"},{"lineNumber":139,"author":{"gitId":"-"},"content":" padding: 10px;"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}"},{"lineNumber":141,"author":{"gitId":"-"},"content":""},{"lineNumber":142,"author":{"gitId":"-"},"content":".editor-action {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" margin-left: 10px !important;"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}"},{"lineNumber":145,"author":{"gitId":"-"},"content":""},{"lineNumber":146,"author":{"gitId":"-"},"content":".bold-name {"},{"lineNumber":147,"author":{"gitId":"-"},"content":" font-weight: 500;"},{"lineNumber":148,"author":{"gitId":"-"},"content":" font-size: 17px;"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}"},{"lineNumber":150,"author":{"gitId":"-"},"content":""},{"lineNumber":151,"author":{"gitId":"-"},"content":".full-grid-width {"},{"lineNumber":152,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}"},{"lineNumber":154,"author":{"gitId":"-"},"content":""},{"lineNumber":155,"author":{"gitId":"-"},"content":".white-spinner circle {"},{"lineNumber":156,"author":{"gitId":"-"},"content":" stroke: white !important;"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}"},{"lineNumber":158,"author":{"gitId":"-"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":".sync-spinner {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" display: flex;"},{"lineNumber":161,"author":{"gitId":"-"},"content":" align-items: center;"},{"lineNumber":162,"author":{"gitId":"-"},"content":" justify-content: center;"},{"lineNumber":163,"author":{"gitId":"-"},"content":" margin-left: 16px;"},{"lineNumber":164,"author":{"gitId":"-"},"content":" margin-right: 16px;"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}"},{"lineNumber":166,"author":{"gitId":"-"},"content":""},{"lineNumber":167,"author":{"gitId":"-"},"content":".column.left {"},{"lineNumber":168,"author":{"gitId":"-"},"content":" max-width: 85%;"},{"lineNumber":169,"author":{"gitId":"-"},"content":" min-width: 380px;"},{"lineNumber":170,"author":{"gitId":"-"},"content":"}"},{"lineNumber":171,"author":{"gitId":"-"},"content":""},{"lineNumber":172,"author":{"gitId":"-"},"content":".column.right {"},{"lineNumber":173,"author":{"gitId":"-"},"content":" max-width: 15%;"},{"lineNumber":174,"author":{"gitId":"-"},"content":" min-width: 180px;"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":3,"-":172}},{"path":"tests/app/auth/profiles/profiles.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, DebugElement } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { BrowserAnimationsModule } from \u0027@angular/platform-browser/animations\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { ProfilesComponent } from \u0027../../../../src/app/auth/profiles/profiles.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Profile } from \u0027../../../../src/app/core/models/profile.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ProfileService } from \u0027../../../../src/app/core/services/profile.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../../../../src/app/shared/shared.module\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":12,"author":{"gitId":"-"},"content":" template: `\u003capp-profiles (selectedProfileEmitter)\u003d\"onSelected($event)\"\u003e \u003c/app-profiles\u003e`"},{"lineNumber":13,"author":{"gitId":"-"},"content":"})"},{"lineNumber":14,"author":{"gitId":"-"},"content":"class TestHostComponent {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" selectedProfile: Profile | undefined;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" onSelected(profile: Profile) {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" this.selectedProfile \u003d profile;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"describe(\u0027ProfilesComponent\u0027, () \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" let fixture: ComponentFixture\u003cTestHostComponent\u003e;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" let debugElement: DebugElement;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" let nativeElement: HTMLElement;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" let testHost: TestHostComponent;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" let profilesEl: HTMLElement;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" const profileService \u003d jasmine.createSpyObj(\u0027ProfileService\u0027, [\u0027fetchExternalProfiles\u0027]);"},{"lineNumber":29,"author":{"gitId":"-"},"content":" const errorHandlingService \u003d jasmine.createSpyObj(\u0027ErrorHandlingService\u0027, [\u0027handleError\u0027]);"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" const testProfiles: Profile[] \u003d ["},{"lineNumber":32,"author":{"gitId":"-"},"content":" {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" profileName: \u0027testProfile1\u0027,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" repoName: \u0027test-org1/pe\u0027"},{"lineNumber":35,"author":{"gitId":"-"},"content":" },"},{"lineNumber":36,"author":{"gitId":"-"},"content":" {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" profileName: \u0027testProfile2\u0027,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" repoName: \u0027test-org2/pe\u0027"},{"lineNumber":39,"author":{"gitId":"-"},"content":" },"},{"lineNumber":40,"author":{"gitId":"-"},"content":" {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" profileName: \u0027testProfile3\u0027,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" repoName: \u0027test-org3/pe\u0027"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" beforeEach(waitForAsync(() \u003d\u003e {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" TestBed.configureTestingModule({"},{"lineNumber":48,"author":{"gitId":"-"},"content":" imports: [BrowserAnimationsModule, SharedModule],"},{"lineNumber":49,"author":{"gitId":"-"},"content":" declarations: [ProfilesComponent, TestHostComponent],"},{"lineNumber":50,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":51,"author":{"gitId":"-"},"content":" { provide: ProfileService, useValue: profileService },"},{"lineNumber":52,"author":{"gitId":"-"},"content":" { provide: ErrorHandlingService, useValue: errorHandlingService }"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }).compileComponents();"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }));"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" beforeEach(fakeAsync(() \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" profileService.fetchExternalProfiles.and.returnValue(Promise.resolve(testProfiles));"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" fixture \u003d TestBed.createComponent(TestHostComponent);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" testHost \u003d fixture.componentInstance;"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" debugElement \u003d fixture.debugElement;"},{"lineNumber":64,"author":{"gitId":"-"},"content":" nativeElement \u003d debugElement.nativeElement;"},{"lineNumber":65,"author":{"gitId":"-"},"content":" profilesEl \u003d \u003cHTMLElement\u003enativeElement.querySelector(\u0027app-profiles\u0027);"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" fixture.detectChanges(); // onInit()"},{"lineNumber":68,"author":{"gitId":"-"},"content":" tick(); // wait for profiles to be loaded"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }));"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" it(\u0027should display the correct profiles from AppConfig\u0027, () \u003d\u003e {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" openMatSelect();"},{"lineNumber":73,"author":{"gitId":"-"},"content":" const displayedOptions \u003d getOptions();"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" displayedOptions.slice(1).forEach((el, i) \u003d\u003e {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" const optionTextEl \u003d \u003cHTMLElement\u003eel.querySelector(\u0027.mat-option-text\u0027);"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!optionTextEl) {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" fail(\u0027optionTextEl should not be null\u0027);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }"},{"lineNumber":80,"author":{"gitId":"-"},"content":" const profileName \u003d optionTextEl.innerText;"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expect(profileName).toBe(testProfiles[i].profileName);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" });"},{"lineNumber":83,"author":{"gitId":"-"},"content":" });"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" it(\u0027should emit the correct profile through selectProfile when mat-option is clicked\u0027, () \u003d\u003e {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" openMatSelect();"},{"lineNumber":87,"author":{"gitId":"-"},"content":" const displayedOptions \u003d getOptions();"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" displayedOptions[3].click();"},{"lineNumber":90,"author":{"gitId":"-"},"content":" expect(testHost.selectedProfile).toEqual(testProfiles[2]);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":92,"author":{"gitId":"-"},"content":" });"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":" function openMatSelect(): void {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" const select \u003d \u003cHTMLElement\u003eprofilesEl.querySelector(\u0027.mat-select\u0027);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!select) {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" fail(\u0027Select should not be null\u0027);"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":" select.click();"},{"lineNumber":100,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":""},{"lineNumber":103,"author":{"gitId":"-"},"content":" function getOptions(): HTMLElement[] {"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return Array.from(document.querySelectorAll(\u0027.mat-option\u0027));"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }"},{"lineNumber":106,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":104}},{"path":"tests/app/auth/session-selection/session-selection.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, DebugElement, EventEmitter, Input, Output } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ComponentFixture, TestBed, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { By } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { BrowserAnimationsModule } from \u0027@angular/platform-browser/animations\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ProfilesComponent } from \u0027../../../../src/app/auth/profiles/profiles.component\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { SessionSelectionComponent } from \u0027../../../../src/app/auth/session-selection/session-selection.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { Profile } from \u0027../../../../src/app/core/models/profile.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027../../../../src/app/core/services/auth.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../../../src/app/core/services/github.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../../../src/app/core/services/logging.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../../src/app/core/services/phase.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../../../../src/app/shared/shared.module\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":17,"author":{"gitId":"-"},"content":" selector: \u0027app-profiles\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" template: \u0027\u0027"},{"lineNumber":19,"author":{"gitId":"-"},"content":"})"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class ProfilesStubComponent implements Partial\u003cProfilesComponent\u003e {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Output() selectedProfileEmitter: EventEmitter\u003cProfile\u003e \u003d new EventEmitter\u003cProfile\u003e();"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Input() urlEncodedSessionName: string;"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" selectProfile(profile: Profile): void {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.selectedProfileEmitter.emit(profile);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":"describe(\u0027SessionSelectionComponent (unit tests)\u0027, () \u003d\u003e {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" let fixture: ComponentFixture\u003cSessionSelectionComponent\u003e;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" let component: SessionSelectionComponent;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" let debugElement: DebugElement;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" let nativeElement: HTMLElement;"},{"lineNumber":34,"author":{"gitId":"-"},"content":" let profilesDebugEl: DebugElement;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" let profilesComponent: ProfilesComponent;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" let profileEmitter: EventEmitter\u003cProfile\u003e;"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" const logger \u003d jasmine.createSpyObj(\u0027LoggingService\u0027, [\u0027info\u0027]);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" const githubService \u003d jasmine.createSpyObj(\u0027GithubService\u0027, [\u0027storeOrganizationDetails\u0027]);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" const phaseService \u003d jasmine.createSpyObj(\u0027PhaseService\u0027, [\u0027storeSessionData\u0027]);"},{"lineNumber":41,"author":{"gitId":"-"},"content":" const authService \u003d jasmine.createSpyObj(\u0027AuthService\u0027, [\u0027startOAuthProcess\u0027, \u0027changeAuthState\u0027]);"},{"lineNumber":42,"author":{"gitId":"-"},"content":" const errorHandlingService \u003d jasmine.createSpyObj(\u0027ErrorHandlingService\u0027, [\u0027handleError\u0027]);"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":" const testProfile: Profile \u003d {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" profileName: \u0027testProfile\u0027,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" repoName: \u0027testOrg/pe\u0027"},{"lineNumber":47,"author":{"gitId":"-"},"content":" };"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" beforeEach(waitForAsync(() \u003d\u003e {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" TestBed.configureTestingModule({"},{"lineNumber":51,"author":{"gitId":"-"},"content":" imports: [SharedModule, BrowserAnimationsModule],"},{"lineNumber":52,"author":{"gitId":"-"},"content":" declarations: [SessionSelectionComponent, ProfilesStubComponent],"},{"lineNumber":53,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":54,"author":{"gitId":"-"},"content":" { provide: LoggingService, useValue: logger },"},{"lineNumber":55,"author":{"gitId":"-"},"content":" { provide: GithubService, useValue: githubService },"},{"lineNumber":56,"author":{"gitId":"-"},"content":" { provide: PhaseService, useValue: phaseService },"},{"lineNumber":57,"author":{"gitId":"-"},"content":" { provide: AuthService, useValue: authService },"},{"lineNumber":58,"author":{"gitId":"-"},"content":" { provide: ErrorHandlingService, useValue: errorHandlingService }"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }).compileComponents();"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }));"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" fixture \u003d TestBed.createComponent(SessionSelectionComponent);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" fixture.detectChanges(); // onInit()"},{"lineNumber":66,"author":{"gitId":"-"},"content":" component \u003d fixture.componentInstance;"},{"lineNumber":67,"author":{"gitId":"-"},"content":" debugElement \u003d fixture.debugElement;"},{"lineNumber":68,"author":{"gitId":"-"},"content":" nativeElement \u003d debugElement.nativeElement;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" profilesDebugEl \u003d debugElement.query(By.directive(ProfilesStubComponent));"},{"lineNumber":70,"author":{"gitId":"-"},"content":" profilesComponent \u003d profilesDebugEl.componentInstance;"},{"lineNumber":71,"author":{"gitId":"-"},"content":" profileEmitter \u003d profilesComponent.selectedProfileEmitter;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" spyOn(component.sessionEmitter, \u0027emit\u0027);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" });"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" it(\u0027renders without errors\u0027, () \u003d\u003e {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" expect(component).toBeTruthy();"},{"lineNumber":77,"author":{"gitId":"-"},"content":" });"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" it(\u0027renders the profiles component\u0027, () \u003d\u003e {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" expect(profilesComponent).toBeTruthy();"},{"lineNumber":81,"author":{"gitId":"-"},"content":" });"},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" describe(\u0027when profile is selected\u0027, () \u003d\u003e {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" it(\u0027should emit the correct repo name\u0027, () \u003d\u003e {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" profileEmitter.emit(testProfile);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":87,"author":{"gitId":"-"},"content":" expect(component.sessionEmitter.emit).toHaveBeenCalledWith(testProfile.repoName);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" });"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" it(\u0027should update the session input correctly\u0027, () \u003d\u003e {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" profileEmitter.emit(testProfile);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":93,"author":{"gitId":"-"},"content":" const sessionInput \u003d nativeElement.querySelector(\u0027input[formcontrolname\u003d\"session\"]\u0027);"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (sessionInput \u003d\u003d null) {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" fail(\u0027sessionFieldEl should not be null\u0027);"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":" expect((\u003cHTMLInputElement\u003esessionInput).value).toBe(testProfile.repoName);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" });"},{"lineNumber":101,"author":{"gitId":"-"},"content":" });"},{"lineNumber":102,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":100}},{"path":"tests/app/phase-team-response/issues-faulty/issues-faulty.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../../../src/app/core/services/user.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { IssuesFaultyComponent } from \u0027../../../../src/app/phase-team-response/issues-faulty/issues-faulty.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { TEAM_3, TEAM_4, USER_Q } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { generateIssueWithRandomData, ISSUE_WITH_EMPTY_DESCRIPTION } from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"describe(\u0027IssuesFaultyComponent\u0027, () \u003d\u003e {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" describe(\u0027.ngOnInit()\u0027, () \u003d\u003e {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" const dummyTeam \u003d TEAM_4;"},{"lineNumber":11,"author":{"gitId":"-"},"content":" const dummyIssue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":12,"author":{"gitId":"-"},"content":" let issueService: IssueService;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" let issuesFaultyComponent: IssuesFaultyComponent;"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const userService \u003d new UserService(null, null, null);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" userService.currentUser \u003d USER_Q;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" const DUMMY_DUPLICATE_ISSUE_ID \u003d 1;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" const DUMMY_RESPONSE \u003d \u0027dummy response\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" issueService \u003d new IssueService(null, null, null, null, null);"},{"lineNumber":21,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(dummyIssue);"},{"lineNumber":22,"author":{"gitId":"-"},"content":" issuesFaultyComponent \u003d new IssuesFaultyComponent(issueService, userService, null);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" issuesFaultyComponent.ngOnInit();"},{"lineNumber":24,"author":{"gitId":"-"},"content":" });"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for an issue with no team response\u0027, () \u003d\u003e {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" const testIssue \u003d { ...dummyIssue, teamResponse: undefined } as Issue;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(testIssue);"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" expect(issuesFaultyComponent.filter(testIssue)).toBeFalse();"},{"lineNumber":31,"author":{"gitId":"-"},"content":" });"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for a non-duplicate issue with responses\u0027, () \u003d\u003e {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" const testIssue \u003d { ...dummyIssue, teamResponse: DUMMY_RESPONSE, duplicateOf: undefined } as Issue;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(testIssue);"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" expect(issuesFaultyComponent.filter(testIssue)).toBeFalse();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" });"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for a duplicate issue with responses that is not duplicated by other issues\u0027, () \u003d\u003e {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" const testIssue \u003d {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" ...dummyIssue,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" teamResponse: DUMMY_RESPONSE,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" duplicateOf: DUMMY_DUPLICATE_ISSUE_ID"},{"lineNumber":45,"author":{"gitId":"-"},"content":" } as Issue;"},{"lineNumber":46,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(testIssue);"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" expect(issuesFaultyComponent.filter(testIssue)).toBeFalse();"},{"lineNumber":49,"author":{"gitId":"-"},"content":" });"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return true for a duplicate issue with responses that is duplicated by other issues\u0027, () \u003d\u003e {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" const testIssue \u003d {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ...Issue.createPhaseTeamResponseIssue(generateIssueWithRandomData(), TEAM_3),"},{"lineNumber":54,"author":{"gitId":"-"},"content":" duplicateOf: dummyIssue.id,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" teamResponse: DUMMY_RESPONSE"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } as Issue;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(testIssue);"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":" const duplicateOfTestIssue \u003d {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" ...Issue.createPhaseTeamResponseIssue(generateIssueWithRandomData(), TEAM_3),"},{"lineNumber":61,"author":{"gitId":"-"},"content":" duplicateOf: testIssue.id"},{"lineNumber":62,"author":{"gitId":"-"},"content":" } as Issue;"},{"lineNumber":63,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(duplicateOfTestIssue);"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" expect(issuesFaultyComponent.filter(testIssue)).toBeTrue();"},{"lineNumber":66,"author":{"gitId":"-"},"content":" });"},{"lineNumber":67,"author":{"gitId":"-"},"content":" });"},{"lineNumber":68,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":66}},{"path":"tests/app/phase-team-response/issues-pending/issues-pending.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Issue, STATUS } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Team } from \u0027../../../../src/app/core/models/team.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../../../src/app/core/services/user.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { IssuesPendingComponent } from \u0027../../../../src/app/phase-team-response/issues-pending/issues-pending.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { TEAM_4, USER_Q } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { ISSUE_WITH_EMPTY_DESCRIPTION } from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"describe(\u0027IssuesPendingComponent\u0027, () \u003d\u003e {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" describe(\u0027.ngOnInit()\u0027, () \u003d\u003e {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" const dummyTeam: Team \u003d TEAM_4;"},{"lineNumber":12,"author":{"gitId":"-"},"content":" let dummyIssue: Issue;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" let issuesPendingComponent: IssuesPendingComponent;"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const issueService: IssueService \u003d new IssueService(null, null, null, null, null);"},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const userService: UserService \u003d new UserService(null, null, null);"},{"lineNumber":16,"author":{"gitId":"-"},"content":" userService.currentUser \u003d USER_Q;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" const DUMMY_DUPLICATE_ISSUE_ID \u003d 1;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" const DUMMY_RESPONSE \u003d \u0027dummy response\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" dummyIssue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":22,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(dummyIssue);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" issuesPendingComponent \u003d new IssuesPendingComponent(issueService, null, userService);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" issuesPendingComponent.ngOnInit();"},{"lineNumber":25,"author":{"gitId":"-"},"content":" });"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for a duplicate issue with no team response\u0027, () \u003d\u003e {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d DUMMY_DUPLICATE_ISSUE_ID;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" issueService.issues[dummyIssue.id].teamResponse \u003d undefined;"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" expect(issuesPendingComponent.filter(dummyIssue)).toBeFalse();"},{"lineNumber":32,"author":{"gitId":"-"},"content":" });"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for a non-duplicate issue with responses\u0027, () \u003d\u003e {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d undefined;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" issueService.issues[dummyIssue.id].teamResponse \u003d DUMMY_RESPONSE;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dummyIssue.status \u003d STATUS.Done;"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" expect(issuesPendingComponent.filter(dummyIssue)).toBeFalse();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" });"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for a duplicate issue with responses\u0027, () \u003d\u003e {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d DUMMY_DUPLICATE_ISSUE_ID;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" issueService.issues[dummyIssue.id].teamResponse \u003d DUMMY_RESPONSE;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" dummyIssue.status \u003d STATUS.Done;"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" expect(issuesPendingComponent.filter(dummyIssue)).toBeFalse();"},{"lineNumber":48,"author":{"gitId":"-"},"content":" });"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return true for a non-duplicate issue with no responses\u0027, () \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d undefined;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" issueService.issues[dummyIssue.id].teamResponse \u003d undefined;"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" expect(issuesPendingComponent.filter(dummyIssue)).toBeTrue();"},{"lineNumber":55,"author":{"gitId":"-"},"content":" });"},{"lineNumber":56,"author":{"gitId":"-"},"content":" });"},{"lineNumber":57,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":55}},{"path":"tests/app/phase-team-response/issues-responded/issues-responded.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Issue, STATUS } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../../../src/app/core/services/user.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { IssuesRespondedComponent } from \u0027../../../../src/app/phase-team-response/issues-responded/issues-responded.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { TEAM_4, USER_Q } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ISSUE_WITH_EMPTY_DESCRIPTION } from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"describe(\u0027IssuesRespondedComponent\u0027, () \u003d\u003e {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" describe(\u0027.ngOnInit()\u0027, () \u003d\u003e {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" const DUMMY_TEAM \u003d TEAM_4;"},{"lineNumber":11,"author":{"gitId":"-"},"content":" const DUMMY_DUPLICATE_ISSUE_ID \u003d 1;"},{"lineNumber":12,"author":{"gitId":"-"},"content":" const DUMMY_RESPONSE \u003d \u0027dummy response\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" let dummyIssue: Issue;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const issueService \u003d new IssueService(null, null, null, null, null);"},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const userService \u003d new UserService(null, null, null);"},{"lineNumber":17,"author":{"gitId":"-"},"content":" userService.currentUser \u003d USER_Q;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" const issuesRespondedComponent \u003d new IssuesRespondedComponent(issueService, userService);"},{"lineNumber":19,"author":{"gitId":"-"},"content":" issuesRespondedComponent.ngOnInit();"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" dummyIssue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, DUMMY_TEAM);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(dummyIssue);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" });"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for a non-duplicate issue with no team response and not marked done\u0027, () \u003d\u003e {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d undefined;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" dummyIssue.status \u003d undefined;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" dummyIssue.teamResponse \u003d undefined;"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" expect(issuesRespondedComponent.filter(dummyIssue)).toBeFalse();"},{"lineNumber":32,"author":{"gitId":"-"},"content":" });"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for a non-duplicate issue with responses and not marked done\u0027, () \u003d\u003e {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d undefined;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" dummyIssue.status \u003d undefined;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dummyIssue.teamResponse \u003d DUMMY_RESPONSE;"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" expect(issuesRespondedComponent.filter(dummyIssue)).toBeFalse();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" });"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for a duplicate issue with no team response and not marked done\u0027, () \u003d\u003e {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d DUMMY_DUPLICATE_ISSUE_ID;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dummyIssue.status \u003d undefined;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" dummyIssue.teamResponse \u003d undefined;"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" expect(issuesRespondedComponent.filter(dummyIssue)).toBeFalse();"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d DUMMY_DUPLICATE_ISSUE_ID;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" dummyIssue.status \u003d STATUS.Incomplete;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" dummyIssue.teamResponse \u003d undefined;"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" expect(issuesRespondedComponent.filter(dummyIssue)).toBeFalse();"},{"lineNumber":54,"author":{"gitId":"-"},"content":" });"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return true for a non-duplicate issue that is marked done with a team response\u0027, () \u003d\u003e {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d undefined;"},{"lineNumber":58,"author":{"gitId":"-"},"content":" dummyIssue.status \u003d STATUS.Done;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" dummyIssue.teamResponse \u003d DUMMY_RESPONSE;"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" expect(issuesRespondedComponent.filter(dummyIssue)).toBeTrue();"},{"lineNumber":62,"author":{"gitId":"-"},"content":" });"},{"lineNumber":63,"author":{"gitId":"-"},"content":" });"},{"lineNumber":64,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":62}},{"path":"tests/app/shared/comment-editor/upload-text-insertor.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { DebugElement, ElementRef } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ComponentFixture, TestBed, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { FormControl, FormGroup } from \u0027@angular/forms\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { BrowserAnimationsModule } from \u0027@angular/platform-browser/animations\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { MarkdownModule } from \u0027ngx-markdown\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../../../src/app/core/services/logging.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { UploadService } from \u0027../../../../src/app/core/services/upload.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { CommentEditorComponent } from \u0027../../../../src/app/shared/comment-editor/comment-editor.component\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" DISPLAYABLE_CONTENT,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" insertUploadingText,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" insertUploadUrl,"},{"lineNumber":16,"author":{"gitId":"-"},"content":" insertUploadUrlVideo"},{"lineNumber":17,"author":{"gitId":"-"},"content":"} from \u0027../../../../src/app/shared/comment-editor/upload-text-insertor\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../../../../src/app/shared/shared.module\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"function isDisplayable(filename) {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return DISPLAYABLE_CONTENT.includes(filename.split(\u0027.\u0027).pop().toLowerCase());"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"describe(\u0027UploadTextInsertor\u0027, () \u003d\u003e {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" let fixture: ComponentFixture\u003cCommentEditorComponent\u003e;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" let commentEditorComponent: CommentEditorComponent;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" let form: FormGroup;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" let commentField;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" let commentTextArea: ElementRef\u003cHTMLTextAreaElement\u003e;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" let textAreaEl: HTMLTextAreaElement;"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" const uploadService \u003d jasmine.createSpyObj([\u0027isVideoFile\u0027, \u0027isSupportedFileType\u0027, \u0027uploadFile\u0027]);"},{"lineNumber":33,"author":{"gitId":"-"},"content":" const errorHandlingService \u003d jasmine.createSpyObj([\u0027handleError\u0027]);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" const logger \u003d jasmine.createSpyObj([\u0027info\u0027]);"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" const uploadTextTemplate \u003d (filename) \u003d\u003e `${isDisplayable(filename) ? \u0027!\u0027 : \u0027\u0027}[Uploading ${filename}...]\\n`;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" const uploadUrlTemplate \u003d (filename, uploadUrl) \u003d\u003e `${isDisplayable(filename) ? \u0027!\u0027 : \u0027\u0027}[${filename}](${uploadUrl})\\n`;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" const uploadVideoTemplate \u003d (uploadUrl) \u003d\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" `\u003ci\u003e\u003cvideo controls\u003e\u003csource src\u003d\"${uploadUrl}\" type\u003d\"video/mp4\"\u003eYour browser does not support the video tag.\u003c/video\u003e\u003cbr\u003evideo:${uploadUrl}\u003c/i\u003e\\n`;"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" const testDisplayableFilename \u003d \u0027test_file.jpg\u0027;"},{"lineNumber":42,"author":{"gitId":"-"},"content":" const testFilename \u003d \u0027test_file.pdf\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" const testVideo \u003d \u0027test_vid.mp4\u0027;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" const testUrl \u003d \u0027testurl.com/test\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" const dummyText \u003d \u0027dummyText\u0027;"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" beforeEach(waitForAsync(() \u003d\u003e {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" TestBed.configureTestingModule({"},{"lineNumber":49,"author":{"gitId":"-"},"content":" imports: [SharedModule, MarkdownModule.forChild(), BrowserAnimationsModule],"},{"lineNumber":50,"author":{"gitId":"-"},"content":" declarations: [CommentEditorComponent],"},{"lineNumber":51,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":52,"author":{"gitId":"-"},"content":" { provide: UploadService, useValue: uploadService },"},{"lineNumber":53,"author":{"gitId":"-"},"content":" { provide: ErrorHandlingService, useValue: errorHandlingService },"},{"lineNumber":54,"author":{"gitId":"-"},"content":" { provide: LoggingService, useValue: logger }"},{"lineNumber":55,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }).compileComponents();"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }));"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" fixture \u003d TestBed.createComponent(CommentEditorComponent);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" form \u003d new FormGroup({"},{"lineNumber":62,"author":{"gitId":"-"},"content":" description: new FormControl(\u0027\u0027)"},{"lineNumber":63,"author":{"gitId":"-"},"content":" });"},{"lineNumber":64,"author":{"gitId":"-"},"content":" commentField \u003d form.get(\u0027description\u0027);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" commentEditorComponent \u003d fixture.componentInstance;"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Set up compulsory input fields"},{"lineNumber":67,"author":{"gitId":"-"},"content":" commentEditorComponent.commentField \u003d commentField;"},{"lineNumber":68,"author":{"gitId":"-"},"content":" commentEditorComponent.commentForm \u003d form;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" commentEditorComponent.id \u003d \u0027description\u0027;"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" commentTextArea \u003d commentEditorComponent.commentTextArea;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" textAreaEl \u003d commentTextArea.nativeElement;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" });"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" it(\u0027should set up correctly\u0027, () \u003d\u003e {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" expect(fixture).toBeDefined();"},{"lineNumber":78,"author":{"gitId":"-"},"content":" expect(commentTextArea).toBeDefined();"},{"lineNumber":79,"author":{"gitId":"-"},"content":" expect(commentField).toBeDefined();"},{"lineNumber":80,"author":{"gitId":"-"},"content":" });"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":" describe(\u0027insertUploadingText\u0027, () \u003d\u003e {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" describe(\u0027should set the correct value in the commentField\u0027, () \u003d\u003e {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" it(\u0027should insert a ! for displayable files\u0027, () \u003d\u003e {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" const expected \u003d uploadTextTemplate(testDisplayableFilename);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" insertUploadingText(testDisplayableFilename, commentField, commentTextArea);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" expect(commentField.value).toBe(expected);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" });"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" it(\u0027should not insert a ! for non-displayable files\u0027, () \u003d\u003e {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" const expected \u003d uploadTextTemplate(testFilename);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" insertUploadingText(testFilename, commentField, commentTextArea);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" expect(commentField.value).toBe(expected);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" });"},{"lineNumber":95,"author":{"gitId":"-"},"content":" });"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" it(\"should reposition the cursor by the uploading text\u0027s length\", () \u003d\u003e {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" const initialPosition \u003d textAreaEl.selectionEnd;"},{"lineNumber":99,"author":{"gitId":"-"},"content":" const expected \u003d uploadTextTemplate(testDisplayableFilename);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" insertUploadingText(testDisplayableFilename, commentField, commentTextArea);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" expect(textAreaEl.selectionEnd).toBe(expected.length + initialPosition);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" });"},{"lineNumber":103,"author":{"gitId":"-"},"content":" });"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" describe(\u0027replacePlaceholderString\u0027, () \u003d\u003e {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" insertUploadingText(testDisplayableFilename, commentField, commentTextArea);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" });"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":" describe(\u0027should position the cursor\u0027, () \u003d\u003e {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" it(\u0027should reposition to the end of the upload url if cursor is within the uploading text\u0027, () \u003d\u003e {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" insertUploadUrl(testDisplayableFilename, testUrl, commentField, commentTextArea);"},{"lineNumber":113,"author":{"gitId":"-"},"content":" const expected \u003d uploadUrlTemplate(testDisplayableFilename, testUrl);"},{"lineNumber":114,"author":{"gitId":"-"},"content":" expect(textAreaEl.selectionEnd).toBe(expected.length);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" });"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":" it(\u0027should not reposition if the cursor is before the uploading text\u0027, () \u003d\u003e {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // Insert text before the upload text and position cursor at the start"},{"lineNumber":119,"author":{"gitId":"-"},"content":" const startOfField \u003d 0;"},{"lineNumber":120,"author":{"gitId":"-"},"content":" commentField.setValue(`${dummyText}${commentField.value}`);"},{"lineNumber":121,"author":{"gitId":"-"},"content":" textAreaEl.setSelectionRange(startOfField, startOfField);"},{"lineNumber":122,"author":{"gitId":"-"},"content":" insertUploadUrl(testDisplayableFilename, testUrl, commentField, commentTextArea);"},{"lineNumber":123,"author":{"gitId":"-"},"content":" expect(textAreaEl.selectionEnd).toBe(startOfField);"},{"lineNumber":124,"author":{"gitId":"-"},"content":" });"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":" it(\u0027should reposition the cursor by the difference in length if cursor is after the uploading text\u0027, () \u003d\u003e {"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // Insert text after the upload text and position cursor at the end"},{"lineNumber":128,"author":{"gitId":"-"},"content":" commentField.setValue(`${commentField.value}${dummyText}`);"},{"lineNumber":129,"author":{"gitId":"-"},"content":" const endOfField \u003d commentField.value.length;"},{"lineNumber":130,"author":{"gitId":"-"},"content":" textAreaEl.setSelectionRange(endOfField, endOfField);"},{"lineNumber":131,"author":{"gitId":"-"},"content":" insertUploadUrl(testDisplayableFilename, testUrl, commentField, commentTextArea);"},{"lineNumber":132,"author":{"gitId":"-"},"content":" const updatedEndOfField \u003d commentField.value.length;"},{"lineNumber":133,"author":{"gitId":"-"},"content":" expect(textAreaEl.selectionEnd).toBe(updatedEndOfField);"},{"lineNumber":134,"author":{"gitId":"-"},"content":" });"},{"lineNumber":135,"author":{"gitId":"-"},"content":" });"},{"lineNumber":136,"author":{"gitId":"-"},"content":" });"},{"lineNumber":137,"author":{"gitId":"-"},"content":""},{"lineNumber":138,"author":{"gitId":"-"},"content":" describe(\u0027insertUploadUrl\u0027, () \u003d\u003e {"},{"lineNumber":139,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" insertUploadingText(testDisplayableFilename, commentField, commentTextArea);"},{"lineNumber":141,"author":{"gitId":"-"},"content":" });"},{"lineNumber":142,"author":{"gitId":"-"},"content":""},{"lineNumber":143,"author":{"gitId":"-"},"content":" it(\u0027should replace the uploading text with the filename and link\u0027, () \u003d\u003e {"},{"lineNumber":144,"author":{"gitId":"-"},"content":" insertUploadUrl(testDisplayableFilename, testUrl, commentField, commentTextArea);"},{"lineNumber":145,"author":{"gitId":"-"},"content":" const expected \u003d uploadUrlTemplate(testDisplayableFilename, testUrl);"},{"lineNumber":146,"author":{"gitId":"-"},"content":" expect(commentField.value).toBe(expected);"},{"lineNumber":147,"author":{"gitId":"-"},"content":" });"},{"lineNumber":148,"author":{"gitId":"-"},"content":""},{"lineNumber":149,"author":{"gitId":"-"},"content":" it(\u0027should replace only the uploading text, leaving the rest of the field unchanged\u0027, () \u003d\u003e {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // insert dummy text before and after, should remain unchanged"},{"lineNumber":151,"author":{"gitId":"-"},"content":" commentField.setValue(`${dummyText}${commentField.value}${dummyText}`);"},{"lineNumber":152,"author":{"gitId":"-"},"content":" insertUploadUrl(testDisplayableFilename, testUrl, commentField, commentTextArea);"},{"lineNumber":153,"author":{"gitId":"-"},"content":" const expected \u003d `${dummyText}${uploadUrlTemplate(testDisplayableFilename, testUrl)}${dummyText}`;"},{"lineNumber":154,"author":{"gitId":"-"},"content":" expect(commentField.value).toBe(expected);"},{"lineNumber":155,"author":{"gitId":"-"},"content":" });"},{"lineNumber":156,"author":{"gitId":"-"},"content":" });"},{"lineNumber":157,"author":{"gitId":"-"},"content":""},{"lineNumber":158,"author":{"gitId":"-"},"content":" describe(\u0027insertUploadUrlVideo\u0027, () \u003d\u003e {"},{"lineNumber":159,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" insertUploadingText(testVideo, commentField, commentTextArea);"},{"lineNumber":161,"author":{"gitId":"-"},"content":" });"},{"lineNumber":162,"author":{"gitId":"-"},"content":""},{"lineNumber":163,"author":{"gitId":"-"},"content":" it(\u0027should replace the uploading text with the correct HTML text\u0027, () \u003d\u003e {"},{"lineNumber":164,"author":{"gitId":"-"},"content":" insertUploadUrlVideo(testVideo, testUrl, commentField, commentTextArea);"},{"lineNumber":165,"author":{"gitId":"-"},"content":" const expected \u003d uploadVideoTemplate(testUrl);"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expect(commentField.value).toBe(expected);"},{"lineNumber":167,"author":{"gitId":"-"},"content":" });"},{"lineNumber":168,"author":{"gitId":"-"},"content":" });"},{"lineNumber":169,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":167}},{"path":"tests/app/shared/issue-tables/search-filter.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Team } from \u0027../../../../src/app/core/models/team.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027../../../../src/app/shared/issue-tables/issue-tables-columns\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { applySearchFilter } from \u0027../../../../src/app/shared/issue-tables/search-filter\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { USER_SHUMING } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" DUPLICATED_ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" ISSUE_WITH_ASSIGNEES,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY"},{"lineNumber":13,"author":{"gitId":"-"},"content":"} from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"describe(\u0027search-filter\u0027, () \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" describe(\u0027applySearchFilter()\u0027, () \u003d\u003e {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" const dummyTeam: Team \u003d new Team({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" id: \u0027dummyId\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" teamMembers: []"},{"lineNumber":20,"author":{"gitId":"-"},"content":" });"},{"lineNumber":21,"author":{"gitId":"-"},"content":" let searchKey: string;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" const mediumSeverityIssueWithResponse: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mediumSeverityIssueWithResponse.response \u003d \u0027Accepted\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" const mediumSeverityIssueWithAssigneee: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_ASSIGNEES, dummyTeam);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" const lowSeverityFeatureFlawIssue: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY, dummyTeam);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" const highSeverityDocumentationBugIssue: Issue \u003d Issue.createPhaseTeamResponseIssue("},{"lineNumber":27,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" dummyTeam"},{"lineNumber":29,"author":{"gitId":"-"},"content":" );"},{"lineNumber":30,"author":{"gitId":"-"},"content":" const duplicatedIssue: Issue \u003d Issue.createPhaseTeamResponseIssue(DUPLICATED_ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY, dummyTeam);"},{"lineNumber":31,"author":{"gitId":"-"},"content":" duplicatedIssue.duplicateOf \u003d highSeverityDocumentationBugIssue.id;"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" const issuesList: Issue[] \u003d ["},{"lineNumber":34,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" highSeverityDocumentationBugIssue"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":39,"author":{"gitId":"-"},"content":" const displayedColumns: string[] \u003d ["},{"lineNumber":40,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.ID,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.TITLE,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.TYPE,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.SEVERITY,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.RESPONSE,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.ASSIGNEE,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.DUPLICATED_ISSUES"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const issueService: IssueService \u003d new IssueService(null, null, null, null, null);"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(mediumSeverityIssueWithResponse);"},{"lineNumber":52,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(mediumSeverityIssueWithAssigneee);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(lowSeverityFeatureFlawIssue);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(highSeverityDocumentationBugIssue);"},{"lineNumber":55,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(duplicatedIssue);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" });"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":" it(\u0027can filter for issues which are assigned to a specific user\u0027, () \u003d\u003e {"},{"lineNumber":59,"author":{"gitId":"-"},"content":" searchKey \u003d USER_SHUMING.loginId;"},{"lineNumber":60,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithAssigneee]);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" });"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" it(\u0027can filter for an issue by the id of its duplicate issues\u0027, () \u003d\u003e {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" searchKey \u003d duplicatedIssue.id.toString();"},{"lineNumber":65,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([highSeverityDocumentationBugIssue]);"},{"lineNumber":66,"author":{"gitId":"-"},"content":" });"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" it(\u0027can filter for issues that contain the search key in any other column\u0027, () \u003d\u003e {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Search by id of issue"},{"lineNumber":70,"author":{"gitId":"-"},"content":" searchKey \u003d mediumSeverityIssueWithResponse.id.toString();"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithResponse]);"},{"lineNumber":72,"author":{"gitId":"-"},"content":""},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Search by title of issue"},{"lineNumber":74,"author":{"gitId":"-"},"content":" searchKey \u003d mediumSeverityIssueWithAssigneee.title;"},{"lineNumber":75,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithAssigneee]);"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":" // Search by type of issue"},{"lineNumber":78,"author":{"gitId":"-"},"content":" searchKey \u003d highSeverityDocumentationBugIssue.type;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([highSeverityDocumentationBugIssue]);"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Search by severity of issue"},{"lineNumber":82,"author":{"gitId":"-"},"content":" searchKey \u003d lowSeverityFeatureFlawIssue.severity;"},{"lineNumber":83,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([lowSeverityFeatureFlawIssue]);"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" // Search by response of issue"},{"lineNumber":86,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" searchKey \u003d mediumSeverityIssueWithResponse.response;"},{"lineNumber":87,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithResponse]);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" });"},{"lineNumber":89,"author":{"gitId":"-"},"content":" });"},{"lineNumber":90,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":3,"-":87}},{"path":"tests/app/shared/issue/assignee/assignee.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { DebugElement } from \u0027@angular/core\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ComponentFixture, TestBed, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { FormsModule } from \u0027@angular/forms\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { By } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { BrowserAnimationsModule } from \u0027@angular/platform-browser/animations\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../../../../src/app/core/models/phase.model\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { Team } from \u0027../../../../../src/app/core/models/team.model\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { User, UserRole } from \u0027../../../../../src/app/core/models/user.model\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../../../../src/app/core/services/permission.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../../../src/app/core/services/phase.service\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { AssigneeComponent } from \u0027../../../../../src/app/shared/issue/assignee/assignee.component\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { MaterialModule } from \u0027../../../../../src/app/shared/material.module\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import { ISSUE_WITH_EMPTY_DESCRIPTION } from \u0027../../../../constants/githubissue.constants\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"describe(\u0027AssigneeComponent\u0027, () \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" let component: AssigneeComponent;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" let debugElement: DebugElement;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" let nativeElement: HTMLElement;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" let fixture: ComponentFixture\u003cAssigneeComponent\u003e;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" let dummyIssue: Issue;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" const testStudent: User \u003d {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" loginId: \u0027testStudent\u0027,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" role: UserRole.Student"},{"lineNumber":31,"author":{"gitId":"-"},"content":" };"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" const testStudent2: User \u003d {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" loginId: \u0027testStudent2\u0027,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" role: UserRole.Student"},{"lineNumber":36,"author":{"gitId":"-"},"content":" };"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" const testStudent3: User \u003d {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" loginId: \u0027testStudent3\u0027,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" role: UserRole.Student"},{"lineNumber":41,"author":{"gitId":"-"},"content":" };"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" const testStudent4: User \u003d {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" loginId: \u0027testStudent4\u0027,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" role: UserRole.Student"},{"lineNumber":46,"author":{"gitId":"-"},"content":" };"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" const dummyTeam: Team \u003d new Team({"},{"lineNumber":49,"author":{"gitId":"-"},"content":" id: \u0027F09-2\u0027,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" teamMembers: [testStudent, testStudent2, testStudent3, testStudent4]"},{"lineNumber":51,"author":{"gitId":"-"},"content":" });"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" const phaseService: any \u003d jasmine.createSpyObj(\u0027PhaseService\u0027, [], { currentPhase: Phase.phaseTeamResponse });"},{"lineNumber":54,"author":{"gitId":"-"},"content":" const issueService: any \u003d jasmine.createSpyObj(\u0027IssueService\u0027, [\u0027getDuplicateIssuesFor\u0027, \u0027getLatestIssue\u0027, \u0027updateIssue\u0027]);"},{"lineNumber":55,"author":{"gitId":"-"},"content":" const permissionsService: any \u003d jasmine.createSpyObj(\u0027PermissionService\u0027, [\u0027isIssueLabelsEditable\u0027]);"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" beforeEach(waitForAsync(() \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" TestBed.configureTestingModule({"},{"lineNumber":59,"author":{"gitId":"-"},"content":" declarations: [AssigneeComponent],"},{"lineNumber":60,"author":{"gitId":"-"},"content":" providers: [IssueService, ErrorHandlingService, PhaseService, PermissionService],"},{"lineNumber":61,"author":{"gitId":"-"},"content":" imports: [FormsModule, MaterialModule, BrowserAnimationsModule]"},{"lineNumber":62,"author":{"gitId":"-"},"content":" })"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .overrideProvider(IssueService, { useValue: issueService })"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .overrideProvider(PhaseService, { useValue: phaseService })"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .overrideProvider(PermissionService, { useValue: permissionsService })"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .compileComponents();"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }));"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" permissionsService.isIssueLabelsEditable.and.callFake(() \u003d\u003e true);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" issueService.getDuplicateIssuesFor.and.returnValue(of([]));"},{"lineNumber":72,"author":{"gitId":"-"},"content":" fixture \u003d TestBed.createComponent(AssigneeComponent);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" component \u003d fixture.componentInstance;"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" dummyIssue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":76,"author":{"gitId":"-"},"content":" component.team \u003d dummyTeam;"},{"lineNumber":77,"author":{"gitId":"-"},"content":" component.issue \u003d dummyIssue;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" debugElement \u003d fixture.debugElement;"},{"lineNumber":81,"author":{"gitId":"-"},"content":" nativeElement \u003d fixture.nativeElement;"},{"lineNumber":82,"author":{"gitId":"-"},"content":" });"},{"lineNumber":83,"author":{"gitId":"-"},"content":""},{"lineNumber":84,"author":{"gitId":"-"},"content":" it(\u0027should have a placeholder value of - given no assignees\u0027, () \u003d\u003e {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" const matPlaceholderValue: HTMLElement \u003d debugElement.query(By.css(\u0027p\u0027)).nativeElement;"},{"lineNumber":86,"author":{"gitId":"-"},"content":" expect(matPlaceholderValue.innerText).toEqual(\u0027-\u0027); // Placeholder Value"},{"lineNumber":87,"author":{"gitId":"-"},"content":" });"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" it(\u0027should be able to open the assignee selector\u0027, () \u003d\u003e {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" openMatSelect();"},{"lineNumber":91,"author":{"gitId":"-"},"content":" const matOption: HTMLElement \u003d debugElement.query(By.css(\u0027.mat-option\u0027)).nativeElement;"},{"lineNumber":92,"author":{"gitId":"-"},"content":" const inputElement: HTMLElement \u003d debugElement.query(By.css(\u0027.mat-select-panel\u0027)).nativeElement;"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":" expect(inputElement.children.length).toBe(dummyTeam.teamMembers.length);"},{"lineNumber":95,"author":{"gitId":"-"},"content":" expect(matOption.attributes.getNamedItem(\u0027aria-selected\u0027).value).toEqual(\u0027false\u0027);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" });"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" it(\u0027should emit an event containing the issue with updated assignees, upon closing the MatSelect\u0027, () \u003d\u003e {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" spyOn(component.issueUpdated, \u0027emit\u0027);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" openMatSelect();"},{"lineNumber":101,"author":{"gitId":"-"},"content":" addAssignee();"},{"lineNumber":102,"author":{"gitId":"-"},"content":" dispatchClosedEvent();"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":" expect(component.issueUpdated.emit).toHaveBeenCalledWith(jasmine.objectContaining({ assignees: [testStudent.loginId] }));"},{"lineNumber":105,"author":{"gitId":"-"},"content":" });"},{"lineNumber":106,"author":{"gitId":"-"},"content":""},{"lineNumber":107,"author":{"gitId":"-"},"content":" it(\u0027should show the updated assignees upon receiving an updated issue\u0027, () \u003d\u003e {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" component.issue.assignees \u003d [testStudent.loginId];"},{"lineNumber":109,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":110,"author":{"gitId":"-"},"content":""},{"lineNumber":111,"author":{"gitId":"-"},"content":" const matListText: HTMLElement \u003d debugElement.query(By.css(\u0027.mat-list-item-content\u0027)).nativeElement;"},{"lineNumber":112,"author":{"gitId":"-"},"content":" expect(matListText.innerText).toEqual(testStudent.loginId);"},{"lineNumber":113,"author":{"gitId":"-"},"content":" });"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"-"},"content":" it(\u0027should update assignees of duplicate issues\u0027, () \u003d\u003e {"},{"lineNumber":116,"author":{"gitId":"-"},"content":" const duplicateIssue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":117,"author":{"gitId":"-"},"content":" issueService.updateIssue.and.callFake((x: Issue) \u003d\u003e of(x));"},{"lineNumber":118,"author":{"gitId":"-"},"content":" issueService.getDuplicateIssuesFor.and.returnValue(of([duplicateIssue]));"},{"lineNumber":119,"author":{"gitId":"-"},"content":""},{"lineNumber":120,"author":{"gitId":"-"},"content":" openMatSelect();"},{"lineNumber":121,"author":{"gitId":"-"},"content":" addAssignee();"},{"lineNumber":122,"author":{"gitId":"-"},"content":" dispatchClosedEvent();"},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"-"},"content":" const updatedIssue \u003d dummyIssue.clone(phaseService.currentPhase);"},{"lineNumber":125,"author":{"gitId":"-"},"content":" updatedIssue.assignees \u003d [testStudent.loginId];"},{"lineNumber":126,"author":{"gitId":"-"},"content":" const updatedDuplicateIssue \u003d duplicateIssue.clone(phaseService.currentPhase);"},{"lineNumber":127,"author":{"gitId":"-"},"content":" updatedDuplicateIssue.assignees \u003d [testStudent.loginId];"},{"lineNumber":128,"author":{"gitId":"-"},"content":""},{"lineNumber":129,"author":{"gitId":"-"},"content":" expect(issueService.updateIssue).toHaveBeenCalledWith(updatedIssue);"},{"lineNumber":130,"author":{"gitId":"-"},"content":" expect(issueService.updateIssue).toHaveBeenCalledWith(updatedDuplicateIssue);"},{"lineNumber":131,"author":{"gitId":"-"},"content":" });"},{"lineNumber":132,"author":{"gitId":"-"},"content":""},{"lineNumber":133,"author":{"gitId":"-"},"content":" function openMatSelect(): void {"},{"lineNumber":134,"author":{"gitId":"-"},"content":" const matSelectButton: HTMLElement \u003d nativeElement.querySelector(\u0027button\u0027);"},{"lineNumber":135,"author":{"gitId":"-"},"content":" matSelectButton.click();"},{"lineNumber":136,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" function addAssignee(): void {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" const matOption: HTMLElement \u003d debugElement.query(By.css(\u0027.mat-option\u0027)).nativeElement;"},{"lineNumber":141,"author":{"gitId":"-"},"content":" matOption.click();"},{"lineNumber":142,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }"},{"lineNumber":144,"author":{"gitId":"-"},"content":""},{"lineNumber":145,"author":{"gitId":"-"},"content":" function dispatchClosedEvent() {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" const matSelectElement: HTMLElement \u003d debugElement.query(By.css(\u0027.mat-select\u0027)).nativeElement;"},{"lineNumber":147,"author":{"gitId":"-"},"content":" issueService.updateIssue.and.callFake((updatedIssue: Issue) \u003d\u003e of(updatedIssue));"},{"lineNumber":148,"author":{"gitId":"-"},"content":" matSelectElement.dispatchEvent(new Event(\u0027closed\u0027));"},{"lineNumber":149,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }"},{"lineNumber":151,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":149}},{"path":"tests/app/shared/issue/description/description.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { FormBuilder, NgForm } from \u0027@angular/forms\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatDialogRef } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { UserConfirmationComponent } from \u0027../../../../../src/app/core/guards/user-confirmation/user-confirmation.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../../../../src/app/core/models/phase.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../../../../src/app/core/services/dialog.service\u0027;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoadingService } from \u0027../../../../../src/app/core/services/loading.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../../../src/app/core/services/phase.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { DescriptionComponent } from \u0027../../../../../src/app/shared/issue/description/description.component\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { ISSUE_WITH_EMPTY_DESCRIPTION } from \u0027../../../../constants/githubissue.constants\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"describe(\u0027DescriptionComponent\u0027, () \u003d\u003e {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" let descriptionComponent: DescriptionComponent;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" let issueService: any;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" let phaseService: PhaseService;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" let formBuilder: FormBuilder;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" let thisIssue: Issue;"},{"lineNumber":19,"author":{"gitId":"-"},"content":" let dialog: any;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" let errorHandlingService: any;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" let dialogService: jasmine.SpyObj\u003cDialogService\u003e;"},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let loadingService: jasmine.SpyObj\u003cLoadingService\u003e;"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" formBuilder \u003d new FormBuilder();"},{"lineNumber":26,"author":{"gitId":"-"},"content":" phaseService \u003d new PhaseService(null, null, null);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" phaseService.currentPhase \u003d Phase.phaseTeamResponse;"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" dialog \u003d jasmine.createSpyObj(\u0027MatDialog\u0027, [\u0027open\u0027]);"},{"lineNumber":30,"author":{"gitId":"-"},"content":" errorHandlingService \u003d jasmine.createSpyObj(\u0027ErrorHandlingService\u0027, [\u0027handleError\u0027]);"},{"lineNumber":31,"author":{"gitId":"-"},"content":" issueService \u003d jasmine.createSpyObj(\u0027IssueService\u0027, [\u0027getIssue\u0027, \u0027getLatestIssue\u0027, \u0027updateIssue\u0027]);"},{"lineNumber":32,"author":{"gitId":"-"},"content":" dialogService \u003d jasmine.createSpyObj(\u0027DialogService\u0027, [\u0027openUserConfirmationModal\u0027]);"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService \u003d jasmine.createSpyObj(\u0027LoadingService\u0027, ["},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027showLoader\u0027,"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027hideLoader\u0027,"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addAnimationMode\u0027,"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addCssClasses\u0027,"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addSpinnerOptions\u0027,"},{"lineNumber":39,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addTheme\u0027,"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addViewContainerRef\u0027"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ]);"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addAnimationMode.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addCssClasses.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addSpinnerOptions.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addTheme.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addViewContainerRef.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptionComponent \u003d new DescriptionComponent("},{"lineNumber":49,"author":{"gitId":"-"},"content":" issueService,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" formBuilder,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" errorHandlingService,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" dialog,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" phaseService,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" null,"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" dialogService,"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService"},{"lineNumber":57,"author":{"gitId":"-"},"content":" );"},{"lineNumber":58,"author":{"gitId":"-"},"content":" thisIssue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":59,"author":{"gitId":"-"},"content":" descriptionComponent.issue \u003d thisIssue;"},{"lineNumber":60,"author":{"gitId":"-"},"content":" });"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" it(\u0027should be initialised with a FromGroup instance\u0027, () \u003d\u003e {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" descriptionComponent.ngOnInit();"},{"lineNumber":64,"author":{"gitId":"-"},"content":" expect(descriptionComponent.issueDescriptionForm.value).toEqual({ description: \u0027\u0027 });"},{"lineNumber":65,"author":{"gitId":"-"},"content":" });"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should mark isSavePending as true if called\u0027, () \u003d\u003e {"},{"lineNumber":68,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" descriptionComponent.isSavePending \u003d false;"},{"lineNumber":69,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" descriptionComponent.showSpinner();"},{"lineNumber":71,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(descriptionComponent.isSavePending).toEqual(true);"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":74,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":75,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should mark isSavePending as false if called\u0027, () \u003d\u003e {"},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" descriptionComponent.isSavePending \u003d true;"},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":78,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" descriptionComponent.hideSpinner();"},{"lineNumber":79,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":80,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(descriptionComponent.isSavePending).toEqual(false);"},{"lineNumber":81,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":82,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" it(\u0027should update the form value correctly and emit an event when entering edit mode\u0027, () \u003d\u003e {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" const descriptionComponentEditState \u003d spyOn(descriptionComponent.changeEditState, \u0027emit\u0027);"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" descriptionComponent.ngOnInit();"},{"lineNumber":87,"author":{"gitId":"-"},"content":" descriptionComponent.changeToEditMode();"},{"lineNumber":88,"author":{"gitId":"-"},"content":" expect(descriptionComponentEditState).toHaveBeenCalledTimes(1);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" expect(descriptionComponent.issueDescriptionForm.value).toEqual({ description: thisIssue.description });"},{"lineNumber":90,"author":{"gitId":"-"},"content":" });"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":" it(\u0027should not have its value updated with issue description is invalid\u0027, () \u003d\u003e {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" descriptionComponent.issue.description \u003d undefined;"},{"lineNumber":94,"author":{"gitId":"-"},"content":" descriptionComponent.ngOnInit();"},{"lineNumber":95,"author":{"gitId":"-"},"content":" descriptionComponent.changeToEditMode();"},{"lineNumber":96,"author":{"gitId":"-"},"content":" expect(descriptionComponent.issueDescriptionForm.value).toEqual({ description: \u0027\u0027 });"},{"lineNumber":97,"author":{"gitId":"-"},"content":" });"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" it(\u0027should highlight conflicting changes, if the issue description was updated simultaneously by another user\u0027, () \u003d\u003e {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // Simulation of getting updated issue from Github."},{"lineNumber":101,"author":{"gitId":"-"},"content":" const updatedIssue \u003d thisIssue.clone(phaseService.currentPhase);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" updatedIssue.description \u003d \u0027Issue description was modified simultaneously on GitHub\u0027;"},{"lineNumber":103,"author":{"gitId":"-"},"content":" issueService.issues \u003d [];"},{"lineNumber":104,"author":{"gitId":"-"},"content":" issueService.issues[updatedIssue.id] \u003d updatedIssue;"},{"lineNumber":105,"author":{"gitId":"-"},"content":" descriptionComponent.issue \u003d thisIssue;"},{"lineNumber":106,"author":{"gitId":"-"},"content":""},{"lineNumber":107,"author":{"gitId":"-"},"content":" const viewChangesCall \u003d spyOn(descriptionComponent, \u0027viewChanges\u0027);"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":" const form \u003d new NgForm([], []);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" descriptionComponent.ngOnInit();"},{"lineNumber":111,"author":{"gitId":"-"},"content":" descriptionComponent.changeToEditMode();"},{"lineNumber":112,"author":{"gitId":"-"},"content":""},{"lineNumber":113,"author":{"gitId":"-"},"content":" issueService.getLatestIssue.and.callFake((x: number) \u003d\u003e of(updatedIssue));"},{"lineNumber":114,"author":{"gitId":"-"},"content":" dialog.open.and.callFake((x: any) \u003d\u003e {});"},{"lineNumber":115,"author":{"gitId":"-"},"content":" errorHandlingService.handleError.and.callFake((x: any) \u003d\u003e {});"},{"lineNumber":116,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":117,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":118,"author":{"gitId":"-"},"content":" descriptionComponent.updateDescription(form);"},{"lineNumber":119,"author":{"gitId":"-"},"content":""},{"lineNumber":120,"author":{"gitId":"-"},"content":" expect(viewChangesCall).toHaveBeenCalledTimes(1);"},{"lineNumber":121,"author":{"gitId":"-"},"content":" expect(descriptionComponent.conflict.outdatedContent).toEqual(thisIssue.description);"},{"lineNumber":122,"author":{"gitId":"-"},"content":" expect(descriptionComponent.conflict.updatedContent).toEqual(updatedIssue.description);"},{"lineNumber":123,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(descriptionComponent.isSavePending).toEqual(false);"},{"lineNumber":124,"author":{"gitId":"-"},"content":" });"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":" it(\u0027should be configured correctly when description is updated\u0027, () \u003d\u003e {"},{"lineNumber":127,"author":{"gitId":"-"},"content":" const form \u003d new NgForm([], []);"},{"lineNumber":128,"author":{"gitId":"-"},"content":" const formResetForm \u003d spyOn(form, \u0027resetForm\u0027);"},{"lineNumber":129,"author":{"gitId":"-"},"content":" const issueUpdatedEmit \u003d spyOn(descriptionComponent.issueUpdated, \u0027emit\u0027);"},{"lineNumber":130,"author":{"gitId":"-"},"content":" const resetCall \u003d spyOn(descriptionComponent, \u0027resetToDefault\u0027);"},{"lineNumber":131,"author":{"gitId":"-"},"content":""},{"lineNumber":132,"author":{"gitId":"-"},"content":" descriptionComponent.ngOnInit();"},{"lineNumber":133,"author":{"gitId":"-"},"content":" descriptionComponent.changeToEditMode();"},{"lineNumber":134,"author":{"gitId":"-"},"content":""},{"lineNumber":135,"author":{"gitId":"-"},"content":" issueService.getLatestIssue.and.callFake((x: number) \u003d\u003e of(thisIssue));"},{"lineNumber":136,"author":{"gitId":"-"},"content":" issueService.updateIssue.and.callFake((x: Issue) \u003d\u003e of(x));"},{"lineNumber":137,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":138,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":139,"author":{"gitId":"-"},"content":" descriptionComponent.updateDescription(form);"},{"lineNumber":140,"author":{"gitId":"-"},"content":""},{"lineNumber":141,"author":{"gitId":"-"},"content":" expect(formResetForm).toHaveBeenCalledTimes(1);"},{"lineNumber":142,"author":{"gitId":"-"},"content":" expect(issueUpdatedEmit).toHaveBeenCalledTimes(1);"},{"lineNumber":143,"author":{"gitId":"-"},"content":" expect(resetCall).toHaveBeenCalledTimes(1);"},{"lineNumber":144,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(descriptionComponent.isSavePending).toEqual(false);"},{"lineNumber":145,"author":{"gitId":"-"},"content":" });"},{"lineNumber":146,"author":{"gitId":"-"},"content":""},{"lineNumber":147,"author":{"gitId":"-"},"content":" it(\u0027should revert edits if edit mode is cancelled\u0027, () \u003d\u003e {"},{"lineNumber":148,"author":{"gitId":"-"},"content":" const issueUpdatedEmit \u003d spyOn(descriptionComponent.issueUpdated, \u0027emit\u0027);"},{"lineNumber":149,"author":{"gitId":"-"},"content":" const resetCall \u003d spyOn(descriptionComponent, \u0027resetToDefault\u0027);"},{"lineNumber":150,"author":{"gitId":"-"},"content":""},{"lineNumber":151,"author":{"gitId":"-"},"content":" descriptionComponent.ngOnInit();"},{"lineNumber":152,"author":{"gitId":"-"},"content":" descriptionComponent.changeToEditMode();"},{"lineNumber":153,"author":{"gitId":"-"},"content":""},{"lineNumber":154,"author":{"gitId":"-"},"content":" issueService.getIssue.and.callFake((x: number) \u003d\u003e of(thisIssue));"},{"lineNumber":155,"author":{"gitId":"-"},"content":" issueService.updateIssue.and.callFake((x: Issue) \u003d\u003e of(x));"},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptionComponent.cancelEditMode();"},{"lineNumber":157,"author":{"gitId":"-"},"content":""},{"lineNumber":158,"author":{"gitId":"-"},"content":" expect(issueUpdatedEmit).toHaveBeenCalledTimes(1);"},{"lineNumber":159,"author":{"gitId":"-"},"content":" expect(resetCall).toHaveBeenCalledTimes(1);"},{"lineNumber":160,"author":{"gitId":"-"},"content":" });"},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":" it(\u0027should cancel edit mode only if confirmed in confirmation dialog\u0027, () \u003d\u003e {"},{"lineNumber":163,"author":{"gitId":"-"},"content":" const cancelEditCall \u003d spyOn(descriptionComponent, \u0027cancelEditMode\u0027);"},{"lineNumber":164,"author":{"gitId":"-"},"content":""},{"lineNumber":165,"author":{"gitId":"-"},"content":" descriptionComponent.ngOnInit();"},{"lineNumber":166,"author":{"gitId":"-"},"content":" descriptionComponent.changeToEditMode();"},{"lineNumber":167,"author":{"gitId":"-"},"content":""},{"lineNumber":168,"author":{"gitId":"-"},"content":" dialogService.openUserConfirmationModal.and.returnValue({ afterClosed: () \u003d\u003e of(false) } as MatDialogRef\u003cUserConfirmationComponent\u003e);"},{"lineNumber":169,"author":{"gitId":"-"},"content":" descriptionComponent.openCancelDialog();"},{"lineNumber":170,"author":{"gitId":"-"},"content":" expect(cancelEditCall).toHaveBeenCalledTimes(0);"},{"lineNumber":171,"author":{"gitId":"-"},"content":""},{"lineNumber":172,"author":{"gitId":"-"},"content":" dialogService.openUserConfirmationModal.and.returnValue({ afterClosed: () \u003d\u003e of(true) } as MatDialogRef\u003cUserConfirmationComponent\u003e);"},{"lineNumber":173,"author":{"gitId":"-"},"content":" descriptionComponent.openCancelDialog();"},{"lineNumber":174,"author":{"gitId":"-"},"content":" expect(cancelEditCall).toHaveBeenCalledTimes(1);"},{"lineNumber":175,"author":{"gitId":"-"},"content":" });"},{"lineNumber":176,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":40,"-":136}},{"path":"tests/app/shared/issue/duplicatedIssues/duplicated-issues.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { DebugElement } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ComponentFixture, TestBed, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { By, HAMMER_LOADER } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { RouterTestingModule } from \u0027@angular/router/testing\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Observable, of } from \u0027rxjs\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../../../../src/app/core/models/phase.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../../../../src/app/core/services/permission.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../../../src/app/core/services/phase.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { DuplicatedIssuesComponent } from \u0027../../../../../src/app/shared/issue/duplicatedIssues/duplicated-issues.component\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { MaterialModule } from \u0027../../../../../src/app/shared/material.module\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { TEAM_4 } from \u0027../../../../constants/data.constants\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" ISSUE_PENDING_MODERATION,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ISSUE_PENDING_MODERATION_HIGH_SEVERITY_FEATURE_FLAW,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" ISSUE_PENDING_MODERATION_LOW_SEVERITY_DOCUMENTATION_BUG"},{"lineNumber":19,"author":{"gitId":"-"},"content":"} from \u0027../../../../constants/githubissue.constants\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"describe(\u0027DuplicatedIssuesComponent\u0027, () \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" let component: DuplicatedIssuesComponent;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" let debugElement: DebugElement;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" let nativeElement: HTMLElement;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" let fixture: ComponentFixture\u003cDuplicatedIssuesComponent\u003e;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" let dummyDuplicatedIssues: Observable\u003cIssue[]\u003e;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" let thisIssue: Issue;"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" const dummyTeam \u003d TEAM_4;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" const firstDummyIssue \u003d Issue.createPhaseModerationIssue(ISSUE_PENDING_MODERATION_HIGH_SEVERITY_FEATURE_FLAW, dummyTeam);"},{"lineNumber":31,"author":{"gitId":"-"},"content":" const secondDummyIssue \u003d Issue.createPhaseModerationIssue(ISSUE_PENDING_MODERATION_LOW_SEVERITY_DOCUMENTATION_BUG, dummyTeam);"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" const permissionService: any \u003d jasmine.createSpyObj(\u0027PermissionService\u0027, [\u0027isTeamResponseEditable\u0027, \u0027isTutorResponseEditable\u0027]);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" const issueService: any \u003d jasmine.createSpyObj(\u0027IssueService\u0027, ["},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u0027getDuplicateIssuesFor\u0027,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u0027updateIssueWithComment\u0027,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u0027updateIssue\u0027,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u0027updateLocalStore\u0027"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ]);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" const phaseService: any \u003d jasmine.createSpyObj(\u0027PhaseService\u0027, [], { currentPhase: Phase.phaseModeration });"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" beforeEach(waitForAsync(() \u003d\u003e {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" TestBed.configureTestingModule({"},{"lineNumber":44,"author":{"gitId":"-"},"content":" declarations: [DuplicatedIssuesComponent],"},{"lineNumber":45,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":46,"author":{"gitId":"-"},"content":" IssueService,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ErrorHandlingService,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" PhaseService,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" PermissionService,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" provide: HAMMER_LOADER,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" useValue: () \u003d\u003e new Promise(() \u003d\u003e {})"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":55,"author":{"gitId":"-"},"content":" imports: [MaterialModule, RouterTestingModule]"},{"lineNumber":56,"author":{"gitId":"-"},"content":" })"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .overrideProvider(PermissionService, { useValue: permissionService })"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .overrideProvider(IssueService, { useValue: issueService })"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .overrideProvider(PhaseService, { useValue: phaseService })"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .compileComponents();"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }));"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" dummyDuplicatedIssues \u003d of([firstDummyIssue, secondDummyIssue]);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" issueService.getDuplicateIssuesFor.and.callFake(() \u003d\u003e dummyDuplicatedIssues);"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" thisIssue \u003d Issue.createPhaseModerationIssue(ISSUE_PENDING_MODERATION, dummyTeam);"},{"lineNumber":68,"author":{"gitId":"-"},"content":" firstDummyIssue.duplicateOf \u003d thisIssue.id;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" secondDummyIssue.duplicateOf \u003d thisIssue.id;"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" fixture \u003d TestBed.createComponent(DuplicatedIssuesComponent);"},{"lineNumber":72,"author":{"gitId":"-"},"content":" component \u003d fixture.componentInstance;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" component.issue \u003d thisIssue;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" debugElement \u003d fixture.debugElement;"},{"lineNumber":77,"author":{"gitId":"-"},"content":" nativeElement \u003d fixture.nativeElement;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" });"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" it(\u0027should create a chip for each duplicated issue\u0027, () \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Check that the number of chips is the same as the number of duplicate issues"},{"lineNumber":82,"author":{"gitId":"-"},"content":" const matChipListLength: number \u003d debugElement.queryAll(By.css(\u0027.mat-chip\u0027)).length;"},{"lineNumber":83,"author":{"gitId":"-"},"content":" const duplicateIssueslength: number \u003d getDuplicateIssuesLength();"},{"lineNumber":84,"author":{"gitId":"-"},"content":" expect(matChipListLength).toEqual(duplicateIssueslength);"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Check that first chip contains information on first issue in the duplicate issues array"},{"lineNumber":87,"author":{"gitId":"-"},"content":" const matChipAnchor: HTMLElement \u003d nativeElement.querySelector(\u0027a\u0027);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" expect(matChipAnchor.innerText).toEqual(`#${firstDummyIssue.id}`);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" });"},{"lineNumber":90,"author":{"gitId":"-"},"content":""},{"lineNumber":91,"author":{"gitId":"-"},"content":" it(\u0027should only allow cancellation of duplicate status if team/tutor response is editable\u0027, () \u003d\u003e {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Team/tutor response is not editable"},{"lineNumber":93,"author":{"gitId":"-"},"content":" mockTeamResponseEditPermission(permissionService, false);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" mockTutorResponseEditPermission(permissionService, false);"},{"lineNumber":95,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":96,"author":{"gitId":"-"},"content":" const cancelIconQuery \u003d debugElement.query(By.css(\u0027.mat-icon\u0027));"},{"lineNumber":97,"author":{"gitId":"-"},"content":" expect(cancelIconQuery).toBeNull();"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" // Team response is editable"},{"lineNumber":100,"author":{"gitId":"-"},"content":" mockTeamResponseEditPermission(permissionService, true);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" mockTutorResponseEditPermission(permissionService, false);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":103,"author":{"gitId":"-"},"content":" let cancelIcon: HTMLElement \u003d debugElement.query(By.css(\u0027.mat-icon\u0027)).nativeElement;"},{"lineNumber":104,"author":{"gitId":"-"},"content":" expect(cancelIcon).toBeDefined();"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" // Tutor response is editable"},{"lineNumber":107,"author":{"gitId":"-"},"content":" mockTeamResponseEditPermission(permissionService, false);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" mockTutorResponseEditPermission(permissionService, true);"},{"lineNumber":109,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":110,"author":{"gitId":"-"},"content":" cancelIcon \u003d debugElement.query(By.css(\u0027.mat-icon\u0027)).nativeElement;"},{"lineNumber":111,"author":{"gitId":"-"},"content":" expect(cancelIcon).toBeDefined();"},{"lineNumber":112,"author":{"gitId":"-"},"content":" });"},{"lineNumber":113,"author":{"gitId":"-"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":" it(\u0027should remove duplicate status of an duplicated issue once cancel icon is clicked\u0027, () \u003d\u003e {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" let updatedFirstDummyIssue: Issue;"},{"lineNumber":116,"author":{"gitId":"-"},"content":" issueService.updateIssueWithComment.and.callFake((duplicatedIssue: Issue) \u003d\u003e {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" updatedFirstDummyIssue \u003d duplicatedIssue;"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return of(duplicatedIssue);"},{"lineNumber":119,"author":{"gitId":"-"},"content":" });"},{"lineNumber":120,"author":{"gitId":"-"},"content":" mockTeamResponseEditPermission(permissionService, true);"},{"lineNumber":121,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":122,"author":{"gitId":"-"},"content":""},{"lineNumber":123,"author":{"gitId":"-"},"content":" expect(firstDummyIssue.duplicateOf).toEqual(component.issue.id);"},{"lineNumber":124,"author":{"gitId":"-"},"content":" cancelDuplicateStatus();"},{"lineNumber":125,"author":{"gitId":"-"},"content":" expect(updatedFirstDummyIssue.duplicateOf).toBeNull();"},{"lineNumber":126,"author":{"gitId":"-"},"content":" expect(issueService.updateLocalStore).toHaveBeenCalledWith(updatedFirstDummyIssue);"},{"lineNumber":127,"author":{"gitId":"-"},"content":" });"},{"lineNumber":128,"author":{"gitId":"-"},"content":""},{"lineNumber":129,"author":{"gitId":"-"},"content":" function getDuplicateIssuesLength(): number {"},{"lineNumber":130,"author":{"gitId":"-"},"content":" let length: number;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" component.duplicatedIssues.subscribe((x) \u003d\u003e (length \u003d x.length));"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return length;"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }"},{"lineNumber":134,"author":{"gitId":"-"},"content":""},{"lineNumber":135,"author":{"gitId":"-"},"content":" function cancelDuplicateStatus(): void {"},{"lineNumber":136,"author":{"gitId":"-"},"content":" const cancelIcon: HTMLElement \u003d debugElement.query(By.css(\u0027.mat-icon\u0027)).nativeElement;"},{"lineNumber":137,"author":{"gitId":"-"},"content":" cancelIcon.click();"},{"lineNumber":138,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }"},{"lineNumber":140,"author":{"gitId":"-"},"content":""},{"lineNumber":141,"author":{"gitId":"-"},"content":" function mockTeamResponseEditPermission(permissionService: any, editable: boolean): void {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" permissionService.isTeamResponseEditable.and.callFake(() \u003d\u003e editable);"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }"},{"lineNumber":144,"author":{"gitId":"-"},"content":""},{"lineNumber":145,"author":{"gitId":"-"},"content":" function mockTutorResponseEditPermission(permissionService: any, editable: boolean): void {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" permissionService.isTutorResponseEditable.and.callFake(() \u003d\u003e editable);"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }"},{"lineNumber":148,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":146}},{"path":"tests/app/shared/issue/label/label.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../../../../src/app/core/models/phase.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../../../../src/app/core/services/label.service\u0027;"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoadingService } from \u0027../../../../../src/app/core/services/loading.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../../../src/app/core/services/phase.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LabelComponent } from \u0027../../../../../src/app/shared/issue/label/label.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ISSUE_WITH_EMPTY_DESCRIPTION } from \u0027../../../../constants/githubissue.constants\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { COLOR_SEVERITY_HIGH, COLOR_SEVERITY_LOW, SEVERITY, SEVERITY_HIGH, SEVERITY_LABELS } from \u0027../../../../constants/label.constants\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"describe(\u0027LabelComponent\u0027, () \u003d\u003e {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" let labelComponent: any;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" let issueService: any;"},{"lineNumber":14,"author":{"gitId":"-"},"content":" let labelService: any;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" let phaseService: any;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" let thisIssue: Issue;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" let issueUpdatedEmit: any;"},{"lineNumber":18,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let loadingService: jasmine.SpyObj\u003cLoadingService\u003e;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" labelService \u003d jasmine.createSpyObj(LabelService, [\u0027getLabelList\u0027, \u0027getColorOfLabel\u0027]);"},{"lineNumber":22,"author":{"gitId":"-"},"content":" issueService \u003d jasmine.createSpyObj(\u0027IssueService\u0027, [\u0027getDuplicateIssuesFor\u0027, \u0027updateIssue\u0027]);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" phaseService \u003d jasmine.createSpyObj(PhaseService, [\u0027currentPhase\u0027]);"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService \u003d jasmine.createSpyObj(\u0027LoadingService\u0027, ["},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027showLoader\u0027,"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027hideLoader\u0027,"},{"lineNumber":27,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addAnimationMode\u0027,"},{"lineNumber":28,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addCssClasses\u0027,"},{"lineNumber":29,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addSpinnerOptions\u0027,"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addTheme\u0027,"},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addViewContainerRef\u0027"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ]);"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addAnimationMode.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addCssClasses.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addSpinnerOptions.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addTheme.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addViewContainerRef.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelComponent \u003d new LabelComponent(issueService, null, phaseService, labelService, null, null, loadingService);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" thisIssue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" labelComponent.issue \u003d thisIssue;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" labelComponent.attributeName \u003d SEVERITY;"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" issueUpdatedEmit \u003d spyOn(labelComponent.issueUpdated, \u0027emit\u0027);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" });"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should mark isSavePending as true if called\u0027, () \u003d\u003e {"},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelComponent.isSavePending \u003d false;"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":49,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelComponent.showSpinner();"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":51,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(labelComponent.isSavePending).toEqual(true);"},{"lineNumber":52,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":53,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should mark isSavePending as false if called\u0027, () \u003d\u003e {"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelComponent.isSavePending \u003d true;"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelComponent.hideSpinner();"},{"lineNumber":58,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":59,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(labelComponent.isSavePending).toEqual(false);"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" it(\u0027should be initialised with a list of label values and a labelColor\u0027, () \u003d\u003e {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" labelService.getLabelList.and.returnValue(SEVERITY_LABELS);"},{"lineNumber":64,"author":{"gitId":"-"},"content":" labelService.getColorOfLabel.and.returnValue(COLOR_SEVERITY_LOW);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" labelComponent.ngOnInit();"},{"lineNumber":66,"author":{"gitId":"-"},"content":" labelComponent.ngOnChanges();"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" expect(labelComponent.labelValues).toEqual(SEVERITY_LABELS);"},{"lineNumber":69,"author":{"gitId":"-"},"content":" expect(labelComponent.labelColor).toEqual(COLOR_SEVERITY_LOW);"},{"lineNumber":70,"author":{"gitId":"-"},"content":" });"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":" it(\u0027should change label color when updateLabel is called\u0027, () \u003d\u003e {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" labelService.getLabelList.and.returnValue(SEVERITY_LABELS);"},{"lineNumber":74,"author":{"gitId":"-"},"content":" labelService.getColorOfLabel.and.returnValue(COLOR_SEVERITY_LOW);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" labelComponent.ngOnInit();"},{"lineNumber":76,"author":{"gitId":"-"},"content":" labelComponent.ngOnChanges();"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" labelService.getColorOfLabel.and.returnValue(COLOR_SEVERITY_HIGH);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" phaseService.currentPhase.and.returnValue(Phase.phaseBugReporting);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" issueService.updateIssue.and.callFake((x: Issue) \u003d\u003e of(x));"},{"lineNumber":81,"author":{"gitId":"-"},"content":" issueService.getDuplicateIssuesFor.and.returnValue(of([]));"},{"lineNumber":82,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":83,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":84,"author":{"gitId":"-"},"content":" labelComponent.updateLabel(SEVERITY_HIGH);"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" expect(issueUpdatedEmit).toHaveBeenCalledTimes(1);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" expect(labelComponent.labelValues).toEqual(SEVERITY_LABELS);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" expect(labelComponent.labelColor).toEqual(COLOR_SEVERITY_HIGH);"},{"lineNumber":89,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(labelComponent.isSavePending).toEqual(false);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" });"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":" it(\u0027should update labels of duplicate issues\u0027, () \u003d\u003e {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" labelService.getLabelList.and.returnValue(SEVERITY_LABELS);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" labelService.getColorOfLabel.and.returnValue(COLOR_SEVERITY_LOW);"},{"lineNumber":95,"author":{"gitId":"-"},"content":" labelComponent.ngOnInit();"},{"lineNumber":96,"author":{"gitId":"-"},"content":" labelComponent.ngOnChanges();"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" phaseService.currentPhase.and.returnValue(Phase.phaseTeamResponse);"},{"lineNumber":99,"author":{"gitId":"-"},"content":" issueService.updateIssue.and.callFake((x: Issue) \u003d\u003e of(x));"},{"lineNumber":100,"author":{"gitId":"-"},"content":""},{"lineNumber":101,"author":{"gitId":"-"},"content":" const duplicateIssue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" issueService.getDuplicateIssuesFor.and.returnValue(of([duplicateIssue]));"},{"lineNumber":103,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":104,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":105,"author":{"gitId":"-"},"content":" labelComponent.updateLabel(SEVERITY_HIGH);"},{"lineNumber":106,"author":{"gitId":"-"},"content":""},{"lineNumber":107,"author":{"gitId":"-"},"content":" const updatedIssue \u003d thisIssue.clone(phaseService.currentPhase);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" updatedIssue.severity \u003d SEVERITY_HIGH;"},{"lineNumber":109,"author":{"gitId":"-"},"content":" const updatedDuplicateIssue \u003d duplicateIssue.clone(phaseService.currentPhase);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" updatedDuplicateIssue.severity \u003d SEVERITY_HIGH;"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":" expect(issueService.updateIssue).toHaveBeenCalledWith(updatedIssue);"},{"lineNumber":113,"author":{"gitId":"-"},"content":" expect(issueService.updateIssue).toHaveBeenCalledWith(updatedDuplicateIssue);"},{"lineNumber":114,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(labelComponent.isSavePending).toEqual(false);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" });"},{"lineNumber":116,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":39,"-":77}},{"path":"tests/app/shared/issue/title/title.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { FormBuilder, NgForm } from \u0027@angular/forms\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatDialogRef } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { UserConfirmationComponent } from \u0027../../../../../src/app/core/guards/user-confirmation/user-confirmation.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../../../../src/app/core/models/phase.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../../../../src/app/core/services/dialog.service\u0027;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoadingService } from \u0027../../../../../src/app/core/services/loading.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../../../src/app/core/services/phase.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { TitleComponent } from \u0027../../../../../src/app/shared/issue/title/title.component\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { ISSUE_WITH_EMPTY_DESCRIPTION } from \u0027../../../../constants/githubissue.constants\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"describe(\u0027TitleComponent\u0027, () \u003d\u003e {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" let titleComponent: TitleComponent;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" let issueService: any;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" let thisIssue: Issue;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" let formBuilder: any;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" let phaseService: PhaseService;"},{"lineNumber":19,"author":{"gitId":"-"},"content":" let dialogService: jasmine.SpyObj\u003cDialogService\u003e;"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let loadingService: jasmine.SpyObj\u003cLoadingService\u003e;"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" formBuilder \u003d new FormBuilder();"},{"lineNumber":24,"author":{"gitId":"-"},"content":" phaseService \u003d new PhaseService(null, null, null);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" phaseService.currentPhase \u003d Phase.phaseTeamResponse;"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" issueService \u003d jasmine.createSpyObj(\u0027IssueService\u0027, [\u0027updateIssue\u0027]);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" dialogService \u003d jasmine.createSpyObj(\u0027DialogService\u0027, [\u0027openUserConfirmationModal\u0027]);"},{"lineNumber":29,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService \u003d jasmine.createSpyObj(\u0027LoadingService\u0027, ["},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027showLoader\u0027,"},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027hideLoader\u0027,"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addAnimationMode\u0027,"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addCssClasses\u0027,"},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addSpinnerOptions\u0027,"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addTheme\u0027,"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addViewContainerRef\u0027"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ]);"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addAnimationMode.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":39,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addCssClasses.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addSpinnerOptions.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addTheme.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addViewContainerRef.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" titleComponent \u003d new TitleComponent(issueService, formBuilder, null, null, phaseService, dialogService, loadingService);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" thisIssue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":45,"author":{"gitId":"-"},"content":" titleComponent.issue \u003d thisIssue;"},{"lineNumber":46,"author":{"gitId":"-"},"content":" });"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" it(\u0027should be initialised with an issueTitleForm\u0027, () \u003d\u003e {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" titleComponent.ngOnInit();"},{"lineNumber":50,"author":{"gitId":"-"},"content":" expect(titleComponent.issueTitleForm.value).toEqual({ title: \u0027\u0027 });"},{"lineNumber":51,"author":{"gitId":"-"},"content":" });"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should mark isSavePending as true if called\u0027, () \u003d\u003e {"},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" titleComponent.isSavePending \u003d false;"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" titleComponent.showSpinner();"},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":58,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(titleComponent.isSavePending).toEqual(true);"},{"lineNumber":59,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should mark isSavePending as false if called\u0027, () \u003d\u003e {"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" titleComponent.isSavePending \u003d true;"},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" titleComponent.hideSpinner();"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(titleComponent.isSavePending).toEqual(false);"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":68,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" it(\u0027should be updated with correct flags and values in editing mode\u0027, () \u003d\u003e {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" titleComponent.ngOnInit();"},{"lineNumber":71,"author":{"gitId":"-"},"content":" titleComponent.changeToEditMode();"},{"lineNumber":72,"author":{"gitId":"-"},"content":" expect(titleComponent.isEditing).toEqual(true);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" expect(titleComponent.issueTitleForm.value).toEqual({ title: thisIssue.title });"},{"lineNumber":74,"author":{"gitId":"-"},"content":" });"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" it(\u0027should not have its value updated with issue title is invalid\u0027, () \u003d\u003e {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" thisIssue.title \u003d undefined;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" titleComponent.issue \u003d thisIssue;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" titleComponent.ngOnInit();"},{"lineNumber":80,"author":{"gitId":"-"},"content":" titleComponent.changeToEditMode();"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expect(titleComponent.isEditing).toEqual(true);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" expect(titleComponent.issueTitleForm.value).toEqual({ title: \u0027\u0027 });"},{"lineNumber":83,"author":{"gitId":"-"},"content":" });"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" it(\u0027should be configured correctly when title is updated\u0027, () \u003d\u003e {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" const form \u003d new NgForm([], []);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" const formResetForm \u003d spyOn(form, \u0027resetForm\u0027);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" const titleComponentEmitter \u003d spyOn(titleComponent.issueUpdated, \u0027emit\u0027);"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" titleComponent.ngOnInit();"},{"lineNumber":91,"author":{"gitId":"-"},"content":" titleComponent.changeToEditMode();"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" issueService.updateIssue.and.callFake((x: Issue) \u003d\u003e of(x));"},{"lineNumber":94,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":95,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":96,"author":{"gitId":"-"},"content":" titleComponent.updateTitle(form);"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" expect(formResetForm).toHaveBeenCalledTimes(1);"},{"lineNumber":99,"author":{"gitId":"-"},"content":" expect(titleComponentEmitter).toHaveBeenCalledTimes(1);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" expect(titleComponent.isEditing).toEqual(false);"},{"lineNumber":101,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(titleComponent.isSavePending).toEqual(false);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" });"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":" it(\u0027should cancel edit mode only if confirmed in confirmation dialog\u0027, () \u003d\u003e {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" titleComponent.ngOnInit();"},{"lineNumber":106,"author":{"gitId":"-"},"content":" titleComponent.changeToEditMode();"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" dialogService.openUserConfirmationModal.and.returnValue({ afterClosed: () \u003d\u003e of(false) } as MatDialogRef\u003cUserConfirmationComponent\u003e);"},{"lineNumber":109,"author":{"gitId":"-"},"content":" titleComponent.openCancelDialog();"},{"lineNumber":110,"author":{"gitId":"-"},"content":" expect(titleComponent.isEditing).toEqual(true);"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":" dialogService.openUserConfirmationModal.and.returnValue({ afterClosed: () \u003d\u003e of(true) } as MatDialogRef\u003cUserConfirmationComponent\u003e);"},{"lineNumber":113,"author":{"gitId":"-"},"content":" titleComponent.openCancelDialog();"},{"lineNumber":114,"author":{"gitId":"-"},"content":" expect(titleComponent.isEditing).toEqual(false);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" });"},{"lineNumber":116,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":36,"-":80}},{"path":"tests/constants/githubcomment.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { GithubComment } from \u0027../../src/app/core/models/github/github-comment.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"export const EMPTY_TEAM_RESPONSE: GithubComment \u003d {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" body: \"# Team\u0027s Response\\n\" + \u0027\\n\u0027 + \u0027 ## Duplicate status (if any):\\n\u0027 + \u0027--\u0027,"},{"lineNumber":5,"author":{"gitId":"-"},"content":" created_at: \u00272020-02-16T18:31:38Z\u0027,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id: 586737495,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" issue_url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/91\u0027,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-02T12:50:02Z\u0027,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/comments/586737495\u0027,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" user: {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" login: \u0027testathorStudent\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" id: 46639862,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" avatar_url: \u0027https://avatars3.githubusercontent.com/u/46639862?v\u003d4\u0027,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/testathorStudent\u0027"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }"},{"lineNumber":16,"author":{"gitId":"-"},"content":"};"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":"// Type and severity disagreeement"},{"lineNumber":19,"author":{"gitId":"-"},"content":"export const TEAM_RESPONSE_MULTIPLE_DISAGREEMENT \u003d {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" body:"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u0027[IMPORTANT!: Please do not edit or reply to this comment using the GitHub UI. You can respond to it using CATcher during the next phase of the PE]\\n\\n\u0027 +"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \"# Team\u0027s Response\\n\" +"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u0027This is a dummy team response comment: \u0027 +"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u0027Thanks for the feedback\\n\\n\u0027 +"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u0027# Items for the Tester to Verify\\n\\n\u0027 +"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u0027## :question: Issue severity\\n\\n\u0027 +"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u0027Team chose [`severity.Low`]\\n\u0027 +"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u0027Originally [`severity.High`]\\n\\n\u0027 +"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u0027- [ ] I disagree\\n\\n\u0027 +"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u0027**Reason for disagreement:** [replace this with your reason]\\n\\n\u0027 +"},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n\\n\u0027 +"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u0027## :question: Issue type\\n\\n\u0027 +"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u0027Team chose [`type.DocumentationBug`]\\n\u0027 +"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u0027Originally [`type.FunctionalityBug`]\\n\\n\u0027 +"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u0027- [ ] I disagree\\n\\n\u0027 +"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u0027**Reason for disagreement:** [replace this with your reason]\\n\\n\u0027 +"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" created_at: \u00272021-06-29T17:15:11Z\u0027,"},{"lineNumber":39,"author":{"gitId":"-"},"content":" id: 870774171,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" updated_at: \u00272021-06-29T17:15:11Z\u0027"},{"lineNumber":41,"author":{"gitId":"-"},"content":"} as GithubComment;"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":"export const PENDING_TUTOR_MODERATION: GithubComment \u003d {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" body:"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u0027# Tutor Moderation\\n\\n\u0027 +"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027## :question: Issue Type\\n\\n- [x] Done\\n\\ntest\\n\\n\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n\u0027 +"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u0027## :question: Issue Severity\\n\\n- [ ] Done\\n\\n\u0027 +"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027[replace this with your explanation]\\n\\n\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n\u0027 +"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u0027## :question: Not Related Question\\n\\n- [ ] Done\\n\\n\u0027 +"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027[replace this with your explanation]\\n\\n\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n\u0027,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" created_at: \u00272020-08-15T06:39:24Z\u0027,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" id: 674357972,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" issue_url: \u0027https://api.github.com/repos/CATcher-org/pe-evaluation/issues/26\u0027,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" updated_at: \u00272020-08-15T06:39:40Z\u0027,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-evaluation/issues/comments/674357972\u0027,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" user: {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" login: \u0027testathorTutor\u0027,"},{"lineNumber":58,"author":{"gitId":"-"},"content":" id: 46640218,"},{"lineNumber":59,"author":{"gitId":"-"},"content":" avatar_url: \u0027https://avatars2.githubusercontent.com/u/46640218?v\u003d4\u0027,"},{"lineNumber":60,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/testathorTutor\u0027"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }"},{"lineNumber":62,"author":{"gitId":"-"},"content":"};"}],"authorContributionMap":{"vigneshsankariyer1234567890":5,"-":57}},{"path":"tests/constants/githubissue.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { IssueState } from \u0027../../graphql/graphql-types\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027../../src/app/core/models/github/github-issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../../src/app/core/models/github/github-label.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { USER_ANUBHAV, USER_SHUMING } from \u0027./data.constants\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { EMPTY_TEAM_RESPONSE, PENDING_TUTOR_MODERATION } from \u0027./githubcomment.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":7,"author":{"gitId":"-"},"content":" GITHUB_LABEL_DOCUMENTATION_BUG,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" GITHUB_LABEL_FEATURE_FLAW,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" GITHUB_LABEL_FUNCTIONALITY_BUG,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" GITHUB_LABEL_HIGH_SEVERITY,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" GITHUB_LABEL_LOW_SEVERITY,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GITHUB_LABEL_MEDIUM_SEVERITY,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" GITHUB_LABEL_TEAM_LABEL,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" GITHUB_LABEL_TUTORIAL_LABEL"},{"lineNumber":15,"author":{"gitId":"-"},"content":"} from \u0027./githublabel.constants\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"const randomId: () \u003d\u003e string \u003d () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return Math.floor(Math.random() * 1000000000).toString();"},{"lineNumber":19,"author":{"gitId":"-"},"content":"};"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"const randomIssueNumber: () \u003d\u003e number \u003d () \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return Math.round(Math.random() * 1000);"},{"lineNumber":23,"author":{"gitId":"-"},"content":"};"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"const randomISODate: (startDate?: Date, endDate?: Date) \u003d\u003e string \u003d ("},{"lineNumber":26,"author":{"gitId":"-"},"content":" startDate: Date \u003d new Date(2020, 1, 1),"},{"lineNumber":27,"author":{"gitId":"-"},"content":" endDate: Date \u003d new Date()"},{"lineNumber":28,"author":{"gitId":"-"},"content":") \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return new Date(startDate.getTime() + Math.random() * (startDate.getTime() - endDate.getTime())).toISOString();"},{"lineNumber":30,"author":{"gitId":"-"},"content":"};"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":"const USER_ANUBHAV_DETAILS \u003d {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" login: USER_ANUBHAV.loginId,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" avatar_url: \u0027https://avatars1.githubusercontent.com/u/35621759?v\u003d4\u0027,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/anubh-v\u0027"},{"lineNumber":36,"author":{"gitId":"-"},"content":"};"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"const USER_ANUBHAV_ASSIGNEE_DETAILS \u003d {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" login: USER_ANUBHAV.loginId,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" id: 35621759,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/anubh-v\u0027"},{"lineNumber":42,"author":{"gitId":"-"},"content":"};"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":"const USER_SHUMING_DETAILS \u003d {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" login: USER_SHUMING.loginId,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" avatar_url: \u0027https://avatars0.githubusercontent.com/u/43642522?v\u003d4\u0027,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/geshuming\u0027"},{"lineNumber":48,"author":{"gitId":"-"},"content":"};"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":"const USER_SHUMING_ASSIGNEE_DETAILS \u003d {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" login: \u0027geshuming\u0027,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" id: 43642522,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/geshuming\u0027"},{"lineNumber":54,"author":{"gitId":"-"},"content":"};"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":"const ISSUE_BODY \u003d"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u0027# Issue Description\\n{original issue description}\\n\u0027 +"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \"# Team\u0027s Response\\n{team\u0027s response}\\n # Disputes\\n\\n\" +"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \"## :question: Issue Type\\n\\n### Team says:\\r\\n{the team\u0027s action that is being disputed}\\r\\n\\r\\n\" +"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \"### Tester says:\\r\\n{tester\u0027s objection}\\n\\n\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n## :question: Issue Severity\\n\\n\" +"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \"### Team says:\\r\\n{the team\u0027s action that is being disputed}\\r\\n\\r\\n\" +"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \"### Tester says:\\r\\n{tester\u0027s objection}\\n\\n\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n## :question: Not Related Question\\n\\n\" +"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \"### Team says:\\r\\n{the team\u0027s action that is being disputed}\\r\\n\\r\\n\" +"},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \"### Tester says:\\r\\n{tester\u0027s objection}\\n\\n\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n\\n\";"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_EMPTY_DESCRIPTION \u003d new GithubIssue({"},{"lineNumber":67,"author":{"gitId":"-"},"content":" id: \u0027574085971\u0027,"},{"lineNumber":68,"author":{"gitId":"-"},"content":" number: 92,"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":70,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":71,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":72,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-02T16:19:02Z\u0027,"},{"lineNumber":73,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":74,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":75,"author":{"gitId":"-"},"content":" title: \u0027App starts to lag when given large amount of input\u0027,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-13T13:37:32Z\u0027,"},{"lineNumber":77,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/92\u0027,"},{"lineNumber":78,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":79,"author":{"gitId":"-"},"content":"});"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY \u003d new GithubIssue({"},{"lineNumber":82,"author":{"gitId":"-"},"content":" id: \u0027384830567\u0027,"},{"lineNumber":83,"author":{"gitId":"-"},"content":" number: 130,"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":85,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":86,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":87,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-02T16:19:02Z\u0027,"},{"lineNumber":88,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FEATURE_FLAW, GITHUB_LABEL_LOW_SEVERITY],"},{"lineNumber":89,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":90,"author":{"gitId":"-"},"content":" title: \u0027App is sometimes slow\u0027,"},{"lineNumber":91,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-13T13:37:32Z\u0027,"},{"lineNumber":92,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/130\u0027,"},{"lineNumber":93,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":94,"author":{"gitId":"-"},"content":"});"},{"lineNumber":95,"author":{"gitId":"-"},"content":""},{"lineNumber":96,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY \u003d new GithubIssue({"},{"lineNumber":97,"author":{"gitId":"-"},"content":" id: \u0027573957398\u0027,"},{"lineNumber":98,"author":{"gitId":"-"},"content":" number: 32,"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":100,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":101,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":102,"author":{"gitId":"-"},"content":" created_at: \u00272010-03-12T19:12:02Z\u0027,"},{"lineNumber":103,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_DOCUMENTATION_BUG, GITHUB_LABEL_HIGH_SEVERITY],"},{"lineNumber":104,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":105,"author":{"gitId":"-"},"content":" title: \u0027Too many typos\u0027,"},{"lineNumber":106,"author":{"gitId":"-"},"content":" updated_at: \u00272012-03-12T19:12:02Z\u0027,"},{"lineNumber":107,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/130\u0027,"},{"lineNumber":108,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":109,"author":{"gitId":"-"},"content":"});"},{"lineNumber":110,"author":{"gitId":"-"},"content":""},{"lineNumber":111,"author":{"gitId":"-"},"content":"export const DUPLICATED_ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY \u003d new GithubIssue({"},{"lineNumber":112,"author":{"gitId":"-"},"content":" id: \u0027573957399\u0027,"},{"lineNumber":113,"author":{"gitId":"-"},"content":" number: 33,"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":115,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":116,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":117,"author":{"gitId":"-"},"content":" created_at: \u00272010-04-12T19:12:02Z\u0027,"},{"lineNumber":118,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_DOCUMENTATION_BUG, GITHUB_LABEL_HIGH_SEVERITY],"},{"lineNumber":119,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":120,"author":{"gitId":"-"},"content":" title: \u0027Too many typos 2\u0027,"},{"lineNumber":121,"author":{"gitId":"-"},"content":" updated_at: \u00272012-04-12T19:12:02Z\u0027,"},{"lineNumber":122,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/130\u0027,"},{"lineNumber":123,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":124,"author":{"gitId":"-"},"content":"});"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_ASSIGNEES \u003d new GithubIssue({"},{"lineNumber":127,"author":{"gitId":"-"},"content":" id: \u0027551732011\u0027,"},{"lineNumber":128,"author":{"gitId":"-"},"content":" number: 91,"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assignees: [USER_ANUBHAV_ASSIGNEE_DETAILS, USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":130,"author":{"gitId":"-"},"content":" body: \u0027Screen freezes every few minutes\u0027,"},{"lineNumber":131,"author":{"gitId":"-"},"content":" created_at: \u00272020-01-18T07:01:45Z\u0027,"},{"lineNumber":132,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":133,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":134,"author":{"gitId":"-"},"content":" title: \u0027Screen freezes\u0027,"},{"lineNumber":135,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-02T12:50:02Z\u0027,"},{"lineNumber":136,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/91\u0027,"},{"lineNumber":137,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS,"},{"lineNumber":138,"author":{"gitId":"-"},"content":" comments: [EMPTY_TEAM_RESPONSE]"},{"lineNumber":139,"author":{"gitId":"-"},"content":"});"},{"lineNumber":140,"author":{"gitId":"-"},"content":""},{"lineNumber":141,"author":{"gitId":"-"},"content":"export const generateIssueWithRandomData: () \u003d\u003e GithubIssue \u003d () \u003d\u003e {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" const created_and_updated_date: string \u003d randomISODate();"},{"lineNumber":143,"author":{"gitId":"-"},"content":" const issueNumber: number \u003d randomIssueNumber();"},{"lineNumber":144,"author":{"gitId":"-"},"content":" const severityLabels: GithubLabel[] \u003d [GITHUB_LABEL_LOW_SEVERITY, GITHUB_LABEL_MEDIUM_SEVERITY, GITHUB_LABEL_HIGH_SEVERITY];"},{"lineNumber":145,"author":{"gitId":"-"},"content":" const typeLabels: GithubLabel[] \u003d [GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_FEATURE_FLAW, GITHUB_LABEL_DOCUMENTATION_BUG];"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return new GithubIssue({"},{"lineNumber":147,"author":{"gitId":"-"},"content":" id: randomId(),"},{"lineNumber":148,"author":{"gitId":"-"},"content":" number: issueNumber,"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":150,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":151,"author":{"gitId":"-"},"content":" body: `Issue No.: ${issueNumber}\\nSample Content.`,"},{"lineNumber":152,"author":{"gitId":"-"},"content":" created_at: created_and_updated_date,"},{"lineNumber":153,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, typeLabels[issueNumber % 3], severityLabels[issueNumber % 3]],"},{"lineNumber":154,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":155,"author":{"gitId":"-"},"content":" title: `Random Issue: ${issueNumber}`,"},{"lineNumber":156,"author":{"gitId":"-"},"content":" updated_at: created_and_updated_date,"},{"lineNumber":157,"author":{"gitId":"-"},"content":" url: `https://api.github.com/repos/CATcher-org/pe-results/issues/${issueNumber}`,"},{"lineNumber":158,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":159,"author":{"gitId":"-"},"content":" });"},{"lineNumber":160,"author":{"gitId":"-"},"content":"};"},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":"export const ISSUE_PENDING_MODERATION \u003d new GithubIssue({"},{"lineNumber":163,"author":{"gitId":"-"},"content":" id: \u0027574674360\u0027,"},{"lineNumber":164,"author":{"gitId":"-"},"content":" number: 26,"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assignees: [USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":166,"author":{"gitId":"-"},"content":" body: ISSUE_BODY,"},{"lineNumber":167,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-03T13:38:32Z\u0027,"},{"lineNumber":168,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":169,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":170,"author":{"gitId":"-"},"content":" title: \u0027Basic Issue, Three Disputes, Unsure\u0027,"},{"lineNumber":171,"author":{"gitId":"-"},"content":" updated_at: \u00272020-08-15T06:39:40Z\u0027,"},{"lineNumber":172,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/26\u0027,"},{"lineNumber":173,"author":{"gitId":"-"},"content":" user: USER_SHUMING_DETAILS,"},{"lineNumber":174,"author":{"gitId":"-"},"content":" comments: [PENDING_TUTOR_MODERATION]"},{"lineNumber":175,"author":{"gitId":"-"},"content":"});"},{"lineNumber":176,"author":{"gitId":"-"},"content":""},{"lineNumber":177,"author":{"gitId":"-"},"content":"export const ISSUE_PENDING_MODERATION_HIGH_SEVERITY_FEATURE_FLAW \u003d new GithubIssue({"},{"lineNumber":178,"author":{"gitId":"-"},"content":" id: \u0027239538360\u0027,"},{"lineNumber":179,"author":{"gitId":"-"},"content":" number: 93,"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assignees: [USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":181,"author":{"gitId":"-"},"content":" body: ISSUE_BODY,"},{"lineNumber":182,"author":{"gitId":"-"},"content":" created_at: \u00272020-10-14T10:28:32Z\u0027,"},{"lineNumber":183,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FEATURE_FLAW, GITHUB_LABEL_HIGH_SEVERITY],"},{"lineNumber":184,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":185,"author":{"gitId":"-"},"content":" title: \u0027Redundant buggy feature\u0027,"},{"lineNumber":186,"author":{"gitId":"-"},"content":" updated_at: \u00272020-11-25T13:19:40Z\u0027,"},{"lineNumber":187,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/26\u0027,"},{"lineNumber":188,"author":{"gitId":"-"},"content":" user: USER_SHUMING_DETAILS,"},{"lineNumber":189,"author":{"gitId":"-"},"content":" comments: [PENDING_TUTOR_MODERATION]"},{"lineNumber":190,"author":{"gitId":"-"},"content":"});"},{"lineNumber":191,"author":{"gitId":"-"},"content":""},{"lineNumber":192,"author":{"gitId":"-"},"content":"export const ISSUE_PENDING_MODERATION_LOW_SEVERITY_DOCUMENTATION_BUG \u003d new GithubIssue({"},{"lineNumber":193,"author":{"gitId":"-"},"content":" id: \u0027384756360\u0027,"},{"lineNumber":194,"author":{"gitId":"-"},"content":" number: 6,"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assignees: [USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":196,"author":{"gitId":"-"},"content":" body: ISSUE_BODY,"},{"lineNumber":197,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-26T09:08:12Z\u0027,"},{"lineNumber":198,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_DOCUMENTATION_BUG, GITHUB_LABEL_LOW_SEVERITY],"},{"lineNumber":199,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":200,"author":{"gitId":"-"},"content":" title: \u0027Documentation bug, too many typos\u0027,"},{"lineNumber":201,"author":{"gitId":"-"},"content":" updated_at: \u00272020-11-10T16:59:40Z\u0027,"},{"lineNumber":202,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/26\u0027,"},{"lineNumber":203,"author":{"gitId":"-"},"content":" user: USER_SHUMING_DETAILS,"},{"lineNumber":204,"author":{"gitId":"-"},"content":" comments: [PENDING_TUTOR_MODERATION]"},{"lineNumber":205,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":3,"-":202}},{"path":"tests/constants/label.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Label } from \u0027../../src/app/core/models/label.model\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LabelService, LABEL_DEFINITIONS } from \u0027../../src/app/core/services/label.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"// Label name constants"},{"lineNumber":5,"author":{"gitId":"-"},"content":"export const SEVERITY_VERY_LOW \u003d \u0027Very Low\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"export const SEVERITY_LOW \u003d \u0027Low\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"export const SEVERITY_MEDIUM \u003d \u0027Medium\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"export const SEVERITY_HIGH \u003d \u0027High\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"export const TYPE_DOCUMENTATION_BUG \u003d \u0027DocumentationBug\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"export const TYPE_FUNCTIONALITY_BUG \u003d \u0027FunctionalityBug\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"export const TYPE_FEATURE_FLAW \u003d \u0027FeatureFlaw\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"export const RESPONSE_ACCEPTED \u003d \u0027Accepted\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"export const RESPONSE_REJECTED \u003d \u0027Rejected\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"export const RESPONSE_ISSUE_UNCLEAR \u003d \u0027IssueUnclear\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export const RESPONSE_CANNOT_REPRODUCE \u003d \u0027CannotReproduce\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"export const STATUS_DONE \u003d \u0027Done\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"export const STATUS_INCOMPLETE \u003d \u0027Incomplete\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"// Label category constants"},{"lineNumber":20,"author":{"gitId":"-"},"content":"export const SEVERITY \u003d \u0027severity\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"export const TYPE \u003d \u0027type\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"export const RESPONSE \u003d \u0027response\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"export const STATUS \u003d \u0027status\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"// Label color constants"},{"lineNumber":26,"author":{"gitId":"-"},"content":"export const COLOR_BLACK \u003d \u0027000000\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"export const COLOR_WHITE \u003d \u0027ffffff\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_VERY_LOW \u003d \u0027ffe0e0\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_LOW \u003d \u0027ffcccc\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_MEDIUM \u003d \u0027ff9999\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_HIGH \u003d \u0027ff6666\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"export const COLOR_TYPE_DOCUMENTATION_BUG \u003d \u0027d966ff\u0027;"},{"lineNumber":33,"author":{"gitId":"-"},"content":"export const COLOR_TYPE_FUNCTIONALITY_BUG \u003d \u00279900cc\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":"export const COLOR_RESPONSE_ACCEPTED \u003d \u002700802b\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":"export const COLOR_RESPONSE_REJECTED \u003d \u0027ff9900\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":"export const COLOR_RESPONSE_ISSUE_UNCLEAR \u003d \u0027ffcc80\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":"export const COLOR_RESPONSE_CANNOT_REPRODUCE \u003d \u0027ffebcc\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":"export const COLOR_STATUS_DONE \u003d \u0027a6a6a6\u0027;"},{"lineNumber":39,"author":{"gitId":"-"},"content":"export const COLOR_STATUS_INCOMPLETE \u003d \u0027000000\u0027;"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"export const CSS_BORDER_RADIUS_3PX \u003d \u00273px\u0027;"},{"lineNumber":42,"author":{"gitId":"-"},"content":"export const CSS_CURSOR_DEFAULT \u003d \u0027default\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":"export const CSS_PADDING_3PX \u003d \u00273px\u0027;"},{"lineNumber":44,"author":{"gitId":"-"},"content":"export const CSS_FONT_WEIGHT_410 \u003d \u0027410\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":"export const CSS_DISPLAY_INLINE_FLEX \u003d \u0027inline-flex\u0027;"},{"lineNumber":46,"author":{"gitId":"-"},"content":"export const CSS_DISPLAY_INLINE_BLOCK \u003d \u0027inline-block\u0027;"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":"// CSS style constants"},{"lineNumber":49,"author":{"gitId":"-"},"content":"export const DARK_BG_LIGHT_TEXT \u003d {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${COLOR_BLACK}`,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u0027border-radius\u0027: CSS_BORDER_RADIUS_3PX,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" cursor: CSS_CURSOR_DEFAULT,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" padding: CSS_PADDING_3PX,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" color: `#${COLOR_WHITE}`,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u0027font-weight\u0027: CSS_FONT_WEIGHT_410,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" display: CSS_DISPLAY_INLINE_FLEX"},{"lineNumber":57,"author":{"gitId":"-"},"content":"};"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":"export const LIGHT_BG_DARK_TEXT \u003d {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${COLOR_WHITE}`,"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u0027border-radius\u0027: CSS_BORDER_RADIUS_3PX,"},{"lineNumber":62,"author":{"gitId":"-"},"content":" cursor: CSS_CURSOR_DEFAULT,"},{"lineNumber":63,"author":{"gitId":"-"},"content":" padding: CSS_PADDING_3PX,"},{"lineNumber":64,"author":{"gitId":"-"},"content":" color: `#${COLOR_BLACK}`,"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0027font-weight\u0027: CSS_FONT_WEIGHT_410,"},{"lineNumber":66,"author":{"gitId":"-"},"content":" display: CSS_DISPLAY_INLINE_FLEX"},{"lineNumber":67,"author":{"gitId":"-"},"content":"};"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":"export const INLINE_BLOCK_TEXT \u003d {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${COLOR_WHITE}`,"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u0027border-radius\u0027: CSS_BORDER_RADIUS_3PX,"},{"lineNumber":72,"author":{"gitId":"-"},"content":" cursor: CSS_CURSOR_DEFAULT,"},{"lineNumber":73,"author":{"gitId":"-"},"content":" padding: CSS_PADDING_3PX,"},{"lineNumber":74,"author":{"gitId":"-"},"content":" color: `#${COLOR_BLACK}`,"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u0027font-weight\u0027: CSS_FONT_WEIGHT_410,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" display: CSS_DISPLAY_INLINE_BLOCK"},{"lineNumber":77,"author":{"gitId":"-"},"content":"};"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":"export const RESPONSE_REJECTED_LABEL \u003d new Label(RESPONSE, RESPONSE_REJECTED, COLOR_RESPONSE_REJECTED, LABEL_DEFINITIONS.responseRejected);"},{"lineNumber":80,"author":{"gitId":"-"},"content":"export const STATUS_DONE_LABEL \u003d new Label(STATUS, STATUS_DONE, COLOR_STATUS_DONE);"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":"export const TYPE_DOCUMENTATION_BUG_LABEL \u003d new Label("},{"lineNumber":83,"author":{"gitId":"-"},"content":" TYPE,"},{"lineNumber":84,"author":{"gitId":"-"},"content":" TYPE_DOCUMENTATION_BUG,"},{"lineNumber":85,"author":{"gitId":"-"},"content":" COLOR_TYPE_DOCUMENTATION_BUG,"},{"lineNumber":86,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.typeDocumentationBug"},{"lineNumber":87,"author":{"gitId":"-"},"content":");"},{"lineNumber":88,"author":{"gitId":"-"},"content":"export const TYPE_FUNCTIONALITY_BUG_LABEL \u003d new Label("},{"lineNumber":89,"author":{"gitId":"-"},"content":" TYPE,"},{"lineNumber":90,"author":{"gitId":"-"},"content":" TYPE_FUNCTIONALITY_BUG,"},{"lineNumber":91,"author":{"gitId":"-"},"content":" COLOR_TYPE_FUNCTIONALITY_BUG,"},{"lineNumber":92,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.typeFunctionalityBug"},{"lineNumber":93,"author":{"gitId":"-"},"content":");"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":"export const SEVERITY_HIGH_LABEL \u003d new Label(SEVERITY, SEVERITY_HIGH, COLOR_SEVERITY_HIGH, LABEL_DEFINITIONS.severityHigh);"},{"lineNumber":96,"author":{"gitId":"-"},"content":"export const SEVERITY_MEDIUM_LABEL \u003d new Label(SEVERITY, SEVERITY_MEDIUM, COLOR_SEVERITY_MEDIUM, LABEL_DEFINITIONS.severityMedium);"},{"lineNumber":97,"author":{"gitId":"-"},"content":"export const SEVERITY_LOW_LABEL \u003d new Label(SEVERITY, SEVERITY_LOW, COLOR_SEVERITY_LOW, LABEL_DEFINITIONS.severityLow);"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":"// Constant array of labels for team response phase and moderation phase to simulate Github response"},{"lineNumber":100,"author":{"gitId":"-"},"content":"export const SOME_TEAM_RESPONSE_PHASE_LABELS \u003d ["},{"lineNumber":101,"author":{"gitId":"-"},"content":" {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" color: COLOR_RESPONSE_ACCEPTED,"},{"lineNumber":103,"author":{"gitId":"-"},"content":" name: RESPONSE + \u0027.\u0027 + RESPONSE_ACCEPTED,"},{"lineNumber":104,"author":{"gitId":"-"},"content":" definition: LABEL_DEFINITIONS.responseAccepted"},{"lineNumber":105,"author":{"gitId":"-"},"content":" },"},{"lineNumber":106,"author":{"gitId":"-"},"content":" {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" color: COLOR_SEVERITY_LOW,"},{"lineNumber":108,"author":{"gitId":"-"},"content":" name: SEVERITY + \u0027.\u0027 + SEVERITY_LOW,"},{"lineNumber":109,"author":{"gitId":"-"},"content":" definition: LABEL_DEFINITIONS.severityLow"},{"lineNumber":110,"author":{"gitId":"-"},"content":" },"},{"lineNumber":111,"author":{"gitId":"-"},"content":" {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" color: COLOR_TYPE_FUNCTIONALITY_BUG,"},{"lineNumber":113,"author":{"gitId":"-"},"content":" name: TYPE + \u0027.\u0027 + TYPE_FUNCTIONALITY_BUG,"},{"lineNumber":114,"author":{"gitId":"-"},"content":" definition: LABEL_DEFINITIONS.typeFunctionalityBug"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":"];"},{"lineNumber":117,"author":{"gitId":"-"},"content":""},{"lineNumber":118,"author":{"gitId":"-"},"content":"// Constant array of labels for tester phase to simulate Github response"},{"lineNumber":119,"author":{"gitId":"-"},"content":"export const SOME_TESTER_PHASE_LABELS \u003d ["},{"lineNumber":120,"author":{"gitId":"-"},"content":" {"},{"lineNumber":121,"author":{"gitId":"-"},"content":" color: COLOR_SEVERITY_HIGH,"},{"lineNumber":122,"author":{"gitId":"-"},"content":" name: SEVERITY + \u0027.\u0027 + SEVERITY_HIGH"},{"lineNumber":123,"author":{"gitId":"-"},"content":" },"},{"lineNumber":124,"author":{"gitId":"-"},"content":" {"},{"lineNumber":125,"author":{"gitId":"-"},"content":" color: COLOR_TYPE_DOCUMENTATION_BUG,"},{"lineNumber":126,"author":{"gitId":"-"},"content":" name: TYPE + \u0027.\u0027 + TYPE_DOCUMENTATION_BUG"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }"},{"lineNumber":128,"author":{"gitId":"-"},"content":"];"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":"export const ALL_REQUIRED_LABELS_ARRAY: {}[] \u003d LabelService.getRequiredLabelsAsArray(true).map((label: Label) \u003d\u003e {"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return {"},{"lineNumber":132,"author":{"gitId":"-"},"content":" color: label.labelColor,"},{"lineNumber":133,"author":{"gitId":"-"},"content":" name: label.getFormattedName()"},{"lineNumber":134,"author":{"gitId":"-"},"content":" };"},{"lineNumber":135,"author":{"gitId":"-"},"content":"});"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":"// List of labels"},{"lineNumber":138,"author":{"gitId":"-"},"content":"export const SEVERITY_LABELS \u003d ["},{"lineNumber":139,"author":{"gitId":"-"},"content":" new Label(SEVERITY, SEVERITY_LOW, COLOR_SEVERITY_LOW, LABEL_DEFINITIONS.severityLow),"},{"lineNumber":140,"author":{"gitId":"-"},"content":" new Label(SEVERITY, SEVERITY_MEDIUM, COLOR_SEVERITY_MEDIUM, LABEL_DEFINITIONS.severityMedium),"},{"lineNumber":141,"author":{"gitId":"-"},"content":" new Label(SEVERITY, SEVERITY_HIGH, COLOR_SEVERITY_HIGH, LABEL_DEFINITIONS.undefined)"},{"lineNumber":142,"author":{"gitId":"-"},"content":"];"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":141}},{"path":"tests/helper/mock.mat.spinner.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"export class MockMatSpinner {"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" _elementRef \u003d document.createElement(\u0027div\u0027);"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" _document \u003d {"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" get: () \u003d\u003e null"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" };"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" _diameter \u003d 0;"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" _value \u003d 0;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" _mode \u003d \u0027\u0027;"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":10,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Add other properties and methods as needed"},{"lineNumber":11,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":12,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" set diameter(value: number) {"},{"lineNumber":13,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this._diameter \u003d value;"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" get diameter(): number {"},{"lineNumber":17,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this._diameter;"},{"lineNumber":18,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":19,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" set mode(value: string) {"},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this._mode \u003d value;"},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" get mode(): string {"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this._mode;"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":27,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":27}},{"path":"tests/helper/mock.view.container.ref.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ComponentRef, ElementRef, EmbeddedViewRef, Injector, TemplateRef, ViewContainerRef, ViewRef } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"export class MockViewContainerRef implements ViewContainerRef {"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" element: ElementRef;"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" injector: Injector;"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" parentInjector: any;"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" length: number;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" _views: ViewRef[] \u003d [];"},{"lineNumber":10,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":11,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor(injector: Injector) {"},{"lineNumber":12,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.injector \u003d injector;"},{"lineNumber":13,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" createEmbeddedView\u003cC\u003e(templateRef: TemplateRef\u003cC\u003e, context?: C, index?: number): EmbeddedViewRef\u003cC\u003e {"},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Implement the required method with a fake return value or logic."},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return null as any;"},{"lineNumber":17,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":18,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":19,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" createComponent\u003cC\u003e(componentFactory: any, index?: number, injector?: any, projectableNodes?: any[], ngModuleRef?: any): ComponentRef\u003cC\u003e {"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Implement the required method with a fake return value or logic."},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return null as any;"},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" insert(viewRef: EmbeddedViewRef\u003cany\u003e, index?: number): EmbeddedViewRef\u003cany\u003e {"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (index \u003d\u003d null || index \u003e this._views.length) {"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" index \u003d this._views.length;"},{"lineNumber":27,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":28,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":29,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this._views.splice(index, 0, viewRef);"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.length \u003d this._views.length;"},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return viewRef;"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" remove(index?: number): void {"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (index \u003d\u003d null || index \u003e\u003d this._views.length) {"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" index \u003d this._views.length - 1;"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":39,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (index \u003e\u003d 0) {"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this._views.splice(index, 1);"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.length \u003d this._views.length;"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" clear(): void {"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" throw new Error(\u0027Method not implemented.\u0027);"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" get(index: number): ViewRef | null {"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" throw new Error(\u0027Method not implemented.\u0027);"},{"lineNumber":49,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" indexOf(viewRef: ViewRef): number {"},{"lineNumber":51,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" throw new Error(\u0027Method not implemented.\u0027);"},{"lineNumber":52,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":53,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" detach(index?: number | undefined): ViewRef | null {"},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" throw new Error(\u0027Method not implemented.\u0027);"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" move(viewRef: ViewRef, currentIndex: number): ViewRef {"},{"lineNumber":58,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" throw new Error(\u0027Method not implemented.\u0027);"},{"lineNumber":59,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":60}},{"path":"tests/model/templates/sections/issue-dispute-section-parser.model.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { IssueDisputeSectionParser } from \u0027../../../../src/app/core/models/templates/section-parsers/issue-dispute-section-parser.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"const TYPE_DISPUTE \u003d"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u0027## :question: Issue Type\\n\\n\u0027 +"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u0027### Team says:\\n\\n\u0027 +"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \"{the team\u0027s action that is being disputed}\\n\\n\" +"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u0027### Tester says:\\n\\n\u0027 +"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \"{tester\u0027s objection}\\n\\n\" +"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"const EXPECTED_TITLE \u003d \u0027Issue Type\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"const EXPECTED_DESCRIPTION \u003d"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u0027### Team says:\\n\\n\u0027 + \"{the team\u0027s action that is being disputed}\\n\\n\" + \u0027### Tester says:\\n\\n\u0027 + \"{tester\u0027s objection}\";"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"describe(\u0027IssueDisputeSectionParser\u0027, () \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" it(\u0027parses type dispute correctly\u0027, () \u003d\u003e {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" const result \u003d IssueDisputeSectionParser.run(TYPE_DISPUTE).result;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" expect(result.title).toBe(EXPECTED_TITLE);"},{"lineNumber":20,"author":{"gitId":"-"},"content":" expect(result.description).toBe(EXPECTED_DESCRIPTION);"},{"lineNumber":21,"author":{"gitId":"-"},"content":" });"},{"lineNumber":22,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":21}},{"path":"tests/model/templates/sections/moderation-section-parser.model.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" DoneCheckboxParser,"},{"lineNumber":3,"author":{"gitId":"-"},"content":" ModerationSectionParser"},{"lineNumber":4,"author":{"gitId":"-"},"content":"} from \u0027../../../../src/app/core/models/templates/section-parsers/moderation-section-parser.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"const TYPE_DISPUTE \u003d"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027## :question: Issue Type\\n\\n\u0027 + \u0027- [ ] Done\\n\\n\u0027 + \u0027[replace this with your explanation]\\n\\n\u0027 + \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"const EMPTY_DONE_CHECKBOX \u003d \u0027- [ ] Done\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"const FILLED_DONE_CHECKBOX \u003d \u0027- [x] Done\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"const EXPECTED_TITLE \u003d \u0027Issue Type\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"const EXPECTED_DESCRIPTION \u003d \u0027- [ ] Done\\n\\n[replace this with your explanation]\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"const EXPECTED_TUTOR_RESPONSE \u003d \u0027[replace this with your explanation]\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"describe(\u0027DoneCheckboxParser\u0027, () \u003d\u003e {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" it(\u0027parses empty checkbox correctly\u0027, () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" const result \u003d DoneCheckboxParser.run(EMPTY_DONE_CHECKBOX).result;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" expect(result).toBe(false);"},{"lineNumber":21,"author":{"gitId":"-"},"content":" });"},{"lineNumber":22,"author":{"gitId":"-"},"content":" it(\u0027parses filled checkbox correctly\u0027, () \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" const result \u003d DoneCheckboxParser.run(FILLED_DONE_CHECKBOX).result;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" expect(result).toBe(true);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" });"},{"lineNumber":27,"author":{"gitId":"-"},"content":"});"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":"describe(\u0027ModerationSectionParser\u0027, () \u003d\u003e {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" it(\u0027parses type dispute correctly\u0027, () \u003d\u003e {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" const result \u003d ModerationSectionParser.run(TYPE_DISPUTE).result;"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" expect(result.title).toBe(EXPECTED_TITLE);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expect(result.description).toBe(EXPECTED_DESCRIPTION);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expect(result.todo.isChecked).toBe(false);"},{"lineNumber":36,"author":{"gitId":"-"},"content":" expect(result.tutorResponse).toBe(EXPECTED_TUTOR_RESPONSE);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" });"},{"lineNumber":38,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":36}},{"path":"tests/model/templates/sections/tester-response-section-parser.model.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" DisagreeCheckboxParser,"},{"lineNumber":3,"author":{"gitId":"-"},"content":" TesterResponseSectionParser"},{"lineNumber":4,"author":{"gitId":"-"},"content":"} from \u0027../../../../src/app/core/models/templates/section-parsers/tester-response-section-parser.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"const EMPTY_DISAGREE_CHECKBOX \u003d \u0027- [ ] I disagree\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"const FILLED_DISAGREE_CHECKBOX \u003d \u0027- [x] I disagree\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"const DEFAULT_DISAGREEMENT_REASON \u003d \u0027[replace this with your reason]\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"const USER_DISAGREEMENT_REASON \u003d \u0027I disagree!\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"const RESPONSE_TITLE \u003d \u0027response\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"const RESPONSE_DESCRIPTION \u003d \u0027Team chose [`response.Rejected`]\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"const RESPONSE_TEAM_CHOSE \u003d \u0027Rejected\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"const SEVERITY_TITLE \u003d \u0027severity\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"const SEVERITY_DESCRIPTION \u003d \u0027Team chose [`severity.Low`]\\nOriginally [`severity.High`]\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"const SEVERITY_TEAM_CHOSE \u003d \u0027Low\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"const SEVERITY_TESTER_CHOSE \u003d \u0027High\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"const TYPE_TITLE \u003d \u0027type\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"const TYPE_DESCRIPTION \u003d \u0027Team chose [`type.DocumentationBug`]\\nOriginally [`type.FunctionalityBug`]\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"const TYPE_TEAM_CHOSE \u003d \u0027DocumentationBug\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"const TYPE_TESTER_CHOSE \u003d \u0027FunctionalityBug\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"const DUPLICATE_TITLE \u003d \u0027duplicate status\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"const DUPLICATE_DESCRIPTION \u003d"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \"Team chose to mark this issue as a duplicate of another issue (as explained in the _**Team\u0027s response**_ above)\";"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":"export const RESPONSE_DISAGREEMENT \u003d"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u0027## :question: Issue response\\n\\n\u0027 +"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u0027Team chose [`response.Rejected`]\\n\\n\u0027 +"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u0027- [ ] I disagree\\n\\n\u0027 +"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u0027**Reason for disagreement:** [replace this with your reason]\\n\\n\u0027 +"},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":"export const SEVERITY_DISAGREEMENT \u003d"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u0027## :question: Issue severity\\n\\n\u0027 +"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u0027Team chose [`severity.Low`]\\n\u0027 +"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u0027Originally [`severity.High`]\\n\\n\u0027 +"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u0027- [x] I disagree\\n\\n\u0027 +"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u0027**Reason for disagreement:** I disagree!\\n\\n\u0027 +"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":"export const TYPE_DISAGREEMENT \u003d"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u0027## :question: Issue type\\n\\n\u0027 +"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u0027Team chose [`type.DocumentationBug`]\\n\u0027 +"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u0027Originally [`type.FunctionalityBug`]\\n\\n\u0027 +"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u0027- [ ] I disagree\\n\\n\u0027 +"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u0027**Reason for disagreement:** [replace this with your reason]\\n\\n\u0027 +"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":"export const DUPLICATE_DISAGREEMENT \u003d"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u0027## :question: Issue duplicate status\\n\\n\u0027 +"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \"Team chose to mark this issue as a duplicate of another issue (as explained in the _**Team\u0027s response**_ above)\\n\\n\" +"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u0027- [ ] I disagree\\n\\n\u0027 +"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u0027**Reason for disagreement:** [replace this with your reason]\\n\\n\u0027 +"},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":"describe(\u0027DisagreeCheckboxParser\u0027, () \u003d\u003e {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" it(\u0027parses empty checkbox correctly\u0027, () \u003d\u003e {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" const result \u003d DisagreeCheckboxParser.run(EMPTY_DISAGREE_CHECKBOX).result;"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" expect(result).toBe(false);"},{"lineNumber":64,"author":{"gitId":"-"},"content":" });"},{"lineNumber":65,"author":{"gitId":"-"},"content":" it(\u0027parses filled checkbox correctly\u0027, () \u003d\u003e {"},{"lineNumber":66,"author":{"gitId":"-"},"content":" const result \u003d DisagreeCheckboxParser.run(FILLED_DISAGREE_CHECKBOX).result;"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" expect(result).toBe(true);"},{"lineNumber":69,"author":{"gitId":"-"},"content":" });"},{"lineNumber":70,"author":{"gitId":"-"},"content":"});"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":"describe(\u0027TesterResponseSectionParser\u0027, () \u003d\u003e {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" it(\u0027parses response disagreement correctly\u0027, () \u003d\u003e {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" const result \u003d TesterResponseSectionParser.run(RESPONSE_DISAGREEMENT).result;"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" expect(result.title).toBe(RESPONSE_TITLE);"},{"lineNumber":77,"author":{"gitId":"-"},"content":" expect(result.description).toBe(RESPONSE_DESCRIPTION);"},{"lineNumber":78,"author":{"gitId":"-"},"content":" expect(result.teamChose).toBe(RESPONSE_TEAM_CHOSE);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" expect(result.testerChose).toBe(null);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" expect(result.disagreeCheckboxValue).toBe(false);"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expect(result.reasonForDisagreement).toBe(DEFAULT_DISAGREEMENT_REASON);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" });"},{"lineNumber":83,"author":{"gitId":"-"},"content":" it(\u0027parses severity disagreement correctly\u0027, () \u003d\u003e {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" const result \u003d TesterResponseSectionParser.run(SEVERITY_DISAGREEMENT).result;"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" expect(result.title).toBe(SEVERITY_TITLE);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" expect(result.description).toBe(SEVERITY_DESCRIPTION);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" expect(result.teamChose).toBe(SEVERITY_TEAM_CHOSE);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" expect(result.testerChose).toBe(SEVERITY_TESTER_CHOSE);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" expect(result.disagreeCheckboxValue).toBe(true);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" expect(result.reasonForDisagreement).toBe(USER_DISAGREEMENT_REASON);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" });"},{"lineNumber":93,"author":{"gitId":"-"},"content":" it(\u0027parses type disagreement correctly\u0027, () \u003d\u003e {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" const result \u003d TesterResponseSectionParser.run(TYPE_DISAGREEMENT).result;"},{"lineNumber":95,"author":{"gitId":"-"},"content":""},{"lineNumber":96,"author":{"gitId":"-"},"content":" expect(result.title).toBe(TYPE_TITLE);"},{"lineNumber":97,"author":{"gitId":"-"},"content":" expect(result.description).toBe(TYPE_DESCRIPTION);"},{"lineNumber":98,"author":{"gitId":"-"},"content":" expect(result.teamChose).toBe(TYPE_TEAM_CHOSE);"},{"lineNumber":99,"author":{"gitId":"-"},"content":" expect(result.testerChose).toBe(TYPE_TESTER_CHOSE);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" expect(result.disagreeCheckboxValue).toBe(false);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" expect(result.reasonForDisagreement).toBe(DEFAULT_DISAGREEMENT_REASON);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" });"},{"lineNumber":103,"author":{"gitId":"-"},"content":" it(\u0027parses duplicate status disagreement correctly\u0027, () \u003d\u003e {"},{"lineNumber":104,"author":{"gitId":"-"},"content":" const result \u003d TesterResponseSectionParser.run(DUPLICATE_DISAGREEMENT).result;"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" expect(result.title).toBe(DUPLICATE_TITLE);"},{"lineNumber":107,"author":{"gitId":"-"},"content":" expect(result.description).toBe(DUPLICATE_DESCRIPTION);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" expect(result.teamChose).toBe(null);"},{"lineNumber":109,"author":{"gitId":"-"},"content":" expect(result.testerChose).toBe(null);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" expect(result.disagreeCheckboxValue).toBe(false);"},{"lineNumber":111,"author":{"gitId":"-"},"content":" expect(result.reasonForDisagreement).toBe(DEFAULT_DISAGREEMENT_REASON);"},{"lineNumber":112,"author":{"gitId":"-"},"content":" });"},{"lineNumber":113,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":4,"-":109}},{"path":"tests/model/undoredo.model.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { UndoRedo } from \u0027../../src/app/core/models/undoredo.model\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"const SIZE \u003d 5;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"describe(\u0027UndoRedo model class\u0027, () \u003d\u003e {"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" let undoRedo: UndoRedo\u003cnumber\u003e;"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" let observedVariable: number;"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" observedVariable \u003d 0;"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo \u003d new UndoRedo\u003cnumber\u003e(SIZE, () \u003d\u003e observedVariable);"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" describe(\u0027.addEntry(T, boolean)\u0027, () \u003d\u003e {"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should add a new element correctly to an empty history\u0027, () \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(1);"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex]).toBe(1);"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(0);"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.firstEntryIndex).toBe(0);"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(0);"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" describe(\u0027on a history with data\u0027, () \u003d\u003e {"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" for (let i \u003d 1; i \u003c SIZE; i++) {"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(i, true);"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should add a new element to a partially filled history\u0027, () \u003d\u003e {"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" const currIndex \u003d undoRedo.currIndex;"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(currIndex).toBe(SIZE - 2);"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.firstEntryIndex).toBe(0);"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(currIndex);"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(SIZE);"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex]).toBe(SIZE);"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.firstEntryIndex).toBe(0);"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(currIndex + 1);"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(currIndex + 1);"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should add wrap around when adding new element to full history\u0027, () \u003d\u003e {"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(SIZE);"},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(SIZE - 1);"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.firstEntryIndex).toBe(0);"},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(SIZE - 1);"},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(SIZE + 1);"},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(0);"},{"lineNumber":52,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex]).toBe(SIZE + 1);"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.firstEntryIndex).toBe(1);"},{"lineNumber":54,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(0);"},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":56,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":57,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should correctly add new element to after undo and resets future states\u0027, () \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.undo();"},{"lineNumber":59,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.undo();"},{"lineNumber":60,"author":{"gitId":"Eclipse-Dominator"},"content":" // 1 2 3 4 \u003d\u003e 1 2"},{"lineNumber":61,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex]).toBe(2);"},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(SIZE - 4);"},{"lineNumber":63,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(SIZE - 2);"},{"lineNumber":64,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(2.5);"},{"lineNumber":65,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex]).toBe(2.5);"},{"lineNumber":66,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(SIZE - 3);"},{"lineNumber":67,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(SIZE - 3);"},{"lineNumber":68,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":69,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":70,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":71,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":72,"author":{"gitId":"Eclipse-Dominator"},"content":" describe(\u0027.undo()\u0027, () \u003d\u003e {"},{"lineNumber":73,"author":{"gitId":"Eclipse-Dominator"},"content":" describe(\u0027null tests\u0027, () \u003d\u003e {"},{"lineNumber":74,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should return null on empty history\u0027, () \u003d\u003e {"},{"lineNumber":75,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.undo()).toBe(null);"},{"lineNumber":76,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":77,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":78,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should return null on last history\u0027, () \u003d\u003e {"},{"lineNumber":79,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(1);"},{"lineNumber":80,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.undo()).toBe(null);"},{"lineNumber":81,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":82,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":83,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":84,"author":{"gitId":"Eclipse-Dominator"},"content":" describe(\u0027non-null tests\u0027, () \u003d\u003e {"},{"lineNumber":85,"author":{"gitId":"Eclipse-Dominator"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":86,"author":{"gitId":"Eclipse-Dominator"},"content":" for (let i \u003d 1; i \u003c SIZE; i++) {"},{"lineNumber":87,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(i, true);"},{"lineNumber":88,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":89,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":90,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":91,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should return the last seen element\u0027, () \u003d\u003e {"},{"lineNumber":92,"author":{"gitId":"Eclipse-Dominator"},"content":" // 1 2 3 4 \u003d\u003e 1 2 (3) 4"},{"lineNumber":93,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.undo()).toBe(3);"},{"lineNumber":94,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex]).toBe(3);"},{"lineNumber":95,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(SIZE - 3);"},{"lineNumber":96,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(SIZE - 2);"},{"lineNumber":97,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":98,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":99,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should poll for latest change if there are further changes\u0027, () \u003d\u003e {"},{"lineNumber":100,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.isSaved \u003d false;"},{"lineNumber":101,"author":{"gitId":"Eclipse-Dominator"},"content":" observedVariable \u003d 999;"},{"lineNumber":102,"author":{"gitId":"Eclipse-Dominator"},"content":" // 1 2 3 4 \u003d\u003e 1 2 3 (4) 999"},{"lineNumber":103,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.undo()).toBe(4);"},{"lineNumber":104,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex]).toBe(4);"},{"lineNumber":105,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex + 1]).toBe(999);"},{"lineNumber":106,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(SIZE - 2);"},{"lineNumber":107,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(SIZE - 1);"},{"lineNumber":108,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":109,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":110,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":111,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":112,"author":{"gitId":"Eclipse-Dominator"},"content":" describe(\u0027.redo()\u0027, () \u003d\u003e {"},{"lineNumber":113,"author":{"gitId":"Eclipse-Dominator"},"content":" describe(\u0027null tests\u0027, () \u003d\u003e {"},{"lineNumber":114,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should return null on empty history\u0027, () \u003d\u003e {"},{"lineNumber":115,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.redo()).toBe(null);"},{"lineNumber":116,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":117,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":118,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should return null on latest history\u0027, () \u003d\u003e {"},{"lineNumber":119,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(1);"},{"lineNumber":120,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.redo()).toBe(null);"},{"lineNumber":121,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":122,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":123,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":124,"author":{"gitId":"Eclipse-Dominator"},"content":" describe(\u0027non-null tests\u0027, () \u003d\u003e {"},{"lineNumber":125,"author":{"gitId":"Eclipse-Dominator"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":126,"author":{"gitId":"Eclipse-Dominator"},"content":" for (let i \u003d 1; i \u003c SIZE; i++) {"},{"lineNumber":127,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(i, true);"},{"lineNumber":128,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":129,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.undo();"},{"lineNumber":130,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.undo();"},{"lineNumber":131,"author":{"gitId":"Eclipse-Dominator"},"content":" // 1 2 3 4 \u003d\u003e 1 (2) 3 4"},{"lineNumber":132,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":133,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":134,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should return the last seen element\u0027, () \u003d\u003e {"},{"lineNumber":135,"author":{"gitId":"Eclipse-Dominator"},"content":" // 1 (2) 3 4 \u003d\u003e 1 2 (3) 4"},{"lineNumber":136,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.redo()).toBe(3);"},{"lineNumber":137,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex]).toBe(3);"},{"lineNumber":138,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(SIZE - 3);"},{"lineNumber":139,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(SIZE - 2);"},{"lineNumber":140,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":141,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":142,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":143,"author":{"gitId":"Eclipse-Dominator"},"content":"});"}],"authorContributionMap":{"Eclipse-Dominator":143}},{"path":"tests/services/error-handling.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormErrorComponent } from \u0027../../src/app/shared/error-toasters/form-error/form-error.component\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { GeneralMessageErrorComponent } from \u0027../../src/app/shared/error-toasters/general-message-error/general-message-error.component\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" ERROR_WITH_NO_MESSAGE,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" HTTP_304_ERROR,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" HTTP_400_ERROR,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" HTTP_401_ERROR,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" HTTP_404_ERROR,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" HTTP_422_ERROR,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" HTTP_500_ERROR,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" OCTOKIT_REQUEST_ERROR,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" STANDARD_ERROR"},{"lineNumber":14,"author":{"gitId":"-"},"content":"} from \u0027../constants/error.constants\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"let errorHandlingService: ErrorHandlingService;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"let mockLoggingService;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"let mockSnackBar;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"describe(\u0027ErrorHandlingService\u0027, () \u003d\u003e {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" mockLoggingService \u003d jasmine.createSpyObj(\u0027LoggingService\u0027, [\u0027error\u0027, \u0027debug\u0027]);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" mockSnackBar \u003d jasmine.createSpyObj(\u0027MatSnackBar\u0027, [\u0027openFromComponent\u0027]);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" errorHandlingService \u003d new ErrorHandlingService(mockSnackBar, mockLoggingService);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" });"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" describe(\u0027ErrorHandlingService: handleError()\u0027, () \u003d\u003e {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" it(\u0027should log errors when handling errors\u0027, () \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(STANDARD_ERROR);"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(mockLoggingService.error).toHaveBeenCalledWith(\u0027ErrorHandlingService: \u0027 + STANDARD_ERROR);"},{"lineNumber":31,"author":{"gitId":"-"},"content":" });"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" it(\u0027should use the GeneralMessageErrorComponent when handling Errors\u0027, () \u003d\u003e {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(STANDARD_ERROR);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledWith(GeneralMessageErrorComponent, {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" data: { message: STANDARD_ERROR.message }"},{"lineNumber":37,"author":{"gitId":"-"},"content":" });"},{"lineNumber":38,"author":{"gitId":"-"},"content":" });"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" it(\u0027should stringify Errors if there is no message before displaying\u0027, () \u003d\u003e {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(ERROR_WITH_NO_MESSAGE);"},{"lineNumber":42,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledWith(GeneralMessageErrorComponent, {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" data: { message: JSON.stringify(ERROR_WITH_NO_MESSAGE) }"},{"lineNumber":44,"author":{"gitId":"-"},"content":" });"},{"lineNumber":45,"author":{"gitId":"-"},"content":" });"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" it(\u0027should not open the snackbar when handling http status 304 errors\u0027, () \u003d\u003e {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(HTTP_304_ERROR);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).not.toHaveBeenCalled();"},{"lineNumber":50,"author":{"gitId":"-"},"content":" });"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" it(\u0027should use the FormErrorComponent when handling http status 422 errors\u0027, () \u003d\u003e {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(HTTP_422_ERROR);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledWith(FormErrorComponent, { data: HTTP_422_ERROR });"},{"lineNumber":55,"author":{"gitId":"-"},"content":" });"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" it(\u0027should use the GeneralMessageErrorComponent when handling other http errors\u0027, () \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(HTTP_500_ERROR);"},{"lineNumber":59,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledWith(GeneralMessageErrorComponent, { data: HTTP_500_ERROR });"},{"lineNumber":60,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(HTTP_400_ERROR);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledWith(GeneralMessageErrorComponent, { data: HTTP_400_ERROR });"},{"lineNumber":62,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(HTTP_401_ERROR);"},{"lineNumber":63,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledWith(GeneralMessageErrorComponent, { data: HTTP_401_ERROR });"},{"lineNumber":64,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(HTTP_404_ERROR);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledWith(GeneralMessageErrorComponent, { data: HTTP_404_ERROR });"},{"lineNumber":66,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledTimes(4);"},{"lineNumber":67,"author":{"gitId":"-"},"content":" });"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" it(\u0027should treat octokit request errors as http errors\u0027, () \u003d\u003e {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(OCTOKIT_REQUEST_ERROR);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledWith(GeneralMessageErrorComponent, { data: OCTOKIT_REQUEST_ERROR });"},{"lineNumber":72,"author":{"gitId":"-"},"content":" });"},{"lineNumber":73,"author":{"gitId":"-"},"content":" });"},{"lineNumber":74,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":73}},{"path":"tests/services/label.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../../src/app/core/models/github/github-label.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Label } from \u0027../../src/app/core/models/label.model\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LabelService, LABEL_DEFINITIONS } from \u0027../../src/app/core/services/label.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import * as GithubLabelConstant from \u0027../constants/githublabel.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import * as LabelConstant from \u0027../constants/label.constants\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"let labelService: LabelService;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"let githubService: any;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"describe(\u0027LabelService\u0027, () \u003d\u003e {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" githubService \u003d jasmine.createSpyObj(\u0027GithubService\u0027, [\u0027fetchAllLabels\u0027, \u0027createLabel\u0027]);"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelService \u003d new LabelService(githubService, null);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" });"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":" describe(\u0027.syncLabels()\u0027, () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" it(\u0027should create all required labels for team response phase if no required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of([]));"},{"lineNumber":20,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(true)).subscribe();"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.SEVERITY_LOW_LABEL);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.RESPONSE_REJECTED_LABEL);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.STATUS_DONE_LABEL);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.TYPE_DOCUMENTATION_BUG_LABEL);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes(LabelService.getRequiredLabelsAsArray(true).length);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" });"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" it(\u0027should create all required labels for tester phase if no required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of([]));"},{"lineNumber":31,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(false)).subscribe();"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.SEVERITY_LOW_LABEL);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.TYPE_DOCUMENTATION_BUG_LABEL);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes(LabelService.getRequiredLabelsAsArray(false).length);"},{"lineNumber":36,"author":{"gitId":"-"},"content":" });"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" it(\u0027should create missing required labels for team response phase if some required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of(LabelConstant.SOME_TEAM_RESPONSE_PHASE_LABELS));"},{"lineNumber":40,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(true)).subscribe();"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertLabelNotCreated(githubService, LabelConstant.SEVERITY_LOW_LABEL);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.RESPONSE_REJECTED_LABEL);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.STATUS_DONE_LABEL);"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.TYPE_DOCUMENTATION_BUG_LABEL);"},{"lineNumber":46,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes("},{"lineNumber":47,"author":{"gitId":"-"},"content":" LabelService.getRequiredLabelsAsArray(true).length - LabelConstant.SOME_TEAM_RESPONSE_PHASE_LABELS.length"},{"lineNumber":48,"author":{"gitId":"-"},"content":" );"},{"lineNumber":49,"author":{"gitId":"-"},"content":" });"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" it(\u0027should create missing required labels for tester phase if some required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of(LabelConstant.SOME_TESTER_PHASE_LABELS));"},{"lineNumber":53,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(false)).subscribe();"},{"lineNumber":54,"author":{"gitId":"-"},"content":""},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertLabelNotCreated(githubService, LabelConstant.SEVERITY_HIGH_LABEL);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.TYPE_FUNCTIONALITY_BUG_LABEL);"},{"lineNumber":57,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes("},{"lineNumber":58,"author":{"gitId":"-"},"content":" LabelService.getRequiredLabelsAsArray(false).length - LabelConstant.SOME_TESTER_PHASE_LABELS.length"},{"lineNumber":59,"author":{"gitId":"-"},"content":" );"},{"lineNumber":60,"author":{"gitId":"-"},"content":" });"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" it(\u0027should not need to create any required labels if all required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of(LabelConstant.ALL_REQUIRED_LABELS_ARRAY));"},{"lineNumber":64,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(true)).subscribe();"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes(0);"},{"lineNumber":67,"author":{"gitId":"-"},"content":" });"},{"lineNumber":68,"author":{"gitId":"-"},"content":" });"},{"lineNumber":69,"author":{"gitId":"-"},"content":"});"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: toLabel()\u0027, () \u003d\u003e {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" beforeAll(() \u003d\u003e {"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelService \u003d new LabelService(null, null);"},{"lineNumber":74,"author":{"gitId":"-"},"content":" });"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" afterAll(() \u003d\u003e {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" });"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" it(\u0027should convert a GithubLabel object to a corresponding Label object\u0027, () \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" const lowSeverityLabel \u003d labelService.toLabel(GithubLabelConstant.GITHUB_LABEL_LOW_SEVERITY);"},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" expect(lowSeverityLabel.labelCategory).toBe(LabelConstant.SEVERITY);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" expect(lowSeverityLabel.labelValue).toBe(LabelConstant.SEVERITY_LOW);"},{"lineNumber":85,"author":{"gitId":"-"},"content":" expect(lowSeverityLabel.labelColor).toBe(LabelConstant.COLOR_SEVERITY_LOW);"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" const functionalityBugLabel \u003d labelService.toLabel(GithubLabelConstant.GITHUB_LABEL_FUNCTIONALITY_BUG);"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" expect(functionalityBugLabel.labelCategory).toBe(LabelConstant.TYPE);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" expect(functionalityBugLabel.labelValue).toBe(LabelConstant.TYPE_FUNCTIONALITY_BUG);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" expect(functionalityBugLabel.labelColor).toBe(LabelConstant.COLOR_TYPE_FUNCTIONALITY_BUG);"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" const tutoriallabel \u003d labelService.toLabel(GithubLabelConstant.GITHUB_LABEL_TUTORIAL_LABEL);"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" expect(tutoriallabel.labelCategory).toBe(\u0027tutorial\u0027);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" expect(tutoriallabel.labelValue).toBe(\u0027CS2103T-W12\u0027);"},{"lineNumber":97,"author":{"gitId":"-"},"content":" expect(tutoriallabel.labelColor).toBe(\u0027c2e0c6\u0027);"},{"lineNumber":98,"author":{"gitId":"-"},"content":" });"},{"lineNumber":99,"author":{"gitId":"-"},"content":"});"},{"lineNumber":100,"author":{"gitId":"-"},"content":""},{"lineNumber":101,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: isDarkColor()\u0027, () \u003d\u003e {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":103,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelService \u003d new LabelService(null, null);"},{"lineNumber":104,"author":{"gitId":"-"},"content":" });"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":108,"author":{"gitId":"-"},"content":" });"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":" it(\u0027should be true for dark color\u0027, () \u003d\u003e {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" expect(labelService.isDarkColor(LabelConstant.COLOR_BLACK)).toBeTruthy();"},{"lineNumber":112,"author":{"gitId":"-"},"content":" });"},{"lineNumber":113,"author":{"gitId":"-"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":" it(\u0027should be false for light color\u0027, () \u003d\u003e {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" expect(labelService.isDarkColor(LabelConstant.COLOR_WHITE)).toBeFalsy();"},{"lineNumber":116,"author":{"gitId":"-"},"content":" });"},{"lineNumber":117,"author":{"gitId":"-"},"content":"});"},{"lineNumber":118,"author":{"gitId":"-"},"content":""},{"lineNumber":119,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: setLabelStyle()\u0027, () \u003d\u003e {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":121,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelService \u003d new LabelService(null, null);"},{"lineNumber":122,"author":{"gitId":"-"},"content":" });"},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":125,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":126,"author":{"gitId":"-"},"content":" });"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":" it(\u0027should be dark color background with light color text\u0027, () \u003d\u003e {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" expect(labelService.setLabelStyle(LabelConstant.COLOR_BLACK)).toEqual(LabelConstant.DARK_BG_LIGHT_TEXT);"},{"lineNumber":130,"author":{"gitId":"-"},"content":" });"},{"lineNumber":131,"author":{"gitId":"-"},"content":""},{"lineNumber":132,"author":{"gitId":"-"},"content":" it(\u0027should be light color background with dark color text\u0027, () \u003d\u003e {"},{"lineNumber":133,"author":{"gitId":"-"},"content":" expect(labelService.setLabelStyle(LabelConstant.COLOR_WHITE)).toEqual(LabelConstant.LIGHT_BG_DARK_TEXT);"},{"lineNumber":134,"author":{"gitId":"-"},"content":" });"},{"lineNumber":135,"author":{"gitId":"-"},"content":""},{"lineNumber":136,"author":{"gitId":"-"},"content":" it(\u0027should be light color background with dark color text\u0027, () \u003d\u003e {"},{"lineNumber":137,"author":{"gitId":"-"},"content":" expect(labelService.setLabelStyle(LabelConstant.COLOR_WHITE, \u0027inline-block\u0027)).toEqual(LabelConstant.INLINE_BLOCK_TEXT);"},{"lineNumber":138,"author":{"gitId":"-"},"content":" });"},{"lineNumber":139,"author":{"gitId":"-"},"content":"});"},{"lineNumber":140,"author":{"gitId":"-"},"content":""},{"lineNumber":141,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: getColorOfLabel()\u0027, () \u003d\u003e {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":143,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelService \u003d new LabelService(null, null);"},{"lineNumber":144,"author":{"gitId":"-"},"content":" });"},{"lineNumber":145,"author":{"gitId":"-"},"content":""},{"lineNumber":146,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":147,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":148,"author":{"gitId":"-"},"content":" });"},{"lineNumber":149,"author":{"gitId":"-"},"content":""},{"lineNumber":150,"author":{"gitId":"-"},"content":" it(\u0027should be correct label color for Severity.Low\u0027, () \u003d\u003e {"},{"lineNumber":151,"author":{"gitId":"-"},"content":" expect(labelService.getColorOfLabel(\u0027severity\u0027, LabelConstant.SEVERITY_LOW)).toEqual(LabelConstant.COLOR_SEVERITY_LOW);"},{"lineNumber":152,"author":{"gitId":"-"},"content":" });"},{"lineNumber":153,"author":{"gitId":"-"},"content":""},{"lineNumber":154,"author":{"gitId":"-"},"content":" it(\u0027should be white color for invalid inputs\u0027, () \u003d\u003e {"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expect(labelService.getColorOfLabel(\u0027others\u0027, null)).toEqual(LabelConstant.COLOR_WHITE.toLowerCase());"},{"lineNumber":156,"author":{"gitId":"-"},"content":" });"},{"lineNumber":157,"author":{"gitId":"-"},"content":"});"},{"lineNumber":158,"author":{"gitId":"-"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: getLabelDefinition()\u0027, () \u003d\u003e {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":161,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelService \u003d new LabelService(null, null);"},{"lineNumber":162,"author":{"gitId":"-"},"content":" });"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":166,"author":{"gitId":"-"},"content":" });"},{"lineNumber":167,"author":{"gitId":"-"},"content":""},{"lineNumber":168,"author":{"gitId":"-"},"content":" it(\u0027should return the correct label definition for type.FunctionalityBug\u0027, () \u003d\u003e {"},{"lineNumber":169,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.TYPE_FUNCTIONALITY_BUG, LabelConstant.TYPE)).toEqual("},{"lineNumber":170,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.typeFunctionalityBug"},{"lineNumber":171,"author":{"gitId":"-"},"content":" );"},{"lineNumber":172,"author":{"gitId":"-"},"content":" });"},{"lineNumber":173,"author":{"gitId":"-"},"content":""},{"lineNumber":174,"author":{"gitId":"-"},"content":" it(\u0027should return the correct label definition for severity.Medium\u0027, () \u003d\u003e {"},{"lineNumber":175,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.SEVERITY_MEDIUM, LabelConstant.SEVERITY)).toEqual("},{"lineNumber":176,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.severityMedium"},{"lineNumber":177,"author":{"gitId":"-"},"content":" );"},{"lineNumber":178,"author":{"gitId":"-"},"content":" });"},{"lineNumber":179,"author":{"gitId":"-"},"content":""},{"lineNumber":180,"author":{"gitId":"-"},"content":" it(\u0027should return the correct label definition for response.Rejected\u0027, () \u003d\u003e {"},{"lineNumber":181,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.RESPONSE_REJECTED, LabelConstant.RESPONSE)).toEqual("},{"lineNumber":182,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.responseRejected"},{"lineNumber":183,"author":{"gitId":"-"},"content":" );"},{"lineNumber":184,"author":{"gitId":"-"},"content":" });"},{"lineNumber":185,"author":{"gitId":"-"},"content":""},{"lineNumber":186,"author":{"gitId":"-"},"content":" it(\u0027should return null for label with no definition\u0027, () \u003d\u003e {"},{"lineNumber":187,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.STATUS_DONE, LabelConstant.STATUS)).toEqual(LABEL_DEFINITIONS.undefined);"},{"lineNumber":188,"author":{"gitId":"-"},"content":" });"},{"lineNumber":189,"author":{"gitId":"-"},"content":""},{"lineNumber":190,"author":{"gitId":"-"},"content":" it(\u0027should return null for invalid inputs\u0027, () \u003d\u003e {"},{"lineNumber":191,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(null, null)).toEqual(LABEL_DEFINITIONS.undefined);"},{"lineNumber":192,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(null, LabelConstant.SEVERITY)).toEqual(LABEL_DEFINITIONS.undefined);"},{"lineNumber":193,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.SEVERITY_MEDIUM, null)).toEqual(LABEL_DEFINITIONS.undefined);"},{"lineNumber":194,"author":{"gitId":"-"},"content":" });"},{"lineNumber":195,"author":{"gitId":"-"},"content":"});"},{"lineNumber":196,"author":{"gitId":"-"},"content":""},{"lineNumber":197,"author":{"gitId":"-"},"content":"function assertLabelCreated(githubService: any, label: Label) {"},{"lineNumber":198,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledWith(label.getFormattedName(), label.labelColor);"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}"},{"lineNumber":200,"author":{"gitId":"-"},"content":""},{"lineNumber":201,"author":{"gitId":"-"},"content":"function assertLabelNotCreated(githubService: any, label: Label) {"},{"lineNumber":202,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).not.toHaveBeenCalledWith(label.getFormattedName(), label.labelColor);"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":7,"-":196}},{"path":"tests/services/loading.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { DOCUMENT } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ComponentFactory, ComponentFactoryResolver, ComponentRef, ElementRef, Injector, Renderer2, ViewContainerRef } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { TestBed, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatSpinner } from \u0027@angular/material/progress-spinner\u0027;"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoadingService } from \u0027../../src/app/core/services/loading.service\u0027;"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MockMatSpinner } from \u0027../helper/mock.mat.spinner\u0027;"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MockViewContainerRef } from \u0027../helper/mock.view.container.ref\u0027;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"describe(\u0027LoadingService\u0027, () \u003d\u003e {"},{"lineNumber":10,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let mockMatSpinnerInstance: MockMatSpinner;"},{"lineNumber":11,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let mockRenderer: jasmine.SpyObj\u003cRenderer2\u003e;"},{"lineNumber":12,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let mockComponentInjector: jasmine.SpyObj\u003cInjector\u003e;"},{"lineNumber":13,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let elementRef: ElementRef;"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let mockComponentRef: ComponentRef\u003cMatSpinner\u003e;"},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let mockInjector: jasmine.SpyObj\u003cInjector\u003e;"},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let loadingService: LoadingService;"},{"lineNumber":17,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let mockComponentFactory: jasmine.SpyObj\u003cComponentFactory\u003cMatSpinner\u003e\u003e;"},{"lineNumber":18,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let mockComponentFactoryResolver: jasmine.SpyObj\u003cComponentFactoryResolver\u003e;"},{"lineNumber":19,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let mockViewContainerRef: MockViewContainerRef;"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let document: Document;"},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" beforeEach(async () \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockMatSpinnerInstance \u003d new MockMatSpinner();"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockRenderer \u003d jasmine.createSpyObj\u003cRenderer2\u003e(\u0027Renderer2\u0027, [\u0027createElement\u0027, \u0027appendChild\u0027, \u0027setStyle\u0027, \u0027addClass\u0027]);"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockRenderer.addClass.and.callFake((el: any, className: string) \u003d\u003e {"},{"lineNumber":27,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Simulate adding the class by appending it to the element\u0027s classList"},{"lineNumber":28,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" el.classList.add(className);"},{"lineNumber":29,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockComponentInjector \u003d jasmine.createSpyObj(\u0027Injector\u0027, {"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" get: mockRenderer"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" elementRef \u003d {"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" nativeElement: {"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" classList: {"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" add: jasmine.createSpy(\u0027classList.add\u0027),"},{"lineNumber":39,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" remove: jasmine.createSpy(\u0027classList.remove\u0027),"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" contains: jasmine.createSpy(\u0027classList.contains\u0027),"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" toggle: jasmine.createSpy(\u0027classList.toggle\u0027),"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" length: 0,"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" item: jasmine.createSpy(\u0027classList.item\u0027),"},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" toString: jasmine.createSpy(\u0027classList.toString\u0027),"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" entries: jasmine.createSpy(\u0027classList.entries\u0027),"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" forEach: jasmine.createSpy(\u0027classList.forEach\u0027),"},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" keys: jasmine.createSpy(\u0027classList.keys\u0027),"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" values: jasmine.createSpy(\u0027classList.values\u0027)"},{"lineNumber":49,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":51,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" };"},{"lineNumber":52,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":53,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockComponentRef \u003d ({"},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" location: elementRef,"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" changeDetectorRef: jasmine.createSpyObj(\u0027ChangeDetectorRef\u0027, [\u0027detectChanges\u0027]),"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" hostView: null as any,"},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" instance: mockMatSpinnerInstance,"},{"lineNumber":58,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" injector: mockComponentInjector,"},{"lineNumber":59,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" onDestroy: null as any,"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" destroy: () \u003d\u003e {},"},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" componentType: MatSpinner"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" } as unknown) as ComponentRef\u003cMatSpinner\u003e;"},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockComponentFactory \u003d jasmine.createSpyObj\u003cComponentFactory\u003cMatSpinner\u003e\u003e({"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" create: mockComponentRef"},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":68,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockComponentFactoryResolver \u003d jasmine.createSpyObj\u003cComponentFactoryResolver\u003e({"},{"lineNumber":69,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" resolveComponentFactory: mockComponentFactory"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":71,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockInjector \u003d jasmine.createSpyObj(\u0027Injector\u0027, {"},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" get: mockRenderer"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":74,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":75,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockViewContainerRef \u003d new MockViewContainerRef(mockInjector);"},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" await TestBed.configureTestingModule({"},{"lineNumber":78,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" providers: ["},{"lineNumber":79,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: ComponentFactoryResolver, useValue: mockComponentFactoryResolver },"},{"lineNumber":80,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: Injector, useValue: mockInjector },"},{"lineNumber":81,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: MatSpinner, useClass: MockMatSpinner },"},{"lineNumber":82,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" LoadingService"},{"lineNumber":83,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ]"},{"lineNumber":84,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }).compileComponents();"},{"lineNumber":85,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":86,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService \u003d TestBed.inject(LoadingService);"},{"lineNumber":87,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" document \u003d TestBed.inject(DOCUMENT);"},{"lineNumber":88,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":89,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":90,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" describe(\u0027.new()\u0027, () \u003d\u003e {"},{"lineNumber":91,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should create a new loading service\u0027, () \u003d\u003e {"},{"lineNumber":92,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService).toBeTruthy();"},{"lineNumber":93,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":94,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":95,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":96,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" describe(\u0027.addCssClasses()\u0027, () \u003d\u003e {"},{"lineNumber":97,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":98,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027should add CSS Classes to the spinner reference\u0027,"},{"lineNumber":99,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":100,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const testClassList \u003d [\u0027test-class-1\u0027, \u0027test-class-2\u0027, \u0027test-class-3\u0027];"},{"lineNumber":101,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":102,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addCssClasses(testClassList);"},{"lineNumber":103,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":104,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader();"},{"lineNumber":105,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":106,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).not.toBeNull();"},{"lineNumber":107,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (loadingService.spinnerComponentRef) {"},{"lineNumber":108,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const spinnerElement \u003d loadingService.spinnerComponentRef.location.nativeElement;"},{"lineNumber":109,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(spinnerElement.classList.add).toHaveBeenCalledTimes(testClassList.length);"},{"lineNumber":110,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" for (const className of testClassList) {"},{"lineNumber":111,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(spinnerElement.classList.add).toHaveBeenCalledWith(className);"},{"lineNumber":112,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":113,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":114,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":115,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":116,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":117,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":118,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" describe(\u0027.addAnimationMode()\u0027, () \u003d\u003e {"},{"lineNumber":119,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":120,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027should add an animation mode to the spinner reference\u0027,"},{"lineNumber":121,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":122,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addAnimationMode(\u0027determinate\u0027);"},{"lineNumber":123,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":124,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader();"},{"lineNumber":125,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":126,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).not.toBeNull();"},{"lineNumber":127,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (loadingService.spinnerComponentRef) {"},{"lineNumber":128,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const spinnerRef \u003d loadingService.spinnerComponentRef;"},{"lineNumber":129,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(spinnerRef.instance.mode).toEqual(\u0027determinate\u0027);"},{"lineNumber":130,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":131,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":132,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":133,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":134,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":135,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" describe(\u0027.addSpinnerOptions()\u0027, () \u003d\u003e {"},{"lineNumber":136,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":137,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027should add a diameter to the spinner reference\u0027,"},{"lineNumber":138,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":139,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const testDiameter \u003d 20;"},{"lineNumber":140,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addSpinnerOptions({ diameter: testDiameter });"},{"lineNumber":141,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":142,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader();"},{"lineNumber":143,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":144,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).not.toBeNull();"},{"lineNumber":145,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (loadingService.spinnerComponentRef) {"},{"lineNumber":146,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const spinnerRef \u003d loadingService.spinnerComponentRef;"},{"lineNumber":147,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(spinnerRef.instance.diameter).toEqual(testDiameter);"},{"lineNumber":148,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":149,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":150,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":151,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":152,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":153,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027should add stroke width to the spinner reference\u0027,"},{"lineNumber":154,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":155,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const testStrokeWidth \u003d 20;"},{"lineNumber":156,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addSpinnerOptions({ strokeWidth: testStrokeWidth });"},{"lineNumber":157,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":158,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader();"},{"lineNumber":159,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":160,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).not.toBeNull();"},{"lineNumber":161,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (loadingService.spinnerComponentRef) {"},{"lineNumber":162,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const spinnerRef \u003d loadingService.spinnerComponentRef;"},{"lineNumber":163,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(spinnerRef.instance.strokeWidth).toEqual(testStrokeWidth);"},{"lineNumber":164,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":165,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":166,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":167,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":168,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":169,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" describe(\u0027.addTheme()\u0027, () \u003d\u003e {"},{"lineNumber":170,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":171,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027should add a theme to the spinner reference\u0027,"},{"lineNumber":172,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":173,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const testTheme \u003d \u0027accent\u0027;"},{"lineNumber":174,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addTheme(testTheme);"},{"lineNumber":175,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":176,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader();"},{"lineNumber":177,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":178,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).not.toBeNull();"},{"lineNumber":179,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (loadingService.spinnerComponentRef) {"},{"lineNumber":180,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const spinnerRef \u003d loadingService.spinnerComponentRef;"},{"lineNumber":181,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(spinnerRef.instance.color).toEqual(testTheme);"},{"lineNumber":182,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":183,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":184,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":185,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":186,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":187,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" describe(\u0027.hideLoader()\u0027, () \u003d\u003e {"},{"lineNumber":188,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":189,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027should remove the spinner\u0027,"},{"lineNumber":190,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":191,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader();"},{"lineNumber":192,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":193,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).not.toBeNull();"},{"lineNumber":194,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":195,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader();"},{"lineNumber":196,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":197,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).toBeNull();"},{"lineNumber":198,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":199,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":200,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":201,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":202,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" describe(\u0027.addViewContainerRef()\u0027, () \u003d\u003e {"},{"lineNumber":203,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":204,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027should add the view container ref\u0027,"},{"lineNumber":205,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":206,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addViewContainerRef(mockViewContainerRef);"},{"lineNumber":207,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":208,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerContainerRef).not.toBeNull();"},{"lineNumber":209,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":210,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerContainerRef).toEqual(mockViewContainerRef);"},{"lineNumber":211,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":212,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader();"},{"lineNumber":213,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":214,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(mockViewContainerRef._views.length).toBe(1);"},{"lineNumber":215,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":216,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(mockViewContainerRef._views[0]).toEqual(loadingService.spinnerComponentRef?.hostView);"},{"lineNumber":217,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":218,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":219,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":220,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":221,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027should remove the spinner from the view container ref\u0027,"},{"lineNumber":222,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":223,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader();"},{"lineNumber":224,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":225,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(mockViewContainerRef._views.length).toBe(0);"},{"lineNumber":226,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":227,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).toBeNull();"},{"lineNumber":228,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":229,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":230,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":231,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":232,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" describe(\u0027.ngOnDestroy()\u0027, () \u003d\u003e {"},{"lineNumber":233,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":234,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027destroy existing subscriptions and reset spinner refs\u0027,"},{"lineNumber":235,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":236,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addViewContainerRef(mockViewContainerRef);"},{"lineNumber":237,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":238,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader();"},{"lineNumber":239,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":240,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.ngOnDestroy();"},{"lineNumber":241,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":242,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).toBeNull();"},{"lineNumber":243,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":244,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerContainerRef).toBeNull();"},{"lineNumber":245,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":246,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":247,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":248,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":248}},{"path":"tests/services/logging.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../src/app/core/services/logging.service\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MockLocalStorage } from \u0027../helper/mock.local.storage\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"let logger: LoggingService;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"let headerLog: string;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"let sessionSeparator: string;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"const mockDate \u003d new Date(2021, 6, 27);"},{"lineNumber":8,"author":{"gitId":"-"},"content":"const infoLogMessage \u003d \u0027Info log message\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"const mockLocalStorageFunctionCalls \u003d (mockLocalStorage: MockLocalStorage) \u003d\u003e {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" spyOn(localStorage, \u0027getItem\u0027).and.callFake(mockLocalStorage.getItem.bind(mockLocalStorage));"},{"lineNumber":12,"author":{"gitId":"-"},"content":" spyOn(localStorage, \u0027setItem\u0027).and.callFake(mockLocalStorage.setItem.bind(mockLocalStorage));"},{"lineNumber":13,"author":{"gitId":"-"},"content":" spyOn(localStorage, \u0027removeItem\u0027).and.callFake(mockLocalStorage.removeItem.bind(mockLocalStorage));"},{"lineNumber":14,"author":{"gitId":"-"},"content":" spyOn(localStorage, \u0027clear\u0027).and.callFake(mockLocalStorage.clear.bind(mockLocalStorage));"},{"lineNumber":15,"author":{"gitId":"-"},"content":"};"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"const mockDates \u003d () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" jasmine.clock().install();"},{"lineNumber":19,"author":{"gitId":"-"},"content":" jasmine.clock().mockDate(mockDate);"},{"lineNumber":20,"author":{"gitId":"-"},"content":"};"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":"const initializeLoggingService \u003d () \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger \u003d new LoggingService();"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" headerLog \u003d `${logger.LOG_START_HEADER}\\n${mockDate.toLocaleString()}`;"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" sessionSeparator \u003d logger.SESSION_LOG_SEPARATOR;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"};"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"describe(\u0027LoggingService\u0027, () \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" beforeAll(() \u003d\u003e {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" const mockLocalStorage \u003d new MockLocalStorage();"},{"lineNumber":31,"author":{"gitId":"-"},"content":" mockLocalStorageFunctionCalls(mockLocalStorage);"},{"lineNumber":32,"author":{"gitId":"-"},"content":" mockDates();"},{"lineNumber":33,"author":{"gitId":"-"},"content":" initializeLoggingService();"},{"lineNumber":34,"author":{"gitId":"-"},"content":" });"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.reset();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" localStorage.clear();"},{"lineNumber":39,"author":{"gitId":"-"},"content":" });"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" afterAll(() \u003d\u003e {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" jasmine.clock().uninstall();"},{"lineNumber":43,"author":{"gitId":"-"},"content":" });"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" describe(\u0027.startSession()\u0027, () \u003d\u003e {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" it(\u0027should successfully initialize logging session\u0027, () \u003d\u003e {"},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":49,"author":{"gitId":"-"},"content":" const expectedLog \u003d headerLog;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":51,"author":{"gitId":"-"},"content":" });"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" it(\u0027should successfully reinitialize logging session\u0027, () \u003d\u003e {"},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.reset();"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":58,"author":{"gitId":"-"},"content":" const expectedLog \u003d `${headerLog}${sessionSeparator}${headerLog}`;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":60,"author":{"gitId":"-"},"content":" });"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" it(\u0027should successfully reinitialize logging session when limit reached\u0027, () \u003d\u003e {"},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" Array(logger.LOG_COUNT_LIMIT)"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .fill(0)"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .forEach(() \u003d\u003e {"},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.reset();"},{"lineNumber":68,"author":{"gitId":"-"},"content":" });"},{"lineNumber":69,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":71,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const expectedLog \u003d Array(logger.LOG_COUNT_LIMIT)"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .fill(\u0027\u0027)"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .map((_) \u003d\u003e headerLog)"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .join(sessionSeparator);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":76,"author":{"gitId":"-"},"content":" });"},{"lineNumber":77,"author":{"gitId":"-"},"content":" });"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" describe(\u0027.reset()\u0027, () \u003d\u003e {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" it(\u0027should do nothing if no session is ongoing\u0027, () \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.reset();"},{"lineNumber":82,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":83,"author":{"gitId":"-"},"content":" expect(actualLog).toBeNull();"},{"lineNumber":84,"author":{"gitId":"-"},"content":" });"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" it(\u0027should not tamper with existing log histories\u0027, () \u003d\u003e {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" let expectedLog \u003d headerLog;"},{"lineNumber":88,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" for (let i \u003d 0; i \u003c logger.LOG_COUNT_LIMIT + 1; i +\u003d 1) {"},{"lineNumber":89,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":90,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.reset();"},{"lineNumber":91,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":93,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (i \u003c logger.LOG_COUNT_LIMIT - 1) {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" expectedLog +\u003d `${sessionSeparator}${headerLog}`;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":" });"},{"lineNumber":98,"author":{"gitId":"-"},"content":" });"},{"lineNumber":99,"author":{"gitId":"-"},"content":""},{"lineNumber":100,"author":{"gitId":"-"},"content":" describe(\u0027adding logs\u0027, () \u003d\u003e {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" it(\u0027should successfully add info logs\u0027, () \u003d\u003e {"},{"lineNumber":102,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":103,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const initialLog \u003d logger.getCachedLog();"},{"lineNumber":104,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.info(infoLogMessage);"},{"lineNumber":105,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":106,"author":{"gitId":"-"},"content":" const expectedLog \u003d `${initialLog}\\n${infoLogMessage}`;"},{"lineNumber":107,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" });"},{"lineNumber":109,"author":{"gitId":"-"},"content":" });"},{"lineNumber":110,"author":{"gitId":"-"},"content":""},{"lineNumber":111,"author":{"gitId":"-"},"content":" describe(\u0027updating and trimming logs from sessions\u0027, () \u003d\u003e {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" it(\u0027should trim oldest log if number of sessions exceed session limit\u0027, () \u003d\u003e {"},{"lineNumber":113,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" Array(logger.LOG_COUNT_LIMIT + 1)"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .fill(0)"},{"lineNumber":115,"author":{"gitId":"-"},"content":" .forEach(() \u003d\u003e {"},{"lineNumber":116,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":117,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.info(infoLogMessage);"},{"lineNumber":118,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.reset();"},{"lineNumber":119,"author":{"gitId":"-"},"content":" });"},{"lineNumber":120,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":121,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":122,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const expectedLog \u003d Array(logger.LOG_COUNT_LIMIT)"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .fill(\u0027\u0027)"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .map((_) \u003d\u003e headerLog)"},{"lineNumber":125,"author":{"gitId":"-"},"content":" .join(`\\n${infoLogMessage}${sessionSeparator}`);"},{"lineNumber":126,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":127,"author":{"gitId":"-"},"content":" });"},{"lineNumber":128,"author":{"gitId":"-"},"content":" });"},{"lineNumber":129,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":35,"-":94}},{"path":"tests/services/permissions.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../src/app/core/models/phase.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { UserRole } from \u0027../../src/app/core/models/user.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../src/app/core/services/permission.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../src/app/core/services/phase.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../src/app/core/services/user.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"const testStudent \u003d {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" loginId: \u0027testStudent\u0027,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" role: UserRole.Student"},{"lineNumber":10,"author":{"gitId":"-"},"content":"};"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"const testTutor \u003d {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" loginId: \u0027testTutor\u0027,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" role: UserRole.Tutor"},{"lineNumber":15,"author":{"gitId":"-"},"content":"};"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"const testAdmin \u003d {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" loginId: \u0027testAdmin\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" role: UserRole.Admin"},{"lineNumber":20,"author":{"gitId":"-"},"content":"};"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"const mockUserService \u003d new UserService(null, null, null);"},{"lineNumber":23,"author":{"gitId":"-"},"content":"const mockPhaseService \u003d new PhaseService(null, null, null);"},{"lineNumber":24,"author":{"gitId":"-"},"content":"const permissionService \u003d new PermissionService(mockUserService, mockPhaseService);"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":"describe(\u0027Test a few permissions for each role in each phase\u0027, () \u003d\u003e {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" it(\u0027Test a few permissions for UserRole.Student\u0027, () \u003d\u003e {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseBugReporting;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" mockUserService.currentUser \u003d testStudent;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueCreatable()).toBe(true);"},{"lineNumber":31,"author":{"gitId":"-"},"content":" expect(permissionService.isTutorResponseEditable()).toBe(false);"},{"lineNumber":32,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseTeamResponse;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueLabelsEditable()).toBe(true);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expect(permissionService.isTeamResponseEditable()).toBe(true);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseTesterResponse;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueEditable()).toBe(true);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueDescriptionEditable()).toBe(false);"},{"lineNumber":38,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseModeration;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueDeletable()).toBe(false);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueTitleEditable()).toBe(false);"},{"lineNumber":41,"author":{"gitId":"-"},"content":" });"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" it(\u0027Test a few permissions for UserRole.Tutor\u0027, () \u003d\u003e {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseBugReporting;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mockUserService.currentUser \u003d testTutor;"},{"lineNumber":46,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueCreatable()).toBe(false);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueTitleEditable()).toBe(false);"},{"lineNumber":48,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseTeamResponse;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueLabelsEditable()).toBe(false);"},{"lineNumber":50,"author":{"gitId":"-"},"content":" expect(permissionService.isTeamResponseEditable()).toBe(false);"},{"lineNumber":51,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseTesterResponse;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueEditable()).toBe(false);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueDescriptionEditable()).toBe(false);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseModeration;"},{"lineNumber":55,"author":{"gitId":"-"},"content":" expect(permissionService.isTutorResponseEditable()).toBe(true);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueDeletable()).toBe(false);"},{"lineNumber":57,"author":{"gitId":"-"},"content":" });"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":" it(\u0027Test a few permissions for UserRole.Admin\u0027, () \u003d\u003e {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseBugReporting;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" mockUserService.currentUser \u003d testAdmin;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueCreatable()).toBe(true);"},{"lineNumber":63,"author":{"gitId":"-"},"content":" expect(permissionService.isTutorResponseEditable()).toBe(false);"},{"lineNumber":64,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseTeamResponse;"},{"lineNumber":65,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueLabelsEditable()).toBe(true);"},{"lineNumber":66,"author":{"gitId":"-"},"content":" expect(permissionService.isTeamResponseEditable()).toBe(true);"},{"lineNumber":67,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseTesterResponse;"},{"lineNumber":68,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueEditable()).toBe(true);"},{"lineNumber":69,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueDescriptionEditable()).toBe(true);"},{"lineNumber":70,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseModeration;"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueDeletable()).toBe(false);"},{"lineNumber":72,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueTitleEditable()).toBe(false);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" });"},{"lineNumber":74,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":73}},{"path":"tests/services/profile.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Profile } from \u0027../../src/app/core/models/profile.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../src/app/core/services/github.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { ProfileService } from \u0027../../src/app/core/services/profile.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"let githubService: GithubService;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"let profileService: ProfileService;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"const EMPTY_PROFILES \u003d [];"},{"lineNumber":9,"author":{"gitId":"-"},"content":"const VALID_PROFILES \u003d ["},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cProfile\u003e{"},{"lineNumber":11,"author":{"gitId":"-"},"content":" profileName: \u0027CATcher\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" repoName: \u0027CATcher-org/public_data\u0027"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }"},{"lineNumber":14,"author":{"gitId":"-"},"content":"];"},{"lineNumber":15,"author":{"gitId":"-"},"content":"const INVALID_PROFILES \u003d ["},{"lineNumber":16,"author":{"gitId":"-"},"content":" {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" profileName: \u0027CATcher\u0027"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }"},{"lineNumber":19,"author":{"gitId":"-"},"content":"];"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"describe(\u0027ProfileService\u0027, () \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" githubService \u003d new GithubService(null, null, null);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" profileService \u003d new ProfileService(githubService);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" });"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" describe(\u0027.fetchExternalProfiles()\u0027, () \u003d\u003e {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" it(\u0027should return an empty array if no profiles are given\u0027, () \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" spyOn(window, \u0027fetch\u0027).and.returnValue(generateProfilesPromise(EMPTY_PROFILES));"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return profileService.fetchExternalProfiles().then((profiles) \u003d\u003e expect(profiles).toEqual(EMPTY_PROFILES));"},{"lineNumber":31,"author":{"gitId":"-"},"content":" });"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" it(\u0027should return the set of profiles if a set of valid profiles is given\u0027, () \u003d\u003e {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" spyOn(window, \u0027fetch\u0027).and.returnValue(generateProfilesPromise(VALID_PROFILES));"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return profileService.fetchExternalProfiles().then((profiles) \u003d\u003e expect(profiles).toEqual(VALID_PROFILES));"},{"lineNumber":36,"author":{"gitId":"-"},"content":" });"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" it(\u0027should throw an error if a set of invalid profiles is given\u0027, () \u003d\u003e {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" spyOn(window, \u0027fetch\u0027).and.returnValue(generateProfilesPromise(INVALID_PROFILES));"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return profileService"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .fetchExternalProfiles()"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .then(() \u003d\u003e fail())"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .catch((error: Error) \u003d\u003e expect(error.message).toEqual(\u0027profiles.json is malformed\u0027));"},{"lineNumber":44,"author":{"gitId":"-"},"content":" });"},{"lineNumber":45,"author":{"gitId":"-"},"content":" });"},{"lineNumber":46,"author":{"gitId":"-"},"content":"});"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":"function generateProfilesPromise(profiles: any[]): Promise\u003cResponse\u003e {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" const mockResponse: Response \u003d { json: () \u003d\u003e Promise.resolve({ profiles: profiles }) } as Response;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return Promise.resolve(mockResponse);"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":50}},{"path":"tests/services/repo-creator.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../src/app/core/models/phase.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" BUG_REPORTING_INVALID_ROLE,"},{"lineNumber":5,"author":{"gitId":"-"},"content":" CURRENT_PHASE_REPO_CLOSED,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" MISSING_REQUIRED_REPO,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" RepoCreatorService"},{"lineNumber":8,"author":{"gitId":"-"},"content":"} from \u0027../../src/app/core/services/repo-creator.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../src/app/core/services/user.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { USER_JUNWEI, USER_Q } from \u0027../constants/data.constants\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"const PHASE_OWNER \u003d \u0027CATcher-org\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"const PHASE_REPO \u003d \u0027bugreporting\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"let repoCreatorService: RepoCreatorService;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"let matDialogRef: any;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"let matDialog: any;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"let githubService: any;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"let userService: UserService;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"describe(\u0027RepoCreatorService\u0027, () \u003d\u003e {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" userService \u003d new UserService(null, null, null);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" githubService \u003d jasmine.createSpyObj(\u0027GithubService\u0027, [\u0027isRepositoryPresent\u0027, \u0027createRepository\u0027]);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" matDialog \u003d jasmine.createSpyObj(\u0027MatDialog\u0027, [\u0027open\u0027]);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" matDialogRef \u003d jasmine.createSpyObj(\u0027MatDialogRef\u003cSessionFixConfirmationComponent\u003e\u0027, [\u0027afterClosed\u0027]);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" repoCreatorService \u003d new RepoCreatorService(githubService, userService, matDialog);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" });"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" describe(\u0027.verifyRepoCreation()\u0027, () \u003d\u003e {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" it(\u0027should not need to check the presence of the repository if no fix was done\u0027, () \u003d\u003e {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" of(null).pipe(repoCreatorService.verifyRepoCreation(PHASE_OWNER, PHASE_REPO)).subscribe();"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" expect(githubService.isRepositoryPresent).not.toHaveBeenCalled();"},{"lineNumber":34,"author":{"gitId":"-"},"content":" });"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" it(\u0027should check the presence of the repository if a fix was done\u0027, () \u003d\u003e {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" githubService.isRepositoryPresent.and.callFake(() \u003d\u003e of(true));"},{"lineNumber":38,"author":{"gitId":"-"},"content":" of(true).pipe(repoCreatorService.verifyRepoCreation(PHASE_OWNER, PHASE_REPO)).subscribe();"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" expect(githubService.isRepositoryPresent).toHaveBeenCalledWith(PHASE_OWNER, PHASE_REPO);"},{"lineNumber":41,"author":{"gitId":"-"},"content":" });"},{"lineNumber":42,"author":{"gitId":"-"},"content":" });"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":" describe(\u0027.requestRepoCreationPermissions()\u0027, () \u003d\u003e {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" it(\u0027should not return any permissions if the repo was already created\u0027, () \u003d\u003e {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" of(true)"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .pipe(repoCreatorService.requestRepoCreationPermissions(Phase.phaseBugReporting, PHASE_REPO))"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .subscribe((repoCreationPermission: boolean | null) \u003d\u003e expect(repoCreationPermission).toBe(null));"},{"lineNumber":49,"author":{"gitId":"-"},"content":" });"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" it(\u0027should not return any permissions if the repo was not created and the current phase is not bugReporting\u0027, () \u003d\u003e {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" of(false)"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .pipe(repoCreatorService.requestRepoCreationPermissions(Phase.phaseModeration, PHASE_REPO))"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .subscribe((repoCreationPermission: boolean | null) \u003d\u003e expect(repoCreationPermission).toBe(null));"},{"lineNumber":55,"author":{"gitId":"-"},"content":" });"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" it(\u0027should return permissions from matDialog if the repo was not created and current phase is bugReporting\u0027, () \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" userService.currentUser \u003d USER_JUNWEI;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" matDialog.open.and.callFake(() \u003d\u003e matDialogRef);"},{"lineNumber":60,"author":{"gitId":"-"},"content":" const permissionFromDialog \u003d false;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" matDialogRef.afterClosed.and.callFake(() \u003d\u003e of(permissionFromDialog));"},{"lineNumber":62,"author":{"gitId":"-"},"content":" of(false)"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .pipe(repoCreatorService.requestRepoCreationPermissions(Phase.phaseBugReporting, PHASE_REPO))"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .subscribe((repoCreationPermission: boolean | null) \u003d\u003e expect(repoCreationPermission).toBe(permissionFromDialog));"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" expect(matDialog.open).toHaveBeenCalledTimes(1);"},{"lineNumber":67,"author":{"gitId":"-"},"content":" expect(matDialogRef.afterClosed).toHaveBeenCalledTimes(1);"},{"lineNumber":68,"author":{"gitId":"-"},"content":" });"},{"lineNumber":69,"author":{"gitId":"-"},"content":" });"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" describe(\u0027verifyRepoCreationPermissions()\u0027, () \u003d\u003e {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" it(\u0027should return the original permissions if repo creation was not needed\u0027, () \u003d\u003e {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" userService.currentUser \u003d USER_JUNWEI;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" of(null)"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .pipe(repoCreatorService.verifyRepoCreationPermissions(Phase.phaseBugReporting))"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .subscribe((repoCreationPermission: boolean | null) \u003d\u003e expect(repoCreationPermission).toBe(null));"},{"lineNumber":77,"author":{"gitId":"-"},"content":" });"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" it(\u0027should return the original permissions if permissions were given\u0027, () \u003d\u003e {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" userService.currentUser \u003d USER_JUNWEI;"},{"lineNumber":81,"author":{"gitId":"-"},"content":" of(true)"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .pipe(repoCreatorService.verifyRepoCreationPermissions(Phase.phaseBugReporting))"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .subscribe((repoCreationPermission: boolean | null) \u003d\u003e expect(repoCreationPermission).toBe(true));"},{"lineNumber":84,"author":{"gitId":"-"},"content":" });"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" it(\u0027should throw an error if no permissions were given\u0027, () \u003d\u003e {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" of(false)"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .pipe(repoCreatorService.verifyRepoCreationPermissions(Phase.phaseBugReporting))"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":90,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":91,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(MISSING_REQUIRED_REPO))"},{"lineNumber":92,"author":{"gitId":"-"},"content":" });"},{"lineNumber":93,"author":{"gitId":"-"},"content":" });"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" it(\u0027should throw an error if the wrong phase were given\u0027, () \u003d\u003e {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" of(true)"},{"lineNumber":97,"author":{"gitId":"-"},"content":" .pipe(repoCreatorService.verifyRepoCreationPermissions(Phase.phaseModeration))"},{"lineNumber":98,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":99,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":100,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(CURRENT_PHASE_REPO_CLOSED))"},{"lineNumber":101,"author":{"gitId":"-"},"content":" });"},{"lineNumber":102,"author":{"gitId":"-"},"content":" });"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":" it(\u0027should throw an error if permissions, correct phase, but wrong user role were given\u0027, () \u003d\u003e {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" userService.currentUser \u003d USER_Q;"},{"lineNumber":106,"author":{"gitId":"-"},"content":" of(true)"},{"lineNumber":107,"author":{"gitId":"-"},"content":" .pipe(repoCreatorService.verifyRepoCreationPermissions(Phase.phaseBugReporting))"},{"lineNumber":108,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":109,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":110,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(BUG_REPORTING_INVALID_ROLE))"},{"lineNumber":111,"author":{"gitId":"-"},"content":" });"},{"lineNumber":112,"author":{"gitId":"-"},"content":" });"},{"lineNumber":113,"author":{"gitId":"-"},"content":" });"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"-"},"content":" describe(\u0027.attemptRepoCreation()\u0027, () \u003d\u003e {"},{"lineNumber":116,"author":{"gitId":"-"},"content":" it(\u0027should not create the repository if repo creation is not needed\u0027, () \u003d\u003e {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" of(null).pipe(repoCreatorService.attemptRepoCreation(PHASE_REPO)).subscribe();"},{"lineNumber":118,"author":{"gitId":"-"},"content":""},{"lineNumber":119,"author":{"gitId":"-"},"content":" expect(githubService.createRepository).not.toHaveBeenCalled();"},{"lineNumber":120,"author":{"gitId":"-"},"content":" });"},{"lineNumber":121,"author":{"gitId":"-"},"content":""},{"lineNumber":122,"author":{"gitId":"-"},"content":" it(\u0027should create the repository if permissions, correct phase and correct user role were given\u0027, () \u003d\u003e {"},{"lineNumber":123,"author":{"gitId":"-"},"content":" userService.currentUser \u003d USER_JUNWEI;"},{"lineNumber":124,"author":{"gitId":"-"},"content":" githubService.createRepository.and.callFake(() \u003d\u003e of(true));"},{"lineNumber":125,"author":{"gitId":"-"},"content":" of(true).pipe(repoCreatorService.attemptRepoCreation(PHASE_REPO)).subscribe();"},{"lineNumber":126,"author":{"gitId":"-"},"content":""},{"lineNumber":127,"author":{"gitId":"-"},"content":" expect(githubService.createRepository).toHaveBeenCalledWith(PHASE_REPO);"},{"lineNumber":128,"author":{"gitId":"-"},"content":" });"},{"lineNumber":129,"author":{"gitId":"-"},"content":" });"},{"lineNumber":130,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":129}},{"path":"tests/services/user.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { User } from \u0027../../src/app/core/models/user.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../src/app/core/services/user.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { jsonData, USER_JUNWEI, USER_Q, USER_SHUMING, USER_WITH_TWO_ROLES } from \u0027../constants/data.constants\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"let dataService: any;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"describe(\u0027UserService\u0027, () \u003d\u003e {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" describe(\u0027.createUserModel(loginId)\u0027, () \u003d\u003e {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" beforeAll(() \u003d\u003e {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" dataService \u003d jasmine.createSpyObj(\u0027DataService\u0027, [\u0027getDataFile\u0027]);"},{"lineNumber":12,"author":{"gitId":"-"},"content":" dataService.getDataFile.and.returnValue(of(jsonData));"},{"lineNumber":13,"author":{"gitId":"-"},"content":" });"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":" it(\u0027creates a Student user correctly\u0027, async () \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" await createAndVerifyUser(USER_JUNWEI.loginId, USER_JUNWEI);"},{"lineNumber":17,"author":{"gitId":"-"},"content":" });"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" it(\u0027creates a Tutor user correctly when loginId is very short\u0027, async () \u003d\u003e {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" await createAndVerifyUser(USER_Q.loginId, USER_Q);"},{"lineNumber":21,"author":{"gitId":"-"},"content":" });"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" it(\u0027creates an Admin user correctly\u0027, async () \u003d\u003e {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" await createAndVerifyUser(USER_SHUMING.loginId, USER_SHUMING);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" });"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" it(\u0027assigns highest possible role to a user who has multiple roles in data.csv\u0027, async () \u003d\u003e {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" await createAndVerifyUser(USER_WITH_TWO_ROLES.loginId, USER_WITH_TWO_ROLES);"},{"lineNumber":29,"author":{"gitId":"-"},"content":" });"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" it(\u0027should authorize User despite loginId being of different casing\u0027, () \u003d\u003e {"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const userService \u003d new UserService(null, dataService, null);"},{"lineNumber":33,"author":{"gitId":"-"},"content":" userService.createUserModel(USER_JUNWEI.loginId).subscribe((user) \u003d\u003e {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expect(user).toBeDefined();"},{"lineNumber":35,"author":{"gitId":"-"},"content":" });"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" userService.createUserModel(\u0027JUNWEi96\u0027).subscribe((user) \u003d\u003e {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expect(user).toBeDefined();"},{"lineNumber":39,"author":{"gitId":"-"},"content":" });"},{"lineNumber":40,"author":{"gitId":"-"},"content":" });"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" it(\u0027throws an error if the user is unauthorized\u0027, (done) \u003d\u003e {"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const userService \u003d new UserService(null, dataService, null);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" userService.createUserModel(\u0027RandomUser\u0027).subscribe("},{"lineNumber":45,"author":{"gitId":"-"},"content":" (user) \u003d\u003e {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" fail(\u0027This test case should have failed.\u0027);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" done();"},{"lineNumber":48,"author":{"gitId":"-"},"content":" },"},{"lineNumber":49,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" expect(error).toEqual(new Error(\u0027Unauthorized user.\u0027));"},{"lineNumber":51,"author":{"gitId":"-"},"content":" done();"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":" );"},{"lineNumber":54,"author":{"gitId":"-"},"content":" });"},{"lineNumber":55,"author":{"gitId":"-"},"content":" });"},{"lineNumber":56,"author":{"gitId":"-"},"content":"});"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":"async function createAndVerifyUser(loginId: string, expectedUser: User) {"},{"lineNumber":59,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const userService \u003d new UserService(null, dataService, null);"},{"lineNumber":60,"author":{"gitId":"-"},"content":" const actualUser \u003d await userService.createUserModel(loginId).toPromise();"},{"lineNumber":61,"author":{"gitId":"-"},"content":" expect(actualUser).toEqual(expectedUser);"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":3,"-":59}}] +[{"path":"e2e/page-objects/bugReporting.po.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"cheehongw"},"content":"import { expect, Page } from \u0027@playwright/test\u0027;"},{"lineNumber":2,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":3,"author":{"gitId":"cheehongw"},"content":"interface BugReport {"},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":" title: string;"},{"lineNumber":5,"author":{"gitId":"cheehongw"},"content":" severityLabel?: string;"},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":" bugTypeLabel?: string;"},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":"}"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"export class BugReportingPage {"},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":" readonly page: Page;"},{"lineNumber":11,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":12,"author":{"gitId":"cheehongw"},"content":" constructor(page: Page) {"},{"lineNumber":13,"author":{"gitId":"cheehongw"},"content":" this.page \u003d page;"},{"lineNumber":14,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":15,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":" async getPhaseDescription() {"},{"lineNumber":17,"author":{"gitId":"cheehongw"},"content":" return this.page.locator(\u0027app-layout-header\u0027).textContent();"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" async accessNewBugReportingPage() {"},{"lineNumber":21,"author":{"gitId":"cheehongw"},"content":" return this.page.getByRole(\u0027button\u0027, { name: \u0027New Issue\u0027 }).click();"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Identifies a Bug-Report based on the provided parameters."},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param title Title of Bug-Report."},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @param severityLabel Severity assigned to Bug-Report."},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @param bugTypeLabel Bug-Report\u0027s Type."},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @returns true if a unique Bug-Report is present, false otherwise."},{"lineNumber":30,"author":{"gitId":"-"},"content":" */"},{"lineNumber":31,"author":{"gitId":"cheehongw"},"content":" async isBugReportPresent({ title, severityLabel, bugTypeLabel }: BugReport) {"},{"lineNumber":32,"author":{"gitId":"cheehongw"},"content":" let allRows \u003d this.page.locator(\u0027.mat-row\u0027).filter({ hasText: title });"},{"lineNumber":33,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":34,"author":{"gitId":"cheehongw"},"content":" if (severityLabel !\u003d null) {"},{"lineNumber":35,"author":{"gitId":"cheehongw"},"content":" allRows \u003d allRows.filter({ hasText: severityLabel });"},{"lineNumber":36,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":37,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":38,"author":{"gitId":"cheehongw"},"content":" if (bugTypeLabel !\u003d null) {"},{"lineNumber":39,"author":{"gitId":"cheehongw"},"content":" allRows \u003d allRows.filter({ hasText: bugTypeLabel });"},{"lineNumber":40,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":41,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":42,"author":{"gitId":"cheehongw"},"content":" return allRows.count().then((count: number) \u003d\u003e count \u003d\u003d\u003d 1);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"-":17,"cheehongw":27}},{"path":"e2e/page-objects/login.po.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"cheehongw"},"content":"import { expect, Page } from \u0027@playwright/test\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"export class LoginPage {"},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":" readonly page: Page;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":" constructor(page: Page) {"},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":" this.page \u003d page;"},{"lineNumber":8,"author":{"gitId":"-"},"content":" }"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":" async navigateToRoot() {"},{"lineNumber":11,"author":{"gitId":"cheehongw"},"content":" await this.page.goto(\u0027/\u0027);"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":" async login() {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" await this.selectSession();"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"cheehongw"},"content":" /**"},{"lineNumber":19,"author":{"gitId":"cheehongw"},"content":" * Steps to select session on the login page."},{"lineNumber":20,"author":{"gitId":"cheehongw"},"content":" */"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private async selectSession() {"},{"lineNumber":22,"author":{"gitId":"cheehongw"},"content":" await this.page.locator(\u0027app-profiles\u0027).click();"},{"lineNumber":23,"author":{"gitId":"cheehongw"},"content":" await this.page.locator(\u0027mat-option\u0027).locator(\u0027nth\u003d1\u0027).click();"},{"lineNumber":24,"author":{"gitId":"cheehongw"},"content":" await this.page.getByRole(\u0027button\u0027, { name: \u0027Submit\u0027 }).click();"},{"lineNumber":25,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"cheehongw"},"content":" /**"},{"lineNumber":28,"author":{"gitId":"cheehongw"},"content":" * Steps to confirm user when redirected back by Github OAuth"},{"lineNumber":29,"author":{"gitId":"cheehongw"},"content":" */"},{"lineNumber":30,"author":{"gitId":"cheehongw"},"content":" async confirmUser() {"},{"lineNumber":31,"author":{"gitId":"cheehongw"},"content":" await expect(this.page.getByText(\u0027Confirm Login Account\u0027)).toHaveText(\u0027Confirm Login Account\u0027);"},{"lineNumber":32,"author":{"gitId":"cheehongw"},"content":" const login_button \u003d this.page.getByRole(\u0027button\u0027, { name: \u0027github-logo Continue as CAT-Tester\u0027 });"},{"lineNumber":33,"author":{"gitId":"cheehongw"},"content":" await expect(login_button).toBeVisible();"},{"lineNumber":34,"author":{"gitId":"cheehongw"},"content":" await login_button.click();"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" async bypassAuthentication() {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" await this.login();"},{"lineNumber":39,"author":{"gitId":"-"},"content":" await this.confirmUser();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"-":20,"cheehongw":21}},{"path":"e2e/page-objects/newIssue.po.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"cheehongw"},"content":"import { expect, Page } from \u0027@playwright/test\u0027;"},{"lineNumber":2,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":3,"author":{"gitId":"cheehongw"},"content":"type DropdownOptionProps \u003d {"},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":" optionNumber: number;"},{"lineNumber":5,"author":{"gitId":"cheehongw"},"content":" dropdownText: string;"},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":"};"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"export class NewIssuePage {"},{"lineNumber":9,"author":{"gitId":"cheehongw"},"content":" readonly page: Page;"},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":11,"author":{"gitId":"cheehongw"},"content":" constructor(page: Page) {"},{"lineNumber":12,"author":{"gitId":"cheehongw"},"content":" this.page \u003d page;"},{"lineNumber":13,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":14,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":" async enterNewIssueTitle(title: string) {"},{"lineNumber":16,"author":{"gitId":"cheehongw"},"content":" return this.page.locator(\u0027#title\u0027).fill(title);"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" async enterNewBugReportDescription(desc: string) {"},{"lineNumber":20,"author":{"gitId":"cheehongw"},"content":" const textArea \u003d this.page.locator(\u0027.text-input-area\u0027);"},{"lineNumber":21,"author":{"gitId":"cheehongw"},"content":" await textArea.focus();"},{"lineNumber":22,"author":{"gitId":"-"},"content":" await textArea.clear();"},{"lineNumber":23,"author":{"gitId":"cheehongw"},"content":" return textArea.fill(desc);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" async selectSeverityDropdown() {"},{"lineNumber":27,"author":{"gitId":"cheehongw"},"content":" return this.page.locator(\u0027.severity-dropdown\u0027).click();"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" async selectBugTypeDropdown() {"},{"lineNumber":31,"author":{"gitId":"cheehongw"},"content":" return this.page.locator(\u0027.bug-dropdown\u0027).click();"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"cheehongw"},"content":" async selectDropDownOption({ optionNumber, dropdownText }: Partial\u003cDropdownOptionProps\u003e) {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (optionNumber !\u003d null \u0026\u0026 dropdownText !\u003d null) {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" throw new Error(\u0027Supply either Dropdown option number or text, not both.\u0027);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" } else if (optionNumber \u003d\u003d null \u0026\u0026 dropdownText \u003d\u003d null) {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" throw new Error(\u0027No Dropdown identification parameters supplied.\u0027);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"cheehongw"},"content":" await expect(this.page.getByRole(\u0027listbox\u0027)).toBeVisible();"},{"lineNumber":42,"author":{"gitId":"cheehongw"},"content":" const selectedOption \u003d"},{"lineNumber":43,"author":{"gitId":"cheehongw"},"content":" optionNumber !\u003d null ? this.selectDropwdownByOption(optionNumber) : this.selectDropdownByText(dropdownText as string);"},{"lineNumber":44,"author":{"gitId":"cheehongw"},"content":" await selectedOption.click();"},{"lineNumber":45,"author":{"gitId":"cheehongw"},"content":" return expect(this.page.getByRole(\u0027listbox\u0027)).toBeHidden();"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" private selectDropwdownByOption(optionNumber: number) {"},{"lineNumber":49,"author":{"gitId":"cheehongw"},"content":" return this.page.locator(\u0027.mat-option\u0027).nth(optionNumber);"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" private selectDropdownByText(dropdownText: string) {"},{"lineNumber":53,"author":{"gitId":"cheehongw"},"content":" return this.page.locator(\u0027mat-option\u0027).filter({ hasText: dropdownText });"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" async submitBugReport() {"},{"lineNumber":57,"author":{"gitId":"cheehongw"},"content":" return this.page.locator(\u0027.submit-new-bug-report\u0027).click();"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"-":32,"cheehongw":27}},{"path":"e2e/spec/bugReportingPhase.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"cheehongw"},"content":"import { test, expect } from \u0027@playwright/test\u0027;"},{"lineNumber":2,"author":{"gitId":"cheehongw"},"content":"import { LoginPage } from \u0027../page-objects/login.po\u0027;"},{"lineNumber":3,"author":{"gitId":"cheehongw"},"content":"import { BugReportingPage } from \u0027../page-objects/bugReporting.po\u0027;"},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":"import { NewIssuePage } from \u0027../page-objects/newIssue.po\u0027;"},{"lineNumber":5,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":"test.describe(\"CATcher\u0027s Bug Reporting Phase\", () \u003d\u003e {"},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":" let bugReportingPage: BugReportingPage;"},{"lineNumber":8,"author":{"gitId":"cheehongw"},"content":" let loginPage: LoginPage;"},{"lineNumber":9,"author":{"gitId":"cheehongw"},"content":" let newIssuePage: NewIssuePage;"},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":11,"author":{"gitId":"cheehongw"},"content":" test.beforeEach(async ({ page }) \u003d\u003e {"},{"lineNumber":12,"author":{"gitId":"cheehongw"},"content":" loginPage \u003d new LoginPage(page);"},{"lineNumber":13,"author":{"gitId":"cheehongw"},"content":" bugReportingPage \u003d new BugReportingPage(page);"},{"lineNumber":14,"author":{"gitId":"cheehongw"},"content":" newIssuePage \u003d new NewIssuePage(page);"},{"lineNumber":15,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":16,"author":{"gitId":"cheehongw"},"content":" await loginPage.navigateToRoot();"},{"lineNumber":17,"author":{"gitId":"cheehongw"},"content":" await loginPage.bypassAuthentication();"},{"lineNumber":18,"author":{"gitId":"cheehongw"},"content":" });"},{"lineNumber":19,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":20,"author":{"gitId":"cheehongw"},"content":" test(`displays \"Bug Reporting Phase\" in header bar`, async ({ page }) \u003d\u003e {"},{"lineNumber":21,"author":{"gitId":"cheehongw"},"content":" expect(await bugReportingPage.getPhaseDescription()).toContain(\u0027Bug Reporting Phase\u0027);"},{"lineNumber":22,"author":{"gitId":"cheehongw"},"content":" });"},{"lineNumber":23,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":24,"author":{"gitId":"cheehongw"},"content":" test(`creates new bug report`, async ({ page }) \u003d\u003e {"},{"lineNumber":25,"author":{"gitId":"cheehongw"},"content":" const testIssueCreationTitle \u003d \u0027Test Issue Creation Title\u0027;"},{"lineNumber":26,"author":{"gitId":"cheehongw"},"content":" const testIssueCreationDescription \u003d \u0027Test Issue Creation Text\u0027;"},{"lineNumber":27,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":28,"author":{"gitId":"cheehongw"},"content":" await bugReportingPage.accessNewBugReportingPage();"},{"lineNumber":29,"author":{"gitId":"cheehongw"},"content":" await newIssuePage.enterNewIssueTitle(testIssueCreationTitle);"},{"lineNumber":30,"author":{"gitId":"cheehongw"},"content":" await newIssuePage.enterNewBugReportDescription(testIssueCreationDescription);"},{"lineNumber":31,"author":{"gitId":"cheehongw"},"content":" await newIssuePage.selectSeverityDropdown();"},{"lineNumber":32,"author":{"gitId":"cheehongw"},"content":" await newIssuePage.selectDropDownOption({ dropdownText: \u0027Medium\u0027 });"},{"lineNumber":33,"author":{"gitId":"cheehongw"},"content":" await newIssuePage.selectBugTypeDropdown();"},{"lineNumber":34,"author":{"gitId":"cheehongw"},"content":" await newIssuePage.selectDropDownOption({ dropdownText: \u0027DocumentationBug\u0027 });"},{"lineNumber":35,"author":{"gitId":"cheehongw"},"content":" await newIssuePage.submitBugReport();"},{"lineNumber":36,"author":{"gitId":"cheehongw"},"content":" await page.locator(\u0027.back-button\u0027).click();"},{"lineNumber":37,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":38,"author":{"gitId":"cheehongw"},"content":" const isBugReportCorrectlyCreated: boolean \u003d await bugReportingPage.isBugReportPresent({"},{"lineNumber":39,"author":{"gitId":"cheehongw"},"content":" title: testIssueCreationTitle,"},{"lineNumber":40,"author":{"gitId":"cheehongw"},"content":" severityLabel: \u0027Medium\u0027,"},{"lineNumber":41,"author":{"gitId":"cheehongw"},"content":" bugTypeLabel: \u0027DocumentationBug\u0027"},{"lineNumber":42,"author":{"gitId":"cheehongw"},"content":" });"},{"lineNumber":43,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":44,"author":{"gitId":"cheehongw"},"content":" expect(isBugReportCorrectlyCreated).toEqual(true);"},{"lineNumber":45,"author":{"gitId":"cheehongw"},"content":" });"},{"lineNumber":46,"author":{"gitId":"cheehongw"},"content":"});"}],"authorContributionMap":{"cheehongw":46}},{"path":"e2e/spec/login.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"cheehongw"},"content":"import { AppConfig } from \u0027../../src/environments/environment\u0027;"},{"lineNumber":2,"author":{"gitId":"cheehongw"},"content":"import { test, expect } from \u0027@playwright/test\u0027;"},{"lineNumber":3,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":"test.describe(\"CATcher\u0027s Login Page\", () \u003d\u003e {"},{"lineNumber":5,"author":{"gitId":"cheehongw"},"content":" test.beforeEach(async ({ page }) \u003d\u003e {"},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":" await page.goto(\u0027/\u0027);"},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":" });"},{"lineNumber":8,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":9,"author":{"gitId":"cheehongw"},"content":" test(\u0027displays \"CATcher\" in header bar\u0027, async ({ page }) \u003d\u003e {"},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":" const title \u003d await page.locator(\u0027app-layout-header\u0027).textContent();"},{"lineNumber":11,"author":{"gitId":"cheehongw"},"content":" expect(title).toEqual(`CATcher v${AppConfig.version}receiptmail`);"},{"lineNumber":12,"author":{"gitId":"cheehongw"},"content":" });"},{"lineNumber":13,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":14,"author":{"gitId":"cheehongw"},"content":" test(\u0027allows users to authenticate themselves\u0027, async ({ page }) \u003d\u003e {"},{"lineNumber":15,"author":{"gitId":"cheehongw"},"content":" await page.locator(\u0027app-profiles\u0027).click();"},{"lineNumber":16,"author":{"gitId":"cheehongw"},"content":" await page.locator(\u0027mat-option\u0027).locator(\u0027nth\u003d1\u0027).click();"},{"lineNumber":17,"author":{"gitId":"cheehongw"},"content":" await page.getByRole(\u0027button\u0027, { name: \u0027Submit\u0027 }).click();"},{"lineNumber":18,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":19,"author":{"gitId":"cheehongw"},"content":" await expect(page.getByText(\u0027Confirm Login Account\u0027)).toHaveText(\u0027Confirm Login Account\u0027);"},{"lineNumber":20,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":21,"author":{"gitId":"cheehongw"},"content":" const login_button \u003d page.getByRole(\u0027button\u0027, { name: \u0027github-logo Continue as CAT-Tester\u0027 });"},{"lineNumber":22,"author":{"gitId":"cheehongw"},"content":" await expect(login_button).toBeVisible();"},{"lineNumber":23,"author":{"gitId":"cheehongw"},"content":" await login_button.click();"},{"lineNumber":24,"author":{"gitId":"cheehongw"},"content":" });"},{"lineNumber":25,"author":{"gitId":"cheehongw"},"content":"});"}],"authorContributionMap":{"cheehongw":25}},{"path":"playwright.config.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"cheehongw"},"content":"import { defineConfig, devices } from \u0027@playwright/test\u0027;"},{"lineNumber":2,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":3,"author":{"gitId":"cheehongw"},"content":"/**"},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":" * Read environment variables from file."},{"lineNumber":5,"author":{"gitId":"cheehongw"},"content":" * https://github.com/motdotla/dotenv"},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":" */"},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":"// require(\u0027dotenv\u0027).config();"},{"lineNumber":8,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":9,"author":{"gitId":"cheehongw"},"content":"/**"},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":" * See https://playwright.dev/docs/test-configuration."},{"lineNumber":11,"author":{"gitId":"cheehongw"},"content":" */"},{"lineNumber":12,"author":{"gitId":"cheehongw"},"content":"export default defineConfig({"},{"lineNumber":13,"author":{"gitId":"cheehongw"},"content":" testDir: \u0027./e2e/spec/\u0027,"},{"lineNumber":14,"author":{"gitId":"cheehongw"},"content":" /* Maximum time one test can run for. */"},{"lineNumber":15,"author":{"gitId":"cheehongw"},"content":" timeout: 30 * 1000,"},{"lineNumber":16,"author":{"gitId":"cheehongw"},"content":" expect: {"},{"lineNumber":17,"author":{"gitId":"cheehongw"},"content":" /**"},{"lineNumber":18,"author":{"gitId":"cheehongw"},"content":" * Maximum time expect() should wait for the condition to be met."},{"lineNumber":19,"author":{"gitId":"cheehongw"},"content":" * For example in `await expect(locator).toHaveText();`"},{"lineNumber":20,"author":{"gitId":"cheehongw"},"content":" */"},{"lineNumber":21,"author":{"gitId":"cheehongw"},"content":" timeout: 5000"},{"lineNumber":22,"author":{"gitId":"cheehongw"},"content":" },"},{"lineNumber":23,"author":{"gitId":"cheehongw"},"content":" /* Run tests in files in parallel */"},{"lineNumber":24,"author":{"gitId":"cheehongw"},"content":" fullyParallel: true,"},{"lineNumber":25,"author":{"gitId":"cheehongw"},"content":" /* Fail the build on CI if you accidentally left test.only in the source code. */"},{"lineNumber":26,"author":{"gitId":"cheehongw"},"content":" forbidOnly: !!process.env.CI,"},{"lineNumber":27,"author":{"gitId":"cheehongw"},"content":" /* Retry on CI only */"},{"lineNumber":28,"author":{"gitId":"cheehongw"},"content":" retries: process.env.CI ? 2 : 0,"},{"lineNumber":29,"author":{"gitId":"cheehongw"},"content":" /* Opt out of parallel tests on CI. */"},{"lineNumber":30,"author":{"gitId":"cheehongw"},"content":" workers: process.env.CI ? 1 : undefined,"},{"lineNumber":31,"author":{"gitId":"cheehongw"},"content":" /* Reporter to use. See https://playwright.dev/docs/test-reporters */"},{"lineNumber":32,"author":{"gitId":"cheehongw"},"content":" reporter: \u0027html\u0027,"},{"lineNumber":33,"author":{"gitId":"cheehongw"},"content":" /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */"},{"lineNumber":34,"author":{"gitId":"cheehongw"},"content":" use: {"},{"lineNumber":35,"author":{"gitId":"cheehongw"},"content":" /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */"},{"lineNumber":36,"author":{"gitId":"cheehongw"},"content":" actionTimeout: 0,"},{"lineNumber":37,"author":{"gitId":"cheehongw"},"content":" /* Base URL to use in actions like `await page.goto(\u0027/\u0027)`. */"},{"lineNumber":38,"author":{"gitId":"cheehongw"},"content":" baseURL: \u0027http://localhost:4200\u0027,"},{"lineNumber":39,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":40,"author":{"gitId":"cheehongw"},"content":" /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */"},{"lineNumber":41,"author":{"gitId":"cheehongw"},"content":" trace: \u0027on-first-retry\u0027"},{"lineNumber":42,"author":{"gitId":"cheehongw"},"content":" },"},{"lineNumber":43,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":44,"author":{"gitId":"cheehongw"},"content":" /* Configure projects for major browsers */"},{"lineNumber":45,"author":{"gitId":"cheehongw"},"content":" projects: ["},{"lineNumber":46,"author":{"gitId":"cheehongw"},"content":" {"},{"lineNumber":47,"author":{"gitId":"cheehongw"},"content":" name: \u0027chromium\u0027,"},{"lineNumber":48,"author":{"gitId":"cheehongw"},"content":" use: { ...devices[\u0027Desktop Chrome\u0027] }"},{"lineNumber":49,"author":{"gitId":"cheehongw"},"content":" },"},{"lineNumber":50,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":51,"author":{"gitId":"cheehongw"},"content":" {"},{"lineNumber":52,"author":{"gitId":"cheehongw"},"content":" name: \u0027firefox\u0027,"},{"lineNumber":53,"author":{"gitId":"cheehongw"},"content":" use: { ...devices[\u0027Desktop Firefox\u0027] }"},{"lineNumber":54,"author":{"gitId":"cheehongw"},"content":" },"},{"lineNumber":55,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":56,"author":{"gitId":"cheehongw"},"content":" {"},{"lineNumber":57,"author":{"gitId":"cheehongw"},"content":" name: \u0027webkit\u0027,"},{"lineNumber":58,"author":{"gitId":"cheehongw"},"content":" use: { ...devices[\u0027Desktop Safari\u0027] }"},{"lineNumber":59,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":60,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":61,"author":{"gitId":"cheehongw"},"content":" /* Test against mobile viewports. */"},{"lineNumber":62,"author":{"gitId":"cheehongw"},"content":" // {"},{"lineNumber":63,"author":{"gitId":"cheehongw"},"content":" // name: \u0027Mobile Chrome\u0027,"},{"lineNumber":64,"author":{"gitId":"cheehongw"},"content":" // use: { ...devices[\u0027Pixel 5\u0027] },"},{"lineNumber":65,"author":{"gitId":"cheehongw"},"content":" // },"},{"lineNumber":66,"author":{"gitId":"cheehongw"},"content":" // {"},{"lineNumber":67,"author":{"gitId":"cheehongw"},"content":" // name: \u0027Mobile Safari\u0027,"},{"lineNumber":68,"author":{"gitId":"cheehongw"},"content":" // use: { ...devices[\u0027iPhone 12\u0027] },"},{"lineNumber":69,"author":{"gitId":"cheehongw"},"content":" // },"},{"lineNumber":70,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":71,"author":{"gitId":"cheehongw"},"content":" /* Test against branded browsers. */"},{"lineNumber":72,"author":{"gitId":"cheehongw"},"content":" // {"},{"lineNumber":73,"author":{"gitId":"cheehongw"},"content":" // name: \u0027Microsoft Edge\u0027,"},{"lineNumber":74,"author":{"gitId":"cheehongw"},"content":" // use: { channel: \u0027msedge\u0027 },"},{"lineNumber":75,"author":{"gitId":"cheehongw"},"content":" // },"},{"lineNumber":76,"author":{"gitId":"cheehongw"},"content":" // {"},{"lineNumber":77,"author":{"gitId":"cheehongw"},"content":" // name: \u0027Google Chrome\u0027,"},{"lineNumber":78,"author":{"gitId":"cheehongw"},"content":" // use: { channel: \u0027chrome\u0027 },"},{"lineNumber":79,"author":{"gitId":"cheehongw"},"content":" // },"},{"lineNumber":80,"author":{"gitId":"cheehongw"},"content":" ],"},{"lineNumber":81,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":82,"author":{"gitId":"cheehongw"},"content":" /* Folder for test artifacts such as screenshots, videos, traces, etc. */"},{"lineNumber":83,"author":{"gitId":"cheehongw"},"content":" // outputDir: \u0027test-results/\u0027,"},{"lineNumber":84,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":85,"author":{"gitId":"cheehongw"},"content":" /* Run your local dev server before starting the tests */"},{"lineNumber":86,"author":{"gitId":"cheehongw"},"content":" webServer: {"},{"lineNumber":87,"author":{"gitId":"cheehongw"},"content":" command: \u0027npm run ng:serve:test\u0027,"},{"lineNumber":88,"author":{"gitId":"cheehongw"},"content":" port: 4200,"},{"lineNumber":89,"author":{"gitId":"cheehongw"},"content":" reuseExistingServer: !process.env.CI"},{"lineNumber":90,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":91,"author":{"gitId":"cheehongw"},"content":"});"}],"authorContributionMap":{"cheehongw":91}},{"path":"src/app/app.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../environments/environment\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027./core/services/error-handling.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./core/services/logging.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":7,"author":{"gitId":"-"},"content":" selector: \u0027app-root\u0027,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" templateUrl: \u0027./app.component.html\u0027,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./app.component.css\u0027]"},{"lineNumber":10,"author":{"gitId":"-"},"content":"})"},{"lineNumber":11,"author":{"gitId":"-"},"content":"export class AppComponent implements AfterViewInit {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" NOT_CONNECTED_ERROR: Error \u003d new Error(\u0027You are not connected to the internet.\u0027);"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor(logger: LoggingService, public errorHandlingService: ErrorHandlingService) {"},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.info(\u0027AppComponent: AppConfig\u0027, AppConfig);"},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.info(\u0027AppComponent: Mode web\u0027);"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" ngAfterViewInit() {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addListenerForNetworkOffline();"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * This listener checks if CATcher has a connection to a network, and will show an error snackbar if it does not."},{"lineNumber":25,"author":{"gitId":"-"},"content":" */"},{"lineNumber":26,"author":{"gitId":"-"},"content":" addListenerForNetworkOffline() {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" window.addEventListener("},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u0027offline\u0027,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" (event) \u003d\u003e {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(this.NOT_CONNECTED_ERROR);"},{"lineNumber":31,"author":{"gitId":"-"},"content":" },"},{"lineNumber":32,"author":{"gitId":"-"},"content":" false"},{"lineNumber":33,"author":{"gitId":"-"},"content":" );"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":3,"-":32}},{"path":"src/app/app.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpClientModule } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ErrorHandler, NgModule, NgZone } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { BrowserModule, Title } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { BrowserAnimationsModule } from \u0027@angular/platform-browser/animations\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { NavigationEnd, Router } from \u0027@angular/router\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Apollo, ApolloModule } from \u0027apollo-angular\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { HttpLink, HttpLinkModule } from \u0027apollo-angular-link-http\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { InMemoryCache, IntrospectionFragmentMatcher } from \u0027apollo-cache-inmemory\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ApolloLink } from \u0027apollo-link\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { setContext } from \u0027apollo-link-context\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { MarkdownModule, MarkedOptions } from \u0027ngx-markdown\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import \u0027reflect-metadata\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import graphqlTypes from \u0027../../graphql/graphql-types\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import \u0027../polyfills\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { AppRoutingModule } from \u0027./app-routing.module\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { AppComponent } from \u0027./app.component\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { AuthModule } from \u0027./auth/auth.module\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { UserConfirmationComponent } from \u0027./core/guards/user-confirmation/user-confirmation.component\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027./core/services/auth.service\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import { DataService } from \u0027./core/services/data.service\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027./core/services/error-handling.service\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import { AuthServiceFactory } from \u0027./core/services/factories/factory.auth.service\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import { GithubServiceFactory } from \u0027./core/services/factories/factory.github.service\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import { IssueServiceFactory } from \u0027./core/services/factories/factory.issue.service\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./core/services/github.service\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027./core/services/githubevent.service\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027./core/services/issue.service\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./core/services/logging.service\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027./core/services/phase.service\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import { SessionFixConfirmationComponent } from \u0027./core/services/session-fix-confirmation/session-fix-confirmation.component\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./core/services/user.service\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import { PhaseBugReportingModule } from \u0027./phase-bug-reporting/phase-bug-reporting.module\u0027;"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import { PhaseModerationModule } from \u0027./phase-moderation/phase-moderation.module\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import { PhaseTeamResponseModule } from \u0027./phase-team-response/phase-team-response.module\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import { PhaseTesterResponseModule } from \u0027./phase-tester-response/phase-tester-response.module\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import { LabelDefinitionPopupComponent } from \u0027./shared/label-definition-popup/label-definition-popup.component\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import { HeaderComponent } from \u0027./shared/layout\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import { markedOptionsFactory } from \u0027./shared/lib/marked\u0027;"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027./shared/shared.module\u0027;"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":42,"author":{"gitId":"-"},"content":" declarations: [AppComponent, HeaderComponent, UserConfirmationComponent, LabelDefinitionPopupComponent, SessionFixConfirmationComponent],"},{"lineNumber":43,"author":{"gitId":"-"},"content":" imports: ["},{"lineNumber":44,"author":{"gitId":"-"},"content":" BrowserModule,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" PhaseTesterResponseModule,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" BrowserAnimationsModule,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" AuthModule,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" PhaseBugReportingModule,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" PhaseTeamResponseModule,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" PhaseModerationModule,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" SharedModule,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" HttpClientModule,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" MarkdownModule.forRoot({"},{"lineNumber":54,"author":{"gitId":"-"},"content":" markedOptions: {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" provide: MarkedOptions,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" useFactory: markedOptionsFactory"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":59,"author":{"gitId":"-"},"content":" AppRoutingModule,"},{"lineNumber":60,"author":{"gitId":"-"},"content":" ApolloModule,"},{"lineNumber":61,"author":{"gitId":"-"},"content":" HttpLinkModule"},{"lineNumber":62,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":63,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":64,"author":{"gitId":"-"},"content":" {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" provide: GithubService,"},{"lineNumber":66,"author":{"gitId":"-"},"content":" useFactory: GithubServiceFactory,"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" deps: [ErrorHandlingService, Apollo, LoggingService]"},{"lineNumber":68,"author":{"gitId":"-"},"content":" },"},{"lineNumber":69,"author":{"gitId":"-"},"content":" {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" provide: AuthService,"},{"lineNumber":71,"author":{"gitId":"-"},"content":" useFactory: AuthServiceFactory,"},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" deps: [Router, NgZone, GithubService, UserService, IssueService, PhaseService, DataService, GithubEventService, Title, LoggingService]"},{"lineNumber":73,"author":{"gitId":"-"},"content":" },"},{"lineNumber":74,"author":{"gitId":"-"},"content":" {"},{"lineNumber":75,"author":{"gitId":"-"},"content":" provide: IssueService,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" useFactory: IssueServiceFactory,"},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" deps: [GithubService, UserService, PhaseService, DataService, LoggingService]"},{"lineNumber":78,"author":{"gitId":"-"},"content":" },"},{"lineNumber":79,"author":{"gitId":"-"},"content":" {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" provide: ErrorHandler,"},{"lineNumber":81,"author":{"gitId":"-"},"content":" useClass: ErrorHandlingService"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }"},{"lineNumber":83,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":84,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" bootstrap: [AppComponent]"},{"lineNumber":85,"author":{"gitId":"-"},"content":"})"},{"lineNumber":86,"author":{"gitId":"-"},"content":"export class AppModule {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":88,"author":{"gitId":"-"},"content":" private apollo: Apollo,"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private httpLink: HttpLink,"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private authService: AuthService,"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService"},{"lineNumber":93,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" const URI \u003d \u0027https://api.github.com/graphql\u0027;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" const basic \u003d setContext(() \u003d\u003e {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return { headers: { Accept: \u0027charset\u003dutf-8\u0027 } };"},{"lineNumber":97,"author":{"gitId":"-"},"content":" });"},{"lineNumber":98,"author":{"gitId":"-"},"content":" const auth \u003d setContext(() \u003d\u003e {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return { headers: { Authorization: `Token ${this.authService.accessToken.getValue()}` } };"},{"lineNumber":100,"author":{"gitId":"-"},"content":" });"},{"lineNumber":101,"author":{"gitId":"-"},"content":" const link \u003d ApolloLink.from([basic, auth, this.httpLink.create({ uri: URI })]);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" const fragmentMatcher \u003d new IntrospectionFragmentMatcher({"},{"lineNumber":103,"author":{"gitId":"-"},"content":" introspectionQueryResultData: graphqlTypes"},{"lineNumber":104,"author":{"gitId":"-"},"content":" });"},{"lineNumber":105,"author":{"gitId":"-"},"content":" const cache \u003d new InMemoryCache({ fragmentMatcher });"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.apollo.create({"},{"lineNumber":107,"author":{"gitId":"-"},"content":" link: link,"},{"lineNumber":108,"author":{"gitId":"-"},"content":" cache: cache"},{"lineNumber":109,"author":{"gitId":"-"},"content":" });"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.router.events.subscribe((event) \u003d\u003e {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (event instanceof NavigationEnd) {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.errorHandlingService.clearError();"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }"},{"lineNumber":114,"author":{"gitId":"-"},"content":" });"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":4,"-":112}},{"path":"src/app/auth/auth.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, NgZone, OnDestroy, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ActivatedRoute, Router } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Observable, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { filter, map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../environments/environment\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../core/models/github-user.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { ApplicationService } from \u0027../core/services/application.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { AuthService, AuthState } from \u0027../core/services/auth.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../core/services/error-handling.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../core/services/github.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../core/services/logging.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../core/services/phase.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../core/services/user.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"const APPLICATION_VERSION_OUTDATED_ERROR \u003d \u0027Please update to the latest version of CATcher.\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" selector: \u0027app-auth\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" templateUrl: \u0027./auth.component.html\u0027,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./auth.component.css\u0027]"},{"lineNumber":21,"author":{"gitId":"-"},"content":"})"},{"lineNumber":22,"author":{"gitId":"-"},"content":"export class AuthComponent implements OnInit, OnDestroy {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" authState: AuthState;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" accessTokenSubscription: Subscription;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" authStateSubscription: Subscription;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" currentUserName: string;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" urlEncodedSessionName: string;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" sessionInformation: string;"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":31,"author":{"gitId":"-"},"content":" public appService: ApplicationService,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private authService: AuthService,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private ngZone: NgZone,"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private activatedRoute: ActivatedRoute,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private logger: LoggingService"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ) {}"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.logger.startSession();"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" const oauthCode \u003d this.activatedRoute.snapshot.queryParamMap.get(\u0027code\u0027);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" const state \u003d this.activatedRoute.snapshot.queryParamMap.get(\u0027state\u0027);"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (this.authService.isAuthenticated()) {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.router.navigate([this.phaseService.currentPhase]);"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.initAccessTokenSubscription();"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.initAuthStateSubscription();"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.createProfileFromUrlQueryParams();"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (oauthCode) {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // runs upon receiving oauthCode from the redirect"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.restoreOrgDetailsFromLocalStorage();"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(\u0027AuthComponent: Obtained authorisation code from Github\u0027);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.fetchAccessToken(oauthCode, state);"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Will fetch the access token from GitHub."},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param oauthCode - The authorisation code obtained from GitHub."},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param state - The state returned from GitHub."},{"lineNumber":69,"author":{"gitId":"-"},"content":" */"},{"lineNumber":70,"author":{"gitId":"-"},"content":" fetchAccessToken(oauthCode: string, state: string) {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!this.authService.isReturnedStateSame(state)) {"},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`AuthComponent: Received incorrect state ${state}, continue waiting for correct state`);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(\u0027AuthComponent: Retrieving access token from Github\u0027);"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" const accessTokenUrl \u003d `${AppConfig.accessTokenUrl}/${oauthCode}/client_id/${AppConfig.clientId}`;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" fetch(accessTokenUrl)"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .then((res) \u003d\u003e res.json())"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .then((data) \u003d\u003e {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (data.error) {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new Error(data.error);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.authService.storeOAuthAccessToken(data.token);"},{"lineNumber":86,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(\u0027AuthComponent: Sucessfully obtained access token\u0027);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" })"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .catch((err) \u003d\u003e {"},{"lineNumber":89,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`AuthComponent: Error in data fetched from access token URL: ${err}`);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(err);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" });"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" ngOnDestroy() {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (this.authStateSubscription) {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" this.authStateSubscription.unsubscribe();"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (this.accessTokenSubscription) {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" this.accessTokenSubscription.unsubscribe();"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Checks whether the current version of CATcher is outdated."},{"lineNumber":106,"author":{"gitId":"-"},"content":" */"},{"lineNumber":107,"author":{"gitId":"-"},"content":" checkAppIsOutdated(): Observable\u003cany\u003e {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return this.appService.isApplicationOutdated().pipe("},{"lineNumber":109,"author":{"gitId":"-"},"content":" map((isOutdated: boolean) \u003d\u003e {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (isOutdated) {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new Error(APPLICATION_VERSION_OUTDATED_ERROR);"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }"},{"lineNumber":113,"author":{"gitId":"-"},"content":" })"},{"lineNumber":114,"author":{"gitId":"-"},"content":" );"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":" updateSession(sessionEvent: string) {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" this.sessionInformation \u003d sessionEvent;"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" goToSessionSelect() {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }"},{"lineNumber":124,"author":{"gitId":"-"},"content":""},{"lineNumber":125,"author":{"gitId":"-"},"content":" isUserNotAuthenticated(): boolean {"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.NotAuthenticated;"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }"},{"lineNumber":128,"author":{"gitId":"-"},"content":""},{"lineNumber":129,"author":{"gitId":"-"},"content":" isUserAuthenticating(): boolean {"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.AwaitingAuthentication;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }"},{"lineNumber":132,"author":{"gitId":"-"},"content":""},{"lineNumber":133,"author":{"gitId":"-"},"content":" isAwaitingOAuthUserConfirm(): boolean {"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.ConfirmOAuthUser;"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":" get currentSessionOrg(): string {"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!this.sessionInformation) {"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // Retrieve org details of session information from local storage"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return window.localStorage.getItem(\u0027org\u0027);"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return this.getOrgDetails(this.sessionInformation);"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }"},{"lineNumber":144,"author":{"gitId":"-"},"content":""},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Extracts organization and data repository details from local storage"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * and restores them to CATcher."},{"lineNumber":148,"author":{"gitId":"-"},"content":" */"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private restoreOrgDetailsFromLocalStorage() {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" const org \u003d window.localStorage.getItem(\u0027org\u0027);"},{"lineNumber":151,"author":{"gitId":"-"},"content":" const dataRepo \u003d window.localStorage.getItem(\u0027dataRepo\u0027);"},{"lineNumber":152,"author":{"gitId":"-"},"content":" this.githubService.storeOrganizationDetails(org, dataRepo);"},{"lineNumber":153,"author":{"gitId":"-"},"content":" this.phaseService.setSessionData();"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }"},{"lineNumber":155,"author":{"gitId":"-"},"content":""},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Extracts the Organization Details from the input sessionInformation."},{"lineNumber":158,"author":{"gitId":"-"},"content":" * @param sessionInformation - string in the format of \u0027orgName/dataRepo\u0027"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */"},{"lineNumber":160,"author":{"gitId":"-"},"content":" private getOrgDetails(sessionInformation: string) {"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return sessionInformation.split(\u0027/\u0027)[0];"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":" private initAuthStateSubscription() {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" this.authStateSubscription \u003d this.authService.currentAuthState.subscribe((state) \u003d\u003e {"},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e {"},{"lineNumber":167,"author":{"gitId":"-"},"content":" this.authState \u003d state;"},{"lineNumber":168,"author":{"gitId":"-"},"content":" });"},{"lineNumber":169,"author":{"gitId":"-"},"content":" });"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }"},{"lineNumber":171,"author":{"gitId":"-"},"content":""},{"lineNumber":172,"author":{"gitId":"-"},"content":" private initAccessTokenSubscription() {"},{"lineNumber":173,"author":{"gitId":"-"},"content":" this.accessTokenSubscription \u003d this.authService.accessToken"},{"lineNumber":174,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":175,"author":{"gitId":"-"},"content":" filter((token: string) \u003d\u003e !!token),"},{"lineNumber":176,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap(() \u003d\u003e this.userService.getAuthenticatedUser())"},{"lineNumber":177,"author":{"gitId":"-"},"content":" )"},{"lineNumber":178,"author":{"gitId":"-"},"content":" .subscribe((user: GithubUser) \u003d\u003e {"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e {"},{"lineNumber":180,"author":{"gitId":"-"},"content":" this.currentUserName \u003d user.login;"},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.ConfirmOAuthUser);"},{"lineNumber":182,"author":{"gitId":"-"},"content":" });"},{"lineNumber":183,"author":{"gitId":"-"},"content":" });"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }"},{"lineNumber":185,"author":{"gitId":"-"},"content":""},{"lineNumber":186,"author":{"gitId":"-"},"content":" private createProfileFromUrlQueryParams() {"},{"lineNumber":187,"author":{"gitId":"-"},"content":" const urlParams \u003d this.activatedRoute.snapshot.queryParamMap;"},{"lineNumber":188,"author":{"gitId":"-"},"content":" if (urlParams.has(\u0027session\u0027)) {"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.urlEncodedSessionName \u003d urlParams.get(\u0027session\u0027);"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":8,"-":184}},{"path":"src/app/auth/auth.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { CommonModule } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../shared/shared.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { AuthRoutingModule } from \u0027./auth-routing.module\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { AuthComponent } from \u0027./auth.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ConfirmLoginComponent } from \u0027./confirm-login/confirm-login.component\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { JsonParseErrorDialogComponent } from \u0027./profiles/json-parse-error-dialog/json-parse-error-dialog.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ProfilesComponent } from \u0027./profiles/profiles.component\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { SessionSelectionComponent } from \u0027./session-selection/session-selection.component\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":12,"author":{"gitId":"-"},"content":" imports: [AuthRoutingModule, SharedModule, CommonModule],"},{"lineNumber":13,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" declarations: [AuthComponent, ProfilesComponent, JsonParseErrorDialogComponent, ConfirmLoginComponent, SessionSelectionComponent]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class AuthModule {}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":14}},{"path":"src/app/auth/confirm-login/confirm-login.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cbutton mat-stroked-button class\u003d\"sign-in-button\" color\u003d\"primary\" (click)\u003d\"this.completeLoginProcess()\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"logo\"\u003e \u003cimg class\u003d\"github-logo\" src\u003d\"./assets/images/github-logo.png\" alt\u003d\"github-logo\" /\u003e \u003c/span\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cspan\u003e Continue as {{ this.username }} \u003c/span\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"\u003cdiv class\u003d\"mat-body-1\" style\u003d\"margin-top: 20px\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" To change account, please sign into the desired account from the"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003ca href\u003d\"https://github.com/\" (click)\u003d\"onGithubWebsiteClicked()\"\u003eofficial Github website\u003c/a\u003e."},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":8}},{"path":"src/app/auth/confirm-login/confirm-login.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Input, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { AuthService, AuthState } from \u0027../../core/services/auth.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../core/services/user.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":12,"author":{"gitId":"-"},"content":" selector: \u0027app-auth-confirm-login\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" templateUrl: \u0027./confirm-login.component.html\u0027,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./confirm-login.component.css\u0027]"},{"lineNumber":15,"author":{"gitId":"-"},"content":"})"},{"lineNumber":16,"author":{"gitId":"-"},"content":"export class ConfirmLoginComponent implements OnInit {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Input() username: string;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Input() currentSessionOrg: string;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":21,"author":{"gitId":"-"},"content":" private authService: AuthService,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private logger: LoggingService,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private router: Router"},{"lineNumber":28,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" onGithubWebsiteClicked() {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" window.open(\u0027https://github.com/\u0027, \u0027_blank\u0027);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" window.location.reload();"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" logIntoAnotherAccount() {"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(\u0027ConfirmLoginComponent: Logging into another account\u0027);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.authService.startOAuthProcess();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Handles the clean up required after authentication and setting up of user data is completed."},{"lineNumber":44,"author":{"gitId":"-"},"content":" */"},{"lineNumber":45,"author":{"gitId":"-"},"content":" handleAuthSuccess() {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.authService.setTitleWithPhaseDetail();"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.router.navigateByUrl(this.phaseService.currentPhase);"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.Authenticated);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Will complete the process of logging in the given user."},{"lineNumber":53,"author":{"gitId":"-"},"content":" */"},{"lineNumber":54,"author":{"gitId":"-"},"content":" completeLoginProcess(): void {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.phaseService.setPhaseOwners(this.currentSessionOrg, this.username);"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.userService"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .createUserModel(this.username)"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap(() \u003d\u003e this.phaseService.sessionSetup()),"},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap(() \u003d\u003e this.githubEventService.setLatestChangeEvent())"},{"lineNumber":62,"author":{"gitId":"-"},"content":" )"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":64,"author":{"gitId":"-"},"content":" () \u003d\u003e {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.handleAuthSuccess();"},{"lineNumber":66,"author":{"gitId":"-"},"content":" },"},{"lineNumber":67,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`ConfirmLoginComponent: Completion of login process failed with an error: ${error}`);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }"},{"lineNumber":72,"author":{"gitId":"-"},"content":" );"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":5,"-":69}},{"path":"src/app/auth/profiles/profiles.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cmat-form-field class\u003d\"profile-field\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eSelect Session\u003c/mat-label\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-select [value]\u003d\"this.selectedProfile.profileName\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cmat-option (click)\u003d\"selectProfile(this.blankProfile)\"\u003eNone\u003c/mat-option\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cmat-option *ngFor\u003d\"let profile of profiles\" (click)\u003d\"selectProfile(profile)\" [value]\u003d\"profile.profileName\"\u003e{{"},{"lineNumber":6,"author":{"gitId":"-"},"content":" profile.profileName"},{"lineNumber":7,"author":{"gitId":"-"},"content":" }}\u003c/mat-option\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003c/mat-select\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/mat-form-field\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cinput #fileInput type\u003d\"file\" style\u003d\"display: none\" accept\u003d\".json\" (change)\u003d\"this.fileSelected($event)\" /\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cbutton"},{"lineNumber":12,"author":{"gitId":"-"},"content":" class\u003d\"profile-input\""},{"lineNumber":13,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":14,"author":{"gitId":"-"},"content":" mat-icon-button"},{"lineNumber":15,"author":{"gitId":"-"},"content":" (click)\u003d\"this.fileSelectorInitiation(fileInput)\""},{"lineNumber":16,"author":{"gitId":"-"},"content":" disableRipple\u003d\"true\""},{"lineNumber":17,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" matTooltip\u003d\"Configure your custom settings\""},{"lineNumber":18,"author":{"gitId":"-"},"content":" (mousedown)\u003d\"this.animationActivated \u003d true\""},{"lineNumber":19,"author":{"gitId":"-"},"content":" (mouseleave)\u003d\"this.animationActivated \u003d false\""},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cmat-icon [@triggerFileInput]\u003d\"this.animationActivated ? \u0027pressed\u0027 : \u0027normal\u0027\"\u003efolder_open\u003c/mat-icon\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003c/button\u003e"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":21}},{"path":"src/app/auth/session-selection/session-selection.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, EventEmitter, Input, OnInit, Output } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormBuilder, FormGroup, Validators } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Profile } from \u0027../../core/models/profile.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { AuthService, AuthState } from \u0027../../core/services/auth.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../core/services/github.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-session-selection\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./session-selection.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./session-selection.component.css\u0027, \u0027../auth.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class SessionSelectionComponent implements OnInit {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // isSettingUpSession is used to indicate whether CATcher is in the midst of setting up the session."},{"lineNumber":17,"author":{"gitId":"-"},"content":" isSettingUpSession: boolean;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" profileForm: FormGroup;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Input() urlEncodedSessionName: string;"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Output() sessionEmitter: EventEmitter\u003cstring\u003e \u003d new EventEmitter\u003cstring\u003e();"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":25,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private logger: LoggingService,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private authService: AuthService,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.isSettingUpSession \u003d false;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.initProfileForm();"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Fills the login form with data from the given Profile."},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param profile - Profile selected by the user."},{"lineNumber":41,"author":{"gitId":"-"},"content":" */"},{"lineNumber":42,"author":{"gitId":"-"},"content":" onProfileSelect(profile: Profile): void {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.profileForm.get(\u0027session\u0027).setValue(profile.repoName);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.sessionEmitter.emit(profile.repoName);"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" setupSession() {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (this.profileForm.invalid) {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.isSettingUpSession \u003d true;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" const sessionInformation: string \u003d this.profileForm.get(\u0027session\u0027).value;"},{"lineNumber":53,"author":{"gitId":"-"},"content":" const org: string \u003d this.getOrgDetails(sessionInformation);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" const dataRepo: string \u003d this.getDataRepoDetails(sessionInformation);"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Persist session information in local storage"},{"lineNumber":56,"author":{"gitId":"-"},"content":" window.localStorage.setItem(\u0027org\u0027, org);"},{"lineNumber":57,"author":{"gitId":"-"},"content":" window.localStorage.setItem(\u0027dataRepo\u0027, dataRepo);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.githubService.storeOrganizationDetails(org, dataRepo);"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`SessionSelectionComponent: Selected Settings Repo: ${sessionInformation}`);"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.phaseService.storeSessionData().subscribe("},{"lineNumber":63,"author":{"gitId":"-"},"content":" () \u003d\u003e {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" try {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.authService.startOAuthProcess();"},{"lineNumber":66,"author":{"gitId":"-"},"content":" } catch (error) {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":" },"},{"lineNumber":71,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.isSettingUpSession \u003d false;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" },"},{"lineNumber":75,"author":{"gitId":"-"},"content":" () \u003d\u003e (this.isSettingUpSession \u003d false)"},{"lineNumber":76,"author":{"gitId":"-"},"content":" );"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Extracts the Organization Details from the input sessionInformation."},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param sessionInformation - string in the format of \u0027orgName/dataRepo\u0027"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private getOrgDetails(sessionInformation: string) {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return sessionInformation.split(\u0027/\u0027)[0];"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Extracts the Data Repository Details from the input sessionInformation."},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @param sessionInformation - string in the format of \u0027orgName/dataRepo\u0027"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private getDataRepoDetails(sessionInformation: string) {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return sessionInformation.split(\u0027/\u0027)[1];"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" private initProfileForm() {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.profileForm \u003d this.formBuilder.group({"},{"lineNumber":97,"author":{"gitId":"-"},"content":" session: [\u0027\u0027, Validators.required]"},{"lineNumber":98,"author":{"gitId":"-"},"content":" });"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":99}},{"path":"src/app/core/guards/user-confirmation/user-confirmation.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { CanDeactivateIssueGuard } from \u0027../can-deactivate-issue-guard.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * The UserConfirmationComponent is responsible for rendering the UserDialog"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * to verify if certain changes made to relevant inputs are to be discarded."},{"lineNumber":8,"author":{"gitId":"-"},"content":" */"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-user-confirmation\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./user-confirmation.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./user-confirmation.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class UserConfirmationComponent implements OnInit {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // Injection of a reference to Dialog from the Service that it is to be"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // displayed in."},{"lineNumber":18,"author":{"gitId":"-"},"content":" constructor(public dialogRef: MatDialogRef\u003cCanDeactivateIssueGuard\u003e, @Inject(MAT_DIALOG_DATA) public data) {}"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Closes the dialog."},{"lineNumber":24,"author":{"gitId":"-"},"content":" */"},{"lineNumber":25,"author":{"gitId":"-"},"content":" onNoClick(): void {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.dialogRef.close(false);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":27}},{"path":"src/app/core/models/issue-dispute.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Checkbox } from \u0027./checkbox.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"export class IssueDispute {"},{"lineNumber":3,"author":{"gitId":"-"},"content":" readonly TODO_DESCRIPTION \u003d \u0027Done\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":" readonly INITIAL_RESPONSE \u003d \u0027[replace this with your explanation]\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":" readonly TITLE_PREFIX \u003d \u0027## :question: \u0027;"},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":" readonly LINE_BREAK \u003d \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":" title: string; // e.g Issue severity"},{"lineNumber":8,"author":{"gitId":"-"},"content":" description: string; // e.g Team says: xxx\\n Tester says: xxx."},{"lineNumber":9,"author":{"gitId":"-"},"content":" tutorResponse: string; // e.g Not justified. I\u0027ve changed it back."},{"lineNumber":10,"author":{"gitId":"-"},"content":" todo: Checkbox; // e.g - [x] Done"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":" constructor(title: string, description: string) {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" this.title \u003d title;"},{"lineNumber":14,"author":{"gitId":"-"},"content":" this.description \u003d description;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" this.tutorResponse \u003d this.INITIAL_RESPONSE;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.todo \u003d new Checkbox(this.TODO_DESCRIPTION, false);"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" isDone(): boolean {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return this.todo.isChecked;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" /*"},{"lineNumber":24,"author":{"gitId":"-"},"content":" This method is used to format the tutor\u0027s response so that the app can upload it on Github."},{"lineNumber":25,"author":{"gitId":"-"},"content":" Refer to format in https://github.com/CATcher-org/templates#app-collect-tutor-response"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */"},{"lineNumber":27,"author":{"gitId":"-"},"content":" toTutorResponseString(): string {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" let toString \u003d \u0027\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" toString +\u003d this.TITLE_PREFIX + this.title + \u0027\\n\\n\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" toString +\u003d this.todo.toString() + \u0027\\n\\n\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" toString +\u003d this.tutorResponse + \u0027\\n\\n\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" toString +\u003d this.LINE_BREAK;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return toString;"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" compareTo(anotherResponse: IssueDispute): number {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (this.isDone() \u003d\u003d\u003d anotherResponse.isDone()) {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return this.tutorResponse.localeCompare(anotherResponse.tutorResponse);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return this.isDone() ? 1 : -1;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" toString(): string {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" let toString \u003d \u0027\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" toString +\u003d this.TITLE_PREFIX + this.title + \u0027\\n\\n\u0027;"},{"lineNumber":46,"author":{"gitId":"-"},"content":" toString +\u003d this.description + \u0027\\n\\n\u0027;"},{"lineNumber":47,"author":{"gitId":"-"},"content":" toString +\u003d this.LINE_BREAK;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return toString;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" setTutorResponse(response: string) {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.tutorResponse \u003d response;"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }"},{"lineNumber":54,"author":{"gitId":"-"},"content":""},{"lineNumber":55,"author":{"gitId":"-"},"content":" setIsDone(isDone: boolean) {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.todo.setChecked(isDone);"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"-":57,"cheehongw":1}},{"path":"src/app/core/models/issue.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import * as moment from \u0027moment\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../models/phase.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027./comment.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubComment } from \u0027./github/github-comment.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027./github/github-issue.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027./github/github-label.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { HiddenData } from \u0027./hidden-data.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { IssueDispute } from \u0027./issue-dispute.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { Team } from \u0027./team.model\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { TeamAcceptedTemplate } from \u0027./templates/team-accepted-template.model\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { TeamResponseTemplate } from \u0027./templates/team-response-template.model\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { TesterResponseTemplate } from \u0027./templates/tester-response-template.model\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { TutorModerationIssueTemplate } from \u0027./templates/tutor-moderation-issue-template.model\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { TutorModerationTodoTemplate } from \u0027./templates/tutor-moderation-todo-template.model\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { TesterResponse } from \u0027./tester-response.model\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"export class Issue {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /** Basic Fields */"},{"lineNumber":19,"author":{"gitId":"-"},"content":" readonly globalId: string;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" readonly id: number;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" readonly created_at: string;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" readonly githubIssue: GithubIssue;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" githubComments: GithubComment[];"},{"lineNumber":24,"author":{"gitId":"-"},"content":" title: string;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" description: string;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" hiddenDataInDescription: HiddenData;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" /** Fields derived from Labels */"},{"lineNumber":29,"author":{"gitId":"-"},"content":" severity: string;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" type: string;"},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" response?: string; // all instance of this should be renamed to response"},{"lineNumber":32,"author":{"gitId":"-"},"content":" duplicated?: boolean;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" status?: string;"},{"lineNumber":34,"author":{"gitId":"-"},"content":" pending?: string;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" unsure?: boolean;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" teamAssigned?: Team;"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" /** Depending on the phase, assignees attribute can be derived from Github\u0027s assignee feature OR from the Github\u0027s issue description */"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assignees?: string[];"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" /** Fields derived from parsing of Github\u0027s issue description */"},{"lineNumber":42,"author":{"gitId":"-"},"content":" duplicateOf?: number;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" teamResponse?: string;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" testerResponses?: TesterResponse[];"},{"lineNumber":45,"author":{"gitId":"-"},"content":" testerDisagree?: boolean; // whether tester agrees or disagree to teams reponse"},{"lineNumber":46,"author":{"gitId":"-"},"content":" issueComment?: IssueComment; // Issue comment is used for Tutor Response and Tester Response"},{"lineNumber":47,"author":{"gitId":"-"},"content":" issueDisputes?: IssueDispute[];"},{"lineNumber":48,"author":{"gitId":"-"},"content":" teamChosenSeverity?: string;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" teamChosenType?: string;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" teamAccepted?: boolean;"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Fields for error messages during parsing of Github\u0027s issue description */"},{"lineNumber":53,"author":{"gitId":"-"},"content":" teamResponseError: boolean;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" testerResponseError: boolean;"},{"lineNumber":55,"author":{"gitId":"-"},"content":" parseError: string;"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Formats the text to create space at the end of the user input to prevent any issues with"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * the markdown interpretation."},{"lineNumber":60,"author":{"gitId":"-"},"content":" *"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Brought over from comment-editor.component.ts"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */"},{"lineNumber":63,"author":{"gitId":"-"},"content":" static formatText(text: string): string {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (text \u003d\u003d\u003d null) {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return null;"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (text \u003d\u003d\u003d undefined) {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return undefined;"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":" const newLinesRegex \u003d /[\\n\\r]/gi;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" const textSplitArray \u003d text.split(newLinesRegex);"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (textSplitArray.filter((split) \u003d\u003e split.trim() !\u003d\u003d \u0027\u0027).length \u003e 0) {"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return `${text}\\n\\n`;"},{"lineNumber":76,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return text;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Processes and cleans a raw issue description obtained from user input."},{"lineNumber":83,"author":{"gitId":"-"},"content":" */"},{"lineNumber":84,"author":{"gitId":"-"},"content":" static updateDescription(description: string): string {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" const defaultString \u003d \u0027No details provided by bug reporter.\u0027;"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Issue.orDefaultString(Issue.formatText(description), defaultString);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Processes and cleans a raw team response obtained from user input."},{"lineNumber":91,"author":{"gitId":"-"},"content":" */"},{"lineNumber":92,"author":{"gitId":"-"},"content":" static updateTeamResponse(teamResponse: string): string {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" const defaultString \u003d \u0027No details provided by team.\u0027;"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return Issue.orDefaultString(Issue.formatText(teamResponse), defaultString);"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Given two strings, returns the first if it is not an empty string or a false value such as null/undefined."},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Returns the second string if the first is an empty string."},{"lineNumber":100,"author":{"gitId":"-"},"content":" */"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private static orDefaultString(stringA: string, def: string): string {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!stringA) {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return def;"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return stringA.length !\u003d\u003d 0 ? stringA : def;"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" protected constructor(githubIssue: GithubIssue) {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /** Basic Fields */"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.globalId \u003d githubIssue.id;"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.id \u003d +githubIssue.number;"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.created_at \u003d moment(githubIssue.created_at).format(\u0027lll\u0027);"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.title \u003d githubIssue.title;"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.hiddenDataInDescription \u003d new HiddenData(githubIssue.body);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.description \u003d Issue.updateDescription(this.hiddenDataInDescription.originalStringWithoutHiddenData);"},{"lineNumber":116,"author":{"gitId":"-"},"content":" this.githubIssue \u003d githubIssue;"},{"lineNumber":117,"author":{"gitId":"-"},"content":""},{"lineNumber":118,"author":{"gitId":"-"},"content":" /** Fields derived from Labels */"},{"lineNumber":119,"author":{"gitId":"-"},"content":" this.severity \u003d githubIssue.findLabel(GithubLabel.LABELS.severity);"},{"lineNumber":120,"author":{"gitId":"-"},"content":" this.type \u003d githubIssue.findLabel(GithubLabel.LABELS.type);"},{"lineNumber":121,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.response \u003d githubIssue.findLabel(GithubLabel.LABELS.response);"},{"lineNumber":122,"author":{"gitId":"-"},"content":" this.duplicated \u003d !!githubIssue.findLabel(GithubLabel.LABELS.duplicated, false);"},{"lineNumber":123,"author":{"gitId":"-"},"content":" this.status \u003d githubIssue.findLabel(GithubLabel.LABELS.status);"},{"lineNumber":124,"author":{"gitId":"-"},"content":" this.pending \u003d githubIssue.findLabel(GithubLabel.LABELS.pending);"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }"},{"lineNumber":126,"author":{"gitId":"-"},"content":""},{"lineNumber":127,"author":{"gitId":"-"},"content":" public static createPhaseBugReportingIssue(githubIssue: GithubIssue): Issue {"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new Issue(githubIssue);"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }"},{"lineNumber":130,"author":{"gitId":"-"},"content":""},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static createPhaseTeamResponseIssue(githubIssue: GithubIssue, teamData: Team): Issue {"},{"lineNumber":132,"author":{"gitId":"-"},"content":" const issue \u003d new Issue(githubIssue);"},{"lineNumber":133,"author":{"gitId":"-"},"content":" const template \u003d new TeamResponseTemplate(githubIssue.comments);"},{"lineNumber":134,"author":{"gitId":"-"},"content":""},{"lineNumber":135,"author":{"gitId":"-"},"content":" issue.githubComments \u003d githubIssue.comments;"},{"lineNumber":136,"author":{"gitId":"-"},"content":" issue.teamAssigned \u003d teamData;"},{"lineNumber":137,"author":{"gitId":"-"},"content":" issue.assignees \u003d githubIssue.assignees.map((assignee) \u003d\u003e assignee.login);"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" issue.teamResponseError \u003d template.parseFailure;"},{"lineNumber":140,"author":{"gitId":"-"},"content":" issue.parseError \u003d template.parseError;"},{"lineNumber":141,"author":{"gitId":"-"},"content":" issue.issueComment \u003d template.comment;"},{"lineNumber":142,"author":{"gitId":"-"},"content":" issue.teamResponse \u003d template.teamResponse;"},{"lineNumber":143,"author":{"gitId":"-"},"content":" issue.duplicateOf \u003d template.duplicateOf;"},{"lineNumber":144,"author":{"gitId":"-"},"content":" issue.duplicated \u003d issue.duplicateOf !\u003d\u003d undefined \u0026\u0026 issue.duplicateOf !\u003d\u003d null;"},{"lineNumber":145,"author":{"gitId":"-"},"content":""},{"lineNumber":146,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }"},{"lineNumber":148,"author":{"gitId":"-"},"content":""},{"lineNumber":149,"author":{"gitId":"-"},"content":" public static createPhaseTesterResponseIssue(githubIssue: GithubIssue): Issue {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" const issue \u003d new Issue(githubIssue);"},{"lineNumber":151,"author":{"gitId":"-"},"content":" const testerResponseTemplate \u003d new TesterResponseTemplate(githubIssue.comments);"},{"lineNumber":152,"author":{"gitId":"-"},"content":" const teamAcceptedTemplate \u003d new TeamAcceptedTemplate(githubIssue.comments);"},{"lineNumber":153,"author":{"gitId":"-"},"content":""},{"lineNumber":154,"author":{"gitId":"-"},"content":" issue.githubComments \u003d githubIssue.comments;"},{"lineNumber":155,"author":{"gitId":"-"},"content":" issue.testerResponseError \u003d testerResponseTemplate.parseFailure \u0026\u0026 teamAcceptedTemplate.parseFailure;"},{"lineNumber":156,"author":{"gitId":"-"},"content":" issue.parseError \u003d testerResponseTemplate.parseError;"},{"lineNumber":157,"author":{"gitId":"-"},"content":" issue.teamAccepted \u003d teamAcceptedTemplate.teamAccepted;"},{"lineNumber":158,"author":{"gitId":"-"},"content":" issue.issueComment \u003d testerResponseTemplate.comment;"},{"lineNumber":159,"author":{"gitId":"-"},"content":" issue.teamResponse \u003d testerResponseTemplate.teamResponse;"},{"lineNumber":160,"author":{"gitId":"-"},"content":" issue.testerResponses \u003d testerResponseTemplate.testerResponses;"},{"lineNumber":161,"author":{"gitId":"-"},"content":" issue.testerDisagree \u003d testerResponseTemplate.testerDisagree;"},{"lineNumber":162,"author":{"gitId":"-"},"content":""},{"lineNumber":163,"author":{"gitId":"-"},"content":" issue.teamChosenSeverity \u003d testerResponseTemplate.teamChosenSeverity || null;"},{"lineNumber":164,"author":{"gitId":"-"},"content":" issue.teamChosenType \u003d testerResponseTemplate.teamChosenType || null;"},{"lineNumber":165,"author":{"gitId":"-"},"content":""},{"lineNumber":166,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }"},{"lineNumber":168,"author":{"gitId":"-"},"content":""},{"lineNumber":169,"author":{"gitId":"-"},"content":" public static createPhaseModerationIssue(githubIssue: GithubIssue, teamData: Team): Issue {"},{"lineNumber":170,"author":{"gitId":"-"},"content":" const issue \u003d new Issue(githubIssue);"},{"lineNumber":171,"author":{"gitId":"-"},"content":" const issueTemplate \u003d new TutorModerationIssueTemplate(githubIssue);"},{"lineNumber":172,"author":{"gitId":"-"},"content":" const todoTemplate \u003d new TutorModerationTodoTemplate(githubIssue.comments);"},{"lineNumber":173,"author":{"gitId":"-"},"content":""},{"lineNumber":174,"author":{"gitId":"-"},"content":" issue.githubComments \u003d githubIssue.comments;"},{"lineNumber":175,"author":{"gitId":"-"},"content":" issue.teamAssigned \u003d teamData;"},{"lineNumber":176,"author":{"gitId":"-"},"content":" issue.description \u003d issueTemplate.description;"},{"lineNumber":177,"author":{"gitId":"-"},"content":" issue.teamResponse \u003d issueTemplate.teamResponse;"},{"lineNumber":178,"author":{"gitId":"-"},"content":" issue.issueDisputes \u003d issueTemplate.disputes;"},{"lineNumber":179,"author":{"gitId":"-"},"content":""},{"lineNumber":180,"author":{"gitId":"-"},"content":" if (todoTemplate.disputesToResolve \u0026\u0026 todoTemplate.comment) {"},{"lineNumber":181,"author":{"gitId":"-"},"content":" issue.issueDisputes \u003d todoTemplate.disputesToResolve.map((dispute, i) \u003d\u003e {"},{"lineNumber":182,"author":{"gitId":"-"},"content":" dispute.description \u003d issueTemplate.disputes[i].description;"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return dispute;"},{"lineNumber":184,"author":{"gitId":"-"},"content":" });"},{"lineNumber":185,"author":{"gitId":"-"},"content":" issue.issueComment \u003d todoTemplate.comment;"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }"},{"lineNumber":189,"author":{"gitId":"-"},"content":""},{"lineNumber":190,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":191,"author":{"gitId":"-"},"content":" * Creates a new copy of an exact same issue."},{"lineNumber":192,"author":{"gitId":"-"},"content":" * This would come useful in the event when you want to update the issue but not the actual"},{"lineNumber":193,"author":{"gitId":"-"},"content":" * state of the application."},{"lineNumber":194,"author":{"gitId":"-"},"content":" */"},{"lineNumber":195,"author":{"gitId":"-"},"content":" clone(phase: Phase): Issue {"},{"lineNumber":196,"author":{"gitId":"-"},"content":" switch (phase) {"},{"lineNumber":197,"author":{"gitId":"-"},"content":" case Phase.phaseBugReporting:"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return Issue.createPhaseBugReportingIssue(this.githubIssue);"},{"lineNumber":199,"author":{"gitId":"-"},"content":" case Phase.phaseTeamResponse:"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return Issue.createPhaseTeamResponseIssue(this.githubIssue, this.teamAssigned);"},{"lineNumber":201,"author":{"gitId":"-"},"content":" case Phase.phaseTesterResponse:"},{"lineNumber":202,"author":{"gitId":"-"},"content":" return Issue.createPhaseTesterResponseIssue(this.githubIssue);"},{"lineNumber":203,"author":{"gitId":"-"},"content":" case Phase.phaseModeration:"},{"lineNumber":204,"author":{"gitId":"-"},"content":" return Issue.createPhaseModerationIssue(this.githubIssue, this.teamAssigned);"},{"lineNumber":205,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":206,"author":{"gitId":"-"},"content":" return Issue.createPhaseBugReportingIssue(this.githubIssue);"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }"},{"lineNumber":209,"author":{"gitId":"-"},"content":""},{"lineNumber":210,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Depending on the phase of the peer testing, each phase will have a response associated to them."},{"lineNumber":212,"author":{"gitId":"-"},"content":" * This function will allow the current instance of issue to retain the state of response of the given `issue`."},{"lineNumber":213,"author":{"gitId":"-"},"content":" *"},{"lineNumber":214,"author":{"gitId":"-"},"content":" * @param phase - The phase in which you want to retain your responses."},{"lineNumber":215,"author":{"gitId":"-"},"content":" * @param issue - The issue which you want your current instance to retain from."},{"lineNumber":216,"author":{"gitId":"-"},"content":" */"},{"lineNumber":217,"author":{"gitId":"-"},"content":" retainResponses(phase: Phase, issue: Issue) {"},{"lineNumber":218,"author":{"gitId":"-"},"content":" this.issueComment \u003d issue.issueComment;"},{"lineNumber":219,"author":{"gitId":"-"},"content":" this.githubComments \u003d issue.githubComments;"},{"lineNumber":220,"author":{"gitId":"-"},"content":" switch (phase) {"},{"lineNumber":221,"author":{"gitId":"-"},"content":" case Phase.phaseBugReporting:"},{"lineNumber":222,"author":{"gitId":"-"},"content":" this.description \u003d issue.description;"},{"lineNumber":223,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":224,"author":{"gitId":"-"},"content":" case Phase.phaseTeamResponse:"},{"lineNumber":225,"author":{"gitId":"-"},"content":" this.teamResponse \u003d issue.teamResponse;"},{"lineNumber":226,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":227,"author":{"gitId":"-"},"content":" case Phase.phaseTesterResponse:"},{"lineNumber":228,"author":{"gitId":"-"},"content":" this.testerResponses \u003d issue.testerResponses;"},{"lineNumber":229,"author":{"gitId":"-"},"content":" this.teamResponse \u003d issue.teamResponse;"},{"lineNumber":230,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":231,"author":{"gitId":"-"},"content":" case Phase.phaseModeration:"},{"lineNumber":232,"author":{"gitId":"-"},"content":" this.issueDisputes \u003d issue.issueDisputes;"},{"lineNumber":233,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":234,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":235,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }"},{"lineNumber":238,"author":{"gitId":"-"},"content":""},{"lineNumber":239,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * Updates the tester\u0027s responses and team response based on the given githubComment."},{"lineNumber":241,"author":{"gitId":"-"},"content":" * @param githubComment - A version of githubComment to update the issue with."},{"lineNumber":242,"author":{"gitId":"-"},"content":" */"},{"lineNumber":243,"author":{"gitId":"-"},"content":" updateTesterResponse(githubComment: GithubComment): void {"},{"lineNumber":244,"author":{"gitId":"-"},"content":" const template \u003d new TesterResponseTemplate([githubComment]);"},{"lineNumber":245,"author":{"gitId":"-"},"content":" this.issueComment \u003d template.comment;"},{"lineNumber":246,"author":{"gitId":"-"},"content":" this.teamResponse \u003d template.teamResponse;"},{"lineNumber":247,"author":{"gitId":"-"},"content":" this.testerResponses \u003d template.testerResponses;"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }"},{"lineNumber":249,"author":{"gitId":"-"},"content":""},{"lineNumber":250,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":251,"author":{"gitId":"-"},"content":" * Updates the tutor\u0027s resolution of the disputes with a new version of githubComment."},{"lineNumber":252,"author":{"gitId":"-"},"content":" * @param githubComment - A version of githubComment to update the dispute with."},{"lineNumber":253,"author":{"gitId":"-"},"content":" */"},{"lineNumber":254,"author":{"gitId":"-"},"content":" updateDispute(githubComment: GithubComment): void {"},{"lineNumber":255,"author":{"gitId":"-"},"content":" const todoTemplate \u003d new TutorModerationTodoTemplate([githubComment]);"},{"lineNumber":256,"author":{"gitId":"-"},"content":" this.issueComment \u003d todoTemplate.comment;"},{"lineNumber":257,"author":{"gitId":"-"},"content":" this.issueDisputes \u003d todoTemplate.disputesToResolve.map((dispute, i) \u003d\u003e {"},{"lineNumber":258,"author":{"gitId":"-"},"content":" dispute.description \u003d this.issueDisputes[i].description;"},{"lineNumber":259,"author":{"gitId":"-"},"content":" return dispute;"},{"lineNumber":260,"author":{"gitId":"-"},"content":" });"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }"},{"lineNumber":262,"author":{"gitId":"-"},"content":""},{"lineNumber":263,"author":{"gitId":"-"},"content":" createGithubIssueDescription(): string {"},{"lineNumber":264,"author":{"gitId":"-"},"content":" return `${this.description}\\n${this.hiddenDataInDescription.toString()}`;"},{"lineNumber":265,"author":{"gitId":"-"},"content":" }"},{"lineNumber":266,"author":{"gitId":"-"},"content":""},{"lineNumber":267,"author":{"gitId":"-"},"content":" // Template url: https://github.com/CATcher-org/templates#dev-response-phase"},{"lineNumber":268,"author":{"gitId":"-"},"content":" createGithubTeamResponse(): string {"},{"lineNumber":269,"author":{"gitId":"-"},"content":" return ("},{"lineNumber":270,"author":{"gitId":"-"},"content":" `# Team\\\u0027s Response\\n${this.teamResponse}\\n` +"},{"lineNumber":271,"author":{"gitId":"-"},"content":" `## Duplicate status (if any):\\n${this.duplicateOf ? `Duplicate of #${this.duplicateOf}` : `--`}`"},{"lineNumber":272,"author":{"gitId":"-"},"content":" );"},{"lineNumber":273,"author":{"gitId":"-"},"content":" }"},{"lineNumber":274,"author":{"gitId":"-"},"content":""},{"lineNumber":275,"author":{"gitId":"-"},"content":" // Template url: https://github.com/CATcher-org/templates#tutor-moderation"},{"lineNumber":276,"author":{"gitId":"-"},"content":" createGithubTutorResponse(): string {"},{"lineNumber":277,"author":{"gitId":"-"},"content":" let tutorResponseString \u003d \u0027# Tutor Moderation\\n\\n\u0027;"},{"lineNumber":278,"author":{"gitId":"-"},"content":" if (this.issueDisputes !\u003d\u003d undefined) {"},{"lineNumber":279,"author":{"gitId":"-"},"content":" for (const issueDispute of this.issueDisputes) {"},{"lineNumber":280,"author":{"gitId":"-"},"content":" tutorResponseString +\u003d issueDispute.toTutorResponseString();"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }"},{"lineNumber":283,"author":{"gitId":"-"},"content":" return tutorResponseString;"},{"lineNumber":284,"author":{"gitId":"-"},"content":" }"},{"lineNumber":285,"author":{"gitId":"-"},"content":""},{"lineNumber":286,"author":{"gitId":"-"},"content":" // Template url: https://github.com/CATcher-org/templates#teams-response-1"},{"lineNumber":287,"author":{"gitId":"-"},"content":" createGithubTesterResponse(): string {"},{"lineNumber":288,"author":{"gitId":"-"},"content":" return ("},{"lineNumber":289,"author":{"gitId":"-"},"content":" `# Team\\\u0027s Response\\n${this.teamResponse}\\n` +"},{"lineNumber":290,"author":{"gitId":"-"},"content":" `# Items for the Tester to Verify\\n${this.getTesterResponsesString(this.testerResponses)}`"},{"lineNumber":291,"author":{"gitId":"-"},"content":" );"},{"lineNumber":292,"author":{"gitId":"-"},"content":" }"},{"lineNumber":293,"author":{"gitId":"-"},"content":""},{"lineNumber":294,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":295,"author":{"gitId":"-"},"content":" * Gets the number of unresolved disputes in an Issue."},{"lineNumber":296,"author":{"gitId":"-"},"content":" */"},{"lineNumber":297,"author":{"gitId":"-"},"content":" numOfUnresolvedDisputes(): number {"},{"lineNumber":298,"author":{"gitId":"-"},"content":" if (!this.issueDisputes) {"},{"lineNumber":299,"author":{"gitId":"-"},"content":" return 0;"},{"lineNumber":300,"author":{"gitId":"-"},"content":" }"},{"lineNumber":301,"author":{"gitId":"-"},"content":""},{"lineNumber":302,"author":{"gitId":"-"},"content":" return this.issueDisputes.reduce((prev, current) \u003d\u003e prev + Number(!current.isDone()), 0);"},{"lineNumber":303,"author":{"gitId":"-"},"content":" }"},{"lineNumber":304,"author":{"gitId":"-"},"content":""},{"lineNumber":305,"author":{"gitId":"-"},"content":" private getTesterResponsesString(testerResponses: TesterResponse[]): string {"},{"lineNumber":306,"author":{"gitId":"-"},"content":" let testerResponsesString \u003d \u0027\u0027;"},{"lineNumber":307,"author":{"gitId":"-"},"content":" for (const testerResponse of testerResponses) {"},{"lineNumber":308,"author":{"gitId":"-"},"content":" testerResponsesString +\u003d testerResponse.toString();"},{"lineNumber":309,"author":{"gitId":"-"},"content":" }"},{"lineNumber":310,"author":{"gitId":"-"},"content":" return testerResponsesString;"},{"lineNumber":311,"author":{"gitId":"-"},"content":" }"},{"lineNumber":312,"author":{"gitId":"-"},"content":"}"},{"lineNumber":313,"author":{"gitId":"-"},"content":""},{"lineNumber":314,"author":{"gitId":"-"},"content":"export interface Issues {"},{"lineNumber":315,"author":{"gitId":"-"},"content":" [id: number]: Issue;"},{"lineNumber":316,"author":{"gitId":"-"},"content":"}"},{"lineNumber":317,"author":{"gitId":"-"},"content":""},{"lineNumber":318,"author":{"gitId":"-"},"content":"export const SEVERITY_ORDER \u003d { \u0027-\u0027: 0, VeryLow: 1, Low: 2, Medium: 3, High: 4 };"},{"lineNumber":319,"author":{"gitId":"-"},"content":""},{"lineNumber":320,"author":{"gitId":"-"},"content":"export const ISSUE_TYPE_ORDER \u003d { \u0027-\u0027: 0, DocumentationBug: 1, FeatureFlaw: 2, FunctionalityBug: 3 };"},{"lineNumber":321,"author":{"gitId":"-"},"content":""},{"lineNumber":322,"author":{"gitId":"-"},"content":"export enum STATUS {"},{"lineNumber":323,"author":{"gitId":"-"},"content":" Incomplete \u003d \u0027Incomplete\u0027,"},{"lineNumber":324,"author":{"gitId":"-"},"content":" Done \u003d \u0027Done\u0027"},{"lineNumber":325,"author":{"gitId":"-"},"content":"}"},{"lineNumber":326,"author":{"gitId":"-"},"content":""},{"lineNumber":327,"author":{"gitId":"-"},"content":"export enum FILTER {"},{"lineNumber":328,"author":{"gitId":"-"},"content":" NoFilter \u003d \u0027NoFilter\u0027,"},{"lineNumber":329,"author":{"gitId":"-"},"content":" NoAccess \u003d \u0027NoAccess\u0027,"},{"lineNumber":330,"author":{"gitId":"-"},"content":" FilterByCreator \u003d \u0027FilterByCreator\u0027,"},{"lineNumber":331,"author":{"gitId":"-"},"content":" FilterByTeam \u003d \u0027FilterByTeam\u0027,"},{"lineNumber":332,"author":{"gitId":"-"},"content":" FilterByTeamAssigned \u003d \u0027FilterByTeamAssigned\u0027"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}"},{"lineNumber":334,"author":{"gitId":"-"},"content":""},{"lineNumber":335,"author":{"gitId":"-"},"content":"export const IssuesFilter \u003d {"},{"lineNumber":336,"author":{"gitId":"-"},"content":" phaseBugReporting: {"},{"lineNumber":337,"author":{"gitId":"-"},"content":" Student: FILTER.FilterByCreator,"},{"lineNumber":338,"author":{"gitId":"-"},"content":" Tutor: FILTER.NoFilter,"},{"lineNumber":339,"author":{"gitId":"-"},"content":" Admin: FILTER.NoFilter"},{"lineNumber":340,"author":{"gitId":"-"},"content":" },"},{"lineNumber":341,"author":{"gitId":"-"},"content":" phaseTeamResponse: {"},{"lineNumber":342,"author":{"gitId":"-"},"content":" Student: FILTER.FilterByTeam,"},{"lineNumber":343,"author":{"gitId":"-"},"content":" Tutor: FILTER.FilterByTeamAssigned,"},{"lineNumber":344,"author":{"gitId":"-"},"content":" Admin: FILTER.NoFilter"},{"lineNumber":345,"author":{"gitId":"-"},"content":" },"},{"lineNumber":346,"author":{"gitId":"-"},"content":" phaseTesterResponse: {"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Student: FILTER.NoFilter,"},{"lineNumber":348,"author":{"gitId":"-"},"content":" Tutor: FILTER.NoAccess,"},{"lineNumber":349,"author":{"gitId":"-"},"content":" Admin: FILTER.NoFilter"},{"lineNumber":350,"author":{"gitId":"-"},"content":" },"},{"lineNumber":351,"author":{"gitId":"-"},"content":" phaseModeration: {"},{"lineNumber":352,"author":{"gitId":"-"},"content":" Student: FILTER.NoAccess,"},{"lineNumber":353,"author":{"gitId":"-"},"content":" Tutor: FILTER.FilterByTeamAssigned,"},{"lineNumber":354,"author":{"gitId":"-"},"content":" Admin: FILTER.NoFilter"},{"lineNumber":355,"author":{"gitId":"-"},"content":" }"},{"lineNumber":356,"author":{"gitId":"-"},"content":"};"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":354}},{"path":"src/app/core/models/templates/section-parsers/issue-dispute-section-parser.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { IssueDispute } from \u0027../../issue-dispute.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"const { coroutine, everyCharUntil, optionalWhitespace, str } \u003d require(\u0027arcsecond\u0027);"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"const SECTION_TITLE_PREFIX \u003d \u0027## :question: \u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"const TEAM_SAYS_HEADER \u003d \u0027### Team says:\u0027;"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"const LINE_SEPARATOR \u003d \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"export const IssueDisputeSectionParser \u003d coroutine(function* () {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" yield str(SECTION_TITLE_PREFIX);"},{"lineNumber":11,"author":{"gitId":"-"},"content":" const title \u003d yield everyCharUntil(str(TEAM_SAYS_HEADER));"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":" const description \u003d yield everyCharUntil(str(LINE_SEPARATOR));"},{"lineNumber":14,"author":{"gitId":"-"},"content":" yield str(LINE_SEPARATOR);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" yield optionalWhitespace;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":" return new IssueDispute(title.trim(), description.trim());"},{"lineNumber":18,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":17}},{"path":"src/app/core/models/templates/section-parsers/moderation-section-parser.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Checkbox } from \u0027../../checkbox.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { IssueDispute } from \u0027../../issue-dispute.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { buildCheckboxParser } from \u0027./common-parsers.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"const { coroutine, everyCharUntil, lookAhead, optionalWhitespace, str, whitespace } \u003d require(\u0027arcsecond\u0027);"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"const SECTION_TITLE_PREFIX \u003d \u0027## :question: \u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"const DONE_CHECKBOX_DESCRIPTION \u003d \u0027Done\u0027;"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"const LINE_SEPARATOR \u003d \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"export const DoneCheckboxParser \u003d buildCheckboxParser(DONE_CHECKBOX_DESCRIPTION);"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"export const ModerationSectionParser \u003d coroutine(function* () {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" yield str(SECTION_TITLE_PREFIX);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" const title \u003d yield everyCharUntil(str(\u0027- [\u0027)); // every char until the done checkbox"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":" const description \u003d yield lookAhead(everyCharUntil(str(LINE_SEPARATOR)));"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" const doneCheckboxValue \u003d yield DoneCheckboxParser;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" yield whitespace;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" const tutorResponse \u003d yield everyCharUntil(str(LINE_SEPARATOR));"},{"lineNumber":22,"author":{"gitId":"-"},"content":" yield str(LINE_SEPARATOR);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" yield optionalWhitespace;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" const dispute \u003d new IssueDispute(title.trim(), description.trim());"},{"lineNumber":26,"author":{"gitId":"-"},"content":" dispute.todo \u003d new Checkbox(DONE_CHECKBOX_DESCRIPTION, doneCheckboxValue);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" dispute.tutorResponse \u003d tutorResponse.trim();"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" return dispute;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":29}},{"path":"src/app/core/models/templates/section-parsers/tester-response-section-parser.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { buildCheckboxParser } from \u0027./common-parsers.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"const {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" between,"},{"lineNumber":5,"author":{"gitId":"-"},"content":" coroutine,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" everyCharUntil,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" letters,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" lookAhead,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" optionalWhitespace,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" pipeParsers,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" possibly,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" str,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" whitespace"},{"lineNumber":14,"author":{"gitId":"-"},"content":"} \u003d require(\u0027arcsecond\u0027);"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"const SECTION_TITLE_PREFIX \u003d \u0027## :question: Issue \u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"const TEAM_CHOSE_PREFIX \u003d \u0027Team chose \u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"const TESTER_CHOSE_PREFIX \u003d \u0027Originally \u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"const DISAGREE_CHECKBOX_DESCRIPTION \u003d \u0027I disagree\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"const DISAGREEMENT_REASON_PREFIX \u003d \u0027**Reason for disagreement:** \u0027;"},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"const LINE_SEPARATOR \u003d \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"const DUPLICATE_STATUS_MESSAGE \u003d"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \"Team chose to mark this issue as a duplicate of another issue (as explained in the _**Team\u0027s response**_ above)\";"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"export const DisagreeCheckboxParser \u003d buildCheckboxParser(DISAGREE_CHECKBOX_DESCRIPTION);"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":"function buildExtractResponseParser(category: string) {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return between(str(\u0027[`\u0027 + category + \u0027.\u0027))(str(\u0027`]\u0027))(letters);"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":"function buildTeamResponseParser(category: string) {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" const extractResponseParser \u003d buildExtractResponseParser(category);"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" return pipeParsers([str(TEAM_CHOSE_PREFIX), extractResponseParser]);"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":"function buildTesterResponseParser(category: string) {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" const extractResponseParser \u003d buildExtractResponseParser(category);"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" return pipeParsers([str(TESTER_CHOSE_PREFIX), extractResponseParser]);"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":"export const DisagreeReasonParser \u003d coroutine(function* () {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" yield str(DISAGREEMENT_REASON_PREFIX);"},{"lineNumber":45,"author":{"gitId":"-"},"content":" const reasonForDisagreement \u003d yield everyCharUntil(str(LINE_SEPARATOR));"},{"lineNumber":46,"author":{"gitId":"-"},"content":" yield str(LINE_SEPARATOR);"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" return reasonForDisagreement.trim();"},{"lineNumber":49,"author":{"gitId":"-"},"content":"});"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":"// Issue duplicate section has a different format than the other three"},{"lineNumber":52,"author":{"gitId":"-"},"content":"const DuplicateSectionParser \u003d coroutine(function* () {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" yield str(\u0027status\u0027);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" yield whitespace;"},{"lineNumber":55,"author":{"gitId":"-"},"content":" yield str(DUPLICATE_STATUS_MESSAGE);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" yield whitespace;"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":" const disagreeCheckboxValue \u003d yield DisagreeCheckboxParser;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" yield whitespace;"},{"lineNumber":60,"author":{"gitId":"-"},"content":" const reasonForDisagreement \u003d yield DisagreeReasonParser;"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" return {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" disagreeCheckboxValue: disagreeCheckboxValue,"},{"lineNumber":64,"author":{"gitId":"-"},"content":" reasonForDisagreement: reasonForDisagreement"},{"lineNumber":65,"author":{"gitId":"-"},"content":" };"},{"lineNumber":66,"author":{"gitId":"-"},"content":"});"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":"export const TesterResponseSectionParser \u003d coroutine(function* () {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // section title"},{"lineNumber":70,"author":{"gitId":"-"},"content":" yield str(SECTION_TITLE_PREFIX);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" const title \u003d yield letters;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" yield whitespace;"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (title \u003d\u003d\u003d \u0027duplicate\u0027) {"},{"lineNumber":75,"author":{"gitId":"-"},"content":" const dupSectionResult \u003d yield DuplicateSectionParser;"},{"lineNumber":76,"author":{"gitId":"-"},"content":" yield optionalWhitespace;"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" return {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" title: title + \u0027 status\u0027,"},{"lineNumber":80,"author":{"gitId":"-"},"content":" description: DUPLICATE_STATUS_MESSAGE,"},{"lineNumber":81,"author":{"gitId":"-"},"content":" teamChose: null,"},{"lineNumber":82,"author":{"gitId":"-"},"content":" testerChose: null,"},{"lineNumber":83,"author":{"gitId":"-"},"content":" disagreeCheckboxValue: dupSectionResult.disagreeCheckboxValue,"},{"lineNumber":84,"author":{"gitId":"-"},"content":" reasonForDisagreement: dupSectionResult.reasonForDisagreement"},{"lineNumber":85,"author":{"gitId":"-"},"content":" };"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":""},{"lineNumber":88,"author":{"gitId":"-"},"content":" const description \u003d yield lookAhead(everyCharUntil(DisagreeCheckboxParser));"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" // team and tester response"},{"lineNumber":91,"author":{"gitId":"-"},"content":" const teamResponseParser \u003d buildTeamResponseParser(title);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" const testerResponseParser \u003d buildTesterResponseParser(title);"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":" const teamChose \u003d yield teamResponseParser;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" yield whitespace;"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // response section does not have tester response"},{"lineNumber":97,"author":{"gitId":"-"},"content":" const testerChose \u003d yield possibly(testerResponseParser);"},{"lineNumber":98,"author":{"gitId":"-"},"content":" yield optionalWhitespace;"},{"lineNumber":99,"author":{"gitId":"-"},"content":""},{"lineNumber":100,"author":{"gitId":"-"},"content":" const disagreeCheckboxValue \u003d yield DisagreeCheckboxParser;"},{"lineNumber":101,"author":{"gitId":"-"},"content":" yield whitespace;"},{"lineNumber":102,"author":{"gitId":"-"},"content":" const reasonForDisagreement \u003d yield DisagreeReasonParser;"},{"lineNumber":103,"author":{"gitId":"-"},"content":" yield optionalWhitespace;"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" return {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" title: title,"},{"lineNumber":107,"author":{"gitId":"-"},"content":" description: description.trim(),"},{"lineNumber":108,"author":{"gitId":"-"},"content":" teamChose: teamChose,"},{"lineNumber":109,"author":{"gitId":"-"},"content":" testerChose: testerChose,"},{"lineNumber":110,"author":{"gitId":"-"},"content":" disagreeCheckboxValue: disagreeCheckboxValue,"},{"lineNumber":111,"author":{"gitId":"-"},"content":" reasonForDisagreement: reasonForDisagreement"},{"lineNumber":112,"author":{"gitId":"-"},"content":" };"},{"lineNumber":113,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":112}},{"path":"src/app/core/models/tester-response.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Checkbox } from \u0027./checkbox.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"export class TesterResponse {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" readonly TITLE_PREFIX \u003d \u0027## :question: \u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":" readonly DISAGREEMENT_PREFIX \u003d \u0027**Reason for disagreement:** \u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":" readonly INITIAL_RESPONSE \u003d \u0027[replace this with your explanation]\u0027;"},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":" readonly LINE_BREAK \u003d \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":" title: string; // e.g Issue Severity"},{"lineNumber":9,"author":{"gitId":"-"},"content":" description: string; // e.g Team chose `Low`. Originally `High`."},{"lineNumber":10,"author":{"gitId":"-"},"content":" disagreeCheckbox: Checkbox; // e.g - [x] I disagree"},{"lineNumber":11,"author":{"gitId":"-"},"content":" reasonForDisagreement: string;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":" constructor(title: string, description: string, checkboxDescription: string, isChecked: boolean, reasonForDiagreement: string) {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" this.title \u003d title;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" this.description \u003d description;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.disagreeCheckbox \u003d new Checkbox(checkboxDescription, isChecked);"},{"lineNumber":17,"author":{"gitId":"-"},"content":" this.reasonForDisagreement \u003d reasonForDiagreement;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" toString(): string {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" let toString \u003d \u0027\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" toString +\u003d this.TITLE_PREFIX + this.title + \u0027\\n\\n\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" toString +\u003d this.description + \u0027\\n\\n\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" toString +\u003d this.disagreeCheckbox.toString() + \u0027\\n\\n\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" toString +\u003d this.DISAGREEMENT_PREFIX + this.reasonForDisagreement + \u0027\\n\\n\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" toString +\u003d this.LINE_BREAK;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return toString;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" isDisagree(): boolean {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return this.disagreeCheckbox.isChecked;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" compareTo(anotherResponse: TesterResponse): number {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (this.isDisagree() \u003d\u003d\u003d anotherResponse.isDisagree()) {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return this.reasonForDisagreement.localeCompare(anotherResponse.reasonForDisagreement);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return this.isDisagree() ? 1 : -1;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" getTitleInMarkDown(): string {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return `## ${this.title}`;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" getDisagreementWithoutDefaultResponse(): string {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return this.reasonForDisagreement.replace(this.INITIAL_RESPONSE, \u0027 \u0027);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" setDisagree(isDisagree: boolean) {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.disagreeCheckbox.setChecked(isDisagree);"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" setReasonForDisagreement(reason: string) {"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.reasonForDisagreement \u003d reason;"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"-":55,"cheehongw":1}},{"path":"src/app/core/models/undoredo.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"export class UndoRedo\u003cT\u003e {"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" historyArray: Array\u003cT\u003e;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" currIndex: number;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" firstEntryIndex: number;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" lastEntryIndex: number;"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" isSaved: boolean; // to keep track if the latest change have been saved"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" intervalTime: number;"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" timeout: NodeJS.Timeout;"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" saveRunning: boolean;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" getState: () \u003d\u003e T;"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" constructor(capacity: number, getState: () \u003d\u003e T, intervalTime: number \u003d 0) {"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" this.historyArray \u003d new Array\u003cT\u003e(capacity);"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" this.firstEntryIndex \u003d 0;"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" this.lastEntryIndex \u003d -1;"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":" this.currIndex \u003d -1;"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" this.getState \u003d getState;"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" this.isSaved \u003d false;"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" this.saveRunning \u003d false;"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" this.intervalTime \u003d intervalTime;"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" * Function to be called right before a change is made / stores the latest last state"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" * preferably to be called with \"beforeinput\" event"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param entry optional entry to insert"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" updateBeforeChange(entry?: T): void {"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.currIndex \u003d\u003d\u003d -1) {"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" return this.addEntry(entry ?? this.getState(), false);"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" this.createDelayedSave();"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" * Creates a timed delay to add entries to history."},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" * Enables a more natural feel when performing high frequency saving."},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" * Also prevents history from being rapidly filled up"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" * Note:"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" * If interval time is set to 0, this method should not be called"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" * within (input) events. Use addEntry(T) instead."},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" createDelayedSave(): void {"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.saveRunning) {"},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" return;"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":" this.isSaved \u003d false;"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" this.saveRunning \u003d true;"},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":" // if interval time is 0 -\u003e add entry will be called with false as parameter"},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":" this.timeout \u003d setTimeout(() \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" this.addEntry(this.getState(), !!this.intervalTime);"},{"lineNumber":52,"author":{"gitId":"Eclipse-Dominator"},"content":" }, this.intervalTime);"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":54,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":56,"author":{"gitId":"Eclipse-Dominator"},"content":" * Manually inserts changes"},{"lineNumber":57,"author":{"gitId":"Eclipse-Dominator"},"content":" * Should not be called manually in a context of text editors"},{"lineNumber":58,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param entry entry to insert"},{"lineNumber":59,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param isLatest guarentees that the changes are the latest"},{"lineNumber":60,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":61,"author":{"gitId":"Eclipse-Dominator"},"content":" addEntry(entry: T, isLatest: boolean \u003d true): void {"},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":" this.isSaved \u003d isLatest;"},{"lineNumber":63,"author":{"gitId":"Eclipse-Dominator"},"content":" const newIndex \u003d this.incrementIndex(this.currIndex);"},{"lineNumber":64,"author":{"gitId":"Eclipse-Dominator"},"content":" if (newIndex \u003d\u003d\u003d this.firstEntryIndex \u0026\u0026 this.currIndex !\u003d\u003d -1) {"},{"lineNumber":65,"author":{"gitId":"Eclipse-Dominator"},"content":" // in case history is already full."},{"lineNumber":66,"author":{"gitId":"Eclipse-Dominator"},"content":" this.firstEntryIndex \u003d this.incrementIndex(this.firstEntryIndex);"},{"lineNumber":67,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":68,"author":{"gitId":"Eclipse-Dominator"},"content":" this.lastEntryIndex \u003d newIndex; // resets future history"},{"lineNumber":69,"author":{"gitId":"Eclipse-Dominator"},"content":" this.currIndex \u003d newIndex;"},{"lineNumber":70,"author":{"gitId":"Eclipse-Dominator"},"content":" this.historyArray[this.currIndex] \u003d entry;"},{"lineNumber":71,"author":{"gitId":"Eclipse-Dominator"},"content":" this.saveRunning \u003d false;"},{"lineNumber":72,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":73,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":74,"author":{"gitId":"Eclipse-Dominator"},"content":" incrementIndex(i: number): number {"},{"lineNumber":75,"author":{"gitId":"Eclipse-Dominator"},"content":" return (i + 1) % this.historyArray.length;"},{"lineNumber":76,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":77,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":78,"author":{"gitId":"Eclipse-Dominator"},"content":" decrementIndex(i: number): number {"},{"lineNumber":79,"author":{"gitId":"Eclipse-Dominator"},"content":" return (i - 1 + this.historyArray.length) % this.historyArray.length;"},{"lineNumber":80,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":81,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":82,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":83,"author":{"gitId":"Eclipse-Dominator"},"content":" * ignore timeout and forcefuly save the current state"},{"lineNumber":84,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param entry optional parameter for element to be saved"},{"lineNumber":85,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param check dont save if there are no new data"},{"lineNumber":86,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param isLatest is the current state after the save step the latest"},{"lineNumber":87,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":88,"author":{"gitId":"Eclipse-Dominator"},"content":" forceSave(entry?: T, check: boolean \u003d false, isLatest: boolean \u003d true): void {"},{"lineNumber":89,"author":{"gitId":"Eclipse-Dominator"},"content":" // if the there are unsaved changes, saves it"},{"lineNumber":90,"author":{"gitId":"Eclipse-Dominator"},"content":" clearTimeout(this.timeout);"},{"lineNumber":91,"author":{"gitId":"Eclipse-Dominator"},"content":" if (!check || !this.isSaved) {"},{"lineNumber":92,"author":{"gitId":"Eclipse-Dominator"},"content":" this.addEntry(entry ?? this.getState(), isLatest);"},{"lineNumber":93,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":94,"author":{"gitId":"Eclipse-Dominator"},"content":" this.isSaved \u003d isLatest;"},{"lineNumber":95,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":96,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":97,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":98,"author":{"gitId":"Eclipse-Dominator"},"content":" * Stores the before and after state after running the function"},{"lineNumber":99,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param check dont do initial save if there are no new data"},{"lineNumber":100,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":101,"author":{"gitId":"Eclipse-Dominator"},"content":" wrapSave(func: Function, check: boolean \u003d true) {"},{"lineNumber":102,"author":{"gitId":"Eclipse-Dominator"},"content":" clearTimeout(this.timeout);"},{"lineNumber":103,"author":{"gitId":"Eclipse-Dominator"},"content":" if (!check || !this.isSaved) {"},{"lineNumber":104,"author":{"gitId":"Eclipse-Dominator"},"content":" this.addEntry(this.getState(), false);"},{"lineNumber":105,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":106,"author":{"gitId":"Eclipse-Dominator"},"content":" func();"},{"lineNumber":107,"author":{"gitId":"Eclipse-Dominator"},"content":" this.addEntry(this.getState(), true);"},{"lineNumber":108,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":109,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":110,"author":{"gitId":"Eclipse-Dominator"},"content":" undo(): T | null {"},{"lineNumber":111,"author":{"gitId":"Eclipse-Dominator"},"content":" this.forceSave(undefined, true);"},{"lineNumber":112,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.currIndex \u003d\u003d\u003d this.firstEntryIndex || this.currIndex \u003d\u003d\u003d -1) {"},{"lineNumber":113,"author":{"gitId":"Eclipse-Dominator"},"content":" // if there are no more history to unwind"},{"lineNumber":114,"author":{"gitId":"Eclipse-Dominator"},"content":" return null;"},{"lineNumber":115,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":116,"author":{"gitId":"Eclipse-Dominator"},"content":" this.currIndex \u003d this.decrementIndex(this.currIndex);"},{"lineNumber":117,"author":{"gitId":"Eclipse-Dominator"},"content":" return this.historyArray[this.currIndex];"},{"lineNumber":118,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":119,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":120,"author":{"gitId":"Eclipse-Dominator"},"content":" redo(): T | null {"},{"lineNumber":121,"author":{"gitId":"Eclipse-Dominator"},"content":" this.forceSave(undefined, true);"},{"lineNumber":122,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.currIndex \u003d\u003d\u003d this.lastEntryIndex) {"},{"lineNumber":123,"author":{"gitId":"Eclipse-Dominator"},"content":" // if current state is already at the latest iteration"},{"lineNumber":124,"author":{"gitId":"Eclipse-Dominator"},"content":" return null;"},{"lineNumber":125,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":126,"author":{"gitId":"Eclipse-Dominator"},"content":" this.currIndex \u003d this.incrementIndex(this.currIndex);"},{"lineNumber":127,"author":{"gitId":"Eclipse-Dominator"},"content":" return this.historyArray[this.currIndex];"},{"lineNumber":128,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":129,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":129}},{"path":"src/app/core/services/auth.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgZone } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Title } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { BehaviorSubject } from \u0027rxjs\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { generateSessionId } from \u0027../../shared/lib/session\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { uuid } from \u0027../../shared/lib/uuid\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { DataService } from \u0027./data.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027./githubevent.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027./issue.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027./phase.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./user.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"export enum AuthState {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u0027NotAuthenticated\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u0027AwaitingAuthentication\u0027,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u0027ConfirmOAuthUser\u0027,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u0027Authenticated\u0027"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":25,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":26,"author":{"gitId":"-"},"content":"})"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Responsible for initiating the authentication process and querying or"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * updating the application state with regards to authentication."},{"lineNumber":31,"author":{"gitId":"-"},"content":" */"},{"lineNumber":32,"author":{"gitId":"-"},"content":"export class AuthService {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" authStateSource \u003d new BehaviorSubject(AuthState.NotAuthenticated);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" currentAuthState \u003d this.authStateSource.asObservable();"},{"lineNumber":35,"author":{"gitId":"-"},"content":" accessToken \u003d new BehaviorSubject(undefined);"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private state: string;"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" ENABLE_POPUP_MESSAGE \u003d \u0027Please enable pop-ups in your browser\u0027;"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":41,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private ngZone: NgZone,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private dataService: DataService,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private titleService: Title,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private logger: LoggingService"},{"lineNumber":51,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Will store the OAuth token."},{"lineNumber":55,"author":{"gitId":"-"},"content":" */"},{"lineNumber":56,"author":{"gitId":"-"},"content":" storeOAuthAccessToken(token: string) {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.githubService.storeOAuthAccessToken(token);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.accessToken.next(token);"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" reset(): void {"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(\u0027AuthService: Clearing access token and setting AuthState to NotAuthenticated.\u0027);"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.accessToken.next(undefined);"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e this.router.navigate([\u0027\u0027]));"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" logOut(): void {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.githubService.reset();"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.userService.reset();"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.issueService.reset(true);"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.phaseService.reset();"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.dataService.reset();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.githubEventService.reset();"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.logger.reset();"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.setLandingPageTitle();"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.issueService.setIssueTeamFilter(\u0027All Teams\u0027);"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.reset();"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" setTitleWithPhaseDetail(): void {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" const appSetting \u003d require(\u0027../../../../package.json\u0027);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" const title \u003d `${appSetting.name} ${appSetting.version} - ${this.phaseService.getPhaseDetail()}`;"},{"lineNumber":84,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`AuthService: Setting Title as ${title}`);"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.titleService.setTitle(title);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":""},{"lineNumber":88,"author":{"gitId":"-"},"content":" setLandingPageTitle(): void {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" const appSetting \u003d require(\u0027../../../../package.json\u0027);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" const title \u003d `${appSetting.name} ${appSetting.version}`;"},{"lineNumber":91,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`AuthService: Setting LandingPageTitle as ${title}`);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.titleService.setTitle(title);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" isAuthenticated(): boolean {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return this.authStateSource.getValue() \u003d\u003d\u003d AuthState.Authenticated;"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" changeAuthState(newAuthState: AuthState) {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (newAuthState \u003d\u003d\u003d AuthState.Authenticated) {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" const sessionId \u003d generateSessionId();"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.issueService.setSessionId(sessionId);"},{"lineNumber":103,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`AuthService: Successfully authenticated with session: ${sessionId}`);"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.authStateSource.next(newAuthState);"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Generates and assigns an unguessable random \u0027state\u0027 string to pass to Github for protection against cross-site request forgery attacks"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */"},{"lineNumber":111,"author":{"gitId":"-"},"content":" generateStateString() {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.state \u003d uuid();"},{"lineNumber":113,"author":{"gitId":"-"},"content":" sessionStorage.setItem(\u0027state\u0027, this.state);"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }"},{"lineNumber":115,"author":{"gitId":"-"},"content":""},{"lineNumber":116,"author":{"gitId":"-"},"content":" isReturnedStateSame(returnedState: string): boolean {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" const state \u003d sessionStorage.getItem(\u0027state\u0027);"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return returnedState \u003d\u003d\u003d state;"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Will start the Github OAuth web flow process."},{"lineNumber":123,"author":{"gitId":"-"},"content":" */"},{"lineNumber":124,"author":{"gitId":"-"},"content":" startOAuthProcess() {"},{"lineNumber":125,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(\u0027AuthService: Starting authentication\u0027);"},{"lineNumber":126,"author":{"gitId":"-"},"content":" const githubRepoPermission \u003d this.phaseService.githubRepoPermissionLevel();"},{"lineNumber":127,"author":{"gitId":"-"},"content":" this.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":128,"author":{"gitId":"-"},"content":""},{"lineNumber":129,"author":{"gitId":"-"},"content":" this.generateStateString();"},{"lineNumber":130,"author":{"gitId":"-"},"content":" this.redirectToOAuthPage("},{"lineNumber":131,"author":{"gitId":"-"},"content":" encodeURI("},{"lineNumber":132,"author":{"gitId":"-"},"content":" `${AppConfig.githubUrl}/login/oauth/authorize?client_id\u003d${AppConfig.clientId}\u0026scope\u003d${githubRepoPermission},read:user\u0026state\u003d${this.state}`"},{"lineNumber":133,"author":{"gitId":"-"},"content":" )"},{"lineNumber":134,"author":{"gitId":"-"},"content":" );"},{"lineNumber":135,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(\u0027AuthService: Redirecting for Github authentication\u0027);"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }"},{"lineNumber":137,"author":{"gitId":"-"},"content":""},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Will redirect to GitHub OAuth page"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private redirectToOAuthPage(url: string): void {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (url \u003d\u003d null) {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }"},{"lineNumber":145,"author":{"gitId":"-"},"content":" window.location.href \u003d url;"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":6,"-":141}},{"path":"src/app/core/services/dialog.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { FormGroup } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { LabelDefinitionPopupComponent } from \u0027../../shared/label-definition-popup/label-definition-popup.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { UserConfirmationComponent } from \u0027../guards/user-confirmation/user-confirmation.component\u0027;"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Issue } from \u0027../models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":9,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":10,"author":{"gitId":"-"},"content":"})"},{"lineNumber":11,"author":{"gitId":"-"},"content":"export class DialogService {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" constructor(private dialog: MatDialog) {}"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":" openUserConfirmationModal(messages: string[], yesButtonMessage: string, noButtonMessage: string) {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" return this.dialog.open(UserConfirmationComponent, {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" data: {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" messages: messages,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" yesMessage: yesButtonMessage,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" noMessage: noButtonMessage"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }"},{"lineNumber":21,"author":{"gitId":"-"},"content":" });"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" openLabelDefinitionDialog(labelName: String, labelDefinition: String) {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return this.dialog.open(LabelDefinitionPopupComponent, {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" data: {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" header: labelName,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" body: labelDefinition"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }"},{"lineNumber":30,"author":{"gitId":"-"},"content":" });"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" checkIfFieldIsModified(form: FormGroup, initialField: string, formField: string, issue: Issue) {"},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const issueTitleInitialValue \u003d issue[initialField] || \u0027\u0027;"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const isModified \u003d form.get(formField).value !\u003d\u003d issueTitleInitialValue;"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return isModified;"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":39,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" performActionIfModified(isModified: boolean, actionIfModified: () \u003d\u003e void, actionIfNotModified: () \u003d\u003e void) {"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (isModified) {"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // if the field has been edited, request user to confirm the cancellation"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" actionIfModified();"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" } else {"},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // if no changes have been made, simply cancel edit mode without getting confirmation"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" actionIfNotModified();"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":18,"-":30}},{"path":"src/app/core/services/error-handling.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpErrorResponse } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ErrorHandler, Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatSnackBar } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { RequestError } from \u0027@octokit/request-error\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { FormErrorComponent } from \u0027../../shared/error-toasters/form-error/form-error.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GeneralMessageErrorComponent } from \u0027../../shared/error-toasters/general-message-error/general-message-error.component\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"export const ERRORCODE_NOT_FOUND \u003d 404;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"const FILTERABLE \u003d [\u0027node_modules\u0027];"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":14,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":15,"author":{"gitId":"-"},"content":"})"},{"lineNumber":16,"author":{"gitId":"-"},"content":"export class ErrorHandlingService implements ErrorHandler {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" constructor(private snackBar: MatSnackBar, private logger: LoggingService) {}"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" handleError(error: HttpErrorResponse | Error | RequestError, actionCallback?: () \u003d\u003e void) {"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.error(\u0027ErrorHandlingService: \u0027 + error);"},{"lineNumber":21,"author":{"gitId":"-"},"content":" if (error instanceof Error) {"},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.debug(\u0027ErrorHandlingService: \u0027 + this.cleanStack(error.stack));"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }"},{"lineNumber":24,"author":{"gitId":"-"},"content":" if (error instanceof HttpErrorResponse) {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.handleHttpError(error, actionCallback);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" } else if (error.constructor.name \u003d\u003d\u003d \u0027RequestError\u0027) {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.handleHttpError(error as RequestError, actionCallback);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" } else if (typeof error \u003d\u003d\u003d \u0027string\u0027) {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.handleGeneralError(error);"},{"lineNumber":30,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.handleGeneralError(error.message || JSON.stringify(error));"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" private cleanStack(stacktrace: string): string {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return stacktrace"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .split(\u0027\\n\u0027)"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .filter((line) \u003d\u003e !FILTERABLE.some((word) \u003d\u003e line.includes(word))) // exclude lines that contain words in FILTERABLE"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .join(\u0027\\n\u0027);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Ref: https://docs.github.com/en/rest/overview/resources-in-the-rest-api#client-errors"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private handleHttpError(error: HttpErrorResponse | RequestError, actionCallback?: () \u003d\u003e void): void {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // Angular treats 304 Not Modified as an error, we will ignore it."},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (error.status \u003d\u003d\u003d 304) {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!navigator.onLine) {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.handleGeneralError(\u0027No Internet Connection\u0027);"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" switch (error.status) {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" case 500: // Internal Server Error."},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(GeneralMessageErrorComponent, { data: error });"},{"lineNumber":57,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":58,"author":{"gitId":"-"},"content":" case 422: // Form errors"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(FormErrorComponent, { data: error });"},{"lineNumber":60,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case 400: // Bad request"},{"lineNumber":62,"author":{"gitId":"-"},"content":" case 401: // Unauthorized"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case 404: // Not found"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(GeneralMessageErrorComponent, { data: error });"},{"lineNumber":65,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":66,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(GeneralMessageErrorComponent, { data: error });"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":" private handleGeneralError(error: string): void {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(GeneralMessageErrorComponent, { data: { message: error } });"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" clearError() {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.snackBar.dismiss();"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":77}},{"path":"src/app/core/services/factories/factory.github.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Apollo } from \u0027apollo-angular\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../../environments/environment\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../error-handling.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../github.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../logging.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { MockGithubService } from \u0027../mocks/mock.github.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"export function GithubServiceFactory(handling: ErrorHandlingService, apollo: Apollo, logger: LoggingService) {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" if (AppConfig.test) {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" return new MockGithubService();"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }"},{"lineNumber":12,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return new GithubService(handling, apollo, logger);"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":11}},{"path":"src/app/core/services/factories/factory.issue.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../../environments/environment\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { DataService } from \u0027../data.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../github.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../issue.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../logging.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { MockIssueService } from \u0027../mocks/mock.issue.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../phase.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../user.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"export function IssueServiceFactory("},{"lineNumber":11,"author":{"gitId":"-"},"content":" githubService: GithubService,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" userService: UserService,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" phaseService: PhaseService,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" dataService: DataService,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" logger: LoggingService"},{"lineNumber":16,"author":{"gitId":"-"},"content":") {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" if (AppConfig.test) {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new MockIssueService(githubService, phaseService, dataService);"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return new IssueService(githubService, userService, phaseService, dataService, logger);"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":20}},{"path":"src/app/core/services/github.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpErrorResponse } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Apollo, QueryRef } from \u0027apollo-angular\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { ApolloQueryResult } from \u0027apollo-client\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { DocumentNode } from \u0027graphql\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { forkJoin, from, Observable, of, throwError } from \u0027rxjs\u0027;"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { catchError, filter, map, mergeMap, throwIfEmpty } from \u0027rxjs/operators\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" FetchIssue,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" FetchIssueQuery,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" FetchIssues,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" FetchIssuesByTeam,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" FetchIssuesByTeamQuery,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" FetchIssuesQuery,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" FetchLabels,"},{"lineNumber":16,"author":{"gitId":"-"},"content":" FetchLabelsQuery"},{"lineNumber":17,"author":{"gitId":"-"},"content":"} from \u0027../../../../graphql/graphql-types\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import { getNumberOfPages } from \u0027../../shared/lib/github-paginator-parser\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027../models/comment.model\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../models/github-user.model\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import { IssueLastModifiedManagerModel } from \u0027../models/github/cache-manager/issue-last-modified-manager.model\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import { IssuesCacheManager } from \u0027../models/github/cache-manager/issues-cache-manager.model\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import { GithubComment } from \u0027../models/github/github-comment.model\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import { GithubGraphqlIssue } from \u0027../models/github/github-graphql.issue\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import RestGithubIssueFilter from \u0027../models/github/github-issue-filter.model\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027../models/github/github-issue.model\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../models/github/github-label.model\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import { GithubResponse } from \u0027../models/github/github-response.model\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import { GithubRelease } from \u0027../models/github/github.release\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import { SessionData } from \u0027../models/session.model\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import { ERRORCODE_NOT_FOUND, ErrorHandlingService } from \u0027./error-handling.service\u0027;"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"const { Octokit } \u003d require(\u0027@octokit/rest\u0027);"},{"lineNumber":36,"author":{"gitId":"-"},"content":"const CATCHER_ORG \u003d \u0027CATcher-org\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":"const CATCHER_REPO \u003d \u0027CATcher\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":"const UNABLE_TO_OPEN_IN_BROWSER \u003d \u0027Unable to open this issue in Browser\u0027;"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":"let ORG_NAME \u003d \u0027\u0027;"},{"lineNumber":41,"author":{"gitId":"-"},"content":"let MOD_ORG \u003d \u0027\u0027;"},{"lineNumber":42,"author":{"gitId":"-"},"content":"let REPO \u003d \u0027\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":"let DATA_REPO \u003d \u0027\u0027;"},{"lineNumber":44,"author":{"gitId":"-"},"content":"const MAX_ITEMS_PER_PAGE \u003d 100;"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":"let octokit \u003d new Octokit();"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":49,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":50,"author":{"gitId":"-"},"content":"})"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Responsible for communicating with GitHub to create, update, read and delete"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * features related to Github using GitHub API Requests."},{"lineNumber":55,"author":{"gitId":"-"},"content":" * For example, issues, issue labels and repositories."},{"lineNumber":56,"author":{"gitId":"-"},"content":" */"},{"lineNumber":57,"author":{"gitId":"-"},"content":"export class GithubService {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private static readonly IF_NONE_MATCH_EMPTY \u003d { \u0027If-None-Match\u0027: \u0027\u0027 };"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" private issuesCacheManager \u003d new IssuesCacheManager();"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private issuesLastModifiedManager \u003d new IssueLastModifiedManagerModel();"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private issueQueryRefs \u003d new Map\u003cNumber, QueryRef\u003cFetchIssueQuery\u003e\u003e();"},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor(private errorHandlingService: ErrorHandlingService, private apollo: Apollo, private logger: LoggingService) {}"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" storeOAuthAccessToken(accessToken: string) {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" octokit \u003d new Octokit({"},{"lineNumber":68,"author":{"gitId":"-"},"content":" auth() {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return `Token ${accessToken}`;"},{"lineNumber":70,"author":{"gitId":"-"},"content":" },"},{"lineNumber":71,"author":{"gitId":"-"},"content":" log: {"},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" debug: (message, ...otherInfo) \u003d\u003e this.logger.debug(\u0027GithubService: \u0027 + message, ...otherInfo),"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Do not log info for HTTP response 304 due to repeated polling"},{"lineNumber":74,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" info: (message, ...otherInfo) \u003d\u003e"},{"lineNumber":75,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" /304 in \\d+ms$/.test(message) ? undefined : this.logger.info(\u0027GithubService: \u0027 + message, ...otherInfo),"},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" warn: (message, ...otherInfo) \u003d\u003e this.logger.warn(\u0027GithubService: \u0027 + message, ...otherInfo),"},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" error: (message, ...otherInfo) \u003d\u003e this.logger.error(\u0027GithubService: \u0027 + message, ...otherInfo)"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }"},{"lineNumber":79,"author":{"gitId":"-"},"content":" });"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":" storeOrganizationDetails(orgName: string, dataRepo: string) {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" MOD_ORG \u003d orgName;"},{"lineNumber":84,"author":{"gitId":"-"},"content":" DATA_REPO \u003d dataRepo;"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" storePhaseDetails(phaseRepoOwner: string, repoName: string) {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" REPO \u003d repoName;"},{"lineNumber":89,"author":{"gitId":"-"},"content":" ORG_NAME \u003d phaseRepoOwner;"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Fetches an array of filtered GitHubIssues using GraphQL query for a given team."},{"lineNumber":94,"author":{"gitId":"-"},"content":" *"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @param tutorial - The tutorial that the team belongs to."},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @param team - The team\u0027s designated name."},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @param issuesFilter - The issue filter."},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @returns An observable array of filtered GithubIssues"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */"},{"lineNumber":100,"author":{"gitId":"-"},"content":" fetchIssuesGraphqlByTeam(tutorial: string, team: string, issuesFilter: RestGithubIssueFilter): Observable\u003cArray\u003cGithubIssue\u003e\u003e {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" const graphqlFilter \u003d issuesFilter.convertToGraphqlFilter();"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this.toFetchIssues(issuesFilter).pipe("},{"lineNumber":103,"author":{"gitId":"-"},"content":" filter((toFetch) \u003d\u003e toFetch),"},{"lineNumber":104,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap(() \u003d\u003e {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return this.fetchGraphqlList\u003cFetchIssuesByTeamQuery, GithubGraphqlIssue\u003e("},{"lineNumber":106,"author":{"gitId":"-"},"content":" FetchIssuesByTeam,"},{"lineNumber":107,"author":{"gitId":"-"},"content":" {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":109,"author":{"gitId":"-"},"content":" name: REPO,"},{"lineNumber":110,"author":{"gitId":"-"},"content":" filter: {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ...graphqlFilter,"},{"lineNumber":112,"author":{"gitId":"-"},"content":" labels: [...(graphqlFilter.labels ? graphqlFilter.labels : []), team]"},{"lineNumber":113,"author":{"gitId":"-"},"content":" },"},{"lineNumber":114,"author":{"gitId":"-"},"content":" tutorial"},{"lineNumber":115,"author":{"gitId":"-"},"content":" },"},{"lineNumber":116,"author":{"gitId":"-"},"content":" (result) \u003d\u003e result.data.repository.label.issues.edges,"},{"lineNumber":117,"author":{"gitId":"-"},"content":" GithubGraphqlIssue"},{"lineNumber":118,"author":{"gitId":"-"},"content":" );"},{"lineNumber":119,"author":{"gitId":"-"},"content":" })"},{"lineNumber":120,"author":{"gitId":"-"},"content":" );"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }"},{"lineNumber":122,"author":{"gitId":"-"},"content":""},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Fetches an array of filtered GitHubIssues using GraphQL query."},{"lineNumber":125,"author":{"gitId":"-"},"content":" * @param issuesFilter - The issue filter."},{"lineNumber":126,"author":{"gitId":"-"},"content":" * @returns An observable array of filtered GithubIssues"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */"},{"lineNumber":128,"author":{"gitId":"-"},"content":" fetchIssuesGraphql(issuesFilter: RestGithubIssueFilter): Observable\u003cArray\u003cGithubIssue\u003e\u003e {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" const graphqlFilter \u003d issuesFilter.convertToGraphqlFilter();"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return this.toFetchIssues(issuesFilter).pipe("},{"lineNumber":131,"author":{"gitId":"-"},"content":" filter((toFetch) \u003d\u003e toFetch),"},{"lineNumber":132,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap(() \u003d\u003e {"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return this.fetchGraphqlList\u003cFetchIssuesQuery, GithubGraphqlIssue\u003e("},{"lineNumber":134,"author":{"gitId":"-"},"content":" FetchIssues,"},{"lineNumber":135,"author":{"gitId":"-"},"content":" { owner: ORG_NAME, name: REPO, filter: graphqlFilter },"},{"lineNumber":136,"author":{"gitId":"-"},"content":" (result) \u003d\u003e result.data.repository.issues.edges,"},{"lineNumber":137,"author":{"gitId":"-"},"content":" GithubGraphqlIssue"},{"lineNumber":138,"author":{"gitId":"-"},"content":" );"},{"lineNumber":139,"author":{"gitId":"-"},"content":" })"},{"lineNumber":140,"author":{"gitId":"-"},"content":" );"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }"},{"lineNumber":142,"author":{"gitId":"-"},"content":""},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Checks if there are pages of filtered issues that are not cached in the cache model,"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * and updates the model to cache these new pages."},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param filter - The issue filter."},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @returns Observable\u003cboolean\u003e that returns true if there are pages that do not exist in the cache model."},{"lineNumber":148,"author":{"gitId":"-"},"content":" */"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private toFetchIssues(filter: RestGithubIssueFilter): Observable\u003cboolean\u003e {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" let responseInFirstPage: GithubResponse\u003cGithubIssue[]\u003e;"},{"lineNumber":151,"author":{"gitId":"-"},"content":" return this.getIssuesAPICall(filter, 1).pipe("},{"lineNumber":152,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue[]\u003e) \u003d\u003e {"},{"lineNumber":153,"author":{"gitId":"-"},"content":" responseInFirstPage \u003d response;"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return getNumberOfPages(response);"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":156,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((numOfPages: number) \u003d\u003e {"},{"lineNumber":157,"author":{"gitId":"-"},"content":" const apiCalls: Observable\u003cGithubResponse\u003cGithubIssue[]\u003e\u003e[] \u003d [];"},{"lineNumber":158,"author":{"gitId":"-"},"content":" for (let i \u003d 2; i \u003c\u003d numOfPages; i++) {"},{"lineNumber":159,"author":{"gitId":"-"},"content":" apiCalls.push(this.getIssuesAPICall(filter, i));"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return apiCalls.length \u003d\u003d\u003d 0 ? of([]) : forkJoin(apiCalls);"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":163,"author":{"gitId":"-"},"content":" map((resultArray: GithubResponse\u003cGithubIssue[]\u003e[]) \u003d\u003e {"},{"lineNumber":164,"author":{"gitId":"-"},"content":" const responses \u003d [responseInFirstPage, ...resultArray];"},{"lineNumber":165,"author":{"gitId":"-"},"content":" const isCached \u003d responses.reduce((result, response) \u003d\u003e {"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return result \u0026\u0026 response.isCached;"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }, true);"},{"lineNumber":168,"author":{"gitId":"-"},"content":" responses.forEach((resp, index) \u003d\u003e this.issuesCacheManager.set(index + 1, resp));"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return !isCached;"},{"lineNumber":170,"author":{"gitId":"-"},"content":" })"},{"lineNumber":171,"author":{"gitId":"-"},"content":" );"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }"},{"lineNumber":173,"author":{"gitId":"-"},"content":""},{"lineNumber":174,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * Checks if the specified repository exists."},{"lineNumber":176,"author":{"gitId":"-"},"content":" * @param owner - Owner of Specified Repository."},{"lineNumber":177,"author":{"gitId":"-"},"content":" * @param repo - Name of Repository."},{"lineNumber":178,"author":{"gitId":"-"},"content":" */"},{"lineNumber":179,"author":{"gitId":"-"},"content":" isRepositoryPresent(owner: string, repo: string): Observable\u003cboolean\u003e {"},{"lineNumber":180,"author":{"gitId":"-"},"content":" return from(octokit.repos.get({ owner: owner, repo: repo, headers: GithubService.IF_NONE_MATCH_EMPTY })).pipe("},{"lineNumber":181,"author":{"gitId":"-"},"content":" map((rawData: { status: number }) \u003d\u003e {"},{"lineNumber":182,"author":{"gitId":"-"},"content":" return rawData.status !\u003d\u003d ERRORCODE_NOT_FOUND;"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":184,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return of(false);"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":187,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch repo data.\u0027))"},{"lineNumber":188,"author":{"gitId":"-"},"content":" );"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }"},{"lineNumber":190,"author":{"gitId":"-"},"content":""},{"lineNumber":191,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":192,"author":{"gitId":"-"},"content":" * Creates a repository in for the authenticated user location."},{"lineNumber":193,"author":{"gitId":"-"},"content":" * @param name - Name of Repo to create."},{"lineNumber":194,"author":{"gitId":"-"},"content":" * @return Observable\u003cboolean\u003e - That returns true if the repository has been successfully"},{"lineNumber":195,"author":{"gitId":"-"},"content":" * created."},{"lineNumber":196,"author":{"gitId":"-"},"content":" */"},{"lineNumber":197,"author":{"gitId":"-"},"content":" createRepository(name: string): void {"},{"lineNumber":198,"author":{"gitId":"-"},"content":" octokit.repos.createForAuthenticatedUser({ name: name });"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }"},{"lineNumber":200,"author":{"gitId":"-"},"content":""},{"lineNumber":201,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * Fetches information about an issue using GraphQL."},{"lineNumber":203,"author":{"gitId":"-"},"content":" *"},{"lineNumber":204,"author":{"gitId":"-"},"content":" * If the issue is not modified, return a `304 - Not Modified` response."},{"lineNumber":205,"author":{"gitId":"-"},"content":" *"},{"lineNumber":206,"author":{"gitId":"-"},"content":" * @param id - The issue id."},{"lineNumber":207,"author":{"gitId":"-"},"content":" * @returns Observable\u003cGithubGraphqlIssue\u003e that represents the response object."},{"lineNumber":208,"author":{"gitId":"-"},"content":" */"},{"lineNumber":209,"author":{"gitId":"-"},"content":" fetchIssueGraphql(id: number): Observable\u003cGithubGraphqlIssue\u003e {"},{"lineNumber":210,"author":{"gitId":"-"},"content":" if (this.issueQueryRefs.get(id) \u003d\u003d\u003d undefined) {"},{"lineNumber":211,"author":{"gitId":"-"},"content":" const newQueryRef \u003d this.apollo.watchQuery\u003cFetchIssueQuery\u003e({"},{"lineNumber":212,"author":{"gitId":"-"},"content":" query: FetchIssue,"},{"lineNumber":213,"author":{"gitId":"-"},"content":" variables: {"},{"lineNumber":214,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":215,"author":{"gitId":"-"},"content":" name: REPO,"},{"lineNumber":216,"author":{"gitId":"-"},"content":" issueId: id"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }"},{"lineNumber":218,"author":{"gitId":"-"},"content":" });"},{"lineNumber":219,"author":{"gitId":"-"},"content":" this.issueQueryRefs.set(id, newQueryRef);"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }"},{"lineNumber":221,"author":{"gitId":"-"},"content":""},{"lineNumber":222,"author":{"gitId":"-"},"content":" const queryRef \u003d this.issueQueryRefs.get(id);"},{"lineNumber":223,"author":{"gitId":"-"},"content":" return this.toFetchIssue(id).pipe("},{"lineNumber":224,"author":{"gitId":"-"},"content":" filter((toFetch) \u003d\u003e toFetch),"},{"lineNumber":225,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap(() \u003d\u003e from(queryRef.refetch())),"},{"lineNumber":226,"author":{"gitId":"-"},"content":" map((value: ApolloQueryResult\u003cFetchIssueQuery\u003e) \u003d\u003e {"},{"lineNumber":227,"author":{"gitId":"-"},"content":" return new GithubGraphqlIssue(value.data.repository.issue);"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":229,"author":{"gitId":"-"},"content":" throwIfEmpty(() \u003d\u003e new HttpErrorResponse({ status: 304 }))"},{"lineNumber":230,"author":{"gitId":"-"},"content":" );"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }"},{"lineNumber":232,"author":{"gitId":"-"},"content":""},{"lineNumber":233,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Checks if the issue has been modified since the last query, and"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * updates the model to reflect the last modified time."},{"lineNumber":236,"author":{"gitId":"-"},"content":" *"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * @param id - The issue id."},{"lineNumber":238,"author":{"gitId":"-"},"content":" * @returns Observable\u003cboolean\u003e that returns true if the issue has been modified."},{"lineNumber":239,"author":{"gitId":"-"},"content":" */"},{"lineNumber":240,"author":{"gitId":"-"},"content":" toFetchIssue(id: number): Observable\u003cboolean\u003e {"},{"lineNumber":241,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":242,"author":{"gitId":"-"},"content":" octokit.issues.get({"},{"lineNumber":243,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":244,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":245,"author":{"gitId":"-"},"content":" issue_number: id,"},{"lineNumber":246,"author":{"gitId":"-"},"content":" headers: { \u0027If-Modified-Since\u0027: this.issuesLastModifiedManager.get(id) }"},{"lineNumber":247,"author":{"gitId":"-"},"content":" })"},{"lineNumber":248,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":249,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":250,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.set(id, response.headers[\u0027last-modified\u0027]);"},{"lineNumber":251,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":253,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch issue.\u0027))"},{"lineNumber":254,"author":{"gitId":"-"},"content":" );"},{"lineNumber":255,"author":{"gitId":"-"},"content":" }"},{"lineNumber":256,"author":{"gitId":"-"},"content":""},{"lineNumber":257,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":258,"author":{"gitId":"-"},"content":" * Fetches all labels in the current repository."},{"lineNumber":259,"author":{"gitId":"-"},"content":" */"},{"lineNumber":260,"author":{"gitId":"-"},"content":" fetchAllLabels(): Observable\u003cArray\u003cGithubLabel\u003e\u003e {"},{"lineNumber":261,"author":{"gitId":"-"},"content":" const githubLabels \u003d this.fetchGraphqlList\u003cFetchLabelsQuery, GithubLabel\u003e("},{"lineNumber":262,"author":{"gitId":"-"},"content":" FetchLabels,"},{"lineNumber":263,"author":{"gitId":"-"},"content":" { owner: ORG_NAME, name: REPO },"},{"lineNumber":264,"author":{"gitId":"-"},"content":" (result) \u003d\u003e result.data.repository.labels.edges,"},{"lineNumber":265,"author":{"gitId":"-"},"content":" GithubLabel"},{"lineNumber":266,"author":{"gitId":"-"},"content":" );"},{"lineNumber":267,"author":{"gitId":"-"},"content":""},{"lineNumber":268,"author":{"gitId":"-"},"content":" return githubLabels.pipe(catchError((err) \u003d\u003e throwError(\u0027Failed to fetch labels.\u0027)));"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }"},{"lineNumber":270,"author":{"gitId":"-"},"content":""},{"lineNumber":271,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":272,"author":{"gitId":"-"},"content":" * Creates a label in the current repository."},{"lineNumber":273,"author":{"gitId":"-"},"content":" * @param formattedLabelName - name of new label."},{"lineNumber":274,"author":{"gitId":"-"},"content":" * @param labelColor - colour of new label."},{"lineNumber":275,"author":{"gitId":"-"},"content":" */"},{"lineNumber":276,"author":{"gitId":"-"},"content":" createLabel(formattedLabelName: string, labelColor: string): void {"},{"lineNumber":277,"author":{"gitId":"-"},"content":" octokit.issues.createLabel({ owner: ORG_NAME, repo: REPO, name: formattedLabelName, color: labelColor });"},{"lineNumber":278,"author":{"gitId":"-"},"content":" }"},{"lineNumber":279,"author":{"gitId":"-"},"content":""},{"lineNumber":280,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":281,"author":{"gitId":"-"},"content":" * Updates a label\u0027s information in the current repository."},{"lineNumber":282,"author":{"gitId":"-"},"content":" * @param labelName - name of existing label"},{"lineNumber":283,"author":{"gitId":"-"},"content":" * @param labelColor - new color to be assigned to existing label."},{"lineNumber":284,"author":{"gitId":"-"},"content":" */"},{"lineNumber":285,"author":{"gitId":"-"},"content":" updateLabel(labelName: string, labelColor: string): void {"},{"lineNumber":286,"author":{"gitId":"-"},"content":" octokit.issues.updateLabel({ owner: ORG_NAME, repo: REPO, name: labelName, current_name: labelName, color: labelColor });"},{"lineNumber":287,"author":{"gitId":"-"},"content":" }"},{"lineNumber":288,"author":{"gitId":"-"},"content":""},{"lineNumber":289,"author":{"gitId":"-"},"content":" closeIssue(id: number): Observable\u003cGithubIssue\u003e {"},{"lineNumber":290,"author":{"gitId":"-"},"content":" return from(octokit.issues.update({ owner: ORG_NAME, repo: REPO, issue_number: id, state: \u0027closed\u0027 })).pipe("},{"lineNumber":291,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":292,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.set(id, response.headers[\u0027last-modified\u0027]);"},{"lineNumber":293,"author":{"gitId":"-"},"content":" return new GithubIssue(response.data);"},{"lineNumber":294,"author":{"gitId":"-"},"content":" })"},{"lineNumber":295,"author":{"gitId":"-"},"content":" );"},{"lineNumber":296,"author":{"gitId":"-"},"content":" }"},{"lineNumber":297,"author":{"gitId":"-"},"content":""},{"lineNumber":298,"author":{"gitId":"-"},"content":" reopenIssue(id: number): Observable\u003cGithubIssue\u003e {"},{"lineNumber":299,"author":{"gitId":"-"},"content":" return from(octokit.issues.update({ owner: ORG_NAME, repo: REPO, issue_number: id, state: \u0027open\u0027 })).pipe("},{"lineNumber":300,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":301,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.set(id, response.headers[\u0027last-modified\u0027]);"},{"lineNumber":302,"author":{"gitId":"-"},"content":" return new GithubIssue(response.data);"},{"lineNumber":303,"author":{"gitId":"-"},"content":" })"},{"lineNumber":304,"author":{"gitId":"-"},"content":" );"},{"lineNumber":305,"author":{"gitId":"-"},"content":" }"},{"lineNumber":306,"author":{"gitId":"-"},"content":""},{"lineNumber":307,"author":{"gitId":"-"},"content":" createIssue(title: string, description: string, labels: string[]): Observable\u003cGithubIssue\u003e {"},{"lineNumber":308,"author":{"gitId":"-"},"content":" return from(octokit.issues.create({ owner: ORG_NAME, repo: REPO, title: title, body: description, labels: labels })).pipe("},{"lineNumber":309,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":310,"author":{"gitId":"-"},"content":" return new GithubIssue(response.data);"},{"lineNumber":311,"author":{"gitId":"-"},"content":" })"},{"lineNumber":312,"author":{"gitId":"-"},"content":" );"},{"lineNumber":313,"author":{"gitId":"-"},"content":" }"},{"lineNumber":314,"author":{"gitId":"-"},"content":""},{"lineNumber":315,"author":{"gitId":"-"},"content":" createIssueComment(issueId: number, description: string): Observable\u003cGithubComment\u003e {"},{"lineNumber":316,"author":{"gitId":"-"},"content":" return from(octokit.issues.createComment({ owner: ORG_NAME, repo: REPO, issue_number: issueId, body: description })).pipe("},{"lineNumber":317,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubComment\u003e) \u003d\u003e {"},{"lineNumber":318,"author":{"gitId":"-"},"content":" return response.data;"},{"lineNumber":319,"author":{"gitId":"-"},"content":" })"},{"lineNumber":320,"author":{"gitId":"-"},"content":" );"},{"lineNumber":321,"author":{"gitId":"-"},"content":" }"},{"lineNumber":322,"author":{"gitId":"-"},"content":""},{"lineNumber":323,"author":{"gitId":"-"},"content":" updateIssue(id: number, title: string, description: string, labels: string[], assignees?: string[]): Observable\u003cGithubIssue\u003e {"},{"lineNumber":324,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":325,"author":{"gitId":"-"},"content":" octokit.issues.update({"},{"lineNumber":326,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":327,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":328,"author":{"gitId":"-"},"content":" issue_number: id,"},{"lineNumber":329,"author":{"gitId":"-"},"content":" title: title,"},{"lineNumber":330,"author":{"gitId":"-"},"content":" body: description,"},{"lineNumber":331,"author":{"gitId":"-"},"content":" labels: labels,"},{"lineNumber":332,"author":{"gitId":"-"},"content":" assignees: assignees"},{"lineNumber":333,"author":{"gitId":"-"},"content":" })"},{"lineNumber":334,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":335,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":336,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.set(id, response.headers[\u0027last-modified\u0027]);"},{"lineNumber":337,"author":{"gitId":"-"},"content":" return new GithubIssue(response.data);"},{"lineNumber":338,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":339,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":340,"author":{"gitId":"-"},"content":" return throwError(err);"},{"lineNumber":341,"author":{"gitId":"-"},"content":" })"},{"lineNumber":342,"author":{"gitId":"-"},"content":" );"},{"lineNumber":343,"author":{"gitId":"-"},"content":" }"},{"lineNumber":344,"author":{"gitId":"-"},"content":""},{"lineNumber":345,"author":{"gitId":"-"},"content":" updateIssueComment(issueComment: IssueComment): Observable\u003cGithubComment\u003e {"},{"lineNumber":346,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":347,"author":{"gitId":"-"},"content":" octokit.issues.updateComment({ owner: ORG_NAME, repo: REPO, comment_id: issueComment.id, body: issueComment.description })"},{"lineNumber":348,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":349,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubComment\u003e) \u003d\u003e {"},{"lineNumber":350,"author":{"gitId":"-"},"content":" return response.data;"},{"lineNumber":351,"author":{"gitId":"-"},"content":" })"},{"lineNumber":352,"author":{"gitId":"-"},"content":" );"},{"lineNumber":353,"author":{"gitId":"-"},"content":" }"},{"lineNumber":354,"author":{"gitId":"-"},"content":""},{"lineNumber":355,"author":{"gitId":"-"},"content":" uploadFile(filename: string, base64String: string): Observable\u003cany\u003e {"},{"lineNumber":356,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":357,"author":{"gitId":"-"},"content":" octokit.repos.createOrUpdateFile({"},{"lineNumber":358,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":359,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":360,"author":{"gitId":"-"},"content":" path: `files/${filename}`,"},{"lineNumber":361,"author":{"gitId":"-"},"content":" message: \u0027upload file\u0027,"},{"lineNumber":362,"author":{"gitId":"-"},"content":" content: base64String"},{"lineNumber":363,"author":{"gitId":"-"},"content":" })"},{"lineNumber":364,"author":{"gitId":"-"},"content":" );"},{"lineNumber":365,"author":{"gitId":"-"},"content":" }"},{"lineNumber":366,"author":{"gitId":"-"},"content":""},{"lineNumber":367,"author":{"gitId":"-"},"content":" fetchEventsForRepo(): Observable\u003cany[]\u003e {"},{"lineNumber":368,"author":{"gitId":"-"},"content":" return from(octokit.issues.listEventsForRepo({ owner: ORG_NAME, repo: REPO, headers: GithubService.IF_NONE_MATCH_EMPTY })).pipe("},{"lineNumber":369,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":370,"author":{"gitId":"-"},"content":" return response[\u0027data\u0027];"},{"lineNumber":371,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":372,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch events for repo.\u0027))"},{"lineNumber":373,"author":{"gitId":"-"},"content":" );"},{"lineNumber":374,"author":{"gitId":"-"},"content":" }"},{"lineNumber":375,"author":{"gitId":"-"},"content":""},{"lineNumber":376,"author":{"gitId":"-"},"content":" fetchDataFile(): Observable\u003c{}\u003e {"},{"lineNumber":377,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":378,"author":{"gitId":"-"},"content":" octokit.repos.getContents({ owner: MOD_ORG, repo: DATA_REPO, path: \u0027data.csv\u0027, headers: GithubService.IF_NONE_MATCH_EMPTY })"},{"lineNumber":379,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":380,"author":{"gitId":"-"},"content":" map((rawData) \u003d\u003e {"},{"lineNumber":381,"author":{"gitId":"-"},"content":" return { data: atob(rawData[\u0027data\u0027][\u0027content\u0027]) };"},{"lineNumber":382,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":383,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch data file.\u0027))"},{"lineNumber":384,"author":{"gitId":"-"},"content":" );"},{"lineNumber":385,"author":{"gitId":"-"},"content":" }"},{"lineNumber":386,"author":{"gitId":"-"},"content":""},{"lineNumber":387,"author":{"gitId":"-"},"content":" fetchLatestRelease(): Observable\u003cGithubRelease\u003e {"},{"lineNumber":388,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":389,"author":{"gitId":"-"},"content":" octokit.repos.getLatestRelease({ owner: CATCHER_ORG, repo: CATCHER_REPO, headers: GithubService.IF_NONE_MATCH_EMPTY })"},{"lineNumber":390,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":391,"author":{"gitId":"-"},"content":" map((res) \u003d\u003e res[\u0027data\u0027]),"},{"lineNumber":392,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch latest release.\u0027))"},{"lineNumber":393,"author":{"gitId":"-"},"content":" );"},{"lineNumber":394,"author":{"gitId":"-"},"content":" }"},{"lineNumber":395,"author":{"gitId":"-"},"content":""},{"lineNumber":396,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":397,"author":{"gitId":"-"},"content":" * Fetches the data file that is regulates session information."},{"lineNumber":398,"author":{"gitId":"-"},"content":" * @return Observable\u003cSessionData\u003e representing session information."},{"lineNumber":399,"author":{"gitId":"-"},"content":" */"},{"lineNumber":400,"author":{"gitId":"-"},"content":" fetchSettingsFile(): Observable\u003cSessionData\u003e {"},{"lineNumber":401,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":402,"author":{"gitId":"-"},"content":" octokit.repos.getContents({ owner: MOD_ORG, repo: DATA_REPO, path: \u0027settings.json\u0027, headers: GithubService.IF_NONE_MATCH_EMPTY })"},{"lineNumber":403,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":404,"author":{"gitId":"-"},"content":" map((rawData) \u003d\u003e JSON.parse(atob(rawData[\u0027data\u0027][\u0027content\u0027]))),"},{"lineNumber":405,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch settings file.\u0027))"},{"lineNumber":406,"author":{"gitId":"-"},"content":" );"},{"lineNumber":407,"author":{"gitId":"-"},"content":" }"},{"lineNumber":408,"author":{"gitId":"-"},"content":""},{"lineNumber":409,"author":{"gitId":"-"},"content":" fetchAuthenticatedUser(): Observable\u003cGithubUser\u003e {"},{"lineNumber":410,"author":{"gitId":"-"},"content":" return from(octokit.users.getAuthenticated()).pipe("},{"lineNumber":411,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":412,"author":{"gitId":"-"},"content":" return response[\u0027data\u0027];"},{"lineNumber":413,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":414,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch authenticated user.\u0027))"},{"lineNumber":415,"author":{"gitId":"-"},"content":" );"},{"lineNumber":416,"author":{"gitId":"-"},"content":" }"},{"lineNumber":417,"author":{"gitId":"-"},"content":""},{"lineNumber":418,"author":{"gitId":"-"},"content":" getRepoURL(): string {"},{"lineNumber":419,"author":{"gitId":"-"},"content":" return ORG_NAME.concat(\u0027/\u0027).concat(REPO);"},{"lineNumber":420,"author":{"gitId":"-"},"content":" }"},{"lineNumber":421,"author":{"gitId":"-"},"content":""},{"lineNumber":422,"author":{"gitId":"-"},"content":" viewIssueInBrowser(id: number, event: Event) {"},{"lineNumber":423,"author":{"gitId":"-"},"content":" if (id) {"},{"lineNumber":424,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.open(\u0027https://github.com/\u0027.concat(this.getRepoURL()).concat(\u0027/issues/\u0027).concat(String(id)));"},{"lineNumber":425,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":426,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(new Error(UNABLE_TO_OPEN_IN_BROWSER));"},{"lineNumber":427,"author":{"gitId":"-"},"content":" }"},{"lineNumber":428,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":429,"author":{"gitId":"-"},"content":" }"},{"lineNumber":430,"author":{"gitId":"-"},"content":""},{"lineNumber":431,"author":{"gitId":"-"},"content":" reset(): void {"},{"lineNumber":432,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`GithubService: Resetting issues cache`);"},{"lineNumber":433,"author":{"gitId":"-"},"content":" this.issuesCacheManager.clear();"},{"lineNumber":434,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.clear();"},{"lineNumber":435,"author":{"gitId":"-"},"content":" this.issueQueryRefs.clear();"},{"lineNumber":436,"author":{"gitId":"-"},"content":" }"},{"lineNumber":437,"author":{"gitId":"-"},"content":""},{"lineNumber":438,"author":{"gitId":"-"},"content":" getProfilesData(): Promise\u003cResponse\u003e {"},{"lineNumber":439,"author":{"gitId":"-"},"content":" return fetch(AppConfig.clientDataUrl);"},{"lineNumber":440,"author":{"gitId":"-"},"content":" }"},{"lineNumber":441,"author":{"gitId":"-"},"content":""},{"lineNumber":442,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":443,"author":{"gitId":"-"},"content":" * Performs an API call to fetch a page of filtered issues with a given pageNumber."},{"lineNumber":444,"author":{"gitId":"-"},"content":" *"},{"lineNumber":445,"author":{"gitId":"-"},"content":" * The request is sent with the ETag of the latest cached HTTP response."},{"lineNumber":446,"author":{"gitId":"-"},"content":" * If page requested has the same ETag, or the request results in an error,"},{"lineNumber":447,"author":{"gitId":"-"},"content":" * then the cached page is returned instead."},{"lineNumber":448,"author":{"gitId":"-"},"content":" *"},{"lineNumber":449,"author":{"gitId":"-"},"content":" * @param filter - The issue filter"},{"lineNumber":450,"author":{"gitId":"-"},"content":" * @param pageNumber - The page to be fetched"},{"lineNumber":451,"author":{"gitId":"-"},"content":" * @returns An observable representing the response containing a single page of filtered issues"},{"lineNumber":452,"author":{"gitId":"-"},"content":" */"},{"lineNumber":453,"author":{"gitId":"-"},"content":" private getIssuesAPICall(filter: RestGithubIssueFilter, pageNumber: number): Observable\u003cGithubResponse\u003cGithubIssue[]\u003e\u003e {"},{"lineNumber":454,"author":{"gitId":"-"},"content":" const apiCall: Promise\u003cGithubResponse\u003cGithubIssue[]\u003e\u003e \u003d octokit.issues.listForRepo({"},{"lineNumber":455,"author":{"gitId":"-"},"content":" ...filter,"},{"lineNumber":456,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":457,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":458,"author":{"gitId":"-"},"content":" sort: \u0027created\u0027,"},{"lineNumber":459,"author":{"gitId":"-"},"content":" direction: \u0027desc\u0027,"},{"lineNumber":460,"author":{"gitId":"-"},"content":" per_page: MAX_ITEMS_PER_PAGE,"},{"lineNumber":461,"author":{"gitId":"-"},"content":" page: pageNumber,"},{"lineNumber":462,"author":{"gitId":"-"},"content":" headers: { \u0027If-None-Match\u0027: this.issuesCacheManager.getEtagFor(pageNumber) }"},{"lineNumber":463,"author":{"gitId":"-"},"content":" });"},{"lineNumber":464,"author":{"gitId":"-"},"content":" const apiCall$ \u003d from(apiCall);"},{"lineNumber":465,"author":{"gitId":"-"},"content":" return apiCall$.pipe("},{"lineNumber":466,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":467,"author":{"gitId":"-"},"content":" return of(this.issuesCacheManager.get(pageNumber));"},{"lineNumber":468,"author":{"gitId":"-"},"content":" })"},{"lineNumber":469,"author":{"gitId":"-"},"content":" );"},{"lineNumber":470,"author":{"gitId":"-"},"content":" }"},{"lineNumber":471,"author":{"gitId":"-"},"content":""},{"lineNumber":472,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":473,"author":{"gitId":"-"},"content":" * Fetches a list of items using a GraphQL query that queries for paginated data."},{"lineNumber":474,"author":{"gitId":"-"},"content":" *"},{"lineNumber":475,"author":{"gitId":"-"},"content":" * @param query - The GraphQL query that queries for paginated data."},{"lineNumber":476,"author":{"gitId":"-"},"content":" * @param variables - Additional variables for the GraphQL query."},{"lineNumber":477,"author":{"gitId":"-"},"content":" * @callback pluckEdges A function that returns a list of edges in a ApolloQueryResult."},{"lineNumber":478,"author":{"gitId":"-"},"content":" * @callback Model Constructor for the item model."},{"lineNumber":479,"author":{"gitId":"-"},"content":" * @returns A list of items from the query."},{"lineNumber":480,"author":{"gitId":"-"},"content":" */"},{"lineNumber":481,"author":{"gitId":"-"},"content":" private fetchGraphqlList\u003cT, M\u003e("},{"lineNumber":482,"author":{"gitId":"-"},"content":" query: DocumentNode,"},{"lineNumber":483,"author":{"gitId":"-"},"content":" variables: {},"},{"lineNumber":484,"author":{"gitId":"-"},"content":" pluckEdges: (results: ApolloQueryResult\u003cT\u003e) \u003d\u003e Array\u003cany\u003e,"},{"lineNumber":485,"author":{"gitId":"-"},"content":" Model: new (data) \u003d\u003e M"},{"lineNumber":486,"author":{"gitId":"-"},"content":" ): Observable\u003cArray\u003cM\u003e\u003e {"},{"lineNumber":487,"author":{"gitId":"-"},"content":" return from(this.withPagination\u003cT\u003e(pluckEdges)(query, variables)).pipe("},{"lineNumber":488,"author":{"gitId":"-"},"content":" map((results: Array\u003cApolloQueryResult\u003cT\u003e\u003e) \u003d\u003e {"},{"lineNumber":489,"author":{"gitId":"-"},"content":" const issues \u003d results.reduce((accumulated, current) \u003d\u003e accumulated.concat(pluckEdges(current)), []);"},{"lineNumber":490,"author":{"gitId":"-"},"content":" return issues.map((issue) \u003d\u003e new Model(issue.node));"},{"lineNumber":491,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":492,"author":{"gitId":"-"},"content":" throwIfEmpty(() \u003d\u003e {"},{"lineNumber":493,"author":{"gitId":"-"},"content":" return new HttpErrorResponse({ status: 304 });"},{"lineNumber":494,"author":{"gitId":"-"},"content":" })"},{"lineNumber":495,"author":{"gitId":"-"},"content":" );"},{"lineNumber":496,"author":{"gitId":"-"},"content":" }"},{"lineNumber":497,"author":{"gitId":"-"},"content":""},{"lineNumber":498,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":499,"author":{"gitId":"-"},"content":" * Returns an async function that will accept a GraphQL query that requests for paginated items."},{"lineNumber":500,"author":{"gitId":"-"},"content":" * Said function will recursively query for all subsequent pages until a page that has less than 100 items is found,"},{"lineNumber":501,"author":{"gitId":"-"},"content":" * then return all queried pages in an array."},{"lineNumber":502,"author":{"gitId":"-"},"content":" *"},{"lineNumber":503,"author":{"gitId":"-"},"content":" * @callback pluckEdges - A function that returns a list of edges in a ApolloQueryResult."},{"lineNumber":504,"author":{"gitId":"-"},"content":" * @returns an async function that accepts a GraphQL query for paginated data and any additional variables to that query"},{"lineNumber":505,"author":{"gitId":"-"},"content":" */"},{"lineNumber":506,"author":{"gitId":"-"},"content":" private withPagination\u003cT\u003e(pluckEdges: (results: ApolloQueryResult\u003cT\u003e) \u003d\u003e Array\u003cany\u003e) {"},{"lineNumber":507,"author":{"gitId":"-"},"content":" return async (query: DocumentNode, variables: { [key: string]: any } \u003d {}): Promise\u003cArray\u003cApolloQueryResult\u003cT\u003e\u003e\u003e \u003d\u003e {"},{"lineNumber":508,"author":{"gitId":"-"},"content":" const cursor \u003d variables.cursor || null;"},{"lineNumber":509,"author":{"gitId":"-"},"content":" const graphqlQuery \u003d this.apollo.watchQuery\u003cT\u003e({ query, variables: { ...variables, cursor } });"},{"lineNumber":510,"author":{"gitId":"-"},"content":" return graphqlQuery.refetch().then(async (results: ApolloQueryResult\u003cT\u003e) \u003d\u003e {"},{"lineNumber":511,"author":{"gitId":"-"},"content":" const intermediate \u003d Array.isArray(results) ? results : [results];"},{"lineNumber":512,"author":{"gitId":"-"},"content":" const edges \u003d pluckEdges(results);"},{"lineNumber":513,"author":{"gitId":"-"},"content":" const nextCursor \u003d edges.length \u003d\u003d\u003d 0 ? null : edges[edges.length - 1].cursor;"},{"lineNumber":514,"author":{"gitId":"-"},"content":""},{"lineNumber":515,"author":{"gitId":"-"},"content":" if (edges.length \u003c MAX_ITEMS_PER_PAGE || !nextCursor) {"},{"lineNumber":516,"author":{"gitId":"-"},"content":" return intermediate;"},{"lineNumber":517,"author":{"gitId":"-"},"content":" }"},{"lineNumber":518,"author":{"gitId":"-"},"content":" const nextResults \u003d await this.withPagination\u003cT\u003e(pluckEdges)(query, {"},{"lineNumber":519,"author":{"gitId":"-"},"content":" ...variables,"},{"lineNumber":520,"author":{"gitId":"-"},"content":" cursor: nextCursor"},{"lineNumber":521,"author":{"gitId":"-"},"content":" });"},{"lineNumber":522,"author":{"gitId":"-"},"content":" return intermediate.concat(nextResults);"},{"lineNumber":523,"author":{"gitId":"-"},"content":" });"},{"lineNumber":524,"author":{"gitId":"-"},"content":" };"},{"lineNumber":525,"author":{"gitId":"-"},"content":" }"},{"lineNumber":526,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":13,"-":513}},{"path":"src/app/core/services/githubevent.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Observable, of } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027./issue.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":8,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":9,"author":{"gitId":"-"},"content":"})"},{"lineNumber":10,"author":{"gitId":"-"},"content":"export class GithubEventService {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" private lastModified: string; // The timestamp when the title or label of an issue is changed"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private lastModifiedComment: string; // The timestamp when the comment of an issue is changed"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService, private issueService: IssueService) {}"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Calls the Github service api to return the latest github event (e.g renaming an issue\u0027s title)"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * of current repository and store the timestamps of the event in this service"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */"},{"lineNumber":20,"author":{"gitId":"-"},"content":" setLatestChangeEvent(): Observable\u003cany\u003e {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return this.githubService.fetchEventsForRepo().pipe("},{"lineNumber":22,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (response.length \u003d\u003d\u003d 0) {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return response;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.setLastModifiedTime(response[0][\u0027created_at\u0027]);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.setLastModifiedCommentTime(response[0][\u0027issue\u0027][\u0027updated_at\u0027]);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return response;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" })"},{"lineNumber":30,"author":{"gitId":"-"},"content":" );"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns the result whether the latest github event (e.g renaming an issue\u0027s title)"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * of current repository has been retrieved or not."},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @returns true if the issues were fetched from GitHub."},{"lineNumber":37,"author":{"gitId":"-"},"content":" */"},{"lineNumber":38,"author":{"gitId":"-"},"content":" reloadPage(): Observable\u003cboolean\u003e {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return this.githubService.fetchEventsForRepo().pipe("},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((response: any[]) \u003d\u003e {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (response.length \u003d\u003d\u003d 0) {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return of(false);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":" const eventResponse \u003d response[0];"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Will only allow page to reload if the latest modify time is different"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // from last modified, meaning that some changes to the repo has occured."},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (eventResponse[\u0027created_at\u0027] !\u003d\u003d this.lastModified || eventResponse[\u0027issue\u0027][\u0027updated_at\u0027] !\u003d\u003d this.lastModifiedComment) {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.setLastModifiedTime(eventResponse[\u0027created_at\u0027]);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.setLastModifiedCommentTime(eventResponse[\u0027issue\u0027][\u0027updated_at\u0027]);"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return this.issueService.reloadAllIssues().pipe(map((response: any[]) \u003d\u003e true));"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return of(false);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" })"},{"lineNumber":54,"author":{"gitId":"-"},"content":" );"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" private setLastModifiedTime(lastModified: string): void {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.lastModified \u003d lastModified;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" private setLastModifiedCommentTime(lastModified: string): void {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.lastModifiedComment \u003d lastModified;"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.setLastModifiedTime(undefined);"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.setLastModifiedCommentTime(undefined);"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":67}},{"path":"src/app/core/services/issue.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { BehaviorSubject, EMPTY, forkJoin, Observable, of, Subscription, throwError, timer } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { catchError, exhaustMap, finalize, map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027../models/comment.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubComment } from \u0027../models/github/github-comment.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import RestGithubIssueFilter from \u0027../models/github/github-issue-filter.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027../models/github/github-issue.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../models/github/github-label.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { HiddenData } from \u0027../models/hidden-data.model\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { IssueDispute } from \u0027../models/issue-dispute.model\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { FILTER, Issue, Issues, IssuesFilter, STATUS } from \u0027../models/issue.model\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../models/phase.model\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { appVersion } from \u0027./application.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { DataService } from \u0027./data.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027./phase.service\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./user.service\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":21,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":22,"author":{"gitId":"-"},"content":"})"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Responsible for creating and updating issues, and periodically fetching issues"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * using GitHub."},{"lineNumber":27,"author":{"gitId":"-"},"content":" */"},{"lineNumber":28,"author":{"gitId":"-"},"content":"export class IssueService {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" static readonly POLL_INTERVAL \u003d 5000; // 5 seconds"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" issues: Issues;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" issues$: BehaviorSubject\u003cIssue[]\u003e;"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" private sessionId: string;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private issueTeamFilter \u003d \u0027All Teams\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private issuesPollSubscription: Subscription;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /** Whether the IssueService is downloading the data from Github*/"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public isLoading \u003d new BehaviorSubject\u003cboolean\u003e(false);"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":41,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private dataService: DataService,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private logger: LoggingService"},{"lineNumber":46,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.issues$ \u003d new BehaviorSubject(new Array\u003cIssue\u003e());"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" startPollIssues() {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (this.issuesPollSubscription \u003d\u003d\u003d undefined) {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (this.issues$.getValue().length \u003d\u003d\u003d 0) {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.isLoading.next(true);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.issuesPollSubscription \u003d timer(0, IssueService.POLL_INTERVAL)"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":58,"author":{"gitId":"-"},"content":" exhaustMap(() \u003d\u003e {"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this.reloadAllIssues().pipe("},{"lineNumber":60,"author":{"gitId":"-"},"content":" catchError(() \u003d\u003e {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return EMPTY;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":63,"author":{"gitId":"-"},"content":" finalize(() \u003d\u003e this.isLoading.next(false))"},{"lineNumber":64,"author":{"gitId":"-"},"content":" );"},{"lineNumber":65,"author":{"gitId":"-"},"content":" })"},{"lineNumber":66,"author":{"gitId":"-"},"content":" )"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .subscribe();"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" stopPollIssues() {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (this.issuesPollSubscription) {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.issuesPollSubscription.unsubscribe();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.issuesPollSubscription \u003d undefined;"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Will constantly poll and update the application\u0027s state\u0027s with the updated issue."},{"lineNumber":80,"author":{"gitId":"-"},"content":" *"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param issueId - The issue\u0027s id to poll for."},{"lineNumber":82,"author":{"gitId":"-"},"content":" */"},{"lineNumber":83,"author":{"gitId":"-"},"content":" pollIssue(issueId: number): Observable\u003cIssue\u003e {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return timer(0, IssueService.POLL_INTERVAL).pipe("},{"lineNumber":85,"author":{"gitId":"-"},"content":" exhaustMap(() \u003d\u003e {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return this.githubService.fetchIssueGraphql(issueId).pipe("},{"lineNumber":87,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" const issue \u003d this.createIssueModel(response);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" this.updateLocalStore(issue);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":92,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this.getIssue(issueId);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" })"},{"lineNumber":95,"author":{"gitId":"-"},"content":" );"},{"lineNumber":96,"author":{"gitId":"-"},"content":" })"},{"lineNumber":97,"author":{"gitId":"-"},"content":" );"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":""},{"lineNumber":100,"author":{"gitId":"-"},"content":" reloadAllIssues() {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return this.initializeData();"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":" getIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (this.issues \u003d\u003d\u003d undefined) {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return this.getLatestIssue(id);"},{"lineNumber":107,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return of(this.issues[id]);"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":" getLatestIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return this.githubService.fetchIssueGraphql(id).pipe("},{"lineNumber":114,"author":{"gitId":"-"},"content":" map((response: GithubIssue) \u003d\u003e {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.createAndSaveIssueModel(response);"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return this.issues[id];"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":118,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return of(this.issues[id]);"},{"lineNumber":120,"author":{"gitId":"-"},"content":" })"},{"lineNumber":121,"author":{"gitId":"-"},"content":" );"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }"},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"-"},"content":" createIssue(title: string, description: string, severity: string, type: string): Observable\u003cIssue\u003e {"},{"lineNumber":125,"author":{"gitId":"-"},"content":" const labelsArray \u003d [this.createLabel(\u0027severity\u0027, severity), this.createLabel(\u0027type\u0027, type)];"},{"lineNumber":126,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const clientType \u003d \u0027Desktop\u0027;"},{"lineNumber":127,"author":{"gitId":"-"},"content":" const hiddenData \u003d new Map(["},{"lineNumber":128,"author":{"gitId":"-"},"content":" [\u0027session\u0027, this.sessionId],"},{"lineNumber":129,"author":{"gitId":"-"},"content":" [\u0027Version\u0027, `${clientType} v${appVersion}`]"},{"lineNumber":130,"author":{"gitId":"-"},"content":" ]);"},{"lineNumber":131,"author":{"gitId":"-"},"content":" const issueDescription \u003d HiddenData.embedDataIntoString(description, hiddenData);"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return this.githubService"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .createIssue(title, issueDescription, labelsArray)"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .pipe(map((response: GithubIssue) \u003d\u003e this.createIssueModel(response)));"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":" updateIssue(issue: Issue): Observable\u003cIssue\u003e {"},{"lineNumber":138,"author":{"gitId":"-"},"content":" const assignees \u003d this.phaseService.currentPhase \u003d\u003d\u003d Phase.phaseModeration ? [] : issue.assignees;"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return this.githubService"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .updateIssue(issue.id, issue.title, this.createGithubIssueDescription(issue), this.createLabelsForIssue(issue), assignees)"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":142,"author":{"gitId":"-"},"content":" map((response: GithubIssue) \u003d\u003e {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" response.comments \u003d issue.githubComments;"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return this.createIssueModel(response);"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":146,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":147,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.error(\u0027IssueService: \u0027, err); // Log full details of error first"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return throwError(err.response.data.message); // More readable error message"},{"lineNumber":149,"author":{"gitId":"-"},"content":" })"},{"lineNumber":150,"author":{"gitId":"-"},"content":" );"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" updateIssueWithComment(issue: Issue, issueComment: IssueComment): Observable\u003cIssue\u003e {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return this.githubService.updateIssueComment(issueComment).pipe("},{"lineNumber":155,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((updatedComment: GithubComment) \u003d\u003e {"},{"lineNumber":156,"author":{"gitId":"-"},"content":" issue.githubComments \u003d [updatedComment, ...issue.githubComments.filter((c) \u003d\u003e c.id !\u003d\u003d updatedComment.id)];"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return this.updateIssue(issue);"},{"lineNumber":158,"author":{"gitId":"-"},"content":" })"},{"lineNumber":159,"author":{"gitId":"-"},"content":" );"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }"},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":" updateTesterResponse(issue: Issue, issueComment: IssueComment): Observable\u003cIssue\u003e {"},{"lineNumber":163,"author":{"gitId":"-"},"content":" const isTesterResponseExist \u003d this.issues[issue.id].testerResponses;"},{"lineNumber":164,"author":{"gitId":"-"},"content":" const commentApiToCall \u003d isTesterResponseExist"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ? this.githubService.updateIssueComment(issueComment)"},{"lineNumber":166,"author":{"gitId":"-"},"content":" : this.githubService.createIssueComment(issue.id, issueComment.description);"},{"lineNumber":167,"author":{"gitId":"-"},"content":""},{"lineNumber":168,"author":{"gitId":"-"},"content":" const issueClone \u003d issue.clone(this.phaseService.currentPhase);"},{"lineNumber":169,"author":{"gitId":"-"},"content":" issueClone.status \u003d STATUS.Done;"},{"lineNumber":170,"author":{"gitId":"-"},"content":""},{"lineNumber":171,"author":{"gitId":"-"},"content":" return forkJoin([commentApiToCall, this.updateIssue(issueClone)]).pipe("},{"lineNumber":172,"author":{"gitId":"-"},"content":" map((responses) \u003d\u003e {"},{"lineNumber":173,"author":{"gitId":"-"},"content":" const [githubComment, issue] \u003d responses;"},{"lineNumber":174,"author":{"gitId":"-"},"content":" issue.updateTesterResponse(githubComment);"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":176,"author":{"gitId":"-"},"content":" })"},{"lineNumber":177,"author":{"gitId":"-"},"content":" );"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }"},{"lineNumber":179,"author":{"gitId":"-"},"content":""},{"lineNumber":180,"author":{"gitId":"-"},"content":" updateTutorResponse(issue: Issue, issueComment: IssueComment): Observable\u003cIssue\u003e {"},{"lineNumber":181,"author":{"gitId":"-"},"content":" return forkJoin([this.githubService.updateIssueComment(issueComment), this.updateIssue(issue)]).pipe("},{"lineNumber":182,"author":{"gitId":"-"},"content":" map((responses) \u003d\u003e {"},{"lineNumber":183,"author":{"gitId":"-"},"content":" const [githubComment, issue] \u003d responses;"},{"lineNumber":184,"author":{"gitId":"-"},"content":" issue.updateDispute(githubComment);"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":186,"author":{"gitId":"-"},"content":" })"},{"lineNumber":187,"author":{"gitId":"-"},"content":" );"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }"},{"lineNumber":189,"author":{"gitId":"-"},"content":""},{"lineNumber":190,"author":{"gitId":"-"},"content":" createTeamResponse(issue: Issue): Observable\u003cIssue\u003e {"},{"lineNumber":191,"author":{"gitId":"-"},"content":" const teamResponse \u003d issue.createGithubTeamResponse();"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return this.githubService.createIssueComment(issue.id, teamResponse).pipe("},{"lineNumber":193,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((githubComment: GithubComment) \u003d\u003e {"},{"lineNumber":194,"author":{"gitId":"-"},"content":" issue.githubComments \u003d [githubComment, ...issue.githubComments.filter((c) \u003d\u003e c.id !\u003d\u003d githubComment.id)];"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return this.updateIssue(issue);"},{"lineNumber":196,"author":{"gitId":"-"},"content":" })"},{"lineNumber":197,"author":{"gitId":"-"},"content":" );"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }"},{"lineNumber":199,"author":{"gitId":"-"},"content":""},{"lineNumber":200,"author":{"gitId":"-"},"content":" createTutorResponse(issue: Issue, response: string): Observable\u003cIssue\u003e {"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return forkJoin([this.githubService.createIssueComment(issue.id, response), this.updateIssue(issue)]).pipe("},{"lineNumber":202,"author":{"gitId":"-"},"content":" map((responses) \u003d\u003e {"},{"lineNumber":203,"author":{"gitId":"-"},"content":" const [githubComment, issue] \u003d responses;"},{"lineNumber":204,"author":{"gitId":"-"},"content":" issue.updateDispute(githubComment);"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":206,"author":{"gitId":"-"},"content":" })"},{"lineNumber":207,"author":{"gitId":"-"},"content":" );"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }"},{"lineNumber":209,"author":{"gitId":"-"},"content":""},{"lineNumber":210,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * This function will create a github representation of issue\u0027s description. Given the issue model, it will piece together the different"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * attributes to create the github\u0027s description."},{"lineNumber":213,"author":{"gitId":"-"},"content":" *"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */"},{"lineNumber":215,"author":{"gitId":"-"},"content":" private createGithubIssueDescription(issue: Issue): string {"},{"lineNumber":216,"author":{"gitId":"-"},"content":" switch (this.phaseService.currentPhase) {"},{"lineNumber":217,"author":{"gitId":"-"},"content":" case Phase.phaseModeration:"},{"lineNumber":218,"author":{"gitId":"-"},"content":" return ("},{"lineNumber":219,"author":{"gitId":"-"},"content":" `# Issue Description\\n${issue.createGithubIssueDescription()}\\n# Team\\\u0027s Response\\n${issue.teamResponse}\\n ` +"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // `## State the duplicated issue here, if any\\n${issue.duplicateOf ? `Duplicate of #${issue.duplicateOf}` : `--`}\\n` +"},{"lineNumber":221,"author":{"gitId":"-"},"content":" `# Disputes\\n\\n${this.getIssueDisputeString(issue.issueDisputes)}\\n`"},{"lineNumber":222,"author":{"gitId":"-"},"content":" );"},{"lineNumber":223,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":224,"author":{"gitId":"-"},"content":" return issue.createGithubIssueDescription();"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }"},{"lineNumber":227,"author":{"gitId":"-"},"content":""},{"lineNumber":228,"author":{"gitId":"-"},"content":" private getIssueDisputeString(issueDisputes: IssueDispute[]): string {"},{"lineNumber":229,"author":{"gitId":"-"},"content":" let issueDisputeString \u003d \u0027\u0027;"},{"lineNumber":230,"author":{"gitId":"-"},"content":" for (const issueDispute of issueDisputes) {"},{"lineNumber":231,"author":{"gitId":"-"},"content":" issueDisputeString +\u003d issueDispute.toString();"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }"},{"lineNumber":233,"author":{"gitId":"-"},"content":" return issueDisputeString;"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }"},{"lineNumber":235,"author":{"gitId":"-"},"content":""},{"lineNumber":236,"author":{"gitId":"-"},"content":" deleteIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":237,"author":{"gitId":"-"},"content":" return this.githubService.closeIssue(id).pipe("},{"lineNumber":238,"author":{"gitId":"-"},"content":" map((response: GithubIssue) \u003d\u003e {"},{"lineNumber":239,"author":{"gitId":"-"},"content":" const deletedIssue \u003d this.createIssueModel(response);"},{"lineNumber":240,"author":{"gitId":"-"},"content":" this.deleteFromLocalStore(deletedIssue);"},{"lineNumber":241,"author":{"gitId":"-"},"content":" return deletedIssue;"},{"lineNumber":242,"author":{"gitId":"-"},"content":" })"},{"lineNumber":243,"author":{"gitId":"-"},"content":" );"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }"},{"lineNumber":245,"author":{"gitId":"-"},"content":""},{"lineNumber":246,"author":{"gitId":"-"},"content":" undeleteIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":247,"author":{"gitId":"-"},"content":" return this.githubService.reopenIssue(id).pipe("},{"lineNumber":248,"author":{"gitId":"-"},"content":" map((response: GithubIssue) \u003d\u003e {"},{"lineNumber":249,"author":{"gitId":"-"},"content":" const reopenedIssue \u003d this.createIssueModel(response);"},{"lineNumber":250,"author":{"gitId":"-"},"content":" this.updateLocalStore(reopenedIssue);"},{"lineNumber":251,"author":{"gitId":"-"},"content":" return reopenedIssue;"},{"lineNumber":252,"author":{"gitId":"-"},"content":" })"},{"lineNumber":253,"author":{"gitId":"-"},"content":" );"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }"},{"lineNumber":255,"author":{"gitId":"-"},"content":""},{"lineNumber":256,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":257,"author":{"gitId":"-"},"content":" * This function will update the issue\u0027s state of the application. This function needs to be called whenever a issue is deleted."},{"lineNumber":258,"author":{"gitId":"-"},"content":" */"},{"lineNumber":259,"author":{"gitId":"-"},"content":" deleteFromLocalStore(issueToDelete: Issue) {"},{"lineNumber":260,"author":{"gitId":"-"},"content":" const { [issueToDelete.id]: issueToRemove, ...withoutIssueToRemove } \u003d this.issues;"},{"lineNumber":261,"author":{"gitId":"-"},"content":" this.issues \u003d withoutIssueToRemove;"},{"lineNumber":262,"author":{"gitId":"-"},"content":" this.issues$.next(Object.values(this.issues));"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }"},{"lineNumber":264,"author":{"gitId":"-"},"content":""},{"lineNumber":265,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":266,"author":{"gitId":"-"},"content":" * This function will update the issue\u0027s state of the application. This function needs to be called whenever a issue is added/updated."},{"lineNumber":267,"author":{"gitId":"-"},"content":" */"},{"lineNumber":268,"author":{"gitId":"-"},"content":" updateLocalStore(issueToUpdate: Issue) {"},{"lineNumber":269,"author":{"gitId":"-"},"content":" this.issues \u003d {"},{"lineNumber":270,"author":{"gitId":"-"},"content":" ...this.issues,"},{"lineNumber":271,"author":{"gitId":"-"},"content":" [issueToUpdate.id]: issueToUpdate"},{"lineNumber":272,"author":{"gitId":"-"},"content":" };"},{"lineNumber":273,"author":{"gitId":"-"},"content":" this.issues$.next(Object.values(this.issues));"},{"lineNumber":274,"author":{"gitId":"-"},"content":" }"},{"lineNumber":275,"author":{"gitId":"-"},"content":""},{"lineNumber":276,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":277,"author":{"gitId":"-"},"content":" * Check whether the issue has been responded in the phase 2/3."},{"lineNumber":278,"author":{"gitId":"-"},"content":" */"},{"lineNumber":279,"author":{"gitId":"-"},"content":" hasTeamResponse(issueId: number): boolean {"},{"lineNumber":280,"author":{"gitId":"-"},"content":" return !!this.issues[issueId].teamResponse;"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }"},{"lineNumber":282,"author":{"gitId":"-"},"content":""},{"lineNumber":283,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":284,"author":{"gitId":"-"},"content":" * Obtain an observable containing an array of issues that are duplicates of the parentIssue."},{"lineNumber":285,"author":{"gitId":"-"},"content":" */"},{"lineNumber":286,"author":{"gitId":"-"},"content":" getDuplicateIssuesFor(parentIssue: Issue): Observable\u003cIssue[]\u003e {"},{"lineNumber":287,"author":{"gitId":"-"},"content":" return this.issues$.pipe("},{"lineNumber":288,"author":{"gitId":"-"},"content":" map((issues) \u003d\u003e {"},{"lineNumber":289,"author":{"gitId":"-"},"content":" return issues.filter((issue) \u003d\u003e {"},{"lineNumber":290,"author":{"gitId":"-"},"content":" return issue.duplicateOf \u003d\u003d\u003d parentIssue.id;"},{"lineNumber":291,"author":{"gitId":"-"},"content":" });"},{"lineNumber":292,"author":{"gitId":"-"},"content":" })"},{"lineNumber":293,"author":{"gitId":"-"},"content":" );"},{"lineNumber":294,"author":{"gitId":"-"},"content":" }"},{"lineNumber":295,"author":{"gitId":"-"},"content":""},{"lineNumber":296,"author":{"gitId":"-"},"content":" reset(resetSessionId: boolean) {"},{"lineNumber":297,"author":{"gitId":"-"},"content":" if (resetSessionId) {"},{"lineNumber":298,"author":{"gitId":"-"},"content":" this.sessionId \u003d undefined;"},{"lineNumber":299,"author":{"gitId":"-"},"content":" }"},{"lineNumber":300,"author":{"gitId":"-"},"content":""},{"lineNumber":301,"author":{"gitId":"-"},"content":" this.issues \u003d undefined;"},{"lineNumber":302,"author":{"gitId":"-"},"content":" this.issues$.next(new Array\u003cIssue\u003e());"},{"lineNumber":303,"author":{"gitId":"-"},"content":""},{"lineNumber":304,"author":{"gitId":"-"},"content":" this.stopPollIssues();"},{"lineNumber":305,"author":{"gitId":"-"},"content":" this.isLoading.complete();"},{"lineNumber":306,"author":{"gitId":"-"},"content":" this.isLoading \u003d new BehaviorSubject\u003cboolean\u003e(false);"},{"lineNumber":307,"author":{"gitId":"-"},"content":" }"},{"lineNumber":308,"author":{"gitId":"-"},"content":""},{"lineNumber":309,"author":{"gitId":"-"},"content":" private initializeData(): Observable\u003cIssue[]\u003e {"},{"lineNumber":310,"author":{"gitId":"-"},"content":" const issuesAPICallsByFilter: Array\u003cObservable\u003cArray\u003cGithubIssue\u003e\u003e\u003e \u003d [];"},{"lineNumber":311,"author":{"gitId":"-"},"content":""},{"lineNumber":312,"author":{"gitId":"-"},"content":" switch (IssuesFilter[this.phaseService.currentPhase][this.userService.currentUser.role]) {"},{"lineNumber":313,"author":{"gitId":"-"},"content":" case FILTER.FilterByCreator:"},{"lineNumber":314,"author":{"gitId":"-"},"content":" issuesAPICallsByFilter.push("},{"lineNumber":315,"author":{"gitId":"-"},"content":" this.githubService.fetchIssuesGraphql(new RestGithubIssueFilter({ creator: this.userService.currentUser.loginId }))"},{"lineNumber":316,"author":{"gitId":"-"},"content":" );"},{"lineNumber":317,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":318,"author":{"gitId":"-"},"content":" case FILTER.FilterByTeam: // Only student has this filter"},{"lineNumber":319,"author":{"gitId":"-"},"content":" issuesAPICallsByFilter.push("},{"lineNumber":320,"author":{"gitId":"-"},"content":" this.githubService.fetchIssuesGraphqlByTeam("},{"lineNumber":321,"author":{"gitId":"-"},"content":" this.createLabel(\u0027tutorial\u0027, this.userService.currentUser.team.tutorialClassId),"},{"lineNumber":322,"author":{"gitId":"-"},"content":" this.createLabel(\u0027team\u0027, this.userService.currentUser.team.teamId),"},{"lineNumber":323,"author":{"gitId":"-"},"content":" new RestGithubIssueFilter({})"},{"lineNumber":324,"author":{"gitId":"-"},"content":" )"},{"lineNumber":325,"author":{"gitId":"-"},"content":" );"},{"lineNumber":326,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":327,"author":{"gitId":"-"},"content":" case FILTER.FilterByTeamAssigned: // Only for Tutors and Admins"},{"lineNumber":328,"author":{"gitId":"-"},"content":" const allocatedTeams \u003d this.userService.currentUser.allocatedTeams;"},{"lineNumber":329,"author":{"gitId":"-"},"content":" allocatedTeams.forEach((team) \u003d\u003e {"},{"lineNumber":330,"author":{"gitId":"-"},"content":" issuesAPICallsByFilter.push("},{"lineNumber":331,"author":{"gitId":"-"},"content":" this.githubService.fetchIssuesGraphqlByTeam("},{"lineNumber":332,"author":{"gitId":"-"},"content":" this.createLabel(\u0027tutorial\u0027, team.tutorialClassId),"},{"lineNumber":333,"author":{"gitId":"-"},"content":" this.createLabel(\u0027team\u0027, team.teamId),"},{"lineNumber":334,"author":{"gitId":"-"},"content":" new RestGithubIssueFilter({})"},{"lineNumber":335,"author":{"gitId":"-"},"content":" )"},{"lineNumber":336,"author":{"gitId":"-"},"content":" );"},{"lineNumber":337,"author":{"gitId":"-"},"content":" });"},{"lineNumber":338,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":339,"author":{"gitId":"-"},"content":" case FILTER.NoFilter:"},{"lineNumber":340,"author":{"gitId":"-"},"content":" issuesAPICallsByFilter.push(this.githubService.fetchIssuesGraphql(new RestGithubIssueFilter({})));"},{"lineNumber":341,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":342,"author":{"gitId":"-"},"content":" case FILTER.NoAccess:"},{"lineNumber":343,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":344,"author":{"gitId":"-"},"content":" return of([]);"},{"lineNumber":345,"author":{"gitId":"-"},"content":" }"},{"lineNumber":346,"author":{"gitId":"-"},"content":""},{"lineNumber":347,"author":{"gitId":"-"},"content":" // const issuesAPICallsByFilter \u003d filters.map(filter \u003d\u003e this.githubService.fetchIssuesGraphql(filter));"},{"lineNumber":348,"author":{"gitId":"-"},"content":" return forkJoin(issuesAPICallsByFilter).pipe("},{"lineNumber":349,"author":{"gitId":"-"},"content":" map((issuesByFilter: [][]) \u003d\u003e {"},{"lineNumber":350,"author":{"gitId":"-"},"content":" const fetchedIssueIds: Array\u003cNumber\u003e \u003d [];"},{"lineNumber":351,"author":{"gitId":"-"},"content":""},{"lineNumber":352,"author":{"gitId":"-"},"content":" for (const issues of issuesByFilter) {"},{"lineNumber":353,"author":{"gitId":"-"},"content":" for (const issue of issues) {"},{"lineNumber":354,"author":{"gitId":"-"},"content":" fetchedIssueIds.push(this.createIssueModel(issue).id);"},{"lineNumber":355,"author":{"gitId":"-"},"content":" this.createAndSaveIssueModel(issue);"},{"lineNumber":356,"author":{"gitId":"-"},"content":" }"},{"lineNumber":357,"author":{"gitId":"-"},"content":" }"},{"lineNumber":358,"author":{"gitId":"-"},"content":""},{"lineNumber":359,"author":{"gitId":"-"},"content":" const outdatedIssueIds: Array\u003cNumber\u003e \u003d this.getOutdatedIssueIds(fetchedIssueIds);"},{"lineNumber":360,"author":{"gitId":"-"},"content":" this.deleteIssuesFromLocalStore(outdatedIssueIds);"},{"lineNumber":361,"author":{"gitId":"-"},"content":""},{"lineNumber":362,"author":{"gitId":"-"},"content":" return Object.values(this.issues);"},{"lineNumber":363,"author":{"gitId":"-"},"content":" })"},{"lineNumber":364,"author":{"gitId":"-"},"content":" );"},{"lineNumber":365,"author":{"gitId":"-"},"content":" }"},{"lineNumber":366,"author":{"gitId":"-"},"content":""},{"lineNumber":367,"author":{"gitId":"-"},"content":" private createAndSaveIssueModel(githubIssue: GithubIssue): boolean {"},{"lineNumber":368,"author":{"gitId":"-"},"content":" const issue \u003d this.createIssueModel(githubIssue);"},{"lineNumber":369,"author":{"gitId":"-"},"content":" this.updateLocalStore(issue);"},{"lineNumber":370,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":371,"author":{"gitId":"-"},"content":" }"},{"lineNumber":372,"author":{"gitId":"-"},"content":""},{"lineNumber":373,"author":{"gitId":"-"},"content":" private deleteIssuesFromLocalStore(ids: Array\u003cNumber\u003e): void {"},{"lineNumber":374,"author":{"gitId":"-"},"content":" ids.forEach((id: number) \u003d\u003e {"},{"lineNumber":375,"author":{"gitId":"-"},"content":" this.getIssue(id).subscribe((issue) \u003d\u003e this.deleteFromLocalStore(issue));"},{"lineNumber":376,"author":{"gitId":"-"},"content":" });"},{"lineNumber":377,"author":{"gitId":"-"},"content":" }"},{"lineNumber":378,"author":{"gitId":"-"},"content":""},{"lineNumber":379,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":380,"author":{"gitId":"-"},"content":" * Returns an array of outdated issue ids by comparing the ids of the recently"},{"lineNumber":381,"author":{"gitId":"-"},"content":" * fetched issues with the current issue ids in the local store"},{"lineNumber":382,"author":{"gitId":"-"},"content":" */"},{"lineNumber":383,"author":{"gitId":"-"},"content":" private getOutdatedIssueIds(fetchedIssueIds: Array\u003cNumber\u003e): Array\u003cNumber\u003e {"},{"lineNumber":384,"author":{"gitId":"-"},"content":" /*"},{"lineNumber":385,"author":{"gitId":"-"},"content":" Ignore for first fetch or ignore if there is no fetch result"},{"lineNumber":386,"author":{"gitId":"-"},"content":""},{"lineNumber":387,"author":{"gitId":"-"},"content":" We also have to ignore for no fetch result as the cache might return a"},{"lineNumber":388,"author":{"gitId":"-"},"content":" 304 reponse with no differences in issues, resulting in the fetchIssueIds"},{"lineNumber":389,"author":{"gitId":"-"},"content":" to be empty"},{"lineNumber":390,"author":{"gitId":"-"},"content":" */"},{"lineNumber":391,"author":{"gitId":"-"},"content":" if (this.issues \u003d\u003d\u003d undefined || !fetchedIssueIds.length) {"},{"lineNumber":392,"author":{"gitId":"-"},"content":" return [];"},{"lineNumber":393,"author":{"gitId":"-"},"content":" }"},{"lineNumber":394,"author":{"gitId":"-"},"content":""},{"lineNumber":395,"author":{"gitId":"-"},"content":" const fetchedIssueIdsSet \u003d new Set\u003cNumber\u003e(fetchedIssueIds);"},{"lineNumber":396,"author":{"gitId":"-"},"content":""},{"lineNumber":397,"author":{"gitId":"-"},"content":" const result \u003d Object.keys(this.issues)"},{"lineNumber":398,"author":{"gitId":"-"},"content":" .map((x) \u003d\u003e +x)"},{"lineNumber":399,"author":{"gitId":"-"},"content":" .filter((issueId) \u003d\u003e !fetchedIssueIdsSet.has(issueId));"},{"lineNumber":400,"author":{"gitId":"-"},"content":""},{"lineNumber":401,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":402,"author":{"gitId":"-"},"content":" }"},{"lineNumber":403,"author":{"gitId":"-"},"content":""},{"lineNumber":404,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":405,"author":{"gitId":"-"},"content":" * Given an issue model, create the necessary labels for github."},{"lineNumber":406,"author":{"gitId":"-"},"content":" */"},{"lineNumber":407,"author":{"gitId":"-"},"content":" private createLabelsForIssue(issue: Issue): string[] {"},{"lineNumber":408,"author":{"gitId":"-"},"content":" const result \u003d [];"},{"lineNumber":409,"author":{"gitId":"-"},"content":""},{"lineNumber":410,"author":{"gitId":"-"},"content":" if (this.phaseService.currentPhase !\u003d\u003d Phase.phaseBugReporting \u0026\u0026 this.phaseService.currentPhase !\u003d\u003d Phase.phaseTesterResponse) {"},{"lineNumber":411,"author":{"gitId":"-"},"content":" const studentTeam \u003d issue.teamAssigned.id.split(\u0027-\u0027);"},{"lineNumber":412,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027tutorial\u0027, `${studentTeam[0]}-${studentTeam[1]}`), this.createLabel(\u0027team\u0027, studentTeam[2]));"},{"lineNumber":413,"author":{"gitId":"-"},"content":" }"},{"lineNumber":414,"author":{"gitId":"-"},"content":""},{"lineNumber":415,"author":{"gitId":"-"},"content":" if (issue.severity) {"},{"lineNumber":416,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027severity\u0027, issue.severity));"},{"lineNumber":417,"author":{"gitId":"-"},"content":" }"},{"lineNumber":418,"author":{"gitId":"-"},"content":""},{"lineNumber":419,"author":{"gitId":"-"},"content":" if (issue.type) {"},{"lineNumber":420,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027type\u0027, issue.type));"},{"lineNumber":421,"author":{"gitId":"-"},"content":" }"},{"lineNumber":422,"author":{"gitId":"-"},"content":""},{"lineNumber":423,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (issue.response) {"},{"lineNumber":424,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" result.push(this.createLabel(\u0027response\u0027, issue.response));"},{"lineNumber":425,"author":{"gitId":"-"},"content":" }"},{"lineNumber":426,"author":{"gitId":"-"},"content":""},{"lineNumber":427,"author":{"gitId":"-"},"content":" if (issue.duplicated) {"},{"lineNumber":428,"author":{"gitId":"-"},"content":" result.push(\u0027duplicate\u0027);"},{"lineNumber":429,"author":{"gitId":"-"},"content":" }"},{"lineNumber":430,"author":{"gitId":"-"},"content":""},{"lineNumber":431,"author":{"gitId":"-"},"content":" if (issue.status) {"},{"lineNumber":432,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027status\u0027, issue.status));"},{"lineNumber":433,"author":{"gitId":"-"},"content":" }"},{"lineNumber":434,"author":{"gitId":"-"},"content":""},{"lineNumber":435,"author":{"gitId":"-"},"content":" if (issue.pending) {"},{"lineNumber":436,"author":{"gitId":"-"},"content":" if (+issue.pending \u003e 0) {"},{"lineNumber":437,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027pending\u0027, issue.pending));"},{"lineNumber":438,"author":{"gitId":"-"},"content":" }"},{"lineNumber":439,"author":{"gitId":"-"},"content":" }"},{"lineNumber":440,"author":{"gitId":"-"},"content":""},{"lineNumber":441,"author":{"gitId":"-"},"content":" if (issue.unsure) {"},{"lineNumber":442,"author":{"gitId":"-"},"content":" result.push(\u0027unsure\u0027);"},{"lineNumber":443,"author":{"gitId":"-"},"content":" }"},{"lineNumber":444,"author":{"gitId":"-"},"content":""},{"lineNumber":445,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":446,"author":{"gitId":"-"},"content":" }"},{"lineNumber":447,"author":{"gitId":"-"},"content":""},{"lineNumber":448,"author":{"gitId":"-"},"content":" private createLabel(prepend: string, value: string) {"},{"lineNumber":449,"author":{"gitId":"-"},"content":" return `${prepend}.${value}`;"},{"lineNumber":450,"author":{"gitId":"-"},"content":" }"},{"lineNumber":451,"author":{"gitId":"-"},"content":""},{"lineNumber":452,"author":{"gitId":"-"},"content":" private extractTeamIdFromGithubIssue(githubIssue: GithubIssue): string {"},{"lineNumber":453,"author":{"gitId":"-"},"content":" return githubIssue.findLabel(GithubLabel.LABELS.tutorial).concat(\u0027-\u0027).concat(githubIssue.findLabel(GithubLabel.LABELS.team));"},{"lineNumber":454,"author":{"gitId":"-"},"content":" }"},{"lineNumber":455,"author":{"gitId":"-"},"content":""},{"lineNumber":456,"author":{"gitId":"-"},"content":" private createIssueModel(githubIssue: GithubIssue): Issue {"},{"lineNumber":457,"author":{"gitId":"-"},"content":" let issue: Issue;"},{"lineNumber":458,"author":{"gitId":"-"},"content":""},{"lineNumber":459,"author":{"gitId":"-"},"content":" switch (this.phaseService.currentPhase) {"},{"lineNumber":460,"author":{"gitId":"-"},"content":" case Phase.phaseBugReporting:"},{"lineNumber":461,"author":{"gitId":"-"},"content":" issue \u003d Issue.createPhaseBugReportingIssue(githubIssue);"},{"lineNumber":462,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":463,"author":{"gitId":"-"},"content":" case Phase.phaseTeamResponse:"},{"lineNumber":464,"author":{"gitId":"-"},"content":" issue \u003d Issue.createPhaseTeamResponseIssue(githubIssue, this.dataService.getTeam(this.extractTeamIdFromGithubIssue(githubIssue)));"},{"lineNumber":465,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":466,"author":{"gitId":"-"},"content":" case Phase.phaseTesterResponse:"},{"lineNumber":467,"author":{"gitId":"-"},"content":" issue \u003d Issue.createPhaseTesterResponseIssue(githubIssue);"},{"lineNumber":468,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":469,"author":{"gitId":"-"},"content":" case Phase.phaseModeration:"},{"lineNumber":470,"author":{"gitId":"-"},"content":" issue \u003d Issue.createPhaseModerationIssue(githubIssue, this.dataService.getTeam(this.extractTeamIdFromGithubIssue(githubIssue)));"},{"lineNumber":471,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":472,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":473,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":474,"author":{"gitId":"-"},"content":" }"},{"lineNumber":475,"author":{"gitId":"-"},"content":""},{"lineNumber":476,"author":{"gitId":"-"},"content":" if (issue.parseError) {"},{"lineNumber":477,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.error(\u0027IssueService: \u0027 + issue.parseError);"},{"lineNumber":478,"author":{"gitId":"-"},"content":" }"},{"lineNumber":479,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":480,"author":{"gitId":"-"},"content":" }"},{"lineNumber":481,"author":{"gitId":"-"},"content":""},{"lineNumber":482,"author":{"gitId":"-"},"content":" setIssueTeamFilter(filterValue: string) {"},{"lineNumber":483,"author":{"gitId":"-"},"content":" if (filterValue) {"},{"lineNumber":484,"author":{"gitId":"-"},"content":" this.issueTeamFilter \u003d filterValue;"},{"lineNumber":485,"author":{"gitId":"-"},"content":" }"},{"lineNumber":486,"author":{"gitId":"-"},"content":" }"},{"lineNumber":487,"author":{"gitId":"-"},"content":""},{"lineNumber":488,"author":{"gitId":"-"},"content":" setSessionId(sessionId: string) {"},{"lineNumber":489,"author":{"gitId":"-"},"content":" this.sessionId \u003d sessionId;"},{"lineNumber":490,"author":{"gitId":"-"},"content":" }"},{"lineNumber":491,"author":{"gitId":"-"},"content":""},{"lineNumber":492,"author":{"gitId":"-"},"content":" getIssueTeamFilter(): string {"},{"lineNumber":493,"author":{"gitId":"-"},"content":" return this.issueTeamFilter;"},{"lineNumber":494,"author":{"gitId":"-"},"content":" }"},{"lineNumber":495,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":8,"-":487}},{"path":"src/app/core/services/label.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Observable, pipe, UnaryFunction } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../models/github/github-label.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Label } from \u0027../models/label.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"/* The threshold to decide if color is dark or light."},{"lineNumber":10,"author":{"gitId":"-"},"content":"A higher threshold value will result in more colors determined to be \"dark\"."},{"lineNumber":11,"author":{"gitId":"-"},"content":"W3C recommendation is 0.179, but 0.184 is chosen so that some colors (like bright red)"},{"lineNumber":12,"author":{"gitId":"-"},"content":"are considered dark (Github too consider them dark) */"},{"lineNumber":13,"author":{"gitId":"-"},"content":"const COLOR_DARKNESS_THRESHOLD \u003d 0.184;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"const COLOR_BLACK \u003d \u0027000000\u0027; // Dark color for text with light background"},{"lineNumber":16,"author":{"gitId":"-"},"content":"const COLOR_WHITE \u003d \u0027ffffff\u0027; // Light color for text with dark background"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":"const COLOR_RED_PALE \u003d \u0027ffe0e0\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"const COLOR_RED_LIGHT \u003d \u0027ffcccc\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"const COLOR_RED \u003d \u0027ff9999\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"const COLOR_RED_DARK \u003d \u0027ff6666\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":"const COLOR_PURPLE_LIGHT \u003d \u0027d966ff\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":"const COLOR_PURPLE \u003d \u00279900cc\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":"const COLOR_GREEN \u003d \u002700802b\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"const COLOR_ORANGE_PALE \u003d \u0027ffebcc\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"const COLOR_ORANGE_LIGHT \u003d \u0027ffcc80\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"const COLOR_ORANGE \u003d \u0027ff9900\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":"const COLOR_SILVER \u003d \u0027a6a6a6\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":"const COLOR_BLUE \u003d \u00270066ff\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"const DISPLAY_NAME_SEVERITY \u003d \u0027Severity\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":"const DISPLAY_NAME_BUG_TYPE \u003d \u0027Bug Type\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":"const DISPLAY_NAME_RESPONSE \u003d \u0027Response\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":"// The HTML template definition of selected labels are hard-coded here, move to a config file in the future"},{"lineNumber":40,"author":{"gitId":"-"},"content":"const VERY_LOW_DEFINITION \u003d"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u0027\u003cp\u003eA flaw that is \u003cmark\u003epurely cosmetic\u003c/mark\u003e and \u003cmark\u003edoes not affect usage\u003c/mark\u003e. For example, \u0027 +"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u0027\u003cul\u003e\u0027 +"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u0027\u003cli\u003etypo issues\u003c/li\u003e\u0027 +"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u0027\u003cli\u003espacing issues\u003c/li\u003e\u0027 +"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u0027\u003cli\u003elayout issues\u003c/li\u003e\u0027 +"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u0027\u003cli\u003ecolor issues\u003c/li\u003e\u0027 +"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u0027\u003cli\u003efont issues\u003c/li\u003e\u0027 +"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u0027\u003c/ul\u003e\u0027 +"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \"in the docs or the UI that doesn\u0027t affect usage.\u003c/p\u003e\";"},{"lineNumber":50,"author":{"gitId":"-"},"content":"const LOW_DEFINITION \u003d"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u0027\u003cp\u003eA flaw that is unlikely to affect normal operations of the product. \u0027 +"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u0027Appears only in very rare situations and causes a minor inconvenience only.\u003c/p\u003e\u0027;"},{"lineNumber":53,"author":{"gitId":"-"},"content":"const MEDIUM_DEFINITION \u003d \u0027\u003cp\u003eA flaw that causes occasional inconvenience to some users but they can \u0027 + \u0027continue to use the product.\u003c/p\u003e\u0027;"},{"lineNumber":54,"author":{"gitId":"-"},"content":"const HIGH_DEFINITION \u003d"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u0027\u003cp\u003eA flaw that affects most users and causes major problems for users.\u0027 + \u0027i.e., makes the product almost unusable for most users.\u003c/p\u003e\u0027;"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":"const FUNCTIONALITY_BUG_DEFINITION \u003d \u0027\u003cp\u003eA functionality does not work as specified/expected.\u003c/p\u003e\u0027;"},{"lineNumber":58,"author":{"gitId":"-"},"content":"const FEATURE_FLAW_DEFINITION \u003d"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u0027\u003cp\u003eSome functionality missing from a feature delivered in the current version in \u0027 +"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u0027a way that the feature becomes less useful to the intended target user for \u003ci\u003enormal\u003c/i\u003e usage. \u0027 +"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \"i.e., the feature is not \u0027complete\u0027.\\nIn other words, an acceptance-testing bug that falls within \" +"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u0027the scope of the current version features. These issues are counted against the \u003ci\u003eproduct design\u003c/i\u003e aspect \u0027 +"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u0027of the project.\u003c/p\u003e\u0027;"},{"lineNumber":64,"author":{"gitId":"-"},"content":"const DOCUMENTATION_BUG_DEFINITION \u003d"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0027\u003cp\u003eA flaw in the documentation \u0027 + \u0027\u003cspan style\u003d\"color:grey;\"\u003ee.g., a missing step, a wrong instruction, typos\u003c/span\u003e\u003c/p\u003e\u0027;"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":"const ACCEPTED_DEFINITION \u003d \u0027\u003cp\u003eYou accept it as a bug.\u003c/p\u003e\u0027;"},{"lineNumber":68,"author":{"gitId":"-"},"content":"const NOT_IN_SCOPE_DEFINITION \u003d"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u0027\u003cp\u003eIt is a valid issue but not something the team should be penalized for \u0027 +"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u0027\u003cspan style\u003d\"color:grey;\"\u003ee.g., it was not related to features delivered in this version\u003c/span\u003e.\u003c/p\u003e\u0027;"},{"lineNumber":71,"author":{"gitId":"-"},"content":"const REJECTED_DEFINITION \u003d"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \"\u003cp\u003eWhat tester treated as a bug is in fact the expected behavior (from the user\u0027s point of view), or the tester \" +"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u0027was mistaken in some other way.\u003c/p\u003e\u0027;"},{"lineNumber":74,"author":{"gitId":"-"},"content":"const CANNOT_REPRODUCE_DEFINITION \u003d \u0027\u003cp\u003eYou are unable to reproduce the behavior reported in the bug after multiple tries.\u003c/p\u003e\u0027;"},{"lineNumber":75,"author":{"gitId":"-"},"content":"const ISSUE_UNCLEAR_DEFINITION \u003d \u0027\u003cp\u003eThe issue description is not clear.\u003c/p\u003e\u0027;"},{"lineNumber":76,"author":{"gitId":"-"},"content":"const UNDEFINED_DEFINITION \u003d null;"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":"export const LABEL_DEFINITIONS \u003d {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" severityVeryLow: VERY_LOW_DEFINITION,"},{"lineNumber":80,"author":{"gitId":"-"},"content":" severityLow: LOW_DEFINITION,"},{"lineNumber":81,"author":{"gitId":"-"},"content":" severityMedium: MEDIUM_DEFINITION,"},{"lineNumber":82,"author":{"gitId":"-"},"content":" severityHigh: HIGH_DEFINITION,"},{"lineNumber":83,"author":{"gitId":"-"},"content":" typeFunctionalityBug: FUNCTIONALITY_BUG_DEFINITION,"},{"lineNumber":84,"author":{"gitId":"-"},"content":" typeFeatureFlaw: FEATURE_FLAW_DEFINITION,"},{"lineNumber":85,"author":{"gitId":"-"},"content":" typeDocumentationBug: DOCUMENTATION_BUG_DEFINITION,"},{"lineNumber":86,"author":{"gitId":"-"},"content":" responseAccepted: ACCEPTED_DEFINITION,"},{"lineNumber":87,"author":{"gitId":"-"},"content":" responseNotInScope: NOT_IN_SCOPE_DEFINITION,"},{"lineNumber":88,"author":{"gitId":"-"},"content":" responseRejected: REJECTED_DEFINITION,"},{"lineNumber":89,"author":{"gitId":"-"},"content":" responseCannotProduce: CANNOT_REPRODUCE_DEFINITION,"},{"lineNumber":90,"author":{"gitId":"-"},"content":" responseIssueUnclear: ISSUE_UNCLEAR_DEFINITION,"},{"lineNumber":91,"author":{"gitId":"-"},"content":" undefined: UNDEFINED_DEFINITION"},{"lineNumber":92,"author":{"gitId":"-"},"content":"};"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":"const REQUIRED_LABELS \u003d {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" severity: {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" VeryLow: new Label(\u0027severity\u0027, \u0027VeryLow\u0027, COLOR_RED_PALE, VERY_LOW_DEFINITION),"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Low: new Label(\u0027severity\u0027, \u0027Low\u0027, COLOR_RED_LIGHT, LOW_DEFINITION),"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Medium: new Label(\u0027severity\u0027, \u0027Medium\u0027, COLOR_RED, MEDIUM_DEFINITION),"},{"lineNumber":99,"author":{"gitId":"-"},"content":" High: new Label(\u0027severity\u0027, \u0027High\u0027, COLOR_RED_DARK, HIGH_DEFINITION)"},{"lineNumber":100,"author":{"gitId":"-"},"content":" },"},{"lineNumber":101,"author":{"gitId":"-"},"content":" type: {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" DocumentationBug: new Label(\u0027type\u0027, \u0027DocumentationBug\u0027, COLOR_PURPLE_LIGHT, DOCUMENTATION_BUG_DEFINITION),"},{"lineNumber":103,"author":{"gitId":"-"},"content":" FeatureFlaw: new Label(\u0027type\u0027, \u0027FeatureFlaw\u0027, COLOR_PURPLE_LIGHT, FEATURE_FLAW_DEFINITION),"},{"lineNumber":104,"author":{"gitId":"-"},"content":" FunctionalityBug: new Label(\u0027type\u0027, \u0027FunctionalityBug\u0027, COLOR_PURPLE, FUNCTIONALITY_BUG_DEFINITION)"},{"lineNumber":105,"author":{"gitId":"-"},"content":" },"},{"lineNumber":106,"author":{"gitId":"-"},"content":" response: {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Accepted: new Label(\u0027response\u0027, \u0027Accepted\u0027, COLOR_GREEN, ACCEPTED_DEFINITION),"},{"lineNumber":108,"author":{"gitId":"-"},"content":" CannotReproduce: new Label(\u0027response\u0027, \u0027CannotReproduce\u0027, COLOR_ORANGE_PALE, CANNOT_REPRODUCE_DEFINITION),"},{"lineNumber":109,"author":{"gitId":"-"},"content":" IssueUnclear: new Label(\u0027response\u0027, \u0027IssueUnclear\u0027, COLOR_ORANGE_LIGHT, ISSUE_UNCLEAR_DEFINITION),"},{"lineNumber":110,"author":{"gitId":"-"},"content":" NotInScope: new Label(\u0027response\u0027, \u0027NotInScope\u0027, COLOR_ORANGE_LIGHT, NOT_IN_SCOPE_DEFINITION),"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Rejected: new Label(\u0027response\u0027, \u0027Rejected\u0027, COLOR_ORANGE, REJECTED_DEFINITION)"},{"lineNumber":112,"author":{"gitId":"-"},"content":" },"},{"lineNumber":113,"author":{"gitId":"-"},"content":" status: {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Done: new Label(\u0027status\u0027, \u0027Done\u0027, COLOR_SILVER),"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Incomplete: new Label(\u0027status\u0027, \u0027Incomplete\u0027, COLOR_BLACK)"},{"lineNumber":116,"author":{"gitId":"-"},"content":" },"},{"lineNumber":117,"author":{"gitId":"-"},"content":" others: {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" duplicate: new Label(undefined, \u0027duplicate\u0027, COLOR_BLUE)"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":"};"},{"lineNumber":121,"author":{"gitId":"-"},"content":""},{"lineNumber":122,"author":{"gitId":"-"},"content":"export type LabelCategory \u003d keyof typeof REQUIRED_LABELS;"},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":125,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":126,"author":{"gitId":"-"},"content":"})"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Responsible for retrieval and parsing and syncing of label data"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * from the GitHub repository for the CATcher application."},{"lineNumber":131,"author":{"gitId":"-"},"content":" */"},{"lineNumber":132,"author":{"gitId":"-"},"content":"export class LabelService {"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private static severityLabels: Label[] \u003d Object.values(REQUIRED_LABELS.severity);"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private static typeLabels: Label[] \u003d Object.values(REQUIRED_LABELS.type);"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private static responseLabels: Label[] \u003d Object.values(REQUIRED_LABELS.response);"},{"lineNumber":136,"author":{"gitId":"-"},"content":" private static statusLabels: Label[] \u003d Object.values(REQUIRED_LABELS.status);"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private static otherLabels: Label[] \u003d Object.values(REQUIRED_LABELS.others);"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" private static allLabelArrays \u003d {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" severity: LabelService.severityLabels,"},{"lineNumber":141,"author":{"gitId":"-"},"content":" type: LabelService.typeLabels,"},{"lineNumber":142,"author":{"gitId":"-"},"content":" response: LabelService.responseLabels,"},{"lineNumber":143,"author":{"gitId":"-"},"content":" status: LabelService.statusLabels,"},{"lineNumber":144,"author":{"gitId":"-"},"content":" others: LabelService.otherLabels"},{"lineNumber":145,"author":{"gitId":"-"},"content":" };"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private static testerLabelArrays \u003d {"},{"lineNumber":147,"author":{"gitId":"-"},"content":" severity: LabelService.severityLabels,"},{"lineNumber":148,"author":{"gitId":"-"},"content":" type: LabelService.typeLabels"},{"lineNumber":149,"author":{"gitId":"-"},"content":" };"},{"lineNumber":150,"author":{"gitId":"-"},"content":""},{"lineNumber":151,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor(private githubService: GithubService, private logger: LoggingService) {}"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" public static getRequiredLabelsAsArray(needAllLabels: boolean): Label[] {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" let requiredLabels: Label[] \u003d [];"},{"lineNumber":155,"author":{"gitId":"-"},"content":""},{"lineNumber":156,"author":{"gitId":"-"},"content":" const labels \u003d needAllLabels ? Object.values(this.allLabelArrays) : Object.values(this.testerLabelArrays);"},{"lineNumber":157,"author":{"gitId":"-"},"content":" labels.map((label) \u003d\u003e (requiredLabels \u003d requiredLabels.concat(label)));"},{"lineNumber":158,"author":{"gitId":"-"},"content":" return requiredLabels;"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }"},{"lineNumber":160,"author":{"gitId":"-"},"content":""},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Updates the required label to be in sync with the labels on the GitHub repository."},{"lineNumber":163,"author":{"gitId":"-"},"content":" */"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public static updateRequiredLabelColor(labelColor: string, label: Label) {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" const labelArray \u003d LabelService.allLabelArrays[label.labelCategory];"},{"lineNumber":166,"author":{"gitId":"-"},"content":""},{"lineNumber":167,"author":{"gitId":"-"},"content":" if (labelArray) {"},{"lineNumber":168,"author":{"gitId":"-"},"content":" const requiredLabel \u003d labelArray.find((requiredLabel: Label) \u003d\u003e requiredLabel.labelValue \u003d\u003d\u003d label.labelValue);"},{"lineNumber":169,"author":{"gitId":"-"},"content":" requiredLabel.labelColor \u003d labelColor;"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }"},{"lineNumber":172,"author":{"gitId":"-"},"content":""},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns an custom operator which helps to"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * synchronise the labels in our application"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * with the remote repository."},{"lineNumber":177,"author":{"gitId":"-"},"content":" */"},{"lineNumber":178,"author":{"gitId":"-"},"content":" syncLabels(needAllLabels: boolean): UnaryFunction\u003cObservable\u003cboolean\u003e, Observable\u003cany\u003e\u003e {"},{"lineNumber":179,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return pipe(mergeMap(() \u003d\u003e this.synchronizeRemoteLabels(needAllLabels)));"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }"},{"lineNumber":181,"author":{"gitId":"-"},"content":""},{"lineNumber":182,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":183,"author":{"gitId":"-"},"content":" * Synchronizes the labels in github with those required by the application."},{"lineNumber":184,"author":{"gitId":"-"},"content":" */"},{"lineNumber":185,"author":{"gitId":"-"},"content":" synchronizeRemoteLabels(needAllLabels: boolean): Observable\u003cany\u003e {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return this.githubService.fetchAllLabels().pipe("},{"lineNumber":187,"author":{"gitId":"-"},"content":" map((githubLabels) \u003d\u003e githubLabels.map(this.toLabel)),"},{"lineNumber":188,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.ensureRepoHasRequiredLabels(response, LabelService.getRequiredLabelsAsArray(needAllLabels));"},{"lineNumber":190,"author":{"gitId":"-"},"content":" return response;"},{"lineNumber":191,"author":{"gitId":"-"},"content":" })"},{"lineNumber":192,"author":{"gitId":"-"},"content":" );"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }"},{"lineNumber":194,"author":{"gitId":"-"},"content":""},{"lineNumber":195,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":196,"author":{"gitId":"-"},"content":" * Returns all the labels of a certain type (e.g severity)"},{"lineNumber":197,"author":{"gitId":"-"},"content":" * @param attributeName: the type of the label"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * @return an array of label of that type"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */"},{"lineNumber":200,"author":{"gitId":"-"},"content":" getLabelList(attributeName: string): Label[] {"},{"lineNumber":201,"author":{"gitId":"-"},"content":" switch (attributeName) {"},{"lineNumber":202,"author":{"gitId":"-"},"content":" case \u0027severity\u0027:"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return LabelService.severityLabels;"},{"lineNumber":204,"author":{"gitId":"-"},"content":" case \u0027type\u0027:"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return LabelService.typeLabels;"},{"lineNumber":206,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // case \u0027responseTag\u0027:"},{"lineNumber":207,"author":{"gitId":"-"},"content":" case \u0027response\u0027:"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return LabelService.responseLabels;"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }"},{"lineNumber":210,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`LabelService: Unfiltered Attribute ${attributeName} in getLabelList`);"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }"},{"lineNumber":212,"author":{"gitId":"-"},"content":""},{"lineNumber":213,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":214,"author":{"gitId":"-"},"content":" * Returns a title for the label type"},{"lineNumber":215,"author":{"gitId":"-"},"content":" * @param attributeName: the type of the label"},{"lineNumber":216,"author":{"gitId":"-"},"content":" */"},{"lineNumber":217,"author":{"gitId":"-"},"content":" getLabelTitle(attributeName: string): string {"},{"lineNumber":218,"author":{"gitId":"-"},"content":" switch (attributeName) {"},{"lineNumber":219,"author":{"gitId":"-"},"content":" case \u0027severity\u0027:"},{"lineNumber":220,"author":{"gitId":"-"},"content":" return DISPLAY_NAME_SEVERITY;"},{"lineNumber":221,"author":{"gitId":"-"},"content":" case \u0027type\u0027:"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return DISPLAY_NAME_BUG_TYPE;"},{"lineNumber":223,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" case \u0027response\u0027:"},{"lineNumber":224,"author":{"gitId":"-"},"content":" return DISPLAY_NAME_RESPONSE;"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }"},{"lineNumber":226,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`LabelService: Unfiltered Attribute ${attributeName} in getLabelTitle`);"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }"},{"lineNumber":228,"author":{"gitId":"-"},"content":""},{"lineNumber":229,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * Returns the color of the label by searching a list of"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * all available labels."},{"lineNumber":232,"author":{"gitId":"-"},"content":" * @param labelValue: the label\u0027s value (e.g Low / Medium / High / ...)"},{"lineNumber":233,"author":{"gitId":"-"},"content":" */"},{"lineNumber":234,"author":{"gitId":"-"},"content":" getColorOfLabel(labelCategory: LabelCategory, labelValue: string): string {"},{"lineNumber":235,"author":{"gitId":"-"},"content":" if (labelValue \u003d\u003d\u003d \u0027\u0027 || !LabelService.allLabelArrays[labelCategory]) {"},{"lineNumber":236,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`LabelService: Unfiltered Attribute, ${labelValue}: ${labelCategory} in getColorOfLabel`);"},{"lineNumber":237,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":238,"author":{"gitId":"-"},"content":" return COLOR_WHITE;"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }"},{"lineNumber":240,"author":{"gitId":"-"},"content":""},{"lineNumber":241,"author":{"gitId":"-"},"content":" const existingLabel \u003d LabelService.allLabelArrays[labelCategory].find((label: Label) \u003d\u003e label.labelValue \u003d\u003d\u003d labelValue);"},{"lineNumber":242,"author":{"gitId":"-"},"content":""},{"lineNumber":243,"author":{"gitId":"-"},"content":" if (existingLabel \u003d\u003d\u003d undefined || existingLabel.labelColor \u003d\u003d\u003d undefined) {"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return COLOR_WHITE;"},{"lineNumber":245,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":246,"author":{"gitId":"-"},"content":" return existingLabel.labelColor;"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }"},{"lineNumber":249,"author":{"gitId":"-"},"content":""},{"lineNumber":250,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":251,"author":{"gitId":"-"},"content":" * Returns the definition of the label by searching a list of"},{"lineNumber":252,"author":{"gitId":"-"},"content":" * all available labels."},{"lineNumber":253,"author":{"gitId":"-"},"content":" * @param labelValue: the label\u0027s value (e.g Low/ Medium/ High / ...)."},{"lineNumber":254,"author":{"gitId":"-"},"content":" * @param labelCategory: the label\u0027s category (e.g Type/ Severity / ...)."},{"lineNumber":255,"author":{"gitId":"-"},"content":" */"},{"lineNumber":256,"author":{"gitId":"-"},"content":" getLabelDefinition(labelValue: string, labelCategory: string): string {"},{"lineNumber":257,"author":{"gitId":"-"},"content":" if (labelValue \u003d\u003d\u003d \u0027\u0027 || labelValue \u003d\u003d\u003d null || labelCategory \u003d\u003d\u003d \u0027\u0027 || labelCategory \u003d\u003d\u003d null) {"},{"lineNumber":258,"author":{"gitId":"-"},"content":" return null;"},{"lineNumber":259,"author":{"gitId":"-"},"content":" }"},{"lineNumber":260,"author":{"gitId":"-"},"content":""},{"lineNumber":261,"author":{"gitId":"-"},"content":" const existingLabel \u003d LabelService.getRequiredLabelsAsArray(true).find("},{"lineNumber":262,"author":{"gitId":"-"},"content":" (label) \u003d\u003e label.labelValue \u003d\u003d\u003d labelValue \u0026\u0026 label.labelCategory \u003d\u003d\u003d labelCategory"},{"lineNumber":263,"author":{"gitId":"-"},"content":" );"},{"lineNumber":264,"author":{"gitId":"-"},"content":""},{"lineNumber":265,"author":{"gitId":"-"},"content":" if (existingLabel \u003d\u003d\u003d undefined || existingLabel.labelDefinition \u003d\u003d\u003d undefined) {"},{"lineNumber":266,"author":{"gitId":"-"},"content":" return null;"},{"lineNumber":267,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":268,"author":{"gitId":"-"},"content":" return existingLabel.labelDefinition;"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }"},{"lineNumber":270,"author":{"gitId":"-"},"content":" }"},{"lineNumber":271,"author":{"gitId":"-"},"content":""},{"lineNumber":272,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":273,"author":{"gitId":"-"},"content":" * Ensures that the repo has the required labels."},{"lineNumber":274,"author":{"gitId":"-"},"content":" * Compares the actual labels in the repo with the required labels. If an required label is missing,"},{"lineNumber":275,"author":{"gitId":"-"},"content":" * it is added to the repo. If the required label exists but the label color is not as expected,"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * the color is updated. Does not delete actual labels that do not match required labels."},{"lineNumber":277,"author":{"gitId":"-"},"content":" * i.e., the repo might have more labels than the required labels after this operation."},{"lineNumber":278,"author":{"gitId":"-"},"content":" * @param actualLabels: labels in the repo."},{"lineNumber":279,"author":{"gitId":"-"},"content":" * @param requiredLabels: required labels."},{"lineNumber":280,"author":{"gitId":"-"},"content":" */"},{"lineNumber":281,"author":{"gitId":"-"},"content":" private ensureRepoHasRequiredLabels(actualLabels: Label[], requiredLabels: Label[]): void {"},{"lineNumber":282,"author":{"gitId":"-"},"content":" requiredLabels.forEach((label) \u003d\u003e {"},{"lineNumber":283,"author":{"gitId":"-"},"content":" // Finds for a label that has the same name as a required label."},{"lineNumber":284,"author":{"gitId":"-"},"content":" const nameMatchedLabels: Label[] \u003d actualLabels.filter((remoteLabel) \u003d\u003e remoteLabel.getFormattedName() \u003d\u003d\u003d label.getFormattedName());"},{"lineNumber":285,"author":{"gitId":"-"},"content":""},{"lineNumber":286,"author":{"gitId":"-"},"content":" if (nameMatchedLabels.length \u003d\u003d\u003d 0) {"},{"lineNumber":287,"author":{"gitId":"-"},"content":" // Create new Label (Could not find a label with the same name \u0026 category)"},{"lineNumber":288,"author":{"gitId":"-"},"content":" this.githubService.createLabel(label.getFormattedName(), label.labelColor);"},{"lineNumber":289,"author":{"gitId":"-"},"content":" } else if (nameMatchedLabels.length \u003d\u003d\u003d 1) {"},{"lineNumber":290,"author":{"gitId":"-"},"content":" if (nameMatchedLabels[0].equals(label)) {"},{"lineNumber":291,"author":{"gitId":"-"},"content":" // the label exists exactly as expected -\u003e do nothing"},{"lineNumber":292,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":293,"author":{"gitId":"-"},"content":" // the label exists but the color does not match -\u003e update the required label\u0027s color to the one in github"},{"lineNumber":294,"author":{"gitId":"-"},"content":" LabelService.updateRequiredLabelColor(nameMatchedLabels[0].labelColor, label);"},{"lineNumber":295,"author":{"gitId":"-"},"content":" }"},{"lineNumber":296,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":297,"author":{"gitId":"-"},"content":" throw new Error(\u0027Unexpected error: the repo has multiple labels with the same name \u0027 + label.getFormattedName());"},{"lineNumber":298,"author":{"gitId":"-"},"content":" }"},{"lineNumber":299,"author":{"gitId":"-"},"content":" });"},{"lineNumber":300,"author":{"gitId":"-"},"content":" }"},{"lineNumber":301,"author":{"gitId":"-"},"content":""},{"lineNumber":302,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":303,"author":{"gitId":"-"},"content":" * Converts a GithubLabel object to Label object."},{"lineNumber":304,"author":{"gitId":"-"},"content":" */"},{"lineNumber":305,"author":{"gitId":"-"},"content":" toLabel(githubLabel: GithubLabel) {"},{"lineNumber":306,"author":{"gitId":"-"},"content":" let labelCategory: string;"},{"lineNumber":307,"author":{"gitId":"-"},"content":" let labelValue: string;"},{"lineNumber":308,"author":{"gitId":"-"},"content":""},{"lineNumber":309,"author":{"gitId":"-"},"content":" const containsDotRegex \u003d /\\./g;"},{"lineNumber":310,"author":{"gitId":"-"},"content":" const rawName: string \u003d String(githubLabel.name);"},{"lineNumber":311,"author":{"gitId":"-"},"content":" [labelCategory, labelValue] \u003d containsDotRegex.test(rawName) ? githubLabel.name.split(\u0027.\u0027) : [undefined, rawName];"},{"lineNumber":312,"author":{"gitId":"-"},"content":""},{"lineNumber":313,"author":{"gitId":"-"},"content":" const labelColor \u003d githubLabel.color;"},{"lineNumber":314,"author":{"gitId":"-"},"content":" const labelDefinition: string \u003d String(githubLabel.description);"},{"lineNumber":315,"author":{"gitId":"-"},"content":""},{"lineNumber":316,"author":{"gitId":"-"},"content":" return new Label(labelCategory, labelValue, labelColor, labelDefinition);"},{"lineNumber":317,"author":{"gitId":"-"},"content":" }"},{"lineNumber":318,"author":{"gitId":"-"},"content":""},{"lineNumber":319,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":320,"author":{"gitId":"-"},"content":" * Returns true if the given color is considered \"dark\""},{"lineNumber":321,"author":{"gitId":"-"},"content":" * The color is considered \"dark\" if its luminance is less than COLOR_DARKNESS_THRESHOLD"},{"lineNumber":322,"author":{"gitId":"-"},"content":" * @param inputColor: the color"},{"lineNumber":323,"author":{"gitId":"-"},"content":" */"},{"lineNumber":324,"author":{"gitId":"-"},"content":" isDarkColor(inputColor: string): boolean {"},{"lineNumber":325,"author":{"gitId":"-"},"content":" const COLOR \u003d inputColor.charAt(0) \u003d\u003d\u003d \u0027#\u0027 ? inputColor.substring(1, 7) : inputColor;"},{"lineNumber":326,"author":{"gitId":"-"},"content":" const R \u003d parseInt(COLOR.substring(0, 2), 16);"},{"lineNumber":327,"author":{"gitId":"-"},"content":" const G \u003d parseInt(COLOR.substring(2, 4), 16);"},{"lineNumber":328,"author":{"gitId":"-"},"content":" const B \u003d parseInt(COLOR.substring(4, 6), 16);"},{"lineNumber":329,"author":{"gitId":"-"},"content":" const RGB \u003d [R / 255, G / 255, B / 255];"},{"lineNumber":330,"author":{"gitId":"-"},"content":" const LINEAR_RGB \u003d RGB.map((col) \u003d\u003e {"},{"lineNumber":331,"author":{"gitId":"-"},"content":" if (col \u003c\u003d 0.03928) {"},{"lineNumber":332,"author":{"gitId":"-"},"content":" return col / 12.92;"},{"lineNumber":333,"author":{"gitId":"-"},"content":" }"},{"lineNumber":334,"author":{"gitId":"-"},"content":" return Math.pow((col + 0.055) / 1.055, 2.4);"},{"lineNumber":335,"author":{"gitId":"-"},"content":" });"},{"lineNumber":336,"author":{"gitId":"-"},"content":" // Calculate the luminance of the color"},{"lineNumber":337,"author":{"gitId":"-"},"content":" const LUMINANCE \u003d 0.2126 * LINEAR_RGB[0] + 0.7152 * LINEAR_RGB[1] + 0.0722 * LINEAR_RGB[2];"},{"lineNumber":338,"author":{"gitId":"-"},"content":" // The color is \"dark\" if the luminance is lower than the threshold"},{"lineNumber":339,"author":{"gitId":"-"},"content":" return LUMINANCE \u003c COLOR_DARKNESS_THRESHOLD;"},{"lineNumber":340,"author":{"gitId":"-"},"content":" }"},{"lineNumber":341,"author":{"gitId":"-"},"content":""},{"lineNumber":342,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":343,"author":{"gitId":"-"},"content":" * Returns a css style for the label to use"},{"lineNumber":344,"author":{"gitId":"-"},"content":" * @param color: the color of the label"},{"lineNumber":345,"author":{"gitId":"-"},"content":" * @return the style with background-color in rgb"},{"lineNumber":346,"author":{"gitId":"-"},"content":" * @throws exception if input is an invalid color code"},{"lineNumber":347,"author":{"gitId":"-"},"content":" */"},{"lineNumber":348,"author":{"gitId":"-"},"content":" setLabelStyle(color: string, display: string \u003d \u0027inline-flex\u0027) {"},{"lineNumber":349,"author":{"gitId":"-"},"content":" let textColor: string;"},{"lineNumber":350,"author":{"gitId":"-"},"content":""},{"lineNumber":351,"author":{"gitId":"-"},"content":" textColor \u003d this.isDarkColor(color) ? COLOR_WHITE : COLOR_BLACK;"},{"lineNumber":352,"author":{"gitId":"-"},"content":""},{"lineNumber":353,"author":{"gitId":"-"},"content":" const styles \u003d {"},{"lineNumber":354,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${color}`,"},{"lineNumber":355,"author":{"gitId":"-"},"content":" \u0027border-radius\u0027: \u00273px\u0027,"},{"lineNumber":356,"author":{"gitId":"-"},"content":" cursor: \u0027default\u0027,"},{"lineNumber":357,"author":{"gitId":"-"},"content":" padding: \u00273px\u0027,"},{"lineNumber":358,"author":{"gitId":"-"},"content":" color: `#${textColor}`,"},{"lineNumber":359,"author":{"gitId":"-"},"content":" \u0027font-weight\u0027: \u0027410\u0027,"},{"lineNumber":360,"author":{"gitId":"-"},"content":" display: display"},{"lineNumber":361,"author":{"gitId":"-"},"content":" };"},{"lineNumber":362,"author":{"gitId":"-"},"content":""},{"lineNumber":363,"author":{"gitId":"-"},"content":" return styles;"},{"lineNumber":364,"author":{"gitId":"-"},"content":" }"},{"lineNumber":365,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":10,"-":355}},{"path":"src/app/core/services/loading.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { DOCUMENT } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import {"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ComponentFactory,"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ComponentFactoryResolver,"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ComponentRef,"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" Inject,"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" Injectable,"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" Injector,"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" OnDestroy,"},{"lineNumber":10,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" Renderer2,"},{"lineNumber":11,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ViewContainerRef"},{"lineNumber":12,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"} from \u0027@angular/core\u0027;"},{"lineNumber":13,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ThemePalette } from \u0027@angular/material/core\u0027;"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatProgressSpinnerDefaultOptions, MatSpinner, ProgressSpinnerMode } from \u0027@angular/material/progress-spinner\u0027;"},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { BehaviorSubject } from \u0027rxjs\u0027;"},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { pairwise } from \u0027rxjs/operators\u0027;"},{"lineNumber":17,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":18,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"// Use a builder pattern to build the type of spinner we want our"},{"lineNumber":19,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"// loading spinner to display. This listens to prompts given by components"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"// to either display or hide the spinner, by inserting it directly into the"},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"// container that it has to be inserted into."},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"@Injectable({"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"})"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"export class LoadingService implements OnDestroy {"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private isLoading \u003d new BehaviorSubject\u003cboolean\u003e(false);"},{"lineNumber":27,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" readonly spinnerFactory: ComponentFactory\u003cMatSpinner\u003e;"},{"lineNumber":28,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" spinnerContainerRef: ViewContainerRef | null \u003d null;"},{"lineNumber":29,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" spinnerComponentRef: ComponentRef\u003cMatSpinner\u003e | null \u003d null;"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private animationMode: ProgressSpinnerMode \u003d \u0027indeterminate\u0027;"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private options?: MatProgressSpinnerDefaultOptions;"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private spinnerTheme: ThemePalette \u003d \u0027primary\u0027;"},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private classList: string[] \u003d [];"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor("},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" readonly componentFactoryResolver: ComponentFactoryResolver,"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" readonly injector: Injector,"},{"lineNumber":39,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" @Inject(DOCUMENT) private document: Document"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ) {"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerFactory \u003d this.componentFactoryResolver.resolveComponentFactory(MatSpinner);"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Subscribe to changes"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isLoading"},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .pipe(pairwise())"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .subscribe(([previousIsLoading, currentIsLoading]) \u003d\u003e this.onIsLoadingChange(previousIsLoading, currentIsLoading));"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ngOnDestroy(): void {"},{"lineNumber":49,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isLoading.complete();"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.detachSpinnerFromDom();"},{"lineNumber":51,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerContainerRef \u003d null;"},{"lineNumber":52,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":53,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" addAnimationMode(animationMode: ProgressSpinnerMode) {"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.animationMode \u003d animationMode;"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this;"},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":58,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":59,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" addSpinnerOptions(options: MatProgressSpinnerDefaultOptions) {"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.options \u003d options;"},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this;"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" addViewContainerRef(spinnerContainerRef: ViewContainerRef) {"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (spinnerContainerRef \u003d\u003d\u003d undefined) {"},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this;"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":68,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerContainerRef \u003d spinnerContainerRef;"},{"lineNumber":69,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this;"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":71,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" addTheme(theme: ThemePalette) {"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerTheme \u003d theme;"},{"lineNumber":74,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this;"},{"lineNumber":75,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" addCssClasses(classNames: string[]) {"},{"lineNumber":78,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.classList \u003d [];"},{"lineNumber":79,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.classList.push(...classNames);"},{"lineNumber":80,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this;"},{"lineNumber":81,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":82,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":83,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" showLoader(): void {"},{"lineNumber":84,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isLoading.next(true);"},{"lineNumber":85,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":86,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":87,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" hideLoader(): void {"},{"lineNumber":88,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isLoading.next(false);"},{"lineNumber":89,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":90,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":91,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Event listener that attaches or detaches the spinner from"},{"lineNumber":92,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // the DOM based on"},{"lineNumber":93,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private onIsLoadingChange(previousIsLoading: boolean, currentIsLoading: boolean): void {"},{"lineNumber":94,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // No change, don\u0027t edit the dom"},{"lineNumber":95,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (previousIsLoading \u003d\u003d\u003d currentIsLoading) {"},{"lineNumber":96,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return;"},{"lineNumber":97,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":98,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":99,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (currentIsLoading) {"},{"lineNumber":100,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this.attachSpinnerToDom();"},{"lineNumber":101,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":102,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":103,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this.detachSpinnerFromDom();"},{"lineNumber":104,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":105,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":106,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Attaches spinner to the DOM"},{"lineNumber":107,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private attachSpinnerToDom(): void {"},{"lineNumber":108,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (this.spinnerComponentRef !\u003d\u003d null) {"},{"lineNumber":109,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return;"},{"lineNumber":110,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":111,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":112,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const injector \u003d this.getInjector();"},{"lineNumber":113,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":114,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const spinnerRef \u003d this.createSpinner(injector);"},{"lineNumber":115,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":116,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (!this.isAttachableToDocument()) {"},{"lineNumber":117,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerContainerRef.insert(spinnerRef.hostView);"},{"lineNumber":118,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" } else if (spinnerRef.location.nativeElement instanceof Node) {"},{"lineNumber":119,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.document.body.appendChild(spinnerRef.location.nativeElement);"},{"lineNumber":120,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":121,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":122,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" spinnerRef.changeDetectorRef.detectChanges();"},{"lineNumber":123,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":124,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerComponentRef \u003d spinnerRef;"},{"lineNumber":125,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":126,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":127,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Detaches spinner from DOM"},{"lineNumber":128,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private detachSpinnerFromDom(): void {"},{"lineNumber":129,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (this.spinnerComponentRef \u003d\u003d\u003d null) {"},{"lineNumber":130,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return;"},{"lineNumber":131,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":132,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":133,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (!this.isAttachableToDocument()) {"},{"lineNumber":134,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerContainerRef.remove();"},{"lineNumber":135,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" } else if (this.spinnerComponentRef.location.nativeElement instanceof Node) {"},{"lineNumber":136,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.document.body.removeChild(this.spinnerComponentRef.location.nativeElement);"},{"lineNumber":137,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":138,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":139,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerComponentRef.destroy();"},{"lineNumber":140,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.spinnerComponentRef \u003d null;"},{"lineNumber":141,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return;"},{"lineNumber":142,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":143,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":144,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Gets the Injector to be used to create the spinner"},{"lineNumber":145,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private getInjector(): Injector {"},{"lineNumber":146,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (this.isAttachableToDocument()) {"},{"lineNumber":147,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this.injector;"},{"lineNumber":148,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":149,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this.spinnerContainerRef.injector;"},{"lineNumber":150,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":151,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":152,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Checks if the spinner is to be attached to the Document or a"},{"lineNumber":153,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // container"},{"lineNumber":154,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private isAttachableToDocument(): boolean {"},{"lineNumber":155,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this.spinnerContainerRef \u003d\u003d\u003d null;"},{"lineNumber":156,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":157,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":158,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Creates and formats the spinner to the specification provided"},{"lineNumber":159,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private createSpinner(injector: Injector) {"},{"lineNumber":160,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const spinnerRef \u003d this.spinnerFactory.create(injector);"},{"lineNumber":161,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (this.options) {"},{"lineNumber":162,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" spinnerRef.instance.diameter \u003d this.options.diameter;"},{"lineNumber":163,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" spinnerRef.instance.strokeWidth \u003d this.options.strokeWidth;"},{"lineNumber":164,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":165,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" spinnerRef.instance.mode \u003d this.animationMode;"},{"lineNumber":166,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" spinnerRef.instance.color \u003d this.spinnerTheme;"},{"lineNumber":167,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const renderer \u003d spinnerRef.injector.get(Renderer2);"},{"lineNumber":168,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" for (const classname of this.classList) {"},{"lineNumber":169,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" renderer.addClass(spinnerRef.location.nativeElement, classname);"},{"lineNumber":170,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":171,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return spinnerRef;"},{"lineNumber":172,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":173,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":173}},{"path":"src/app/core/services/logging.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { downloadAsTextFile } from \u0027../../shared/lib/file-download\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":6,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":7,"author":{"gitId":"-"},"content":"})"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Responsible for logging events and errors while the application is"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * running to ease debugging for CATcher developers and maintainers."},{"lineNumber":12,"author":{"gitId":"-"},"content":" */"},{"lineNumber":13,"author":{"gitId":"-"},"content":"export class LoggingService {"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private logger: Console;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private isInSession \u003d false;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private readonly LOG_KEY \u003d \u0027CATcher-Log\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private readonly LOG_FILE_NAME \u003d \u0027CATcher-log.txt\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public readonly LOG_START_HEADER \u003d `\u003d\u003d\u003d\u003d\u003d\u003d New CATcher v${AppConfig.version} Session Log \u003d\u003d\u003d\u003d\u003d\u003d`;"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public readonly LOG_COUNT_LIMIT \u003d 4;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public readonly SESSION_LOG_SEPARATOR \u003d \u0027\\n\u0027.repeat(2); // More new-lines added for clarity."},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor() {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" this.logger \u003d console;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.startSession();"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.isInSession \u003d false;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Configures loggging Session if Logging Service is not"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * in session."},{"lineNumber":35,"author":{"gitId":"-"},"content":" */"},{"lineNumber":36,"author":{"gitId":"-"},"content":" startSession() {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // Prevents the OAuth Pop-up window from being able to"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // start a session."},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (window.opener \u0026\u0026 window.opener !\u003d\u003d window) {"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!this.isInSession) {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.isInSession \u003d true;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.initializeLogCache();"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" private initializeLogCache() {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.setCachedLog(this.getTrimmedLogCache(this.getCachedLog(), this.LOG_COUNT_LIMIT));"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Trims the existing Log in the browser\u0027s cache to a select number"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * of Sessions if necessary."},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param sessionCount The number of Session Logs to preserve in the cache"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private getTrimmedLogCache(currentLog: string, sessionCount: number): string {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" const currentDateTime \u003d new Date().toLocaleString();"},{"lineNumber":59,"author":{"gitId":"-"},"content":" const logHeaderWithDateTime \u003d `${this.LOG_START_HEADER}\\n${currentDateTime}`;"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Check if Trimming is Necessary"},{"lineNumber":62,"author":{"gitId":"-"},"content":" const numberOfSessions: number \u003d"},{"lineNumber":63,"author":{"gitId":"-"},"content":" currentLog \u003d\u003d null"},{"lineNumber":64,"author":{"gitId":"-"},"content":" ? 0"},{"lineNumber":65,"author":{"gitId":"-"},"content":" : currentLog.split(\u0027\\n\u0027).filter((currentLogLine: string) \u003d\u003e currentLogLine.includes(this.LOG_START_HEADER)).length;"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (numberOfSessions \u003d\u003d\u003d 0) {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return logHeaderWithDateTime;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (numberOfSessions \u003c sessionCount) {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return `${currentLog}${this.SESSION_LOG_SEPARATOR}${logHeaderWithDateTime}`;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" const separatedSessionLogs: string[] \u003d currentLog"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .split(`${this.LOG_START_HEADER}`)"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .filter((line: string) \u003d\u003e !!line)"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .map((line: string) \u003d\u003e `${this.LOG_START_HEADER}\\n${line.trim()}`);"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" separatedSessionLogs.splice(0, separatedSessionLogs.length - sessionCount + 1);"},{"lineNumber":81,"author":{"gitId":"-"},"content":" separatedSessionLogs.push(`${logHeaderWithDateTime}`);"},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" return separatedSessionLogs.join(this.SESSION_LOG_SEPARATOR);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" getCachedLog(): string {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return localStorage.getItem(this.LOG_KEY);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" private setCachedLog(updatedLog: string): void {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" localStorage.setItem(this.LOG_KEY, updatedLog);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":" private updateLog(...updatedLog: any[]): void {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" this.setCachedLog(`${this.getCachedLog()}\\n${updatedLog.toString()}`);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" exportLogFile() {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" const log: string \u003d this.getCachedLog();"},{"lineNumber":100,"author":{"gitId":"-"},"content":" downloadAsTextFile(this.LOG_FILE_NAME, log);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":""},{"lineNumber":103,"author":{"gitId":"-"},"content":" info(...params: any[]) {"},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.updateLog(params);"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.logger.info(params);"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" error(...params: any[]) {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.updateLog(params);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.logger.error(params);"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }"},{"lineNumber":112,"author":{"gitId":"-"},"content":""},{"lineNumber":113,"author":{"gitId":"-"},"content":" warn(...params: any[]) {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.updateLog(params);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.logger.warn(params);"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }"},{"lineNumber":117,"author":{"gitId":"-"},"content":""},{"lineNumber":118,"author":{"gitId":"-"},"content":" debug(...params: any[]) {"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (AppConfig.production) {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Log file will not be updated to keep log messages short"},{"lineNumber":123,"author":{"gitId":"-"},"content":" this.logger.debug(params);"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":123}},{"path":"src/app/core/services/mocks/mock.auth.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgZone } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Title } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { BehaviorSubject } from \u0027rxjs\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { uuid } from \u0027../../../shared/lib/uuid\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { DataService } from \u0027../data.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../github.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../githubevent.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../issue.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../logging.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../phase.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../user.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"export enum AuthState {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u0027NotAuthenticated\u0027,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u0027AwaitingAuthentication\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u0027ConfirmOAuthUser\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u0027Authenticated\u0027"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":23,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":24,"author":{"gitId":"-"},"content":"})"},{"lineNumber":25,"author":{"gitId":"-"},"content":"export class MockAuthService {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" authStateSource \u003d new BehaviorSubject(AuthState.NotAuthenticated);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" currentAuthState \u003d this.authStateSource.asObservable();"},{"lineNumber":28,"author":{"gitId":"-"},"content":" accessToken \u003d new BehaviorSubject(undefined);"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":31,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private ngZone: NgZone,"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private dataService: DataService,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private titleService: Title,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private logger: LoggingService"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Will store the OAuth token."},{"lineNumber":45,"author":{"gitId":"-"},"content":" */"},{"lineNumber":46,"author":{"gitId":"-"},"content":" storeOAuthAccessToken(token: string) {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.githubService.storeOAuthAccessToken(token);"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.accessToken.next(token);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" reset(): void {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.accessToken.next(undefined);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e this.router.navigate([\u0027\u0027]));"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" logOut(): void {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.githubService.reset();"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.userService.reset();"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.issueService.reset(true);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.phaseService.reset();"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.dataService.reset();"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.githubEventService.reset();"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.logger.reset();"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.setLandingPageTitle();"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.issueService.setIssueTeamFilter(\u0027All Teams\u0027);"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.reset();"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":" isAuthenticated(): boolean {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this.authStateSource.getValue() \u003d\u003d\u003d AuthState.Authenticated;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" changeAuthState(newAuthState: AuthState) {"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (newAuthState \u003d\u003d\u003d AuthState.Authenticated) {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" const sessionId \u003d `${Date.now()}-${uuid()}`;"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.issueService.setSessionId(sessionId);"},{"lineNumber":78,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`MockAuthService: Successfully authenticated with session: ${sessionId}`);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.authStateSource.next(newAuthState);"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" setTitleWithPhaseDetail(): void {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" const appSetting \u003d require(\u0027../../../../../package.json\u0027);"},{"lineNumber":85,"author":{"gitId":"-"},"content":" const title \u003d `${appSetting.name} ${appSetting.version} - ${this.phaseService.getPhaseDetail()}`;"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.titleService.setTitle(title);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" setLandingPageTitle(): void {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" const appSetting \u003d require(\u0027../../../../../package.json\u0027);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" const title \u003d `${appSetting.name} ${appSetting.version}`;"},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.titleService.setTitle(title);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Will start the Github OAuth web flow process by issuing \u0027FabricatedToken\u0027."},{"lineNumber":97,"author":{"gitId":"-"},"content":" */"},{"lineNumber":98,"author":{"gitId":"-"},"content":" startOAuthProcess() {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.accessToken.next(\u0027FabricatedToken\u0027);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":100}},{"path":"src/app/core/services/mocks/mock.issue.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { BehaviorSubject, forkJoin, Observable, of, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { catchError, map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { generateIssueWithRandomData } from \u0027../../../../../tests/constants/githubissue.constants\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027../../models/comment.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubComment } from \u0027../../models/github/github-comment.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027../../models/github/github-issue.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../../models/github/github-label.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { HiddenData } from \u0027../../models/hidden-data.model\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { IssueDispute } from \u0027../../models/issue-dispute.model\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { Issue, Issues, STATUS } from \u0027../../models/issue.model\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../models/phase.model\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { DataService } from \u0027../data.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../github.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../phase.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":19,"author":{"gitId":"-"},"content":"})"},{"lineNumber":20,"author":{"gitId":"-"},"content":"export class MockIssueService {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" static readonly POLL_INTERVAL \u003d 5000; // 5 seconds"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" issues: Issues;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" issues$: BehaviorSubject\u003cIssue[]\u003e;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" private sessionId: string;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private issueTeamFilter \u003d \u0027All Teams\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private issuesPollSubscription: Subscription;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /** Whether the IssueService is downloading the data from Github*/"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public isLoading \u003d new BehaviorSubject\u003cboolean\u003e(false);"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService, private phaseService: PhaseService, private dataService: DataService) {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.issues$ \u003d new BehaviorSubject(new Array\u003cIssue\u003e());"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Loads Issues and Prevents polling during testing."},{"lineNumber":38,"author":{"gitId":"-"},"content":" */"},{"lineNumber":39,"author":{"gitId":"-"},"content":" startPollIssues() {"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (this.issuesPollSubscription \u003d\u003d\u003d undefined) {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (this.issues$.getValue().length \u003d\u003d\u003d 0) {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.isLoading.next(true);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.issuesPollSubscription \u003d of(this.reloadAllIssues()).subscribe((result) \u003d\u003e this.isLoading.next(false));"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" stopPollIssues() {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (this.issuesPollSubscription) {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.issuesPollSubscription.unsubscribe();"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.issuesPollSubscription \u003d undefined;"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Simply returns the existing issue, to simulate polling."},{"lineNumber":58,"author":{"gitId":"-"},"content":" */"},{"lineNumber":59,"author":{"gitId":"-"},"content":" pollIssue(issueId: number): Observable\u003cIssue\u003e {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return of(this.issues[issueId]);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" reloadAllIssues() {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this.initializeData();"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" getIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (this.issues \u003d\u003d\u003d undefined) {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this.getLatestIssue(id);"},{"lineNumber":70,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return of(this.issues[id]);"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" getLatestIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return this.githubService.fetchIssueGraphql(id).pipe("},{"lineNumber":77,"author":{"gitId":"-"},"content":" map((response: GithubIssue) \u003d\u003e {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.createAndSaveIssueModel(response);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return this.issues[id];"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":81,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return of(this.issues[id]);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" })"},{"lineNumber":84,"author":{"gitId":"-"},"content":" );"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" createIssue(title: string, description: string, severity: string, type: string): Observable\u003cIssue\u003e {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" const labelsArray \u003d [this.createLabel(\u0027severity\u0027, severity), this.createLabel(\u0027type\u0027, type)];"},{"lineNumber":89,"author":{"gitId":"-"},"content":" const hiddenData \u003d new Map([[\u0027session\u0027, this.sessionId]]);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" const issueDescription \u003d HiddenData.embedDataIntoString(description, hiddenData);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this.githubService"},{"lineNumber":92,"author":{"gitId":"-"},"content":" .createIssue(title, issueDescription, labelsArray)"},{"lineNumber":93,"author":{"gitId":"-"},"content":" .pipe(map((response: GithubIssue) \u003d\u003e this.createIssueModel(response)));"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }"},{"lineNumber":95,"author":{"gitId":"-"},"content":""},{"lineNumber":96,"author":{"gitId":"-"},"content":" updateIssue(issue: Issue): Observable\u003cIssue\u003e {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" const assignees \u003d this.phaseService.currentPhase \u003d\u003d\u003d Phase.phaseModeration ? [] : issue.assignees;"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return this.githubService"},{"lineNumber":99,"author":{"gitId":"-"},"content":" .updateIssue(issue.id, issue.title, this.createGithubIssueDescription(issue), this.createLabelsForIssue(issue), assignees)"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":101,"author":{"gitId":"-"},"content":" map((response: GithubIssue) \u003d\u003e {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" response.comments \u003d issue.githubComments;"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return this.createIssueModel(response);"},{"lineNumber":104,"author":{"gitId":"-"},"content":" })"},{"lineNumber":105,"author":{"gitId":"-"},"content":" );"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" updateIssueWithComment(issue: Issue, issueComment: IssueComment): Observable\u003cIssue\u003e {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return this.githubService.updateIssueComment(issueComment).pipe("},{"lineNumber":110,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((updatedComment: GithubComment) \u003d\u003e {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" issue.githubComments \u003d [updatedComment, ...issue.githubComments.filter((c) \u003d\u003e c.id !\u003d\u003d updatedComment.id)];"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return this.updateIssue(issue);"},{"lineNumber":113,"author":{"gitId":"-"},"content":" })"},{"lineNumber":114,"author":{"gitId":"-"},"content":" );"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":" updateTesterResponse(issue: Issue, issueComment: IssueComment): Observable\u003cIssue\u003e {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" const isTesterResponseExist \u003d this.issues[issue.id].testerResponses;"},{"lineNumber":119,"author":{"gitId":"-"},"content":" const commentApiToCall \u003d isTesterResponseExist"},{"lineNumber":120,"author":{"gitId":"-"},"content":" ? this.githubService.updateIssueComment(issueComment)"},{"lineNumber":121,"author":{"gitId":"-"},"content":" : this.githubService.createIssueComment(issue.id, issueComment.description);"},{"lineNumber":122,"author":{"gitId":"-"},"content":""},{"lineNumber":123,"author":{"gitId":"-"},"content":" const issueClone \u003d issue.clone(this.phaseService.currentPhase);"},{"lineNumber":124,"author":{"gitId":"-"},"content":" issueClone.status \u003d STATUS.Done;"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":" return forkJoin([commentApiToCall, this.updateIssue(issueClone)]).pipe("},{"lineNumber":127,"author":{"gitId":"-"},"content":" map((responses) \u003d\u003e {"},{"lineNumber":128,"author":{"gitId":"-"},"content":" const [githubComment, issue] \u003d responses;"},{"lineNumber":129,"author":{"gitId":"-"},"content":" issue.updateTesterResponse(githubComment);"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" })"},{"lineNumber":132,"author":{"gitId":"-"},"content":" );"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }"},{"lineNumber":134,"author":{"gitId":"-"},"content":""},{"lineNumber":135,"author":{"gitId":"-"},"content":" updateTutorResponse(issue: Issue, issueComment: IssueComment): Observable\u003cIssue\u003e {"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return forkJoin([this.githubService.updateIssueComment(issueComment), this.updateIssue(issue)]).pipe("},{"lineNumber":137,"author":{"gitId":"-"},"content":" map((responses) \u003d\u003e {"},{"lineNumber":138,"author":{"gitId":"-"},"content":" const [githubComment, issue] \u003d responses;"},{"lineNumber":139,"author":{"gitId":"-"},"content":" issue.updateDispute(githubComment);"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":141,"author":{"gitId":"-"},"content":" })"},{"lineNumber":142,"author":{"gitId":"-"},"content":" );"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }"},{"lineNumber":144,"author":{"gitId":"-"},"content":""},{"lineNumber":145,"author":{"gitId":"-"},"content":" createTeamResponse(issue: Issue): Observable\u003cIssue\u003e {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" const teamResponse \u003d issue.createGithubTeamResponse();"},{"lineNumber":147,"author":{"gitId":"-"},"content":" return this.githubService.createIssueComment(issue.id, teamResponse).pipe("},{"lineNumber":148,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((githubComment: GithubComment) \u003d\u003e {"},{"lineNumber":149,"author":{"gitId":"-"},"content":" issue.githubComments \u003d [githubComment, ...issue.githubComments.filter((c) \u003d\u003e c.id !\u003d\u003d githubComment.id)];"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return this.updateIssue(issue);"},{"lineNumber":151,"author":{"gitId":"-"},"content":" })"},{"lineNumber":152,"author":{"gitId":"-"},"content":" );"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }"},{"lineNumber":154,"author":{"gitId":"-"},"content":""},{"lineNumber":155,"author":{"gitId":"-"},"content":" createTutorResponse(issue: Issue, response: string): Observable\u003cIssue\u003e {"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return forkJoin([this.githubService.createIssueComment(issue.id, response), this.updateIssue(issue)]).pipe("},{"lineNumber":157,"author":{"gitId":"-"},"content":" map((responses) \u003d\u003e {"},{"lineNumber":158,"author":{"gitId":"-"},"content":" const [githubComment, issue] \u003d responses;"},{"lineNumber":159,"author":{"gitId":"-"},"content":" issue.updateDispute(githubComment);"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return issue;"},{"lineNumber":161,"author":{"gitId":"-"},"content":" })"},{"lineNumber":162,"author":{"gitId":"-"},"content":" );"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }"},{"lineNumber":164,"author":{"gitId":"-"},"content":""},{"lineNumber":165,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * This function will create a github representation of issue\u0027s description. Given the issue model, it will piece together the different"},{"lineNumber":167,"author":{"gitId":"-"},"content":" * attributes to create the github\u0027s description."},{"lineNumber":168,"author":{"gitId":"-"},"content":" *"},{"lineNumber":169,"author":{"gitId":"-"},"content":" */"},{"lineNumber":170,"author":{"gitId":"-"},"content":" private createGithubIssueDescription(issue: Issue): string {"},{"lineNumber":171,"author":{"gitId":"-"},"content":" switch (this.phaseService.currentPhase) {"},{"lineNumber":172,"author":{"gitId":"-"},"content":" case Phase.phaseModeration:"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return ("},{"lineNumber":174,"author":{"gitId":"-"},"content":" `# Issue Description\\n${issue.createGithubIssueDescription()}\\n# Team\\\u0027s Response\\n${issue.teamResponse}\\n ` +"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // `## State the duplicated issue here, if any\\n${issue.duplicateOf ? `Duplicate of #${issue.duplicateOf}` : `--`}\\n` +"},{"lineNumber":176,"author":{"gitId":"-"},"content":" `# Disputes\\n\\n${this.getIssueDisputeString(issue.issueDisputes)}\\n`"},{"lineNumber":177,"author":{"gitId":"-"},"content":" );"},{"lineNumber":178,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return issue.createGithubIssueDescription();"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }"},{"lineNumber":182,"author":{"gitId":"-"},"content":""},{"lineNumber":183,"author":{"gitId":"-"},"content":" private getIssueDisputeString(issueDisputes: IssueDispute[]): string {"},{"lineNumber":184,"author":{"gitId":"-"},"content":" let issueDisputeString \u003d \u0027\u0027;"},{"lineNumber":185,"author":{"gitId":"-"},"content":" for (const issueDispute of issueDisputes) {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" issueDisputeString +\u003d issueDispute.toString();"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }"},{"lineNumber":188,"author":{"gitId":"-"},"content":" return issueDisputeString;"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }"},{"lineNumber":190,"author":{"gitId":"-"},"content":""},{"lineNumber":191,"author":{"gitId":"-"},"content":" deleteIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return this.githubService.closeIssue(id).pipe("},{"lineNumber":193,"author":{"gitId":"-"},"content":" map((response: GithubIssue) \u003d\u003e {"},{"lineNumber":194,"author":{"gitId":"-"},"content":" const deletedIssue \u003d this.createIssueModel(response);"},{"lineNumber":195,"author":{"gitId":"-"},"content":" this.deleteFromLocalStore(deletedIssue);"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return deletedIssue;"},{"lineNumber":197,"author":{"gitId":"-"},"content":" })"},{"lineNumber":198,"author":{"gitId":"-"},"content":" );"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }"},{"lineNumber":200,"author":{"gitId":"-"},"content":""},{"lineNumber":201,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * This function will update the issue\u0027s state of the application. This function needs to be called whenever a issue is deleted."},{"lineNumber":203,"author":{"gitId":"-"},"content":" */"},{"lineNumber":204,"author":{"gitId":"-"},"content":" deleteFromLocalStore(issueToDelete: Issue) {"},{"lineNumber":205,"author":{"gitId":"-"},"content":" const { [issueToDelete.id]: issueToRemove, ...withoutIssueToRemove } \u003d this.issues;"},{"lineNumber":206,"author":{"gitId":"-"},"content":" this.issues \u003d withoutIssueToRemove;"},{"lineNumber":207,"author":{"gitId":"-"},"content":" this.issues$.next(Object.values(this.issues));"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }"},{"lineNumber":209,"author":{"gitId":"-"},"content":""},{"lineNumber":210,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * This function will update the issue\u0027s state of the application. This function needs to be called whenever a issue is added/updated."},{"lineNumber":212,"author":{"gitId":"-"},"content":" */"},{"lineNumber":213,"author":{"gitId":"-"},"content":" updateLocalStore(issueToUpdate: Issue) {"},{"lineNumber":214,"author":{"gitId":"-"},"content":" this.issues \u003d {"},{"lineNumber":215,"author":{"gitId":"-"},"content":" ...this.issues,"},{"lineNumber":216,"author":{"gitId":"-"},"content":" [issueToUpdate.id]: issueToUpdate"},{"lineNumber":217,"author":{"gitId":"-"},"content":" };"},{"lineNumber":218,"author":{"gitId":"-"},"content":" this.issues$.next(Object.values(this.issues));"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }"},{"lineNumber":220,"author":{"gitId":"-"},"content":""},{"lineNumber":221,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":222,"author":{"gitId":"-"},"content":" * Check whether the issue has been responded in the phase 2/3."},{"lineNumber":223,"author":{"gitId":"-"},"content":" */"},{"lineNumber":224,"author":{"gitId":"-"},"content":" hasTeamResponse(issueId: number): boolean {"},{"lineNumber":225,"author":{"gitId":"-"},"content":" return !!this.issues[issueId].teamResponse;"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }"},{"lineNumber":227,"author":{"gitId":"-"},"content":""},{"lineNumber":228,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Obtain an observable containing an array of issues that are duplicates of the parentIssue."},{"lineNumber":230,"author":{"gitId":"-"},"content":" */"},{"lineNumber":231,"author":{"gitId":"-"},"content":" getDuplicateIssuesFor(parentIssue: Issue): Observable\u003cIssue[]\u003e {"},{"lineNumber":232,"author":{"gitId":"-"},"content":" return this.issues$.pipe("},{"lineNumber":233,"author":{"gitId":"-"},"content":" map((issues) \u003d\u003e {"},{"lineNumber":234,"author":{"gitId":"-"},"content":" return issues.filter((issue) \u003d\u003e {"},{"lineNumber":235,"author":{"gitId":"-"},"content":" return issue.duplicateOf \u003d\u003d\u003d parentIssue.id;"},{"lineNumber":236,"author":{"gitId":"-"},"content":" });"},{"lineNumber":237,"author":{"gitId":"-"},"content":" })"},{"lineNumber":238,"author":{"gitId":"-"},"content":" );"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }"},{"lineNumber":240,"author":{"gitId":"-"},"content":""},{"lineNumber":241,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":242,"author":{"gitId":"-"},"content":" this.issues \u003d undefined;"},{"lineNumber":243,"author":{"gitId":"-"},"content":" this.sessionId \u003d undefined;"},{"lineNumber":244,"author":{"gitId":"-"},"content":" this.issues$.next(new Array\u003cIssue\u003e());"},{"lineNumber":245,"author":{"gitId":"-"},"content":""},{"lineNumber":246,"author":{"gitId":"-"},"content":" this.stopPollIssues();"},{"lineNumber":247,"author":{"gitId":"-"},"content":" this.isLoading.complete();"},{"lineNumber":248,"author":{"gitId":"-"},"content":" this.isLoading \u003d new BehaviorSubject\u003cboolean\u003e(false);"},{"lineNumber":249,"author":{"gitId":"-"},"content":" }"},{"lineNumber":250,"author":{"gitId":"-"},"content":""},{"lineNumber":251,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":252,"author":{"gitId":"-"},"content":" * Populates store with random issues depending on the current test phase."},{"lineNumber":253,"author":{"gitId":"-"},"content":" */"},{"lineNumber":254,"author":{"gitId":"-"},"content":" private initializeData(): Observable\u003cIssue[]\u003e {"},{"lineNumber":255,"author":{"gitId":"-"},"content":" if (this.issues !\u003d null) {"},{"lineNumber":256,"author":{"gitId":"-"},"content":" return of(Object.values(this.issues));"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }"},{"lineNumber":258,"author":{"gitId":"-"},"content":""},{"lineNumber":259,"author":{"gitId":"-"},"content":" const NUM_ISSUES \u003d 10;"},{"lineNumber":260,"author":{"gitId":"-"},"content":" const generatedIssues: Array\u003cGithubIssue\u003e \u003d [];"},{"lineNumber":261,"author":{"gitId":"-"},"content":""},{"lineNumber":262,"author":{"gitId":"-"},"content":" switch (this.phaseService.currentPhase) {"},{"lineNumber":263,"author":{"gitId":"-"},"content":" case Phase.phaseBugReporting:"},{"lineNumber":264,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c NUM_ISSUES; i++) {"},{"lineNumber":265,"author":{"gitId":"-"},"content":" generatedIssues.push(generateIssueWithRandomData());"},{"lineNumber":266,"author":{"gitId":"-"},"content":" }"},{"lineNumber":267,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }"},{"lineNumber":269,"author":{"gitId":"-"},"content":""},{"lineNumber":270,"author":{"gitId":"-"},"content":" for (const issue of generatedIssues) {"},{"lineNumber":271,"author":{"gitId":"-"},"content":" this.createAndSaveIssueModel(issue);"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }"},{"lineNumber":273,"author":{"gitId":"-"},"content":""},{"lineNumber":274,"author":{"gitId":"-"},"content":" return of(Object.values(this.issues));"},{"lineNumber":275,"author":{"gitId":"-"},"content":" }"},{"lineNumber":276,"author":{"gitId":"-"},"content":""},{"lineNumber":277,"author":{"gitId":"-"},"content":" private createAndSaveIssueModel(githubIssue: GithubIssue): boolean {"},{"lineNumber":278,"author":{"gitId":"-"},"content":" const issue \u003d this.createIssueModel(githubIssue);"},{"lineNumber":279,"author":{"gitId":"-"},"content":" this.updateLocalStore(issue);"},{"lineNumber":280,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }"},{"lineNumber":282,"author":{"gitId":"-"},"content":""},{"lineNumber":283,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":284,"author":{"gitId":"-"},"content":" * Given an issue model, create the necessary labels for github."},{"lineNumber":285,"author":{"gitId":"-"},"content":" */"},{"lineNumber":286,"author":{"gitId":"-"},"content":" private createLabelsForIssue(issue: Issue): string[] {"},{"lineNumber":287,"author":{"gitId":"-"},"content":" const result \u003d [];"},{"lineNumber":288,"author":{"gitId":"-"},"content":""},{"lineNumber":289,"author":{"gitId":"-"},"content":" if (this.phaseService.currentPhase !\u003d\u003d Phase.phaseBugReporting \u0026\u0026 this.phaseService.currentPhase !\u003d\u003d Phase.phaseTesterResponse) {"},{"lineNumber":290,"author":{"gitId":"-"},"content":" const studentTeam \u003d issue.teamAssigned.id.split(\u0027-\u0027);"},{"lineNumber":291,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027tutorial\u0027, `${studentTeam[0]}-${studentTeam[1]}`), this.createLabel(\u0027team\u0027, studentTeam[2]));"},{"lineNumber":292,"author":{"gitId":"-"},"content":" }"},{"lineNumber":293,"author":{"gitId":"-"},"content":""},{"lineNumber":294,"author":{"gitId":"-"},"content":" if (issue.severity) {"},{"lineNumber":295,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027severity\u0027, issue.severity));"},{"lineNumber":296,"author":{"gitId":"-"},"content":" }"},{"lineNumber":297,"author":{"gitId":"-"},"content":""},{"lineNumber":298,"author":{"gitId":"-"},"content":" if (issue.type) {"},{"lineNumber":299,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027type\u0027, issue.type));"},{"lineNumber":300,"author":{"gitId":"-"},"content":" }"},{"lineNumber":301,"author":{"gitId":"-"},"content":""},{"lineNumber":302,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (issue.response) {"},{"lineNumber":303,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" result.push(this.createLabel(\u0027response\u0027, issue.response));"},{"lineNumber":304,"author":{"gitId":"-"},"content":" }"},{"lineNumber":305,"author":{"gitId":"-"},"content":""},{"lineNumber":306,"author":{"gitId":"-"},"content":" if (issue.duplicated) {"},{"lineNumber":307,"author":{"gitId":"-"},"content":" result.push(\u0027duplicate\u0027);"},{"lineNumber":308,"author":{"gitId":"-"},"content":" }"},{"lineNumber":309,"author":{"gitId":"-"},"content":""},{"lineNumber":310,"author":{"gitId":"-"},"content":" if (issue.status) {"},{"lineNumber":311,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027status\u0027, issue.status));"},{"lineNumber":312,"author":{"gitId":"-"},"content":" }"},{"lineNumber":313,"author":{"gitId":"-"},"content":""},{"lineNumber":314,"author":{"gitId":"-"},"content":" if (issue.pending) {"},{"lineNumber":315,"author":{"gitId":"-"},"content":" if (+issue.pending \u003e 0) {"},{"lineNumber":316,"author":{"gitId":"-"},"content":" result.push(this.createLabel(\u0027pending\u0027, issue.pending));"},{"lineNumber":317,"author":{"gitId":"-"},"content":" }"},{"lineNumber":318,"author":{"gitId":"-"},"content":" }"},{"lineNumber":319,"author":{"gitId":"-"},"content":""},{"lineNumber":320,"author":{"gitId":"-"},"content":" if (issue.unsure) {"},{"lineNumber":321,"author":{"gitId":"-"},"content":" result.push(\u0027unsure\u0027);"},{"lineNumber":322,"author":{"gitId":"-"},"content":" }"},{"lineNumber":323,"author":{"gitId":"-"},"content":""},{"lineNumber":324,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":325,"author":{"gitId":"-"},"content":" }"},{"lineNumber":326,"author":{"gitId":"-"},"content":""},{"lineNumber":327,"author":{"gitId":"-"},"content":" private createLabel(prepend: string, value: string) {"},{"lineNumber":328,"author":{"gitId":"-"},"content":" return `${prepend}.${value}`;"},{"lineNumber":329,"author":{"gitId":"-"},"content":" }"},{"lineNumber":330,"author":{"gitId":"-"},"content":""},{"lineNumber":331,"author":{"gitId":"-"},"content":" private extractTeamIdFromGithubIssue(githubIssue: GithubIssue): string {"},{"lineNumber":332,"author":{"gitId":"-"},"content":" return githubIssue.findLabel(GithubLabel.LABELS.tutorial).concat(\u0027-\u0027).concat(githubIssue.findLabel(GithubLabel.LABELS.team));"},{"lineNumber":333,"author":{"gitId":"-"},"content":" }"},{"lineNumber":334,"author":{"gitId":"-"},"content":""},{"lineNumber":335,"author":{"gitId":"-"},"content":" private createIssueModel(githubIssue: GithubIssue): Issue {"},{"lineNumber":336,"author":{"gitId":"-"},"content":" switch (this.phaseService.currentPhase) {"},{"lineNumber":337,"author":{"gitId":"-"},"content":" case Phase.phaseBugReporting:"},{"lineNumber":338,"author":{"gitId":"-"},"content":" return Issue.createPhaseBugReportingIssue(githubIssue);"},{"lineNumber":339,"author":{"gitId":"-"},"content":" case Phase.phaseTeamResponse:"},{"lineNumber":340,"author":{"gitId":"-"},"content":" return Issue.createPhaseTeamResponseIssue(githubIssue, this.dataService.getTeam(this.extractTeamIdFromGithubIssue(githubIssue)));"},{"lineNumber":341,"author":{"gitId":"-"},"content":" case Phase.phaseTesterResponse:"},{"lineNumber":342,"author":{"gitId":"-"},"content":" return Issue.createPhaseTesterResponseIssue(githubIssue);"},{"lineNumber":343,"author":{"gitId":"-"},"content":" case Phase.phaseModeration:"},{"lineNumber":344,"author":{"gitId":"-"},"content":" return Issue.createPhaseModerationIssue(githubIssue, this.dataService.getTeam(this.extractTeamIdFromGithubIssue(githubIssue)));"},{"lineNumber":345,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":346,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":347,"author":{"gitId":"-"},"content":" }"},{"lineNumber":348,"author":{"gitId":"-"},"content":" }"},{"lineNumber":349,"author":{"gitId":"-"},"content":""},{"lineNumber":350,"author":{"gitId":"-"},"content":" setIssueTeamFilter(filterValue: string) {"},{"lineNumber":351,"author":{"gitId":"-"},"content":" if (filterValue) {"},{"lineNumber":352,"author":{"gitId":"-"},"content":" this.issueTeamFilter \u003d filterValue;"},{"lineNumber":353,"author":{"gitId":"-"},"content":" }"},{"lineNumber":354,"author":{"gitId":"-"},"content":" }"},{"lineNumber":355,"author":{"gitId":"-"},"content":""},{"lineNumber":356,"author":{"gitId":"-"},"content":" setSessionId(sessionId: string) {"},{"lineNumber":357,"author":{"gitId":"-"},"content":" this.sessionId \u003d sessionId;"},{"lineNumber":358,"author":{"gitId":"-"},"content":" }"},{"lineNumber":359,"author":{"gitId":"-"},"content":""},{"lineNumber":360,"author":{"gitId":"-"},"content":" getIssueTeamFilter(): string {"},{"lineNumber":361,"author":{"gitId":"-"},"content":" return this.issueTeamFilter;"},{"lineNumber":362,"author":{"gitId":"-"},"content":" }"},{"lineNumber":363,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":5,"-":358}},{"path":"src/app/core/services/phase.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Observable, pipe } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { map, mergeMap, retry, tap } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { throwIfFalse } from \u0027../../shared/lib/custom-ops\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../models/phase.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { assertSessionDataIntegrity, SessionData } from \u0027../models/session.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027./label.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { RepoCreatorService } from \u0027./repo-creator.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"export const SESSION_AVALIABILITY_FIX_FAILED \u003d \u0027Session Availability Fix failed.\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"export const PhaseDescription \u003d {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" [Phase.phaseBugReporting]: \u0027Bug Reporting Phase\u0027,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" [Phase.phaseTeamResponse]: \"Team\u0027s Response Phase\","},{"lineNumber":16,"author":{"gitId":"-"},"content":" [Phase.phaseTesterResponse]: \"Tester\u0027s Response Phase\","},{"lineNumber":17,"author":{"gitId":"-"},"content":" [Phase.phaseModeration]: \u0027Moderation Phase\u0027"},{"lineNumber":18,"author":{"gitId":"-"},"content":"};"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":21,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":22,"author":{"gitId":"-"},"content":"})"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Responsible for managing the current phase of CATcher as well as the"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * current session data and repository details related to the session."},{"lineNumber":27,"author":{"gitId":"-"},"content":" */"},{"lineNumber":28,"author":{"gitId":"-"},"content":"export class PhaseService {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public currentPhase: Phase;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private repoName: string;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private orgName: string;"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" public sessionData: SessionData;"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" private phaseRepoOwners \u003d {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" phaseBugReporting: \u0027\u0027,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" phaseTeamResponse: \u0027\u0027,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" phaseTesterResponse: \u0027\u0027,"},{"lineNumber":39,"author":{"gitId":"-"},"content":" phaseModeration: \u0027\u0027"},{"lineNumber":40,"author":{"gitId":"-"},"content":" };"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService, private labelService: LabelService, private repoCreatorService: RepoCreatorService) {}"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Stores the location of the repositories belonging to"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * each phase of the application."},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @param org - name of organization."},{"lineNumber":47,"author":{"gitId":"-"},"content":" * @param user - name of user."},{"lineNumber":48,"author":{"gitId":"-"},"content":" */"},{"lineNumber":49,"author":{"gitId":"-"},"content":" setPhaseOwners(org: string, user: string): void {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.orgName \u003d org;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.phaseRepoOwners.phaseBugReporting \u003d user;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.phaseRepoOwners.phaseTeamResponse \u003d org;"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.phaseRepoOwners.phaseTesterResponse \u003d user;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.phaseRepoOwners.phaseModeration \u003d org;"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns the name of the owner of a given phase."},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @param phase"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */"},{"lineNumber":61,"author":{"gitId":"-"},"content":" getPhaseOwner(phase: string): string {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this.phaseRepoOwners[phase];"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" fetchSessionData(): Observable\u003cSessionData\u003e {"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return this.githubService.fetchSettingsFile().pipe(map((data) \u003d\u003e data as SessionData));"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Will fetch session data and update phase service with it."},{"lineNumber":71,"author":{"gitId":"-"},"content":" */"},{"lineNumber":72,"author":{"gitId":"-"},"content":" storeSessionData(): Observable\u003cvoid\u003e {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this.fetchSessionData().pipe("},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertSessionDataIntegrity(),"},{"lineNumber":75,"author":{"gitId":"-"},"content":" map((sessionData: SessionData) \u003d\u003e {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" localStorage.setItem(\u0027sessionData\u0027, JSON.stringify(sessionData));"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.updateSessionParameters(sessionData);"},{"lineNumber":78,"author":{"gitId":"-"},"content":" })"},{"lineNumber":79,"author":{"gitId":"-"},"content":" );"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Retrieves session data from local storage and update phase service with it."},{"lineNumber":84,"author":{"gitId":"-"},"content":" */"},{"lineNumber":85,"author":{"gitId":"-"},"content":" setSessionData() {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" const sessionData \u003d JSON.parse(localStorage.getItem(\u0027sessionData\u0027));"},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.updateSessionParameters(sessionData);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Determines the github\u0027s level of repo permission required for the phase."},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Ref: https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps#available-scopes"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */"},{"lineNumber":94,"author":{"gitId":"-"},"content":" githubRepoPermissionLevel(): string {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (this.sessionData.openPhases.includes(Phase.phaseModeration)) {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return \u0027repo\u0027;"},{"lineNumber":97,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return \u0027public_repo\u0027;"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Checks if the necessary repository is available and creates it if the permissions are available."},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @param sessionData"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */"},{"lineNumber":106,"author":{"gitId":"-"},"content":" verifySessionAvailability(sessionData: SessionData): Observable\u003cboolean\u003e {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return this.githubService.isRepositoryPresent(this.phaseRepoOwners[this.currentPhase], sessionData[this.currentPhase]);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Stores session data and sets current session\u0027s phase."},{"lineNumber":112,"author":{"gitId":"-"},"content":" * @param sessionData"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */"},{"lineNumber":114,"author":{"gitId":"-"},"content":" updateSessionParameters(sessionData: SessionData) {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.sessionData \u003d sessionData;"},{"lineNumber":116,"author":{"gitId":"-"},"content":" this.currentPhase \u003d Phase[sessionData.openPhases[0]];"},{"lineNumber":117,"author":{"gitId":"-"},"content":" this.repoName \u003d sessionData[sessionData.openPhases[0]];"},{"lineNumber":118,"author":{"gitId":"-"},"content":" this.githubService.storePhaseDetails(this.phaseRepoOwners[this.currentPhase], this.repoName);"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Ensures that the necessary data for the current session is available"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * and synchronized with the remote server."},{"lineNumber":124,"author":{"gitId":"-"},"content":" */"},{"lineNumber":125,"author":{"gitId":"-"},"content":" sessionSetup(): Observable\u003cany\u003e {"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // Permission Caching Mechanism to prevent repeating permission request."},{"lineNumber":127,"author":{"gitId":"-"},"content":" let isSessionFixPermissionGranted \u003d false;"},{"lineNumber":128,"author":{"gitId":"-"},"content":" const cacheSessionFixPermission \u003d () \u003d\u003e {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return pipe("},{"lineNumber":130,"author":{"gitId":"-"},"content":" tap((sessionFixPermission: boolean | null) \u003d\u003e {"},{"lineNumber":131,"author":{"gitId":"-"},"content":" isSessionFixPermissionGranted \u003d sessionFixPermission ? sessionFixPermission : false;"},{"lineNumber":132,"author":{"gitId":"-"},"content":" })"},{"lineNumber":133,"author":{"gitId":"-"},"content":" );"},{"lineNumber":134,"author":{"gitId":"-"},"content":" };"},{"lineNumber":135,"author":{"gitId":"-"},"content":""},{"lineNumber":136,"author":{"gitId":"-"},"content":" return this.fetchSessionData().pipe("},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertSessionDataIntegrity(),"},{"lineNumber":138,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((sessionData: SessionData) \u003d\u003e {"},{"lineNumber":139,"author":{"gitId":"-"},"content":" this.updateSessionParameters(sessionData);"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return this.verifySessionAvailability(sessionData);"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":142,"author":{"gitId":"-"},"content":" this.repoCreatorService.requestRepoCreationPermissions(this.currentPhase, this.sessionData[this.currentPhase]),"},{"lineNumber":143,"author":{"gitId":"-"},"content":" cacheSessionFixPermission(),"},{"lineNumber":144,"author":{"gitId":"-"},"content":" this.repoCreatorService.verifyRepoCreationPermissions(this.currentPhase),"},{"lineNumber":145,"author":{"gitId":"-"},"content":" this.repoCreatorService.attemptRepoCreation(this.sessionData[this.currentPhase]),"},{"lineNumber":146,"author":{"gitId":"-"},"content":" this.repoCreatorService.verifyRepoCreation(this.getPhaseOwner(this.currentPhase), this.sessionData[this.currentPhase]),"},{"lineNumber":147,"author":{"gitId":"-"},"content":" throwIfFalse("},{"lineNumber":148,"author":{"gitId":"-"},"content":" (isSessionCreated: boolean) \u003d\u003e isSessionCreated,"},{"lineNumber":149,"author":{"gitId":"-"},"content":" () \u003d\u003e new Error(SESSION_AVALIABILITY_FIX_FAILED)"},{"lineNumber":150,"author":{"gitId":"-"},"content":" ),"},{"lineNumber":151,"author":{"gitId":"-"},"content":" this.labelService.syncLabels(this.isTeamOrModerationPhase()),"},{"lineNumber":152,"author":{"gitId":"-"},"content":" retry(1) // Retry once, to handle edge case where GitHub API cannot immediately confirm existence of the newly created repo."},{"lineNumber":153,"author":{"gitId":"-"},"content":" );"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }"},{"lineNumber":155,"author":{"gitId":"-"},"content":""},{"lineNumber":156,"author":{"gitId":"-"},"content":" private isTeamOrModerationPhase(): boolean {"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return this.currentPhase \u003d\u003d\u003d Phase.phaseTeamResponse || this.currentPhase \u003d\u003d\u003d Phase.phaseModeration;"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }"},{"lineNumber":159,"author":{"gitId":"-"},"content":""},{"lineNumber":160,"author":{"gitId":"-"},"content":" public getPhaseDetail() {"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return this.orgName.concat(\u0027/\u0027).concat(this.repoName);"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" this.currentPhase \u003d null;"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }"},{"lineNumber":167,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":165}},{"path":"src/app/core/services/repo-creator.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatDialog, MatDialogRef } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Observable, of, pipe, UnaryFunction } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { mergeMap, tap } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../models/phase.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { UserRole } from \u0027../models/user.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { SessionFixConfirmationComponent } from \u0027./session-fix-confirmation/session-fix-confirmation.component\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./user.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"export const MISSING_REQUIRED_REPO \u003d \u0027You cannot proceed without the required repository.\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"export const CURRENT_PHASE_REPO_CLOSED \u003d \"Current Phase\u0027s Repository has not been opened.\";"},{"lineNumber":13,"author":{"gitId":"-"},"content":"export const BUG_REPORTING_INVALID_ROLE \u003d \"\u0027Bug-Reporting Phase\u0027s repository initialisation is only available to Students.\u0027\";"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":16,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":17,"author":{"gitId":"-"},"content":"})"},{"lineNumber":18,"author":{"gitId":"-"},"content":"export class RepoCreatorService {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService, private userService: UserService, private repoCreationConfirmationDialog: MatDialog) {}"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Prompts user to allow CATcher to create a repo, if repo does not"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * exist and current phase is the bug reporting phase."},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param currentPhase the current phase of the session."},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param phaseRepo the name of the specified repository."},{"lineNumber":26,"author":{"gitId":"-"},"content":" */"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public requestRepoCreationPermissions("},{"lineNumber":28,"author":{"gitId":"-"},"content":" currentPhase: Phase,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" phaseRepo: string"},{"lineNumber":30,"author":{"gitId":"-"},"content":" ): UnaryFunction\u003cObservable\u003cboolean\u003e, Observable\u003cboolean | null\u003e\u003e {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return pipe("},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((isRepoPresent: boolean) \u003d\u003e {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!isRepoPresent \u0026\u0026 currentPhase \u003d\u003d\u003d Phase.phaseBugReporting) {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return this.openRepoCreationConfirmation(phaseRepo);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return of(null);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }"},{"lineNumber":38,"author":{"gitId":"-"},"content":" })"},{"lineNumber":39,"author":{"gitId":"-"},"content":" );"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Launches the SessionFixConfirmation Dialog."},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @param phaseRepo the name of the specified repository."},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @return Observable\u003cboolean\u003e - Representing user\u0027s permission grant."},{"lineNumber":46,"author":{"gitId":"-"},"content":" */"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private openRepoCreationConfirmation(phaseRepo: string): Observable\u003cboolean\u003e {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" const dialogRef: MatDialogRef\u003cSessionFixConfirmationComponent\u003e \u003d this.repoCreationConfirmationDialog.open("},{"lineNumber":49,"author":{"gitId":"-"},"content":" SessionFixConfirmationComponent,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" data: { user: this.userService.currentUser.loginId, repoName: phaseRepo }"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":" );"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return dialogRef.afterClosed();"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Checks if the current phase and current user role match the given permissions"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * for the user to create the phase repository if deemed necessary"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param currentPhase the current phase of the session."},{"lineNumber":61,"author":{"gitId":"-"},"content":" */"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public verifyRepoCreationPermissions(currentPhase: Phase): UnaryFunction\u003cObservable\u003cboolean | null\u003e, Observable\u003cboolean | null\u003e\u003e {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return pipe("},{"lineNumber":64,"author":{"gitId":"-"},"content":" tap((repoCreationPermission: boolean | null) \u003d\u003e {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (repoCreationPermission \u003d\u003d\u003d null) {"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (repoCreationPermission \u003d\u003d\u003d false) {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new Error(MISSING_REQUIRED_REPO);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" } else if (currentPhase !\u003d\u003d Phase.phaseBugReporting) {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new Error(CURRENT_PHASE_REPO_CLOSED);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } else if (this.userService.currentUser.role !\u003d\u003d UserRole.Student) {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new Error(BUG_REPORTING_INVALID_ROLE);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"-"},"content":" })"},{"lineNumber":77,"author":{"gitId":"-"},"content":" );"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Attempts to create the repository if permissions have been given to do so."},{"lineNumber":82,"author":{"gitId":"-"},"content":" * @param phaseRepo the name of the specified repository."},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @return - Dummy Observable to give the API sometime to propagate if the creation of the new"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * repository is needed since the API Call used here does not return any response."},{"lineNumber":85,"author":{"gitId":"-"},"content":" */"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public attemptRepoCreation(phaseRepo: string): UnaryFunction\u003cObservable\u003cboolean | null\u003e, Observable\u003cboolean | null\u003e\u003e {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return pipe("},{"lineNumber":88,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((repoCreationPermission: boolean | null) \u003d\u003e {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (repoCreationPermission \u003d\u003d\u003d null) {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // No Session Fix Necessary"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return of(null);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.githubService.createRepository(phaseRepo);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new Observable\u003cboolean\u003e((subscriber) \u003d\u003e {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e subscriber.next(true), 1000);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" });"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"-"},"content":" })"},{"lineNumber":99,"author":{"gitId":"-"},"content":" );"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Checks if the specified repository has been created."},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @param phaseOwner the user or organization holding the specified repository."},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @param phaseRepo the name of the specified repository."},{"lineNumber":106,"author":{"gitId":"-"},"content":" */"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public verifyRepoCreation(phaseOwner: string, phaseRepo: string): UnaryFunction\u003cObservable\u003cboolean | null\u003e, Observable\u003cboolean\u003e\u003e {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return pipe("},{"lineNumber":109,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((isFixAttempted: boolean | null) \u003d\u003e {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!isFixAttempted) {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // If no fix has been attempted, there is no need to verify fix outcome."},{"lineNumber":112,"author":{"gitId":"-"},"content":" return of(true);"},{"lineNumber":113,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // Verify that Repository has been created if a fix attempt has occurred."},{"lineNumber":115,"author":{"gitId":"-"},"content":" return this.githubService.isRepositoryPresent(phaseOwner, phaseRepo);"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }"},{"lineNumber":117,"author":{"gitId":"-"},"content":" })"},{"lineNumber":118,"author":{"gitId":"-"},"content":" );"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":4,"-":116}},{"path":"src/app/core/services/session-fix-confirmation/session-fix-confirmation.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"export interface RepositoryData {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" user: string;"},{"lineNumber":6,"author":{"gitId":"-"},"content":" repoName: string;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":10,"author":{"gitId":"-"},"content":" selector: \u0027app-session-fix-confirmation\u0027,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" templateUrl: \u0027./session-fix-confirmation.component.html\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./session-fix-confirmation.component.css\u0027]"},{"lineNumber":13,"author":{"gitId":"-"},"content":"})"},{"lineNumber":14,"author":{"gitId":"-"},"content":"export class SessionFixConfirmationComponent implements OnInit {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" constructor(public dialogRef: MatDialogRef\u003cSessionFixConfirmationComponent\u003e, @Inject(MAT_DIALOG_DATA) public data: RepositoryData) {}"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":17}},{"path":"src/app/core/services/user.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { filter, map, throwIfEmpty } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../models/github-user.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Team } from \u0027../models/team.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { User, UserRole } from \u0027../models/user.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { DataService } from \u0027./data.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":12,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":13,"author":{"gitId":"-"},"content":"})"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Responsible for creation of users and teams within the CATcher application."},{"lineNumber":17,"author":{"gitId":"-"},"content":" */"},{"lineNumber":18,"author":{"gitId":"-"},"content":"export class UserService {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public currentUser: User;"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor(private githubService: GithubService, private dataService: DataService, private logger: LoggingService) {}"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Get the authenticated user if it exist."},{"lineNumber":25,"author":{"gitId":"-"},"content":" */"},{"lineNumber":26,"author":{"gitId":"-"},"content":" getAuthenticatedUser(): Observable\u003cGithubUser\u003e {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return this.githubService.fetchAuthenticatedUser().pipe("},{"lineNumber":28,"author":{"gitId":"-"},"content":" map((data: GithubUser) \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return data;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" })"},{"lineNumber":31,"author":{"gitId":"-"},"content":" );"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" createUserModel(userLoginId: string): Observable\u003cUser\u003e {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return this.dataService.getDataFile().pipe("},{"lineNumber":36,"author":{"gitId":"-"},"content":" map((jsonData: {}) \u003d\u003e {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.currentUser \u003d this.createUser(jsonData, userLoginId);"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return this.currentUser;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":40,"author":{"gitId":"-"},"content":" filter((user) \u003d\u003e user !\u003d\u003d null),"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throwIfEmpty(() \u003d\u003e new Error(\u0027Unauthorized user.\u0027))"},{"lineNumber":42,"author":{"gitId":"-"},"content":" );"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(\u0027UserService: Clearing current user\u0027);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.currentUser \u003d undefined;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" private createUser(data: {}, userLoginId: string): User {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" const lowerCaseUserLoginId \u003d userLoginId.toLowerCase();"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" const userRole \u003d this.parseUserRole(data, lowerCaseUserLoginId);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" switch (userRole) {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" case UserRole.Student:"},{"lineNumber":56,"author":{"gitId":"-"},"content":" const teamId \u003d data[DataService.STUDENTS_ALLOCATION][lowerCaseUserLoginId][DataService.TEAM_ID];"},{"lineNumber":57,"author":{"gitId":"-"},"content":" const studentTeam \u003d this.createTeamModel(data[DataService.TEAM_STRUCTURE], teamId);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return \u003cUser\u003e{ loginId: userLoginId, role: userRole, team: studentTeam };"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" case UserRole.Tutor:"},{"lineNumber":61,"author":{"gitId":"-"},"content":" const tutorTeams: Array\u003cTeam\u003e \u003d Object.keys("},{"lineNumber":62,"author":{"gitId":"-"},"content":" data[DataService.TUTORS_ALLOCATION][lowerCaseUserLoginId]"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ).map((allocatedTeamId: string) \u003d\u003e this.createTeamModel(data[DataService.TEAM_STRUCTURE], allocatedTeamId));"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" return \u003cUser\u003e{ loginId: userLoginId, role: userRole, allocatedTeams: tutorTeams };"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" case UserRole.Admin:"},{"lineNumber":68,"author":{"gitId":"-"},"content":" const studentTeams: Array\u003cTeam\u003e \u003d Object.keys("},{"lineNumber":69,"author":{"gitId":"-"},"content":" data[DataService.ADMINS_ALLOCATION][lowerCaseUserLoginId]"},{"lineNumber":70,"author":{"gitId":"-"},"content":" ).map((allocatedTeamId: string) \u003d\u003e this.createTeamModel(data[DataService.TEAM_STRUCTURE], allocatedTeamId));"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":" return \u003cUser\u003e{ loginId: userLoginId, role: userRole, allocatedTeams: studentTeams };"},{"lineNumber":73,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return null;"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" private createTeamModel(teamData: {}, teamId: string): Team {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" const teammates: Array\u003cUser\u003e \u003d Object.values(teamData[teamId]).map("},{"lineNumber":80,"author":{"gitId":"-"},"content":" (teammate: string) \u003d\u003e \u003cUser\u003e{ loginId: teammate, role: UserRole.Student }"},{"lineNumber":81,"author":{"gitId":"-"},"content":" );"},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new Team({ id: teamId, teamMembers: teammates });"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * To be used to parse the JSON data containing data pertaining to the user role."},{"lineNumber":88,"author":{"gitId":"-"},"content":" *"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @return NULL if user is unauthorized, meaning that no role is specified for the user."},{"lineNumber":90,"author":{"gitId":"-"},"content":" * else the the role with the highest access rights will be returned."},{"lineNumber":91,"author":{"gitId":"-"},"content":" */"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private parseUserRole(data: {}, userLoginId: string): UserRole {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" let userRole: UserRole;"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (data[DataService.ROLES][DataService.STUDENTS] \u0026\u0026 data[DataService.ROLES][DataService.STUDENTS][[userLoginId]]) {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" userRole \u003d UserRole.Student;"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (data[DataService.ROLES][DataService.TUTORS] \u0026\u0026 data[DataService.ROLES][DataService.TUTORS][[userLoginId]]) {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" userRole \u003d UserRole.Tutor;"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (data[DataService.ROLES][DataService.ADMINS] \u0026\u0026 data[DataService.ROLES][DataService.ADMINS][[userLoginId]]) {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" userRole \u003d UserRole.Admin;"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return userRole;"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":3,"-":102}},{"path":"src/app/shared/action-toasters/action-toasters.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { CommonModule } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MaterialModule } from \u0027../material.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { UndoActionComponent } from \u0027./undo-action/undo-action.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":7,"author":{"gitId":"-"},"content":" imports: [CommonModule, MaterialModule],"},{"lineNumber":8,"author":{"gitId":"-"},"content":" declarations: [UndoActionComponent],"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" exports: [UndoActionComponent]"},{"lineNumber":10,"author":{"gitId":"-"},"content":"})"},{"lineNumber":11,"author":{"gitId":"-"},"content":"export class ActionToasterModule {}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":10}},{"path":"src/app/shared/action-toasters/undo-action/undo-action.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatSnackBarRef, MAT_SNACK_BAR_DATA } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"-"},"content":" selector: \u0027app-undo-action\u0027,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" templateUrl: \u0027./undo-action.component.html\u0027"},{"lineNumber":7,"author":{"gitId":"-"},"content":"})"},{"lineNumber":8,"author":{"gitId":"-"},"content":"export class UndoActionComponent {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" constructor(public snackBarRef: MatSnackBarRef\u003cUndoActionComponent\u003e, @Inject(MAT_SNACK_BAR_DATA) public data: any) {}"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":9}},{"path":"src/app/shared/comment-editor/comment-editor.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cform [formGroup]\u003d\"commentForm\" style\u003d\"min-height: 350px\"\u003e"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-tab-group class\u003d\"mat-elevation-z1\" animationDuration\u003d\"0ms\" (selectedTabChange)\u003d\"commentField.setValue(commentTextArea.value)\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-tab label\u003d\"Write\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cdiv"},{"lineNumber":5,"author":{"gitId":"-"},"content":" #dropArea"},{"lineNumber":6,"author":{"gitId":"-"},"content":" class\u003d\"tab-content\""},{"lineNumber":7,"author":{"gitId":"-"},"content":" (dragleave)\u003d\"onDragExit($event)\""},{"lineNumber":8,"author":{"gitId":"-"},"content":" (dragenter)\u003d\"onDragEnter($event)\""},{"lineNumber":9,"author":{"gitId":"-"},"content":" (drop)\u003d\"onDrop($event)\""},{"lineNumber":10,"author":{"gitId":"-"},"content":" (dragover)\u003d\"enableFileDrop($event)\""},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003capp-markdown-toolbar [forTextAreaId]\u003d\"this.id\"\u003e\u003c/app-markdown-toolbar\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"outline\" style\u003d\"width: 100%\"\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cmat-label\u003e\u003c/mat-label\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003ctextarea"},{"lineNumber":16,"author":{"gitId":"-"},"content":" (paste)\u003d\"onPaste($event)\""},{"lineNumber":17,"author":{"gitId":"-"},"content":" (keydown)\u003d\"onKeyPress($event)\""},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" (beforeinput)\u003d\"handleBeforeInputChange($event)\""},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" (input)\u003d\"handleInputChange($event)\""},{"lineNumber":20,"author":{"gitId":"-"},"content":" #commentTextArea"},{"lineNumber":21,"author":{"gitId":"-"},"content":" (dragover)\u003d\"disableCaretMovement($event)\""},{"lineNumber":22,"author":{"gitId":"-"},"content":" id\u003d\"{{ this.id }}\""},{"lineNumber":23,"author":{"gitId":"-"},"content":" formControlName\u003d\"{{ this.id }}\""},{"lineNumber":24,"author":{"gitId":"-"},"content":" matInput"},{"lineNumber":25,"author":{"gitId":"-"},"content":" cdkTextareaAutosize"},{"lineNumber":26,"author":{"gitId":"-"},"content":" #autosize\u003d\"cdkTextareaAutosize\""},{"lineNumber":27,"author":{"gitId":"-"},"content":" cdkAutosizeMinRows\u003d\"10\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" cdkAutosizeMaxRows\u003d\"20\""},{"lineNumber":29,"author":{"gitId":"-"},"content":" class\u003d\"text-input-area\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" placeholder\u003d\"{{ this.placeholderText }}\""},{"lineNumber":31,"author":{"gitId":"-"},"content":" maxlength\u003d\"{{ this.maxLength }}\""},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003e\u003c/textarea\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cmat-error *ngIf\u003d\"commentField.errors \u0026\u0026 commentField.errors[\u0027required\u0027] \u0026\u0026 commentField.touched\"\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Description required."},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/mat-error\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cmat-error *ngIf\u003d\"commentField.errors \u0026\u0026 commentField.errors[\u0027maxLength\u0027]\"\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Description cannot exceed {{ maxLength }} characters."},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/mat-error\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cmat-hint *ngIf\u003d\"commentField.value?.length \u003e\u003d maxLength - 50\"\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" {{ maxLength - commentField.value?.length }} character(s) remaining."},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/mat-hint\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"drag-and-drop\"\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"!isInErrorState\"\u003e Attach files by dragging \u0026 dropping or select them by clicking here. \u003c/span\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"isInErrorState\" class\u003d\"error\"\u003e {{ uploadErrorMessage }} \u003c/span\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cinput"},{"lineNumber":47,"author":{"gitId":"-"},"content":" #fileInput"},{"lineNumber":48,"author":{"gitId":"-"},"content":" [disabled]\u003d\"this.commentField.disabled\""},{"lineNumber":49,"author":{"gitId":"-"},"content":" [accept]\u003d\"SUPPORTED_FILE_TYPES\""},{"lineNumber":50,"author":{"gitId":"-"},"content":" type\u003d\"file\""},{"lineNumber":51,"author":{"gitId":"-"},"content":" class\u003d\"file\""},{"lineNumber":52,"author":{"gitId":"-"},"content":" (change)\u003d\"onFileInputUpload($event, fileInput)\""},{"lineNumber":53,"author":{"gitId":"-"},"content":" /\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/mat-tab\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cmat-tab label\u003d\"Preview\"\u003e"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"tab-content\" style\u003d\"min-height: 228px\"\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003cmarkdown #markdownArea *ngIf\u003d\"commentField.value !\u003d\u003d \u0027\u0027\" [data]\u003d\"sanitize(commentField.value)\"\u003e\u003c/markdown\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"commentField.value \u003d\u003d\u003d \u0027\u0027\"\u003eNothing to preview.\u003c/div\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/mat-tab\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/mat-tab-group\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003c/form\u003e"}],"authorContributionMap":{"Eclipse-Dominator":3,"-":62}},{"path":"src/app/shared/comment-editor/comment-editor.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpErrorResponse } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { AbstractControl, FormGroup, Validators } from \u0027@angular/forms\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import * as DOMPurify from \u0027dompurify\u0027;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"import { UndoRedo } from \u0027../../core/models/undoredo.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { FILE_TYPE_SUPPORT_ERROR, getSizeExceedErrorMsg, SUPPORTED_FILE_TYPES, UploadService } from \u0027../../core/services/upload.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { insertUploadingText, insertUploadUrl, insertUploadUrlVideo } from \u0027./upload-text-insertor\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"const BYTES_PER_MB \u003d 1024 * 1024;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"const SHOWN_MAX_UPLOAD_SIZE_MB \u003d 10;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"const SHOWN_MAX_VIDEO_UPLOAD_SIZE_MB \u003d 5;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"const TIME_BETWEEN_UPLOADS_MS \u003d 250;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"const MAX_UPLOAD_SIZE \u003d (SHOWN_MAX_UPLOAD_SIZE_MB + 1) * BYTES_PER_MB; // 11MB to allow 10.x MB"},{"lineNumber":17,"author":{"gitId":"-"},"content":"const MAX_VIDEO_UPLOAD_SIZE \u003d (SHOWN_MAX_VIDEO_UPLOAD_SIZE_MB + 1) * BYTES_PER_MB; // 6MB to allow 5.x MB"},{"lineNumber":18,"author":{"gitId":"-"},"content":"const ISSUE_BODY_SIZE_LIMIT \u003d 40000;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"const SPACE \u003d \u0027 \u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":"type textEntry \u003d {"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" text: string;"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" selectStart: number;"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" selectEnd: number;"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":"};"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":29,"author":{"gitId":"-"},"content":" selector: \u0027app-comment-editor\u0027,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" templateUrl: \u0027./comment-editor.component.html\u0027,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./comment-editor.component.css\u0027]"},{"lineNumber":32,"author":{"gitId":"-"},"content":"})"},{"lineNumber":33,"author":{"gitId":"-"},"content":"export class CommentEditorComponent implements OnInit {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" readonly SUPPORTED_FILE_TYPES \u003d SUPPORTED_FILE_TYPES;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" constructor(private uploadService: UploadService, private errorHandlingService: ErrorHandlingService, private logger: LoggingService) {}"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Input() commentField: AbstractControl; // Compulsory Input"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Input() commentForm: FormGroup; // Compulsory Input"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Input() id: string; // Compulsory Input"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Input() initialDescription?: string;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" placeholderText \u003d \u0027No details provided.\u0027;"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Allows the comment editor to control the overall form\u0027s completeness."},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Input() isFormPending?: boolean;"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Output() isFormPendingChange: EventEmitter\u003cboolean\u003e \u003d new EventEmitter\u003cboolean\u003e();"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Allow the comment editor to control the text of the submit button to prompt the user."},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Input() submitButtonText?: string;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Output() submitButtonTextChange: EventEmitter\u003cstring\u003e \u003d new EventEmitter\u003cstring\u003e();"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" initialSubmitButtonText: string;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" lastUploadingTime: string;"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" @ViewChild(\u0027dropArea\u0027, { static: true }) dropArea;"},{"lineNumber":57,"author":{"gitId":"Eclipse-Dominator"},"content":" @ViewChild(\u0027commentTextArea\u0027, { static: true }) commentTextArea: ElementRef\u003cHTMLTextAreaElement\u003e;"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @ViewChild(\u0027markdownArea\u0027) markdownArea;"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" dragActiveCounter \u003d 0;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" uploadErrorMessage: string;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" maxLength \u003d ISSUE_BODY_SIZE_LIMIT;"},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"Eclipse-Dominator"},"content":" history: UndoRedo\u003ctextEntry\u003e;"},{"lineNumber":65,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" formatFileUploadingButtonText(currentButtonText: string) {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return currentButtonText + \u0027 (Waiting for File Upload to finish...)\u0027;"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (this.initialDescription !\u003d\u003d undefined) {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.commentField.setValue(this.initialDescription);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (this.commentField \u003d\u003d\u003d undefined || this.commentForm \u003d\u003d\u003d undefined || this.id \u003d\u003d\u003d undefined) {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new Error(\"Comment Editor\u0027s compulsory properties are not defined.\");"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.initialSubmitButtonText \u003d this.submitButtonText;"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.commentField.setValidators([Validators.maxLength(this.maxLength)]);"},{"lineNumber":81,"author":{"gitId":"Eclipse-Dominator"},"content":" this.history \u003d new UndoRedo\u003ctextEntry\u003e("},{"lineNumber":82,"author":{"gitId":"Eclipse-Dominator"},"content":" 75,"},{"lineNumber":83,"author":{"gitId":"Eclipse-Dominator"},"content":" () \u003d\u003e {"},{"lineNumber":84,"author":{"gitId":"Eclipse-Dominator"},"content":" return {"},{"lineNumber":85,"author":{"gitId":"Eclipse-Dominator"},"content":" text: this.commentTextArea.nativeElement.value,"},{"lineNumber":86,"author":{"gitId":"Eclipse-Dominator"},"content":" selectStart: this.commentTextArea.nativeElement.selectionStart,"},{"lineNumber":87,"author":{"gitId":"Eclipse-Dominator"},"content":" selectEnd: this.commentTextArea.nativeElement.selectionEnd"},{"lineNumber":88,"author":{"gitId":"Eclipse-Dominator"},"content":" };"},{"lineNumber":89,"author":{"gitId":"Eclipse-Dominator"},"content":" },"},{"lineNumber":90,"author":{"gitId":"Eclipse-Dominator"},"content":" 500"},{"lineNumber":91,"author":{"gitId":"Eclipse-Dominator"},"content":" );"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"Eclipse-Dominator"},"content":" onKeyPress(event: KeyboardEvent) {"},{"lineNumber":95,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.isUndo(event)) {"},{"lineNumber":96,"author":{"gitId":"Eclipse-Dominator"},"content":" event.preventDefault();"},{"lineNumber":97,"author":{"gitId":"Eclipse-Dominator"},"content":" this.undo();"},{"lineNumber":98,"author":{"gitId":"Eclipse-Dominator"},"content":" return;"},{"lineNumber":99,"author":{"gitId":"Eclipse-Dominator"},"content":" } else if (this.isRedo(event)) {"},{"lineNumber":100,"author":{"gitId":"Eclipse-Dominator"},"content":" this.redo();"},{"lineNumber":101,"author":{"gitId":"Eclipse-Dominator"},"content":" event.preventDefault();"},{"lineNumber":102,"author":{"gitId":"Eclipse-Dominator"},"content":" return;"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.isControlKeyPressed(event) \u0026\u0026 !event.shiftKey) {"},{"lineNumber":106,"author":{"gitId":"Eclipse-Dominator"},"content":" switch (event.code) {"},{"lineNumber":107,"author":{"gitId":"Eclipse-Dominator"},"content":" case \u0027KeyB\u0027:"},{"lineNumber":108,"author":{"gitId":"-"},"content":" event.preventDefault();"},{"lineNumber":109,"author":{"gitId":"Eclipse-Dominator"},"content":" this.history.wrapSave(() \u003d\u003e this.insertOrRemoveCharsFromHighlightedText(\u0027**\u0027));"},{"lineNumber":110,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":111,"author":{"gitId":"Eclipse-Dominator"},"content":" case \u0027KeyI\u0027:"},{"lineNumber":112,"author":{"gitId":"-"},"content":" event.preventDefault();"},{"lineNumber":113,"author":{"gitId":"Eclipse-Dominator"},"content":" this.history.wrapSave(() \u003d\u003e this.insertOrRemoveCharsFromHighlightedText(\u0027_\u0027));"},{"lineNumber":114,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":115,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" onDragEnter(event) {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" event.preventDefault();"},{"lineNumber":123,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":124,"author":{"gitId":"-"},"content":""},{"lineNumber":125,"author":{"gitId":"-"},"content":" this.dragActiveCounter++;"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (this.commentField.disabled) {"},{"lineNumber":127,"author":{"gitId":"-"},"content":" this.dropArea.nativeElement.classList.add(\u0027highlight-drag-box-disabled\u0027);"},{"lineNumber":128,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" this.dropArea.nativeElement.classList.add(\u0027highlight-drag-box\u0027);"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }"},{"lineNumber":132,"author":{"gitId":"-"},"content":""},{"lineNumber":133,"author":{"gitId":"-"},"content":" // Prevent cursor in textarea from moving when file is dragged over it."},{"lineNumber":134,"author":{"gitId":"-"},"content":" disableCaretMovement(event) {"},{"lineNumber":135,"author":{"gitId":"-"},"content":" event.preventDefault();"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }"},{"lineNumber":137,"author":{"gitId":"-"},"content":""},{"lineNumber":138,"author":{"gitId":"-"},"content":" // Sanitize markdown"},{"lineNumber":139,"author":{"gitId":"-"},"content":" sanitize(commentFieldValue) {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return DOMPurify.sanitize(commentFieldValue);"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }"},{"lineNumber":142,"author":{"gitId":"-"},"content":""},{"lineNumber":143,"author":{"gitId":"-"},"content":" // To enable file drop in non-input elements, the dragOver event must be cancelled."},{"lineNumber":144,"author":{"gitId":"-"},"content":" enableFileDrop(event) {"},{"lineNumber":145,"author":{"gitId":"-"},"content":" event.preventDefault();"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }"},{"lineNumber":147,"author":{"gitId":"-"},"content":""},{"lineNumber":148,"author":{"gitId":"-"},"content":" onDrop(event) {"},{"lineNumber":149,"author":{"gitId":"-"},"content":" event.preventDefault();"},{"lineNumber":150,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":151,"author":{"gitId":"-"},"content":" this.removeHighlightBorderStyle();"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (this.commentField.disabled) {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }"},{"lineNumber":156,"author":{"gitId":"-"},"content":""},{"lineNumber":157,"author":{"gitId":"-"},"content":" const files \u003d event.dataTransfer.files;"},{"lineNumber":158,"author":{"gitId":"-"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":" if (files \u003d\u003d\u003d undefined || files.length \u003c\u003d 0) {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }"},{"lineNumber":162,"author":{"gitId":"-"},"content":""},{"lineNumber":163,"author":{"gitId":"-"},"content":" this.commentTextArea.nativeElement.focus();"},{"lineNumber":164,"author":{"gitId":"-"},"content":""},{"lineNumber":165,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c files.length; i++) {"},{"lineNumber":166,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":167,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`CommentEditorComponent: File ${i + 1} of ${files.length}. Begin uploading ${files[i].name}.`);"},{"lineNumber":168,"author":{"gitId":"-"},"content":" this.readAndUploadFile(files[i]);"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }, TIME_BETWEEN_UPLOADS_MS * i);"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }"},{"lineNumber":172,"author":{"gitId":"-"},"content":""},{"lineNumber":173,"author":{"gitId":"-"},"content":" onDragExit(event) {"},{"lineNumber":174,"author":{"gitId":"-"},"content":" event.preventDefault();"},{"lineNumber":175,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":176,"author":{"gitId":"-"},"content":""},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.removeHighlightBorderStyle();"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }"},{"lineNumber":179,"author":{"gitId":"-"},"content":""},{"lineNumber":180,"author":{"gitId":"-"},"content":" onFileInputUpload(event, fileInput) {"},{"lineNumber":181,"author":{"gitId":"-"},"content":" event.preventDefault();"},{"lineNumber":182,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":183,"author":{"gitId":"-"},"content":""},{"lineNumber":184,"author":{"gitId":"-"},"content":" const files \u003d fileInput.files;"},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (files.length \u003e 0) {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.readAndUploadFile(files[0]);"},{"lineNumber":187,"author":{"gitId":"-"},"content":" fileInput.value \u003d \u0027\u0027;"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }"},{"lineNumber":190,"author":{"gitId":"-"},"content":""},{"lineNumber":191,"author":{"gitId":"-"},"content":" updateParentFormsSubmittability(isFormPending: boolean, submitButtonText: string) {"},{"lineNumber":192,"author":{"gitId":"-"},"content":" this.isFormPendingChange.emit(isFormPending);"},{"lineNumber":193,"author":{"gitId":"-"},"content":" this.submitButtonTextChange.emit(submitButtonText);"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }"},{"lineNumber":195,"author":{"gitId":"-"},"content":""},{"lineNumber":196,"author":{"gitId":"-"},"content":" readAndUploadFile(file: File): void {"},{"lineNumber":197,"author":{"gitId":"-"},"content":" this.uploadErrorMessage \u003d null;"},{"lineNumber":198,"author":{"gitId":"-"},"content":" const reader \u003d new FileReader();"},{"lineNumber":199,"author":{"gitId":"-"},"content":" const filename \u003d file.name;"},{"lineNumber":200,"author":{"gitId":"-"},"content":" const insertedText \u003d insertUploadingText(filename, this.commentField, this.commentTextArea);"},{"lineNumber":201,"author":{"gitId":"-"},"content":""},{"lineNumber":202,"author":{"gitId":"-"},"content":" if (file.size \u003e\u003d MAX_UPLOAD_SIZE) {"},{"lineNumber":203,"author":{"gitId":"-"},"content":" this.handleUploadError(getSizeExceedErrorMsg(\u0027file\u0027, SHOWN_MAX_UPLOAD_SIZE_MB), insertedText);"},{"lineNumber":204,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }"},{"lineNumber":206,"author":{"gitId":"-"},"content":""},{"lineNumber":207,"author":{"gitId":"-"},"content":" if (this.uploadService.isVideoFile(filename) \u0026\u0026 file.size \u003e\u003d MAX_VIDEO_UPLOAD_SIZE) {"},{"lineNumber":208,"author":{"gitId":"-"},"content":" this.handleUploadError(getSizeExceedErrorMsg(\u0027video\u0027, SHOWN_MAX_VIDEO_UPLOAD_SIZE_MB), insertedText);"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }"},{"lineNumber":211,"author":{"gitId":"-"},"content":""},{"lineNumber":212,"author":{"gitId":"-"},"content":" if (!this.uploadService.isSupportedFileType(filename)) {"},{"lineNumber":213,"author":{"gitId":"-"},"content":" this.handleUploadError(FILE_TYPE_SUPPORT_ERROR, insertedText);"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }"},{"lineNumber":216,"author":{"gitId":"-"},"content":""},{"lineNumber":217,"author":{"gitId":"-"},"content":" // Log the most recent upload."},{"lineNumber":218,"author":{"gitId":"-"},"content":" this.lastUploadingTime \u003d new Date().getTime().toString();"},{"lineNumber":219,"author":{"gitId":"-"},"content":" const currentFileUploadTime \u003d this.lastUploadingTime;"},{"lineNumber":220,"author":{"gitId":"-"},"content":""},{"lineNumber":221,"author":{"gitId":"-"},"content":" // Prevents Form Submission during Upload"},{"lineNumber":222,"author":{"gitId":"-"},"content":" this.updateParentFormsSubmittability(true, this.formatFileUploadingButtonText(this.initialSubmitButtonText));"},{"lineNumber":223,"author":{"gitId":"-"},"content":""},{"lineNumber":224,"author":{"gitId":"-"},"content":" reader.onload \u003d () \u003d\u003e {"},{"lineNumber":225,"author":{"gitId":"-"},"content":" this.uploadService.uploadFile(reader.result, filename).subscribe("},{"lineNumber":226,"author":{"gitId":"-"},"content":" (response) \u003d\u003e {"},{"lineNumber":227,"author":{"gitId":"-"},"content":" if (this.uploadService.isVideoFile(filename)) {"},{"lineNumber":228,"author":{"gitId":"-"},"content":" insertUploadUrlVideo(filename, response.data.content.download_url, this.commentField, this.commentTextArea);"},{"lineNumber":229,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":230,"author":{"gitId":"-"},"content":" insertUploadUrl(filename, response.data.content.download_url, this.commentField, this.commentTextArea);"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }"},{"lineNumber":232,"author":{"gitId":"Eclipse-Dominator"},"content":" this.history.forceSave();"},{"lineNumber":233,"author":{"gitId":"-"},"content":" },"},{"lineNumber":234,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":235,"author":{"gitId":"-"},"content":" this.handleUploadError(error, insertedText);"},{"lineNumber":236,"author":{"gitId":"-"},"content":" // Allow button enabling if this is the last file that was uploaded."},{"lineNumber":237,"author":{"gitId":"-"},"content":" if (currentFileUploadTime \u003d\u003d\u003d this.lastUploadingTime) {"},{"lineNumber":238,"author":{"gitId":"-"},"content":" this.updateParentFormsSubmittability(false, this.initialSubmitButtonText);"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }"},{"lineNumber":240,"author":{"gitId":"-"},"content":" },"},{"lineNumber":241,"author":{"gitId":"-"},"content":" () \u003d\u003e {"},{"lineNumber":242,"author":{"gitId":"-"},"content":" // Allow button enabling if this is the last file that was uploaded."},{"lineNumber":243,"author":{"gitId":"-"},"content":" if (currentFileUploadTime \u003d\u003d\u003d this.lastUploadingTime) {"},{"lineNumber":244,"author":{"gitId":"-"},"content":" this.updateParentFormsSubmittability(false, this.initialSubmitButtonText);"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }"},{"lineNumber":247,"author":{"gitId":"-"},"content":" );"},{"lineNumber":248,"author":{"gitId":"-"},"content":" };"},{"lineNumber":249,"author":{"gitId":"-"},"content":" reader.readAsDataURL(file);"},{"lineNumber":250,"author":{"gitId":"-"},"content":" }"},{"lineNumber":251,"author":{"gitId":"-"},"content":""},{"lineNumber":252,"author":{"gitId":"Eclipse-Dominator"},"content":" onPaste(event: ClipboardEvent) {"},{"lineNumber":253,"author":{"gitId":"Eclipse-Dominator"},"content":" // the text area is not changed at this point"},{"lineNumber":254,"author":{"gitId":"Eclipse-Dominator"},"content":" this.history.forceSave(null, true, false);"},{"lineNumber":255,"author":{"gitId":"-"},"content":" const items \u003d event.clipboardData.items;"},{"lineNumber":256,"author":{"gitId":"-"},"content":" let blob \u003d null;"},{"lineNumber":257,"author":{"gitId":"-"},"content":" for (const item of items) {"},{"lineNumber":258,"author":{"gitId":"-"},"content":" if (item.type.indexOf(\u0027image\u0027) \u003d\u003d\u003d 0) {"},{"lineNumber":259,"author":{"gitId":"-"},"content":" blob \u003d item.getAsFile();"},{"lineNumber":260,"author":{"gitId":"Eclipse-Dominator"},"content":" event.stopPropagation();"},{"lineNumber":261,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":262,"author":{"gitId":"-"},"content":" }"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }"},{"lineNumber":264,"author":{"gitId":"-"},"content":" if (blob) {"},{"lineNumber":265,"author":{"gitId":"-"},"content":" this.readAndUploadFile(blob);"},{"lineNumber":266,"author":{"gitId":"-"},"content":" }"},{"lineNumber":267,"author":{"gitId":"-"},"content":" }"},{"lineNumber":268,"author":{"gitId":"-"},"content":""},{"lineNumber":269,"author":{"gitId":"Eclipse-Dominator"},"content":" handleBeforeInputChange(event: InputEvent): void {"},{"lineNumber":270,"author":{"gitId":"Eclipse-Dominator"},"content":" switch (event.inputType) {"},{"lineNumber":271,"author":{"gitId":"Eclipse-Dominator"},"content":" case \u0027historyUndo\u0027:"},{"lineNumber":272,"author":{"gitId":"Eclipse-Dominator"},"content":" case \u0027historyRedo\u0027:"},{"lineNumber":273,"author":{"gitId":"Eclipse-Dominator"},"content":" // ignore these events that doesn\u0027t modify the text"},{"lineNumber":274,"author":{"gitId":"Eclipse-Dominator"},"content":" event.preventDefault();"},{"lineNumber":275,"author":{"gitId":"Eclipse-Dominator"},"content":" break;"},{"lineNumber":276,"author":{"gitId":"Eclipse-Dominator"},"content":" case \u0027insertFromPaste\u0027:"},{"lineNumber":277,"author":{"gitId":"Eclipse-Dominator"},"content":" // paste events will be handled exclusively by onPaste"},{"lineNumber":278,"author":{"gitId":"Eclipse-Dominator"},"content":" break;"},{"lineNumber":279,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":280,"author":{"gitId":"Eclipse-Dominator"},"content":" default:"},{"lineNumber":281,"author":{"gitId":"Eclipse-Dominator"},"content":" this.history.updateBeforeChange();"},{"lineNumber":282,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":283,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":284,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":285,"author":{"gitId":"Eclipse-Dominator"},"content":" handleInputChange(event: InputEvent): void {"},{"lineNumber":286,"author":{"gitId":"Eclipse-Dominator"},"content":" switch (event.inputType) {"},{"lineNumber":287,"author":{"gitId":"Eclipse-Dominator"},"content":" case \u0027historyUndo\u0027:"},{"lineNumber":288,"author":{"gitId":"Eclipse-Dominator"},"content":" case \u0027historyRedo\u0027:"},{"lineNumber":289,"author":{"gitId":"Eclipse-Dominator"},"content":" // ignore these events that doesn\u0027t modify the text"},{"lineNumber":290,"author":{"gitId":"Eclipse-Dominator"},"content":" event.preventDefault();"},{"lineNumber":291,"author":{"gitId":"Eclipse-Dominator"},"content":" break;"},{"lineNumber":292,"author":{"gitId":"Eclipse-Dominator"},"content":" case \u0027insertFromPaste\u0027:"},{"lineNumber":293,"author":{"gitId":"Eclipse-Dominator"},"content":" // paste events will be handled exclusively by onPaste"},{"lineNumber":294,"author":{"gitId":"Eclipse-Dominator"},"content":" break;"},{"lineNumber":295,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":296,"author":{"gitId":"Eclipse-Dominator"},"content":" default:"},{"lineNumber":297,"author":{"gitId":"Eclipse-Dominator"},"content":" this.history.createDelayedSave();"},{"lineNumber":298,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":299,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":300,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":301,"author":{"gitId":"Eclipse-Dominator"},"content":" private undo(): void {"},{"lineNumber":302,"author":{"gitId":"Eclipse-Dominator"},"content":" const entry \u003d this.history.undo();"},{"lineNumber":303,"author":{"gitId":"Eclipse-Dominator"},"content":" if (entry \u003d\u003d\u003d null) {"},{"lineNumber":304,"author":{"gitId":"Eclipse-Dominator"},"content":" return;"},{"lineNumber":305,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":306,"author":{"gitId":"Eclipse-Dominator"},"content":" this.commentField.setValue(entry.text);"},{"lineNumber":307,"author":{"gitId":"Eclipse-Dominator"},"content":" this.commentTextArea.nativeElement.setSelectionRange(entry.selectStart, entry.selectEnd);"},{"lineNumber":308,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":309,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":310,"author":{"gitId":"Eclipse-Dominator"},"content":" private redo(): void {"},{"lineNumber":311,"author":{"gitId":"Eclipse-Dominator"},"content":" const entry \u003d this.history.redo();"},{"lineNumber":312,"author":{"gitId":"Eclipse-Dominator"},"content":" if (entry \u003d\u003d\u003d null) {"},{"lineNumber":313,"author":{"gitId":"Eclipse-Dominator"},"content":" return;"},{"lineNumber":314,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":315,"author":{"gitId":"Eclipse-Dominator"},"content":" this.commentTextArea.nativeElement.value \u003d entry.text;"},{"lineNumber":316,"author":{"gitId":"Eclipse-Dominator"},"content":" this.commentTextArea.nativeElement.setSelectionRange(entry.selectStart, entry.selectEnd);"},{"lineNumber":317,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":318,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":319,"author":{"gitId":"-"},"content":" get isInErrorState(): boolean {"},{"lineNumber":320,"author":{"gitId":"-"},"content":" return !!this.uploadErrorMessage;"},{"lineNumber":321,"author":{"gitId":"-"},"content":" }"},{"lineNumber":322,"author":{"gitId":"-"},"content":""},{"lineNumber":323,"author":{"gitId":"-"},"content":" private handleUploadError(error, insertedText: string) {"},{"lineNumber":324,"author":{"gitId":"-"},"content":" if (error instanceof HttpErrorResponse) {"},{"lineNumber":325,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":326,"author":{"gitId":"-"},"content":" this.uploadErrorMessage \u003d \u0027Something went wrong while uploading your file. Please try again.\u0027;"},{"lineNumber":327,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":328,"author":{"gitId":"-"},"content":" this.uploadErrorMessage \u003d error;"},{"lineNumber":329,"author":{"gitId":"-"},"content":" }"},{"lineNumber":330,"author":{"gitId":"-"},"content":" this.commentField.setValue(this.commentField.value.replace(insertedText, \u0027\u0027));"},{"lineNumber":331,"author":{"gitId":"Eclipse-Dominator"},"content":" this.history.forceSave();"},{"lineNumber":332,"author":{"gitId":"-"},"content":" }"},{"lineNumber":333,"author":{"gitId":"-"},"content":""},{"lineNumber":334,"author":{"gitId":"-"},"content":" private removeHighlightBorderStyle() {"},{"lineNumber":335,"author":{"gitId":"-"},"content":" this.dragActiveCounter--;"},{"lineNumber":336,"author":{"gitId":"-"},"content":" if (this.dragActiveCounter \u003d\u003d\u003d 0) {"},{"lineNumber":337,"author":{"gitId":"-"},"content":" // To make sure when dragging over a child element, drop area is still highlight."},{"lineNumber":338,"author":{"gitId":"-"},"content":" this.dropArea.nativeElement.classList.remove(\u0027highlight-drag-box\u0027);"},{"lineNumber":339,"author":{"gitId":"-"},"content":" this.dropArea.nativeElement.classList.remove(\u0027highlight-drag-box-disabled\u0027);"},{"lineNumber":340,"author":{"gitId":"-"},"content":" }"},{"lineNumber":341,"author":{"gitId":"-"},"content":" }"},{"lineNumber":342,"author":{"gitId":"-"},"content":""},{"lineNumber":343,"author":{"gitId":"Eclipse-Dominator"},"content":" private isControlKeyPressed(event: KeyboardEvent) {"},{"lineNumber":344,"author":{"gitId":"-"},"content":" if (navigator.platform.indexOf(\u0027Mac\u0027) \u003d\u003d\u003d 0) {"},{"lineNumber":345,"author":{"gitId":"-"},"content":" return event.metaKey;"},{"lineNumber":346,"author":{"gitId":"-"},"content":" }"},{"lineNumber":347,"author":{"gitId":"-"},"content":" return event.ctrlKey;"},{"lineNumber":348,"author":{"gitId":"-"},"content":" }"},{"lineNumber":349,"author":{"gitId":"-"},"content":""},{"lineNumber":350,"author":{"gitId":"Eclipse-Dominator"},"content":" private isUndo(event: KeyboardEvent) {"},{"lineNumber":351,"author":{"gitId":"Eclipse-Dominator"},"content":" // prevents undo from firing when ctrl shift z is pressed"},{"lineNumber":352,"author":{"gitId":"Eclipse-Dominator"},"content":" if (navigator.platform.indexOf(\u0027Mac\u0027) \u003d\u003d\u003d 0) {"},{"lineNumber":353,"author":{"gitId":"Eclipse-Dominator"},"content":" return event.metaKey \u0026\u0026 event.code \u003d\u003d\u003d \u0027KeyZ\u0027 \u0026\u0026 !event.shiftKey;"},{"lineNumber":354,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":355,"author":{"gitId":"Eclipse-Dominator"},"content":" return event.ctrlKey \u0026\u0026 event.code \u003d\u003d\u003d \u0027KeyZ\u0027 \u0026\u0026 !event.shiftKey;"},{"lineNumber":356,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":357,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":358,"author":{"gitId":"Eclipse-Dominator"},"content":" private isRedo(event: KeyboardEvent) {"},{"lineNumber":359,"author":{"gitId":"Eclipse-Dominator"},"content":" if (navigator.platform.indexOf(\u0027Mac\u0027) \u003d\u003d\u003d 0) {"},{"lineNumber":360,"author":{"gitId":"Eclipse-Dominator"},"content":" return event.metaKey \u0026\u0026 event.shiftKey \u0026\u0026 event.code \u003d\u003d\u003d \u0027KeyZ\u0027;"},{"lineNumber":361,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":362,"author":{"gitId":"Eclipse-Dominator"},"content":" return (event.ctrlKey \u0026\u0026 event.shiftKey \u0026\u0026 event.code \u003d\u003d\u003d \u0027KeyZ\u0027) || (event.ctrlKey \u0026\u0026 event.code \u003d\u003d\u003d \u0027KeyY\u0027);"},{"lineNumber":363,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":364,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":365,"author":{"gitId":"-"},"content":" private insertOrRemoveCharsFromHighlightedText(char) {"},{"lineNumber":366,"author":{"gitId":"-"},"content":" const selectionStart \u003d this.commentTextArea.nativeElement.selectionStart;"},{"lineNumber":367,"author":{"gitId":"-"},"content":" const selectionEnd \u003d this.commentTextArea.nativeElement.selectionEnd;"},{"lineNumber":368,"author":{"gitId":"Eclipse-Dominator"},"content":" const currentText \u003d this.commentTextArea.nativeElement.value;"},{"lineNumber":369,"author":{"gitId":"-"},"content":" const highlightedText \u003d currentText.slice(selectionStart, selectionEnd);"},{"lineNumber":370,"author":{"gitId":"-"},"content":" const highlightedTextTrimmed \u003d highlightedText.trim();"},{"lineNumber":371,"author":{"gitId":"-"},"content":" const spacesRemovedLeft \u003d highlightedText.trimRight().length - highlightedTextTrimmed.length;"},{"lineNumber":372,"author":{"gitId":"-"},"content":" const spacesRemovedRight \u003d highlightedText.trimLeft().length - highlightedTextTrimmed.length;"},{"lineNumber":373,"author":{"gitId":"-"},"content":""},{"lineNumber":374,"author":{"gitId":"-"},"content":" if (this.hasCharsBeforeAndAfterHighlight(selectionStart, selectionEnd, currentText, char)) {"},{"lineNumber":375,"author":{"gitId":"-"},"content":" this.removeCharsBeforeAndAfterHighlightedText(selectionStart, selectionEnd, currentText, highlightedText, char);"},{"lineNumber":376,"author":{"gitId":"-"},"content":" } else if (this.hasCharsInTrimmedHighlight(highlightedText, char)) {"},{"lineNumber":377,"author":{"gitId":"-"},"content":" this.removeCharsFromHighlightedText("},{"lineNumber":378,"author":{"gitId":"-"},"content":" selectionStart,"},{"lineNumber":379,"author":{"gitId":"-"},"content":" selectionEnd,"},{"lineNumber":380,"author":{"gitId":"-"},"content":" currentText,"},{"lineNumber":381,"author":{"gitId":"-"},"content":" highlightedTextTrimmed,"},{"lineNumber":382,"author":{"gitId":"-"},"content":" char,"},{"lineNumber":383,"author":{"gitId":"-"},"content":" spacesRemovedLeft,"},{"lineNumber":384,"author":{"gitId":"-"},"content":" spacesRemovedRight"},{"lineNumber":385,"author":{"gitId":"-"},"content":" );"},{"lineNumber":386,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":387,"author":{"gitId":"-"},"content":" this.insertCharsToHighlightedText("},{"lineNumber":388,"author":{"gitId":"-"},"content":" selectionStart,"},{"lineNumber":389,"author":{"gitId":"-"},"content":" selectionEnd,"},{"lineNumber":390,"author":{"gitId":"-"},"content":" currentText,"},{"lineNumber":391,"author":{"gitId":"-"},"content":" highlightedTextTrimmed,"},{"lineNumber":392,"author":{"gitId":"-"},"content":" char,"},{"lineNumber":393,"author":{"gitId":"-"},"content":" spacesRemovedLeft,"},{"lineNumber":394,"author":{"gitId":"-"},"content":" spacesRemovedRight"},{"lineNumber":395,"author":{"gitId":"-"},"content":" );"},{"lineNumber":396,"author":{"gitId":"-"},"content":" }"},{"lineNumber":397,"author":{"gitId":"-"},"content":" }"},{"lineNumber":398,"author":{"gitId":"-"},"content":""},{"lineNumber":399,"author":{"gitId":"-"},"content":" private hasCharsBeforeAndAfterHighlight(selectionStart, selectionEnd, currentText, char) {"},{"lineNumber":400,"author":{"gitId":"-"},"content":" const hasInsertedCharBefore \u003d currentText.slice(selectionStart - char.length, selectionStart) \u003d\u003d\u003d char;"},{"lineNumber":401,"author":{"gitId":"-"},"content":" const hasInsertedCharAfter \u003d currentText.slice(selectionEnd, selectionEnd + char.length) \u003d\u003d\u003d char;"},{"lineNumber":402,"author":{"gitId":"-"},"content":" return hasInsertedCharBefore \u0026\u0026 hasInsertedCharAfter;"},{"lineNumber":403,"author":{"gitId":"-"},"content":" }"},{"lineNumber":404,"author":{"gitId":"-"},"content":""},{"lineNumber":405,"author":{"gitId":"-"},"content":" private hasCharsInTrimmedHighlight(highlightedText, char) {"},{"lineNumber":406,"author":{"gitId":"-"},"content":" const highlightedTextTrimmed \u003d highlightedText.trim();"},{"lineNumber":407,"author":{"gitId":"-"},"content":" const hasCharAtFront \u003d highlightedTextTrimmed.slice(0, char.length) \u003d\u003d\u003d char;"},{"lineNumber":408,"author":{"gitId":"-"},"content":" const hasCharAtEnd \u003d highlightedTextTrimmed.slice(-char.length) \u003d\u003d\u003d char;"},{"lineNumber":409,"author":{"gitId":"-"},"content":" return hasCharAtFront \u0026\u0026 hasCharAtEnd;"},{"lineNumber":410,"author":{"gitId":"-"},"content":" }"},{"lineNumber":411,"author":{"gitId":"-"},"content":""},{"lineNumber":412,"author":{"gitId":"-"},"content":" private removeCharsBeforeAndAfterHighlightedText(selectionStart, selectionEnd, currentText, highlightedText, char) {"},{"lineNumber":413,"author":{"gitId":"-"},"content":" this.commentField.setValue("},{"lineNumber":414,"author":{"gitId":"-"},"content":" currentText.slice(0, selectionStart - char.length) + highlightedText + currentText.slice(selectionEnd + char.length)"},{"lineNumber":415,"author":{"gitId":"-"},"content":" );"},{"lineNumber":416,"author":{"gitId":"-"},"content":" this.commentTextArea.nativeElement.setSelectionRange(selectionStart - char.length, selectionEnd - char.length);"},{"lineNumber":417,"author":{"gitId":"-"},"content":" }"},{"lineNumber":418,"author":{"gitId":"-"},"content":""},{"lineNumber":419,"author":{"gitId":"-"},"content":" private removeCharsFromHighlightedText("},{"lineNumber":420,"author":{"gitId":"-"},"content":" selectionStart,"},{"lineNumber":421,"author":{"gitId":"-"},"content":" selectionEnd,"},{"lineNumber":422,"author":{"gitId":"-"},"content":" currentText,"},{"lineNumber":423,"author":{"gitId":"-"},"content":" highlightedTextTrimmed,"},{"lineNumber":424,"author":{"gitId":"-"},"content":" char,"},{"lineNumber":425,"author":{"gitId":"-"},"content":" spacesRemovedLeft,"},{"lineNumber":426,"author":{"gitId":"-"},"content":" spacesRemovedRight"},{"lineNumber":427,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":428,"author":{"gitId":"-"},"content":" this.commentField.setValue("},{"lineNumber":429,"author":{"gitId":"-"},"content":" currentText.slice(0, selectionStart) +"},{"lineNumber":430,"author":{"gitId":"-"},"content":" SPACE.repeat(spacesRemovedLeft) +"},{"lineNumber":431,"author":{"gitId":"-"},"content":" highlightedTextTrimmed.slice(char.length, -char.length) +"},{"lineNumber":432,"author":{"gitId":"-"},"content":" SPACE.repeat(spacesRemovedRight) +"},{"lineNumber":433,"author":{"gitId":"-"},"content":" currentText.slice(selectionEnd)"},{"lineNumber":434,"author":{"gitId":"-"},"content":" );"},{"lineNumber":435,"author":{"gitId":"-"},"content":" this.commentTextArea.nativeElement.setSelectionRange("},{"lineNumber":436,"author":{"gitId":"-"},"content":" selectionStart + spacesRemovedLeft,"},{"lineNumber":437,"author":{"gitId":"-"},"content":" selectionEnd - 2 * char.length - spacesRemovedRight"},{"lineNumber":438,"author":{"gitId":"-"},"content":" );"},{"lineNumber":439,"author":{"gitId":"-"},"content":" }"},{"lineNumber":440,"author":{"gitId":"-"},"content":""},{"lineNumber":441,"author":{"gitId":"-"},"content":" private insertCharsToHighlightedText("},{"lineNumber":442,"author":{"gitId":"-"},"content":" selectionStart,"},{"lineNumber":443,"author":{"gitId":"-"},"content":" selectionEnd,"},{"lineNumber":444,"author":{"gitId":"-"},"content":" currentText,"},{"lineNumber":445,"author":{"gitId":"-"},"content":" highlightedTextTrimmed,"},{"lineNumber":446,"author":{"gitId":"-"},"content":" char,"},{"lineNumber":447,"author":{"gitId":"-"},"content":" spacesRemovedLeft,"},{"lineNumber":448,"author":{"gitId":"-"},"content":" spacesRemovedRight"},{"lineNumber":449,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":450,"author":{"gitId":"-"},"content":" this.commentField.setValue("},{"lineNumber":451,"author":{"gitId":"-"},"content":" currentText.slice(0, selectionStart) +"},{"lineNumber":452,"author":{"gitId":"-"},"content":" SPACE.repeat(spacesRemovedLeft) +"},{"lineNumber":453,"author":{"gitId":"-"},"content":" char +"},{"lineNumber":454,"author":{"gitId":"-"},"content":" highlightedTextTrimmed +"},{"lineNumber":455,"author":{"gitId":"-"},"content":" char +"},{"lineNumber":456,"author":{"gitId":"-"},"content":" SPACE.repeat(spacesRemovedRight) +"},{"lineNumber":457,"author":{"gitId":"-"},"content":" currentText.slice(selectionEnd)"},{"lineNumber":458,"author":{"gitId":"-"},"content":" );"},{"lineNumber":459,"author":{"gitId":"-"},"content":" this.commentTextArea.nativeElement.setSelectionRange("},{"lineNumber":460,"author":{"gitId":"-"},"content":" selectionStart + char.length + spacesRemovedLeft,"},{"lineNumber":461,"author":{"gitId":"-"},"content":" selectionEnd + char.length - spacesRemovedRight"},{"lineNumber":462,"author":{"gitId":"-"},"content":" );"},{"lineNumber":463,"author":{"gitId":"-"},"content":" }"},{"lineNumber":464,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":110,"vigneshsankariyer1234567890":1,"-":353}},{"path":"src/app/shared/comment-editor/markdown-toolbar/markdown-toolbar.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c!-- A toolbar component for text area. --\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003c!-- Provided by a third-party library: https://github.com/github/markdown-toolbar-element --\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003cmarkdown-toolbar [attr.for]\u003d\"forTextAreaId\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cmd-bold\u003e"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add bold text\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eformat_bold\u003c/mat-icon\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003c/md-bold\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cmd-italic\u003e"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add italic text\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eformat_italic\u003c/mat-icon\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/md-italic\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cmd-header\u003e"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add heading text\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003etitle\u003c/mat-icon\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/md-header\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cmd-quote\u003e"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add a quote\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eformat_quote\u003c/mat-icon\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/md-quote\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cmd-code\u003e"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add code\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003ecode\u003c/mat-icon\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/md-code\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cmd-link\u003e"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add a link\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003elink\u003c/mat-icon\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/md-link\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cmd-image\u003e"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add a image via link\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eimage\u003c/mat-icon\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/md-image\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cmd-unordered-list\u003e"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add a bulleted list\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eformat_list_bulleted\u003c/mat-icon\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/md-unordered-list\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cmd-ordered-list\u003e"},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add a numbered list\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eformat_list_numbered\u003c/mat-icon\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/md-ordered-list\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cmd-task-list\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cmd-header\u003e"},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton matTooltip\u003d\"Add a task list\" mat-icon-button color\u003d\"accent\"\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003etask\u003c/mat-icon\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/md-header\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/md-task-list\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003c/markdown-toolbar\u003e"}],"authorContributionMap":{"Eclipse-Dominator":10,"-":46}},{"path":"src/app/shared/error-toasters/error-toaster.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { CommonModule } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MaterialModule } from \u0027../material.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { FormErrorComponent } from \u0027./form-error/form-error.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GeneralMessageErrorComponent } from \u0027./general-message-error/general-message-error.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { InvalidCredentialsErrorComponent } from \u0027./invalid-credentials-error/invalid-credentials-error.component\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { ToasterComponent } from \u0027./toaster/toaster.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":10,"author":{"gitId":"-"},"content":" imports: [CommonModule, MaterialModule],"},{"lineNumber":11,"author":{"gitId":"-"},"content":" declarations: [GeneralMessageErrorComponent, FormErrorComponent, InvalidCredentialsErrorComponent, ToasterComponent],"},{"lineNumber":12,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" exports: [GeneralMessageErrorComponent, FormErrorComponent, InvalidCredentialsErrorComponent]"},{"lineNumber":13,"author":{"gitId":"-"},"content":"})"},{"lineNumber":14,"author":{"gitId":"-"},"content":"export class ErrorToasterModule {}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":13}},{"path":"src/app/shared/error-toasters/invalid-credentials-error/invalid-credentials-error.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatSnackBarRef, MAT_SNACK_BAR_DATA } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"-"},"content":" selector: \u0027app-form-error\u0027,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" templateUrl: \u0027./invalid-credentials-error.component.html\u0027"},{"lineNumber":7,"author":{"gitId":"-"},"content":"})"},{"lineNumber":8,"author":{"gitId":"-"},"content":"export class InvalidCredentialsErrorComponent {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" constructor(public snackBarRef: MatSnackBarRef\u003cInvalidCredentialsErrorComponent\u003e, @Inject(MAT_SNACK_BAR_DATA) public data: any) {}"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":9}},{"path":"src/app/shared/issue-tables/IssuesDataTable.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { DataSource } from \u0027@angular/cdk/table\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { BehaviorSubject, merge, Observable, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"import { map } from \u0027rxjs/operators\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { paginateData } from \u0027./issue-paginator\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { getSortedData } from \u0027./issue-sorter\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { applySearchFilter } from \u0027./search-filter\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"export class IssuesDataTable extends DataSource\u003cIssue\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private filterChange \u003d new BehaviorSubject(\u0027\u0027);"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private teamFilterChange \u003d new BehaviorSubject(\u0027\u0027);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private issuesSubject \u003d new BehaviorSubject\u003cIssue[]\u003e([]);"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private issueSubscription: Subscription;"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":" public isLoading$ \u003d this.issueService.isLoading.asObservable();"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":21,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private sort: MatSort,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private paginator: MatPaginator,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private displayedColumn: string[],"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private defaultFilter?: (issue: Issue) \u003d\u003e boolean"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" super();"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" connect(): Observable\u003cIssue[]\u003e {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return this.issuesSubject.asObservable();"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" disconnect() {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.filterChange.complete();"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.teamFilterChange.complete();"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.issuesSubject.complete();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.issueSubscription.unsubscribe();"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.issueService.stopPollIssues();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" loadIssues() {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" const displayDataChanges \u003d ["},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.issueService.issues$,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.paginator.page,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.sort.sortChange,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.filterChange,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.teamFilterChange"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.issueService.startPollIssues();"},{"lineNumber":52,"author":{"gitId":"Eclipse-Dominator"},"content":" this.issueSubscription \u003d merge(...displayDataChanges)"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":54,"author":{"gitId":"-"},"content":" map(() \u003d\u003e {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" let data \u003d \u003cIssue[]\u003eObject.values(this.issueService.issues$.getValue()).reverse();"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (this.defaultFilter) {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" data \u003d data.filter(this.defaultFilter);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }"},{"lineNumber":59,"author":{"gitId":"-"},"content":" data \u003d getSortedData(this.sort, data);"},{"lineNumber":60,"author":{"gitId":"-"},"content":" data \u003d this.getFilteredTeamData(data);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" data \u003d applySearchFilter(this.filter, this.displayedColumn, this.issueService, data);"},{"lineNumber":62,"author":{"gitId":"-"},"content":" data \u003d paginateData(this.paginator, data);"},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"-"},"content":" return data;"},{"lineNumber":65,"author":{"gitId":"-"},"content":" })"},{"lineNumber":66,"author":{"gitId":"-"},"content":" )"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .subscribe((issues) \u003d\u003e {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.issuesSubject.next(issues);"},{"lineNumber":69,"author":{"gitId":"-"},"content":" });"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":" get filter(): string {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this.filterChange.value;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" set filter(filter: string) {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.filterChange.next(filter);"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" get teamFilter(): string {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this.teamFilterChange.value;"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }"},{"lineNumber":83,"author":{"gitId":"-"},"content":""},{"lineNumber":84,"author":{"gitId":"-"},"content":" set teamFilter(teamFilter: string) {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.teamFilterChange.next(teamFilter);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.issueService.setIssueTeamFilter(this.teamFilterChange.value);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" private getFilteredTeamData(data: Issue[]): Issue[] {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return data.filter((issue) \u003d\u003e {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!this.teamFilter || this.teamFilter \u003d\u003d\u003d \u0027All Teams\u0027) {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return issue.teamAssigned.id \u003d\u003d\u003d this.teamFilter;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" });"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":2,"-":95}},{"path":"src/app/shared/issue-tables/issue-tables-columns.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"export enum TABLE_COLUMNS {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" ID \u003d \u0027id\u0027,"},{"lineNumber":3,"author":{"gitId":"-"},"content":" TITLE \u003d \u0027title\u0027,"},{"lineNumber":4,"author":{"gitId":"-"},"content":" TEAM_ASSIGNED \u003d \u0027teamAssigned\u0027,"},{"lineNumber":5,"author":{"gitId":"-"},"content":" TYPE \u003d \u0027type\u0027,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" SEVERITY \u003d \u0027severity\u0027,"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" RESPONSE \u003d \u0027response\u0027,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" TESTER_DISAGREE \u003d \u0027testerDisagree\u0027,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" ASSIGNEE \u003d \u0027assignees\u0027,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" DUPLICATED_ISSUES \u003d \u0027duplicatedIssues\u0027,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" TODO \u003d \u0027Todo Remaining\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" ACTIONS \u003d \u0027actions\u0027"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":12}},{"path":"src/app/shared/issue-tables/issue-tables.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cmat-table [dataSource]\u003d\"this.issues\" matSort class\u003d\"mat-elevation-z8\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003c!-- ID Column --\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"id\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e ID \u003c/mat-header-cell\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cspan (click)\u003d\"$event.stopPropagation()\" style\u003d\"cursor: default\"\u003e{{ issue.id }}\u003c/span\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c!-- Title Column --\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"title\"\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Title \u003c/mat-header-cell\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ca class\u003d\"no-underline link-grey-dark title-wrap\" [routerLink]\u003d\"\u0027issues/\u0027 + issue.id\"\u003e {{ issue.title }} \u003c/a\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c!-- Team Assigned Column --\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cng-container *ngIf\u003d\"userService.currentUser.role !\u003d\u003d \u0027Student\u0027\" matColumnDef\u003d\"teamAssigned\"\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Team \u003c/mat-header-cell\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e {{ (issue.teamAssigned \u0026\u0026 issue.teamAssigned.id) || \u0027-\u0027 }} \u003c/mat-cell\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Type Column --\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"type\"\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Type \u003c/mat-header-cell\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":29,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"this.labelService.setLabelStyle(this.labelService.getColorOfLabel(\u0027type\u0027, issue.type))\""},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" {{ issue.type || \u0027-\u0027 }}"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":35,"author":{"gitId":"-"},"content":" *ngIf\u003d\"issue.teamChosenType \u0026\u0026 issue.teamChosenType !\u003d issue.type\""},{"lineNumber":36,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":37,"author":{"gitId":"-"},"content":" style\u003d\"display: inline; padding: 1px 2px\""},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cmat-icon class\u003d\"arrow-right\"\u003earrow_right_alt\u003c/mat-icon\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *ngIf\u003d\"issue.teamChosenType \u0026\u0026 issue.teamChosenType !\u003d issue.type\""},{"lineNumber":43,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":44,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"this.labelService.setLabelStyle(this.labelService.getColorOfLabel(\u0027type\u0027, issue.teamChosenType))\""},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" {{ issue.teamChosenType }}"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c!-- Severity Column --\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"severity\"\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Severity \u003c/mat-header-cell\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":56,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":57,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"this.labelService.setLabelStyle(this.labelService.getColorOfLabel(\u0027severity\u0027, issue.severity))\""},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":59,"author":{"gitId":"-"},"content":" {{ issue.severity || \u0027-\u0027 }}"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":62,"author":{"gitId":"-"},"content":" *ngIf\u003d\"issue.teamChosenSeverity \u0026\u0026 issue.teamChosenSeverity !\u003d issue.severity\""},{"lineNumber":63,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":64,"author":{"gitId":"-"},"content":" style\u003d\"display: inline; margin: 3px\""},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003cmat-icon class\u003d\"arrow-right\"\u003earrow_right_alt\u003c/mat-icon\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *ngIf\u003d\"issue.teamChosenSeverity \u0026\u0026 issue.teamChosenSeverity !\u003d issue.severity\""},{"lineNumber":70,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":71,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"this.labelService.setLabelStyle(this.labelService.getColorOfLabel(\u0027severity\u0027, issue.teamChosenSeverity))\""},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":" {{ issue.teamChosenSeverity }}"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":76,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003c!--Response Tag Column--\u003e"},{"lineNumber":79,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cng-container matColumnDef\u003d\"response\"\u003e"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Response \u003c/mat-header-cell\u003e"},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":83,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":84,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" *ngIf\u003d\"issue.response\""},{"lineNumber":85,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" [ngStyle]\u003d\"this.labelService.setLabelStyle(this.labelService.getColorOfLabel(\u0027response\u0027, issue.response))\""},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":87,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" {{ issue.response }}"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":89,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cspan *ngIf\u003d\"!issue.response\" style\u003d\"margin-left: 10%\"\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003cmat-icon matTooltip\u003d\"Should not be empty\" matTooltipPosition\u003d\"above\" color\u003d\"warn\"\u003ewarning\u003c/mat-icon\u003e"},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003c!--Assignee Column--\u003e"},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"assignees\"\u003e"},{"lineNumber":97,"author":{"gitId":"-"},"content":" \u003cmat-header-cell mat-header-cell *matHeaderCellDef mat-sort-header\u003e Assignees \u003c/mat-header-cell\u003e"},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u003cspan (click)\u003d\"$event.stopPropagation()\" style\u003d\"cursor: default\" *ngIf\u003d\"issue.assignees.length !\u003d\u003d 0\"\u003e"},{"lineNumber":100,"author":{"gitId":"-"},"content":" {{ issue.assignees.join(\u0027, \u0027) }}"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"issue.assignees.length \u003d\u003d\u003d 0\" style\u003d\"margin-left: 5%\"\u003e"},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u003cmat-icon matTooltip\u003d\"We strongly recommend assigning all issues to someone\" matTooltipPosition\u003d\"above\" style\u003d\"color: #ffab40\"\u003e"},{"lineNumber":104,"author":{"gitId":"-"},"content":" warning"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u003c/mat-icon\u003e"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u003c!-- Duplicated Issues Column --\u003e"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"duplicatedIssues\"\u003e"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef\u003e Duplicates \u003c/mat-header-cell\u003e"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"(issueService.getDuplicateIssuesFor(issue) | async).length \u003d\u003d\u003d 0\"\u003e-\u003c/div\u003e"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u003cmat-chip-list"},{"lineNumber":116,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let duplicateIssue of issueService.getDuplicateIssuesFor(issue) | async\""},{"lineNumber":117,"author":{"gitId":"-"},"content":" style\u003d\"display: inline-block; margin-left: 5px\""},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":119,"author":{"gitId":"-"},"content":" \u003cmat-chip"},{"lineNumber":120,"author":{"gitId":"-"},"content":" [routerLink]\u003d\"[\u0027issues/\u0027 + duplicateIssue.id]\""},{"lineNumber":121,"author":{"gitId":"-"},"content":" [matTooltip]\u003d\"duplicateIssue.title\""},{"lineNumber":122,"author":{"gitId":"-"},"content":" matTooltipPosition\u003d\"above\""},{"lineNumber":123,"author":{"gitId":"-"},"content":" style\u003d\"font-size: 12px; cursor: pointer\""},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":125,"author":{"gitId":"-"},"content":" #{{ duplicateIssue.id }}"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \u003c/mat-chip\u003e"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u003c/mat-chip-list\u003e"},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":130,"author":{"gitId":"-"},"content":""},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u003c!-- To do Column --\u003e"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"Todo Remaining\"\u003e"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Todo Remaining \u003c/mat-header-cell\u003e"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"isTodoListChecked(issue) \u0026\u0026 issue.issueDisputes.length \u003e 0\"\u003e \u003cfont color\u003d\"green\"\u003eAll tasks are completed\u003c/font\u003e \u003c/span\u003e"},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"!isTodoListChecked(issue)\"\u003e"},{"lineNumber":137,"author":{"gitId":"-"},"content":" \u003cfont color\u003d\"red\""},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u003e{{ issue.issueDisputes.length - todoFinished(issue) }}/{{ issue.issueDisputes.length }} tasks pending.\u003c/font"},{"lineNumber":139,"author":{"gitId":"-"},"content":" \u003e\u003c/span"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003cprogress"},{"lineNumber":142,"author":{"gitId":"-"},"content":" *ngIf\u003d\"issue.issueDisputes.length \u003e 0\""},{"lineNumber":143,"author":{"gitId":"-"},"content":" value\u003d\"{{ todoFinished(issue) }}\""},{"lineNumber":144,"author":{"gitId":"-"},"content":" max\u003d\"{{ issue.issueDisputes.length }}\""},{"lineNumber":145,"author":{"gitId":"-"},"content":" role\u003d\"progressbar\""},{"lineNumber":146,"author":{"gitId":"-"},"content":" style\u003d\"width: 100%\""},{"lineNumber":147,"author":{"gitId":"-"},"content":" aria-valuenow\u003d\"100\""},{"lineNumber":148,"author":{"gitId":"-"},"content":" aria-valuemin\u003d\"0\""},{"lineNumber":149,"author":{"gitId":"-"},"content":" aria-valuemax\u003d\"100\""},{"lineNumber":150,"author":{"gitId":"-"},"content":" \u003e\u003c/progress\u003e"},{"lineNumber":151,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"issue.issueDisputes.length \u003d\u003d\u003d 0\"\u003e No Todo List for this issue \u003c/span\u003e"},{"lineNumber":152,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":153,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":154,"author":{"gitId":"-"},"content":""},{"lineNumber":155,"author":{"gitId":"-"},"content":" \u003c!--Tester Disagree Column--\u003e"},{"lineNumber":156,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"testerDisagree\"\u003e"},{"lineNumber":157,"author":{"gitId":"-"},"content":" \u003cmat-header-cell mat-header-cell *matHeaderCellDef mat-sort-header\u003eResponse\u003c/mat-header-cell\u003e"},{"lineNumber":158,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":159,"author":{"gitId":"-"},"content":" \u003c!-- Response Agree/Disagree colours are the same as Response Agree/Rejected label colours for uniformity in the app --\u003e"},{"lineNumber":160,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":161,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":162,"author":{"gitId":"-"},"content":" *ngIf\u003d\"issue.testerDisagree\""},{"lineNumber":163,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"this.labelService.setLabelStyle(this.labelService.getColorOfLabel(\u0027response\u0027, \u0027Rejected\u0027))\""},{"lineNumber":164,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":165,"author":{"gitId":"-"},"content":" Disagree"},{"lineNumber":166,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u003cspan"},{"lineNumber":168,"author":{"gitId":"-"},"content":" (click)\u003d\"$event.stopPropagation()\""},{"lineNumber":169,"author":{"gitId":"-"},"content":" *ngIf\u003d\"!issue.testerDisagree\""},{"lineNumber":170,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"this.labelService.setLabelStyle(this.labelService.getColorOfLabel(\u0027response\u0027, \u0027Accepted\u0027))\""},{"lineNumber":171,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Agree"},{"lineNumber":173,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":174,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":175,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":176,"author":{"gitId":"-"},"content":""},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u003c!-- Action Buttons Column --\u003e"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"actions\"\u003e"},{"lineNumber":179,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef\u003e Actions \u003c/mat-header-cell\u003e"},{"lineNumber":180,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let issue\"\u003e"},{"lineNumber":181,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":182,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":183,"author":{"gitId":"-"},"content":" matTooltip\u003d\"View this issue on GitHub\""},{"lineNumber":184,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isActionVisible(action_buttons.VIEW_IN_WEB)\""},{"lineNumber":185,"author":{"gitId":"-"},"content":" (click)\u003d\"this.viewIssueInBrowser(issue.id, $event)\""},{"lineNumber":186,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.8)\""},{"lineNumber":187,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eopen_in_new\u003c/mat-icon\u003e"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":190,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":191,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isResponseEditable() \u0026\u0026 !issue.status \u0026\u0026 this.isActionVisible(action_buttons.RESPOND_TO_ISSUE); else tryEditIssue\""},{"lineNumber":192,"author":{"gitId":"-"},"content":" [routerLink]\u003d\"\u0027issues/\u0027 + issue.id\""},{"lineNumber":193,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":194,"author":{"gitId":"-"},"content":" color\u003d\"accent\""},{"lineNumber":195,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.8)\""},{"lineNumber":196,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Respond to this issue\""},{"lineNumber":197,"author":{"gitId":"-"},"content":" (click)\u003d\"this.logIssueRespondRouting(issue.id)\""},{"lineNumber":198,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":199,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003efeedback\u003c/mat-icon\u003e"},{"lineNumber":200,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":201,"author":{"gitId":"-"},"content":" \u003cng-template #tryEditIssue\u003e"},{"lineNumber":202,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":203,"author":{"gitId":"-"},"content":" *ngIf\u003d\"permissions.isIssueEditable() \u0026\u0026 this.isActionVisible(action_buttons.FIX_ISSUE)\""},{"lineNumber":204,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":205,"author":{"gitId":"-"},"content":" color\u003d\"accent\""},{"lineNumber":206,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.8)\""},{"lineNumber":207,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Edit this issue\""},{"lineNumber":208,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":209,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eedit\u003c/mat-icon\u003e"},{"lineNumber":210,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":211,"author":{"gitId":"-"},"content":" \u003c/ng-template\u003e"},{"lineNumber":212,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":213,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isResponseEditable() \u0026\u0026 issue.status \u0026\u0026 this.isActionVisible(action_buttons.MARK_AS_RESPONDED)\""},{"lineNumber":214,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":215,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":216,"author":{"gitId":"-"},"content":" (click)\u003d\"markAsResponded(issue, $event)\""},{"lineNumber":217,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.8)\""},{"lineNumber":218,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Mark this issue as Responded\""},{"lineNumber":219,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003echeck_circle\u003c/mat-icon\u003e"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":223,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":224,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Mark this issue as Pending\""},{"lineNumber":225,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":226,"author":{"gitId":"-"},"content":" (click)\u003d\"markAsPending(issue, $event)\""},{"lineNumber":227,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.8)\""},{"lineNumber":228,"author":{"gitId":"-"},"content":" *ngIf\u003d\""},{"lineNumber":229,"author":{"gitId":"-"},"content":" (userService.currentUser.role \u003d\u003d\u003d \u0027Student\u0027 || userService.currentUser.role \u003d\u003d\u003d \u0027Admin\u0027) \u0026\u0026"},{"lineNumber":230,"author":{"gitId":"-"},"content":" this.isActionVisible(action_buttons.MARK_AS_PENDING)"},{"lineNumber":231,"author":{"gitId":"-"},"content":" \""},{"lineNumber":232,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":233,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003ecancel\u003c/mat-icon\u003e"},{"lineNumber":234,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":236,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":238,"author":{"gitId":"-"},"content":" *ngIf\u003d\"permissions.isIssueDeletable() \u0026\u0026 !issuesPendingDeletion[issue.id] \u0026\u0026 this.isActionVisible(action_buttons.DELETE_ISSUE)\""},{"lineNumber":239,"author":{"gitId":"-"},"content":" (click)\u003d\"openDeleteDialog(issue.id, $event); $event.stopPropagation()\""},{"lineNumber":240,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Delete this issue\""},{"lineNumber":241,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.8)\""},{"lineNumber":242,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":243,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003edelete_outline\u003c/mat-icon\u003e"},{"lineNumber":244,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":245,"author":{"gitId":"-"},"content":" \u003cmat-spinner"},{"lineNumber":246,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":247,"author":{"gitId":"-"},"content":" [diameter]\u003d\"25\""},{"lineNumber":248,"author":{"gitId":"-"},"content":" style\u003d\"display: inline; padding-right: 30px; margin-left: 5px\""},{"lineNumber":249,"author":{"gitId":"-"},"content":" *ngIf\u003d\"issuesPendingDeletion[issue.id] \u0026\u0026 this.isActionVisible(action_buttons.DELETE_ISSUE)\""},{"lineNumber":250,"author":{"gitId":"-"},"content":" \u003e\u003c/mat-spinner\u003e"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":253,"author":{"gitId":"-"},"content":""},{"lineNumber":254,"author":{"gitId":"-"},"content":" \u003cmat-header-row *matHeaderRowDef\u003d\"this.headers\"\u003e\u003c/mat-header-row\u003e\u003e"},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u003cmat-row"},{"lineNumber":256,"author":{"gitId":"-"},"content":" *matRowDef\u003d\"let issue; columns: this.headers\""},{"lineNumber":257,"author":{"gitId":"-"},"content":" (click)\u003d\"this.logIssueEditRouting(issue.id)\""},{"lineNumber":258,"author":{"gitId":"-"},"content":" [routerLink]\u003d\"\u0027issues/\u0027 + issue.id\""},{"lineNumber":259,"author":{"gitId":"-"},"content":" style\u003d\"cursor: pointer\""},{"lineNumber":260,"author":{"gitId":"-"},"content":" \u003e\u003c/mat-row\u003e"},{"lineNumber":261,"author":{"gitId":"-"},"content":"\u003c/mat-table\u003e"},{"lineNumber":262,"author":{"gitId":"-"},"content":"\u003cmat-card *ngIf\u003d\"this.issues.isLoading$ | async\" style\u003d\"display: flex; justify-content: center; align-items: center\"\u003e"},{"lineNumber":263,"author":{"gitId":"-"},"content":" \u003cmat-progress-spinner color\u003d\"primary\" mode\u003d\"indeterminate\" diameter\u003d\"50\" strokeWidth\u003d\"5\"\u003e\u003c/mat-progress-spinner\u003e"},{"lineNumber":264,"author":{"gitId":"-"},"content":"\u003c/mat-card\u003e"},{"lineNumber":265,"author":{"gitId":"-"},"content":"\u003cmat-paginator [pageSize]\u003d\"20\" [pageSizeOptions]\u003d\"[10, 20, 50]\"\u003e\u003c/mat-paginator\u003e"}],"authorContributionMap":{"vigneshsankariyer1234567890":5,"-":260}},{"path":"src/app/shared/issue-tables/issue-tables.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, Input, OnInit, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatSnackBar } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { finalize } from \u0027rxjs/operators\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Issue, STATUS } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../core/services/dialog.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../core/services/github.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../core/services/label.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../core/services/permission.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../core/services/user.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { UndoActionComponent } from \u0027../../shared/action-toasters/undo-action/undo-action.component\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { IssuesDataTable } from \u0027./IssuesDataTable\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"export enum ACTION_BUTTONS {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" VIEW_IN_WEB,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" MARK_AS_RESPONDED,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" MARK_AS_PENDING,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" RESPOND_TO_ISSUE,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" FIX_ISSUE,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" DELETE_ISSUE"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":29,"author":{"gitId":"-"},"content":" selector: \u0027app-issue-tables\u0027,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" templateUrl: \u0027./issue-tables.component.html\u0027,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./issue-tables.component.css\u0027]"},{"lineNumber":32,"author":{"gitId":"-"},"content":"})"},{"lineNumber":33,"author":{"gitId":"-"},"content":"export class IssueTablesComponent implements OnInit, AfterViewInit {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" snackBarAutoCloseTime \u003d 3000;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Input() headers: string[];"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Input() actions: ACTION_BUTTONS[];"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Input() filters?: any \u003d undefined;"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" @ViewChild(MatSort, { static: true }) sort: MatSort;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" issues: IssuesDataTable;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" issuesPendingDeletion: { [id: number]: boolean };"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" public readonly action_buttons \u003d ACTION_BUTTONS;"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Messages for the modal popup window upon deleting an issue"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private readonly deleteIssueModalMessages \u003d [\u0027Do you wish to delete this issue?\u0027, \u0027This action is irreversible!\u0027];"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private readonly yesButtonModalMessage \u003d \u0027Yes, I wish to delete this issue\u0027;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private readonly noButtonModalMessage \u003d \"No, I don\u0027t wish to delete this issue\";"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":54,"author":{"gitId":"-"},"content":" public userService: UserService,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public permissions: PermissionService,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public labelService: LabelService,"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public issueService: IssueService,"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private logger: LoggingService,"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private dialogService: DialogService,"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private snackBar: MatSnackBar \u003d null"},{"lineNumber":64,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.issues \u003d new IssuesDataTable(this.issueService, this.sort, this.paginator, this.headers, this.filters);"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.issuesPendingDeletion \u003d {};"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.issues.loadIssues();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" });"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":" isActionVisible(action: ACTION_BUTTONS): boolean {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this.actions.includes(action);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" markAsResponded(issue: Issue, event: Event) {"},{"lineNumber":82,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`IssueTablesComponent: Marking Issue ${issue.id} as Responded`);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" const newIssue \u003d issue.clone(this.phaseService.currentPhase);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" newIssue.status \u003d STATUS.Done;"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.issueService.updateIssue(newIssue).subscribe("},{"lineNumber":86,"author":{"gitId":"-"},"content":" (updatedIssue) \u003d\u003e {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.issueService.updateLocalStore(updatedIssue);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" },"},{"lineNumber":89,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }"},{"lineNumber":92,"author":{"gitId":"-"},"content":" );"},{"lineNumber":93,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }"},{"lineNumber":95,"author":{"gitId":"-"},"content":""},{"lineNumber":96,"author":{"gitId":"-"},"content":" isResponseEditable() {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return this.permissions.isTeamResponseEditable() || this.permissions.isTesterResponseEditable();"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":""},{"lineNumber":100,"author":{"gitId":"-"},"content":" markAsPending(issue: Issue, event: Event) {"},{"lineNumber":101,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`IssueTablesComponent: Marking Issue ${issue.id} as Pending`);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" const newIssue \u003d issue.clone(this.phaseService.currentPhase);"},{"lineNumber":103,"author":{"gitId":"-"},"content":" newIssue.status \u003d STATUS.Incomplete;"},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.issueService.updateIssue(newIssue).subscribe("},{"lineNumber":105,"author":{"gitId":"-"},"content":" (updatedIssue) \u003d\u003e {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.issueService.updateLocalStore(updatedIssue);"},{"lineNumber":107,"author":{"gitId":"-"},"content":" },"},{"lineNumber":108,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }"},{"lineNumber":111,"author":{"gitId":"-"},"content":" );"},{"lineNumber":112,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"-"},"content":" logIssueRespondRouting(id: number) {"},{"lineNumber":116,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`IssueTablesComponent: Proceeding to Respond to Issue ${id}`);"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }"},{"lineNumber":118,"author":{"gitId":"-"},"content":""},{"lineNumber":119,"author":{"gitId":"-"},"content":" logIssueEditRouting(id: number) {"},{"lineNumber":120,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`IssueTablesComponent: Proceeding to Edit Issue ${id}`);"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }"},{"lineNumber":122,"author":{"gitId":"-"},"content":""},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Gets the number of resolved disputes."},{"lineNumber":125,"author":{"gitId":"-"},"content":" */"},{"lineNumber":126,"author":{"gitId":"-"},"content":" todoFinished(issue: Issue): number {"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return issue.issueDisputes.length - issue.numOfUnresolvedDisputes();"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Checks if all the disputes are resolved."},{"lineNumber":132,"author":{"gitId":"-"},"content":" */"},{"lineNumber":133,"author":{"gitId":"-"},"content":" isTodoListChecked(issue: Issue): boolean {"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return issue.issueDisputes \u0026\u0026 issue.numOfUnresolvedDisputes() \u003d\u003d\u003d 0;"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":" viewIssueInBrowser(id: number, event: Event) {"},{"lineNumber":138,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`IssueTablesComponent: Opening Issue ${id} on Github`);"},{"lineNumber":139,"author":{"gitId":"-"},"content":" this.githubService.viewIssueInBrowser(id, event);"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }"},{"lineNumber":141,"author":{"gitId":"-"},"content":""},{"lineNumber":142,"author":{"gitId":"-"},"content":" deleteIssue(id: number, event: Event) {"},{"lineNumber":143,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`IssueTablesComponent: Deleting Issue ${id}`);"},{"lineNumber":144,"author":{"gitId":"-"},"content":" this.issuesPendingDeletion \u003d {"},{"lineNumber":145,"author":{"gitId":"-"},"content":" ...this.issuesPendingDeletion,"},{"lineNumber":146,"author":{"gitId":"-"},"content":" [id]: true"},{"lineNumber":147,"author":{"gitId":"-"},"content":" };"},{"lineNumber":148,"author":{"gitId":"-"},"content":" this.issueService"},{"lineNumber":149,"author":{"gitId":"-"},"content":" .deleteIssue(id)"},{"lineNumber":150,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":151,"author":{"gitId":"-"},"content":" finalize(() \u003d\u003e {"},{"lineNumber":152,"author":{"gitId":"-"},"content":" const { [id]: issueRemoved, ...theRest } \u003d this.issuesPendingDeletion;"},{"lineNumber":153,"author":{"gitId":"-"},"content":" this.issuesPendingDeletion \u003d theRest;"},{"lineNumber":154,"author":{"gitId":"-"},"content":" })"},{"lineNumber":155,"author":{"gitId":"-"},"content":" )"},{"lineNumber":156,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":157,"author":{"gitId":"-"},"content":" (removedIssue) \u003d\u003e {},"},{"lineNumber":158,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":159,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }"},{"lineNumber":161,"author":{"gitId":"-"},"content":" );"},{"lineNumber":162,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":" let snackBarRef \u003d null;"},{"lineNumber":165,"author":{"gitId":"-"},"content":" snackBarRef \u003d this.snackBar.openFromComponent(UndoActionComponent, {"},{"lineNumber":166,"author":{"gitId":"-"},"content":" data: { message: `Deleted issue ${id}` },"},{"lineNumber":167,"author":{"gitId":"-"},"content":" duration: this.snackBarAutoCloseTime"},{"lineNumber":168,"author":{"gitId":"-"},"content":" });"},{"lineNumber":169,"author":{"gitId":"-"},"content":" snackBarRef.onAction().subscribe(() \u003d\u003e {"},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.undeleteIssue(id, event);"},{"lineNumber":171,"author":{"gitId":"-"},"content":" });"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }"},{"lineNumber":173,"author":{"gitId":"-"},"content":""},{"lineNumber":174,"author":{"gitId":"-"},"content":" undeleteIssue(id: number, event: Event) {"},{"lineNumber":175,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`IssueTablesComponent: Undeleting Issue ${id}`);"},{"lineNumber":176,"author":{"gitId":"-"},"content":" this.issueService.undeleteIssue(id).subscribe("},{"lineNumber":177,"author":{"gitId":"-"},"content":" (reopenedIssue) \u003d\u003e {},"},{"lineNumber":178,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }"},{"lineNumber":181,"author":{"gitId":"-"},"content":" );"},{"lineNumber":182,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":183,"author":{"gitId":"-"},"content":""},{"lineNumber":184,"author":{"gitId":"-"},"content":" this.snackBar.open(`Restored issue ${id}`, \u0027\u0027, { duration: this.snackBarAutoCloseTime });"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }"},{"lineNumber":186,"author":{"gitId":"-"},"content":""},{"lineNumber":187,"author":{"gitId":"-"},"content":" openDeleteDialog(id: number, event: Event) {"},{"lineNumber":188,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openUserConfirmationModal("},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.deleteIssueModalMessages,"},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.yesButtonModalMessage,"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.noButtonModalMessage"},{"lineNumber":192,"author":{"gitId":"-"},"content":" );"},{"lineNumber":193,"author":{"gitId":"-"},"content":""},{"lineNumber":194,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":195,"author":{"gitId":"-"},"content":" if (res) {"},{"lineNumber":196,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`IssueTablesComponent: Deleting issue ${id}`);"},{"lineNumber":197,"author":{"gitId":"-"},"content":" this.deleteIssue(id, event);"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }"},{"lineNumber":199,"author":{"gitId":"-"},"content":" });"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }"},{"lineNumber":201,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":9,"-":192}},{"path":"src/app/shared/issue/conflict-dialog/conflict-dialog.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatTabChangeEvent } from \u0027@angular/material/tabs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { DomSanitizer, SafeHtml } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Conflict } from \u0027../../../core/models/conflict/conflict.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../../core/services/label.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A Component that is in a form of a dialog modal and its purpose is to"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * display the difference between 2 pieces of text."},{"lineNumber":12,"author":{"gitId":"-"},"content":" */"},{"lineNumber":13,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":14,"author":{"gitId":"-"},"content":" selector: \u0027app-conflict-dialog\u0027,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" templateUrl: \u0027conflict-dialog.component.html\u0027,"},{"lineNumber":16,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./conflict-dialog.component.css\u0027]"},{"lineNumber":17,"author":{"gitId":"-"},"content":"})"},{"lineNumber":18,"author":{"gitId":"-"},"content":"export class ConflictDialogComponent {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" isOnPreview \u003d false;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" isReady \u003d false;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" showDiff \u003d true;"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" diffHtml: SafeHtml;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" updatedHtml: SafeHtml;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":27,"author":{"gitId":"-"},"content":" public dialogRef: MatDialogRef\u003cConflictDialogComponent\u003e,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Inject(MAT_DIALOG_DATA) public data: Conflict,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private sanitizer: DomSanitizer,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public labelService: LabelService,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public issueService: IssueService"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.diffHtml \u003d this.sanitizer.bypassSecurityTrustHtml(data.getHtmlDiffString());"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.updatedHtml \u003d this.sanitizer.bypassSecurityTrustHtml(data.getHtmlUpdatedString());"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.isReady \u003d true;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" close(): void {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.dialogRef.close();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" handleChangeShowDiff() {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.showDiff \u003d !this.showDiff;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" handleTabChange(event: MatTabChangeEvent): void {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.isOnPreview \u003d event.index \u003d\u003d\u003d 1;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":48}},{"path":"src/app/shared/issue/description/description.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"span {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" vertical-align: middle;"},{"lineNumber":3,"author":{"gitId":"-"},"content":" margin-left: 5px;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":":host ::ng-deep .mat-progress-spinner {"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" color: rgba(0, 0, 0, 0.5);"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" display: inline-block;"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" vertical-align: middle;"},{"lineNumber":10,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" margin-left: 5px;"},{"lineNumber":11,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":7,"-":4}},{"path":"src/app/shared/issue/description/description.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003ch3 class\u003d\"mat-title\"\u003e{{ descriptionTitle }}\u003c/h3\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003cform [formGroup]\u003d\"issueDescriptionForm\" #myForm\u003d\"ngForm\" (ngSubmit)\u003d\"updateDescription(myForm)\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"timeline-comment\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"timeline-header\"\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cspan\u003e \u003cstrong\u003e Tester \u003c/strong\u003e posted on {{ issue.created_at }}. \u003c/span\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cbutton style\u003d\"float: right\" mat-button *ngIf\u003d\"permissions.isIssueDescriptionEditable() \u0026\u0026 !isEditing\" (click)\u003d\"changeToEditMode()\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" Edit"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"!isEditing\" class\u003d\"comment\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmarkdown [data]\u003d\"issue.description\"\u003e\u003c/markdown\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"isEditing\"\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003capp-comment-editor"},{"lineNumber":15,"author":{"gitId":"-"},"content":" [id]\u003d\"\u0027description\u0027\""},{"lineNumber":16,"author":{"gitId":"-"},"content":" [commentField]\u003d\"this.issueDescriptionForm.get(\u0027description\u0027)\""},{"lineNumber":17,"author":{"gitId":"-"},"content":" [commentForm]\u003d\"this.issueDescriptionForm\""},{"lineNumber":18,"author":{"gitId":"-"},"content":" [(isFormPending)]\u003d\"this.isSavePending\""},{"lineNumber":19,"author":{"gitId":"-"},"content":" [(submitButtonText)]\u003d\"this.submitButtonText\""},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/app-comment-editor\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"editor-actions\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":24,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":25,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":26,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":27,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isSavePending\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" mat-raised-button"},{"lineNumber":29,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" (click)\u003d\"viewChanges()\""},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" View Updated Description"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":35,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":36,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":37,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isSavePending\""},{"lineNumber":38,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":39,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":40,"author":{"gitId":"-"},"content":" (click)\u003d\"openCancelDialogIfModified()\""},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Cancel"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":45,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":46,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":47,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":48,"author":{"gitId":"-"},"content":" [disabled]\u003d\"issueDescriptionForm.invalid || isSavePending\""},{"lineNumber":49,"author":{"gitId":"-"},"content":" mat-raised-button"},{"lineNumber":50,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ submitButtonText }}"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" class\u003d\"editor-action additional-editor-style\""},{"lineNumber":56,"author":{"gitId":"-"},"content":" *ngIf\u003d\"!conflict\""},{"lineNumber":57,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":58,"author":{"gitId":"-"},"content":" [disabled]\u003d\"issueDescriptionForm.invalid || isSavePending\""},{"lineNumber":59,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":60,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cmat-button-content\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" {{ submitButtonText }}"},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cng-container #loadingSpinnerContainer\u003e\u003c/ng-container\u003e"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003c/mat-button-content\u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003c/form\u003e"}],"authorContributionMap":{"Eclipse-Dominator":1,"vigneshsankariyer1234567890":4,"-":65}},{"path":"src/app/shared/issue/description/description.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Component, EventEmitter, Input, OnInit, Output, ViewChild, ViewContainerRef } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormBuilder, FormGroup, NgForm } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { throwError } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Conflict } from \u0027../../../core/models/conflict/conflict.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../../core/services/dialog.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../core/services/error-handling.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":11,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoadingService } from \u0027../../../core/services/loading.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../../core/services/permission.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../core/services/phase.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { SUBMIT_BUTTON_TEXT } from \u0027../../view-issue/view-issue.component\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { ConflictDialogComponent } from \u0027../conflict-dialog/conflict-dialog.component\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" selector: \u0027app-issue-description\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" templateUrl: \u0027./description.component.html\u0027,"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" styleUrls: [\u0027./description.component.css\u0027],"},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" providers: [LoadingService]"},{"lineNumber":22,"author":{"gitId":"-"},"content":"})"},{"lineNumber":23,"author":{"gitId":"-"},"content":"export class DescriptionComponent implements OnInit {"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // The container of the loading spinner"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" @ViewChild(\u0027loadingSpinnerContainer\u0027, {"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" read: ViewContainerRef,"},{"lineNumber":27,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" static: false"},{"lineNumber":28,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":29,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingSpinnerContainer: ViewContainerRef;"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" isSavePending \u003d false;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" issueDescriptionForm: FormGroup;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" conflict: Conflict;"},{"lineNumber":34,"author":{"gitId":"-"},"content":" submitButtonText: string;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Input() issue: Issue;"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() descriptionTitle: string;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Input() isEditing: boolean;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Output() issueUpdated \u003d new EventEmitter\u003cIssue\u003e();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Output() changeEditState \u003d new EventEmitter\u003cboolean\u003e();"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Messages for the modal popup window upon cancelling edit"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private readonly cancelEditModalMessages \u003d [\u0027Do you wish to cancel?\u0027, \u0027Your changes will be discarded.\u0027];"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private readonly yesButtonModalMessage \u003d \u0027Cancel\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private readonly noButtonModalMessage \u003d \u0027Continue editing\u0027;"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":48,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private dialog: MatDialog,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public permissions: PermissionService,"},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private dialogService: DialogService,"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public loadingService: LoadingService"},{"lineNumber":56,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" showSpinner(): void {"},{"lineNumber":59,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService.addViewContainerRef(this.loadingSpinnerContainer).showLoader();"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isSavePending \u003d true;"},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" hideSpinner(): void {"},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService.hideLoader();"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isSavePending \u003d false;"},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.issueDescriptionForm \u003d this.formBuilder.group({"},{"lineNumber":70,"author":{"gitId":"-"},"content":" description: [\u0027\u0027]"},{"lineNumber":71,"author":{"gitId":"-"},"content":" });"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.SAVE;"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Build the loading service spinner"},{"lineNumber":74,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService"},{"lineNumber":75,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addAnimationMode(\u0027indeterminate\u0027)"},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addSpinnerOptions({ diameter: 15, strokeWidth: 2 })"},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addTheme(\u0027warn\u0027)"},{"lineNumber":78,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addCssClasses([\u0027mat-progress-spinner\u0027]);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" changeToEditMode() {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.changeEditState.emit(true);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.issueDescriptionForm.setValue({"},{"lineNumber":84,"author":{"gitId":"-"},"content":" description: this.issue[\u0027description\u0027] || \u0027\u0027"},{"lineNumber":85,"author":{"gitId":"-"},"content":" });"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":""},{"lineNumber":88,"author":{"gitId":"-"},"content":" updateDescription(form: NgForm) {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (this.issueDescriptionForm.invalid) {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.showSpinner();"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.issueService"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .getLatestIssue(this.issue.id)"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":97,"author":{"gitId":"-"},"content":" map((issue: Issue) \u003d\u003e {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return issue.description \u003d\u003d\u003d this.issue.description;"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":100,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((isSaveToUpdate: boolean) \u003d\u003e {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (isSaveToUpdate || this.submitButtonText \u003d\u003d\u003d SUBMIT_BUTTON_TEXT.OVERWRITE) {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this.issueService.updateIssue(this.getUpdatedIssue());"},{"lineNumber":103,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.conflict \u003d new Conflict(this.issue.description, this.issueService.issues[this.issue.id].description);"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.OVERWRITE;"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.viewChanges();"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return throwError(\u0027The content you are editing has changed. Please verify the changes and try again.\u0027);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }"},{"lineNumber":109,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":110,"author":{"gitId":"-"},"content":" )"},{"lineNumber":111,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":112,"author":{"gitId":"-"},"content":" (editedIssue: Issue) \u003d\u003e {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(editedIssue);"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.resetToDefault();"},{"lineNumber":115,"author":{"gitId":"-"},"content":" form.resetForm();"},{"lineNumber":116,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.hideSpinner();"},{"lineNumber":117,"author":{"gitId":"-"},"content":" },"},{"lineNumber":118,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":119,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":120,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.hideSpinner();"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }"},{"lineNumber":122,"author":{"gitId":"-"},"content":" );"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }"},{"lineNumber":124,"author":{"gitId":"-"},"content":""},{"lineNumber":125,"author":{"gitId":"-"},"content":" viewChanges(): void {"},{"lineNumber":126,"author":{"gitId":"-"},"content":" this.dialog.open(ConflictDialogComponent, {"},{"lineNumber":127,"author":{"gitId":"-"},"content":" data: this.conflict,"},{"lineNumber":128,"author":{"gitId":"-"},"content":" autoFocus: false"},{"lineNumber":129,"author":{"gitId":"-"},"content":" });"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }"},{"lineNumber":131,"author":{"gitId":"-"},"content":""},{"lineNumber":132,"author":{"gitId":"-"},"content":" resetToDefault(): void {"},{"lineNumber":133,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.SAVE;"},{"lineNumber":134,"author":{"gitId":"-"},"content":" this.conflict \u003d undefined;"},{"lineNumber":135,"author":{"gitId":"-"},"content":" this.changeEditState.emit(false);"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }"},{"lineNumber":137,"author":{"gitId":"-"},"content":""},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * When user exits exit mode, we will need to sync the issue in IssueService with this component."},{"lineNumber":140,"author":{"gitId":"-"},"content":" */"},{"lineNumber":141,"author":{"gitId":"-"},"content":" cancelEditMode(): void {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" this.issueService.getIssue(this.issue.id).subscribe((issue: Issue) \u003d\u003e {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(issue);"},{"lineNumber":144,"author":{"gitId":"-"},"content":" this.resetToDefault();"},{"lineNumber":145,"author":{"gitId":"-"},"content":" });"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }"},{"lineNumber":147,"author":{"gitId":"-"},"content":""},{"lineNumber":148,"author":{"gitId":"-"},"content":" openCancelDialogIfModified(): void {"},{"lineNumber":149,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const isModified \u003d this.dialogService.checkIfFieldIsModified(this.issueDescriptionForm, \u0027description\u0027, \u0027description\u0027, this.issue);"},{"lineNumber":150,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.dialogService.performActionIfModified("},{"lineNumber":151,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" isModified,"},{"lineNumber":152,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" () \u003d\u003e this.openCancelDialog(),"},{"lineNumber":153,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" () \u003d\u003e this.cancelEditMode()"},{"lineNumber":154,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }"},{"lineNumber":156,"author":{"gitId":"-"},"content":""},{"lineNumber":157,"author":{"gitId":"-"},"content":" openCancelDialog(): void {"},{"lineNumber":158,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openUserConfirmationModal("},{"lineNumber":159,"author":{"gitId":"-"},"content":" this.cancelEditModalMessages,"},{"lineNumber":160,"author":{"gitId":"-"},"content":" this.yesButtonModalMessage,"},{"lineNumber":161,"author":{"gitId":"-"},"content":" this.noButtonModalMessage"},{"lineNumber":162,"author":{"gitId":"-"},"content":" );"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" if (res) {"},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.cancelEditMode();"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }"},{"lineNumber":168,"author":{"gitId":"-"},"content":" });"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }"},{"lineNumber":170,"author":{"gitId":"-"},"content":""},{"lineNumber":171,"author":{"gitId":"-"},"content":" private getUpdatedIssue(): Issue {"},{"lineNumber":172,"author":{"gitId":"-"},"content":" const newIssue \u003d this.issue.clone(this.phaseService.currentPhase);"},{"lineNumber":173,"author":{"gitId":"-"},"content":" newIssue.description \u003d Issue.updateDescription(this.issueDescriptionForm.get(\u0027description\u0027).value);"},{"lineNumber":174,"author":{"gitId":"-"},"content":" return newIssue;"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":1,"vigneshsankariyer1234567890":41,"-":134}},{"path":"src/app/shared/issue/duplicateOf/duplicate-of.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormControl } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatCheckbox } from \u0027@angular/material/checkbox\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { MatSelect, MatSelectChange } from \u0027@angular/material/select\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Observable, ReplaySubject, Subject } from \u0027rxjs\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { first, map, takeUntil } from \u0027rxjs/operators\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../core/services/error-handling.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../../core/services/permission.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../core/services/phase.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027../../issue-tables/issue-tables-columns\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { applySearchFilter } from \u0027../../issue-tables/search-filter\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":16,"author":{"gitId":"-"},"content":" selector: \u0027app-duplicate-of-component\u0027,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" templateUrl: \u0027./duplicate-of.component.html\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./duplicate-of.component.css\u0027],"},{"lineNumber":19,"author":{"gitId":"-"},"content":" encapsulation: ViewEncapsulation.None"},{"lineNumber":20,"author":{"gitId":"-"},"content":"})"},{"lineNumber":21,"author":{"gitId":"-"},"content":"export class DuplicateOfComponent implements OnInit, OnDestroy {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" isEditing \u003d false;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" duplicatedIssueList: Observable\u003cIssue[]\u003e;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" searchFilterCtrl: FormControl \u003d new FormControl();"},{"lineNumber":25,"author":{"gitId":"-"},"content":" filteredDuplicateIssueList: ReplaySubject\u003cIssue[]\u003e \u003d new ReplaySubject\u003cIssue[]\u003e(1);"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Input() issue: Issue;"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Output() issueUpdated \u003d new EventEmitter\u003cIssue\u003e();"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" @ViewChild(MatSelect, { static: true }) duplicateOfSelection: MatSelect;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @ViewChild(MatCheckbox, { static: true }) duplicatedCheckbox: MatCheckbox;"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" // A subject that will emit a signal when this component is being destroyed"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private _onDestroy \u003d new Subject\u003cvoid\u003e();"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" // Max chars visible for a duplicate entry in duplicates dropdown list."},{"lineNumber":38,"author":{"gitId":"-"},"content":" readonly MAX_TITLE_LENGTH_FOR_DUPLICATE_ISSUE \u003d 17;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // Max chars visible for a non-duplicate entry in duplicates dropdown list."},{"lineNumber":40,"author":{"gitId":"-"},"content":" readonly MAX_TITLE_LENGTH_FOR_NON_DUPLICATE_ISSUE \u003d 37;"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":43,"author":{"gitId":"-"},"content":" public issueService: IssueService,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public permissions: PermissionService,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private phaseService: PhaseService"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Checks if the supplied issue requires a tooltip"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * in the UI as some information may be hidden due to truncation."},{"lineNumber":52,"author":{"gitId":"-"},"content":" * @param issue - Displayed issue that may need a tooltip."},{"lineNumber":53,"author":{"gitId":"-"},"content":" * @return - true (to enable tooltip) / false (to disable tooltip)"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */"},{"lineNumber":55,"author":{"gitId":"-"},"content":" isTooltipNecessary(issue: Issue): boolean {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Maximum Possible Title length varies based on whether the issue"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // is a duplicate. (Whether the Duplicate Issue Tag is visible)"},{"lineNumber":58,"author":{"gitId":"-"},"content":" let maxTitleLength: number;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" maxTitleLength \u003d issue.duplicated ? this.MAX_TITLE_LENGTH_FOR_DUPLICATE_ISSUE : this.MAX_TITLE_LENGTH_FOR_NON_DUPLICATE_ISSUE;"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" return issue.title.length \u003e maxTitleLength;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }"},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this._onDestroy.next(); // Emits the destroy signal"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this._onDestroy.complete();"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.duplicatedIssueList \u003d this.getDupIssueList();"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Populate the filtered list with all the issues first"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.duplicatedIssueList.pipe(first()).subscribe((issues) \u003d\u003e this.filteredDuplicateIssueList.next(issues));"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.searchFilterCtrl.valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((_) \u003d\u003e this.filterIssues());"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" private filterIssues(): void {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.changeFilter(this.duplicatedIssueList, this.searchFilterCtrl.value).subscribe((issues) \u003d\u003e"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.filteredDuplicateIssueList.next(issues)"},{"lineNumber":79,"author":{"gitId":"-"},"content":" );"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":" updateDuplicateStatus(event: MatSelectChange) {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" const latestIssue \u003d this.getUpdatedIssue(event);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.issueService.updateIssueWithComment(latestIssue, latestIssue.issueComment).subscribe("},{"lineNumber":85,"author":{"gitId":"-"},"content":" (issue) \u003d\u003e this.issueUpdated.emit(issue),"},{"lineNumber":86,"author":{"gitId":"-"},"content":" (error) \u003d\u003e this.errorHandlingService.handleError(error)"},{"lineNumber":87,"author":{"gitId":"-"},"content":" );"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" dupIssueOptionIsDisabled(issue: Issue): boolean {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return issue.duplicated || !!issue.duplicateOf;"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":" getDisabledDupOptionErrorText(issue: Issue): string {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return this.dupIssueOptionIsDisabled(issue) ? \u0027Duplicate of #\u0027 + issue.duplicateOf : \u0027\u0027;"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" handleCheckboxChange(event) {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (event.checked) {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" this.openSelection();"},{"lineNumber":101,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.isEditing \u003d false;"},{"lineNumber":103,"author":{"gitId":"-"},"content":" this.duplicateOfSelection.close();"},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.duplicateOfSelection.value \u003d null;"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.updateDuplicateStatus(null);"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":" openSelection() {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.isEditing \u003d true;"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.duplicateOfSelection.open();"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }"},{"lineNumber":113,"author":{"gitId":"-"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":" handleSelectionOpenChange(isOpen) {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (!isOpen) {"},{"lineNumber":116,"author":{"gitId":"-"},"content":" this.isEditing \u003d false;"},{"lineNumber":117,"author":{"gitId":"-"},"content":" this.duplicatedCheckbox.checked \u003d this.duplicateOfSelection.value;"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" getUpdatedIssue(duplicateCheckboxEvent: MatSelectChange): Issue {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" const clone \u003d this.issue.clone(this.phaseService.currentPhase);"},{"lineNumber":123,"author":{"gitId":"-"},"content":" clone.duplicated \u003d !!duplicateCheckboxEvent;"},{"lineNumber":124,"author":{"gitId":"-"},"content":" clone.duplicateOf \u003d duplicateCheckboxEvent ? duplicateCheckboxEvent.value : null;"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (duplicateCheckboxEvent) {"},{"lineNumber":126,"author":{"gitId":"-"},"content":" const duplicatedIssue \u003d this.issueService.issues[clone.duplicateOf];"},{"lineNumber":127,"author":{"gitId":"-"},"content":" clone.severity \u003d duplicatedIssue.severity;"},{"lineNumber":128,"author":{"gitId":"-"},"content":" clone.type \u003d duplicatedIssue.type;"},{"lineNumber":129,"author":{"gitId":"-"},"content":" clone.assignees \u003d duplicatedIssue.assignees;"},{"lineNumber":130,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" clone.response \u003d duplicatedIssue.response;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }"},{"lineNumber":132,"author":{"gitId":"-"},"content":" clone.issueComment.description \u003d clone.createGithubTeamResponse();"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return clone;"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }"},{"lineNumber":135,"author":{"gitId":"-"},"content":""},{"lineNumber":136,"author":{"gitId":"-"},"content":" private changeFilter(issuesObservable: Observable\u003cIssue[]\u003e, searchInputString): Observable\u003cIssue[]\u003e {"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return issuesObservable.pipe("},{"lineNumber":138,"author":{"gitId":"-"},"content":" first(),"},{"lineNumber":139,"author":{"gitId":"-"},"content":" map((issues) \u003d\u003e {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return applySearchFilter(searchInputString, [TABLE_COLUMNS.ID, TABLE_COLUMNS.TITLE], this.issueService, issues);"},{"lineNumber":141,"author":{"gitId":"-"},"content":" })"},{"lineNumber":142,"author":{"gitId":"-"},"content":" );"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }"},{"lineNumber":144,"author":{"gitId":"-"},"content":""},{"lineNumber":145,"author":{"gitId":"-"},"content":" private getDupIssueList(): Observable\u003cIssue[]\u003e {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return this.issueService.issues$.pipe("},{"lineNumber":147,"author":{"gitId":"-"},"content":" map((issues) \u003d\u003e {"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return issues.filter((issue) \u003d\u003e {"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return this.issue.id !\u003d\u003d issue.id \u0026\u0026 this.issue.teamAssigned.id \u003d\u003d\u003d issue.teamAssigned.id;"},{"lineNumber":150,"author":{"gitId":"-"},"content":" });"},{"lineNumber":151,"author":{"gitId":"-"},"content":" })"},{"lineNumber":152,"author":{"gitId":"-"},"content":" );"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":153}},{"path":"src/app/shared/issue/issue-components.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatProgressBarModule } from \u0027@angular/material/progress-bar\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MarkdownModule } from \u0027ngx-markdown\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { NgxMatSelectSearchModule } from \u0027ngx-mat-select-search\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { CommentEditorModule } from \u0027../comment-editor/comment-editor.module\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../shared.module\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { AssigneeComponent } from \u0027./assignee/assignee.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ConflictDialogComponent } from \u0027./conflict-dialog/conflict-dialog.component\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { DescriptionComponent } from \u0027./description/description.component\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { DuplicatedIssuesComponent } from \u0027./duplicatedIssues/duplicated-issues.component\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { DuplicateOfComponent } from \u0027./duplicateOf/duplicate-of.component\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { LabelComponent } from \u0027./label/label.component\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { TitleComponent } from \u0027./title/title.component\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { UnsureCheckboxComponent } from \u0027./unsure-checkbox/unsure-checkbox.component\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":17,"author":{"gitId":"-"},"content":" imports: [SharedModule, CommentEditorModule, MatProgressBarModule, NgxMatSelectSearchModule, MarkdownModule.forChild()],"},{"lineNumber":18,"author":{"gitId":"-"},"content":" declarations: ["},{"lineNumber":19,"author":{"gitId":"-"},"content":" TitleComponent,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" DescriptionComponent,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" LabelComponent,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" AssigneeComponent,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" DuplicateOfComponent,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" DuplicatedIssuesComponent,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" UnsureCheckboxComponent,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ConflictDialogComponent"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":28,"author":{"gitId":"-"},"content":" exports: ["},{"lineNumber":29,"author":{"gitId":"-"},"content":" TitleComponent,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" DescriptionComponent,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" LabelComponent,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" AssigneeComponent,"},{"lineNumber":33,"author":{"gitId":"-"},"content":" DuplicateOfComponent,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" DuplicatedIssuesComponent,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" UnsureCheckboxComponent,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ConflictDialogComponent"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ]"},{"lineNumber":38,"author":{"gitId":"-"},"content":"})"},{"lineNumber":39,"author":{"gitId":"-"},"content":"export class IssueComponentsModule {}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":38}},{"path":"src/app/shared/issue/label/label.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".no-arrow .mat-select-arrow {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" visibility: hidden;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":":host ::ng-deep .mat-progress-spinner {"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" color: rgba(0, 0, 0, 0.5);"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" display: inline-block;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" vertical-align: middle;"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"}"},{"lineNumber":10,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":".option {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" background-color: Transparent;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" border: none;"},{"lineNumber":14,"author":{"gitId":"-"},"content":" outline: none;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" margin-right: 30px;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":".infoPopup {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" background: transparent;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" border: none;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" outline: none;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" text-align: center;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":".labelLine {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" display: grid;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" grid-template-columns: 3fr 1fr;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":".labelInfo {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" font-size: 1em;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" text-align: left;"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":6,"-":27}},{"path":"src/app/shared/issue/label/label.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"mat-title\"\u003e {{ this.labelService.getLabelTitle(attributeName) }} \u003c/span\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003cbutton"},{"lineNumber":3,"author":{"gitId":"-"},"content":" *ngIf\u003d\"permissions.isIssueLabelsEditable() \u0026\u0026 !issue.duplicateOf\""},{"lineNumber":4,"author":{"gitId":"-"},"content":" style\u003d\"float: right\""},{"lineNumber":5,"author":{"gitId":"-"},"content":" [matMenuTriggerFor]\u003d\"labelList\""},{"lineNumber":6,"author":{"gitId":"-"},"content":" mat-icon-button"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cmat-icon style\u003d\"font-size: 20px; margin-bottom: 7px; color: #586069\" *ngIf\u003d\"!isSavePending\"\u003e edit \u003c/mat-icon\u003e"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cng-container #loadingSpinnerContainer\u003e\u003c/ng-container\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cmat-menu #labelList\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cdiv mat-menu-item class\u003d\"labelLine\" *ngFor\u003d\"let value of labelValues\" [ngStyle]\u003d\"{ \u0027padding-left\u0027: \u002715px\u0027, \u0027padding-right\u0027: \u002715px\u0027 }\"\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cbutton class\u003d\"labelInfo option\" (click)\u003d\"updateLabel(value.labelValue)\" [disabled]\u003d\"value.labelValue \u003d\u003d\u003d this.issue[attributeName]\"\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cmat-icon [ngStyle]\u003d\"{ color: \u0027#\u0027 + value.labelColor, \u0027font-size\u0027: \u00271.8em\u0027 }\"\u003estop\u003c/mat-icon\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cspan\u003e {{ value.labelValue }}\u003c/span\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cbutton *ngIf\u003d\"hasLabelDefinition(value)\" class\u003d\"infoPopup\" (click)\u003d\"openDefinitionPage(value); $event.stopPropagation()\"\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cmat-icon style\u003d\"font-size: 20px\"\u003einfo\u003c/mat-icon\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003c/mat-menu\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003cp [ngStyle]\u003d\"this.labelService.setLabelStyle(this.labelColor)\"\u003e{{ issue[attributeName] || \u0027-\u0027 }}\u003c/p\u003e"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":23}},{"path":"src/app/shared/issue/label/label.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild, ViewContainerRef } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { first } from \u0027rxjs/operators\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../..//core/services/dialog.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Label } from \u0027../../../core/models/label.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../core/services/error-handling.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { LabelCategory, LabelService } from \u0027../../../core/services/label.service\u0027;"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoadingService } from \u0027../../../core/services/loading.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../../core/services/permission.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../core/services/phase.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":14,"author":{"gitId":"-"},"content":" selector: \u0027app-issue-label\u0027,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" templateUrl: \u0027./label.component.html\u0027,"},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" styleUrls: [\u0027./label.component.css\u0027],"},{"lineNumber":17,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" providers: [LoadingService]"},{"lineNumber":18,"author":{"gitId":"-"},"content":"})"},{"lineNumber":19,"author":{"gitId":"-"},"content":"export class LabelComponent implements OnInit, OnChanges {"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // The container of the loading spinner"},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" @ViewChild(\u0027loadingSpinnerContainer\u0027, {"},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" read: ViewContainerRef,"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" static: false"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingSpinnerContainer: ViewContainerRef;"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" labelValues: Label[];"},{"lineNumber":28,"author":{"gitId":"-"},"content":" labelColor: string;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" labelDefinition?: string;"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" isSavePending: boolean;"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Input() issue: Issue;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Input() attributeName: LabelCategory;"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Output() issueUpdated \u003d new EventEmitter\u003cIssue\u003e();"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":38,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public labelService: LabelService,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public permissions: PermissionService,"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public dialogService: DialogService,"},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public loadingService: LoadingService"},{"lineNumber":45,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" showSpinner(): void {"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService.addViewContainerRef(this.loadingSpinnerContainer).showLoader();"},{"lineNumber":49,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isSavePending \u003d true;"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":51,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":52,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" hideSpinner(): void {"},{"lineNumber":53,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService.hideLoader();"},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isSavePending \u003d false;"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // Get the list of labels based on their type (severity, type, response)"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.labelValues \u003d this.labelService.getLabelList(this.attributeName);"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Build the loading service spinner"},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addAnimationMode(\u0027indeterminate\u0027)"},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addSpinnerOptions({ diameter: 15, strokeWidth: 2 })"},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addCssClasses([\u0027mat-progress-spinner\u0027]);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" ngOnChanges() {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Color will change when @Input issue changes"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.labelColor \u003d this.labelService.getColorOfLabel(this.attributeName, this.issue[this.attributeName]);"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":" updateLabel(value: string) {"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.showSpinner();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" const newIssue \u003d this.issue.clone(this.phaseService.currentPhase);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" newIssue[this.attributeName] \u003d value;"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.issueService.updateIssue(newIssue).subscribe("},{"lineNumber":77,"author":{"gitId":"-"},"content":" (updatedIssue: Issue) \u003d\u003e {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(updatedIssue);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.labelColor \u003d this.labelService.getColorOfLabel(this.attributeName, updatedIssue[this.attributeName]);"},{"lineNumber":80,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.hideSpinner();"},{"lineNumber":81,"author":{"gitId":"-"},"content":" },"},{"lineNumber":82,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":84,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.hideSpinner();"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }"},{"lineNumber":86,"author":{"gitId":"-"},"content":" );"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Update labels of duplicate issues"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.issueService"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .getDuplicateIssuesFor(this.issue)"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .pipe(first())"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .subscribe((issues: Issue[]) \u003d\u003e {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" issues.forEach((issue: Issue) \u003d\u003e {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" const newDuplicateIssue \u003d issue.clone(this.phaseService.currentPhase);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" newDuplicateIssue[this.attributeName] \u003d value;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" this.issueService.updateIssue(newDuplicateIssue);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" });"},{"lineNumber":97,"author":{"gitId":"-"},"content":" });"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":""},{"lineNumber":100,"author":{"gitId":"-"},"content":" openDefinitionPage(value: Label): void {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.labelDefinition \u003d this.labelService.getLabelDefinition(value.labelValue, value.labelCategory);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.dialogService.openLabelDefinitionDialog(value.getFormattedName(), this.labelDefinition);"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" hasLabelDefinition(value: Label): boolean {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return this.labelService.getLabelDefinition(value.labelValue, value.labelCategory) !\u003d\u003d null;"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":32,"-":76}},{"path":"src/app/shared/issue/title/title.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".row {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" display: flex;"},{"lineNumber":3,"author":{"gitId":"-"},"content":" flex-direction: row;"},{"lineNumber":4,"author":{"gitId":"-"},"content":" justify-content: space-between;"},{"lineNumber":5,"author":{"gitId":"-"},"content":" align-items: flex-start;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":".title {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" margin: 0 0 16px;"},{"lineNumber":10,"author":{"gitId":"-"},"content":" overflow-wrap: anywhere;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":".title-button {"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" display: flex;"},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" flex-direction: row;"},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" align-items: center;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" margin: 5px;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" float: right;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":":host ::ng-deep .mat-progress-spinner {"},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" color: rgba(0, 0, 0, 0.5);"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" display: inline-block;"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" vertical-align: middle;"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" margin-left: 5px;"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":10,"-":16}},{"path":"src/app/shared/issue/title/title.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv *ngIf\u003d\"!isEditing\" class\u003d\"row\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003ch1 class\u003d\"mat-display-1 title\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" {{ issue.title }} \u003cspan style\u003d\"color: #a3aab1\"\u003e#{{ issue.id }}\u003c/span\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003c/h1\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row\"\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cbutton *ngIf\u003d\"permissions.isIssueTitleEditable()\" mat-stroked-button color\u003d\"primary\" class\u003d\"title-button\" (click)\u003d\"changeToEditMode()\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" Edit"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":10,"author":{"gitId":"-"},"content":" *ngIf\u003d\"permissions.isIssueCreatable()\""},{"lineNumber":11,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":12,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":13,"author":{"gitId":"-"},"content":" class\u003d\"title-button\""},{"lineNumber":14,"author":{"gitId":"-"},"content":" [routerLink]\u003d\"\u0027/\u0027 + phaseService.currentPhase + \u0027/issues/new\u0027\""},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" New Issue"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"\u003cdiv *ngIf\u003d\"isEditing\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cform [formGroup]\u003d\"issueTitleForm\" #myForm\u003d\"ngForm\" (ngSubmit)\u003d\"updateTitle(myForm)\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cmat-form-field style\u003d\"width: 80%\"\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cinput id\u003d\"title\" formControlName\u003d\"title\" matInput placeholder\u003d\"Title\" required maxlength\u003d\"256\" /\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cmat-error *ngIf\u003d\"issueTitleForm.get(\u0027title\u0027).hasError(\u0027required\u0027)\"\u003e Title is required. \u003c/mat-error\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cmat-error *ngIf\u003d\"issueTitleForm.get(\u0027title\u0027).hasError(\u0027maxlength\u0027)\"\u003e Title cannot exceed 256 characters. \u003c/mat-error\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cmat-hint *ngIf\u003d\"issueTitleForm.get(\u0027title\u0027).value?.length \u003e\u003d 206\"\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" {{ 256 - issueTitleForm.get(\u0027title\u0027).value?.length }} characters remaining."},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/mat-hint\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cbutton type\u003d\"submit\" [disabled]\u003d\"issueTitleForm.invalid || isSavePending\" mat-stroked-button color\u003d\"primary\" class\u003d\"title-button\"\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Save"},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cng-container #loadingSpinnerContainer\u003e\u003c/ng-container\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":37,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":38,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isSavePending\""},{"lineNumber":39,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":40,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":41,"author":{"gitId":"-"},"content":" class\u003d\"title-button\""},{"lineNumber":42,"author":{"gitId":"-"},"content":" (click)\u003d\"openCancelDialogIfModified()\""},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Cancel"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/form\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":46}},{"path":"src/app/shared/issue/title/title.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Component, EventEmitter, Input, OnInit, Output, ViewChild, ViewContainerRef } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormBuilder, FormControl, FormGroup, NgForm, Validators } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { finalize } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../../core/services/dialog.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../core/services/error-handling.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoadingService } from \u0027../../../core/services/loading.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../../core/services/permission.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../core/services/phase.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":13,"author":{"gitId":"-"},"content":" selector: \u0027app-issue-title\u0027,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" templateUrl: \u0027./title.component.html\u0027,"},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" styleUrls: [\u0027./title.component.css\u0027],"},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" providers: [LoadingService]"},{"lineNumber":17,"author":{"gitId":"-"},"content":"})"},{"lineNumber":18,"author":{"gitId":"-"},"content":"export class TitleComponent implements OnInit {"},{"lineNumber":19,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // The container of the loading spinner"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" @ViewChild(\u0027loadingSpinnerContainer\u0027, {"},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" read: ViewContainerRef,"},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" static: false"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingSpinnerContainer: ViewContainerRef;"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" isEditing \u003d false;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" isSavePending \u003d false;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" issueTitleForm: FormGroup;"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Input() issue: Issue;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Output() issueUpdated \u003d new EventEmitter\u003cIssue\u003e();"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Messages for the modal popup window upon cancelling edit"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private readonly cancelEditModalMessages \u003d [\u0027Do you wish to cancel?\u0027, \u0027Your changes will be discarded.\u0027];"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private readonly yesButtonModalMessage \u003d \u0027Cancel\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private readonly noButtonModalMessage \u003d \u0027Continue editing\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":39,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public permissions: PermissionService,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public phaseService: PhaseService,"},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private dialogService: DialogService,"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public loadingService: LoadingService"},{"lineNumber":46,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.issueTitleForm \u003d this.formBuilder.group({"},{"lineNumber":50,"author":{"gitId":"-"},"content":" title: new FormControl(\u0027\u0027, [Validators.required, Validators.maxLength(256)])"},{"lineNumber":51,"author":{"gitId":"-"},"content":" });"},{"lineNumber":52,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Build the loading service spinner"},{"lineNumber":53,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService"},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addAnimationMode(\u0027indeterminate\u0027)"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addSpinnerOptions({ diameter: 15, strokeWidth: 2 })"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .addCssClasses([\u0027mat-progress-spinner\u0027]);"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":" changeToEditMode() {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.isEditing \u003d true;"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.issueTitleForm.setValue({"},{"lineNumber":63,"author":{"gitId":"-"},"content":" title: this.issue.title || \u0027\u0027"},{"lineNumber":64,"author":{"gitId":"-"},"content":" });"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" cancelEditMode() {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.isEditing \u003d false;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" updateTitle(form: NgForm) {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (this.issueTitleForm.invalid) {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.showSpinner();"},{"lineNumber":77,"author":{"gitId":"-"},"content":" const newIssue \u003d this.issue.clone(this.phaseService.currentPhase);"},{"lineNumber":78,"author":{"gitId":"-"},"content":" newIssue.title \u003d this.issueTitleForm.get(\u0027title\u0027).value;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.issueService"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .updateIssue(newIssue)"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":82,"author":{"gitId":"-"},"content":" finalize(() \u003d\u003e {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.isEditing \u003d false;"},{"lineNumber":84,"author":{"gitId":"-"},"content":" })"},{"lineNumber":85,"author":{"gitId":"-"},"content":" )"},{"lineNumber":86,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":87,"author":{"gitId":"-"},"content":" (editedIssue: Issue) \u003d\u003e {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(editedIssue);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" form.resetForm();"},{"lineNumber":90,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.hideSpinner();"},{"lineNumber":91,"author":{"gitId":"-"},"content":" },"},{"lineNumber":92,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":94,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.hideSpinner();"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":" );"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" openCancelDialogIfModified(): void {"},{"lineNumber":100,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const isModified \u003d this.dialogService.checkIfFieldIsModified(this.issueTitleForm, \u0027title\u0027, \u0027title\u0027, this.issue);"},{"lineNumber":101,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.dialogService.performActionIfModified("},{"lineNumber":102,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" isModified,"},{"lineNumber":103,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" () \u003d\u003e this.openCancelDialog(),"},{"lineNumber":104,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" () \u003d\u003e this.cancelEditMode()"},{"lineNumber":105,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" openCancelDialog(): void {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openUserConfirmationModal("},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.cancelEditModalMessages,"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.yesButtonModalMessage,"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.noButtonModalMessage"},{"lineNumber":113,"author":{"gitId":"-"},"content":" );"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (res) {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" this.cancelEditMode();"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }"},{"lineNumber":119,"author":{"gitId":"-"},"content":" });"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }"},{"lineNumber":121,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":122,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" showSpinner() {"},{"lineNumber":123,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService.addViewContainerRef(this.loadingSpinnerContainer).showLoader();"},{"lineNumber":124,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isSavePending \u003d true;"},{"lineNumber":125,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":126,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":127,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" hideSpinner() {"},{"lineNumber":128,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.loadingService.hideLoader();"},{"lineNumber":129,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.isSavePending \u003d false;"},{"lineNumber":130,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":37,"-":94}},{"path":"src/app/shared/label-definition-popup/label-definition-popup.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { DomSanitizer } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * The LabelDefinitionPopupComponent is responsible for rendering the UserDialog"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * to show the definition of the corresponding label."},{"lineNumber":8,"author":{"gitId":"-"},"content":" */"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-label-definition-popup\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./label-definition-popup.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./label-definition-popup.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class LabelDefinitionPopupComponent {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" labelName: string;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" labelDefinitionHtmlTemplate;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // Injection of a reference to Dialog from the Service that it is to be"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // displayed in."},{"lineNumber":20,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":21,"author":{"gitId":"-"},"content":" public dialogRef: MatDialogRef\u003cLabelDefinitionPopupComponent\u003e,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Inject(MAT_DIALOG_DATA) public data,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private _sanitizer: DomSanitizer"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.labelName \u003d data.header;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // since we only display HTML fetched from our own source, we can safely bypass the sanitization of HTML"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.labelDefinitionHtmlTemplate \u003d _sanitizer.bypassSecurityTrustHtml(data.body);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Closes the dialog."},{"lineNumber":32,"author":{"gitId":"-"},"content":" */"},{"lineNumber":33,"author":{"gitId":"-"},"content":" onNoClick(): void {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.dialogRef.close(false);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":35}},{"path":"src/app/shared/layout/header.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Location } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Component, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Router, RoutesRecognized } from \u0027@angular/router\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { filter, pairwise } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../core/models/phase.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { UserRole } from \u0027../../core/models/user.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027../../core/services/auth.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../core/services/dialog.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../core/services/github.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { PhaseDescription, PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../core/services/user.service\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":"const ISSUE_TRACKER_URL \u003d \u0027https://github.com/CATcher-org/CATcher/issues\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":21,"author":{"gitId":"-"},"content":" selector: \u0027app-layout-header\u0027,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" templateUrl: \u0027./header.component.html\u0027"},{"lineNumber":23,"author":{"gitId":"-"},"content":"})"},{"lineNumber":24,"author":{"gitId":"-"},"content":"export class HeaderComponent implements OnInit {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private prevUrl;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" isReloadButtonDisabled \u003d false;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ISSUE_FILTER \u003d \u0027/issues?q\u003dis:issue+is:open\u0027; // the filtered list must be an issue and must be open"},{"lineNumber":28,"author":{"gitId":"-"},"content":" TUTORIAL_LABEL \u003d \u0027+label:tutorial.\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" TEAM_LABEL \u003d \u0027+label:team.\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" EXCLUDE_DUPLICATE \u003d \u0027+-label:duplicate\u0027; // exclude duplicate issues"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" // Messages for the modal popup window upon logging out"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private readonly logOutDialogMessages \u003d [\u0027Do you wish to log out?\u0027];"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private readonly yesButtonDialogMessage \u003d \u0027Yes, I wish to log out\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private readonly noButtonDialogMessage \u003d \"No, I don\u0027t wish to log out\";"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":38,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public auth: AuthService,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public phaseService: PhaseService,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public userService: UserService,"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public logger: LoggingService,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private location: Location,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private dialogService: DialogService"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" router.events"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":52,"author":{"gitId":"-"},"content":" filter((e: any) \u003d\u003e e instanceof RoutesRecognized),"},{"lineNumber":53,"author":{"gitId":"-"},"content":" pairwise()"},{"lineNumber":54,"author":{"gitId":"-"},"content":" )"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .subscribe((e) \u003d\u003e {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.prevUrl \u003d e[0].urlAfterRedirects;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" });"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Replaces and resets the current phase data and routes the app to the"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * newly selected phase."},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @param openPhase - Open Phase that is selected by the user."},{"lineNumber":66,"author":{"gitId":"-"},"content":" */"},{"lineNumber":67,"author":{"gitId":"-"},"content":" routeToSelectedPhase(openPhase: string): void {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Do nothing if the selected phase is the current phase."},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (this.phaseService.currentPhase \u003d\u003d\u003d Phase[openPhase]) {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Replace Current Phase Data."},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.phaseService.currentPhase \u003d Phase[openPhase];"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.githubService.storePhaseDetails("},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.phaseService.getPhaseOwner(this.phaseService.currentPhase),"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.phaseService.sessionData[openPhase]"},{"lineNumber":77,"author":{"gitId":"-"},"content":" );"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" // Remove current phase issues and load selected phase issues."},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.githubService.reset();"},{"lineNumber":81,"author":{"gitId":"-"},"content":" this.issueService.reset(false);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.reload();"},{"lineNumber":83,"author":{"gitId":"-"},"content":""},{"lineNumber":84,"author":{"gitId":"-"},"content":" // Route app to new phase."},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.router.navigateByUrl(this.phaseService.currentPhase);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":""},{"lineNumber":88,"author":{"gitId":"-"},"content":" isBackButtonShown(): boolean {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return `/${this.phaseService.currentPhase}` !\u003d\u003d this.router.url \u0026\u0026 this.router.url !\u003d\u003d \u0027/\u0027 \u0026\u0026 !this.router.url.startsWith(\u0027/?code\u0027);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":" isReloadButtonShown(): boolean {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this.router.url !\u003d\u003d \u0027/phaseBugReporting/issues/new\u0027;"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }"},{"lineNumber":95,"author":{"gitId":"-"},"content":""},{"lineNumber":96,"author":{"gitId":"-"},"content":" isOpenUrlButtonShown(): boolean {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return ("},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.phaseService.currentPhase \u003d\u003d\u003d Phase.phaseBugReporting ||"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.userService.currentUser.role \u003d\u003d\u003d UserRole.Student ||"},{"lineNumber":100,"author":{"gitId":"-"},"content":" this.issueService.getIssueTeamFilter() !\u003d\u003d \u0027All Teams\u0027 ||"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.router.url.includes(\u0027/issues\u0027)"},{"lineNumber":102,"author":{"gitId":"-"},"content":" );"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" getVersion(): string {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return AppConfig.version;"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":" getPhaseDescription(openPhase: string): string {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return PhaseDescription[openPhase];"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }"},{"lineNumber":112,"author":{"gitId":"-"},"content":""},{"lineNumber":113,"author":{"gitId":"-"},"content":" goBack() {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (this.prevUrl \u003d\u003d\u003d `/${this.phaseService.currentPhase}/issues/new`) {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.router.navigate([\u0027/phaseBugReporting\u0027]);"},{"lineNumber":116,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" this.location.back();"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" viewBrowser() {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" const routerUrl \u003d this.router.url.substring(1); // remove the first \u0027/\u0027 from string"},{"lineNumber":123,"author":{"gitId":"-"},"content":" const issueUrlIndex \u003d routerUrl.indexOf(\u0027/\u0027); // find the index of second \u0027/\u0027"},{"lineNumber":124,"author":{"gitId":"-"},"content":" let issueUrl: string;"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":" // If can\u0027t find the index of second \u0027/\u0027, then router is at the /issues (table list) page"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (issueUrlIndex \u003c 0) {"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // Apply filters to the issueUrl"},{"lineNumber":129,"author":{"gitId":"-"},"content":" issueUrl \u003d this.ISSUE_FILTER.concat(this.getTeamFilterString());"},{"lineNumber":130,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // issueUrl will be from the second \u0027/\u0027"},{"lineNumber":132,"author":{"gitId":"-"},"content":" issueUrl \u003d routerUrl.substring(issueUrlIndex);"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // Open the url in user\u0027s preferred browser"},{"lineNumber":135,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.open(\u0027https://github.com/\u0027.concat(this.githubService.getRepoURL()).concat(issueUrl));"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }"},{"lineNumber":137,"author":{"gitId":"-"},"content":""},{"lineNumber":138,"author":{"gitId":"-"},"content":" openIssueTracker() {"},{"lineNumber":139,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.open(ISSUE_TRACKER_URL);"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }"},{"lineNumber":141,"author":{"gitId":"-"},"content":""},{"lineNumber":142,"author":{"gitId":"-"},"content":" private getTeamFilterString() {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // First Phase does not need team filtering"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (this.phaseService.currentPhase \u003d\u003d\u003d Phase.phaseBugReporting || this.phaseService.currentPhase \u003d\u003d\u003d Phase.phaseTesterResponse) {"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return \u0027\u0027;"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }"},{"lineNumber":147,"author":{"gitId":"-"},"content":""},{"lineNumber":148,"author":{"gitId":"-"},"content":" // Initialise the team filter for Students in other Phases, as they do not have team filter assigned by default"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (this.userService.currentUser.team) {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" this.issueService.setIssueTeamFilter(this.userService.currentUser.team.id); // e.g W12-3"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" const teamFilter \u003d this.issueService.getIssueTeamFilter().split(\u0027-\u0027); // e.g CS2103T-W12-3 -\u003e CS2103T, W12 and 3"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // The team filter string E.g \"+label:tutorial.W12+label:team.3\""},{"lineNumber":155,"author":{"gitId":"-"},"content":" const teamFilterString \u003d this.TUTORIAL_LABEL.concat(`${teamFilter[0]}-${teamFilter[1]}`).concat(this.TEAM_LABEL).concat(teamFilter[2]);"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // Only include duplicate Issues in last Phase"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return this.phaseService.currentPhase \u003d\u003d\u003d Phase.phaseModeration ? teamFilterString : this.EXCLUDE_DUPLICATE.concat(teamFilterString);"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }"},{"lineNumber":159,"author":{"gitId":"-"},"content":""},{"lineNumber":160,"author":{"gitId":"-"},"content":" reload() {"},{"lineNumber":161,"author":{"gitId":"-"},"content":" this.isReloadButtonDisabled \u003d true;"},{"lineNumber":162,"author":{"gitId":"-"},"content":""},{"lineNumber":163,"author":{"gitId":"-"},"content":" this.githubEventService.reloadPage().subscribe("},{"lineNumber":164,"author":{"gitId":"-"},"content":" (success) \u003d\u003e success,"},{"lineNumber":165,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error, () \u003d\u003e this.githubEventService.reloadPage());"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }"},{"lineNumber":168,"author":{"gitId":"-"},"content":" );"},{"lineNumber":169,"author":{"gitId":"-"},"content":""},{"lineNumber":170,"author":{"gitId":"-"},"content":" // Prevent user from spamming the reload button"},{"lineNumber":171,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":172,"author":{"gitId":"-"},"content":" this.isReloadButtonDisabled \u003d false;"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }, 3000);"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }"},{"lineNumber":175,"author":{"gitId":"-"},"content":""},{"lineNumber":176,"author":{"gitId":"-"},"content":" logOut() {"},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.auth.logOut();"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }"},{"lineNumber":179,"author":{"gitId":"-"},"content":""},{"lineNumber":180,"author":{"gitId":"-"},"content":" openLogOutDialog() {"},{"lineNumber":181,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openUserConfirmationModal("},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.logOutDialogMessages,"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.yesButtonDialogMessage,"},{"lineNumber":184,"author":{"gitId":"-"},"content":" this.noButtonDialogMessage"},{"lineNumber":185,"author":{"gitId":"-"},"content":" );"},{"lineNumber":186,"author":{"gitId":"-"},"content":""},{"lineNumber":187,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":188,"author":{"gitId":"-"},"content":" if (res) {"},{"lineNumber":189,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`HeaderComponent: Logging out from ${this.userService.currentUser.loginId}`);"},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.logOut();"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }"},{"lineNumber":192,"author":{"gitId":"-"},"content":" });"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }"},{"lineNumber":194,"author":{"gitId":"-"},"content":""},{"lineNumber":195,"author":{"gitId":"-"},"content":" exportLogFile() {"},{"lineNumber":196,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.exportLogFile();"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":5,"-":193}},{"path":"src/app/shared/lib/marked.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { MarkedOptions, MarkedRenderer } from \u0027ngx-markdown\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"export function markedOptionsFactory(): MarkedOptions {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" const renderer \u003d new MarkedRenderer();"},{"lineNumber":5,"author":{"gitId":"-"},"content":" const linkRenderer \u003d renderer.link;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":" renderer.link \u003d (href, title, text) \u003d\u003e {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" const html \u003d linkRenderer.call(renderer, href, title, text);"},{"lineNumber":9,"author":{"gitId":"-"},"content":" return html.replace(/^\u003ca /, \u0027\u003ca target\u003d\"_blank\" \u0027);"},{"lineNumber":10,"author":{"gitId":"-"},"content":" };"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" renderer.checkbox \u003d (checked) \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" return checked ? \u0027\u003ci class\u003d\"fa-solid fa-square-check\"\u003e\u003c/i\u003e \u0027 : \u0027\u003ci class\u003d\"fa-solid fa-square\"\u003e\u003c/i\u003e \u0027;"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" };"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":" return {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" renderer,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" gfm: true,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" breaks: false,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" pedantic: false,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" smartLists: true,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" smartypants: false"},{"lineNumber":23,"author":{"gitId":"-"},"content":" };"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":4,"-":20}},{"path":"src/app/shared/view-issue/issue-dispute/issue-dispute.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormBuilder, FormControl, FormGroup, NgForm, Validators } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Observable, throwError } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { finalize, map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027../../../core/models/comment.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../core/services/error-handling.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../../core/services/github.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../core/services/phase.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../../core/services/user.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { CommentEditorComponent } from \u0027../../comment-editor/comment-editor.component\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { SUBMIT_BUTTON_TEXT } from \u0027../view-issue.component\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":16,"author":{"gitId":"-"},"content":" selector: \u0027app-issue-dispute\u0027,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" templateUrl: \u0027./issue-dispute.component.html\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./issue-dispute.component.css\u0027]"},{"lineNumber":19,"author":{"gitId":"-"},"content":"})"},{"lineNumber":20,"author":{"gitId":"-"},"content":"export class IssueDisputeComponent implements OnInit, OnChanges {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" tutorResponseForm: FormGroup;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" isFormPending \u003d false;"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" submitButtonText: string;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Input() issue: Issue;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Input() isEditing: boolean;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Output() issueUpdated \u003d new EventEmitter\u003cIssue\u003e();"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Output() updateEditState \u003d new EventEmitter\u003cboolean\u003e();"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @ViewChild(CommentEditorComponent) commentEditor: CommentEditorComponent;"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":33,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public userService: UserService,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private phaseService: PhaseService"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.resetForm();"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d this.isNewResponse() ? SUBMIT_BUTTON_TEXT.SUBMIT : SUBMIT_BUTTON_TEXT.SAVE;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.updateEditState.emit(this.isNewResponse());"},{"lineNumber":46,"author":{"gitId":"-"},"content":" });"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" ngOnChanges(changes: SimpleChanges) {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Whenever there is a change in value of issue, we reset the form so to render the most up to date form."},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (!this.isEditing \u0026\u0026 changes.issue \u0026\u0026 changes.issue.previousValue !\u003d\u003d changes.issue.currentValue) {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.resetForm();"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" submitTutorResponseForm(form: NgForm) {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (this.tutorResponseForm.invalid) {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.isFormPending \u003d true;"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.issue.pending \u003d \u0027\u0027 + this.getNumOfPending();"},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.isSafeToSubmitTutorResponse()"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((isSave: boolean) \u003d\u003e {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (isSave || this.isUpdatingDeletedResponse()) {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (this.issue.issueComment \u0026\u0026 !this.isUpdatingDeletedResponse()) {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this.updateTutorResponse();"},{"lineNumber":70,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this.createTutorResponse();"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.OVERWRITE;"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return throwError(\u0027The content you are editing has changed. Please verify the changes and try again.\u0027);"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":78,"author":{"gitId":"-"},"content":" finalize(() \u003d\u003e (this.isFormPending \u003d false))"},{"lineNumber":79,"author":{"gitId":"-"},"content":" )"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":81,"author":{"gitId":"-"},"content":" (issue: Issue) \u003d\u003e {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(issue);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.resetToDefault();"},{"lineNumber":84,"author":{"gitId":"-"},"content":" },"},{"lineNumber":85,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":" );"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }"},{"lineNumber":90,"author":{"gitId":"-"},"content":""},{"lineNumber":91,"author":{"gitId":"-"},"content":" updateTutorResponse(): Observable\u003cIssue\u003e {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return this.issueService.updateTutorResponse(this.issue, \u003cIssueComment\u003e{"},{"lineNumber":93,"author":{"gitId":"-"},"content":" ...this.issue.issueComment,"},{"lineNumber":94,"author":{"gitId":"-"},"content":" description: this.getTutorResponseFromForm()"},{"lineNumber":95,"author":{"gitId":"-"},"content":" });"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" createTutorResponse(): Observable\u003cIssue\u003e {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" const tutorResponse \u003d this.getTutorResponseFromForm();"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return this.issueService.createTutorResponse(this.issue, tutorResponse);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":""},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @return - Determines whether it is safe to submit an issue dispute\u0027s resolution."},{"lineNumber":105,"author":{"gitId":"-"},"content":" */"},{"lineNumber":106,"author":{"gitId":"-"},"content":" isSafeToSubmitTutorResponse(): Observable\u003cboolean\u003e {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return this.issueService.getLatestIssue(this.issue.id).pipe("},{"lineNumber":108,"author":{"gitId":"-"},"content":" map((issue: Issue) \u003d\u003e {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (issue.issueComment \u0026\u0026 !!issue.issueComment \u003d\u003d\u003d !!this.issue.issueComment) {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c issue.issueDisputes.length; i++) {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (issue.issueDisputes[i].compareTo(this.issue.issueDisputes[i]) !\u003d\u003d 0) {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":116,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return !!issue.issueComment \u003d\u003d\u003d !!this.issue.issueComment;"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }"},{"lineNumber":119,"author":{"gitId":"-"},"content":" })"},{"lineNumber":120,"author":{"gitId":"-"},"content":" );"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }"},{"lineNumber":122,"author":{"gitId":"-"},"content":""},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Determines whether the user is updating a response that has already been deleted on Github."},{"lineNumber":125,"author":{"gitId":"-"},"content":" */"},{"lineNumber":126,"author":{"gitId":"-"},"content":" isUpdatingDeletedResponse(): boolean {"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return this.issue.issueComment \u0026\u0026 !this.issueService.issues[this.issue.id].issueComment;"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Resets to default form state."},{"lineNumber":132,"author":{"gitId":"-"},"content":" */"},{"lineNumber":133,"author":{"gitId":"-"},"content":" resetToDefault(): void {"},{"lineNumber":134,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.SAVE;"},{"lineNumber":135,"author":{"gitId":"-"},"content":" this.updateEditState.emit(false);"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.resetForm();"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" viewInGithub(): void {"},{"lineNumber":140,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.open("},{"lineNumber":141,"author":{"gitId":"-"},"content":" `https://github.com/${this.githubService.getRepoURL()}/issues/` + `${this.issue.id}#issuecomment-${this.issue.issueComment.id}`"},{"lineNumber":142,"author":{"gitId":"-"},"content":" );"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }"},{"lineNumber":144,"author":{"gitId":"-"},"content":""},{"lineNumber":145,"author":{"gitId":"-"},"content":" changeToEditMode() {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" this.updateEditState.emit(true);"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }"},{"lineNumber":148,"author":{"gitId":"-"},"content":""},{"lineNumber":149,"author":{"gitId":"-"},"content":" cancelEditMode() {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" this.issueService.getIssue(this.issue.id).subscribe((issue: Issue) \u003d\u003e {"},{"lineNumber":151,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(issue);"},{"lineNumber":152,"author":{"gitId":"-"},"content":" this.resetToDefault();"},{"lineNumber":153,"author":{"gitId":"-"},"content":" });"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }"},{"lineNumber":155,"author":{"gitId":"-"},"content":""},{"lineNumber":156,"author":{"gitId":"-"},"content":" trackDisputeList(index: number, item: string[]): string {"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return item[index];"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }"},{"lineNumber":159,"author":{"gitId":"-"},"content":""},{"lineNumber":160,"author":{"gitId":"-"},"content":" isNewResponse(): boolean {"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return !this.issue.issueComment;"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":165,"author":{"gitId":"-"},"content":" * Will reset the form to the initial values of `this.issue`."},{"lineNumber":166,"author":{"gitId":"-"},"content":" */"},{"lineNumber":167,"author":{"gitId":"-"},"content":" resetForm(): void {"},{"lineNumber":168,"author":{"gitId":"-"},"content":" this.tutorResponseForm \u003d this.formBuilder.group(this.createFormGroup());"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }"},{"lineNumber":170,"author":{"gitId":"-"},"content":""},{"lineNumber":171,"author":{"gitId":"-"},"content":" getItemTitleText(title: string): string {"},{"lineNumber":172,"author":{"gitId":"-"},"content":" return \u0027## \u0027 + title;"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }"},{"lineNumber":174,"author":{"gitId":"-"},"content":""},{"lineNumber":175,"author":{"gitId":"-"},"content":" getNumOfPending(): number {"},{"lineNumber":176,"author":{"gitId":"-"},"content":" let pending \u003d this.issue.issueDisputes.length; // Initial pending is number of disputes"},{"lineNumber":177,"author":{"gitId":"-"},"content":" for (const issueDispute of this.issue.issueDisputes) {"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // For each number of Done that is checked, reduce pending by one"},{"lineNumber":179,"author":{"gitId":"-"},"content":" if (issueDispute.isDone()) {"},{"lineNumber":180,"author":{"gitId":"-"},"content":" pending--;"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return pending;"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }"},{"lineNumber":185,"author":{"gitId":"-"},"content":""},{"lineNumber":186,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":187,"author":{"gitId":"-"},"content":" * Will create a form group with initial values in `this.issue`."},{"lineNumber":188,"author":{"gitId":"-"},"content":" */"},{"lineNumber":189,"author":{"gitId":"-"},"content":" createFormGroup() {"},{"lineNumber":190,"author":{"gitId":"-"},"content":" const group: any \u003d {};"},{"lineNumber":191,"author":{"gitId":"-"},"content":" // initialize fields for tutor response and the checkboxes for tutor to mark \"Done\""},{"lineNumber":192,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c this.issue.issueDisputes.length; i++) {"},{"lineNumber":193,"author":{"gitId":"-"},"content":" const dispute \u003d this.issue.issueDisputes[i];"},{"lineNumber":194,"author":{"gitId":"-"},"content":" group[this.getTutorResponseFormId(i)] \u003d new FormControl(dispute.tutorResponse, Validators.required);"},{"lineNumber":195,"author":{"gitId":"-"},"content":" group[this.getTodoFormId(i)] \u003d new FormControl({ value: dispute.isDone(), disabled: !this.isEditing }, Validators.required);"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }"},{"lineNumber":197,"author":{"gitId":"-"},"content":" return group;"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }"},{"lineNumber":199,"author":{"gitId":"-"},"content":""},{"lineNumber":200,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":201,"author":{"gitId":"-"},"content":" * Obtain the updated Github comment format for the tutor response based on the values in the form and `this.issue`."},{"lineNumber":202,"author":{"gitId":"-"},"content":" */"},{"lineNumber":203,"author":{"gitId":"-"},"content":" getTutorResponseFromForm(): string {"},{"lineNumber":204,"author":{"gitId":"-"},"content":" if (!this.issue.issueDisputes) {"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return \u0027\u0027;"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }"},{"lineNumber":207,"author":{"gitId":"-"},"content":""},{"lineNumber":208,"author":{"gitId":"-"},"content":" const values \u003d this.tutorResponseForm.getRawValue();"},{"lineNumber":209,"author":{"gitId":"-"},"content":" const todos \u003d [];"},{"lineNumber":210,"author":{"gitId":"-"},"content":" const responses \u003d [];"},{"lineNumber":211,"author":{"gitId":"-"},"content":" const updatedIssue \u003d this.issue.clone(this.phaseService.currentPhase);"},{"lineNumber":212,"author":{"gitId":"-"},"content":""},{"lineNumber":213,"author":{"gitId":"-"},"content":" let index \u003d 0;"},{"lineNumber":214,"author":{"gitId":"-"},"content":" for (const [key, value] of Object.entries(values)) {"},{"lineNumber":215,"author":{"gitId":"-"},"content":" if (key.startsWith(\u0027todo\u0027)) {"},{"lineNumber":216,"author":{"gitId":"-"},"content":" todos.push(value);"},{"lineNumber":217,"author":{"gitId":"-"},"content":" } else if (key.startsWith(\u0027tutor-response\u0027)) {"},{"lineNumber":218,"author":{"gitId":"-"},"content":" responses.push(value);"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }"},{"lineNumber":220,"author":{"gitId":"-"},"content":" index++;"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }"},{"lineNumber":222,"author":{"gitId":"-"},"content":""},{"lineNumber":223,"author":{"gitId":"-"},"content":" index \u003d 0;"},{"lineNumber":224,"author":{"gitId":"-"},"content":" for (const dispute of updatedIssue.issueDisputes) {"},{"lineNumber":225,"author":{"gitId":"-"},"content":" const isDone \u003d todos[index] \u003d\u003d\u003d undefined ? dispute.isDone() : todos[index];"},{"lineNumber":226,"author":{"gitId":"-"},"content":" const tutorResponse \u003d responses[index] || dispute.tutorResponse;"},{"lineNumber":227,"author":{"gitId":"-"},"content":" updatedIssue.issueDisputes[index].setTutorResponse(tutorResponse);"},{"lineNumber":228,"author":{"gitId":"-"},"content":" updatedIssue.issueDisputes[index].setIsDone(isDone);"},{"lineNumber":229,"author":{"gitId":"-"},"content":" index++;"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }"},{"lineNumber":231,"author":{"gitId":"-"},"content":" return updatedIssue.createGithubTutorResponse();"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }"},{"lineNumber":233,"author":{"gitId":"-"},"content":""},{"lineNumber":234,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * @param index - index of dispute which the tutor resolve."},{"lineNumber":236,"author":{"gitId":"-"},"content":" */"},{"lineNumber":237,"author":{"gitId":"-"},"content":" getTutorResponseFormId(index: number): string {"},{"lineNumber":238,"author":{"gitId":"-"},"content":" return `tutor-response-${index}`;"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }"},{"lineNumber":240,"author":{"gitId":"-"},"content":""},{"lineNumber":241,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":242,"author":{"gitId":"-"},"content":" * @param index - index of dispute which the tutor resolve."},{"lineNumber":243,"author":{"gitId":"-"},"content":" */"},{"lineNumber":244,"author":{"gitId":"-"},"content":" getTodoFormId(index: number): string {"},{"lineNumber":245,"author":{"gitId":"-"},"content":" return `todo-${index}`;"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }"},{"lineNumber":247,"author":{"gitId":"-"},"content":""},{"lineNumber":248,"author":{"gitId":"-"},"content":" get conflict(): boolean {"},{"lineNumber":249,"author":{"gitId":"-"},"content":" return this.submitButtonText \u003d\u003d\u003d SUBMIT_BUTTON_TEXT.OVERWRITE;"},{"lineNumber":250,"author":{"gitId":"-"},"content":" }"},{"lineNumber":251,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":4,"-":247}},{"path":"src/app/shared/view-issue/new-team-response/conflict-dialog/conflict-dialog.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv style\u003d\"display: flex; margin-bottom: 20px; align-items: center\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003ch1 mat-dialog-title style\u003d\"margin: 0\"\u003e{{ \u0027A new response was submitted by another user\u0027 }}\u003c/h1\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cbutton mat-icon-button color\u003d\"default\" style\u003d\"margin: 0 0 0 auto\" (click)\u003d\"close()\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eclose\u003c/mat-icon\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003cdiv mat-dialog-content style\u003d\"display: flex\"\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"column left\"\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cmat-tab-group class\u003d\"mat-elevation-z1\" animationDuration\u003d\"0ms\" (selectedTabChange)\u003d\"handleTabChange($event)\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmat-tab label\u003d\"Updated Markdown Text\"\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"tab-content\" *ngIf\u003d\"isReady\"\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cdiv [innerHTML]\u003d\"updatedHtml\"\u003e\u003c/div\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/mat-tab\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cmat-tab label\u003d\"Preview\"\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"tab-content\"\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cmarkdown\u003e{{ data.teamResponse }}\u003c/markdown\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/mat-tab\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/mat-tab-group\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"column right\"\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"data.type\"\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"mat-title\"\u003e Type \u003c/span\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c!-- This component isn\u0027t used, but when it is we need to fix this method --\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cp [ngStyle]\u003d\"labelService.setLabelStyle(labelService.getColorOfLabel(data.type))\"\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" {{ data.type || \u0027-\u0027 }}"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/p\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"data.severity\"\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"mat-title\"\u003e Severity \u003c/span\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cp [ngStyle]\u003d\"labelService.setLabelStyle(labelService.getColorOfLabel(data.severity))\"\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" {{ data.severity || \u0027-\u0027 }}"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/p\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cdiv *ngIf\u003d\"data.response\"\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"mat-title\"\u003e Response \u003c/span\u003e"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cp [ngStyle]\u003d\"labelService.setLabelStyle(labelService.getColorOfLabel(data.response))\"\u003e"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" {{ data.response || \u0027-\u0027 }}"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/p\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"data.assignees\"\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003capp-assignee-component [issue]\u003d\"data\" [team]\u003d\"data.teamAssigned\" [isEditable]\u003d\"false\"\u003e \u003c/app-assignee-component\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":""},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"data.duplicateOf\"\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cdiv\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"mat-title\"\u003eA Duplicate Of:\u003c/span\u003e"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cp style\u003d\"margin-top: 5px\"\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":" {{ \u0027#\u0027 + data.duplicateOf + \u0027: \u0027 + (issueService.getIssue(data.duplicateOf) | async).title }}"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003c/p\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"vigneshsankariyer1234567890":3,"-":62}},{"path":"src/app/shared/view-issue/new-team-response/conflict-dialog/conflict-dialog.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatTabChangeEvent } from \u0027@angular/material/tabs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { DomSanitizer, SafeHtml } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../core/models/issue.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../core/services/issue.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../../../core/services/label.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { escapeHTML, replaceNewlinesWithBreakLines } from \u0027../../../lib/html\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-conflict-dialog\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027conflict-dialog.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./conflict-dialog.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class ConflictDialogComponent {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" isOnPreview \u003d false;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" isReady \u003d false;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" updatedHtml: SafeHtml;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":21,"author":{"gitId":"-"},"content":" public dialogRef: MatDialogRef\u003cConflictDialogComponent\u003e,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Inject(MAT_DIALOG_DATA) public data: Issue,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private sanitizer: DomSanitizer,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public labelService: LabelService,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public issueService: IssueService"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.updatedHtml \u003d this.sanitizer.bypassSecurityTrustHtml(replaceNewlinesWithBreakLines(escapeHTML(data.teamResponse)));"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.isReady \u003d true;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" close(): void {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.dialogRef.close();"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" handleTabChange(event: MatTabChangeEvent): void {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.isOnPreview \u003d event.index \u003d\u003d\u003d 1;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":37}},{"path":"src/app/shared/view-issue/new-team-response/new-team-response.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cform [formGroup]\u003d\"newTeamResponseForm\" #myForm\u003d\"ngForm\" (ngSubmit)\u003d\"submitNewTeamResponse(myForm)\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"timeline-comment\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"timeline-header\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"vertical-align: middle; margin-left: 5px\"\u003e Post your team\u0027s response here. \u003c/span\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003cdiv\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"(issueService.getDuplicateIssuesFor(this.issue) | async).length \u003d\u003d\u003d 0; else displayDuplicates\" class\u003d\"container\"\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cdiv\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cmat-checkbox"},{"lineNumber":11,"author":{"gitId":"-"},"content":" style\u003d\"display: inline-block; width: 20%\""},{"lineNumber":12,"author":{"gitId":"-"},"content":" formControlName\u003d\"duplicated\""},{"lineNumber":13,"author":{"gitId":"-"},"content":" (change)\u003d\"handleChangeOfDuplicateCheckbox($event)\""},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" A Duplicate Of:"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/mat-checkbox\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cmat-form-field [style.visibility]\u003d\"!duplicated.value ? \u0027hidden\u0027 : \u0027visible\u0027\" style\u003d\"display: inline-block; width: 50%\"\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cmat-select formControlName\u003d\"duplicateOf\" placeholder\u003d\"Duplicate of\"\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cmat-option\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cngx-mat-select-search"},{"lineNumber":22,"author":{"gitId":"-"},"content":" placeholderLabel\u003d\"Search issues\""},{"lineNumber":23,"author":{"gitId":"-"},"content":" noEntriesFoundLabel\u003d\"No issues found\""},{"lineNumber":24,"author":{"gitId":"-"},"content":" [formControl]\u003d\"searchFilterCtrl\""},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003e\u003c/ngx-mat-select-search\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/mat-option\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cmat-option"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let issue of filteredDuplicateIssueList | async\""},{"lineNumber":29,"author":{"gitId":"-"},"content":" [disabled]\u003d\"dupIssueOptionIsDisabled(issue)\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" [value]\u003d\"issue.id\""},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"mat-body-strong\"\u003e #{{ issue.id }}: \u003c/span\u003e \u003cspan class\u003d\"mat-body\"\u003e{{ issue.title }}\u003c/span\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"dupIssueOptionIsDisabled(issue)\" class\u003d\"mat-caption\" style\u003d\"color: #f44336\"\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ({{ getDisabledDupOptionErrorText(issue) }})"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/mat-option\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/mat-select\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cmat-error *ngIf\u003d\"duplicateOf.errors \u0026\u0026 duplicateOf.errors[\u0027required\u0027] \u0026\u0026 duplicateOf.touched\"\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Need to specify the duplicated issue."},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/mat-error\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cng-template #displayDuplicates\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"container\"\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003capp-duplicated-issues-component [issue]\u003d\"this.issue\"\u003e\u003c/app-duplicated-issues-component\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/ng-template\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"container\" [style.display]\u003d\"duplicated.value ? \u0027none\u0027 : \u0027grid\u0027\"\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"left-half\"\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003capp-label-dropdown"},{"lineNumber":54,"author":{"gitId":"-"},"content":" [initialValue]\u003d\"this.issue.severity\""},{"lineNumber":55,"author":{"gitId":"-"},"content":" attributeName\u003d\"severity\""},{"lineNumber":56,"author":{"gitId":"-"},"content":" [dropdownForm]\u003d\"newTeamResponseForm\""},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003e\u003c/app-label-dropdown\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"right-half\"\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003capp-label-dropdown"},{"lineNumber":62,"author":{"gitId":"-"},"content":" [initialValue]\u003d\"this.issue.type\""},{"lineNumber":63,"author":{"gitId":"-"},"content":" attributeName\u003d\"type\""},{"lineNumber":64,"author":{"gitId":"-"},"content":" [dropdownForm]\u003d\"newTeamResponseForm\""},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003e\u003c/app-label-dropdown\u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"container\" [style.display]\u003d\"duplicated.value ? \u0027none\u0027 : \u0027grid\u0027\"\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003cmat-form-field class\u003d\"left-half\"\u003e"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u003cmat-select placeholder\u003d\"Assignees\" formControlName\u003d\"assignees\" multiple\u003e"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003cmat-option *ngFor\u003d\"let member of teamMembers\" [value]\u003d\"member\"\u003e{{ member }}\u003c/mat-option\u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u003c/mat-select\u003e"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003cmat-error *ngIf\u003d\"assignees.errors \u0026\u0026 assignees.errors[\u0027required\u0027] \u0026\u0026 assignees.touched\"\u003e Assignee(s) required. \u003c/mat-error\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"right-half\"\u003e"},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003capp-label-dropdown"},{"lineNumber":79,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" [initialValue]\u003d\"this.issue.response\""},{"lineNumber":80,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" attributeName\u003d\"response\""},{"lineNumber":81,"author":{"gitId":"-"},"content":" [dropdownForm]\u003d\"newTeamResponseForm\""},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003e\u003c/app-label-dropdown\u003e"},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":84,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003capp-comment-editor"},{"lineNumber":87,"author":{"gitId":"-"},"content":" [id]\u003d\"\u0027description\u0027\""},{"lineNumber":88,"author":{"gitId":"-"},"content":" [commentField]\u003d\"this.newTeamResponseForm.get(\u0027description\u0027)\""},{"lineNumber":89,"author":{"gitId":"-"},"content":" [commentForm]\u003d\"this.newTeamResponseForm\""},{"lineNumber":90,"author":{"gitId":"-"},"content":" [(isFormPending)]\u003d\"this.isFormPending\""},{"lineNumber":91,"author":{"gitId":"-"},"content":" [(submitButtonText)]\u003d\"this.submitButtonText\""},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c/app-comment-editor\u003e"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"editor-actions\"\u003e"},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":97,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":98,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":99,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":100,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isFormPending\""},{"lineNumber":101,"author":{"gitId":"-"},"content":" mat-raised-button"},{"lineNumber":102,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":103,"author":{"gitId":"-"},"content":" (click)\u003d\"viewUpdatedResponse()\""},{"lineNumber":104,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":105,"author":{"gitId":"-"},"content":" View Updated Response"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":108,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":109,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":110,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":111,"author":{"gitId":"-"},"content":" [disabled]\u003d\"newTeamResponseForm.invalid || isFormPending\""},{"lineNumber":112,"author":{"gitId":"-"},"content":" mat-raised-button"},{"lineNumber":113,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":115,"author":{"gitId":"-"},"content":" {{ submitButtonText }}"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":118,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":119,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":120,"author":{"gitId":"-"},"content":" *ngIf\u003d\"!conflict\""},{"lineNumber":121,"author":{"gitId":"-"},"content":" [disabled]\u003d\"newTeamResponseForm.invalid || isFormPending\""},{"lineNumber":122,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":125,"author":{"gitId":"-"},"content":" {{ submitButtonText }}"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":128,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":129,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":130,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":131,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isFormPending\""},{"lineNumber":132,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":133,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":134,"author":{"gitId":"-"},"content":" (click)\u003d\"refresh()\""},{"lineNumber":135,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Updated response will overwrite your changes\""},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Cancel"},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":139,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":142,"author":{"gitId":"-"},"content":"\u003c/form\u003e"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":140}},{"path":"src/app/shared/view-issue/new-team-response/new-team-response.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormBuilder, FormControl, FormGroup, NgForm, Validators } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatCheckboxChange } from \u0027@angular/material/checkbox\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Observable, ReplaySubject, Subject, throwError } from \u0027rxjs\u0027;"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { finalize, first, map, mergeMap, takeUntil } from \u0027rxjs/operators\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027../../../core/models/comment.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { Conflict } from \u0027../../../core/models/conflict/conflict.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { Issue, STATUS } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../core/services/error-handling.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../../core/services/label.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../core/services/phase.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027../../issue-tables/issue-tables-columns\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { applySearchFilter } from \u0027../../issue-tables/search-filter\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { SUBMIT_BUTTON_TEXT } from \u0027../view-issue.component\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { ConflictDialogComponent } from \u0027./conflict-dialog/conflict-dialog.component\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":20,"author":{"gitId":"-"},"content":" selector: \u0027app-new-team-response\u0027,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" templateUrl: \u0027./new-team-response.component.html\u0027,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./new-team-response.component.css\u0027]"},{"lineNumber":23,"author":{"gitId":"-"},"content":"})"},{"lineNumber":24,"author":{"gitId":"-"},"content":"export class NewTeamResponseComponent implements OnInit, OnDestroy {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" newTeamResponseForm: FormGroup;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" teamMembers: string[];"},{"lineNumber":27,"author":{"gitId":"-"},"content":" duplicatedIssueList: Observable\u003cIssue[]\u003e;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" conflict: Conflict;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" searchFilterCtrl: FormControl \u003d new FormControl();"},{"lineNumber":30,"author":{"gitId":"-"},"content":" filteredDuplicateIssueList: ReplaySubject\u003cIssue[]\u003e \u003d new ReplaySubject\u003cIssue[]\u003e(1);"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" isFormPending \u003d false;"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" submitButtonText: string;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Input() issue: Issue;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Output() issueUpdated \u003d new EventEmitter\u003cIssue\u003e();"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" // A subject that will emit a signal when this component is being destroyed"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private _onDestroy \u003d new Subject\u003cvoid\u003e();"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":43,"author":{"gitId":"-"},"content":" public issueService: IssueService,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public labelService: LabelService,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private dialog: MatDialog,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private phaseService: PhaseService"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.teamMembers \u003d this.issue.teamAssigned.teamMembers.map((member) \u003d\u003e {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return member.loginId;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" });"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.duplicatedIssueList \u003d this.getDupIssueList();"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Populate the filtered list with all the issues first"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.duplicatedIssueList.pipe(first()).subscribe((issues) \u003d\u003e this.filteredDuplicateIssueList.next(issues));"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.searchFilterCtrl.valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((_) \u003d\u003e this.filterIssues());"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.newTeamResponseForm \u003d this.formBuilder.group({"},{"lineNumber":60,"author":{"gitId":"-"},"content":" description: [\u0027\u0027],"},{"lineNumber":61,"author":{"gitId":"-"},"content":" severity: [this.issue.severity, Validators.required],"},{"lineNumber":62,"author":{"gitId":"-"},"content":" type: [this.issue.type, Validators.required],"},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" response: [this.issue.response, Validators.required],"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assignees: [this.issue.assignees.map((a) \u003d\u003e a.toLowerCase())],"},{"lineNumber":65,"author":{"gitId":"-"},"content":" duplicated: [false],"},{"lineNumber":66,"author":{"gitId":"-"},"content":" duplicateOf: [\u0027\u0027]"},{"lineNumber":67,"author":{"gitId":"-"},"content":" });"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.duplicated.valueChanges.subscribe((checked) \u003d\u003e {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (checked) {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.duplicateOf.setValidators(Validators.required);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.responseTag.setValidators(null);"},{"lineNumber":72,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.duplicateOf.setValidators(null);"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.responseTag.setValidators(Validators.required);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.duplicateOf.updateValueAndValidity();"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.responseTag.updateValueAndValidity();"},{"lineNumber":78,"author":{"gitId":"-"},"content":" });"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.SUBMIT;"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":" private filterIssues(): void {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.changeFilter(this.duplicatedIssueList, this.searchFilterCtrl.value).subscribe((issues) \u003d\u003e"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.filteredDuplicateIssueList.next(issues)"},{"lineNumber":85,"author":{"gitId":"-"},"content":" );"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":""},{"lineNumber":88,"author":{"gitId":"-"},"content":" private changeFilter(issuesObservable: Observable\u003cIssue[]\u003e, searchInputString): Observable\u003cIssue[]\u003e {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return issuesObservable.pipe("},{"lineNumber":90,"author":{"gitId":"-"},"content":" first(),"},{"lineNumber":91,"author":{"gitId":"-"},"content":" map((issues) \u003d\u003e {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return applySearchFilter(searchInputString, [TABLE_COLUMNS.ID, TABLE_COLUMNS.TITLE], this.issueService, issues);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" })"},{"lineNumber":94,"author":{"gitId":"-"},"content":" );"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this._onDestroy.next(); // Emits the destroy signal"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this._onDestroy.complete();"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" submitNewTeamResponse(form: NgForm) {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (this.newTeamResponseForm.invalid) {"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.isFormPending \u003d true;"},{"lineNumber":107,"author":{"gitId":"-"},"content":" const latestIssue \u003d this.getUpdatedIssue();"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.isSafeToSubmit()"},{"lineNumber":110,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":111,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((isSaveToSubmit: boolean) \u003d\u003e {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" const newCommentDescription \u003d latestIssue.createGithubTeamResponse();"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (isSaveToSubmit) {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return this.issueService.createTeamResponse(latestIssue);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" } else if (this.submitButtonText \u003d\u003d\u003d SUBMIT_BUTTON_TEXT.OVERWRITE) {"},{"lineNumber":116,"author":{"gitId":"-"},"content":" const issueCommentId \u003d this.issueService.issues[this.issue.id].issueComment.id;"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return this.issueService.updateIssueWithComment(latestIssue, \u003cIssueComment\u003e{"},{"lineNumber":118,"author":{"gitId":"-"},"content":" id: issueCommentId,"},{"lineNumber":119,"author":{"gitId":"-"},"content":" description: newCommentDescription"},{"lineNumber":120,"author":{"gitId":"-"},"content":" });"},{"lineNumber":121,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" this.conflict \u003d new Conflict(\u0027 \u0027, this.issueService.issues[this.issue.id].teamResponse);"},{"lineNumber":123,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.OVERWRITE;"},{"lineNumber":124,"author":{"gitId":"-"},"content":" this.viewUpdatedResponse();"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return throwError(\u0027A response has been submitted. Please verify the changes and try again.\u0027);"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":128,"author":{"gitId":"-"},"content":" finalize(() \u003d\u003e (this.isFormPending \u003d false))"},{"lineNumber":129,"author":{"gitId":"-"},"content":" )"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":131,"author":{"gitId":"-"},"content":" (updatedIssue: Issue) \u003d\u003e {"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // updatedIssue.issueComment \u003d updatedComment;"},{"lineNumber":133,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(updatedIssue);"},{"lineNumber":134,"author":{"gitId":"-"},"content":" form.resetForm();"},{"lineNumber":135,"author":{"gitId":"-"},"content":" },"},{"lineNumber":136,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":137,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }"},{"lineNumber":139,"author":{"gitId":"-"},"content":" );"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }"},{"lineNumber":141,"author":{"gitId":"-"},"content":""},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * @return - Determines whether it is safe to submit a tester response."},{"lineNumber":144,"author":{"gitId":"-"},"content":" */"},{"lineNumber":145,"author":{"gitId":"-"},"content":" isSafeToSubmit(): Observable\u003cboolean\u003e {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return this.issueService.getLatestIssue(this.issue.id).pipe("},{"lineNumber":147,"author":{"gitId":"-"},"content":" map((issue: Issue) \u003d\u003e {"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return !issue.teamResponse;"},{"lineNumber":149,"author":{"gitId":"-"},"content":" })"},{"lineNumber":150,"author":{"gitId":"-"},"content":" );"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * @return - an updated copy of issue with its updated value from the form."},{"lineNumber":155,"author":{"gitId":"-"},"content":" */"},{"lineNumber":156,"author":{"gitId":"-"},"content":" getUpdatedIssue(): Issue {"},{"lineNumber":157,"author":{"gitId":"-"},"content":" const clone \u003d this.issue.clone(this.phaseService.currentPhase);"},{"lineNumber":158,"author":{"gitId":"-"},"content":" clone.duplicated \u003d this.duplicated.value;"},{"lineNumber":159,"author":{"gitId":"-"},"content":" clone.duplicateOf \u003d this.duplicateOf.value;"},{"lineNumber":160,"author":{"gitId":"-"},"content":" if (clone.duplicated) {"},{"lineNumber":161,"author":{"gitId":"-"},"content":" const duplicatedIssue \u003d this.issueService.issues[clone.duplicateOf];"},{"lineNumber":162,"author":{"gitId":"-"},"content":" clone.severity \u003d duplicatedIssue.severity;"},{"lineNumber":163,"author":{"gitId":"-"},"content":" clone.type \u003d duplicatedIssue.type;"},{"lineNumber":164,"author":{"gitId":"-"},"content":" clone.assignees \u003d duplicatedIssue.assignees;"},{"lineNumber":165,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" clone.response \u003d duplicatedIssue.response;"},{"lineNumber":166,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":167,"author":{"gitId":"-"},"content":" clone.severity \u003d this.severity.value;"},{"lineNumber":168,"author":{"gitId":"-"},"content":" clone.type \u003d this.type.value;"},{"lineNumber":169,"author":{"gitId":"-"},"content":" clone.assignees \u003d this.assignees.value;"},{"lineNumber":170,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" clone.response \u003d this.responseTag.value;"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }"},{"lineNumber":172,"author":{"gitId":"-"},"content":" clone.status \u003d STATUS.Done;"},{"lineNumber":173,"author":{"gitId":"-"},"content":" clone.teamResponse \u003d Issue.updateTeamResponse(this.description.value);"},{"lineNumber":174,"author":{"gitId":"-"},"content":" return clone;"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }"},{"lineNumber":176,"author":{"gitId":"-"},"content":""},{"lineNumber":177,"author":{"gitId":"-"},"content":" dupIssueOptionIsDisabled(issue: Issue): boolean {"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return issue.duplicated || !!issue.duplicateOf;"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }"},{"lineNumber":180,"author":{"gitId":"-"},"content":""},{"lineNumber":181,"author":{"gitId":"-"},"content":" getDisabledDupOptionErrorText(issue: Issue): string {"},{"lineNumber":182,"author":{"gitId":"-"},"content":" return this.dupIssueOptionIsDisabled(issue) ? \u0027Duplicate of #\u0027 + issue.duplicateOf : \u0027\u0027;"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }"},{"lineNumber":184,"author":{"gitId":"-"},"content":""},{"lineNumber":185,"author":{"gitId":"-"},"content":" handleChangeOfDuplicateCheckbox(event: MatCheckboxChange) {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (event.checked) {"},{"lineNumber":187,"author":{"gitId":"-"},"content":" this.responseTag.setValue(\u0027\u0027);"},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.assignees.setValue([]);"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.responseTag.markAsUntouched();"},{"lineNumber":190,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.duplicateOf.setValue(\u0027\u0027);"},{"lineNumber":192,"author":{"gitId":"-"},"content":" this.duplicateOf.markAsUntouched();"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }"},{"lineNumber":195,"author":{"gitId":"-"},"content":""},{"lineNumber":196,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":197,"author":{"gitId":"-"},"content":" * Pops up a dialog that shows the updated team response that was submitted."},{"lineNumber":198,"author":{"gitId":"-"},"content":" */"},{"lineNumber":199,"author":{"gitId":"-"},"content":" viewUpdatedResponse(): void {"},{"lineNumber":200,"author":{"gitId":"-"},"content":" this.dialog.open(ConflictDialogComponent, {"},{"lineNumber":201,"author":{"gitId":"-"},"content":" data: this.issueService.issues[this.issue.id],"},{"lineNumber":202,"author":{"gitId":"-"},"content":" autoFocus: false"},{"lineNumber":203,"author":{"gitId":"-"},"content":" });"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }"},{"lineNumber":205,"author":{"gitId":"-"},"content":""},{"lineNumber":206,"author":{"gitId":"-"},"content":" refresh(): void {"},{"lineNumber":207,"author":{"gitId":"-"},"content":" const updatedIssue \u003d this.issueService.issues[this.issue.id];"},{"lineNumber":208,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(updatedIssue);"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }"},{"lineNumber":210,"author":{"gitId":"-"},"content":""},{"lineNumber":211,"author":{"gitId":"-"},"content":" private getDupIssueList(): Observable\u003cIssue[]\u003e {"},{"lineNumber":212,"author":{"gitId":"-"},"content":" return this.issueService.issues$.pipe("},{"lineNumber":213,"author":{"gitId":"-"},"content":" map((issues) \u003d\u003e {"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return issues.filter((issue) \u003d\u003e {"},{"lineNumber":215,"author":{"gitId":"-"},"content":" return this.issue.id !\u003d\u003d issue.id;"},{"lineNumber":216,"author":{"gitId":"-"},"content":" });"},{"lineNumber":217,"author":{"gitId":"-"},"content":" })"},{"lineNumber":218,"author":{"gitId":"-"},"content":" );"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }"},{"lineNumber":220,"author":{"gitId":"-"},"content":""},{"lineNumber":221,"author":{"gitId":"-"},"content":" get description() {"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return this.newTeamResponseForm.get(\u0027description\u0027);"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }"},{"lineNumber":224,"author":{"gitId":"-"},"content":""},{"lineNumber":225,"author":{"gitId":"-"},"content":" get severity() {"},{"lineNumber":226,"author":{"gitId":"-"},"content":" return this.newTeamResponseForm.get(\u0027severity\u0027);"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }"},{"lineNumber":228,"author":{"gitId":"-"},"content":""},{"lineNumber":229,"author":{"gitId":"-"},"content":" get type() {"},{"lineNumber":230,"author":{"gitId":"-"},"content":" return this.newTeamResponseForm.get(\u0027type\u0027);"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }"},{"lineNumber":232,"author":{"gitId":"-"},"content":""},{"lineNumber":233,"author":{"gitId":"-"},"content":" get assignees() {"},{"lineNumber":234,"author":{"gitId":"-"},"content":" return this.newTeamResponseForm.get(\u0027assignees\u0027);"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }"},{"lineNumber":236,"author":{"gitId":"-"},"content":""},{"lineNumber":237,"author":{"gitId":"-"},"content":" get responseTag() {"},{"lineNumber":238,"author":{"gitId":"-"},"content":" return this.newTeamResponseForm.get(\u0027response\u0027);"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }"},{"lineNumber":240,"author":{"gitId":"-"},"content":""},{"lineNumber":241,"author":{"gitId":"-"},"content":" get duplicated() {"},{"lineNumber":242,"author":{"gitId":"-"},"content":" return this.newTeamResponseForm.get(\u0027duplicated\u0027);"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }"},{"lineNumber":244,"author":{"gitId":"-"},"content":""},{"lineNumber":245,"author":{"gitId":"-"},"content":" get duplicateOf() {"},{"lineNumber":246,"author":{"gitId":"-"},"content":" return this.newTeamResponseForm.get(\u0027duplicateOf\u0027);"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":5,"-":243}},{"path":"src/app/shared/view-issue/new-team-response/new-team-response.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { CommonModule } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MarkdownModule } from \u0027ngx-markdown\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { NgxMatSelectSearchModule } from \u0027ngx-mat-select-search\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { CommentEditorModule } from \u0027../../comment-editor/comment-editor.module\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { IssueComponentsModule } from \u0027../../issue/issue-components.module\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LabelDropdownModule } from \u0027../../label-dropdown/label-dropdown.module\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../../shared.module\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ConflictDialogComponent } from \u0027./conflict-dialog/conflict-dialog.component\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { NewTeamResponseComponent } from \u0027./new-team-response.component\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exports: [NewTeamResponseComponent, ConflictDialogComponent],"},{"lineNumber":14,"author":{"gitId":"-"},"content":" declarations: [NewTeamResponseComponent, ConflictDialogComponent],"},{"lineNumber":15,"author":{"gitId":"-"},"content":" imports: ["},{"lineNumber":16,"author":{"gitId":"-"},"content":" CommonModule,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" CommentEditorModule,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" SharedModule,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" IssueComponentsModule,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" LabelDropdownModule,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" MarkdownModule.forChild(),"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NgxMatSelectSearchModule"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ]"},{"lineNumber":24,"author":{"gitId":"-"},"content":"})"},{"lineNumber":25,"author":{"gitId":"-"},"content":"export class NewTeamResponseModule {}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":24}},{"path":"src/app/shared/view-issue/team-response/team-response.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, EventEmitter, Input, OnInit, Output } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormBuilder, FormGroup, NgForm } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Observable, throwError } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { finalize, map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027../../../core/models/comment.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Conflict } from \u0027../../../core/models/conflict/conflict.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { Issue, STATUS } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../../core/services/dialog.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../core/services/error-handling.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../../core/services/permission.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../core/services/phase.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { ConflictDialogComponent } from \u0027../../issue/conflict-dialog/conflict-dialog.component\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { SUBMIT_BUTTON_TEXT } from \u0027../view-issue.component\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" selector: \u0027app-team-response\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" templateUrl: \u0027./team-response.component.html\u0027,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./team-response.component.css\u0027]"},{"lineNumber":21,"author":{"gitId":"-"},"content":"})"},{"lineNumber":22,"author":{"gitId":"-"},"content":"export class TeamResponseComponent implements OnInit {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" isSavePending \u003d false;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" responseForm: FormGroup;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" conflict: Conflict;"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" submitButtonText: string;"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Input() issue: Issue;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Input() isEditing: boolean;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Output() issueUpdated \u003d new EventEmitter\u003cIssue\u003e();"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Output() updateEditState \u003d new EventEmitter\u003cboolean\u003e();"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" // Messages for the modal popup window upon cancelling edit"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private readonly cancelEditModalMessages \u003d [\u0027Do you wish to cancel?\u0027, \u0027Your changes will be discarded.\u0027];"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private readonly yesButtonModalMessage \u003d \u0027Cancel\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private readonly noButtonModalMessage \u003d \u0027Continue editing\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":40,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private permissions: PermissionService,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private dialog: MatDialog,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private dialogService: DialogService"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.responseForm \u003d this.formBuilder.group({"},{"lineNumber":51,"author":{"gitId":"-"},"content":" description: [\u0027\u0027]"},{"lineNumber":52,"author":{"gitId":"-"},"content":" });"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.SAVE;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" changeToEditMode() {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.updateEditState.emit(true);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.responseForm.setValue({"},{"lineNumber":59,"author":{"gitId":"-"},"content":" description: this.issue.teamResponse || \u0027\u0027"},{"lineNumber":60,"author":{"gitId":"-"},"content":" });"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" updateResponse(form: NgForm) {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (this.responseForm.invalid) {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.isSavePending \u003d true;"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" const updatedIssue \u003d this.getUpdatedIssue();"},{"lineNumber":70,"author":{"gitId":"-"},"content":" const updatedIssueComment \u003d \u003cIssueComment\u003e{"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ...updatedIssue.issueComment,"},{"lineNumber":72,"author":{"gitId":"-"},"content":" description: updatedIssue.createGithubTeamResponse()"},{"lineNumber":73,"author":{"gitId":"-"},"content":" };"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.isSafeToUpdate()"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((isSaveToUpdate: boolean) \u003d\u003e {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (isSaveToUpdate || this.submitButtonText \u003d\u003d\u003d SUBMIT_BUTTON_TEXT.OVERWRITE) {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return this.issueService.updateIssueWithComment(updatedIssue, updatedIssueComment);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" } else if (this.isUpdatingDeletedResponse()) {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this.issueService.createTeamResponse(updatedIssue);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.conflict \u003d new Conflict(this.issue.teamResponse, this.issueService.issues[this.issue.id].teamResponse);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.OVERWRITE;"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.viewChanges();"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return throwError(\u0027The content you are editing has changed. Please verify the changes and try again.\u0027);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":89,"author":{"gitId":"-"},"content":" finalize(() \u003d\u003e (this.isSavePending \u003d false))"},{"lineNumber":90,"author":{"gitId":"-"},"content":" )"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":92,"author":{"gitId":"-"},"content":" (updatedIssue: Issue) \u003d\u003e {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(updatedIssue);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.resetToDefault();"},{"lineNumber":95,"author":{"gitId":"-"},"content":" form.resetForm();"},{"lineNumber":96,"author":{"gitId":"-"},"content":" },"},{"lineNumber":97,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }"},{"lineNumber":100,"author":{"gitId":"-"},"content":" );"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":""},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @return - Determines whether it is safe to updated an existing team response."},{"lineNumber":105,"author":{"gitId":"-"},"content":" */"},{"lineNumber":106,"author":{"gitId":"-"},"content":" isSafeToUpdate(): Observable\u003cboolean\u003e {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return this.issueService.getLatestIssue(this.issue.id).pipe("},{"lineNumber":108,"author":{"gitId":"-"},"content":" map((issue: Issue) \u003d\u003e {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return issue.teamResponse \u003d\u003d\u003d this.issue.teamResponse;"},{"lineNumber":110,"author":{"gitId":"-"},"content":" })"},{"lineNumber":111,"author":{"gitId":"-"},"content":" );"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }"},{"lineNumber":113,"author":{"gitId":"-"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Determines whether the user is updating a response that has already been deleted on Github."},{"lineNumber":116,"author":{"gitId":"-"},"content":" */"},{"lineNumber":117,"author":{"gitId":"-"},"content":" isUpdatingDeletedResponse(): boolean {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return this.issue.teamResponse \u0026\u0026 !this.issueService.issues[this.issue.id].teamResponse;"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" canEditIssue(): boolean {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return this.permissions.isTeamResponseEditable();"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }"},{"lineNumber":124,"author":{"gitId":"-"},"content":""},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Resets to default form state."},{"lineNumber":127,"author":{"gitId":"-"},"content":" */"},{"lineNumber":128,"author":{"gitId":"-"},"content":" resetToDefault(): void {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.SAVE;"},{"lineNumber":130,"author":{"gitId":"-"},"content":" this.conflict \u003d undefined;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" this.updateEditState.emit(false);"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }"},{"lineNumber":133,"author":{"gitId":"-"},"content":""},{"lineNumber":134,"author":{"gitId":"-"},"content":" viewChanges(): void {"},{"lineNumber":135,"author":{"gitId":"-"},"content":" this.dialog.open(ConflictDialogComponent, {"},{"lineNumber":136,"author":{"gitId":"-"},"content":" data: this.conflict,"},{"lineNumber":137,"author":{"gitId":"-"},"content":" autoFocus: false"},{"lineNumber":138,"author":{"gitId":"-"},"content":" });"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }"},{"lineNumber":140,"author":{"gitId":"-"},"content":""},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * When user exits exit mode, we will need to sync the issue in IssueService with this component."},{"lineNumber":143,"author":{"gitId":"-"},"content":" */"},{"lineNumber":144,"author":{"gitId":"-"},"content":" cancelEditMode(): void {"},{"lineNumber":145,"author":{"gitId":"-"},"content":" this.issueService.getIssue(this.issue.id).subscribe((issue: Issue) \u003d\u003e {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(issue);"},{"lineNumber":147,"author":{"gitId":"-"},"content":" this.resetToDefault();"},{"lineNumber":148,"author":{"gitId":"-"},"content":" });"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }"},{"lineNumber":150,"author":{"gitId":"-"},"content":""},{"lineNumber":151,"author":{"gitId":"-"},"content":" openCancelDialogIfModified(): void {"},{"lineNumber":152,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const isModified \u003d this.dialogService.checkIfFieldIsModified(this.responseForm, \u0027teamResponse\u0027, \u0027description\u0027, this.issue);"},{"lineNumber":153,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.dialogService.performActionIfModified("},{"lineNumber":154,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" isModified,"},{"lineNumber":155,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" () \u003d\u003e this.openCancelDialog(),"},{"lineNumber":156,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" () \u003d\u003e this.cancelEditMode()"},{"lineNumber":157,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }"},{"lineNumber":159,"author":{"gitId":"-"},"content":""},{"lineNumber":160,"author":{"gitId":"-"},"content":" openCancelDialog(): void {"},{"lineNumber":161,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openUserConfirmationModal("},{"lineNumber":162,"author":{"gitId":"-"},"content":" this.cancelEditModalMessages,"},{"lineNumber":163,"author":{"gitId":"-"},"content":" this.yesButtonModalMessage,"},{"lineNumber":164,"author":{"gitId":"-"},"content":" this.noButtonModalMessage"},{"lineNumber":165,"author":{"gitId":"-"},"content":" );"},{"lineNumber":166,"author":{"gitId":"-"},"content":""},{"lineNumber":167,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":168,"author":{"gitId":"-"},"content":" if (res) {"},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.cancelEditMode();"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }"},{"lineNumber":171,"author":{"gitId":"-"},"content":" });"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }"},{"lineNumber":173,"author":{"gitId":"-"},"content":""},{"lineNumber":174,"author":{"gitId":"-"},"content":" private getUpdatedIssue(): Issue {"},{"lineNumber":175,"author":{"gitId":"-"},"content":" const clone \u003d this.issue.clone(this.phaseService.currentPhase);"},{"lineNumber":176,"author":{"gitId":"-"},"content":" clone.teamResponse \u003d Issue.updateTeamResponse(this.responseForm.get(\u0027description\u0027).value);"},{"lineNumber":177,"author":{"gitId":"-"},"content":" if (!clone.status) {"},{"lineNumber":178,"author":{"gitId":"-"},"content":" clone.status \u003d clone.teamResponse \u003d\u003d\u003d \u0027\u0027 ? STATUS.Incomplete : STATUS.Done;"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }"},{"lineNumber":180,"author":{"gitId":"-"},"content":" return clone;"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":8,"-":174}},{"path":"src/app/shared/view-issue/tester-response/conflict-dialog/conflict-dialog.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { DomSanitizer, SafeHtml } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Conflict } from \u0027../../../../core/models/conflict/conflict.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { TesterResponse } from \u0027../../../../core/models/tester-response.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../core/services/issue.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../../../core/services/label.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"export interface TesterResponseConflictData {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" outdatedResponses: TesterResponse[];"},{"lineNumber":11,"author":{"gitId":"-"},"content":" updatedResponses: TesterResponse[];"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":15,"author":{"gitId":"-"},"content":" selector: \u0027app-conflict-dialog\u0027,"},{"lineNumber":16,"author":{"gitId":"-"},"content":" templateUrl: \u0027conflict-dialog.component.html\u0027,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./conflict-dialog.component.css\u0027]"},{"lineNumber":18,"author":{"gitId":"-"},"content":"})"},{"lineNumber":19,"author":{"gitId":"-"},"content":"export class ConflictDialogComponent {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" isReady \u003d false;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" showDiff \u003d true;"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" conflicts: Conflict[] \u003d [];"},{"lineNumber":24,"author":{"gitId":"-"},"content":" diffHtmls: SafeHtml[] \u003d [];"},{"lineNumber":25,"author":{"gitId":"-"},"content":" updatedHtmls: SafeHtml[] \u003d [];"},{"lineNumber":26,"author":{"gitId":"-"},"content":" panelOpenStates: boolean[] \u003d [];"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":29,"author":{"gitId":"-"},"content":" public dialogRef: MatDialogRef\u003cConflictDialogComponent\u003e,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Inject(MAT_DIALOG_DATA) public data: TesterResponseConflictData,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private sanitizer: DomSanitizer,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public labelService: LabelService,"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public issueService: IssueService"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c data.updatedResponses.length; i++) {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.conflicts.push("},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Conflict("},{"lineNumber":38,"author":{"gitId":"-"},"content":" data.outdatedResponses[i].getDisagreementWithoutDefaultResponse(),"},{"lineNumber":39,"author":{"gitId":"-"},"content":" data.updatedResponses[i].getDisagreementWithoutDefaultResponse()"},{"lineNumber":40,"author":{"gitId":"-"},"content":" )"},{"lineNumber":41,"author":{"gitId":"-"},"content":" );"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.diffHtmls.push(this.sanitizer.bypassSecurityTrustHtml(this.conflicts[i].getHtmlDiffString()));"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.updatedHtmls.push(this.sanitizer.bypassSecurityTrustHtml(this.conflicts[i].getHtmlUpdatedString()));"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.panelOpenStates.push(data.outdatedResponses[i].compareTo(data.updatedResponses[i]) !\u003d\u003d 0);"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.isReady \u003d true;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" close(): void {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.dialogRef.close();"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" handleChangeShowDiff() {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.showDiff \u003d !this.showDiff;"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":56}},{"path":"src/app/shared/view-issue/tester-response/tester-response.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormBuilder, FormControl, FormGroup, Validators } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Observable, throwError } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { finalize, map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027../../../core/models/comment.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { TesterResponse } from \u0027../../../core/models/tester-response.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { UserRole } from \u0027../../../core/models/user.model\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../../core/services/dialog.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../core/services/error-handling.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../core/services/issue.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../core/services/phase.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../../core/services/user.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { CommentEditorComponent } from \u0027../../comment-editor/comment-editor.component\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { SUBMIT_BUTTON_TEXT } from \u0027../view-issue.component\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { ConflictDialogComponent, TesterResponseConflictData } from \u0027./conflict-dialog/conflict-dialog.component\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":20,"author":{"gitId":"-"},"content":" selector: \u0027app-tester-response\u0027,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" templateUrl: \u0027./tester-response.component.html\u0027,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./tester-response.component.css\u0027]"},{"lineNumber":23,"author":{"gitId":"-"},"content":"})"},{"lineNumber":24,"author":{"gitId":"-"},"content":"export class TesterResponseComponent implements OnInit, OnChanges {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" testerResponseForm: FormGroup;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" isFormPending \u003d false;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" submitButtonText: string;"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Input() issue: Issue;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Input() isEditing: boolean;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Output() issueUpdated \u003d new EventEmitter\u003cIssue\u003e();"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Output() updateEditState \u003d new EventEmitter\u003cboolean\u003e();"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @ViewChild(CommentEditorComponent) commentEditor: CommentEditorComponent;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" // Messages for the modal popup window upon cancelling edit"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private readonly cancelEditModalMessages \u003d [\u0027Do you wish to cancel?\u0027, \u0027Your changes will be discarded.\u0027];"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private readonly yesButtonModalMessage \u003d \u0027Cancel\u0027;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private readonly noButtonModalMessage \u003d \u0027Continue editing\u0027;"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" private readonly responseRadioIdentifier \u003d \u0027response-radio\u0027;"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private readonly responseTextIdentifier \u003d \u0027tester-response\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":45,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public userService: UserService,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private dialog: MatDialog,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private dialogService: DialogService"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.resetForm();"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d this.isNewResponse() ? SUBMIT_BUTTON_TEXT.SUBMIT : SUBMIT_BUTTON_TEXT.SAVE;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.updateEditState.emit(this.isNewResponse());"},{"lineNumber":59,"author":{"gitId":"-"},"content":" });"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" ngOnChanges(changes: SimpleChanges) {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Whenever there is a change in value of issue, we reset the form so to render the most up to date form."},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!this.isEditing \u0026\u0026 changes.issue \u0026\u0026 changes.issue.previousValue !\u003d\u003d changes.issue.currentValue) {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.resetForm();"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" submitTesterResponseForm() {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (this.testerResponseForm.invalid) {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.isFormPending \u003d true;"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.isSafeToSubmit()"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((isSaveToSubmit: boolean) \u003d\u003e {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (isSaveToSubmit || this.isUpdatingDeletedResponse() || this.submitButtonText \u003d\u003d\u003d SUBMIT_BUTTON_TEXT.OVERWRITE) {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return this.issueService.updateTesterResponse(this.issue, \u003cIssueComment\u003e{"},{"lineNumber":80,"author":{"gitId":"-"},"content":" ...this.issue.issueComment,"},{"lineNumber":81,"author":{"gitId":"-"},"content":" description: this.getTesterResponseFromForm()"},{"lineNumber":82,"author":{"gitId":"-"},"content":" });"},{"lineNumber":83,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.OVERWRITE;"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.viewChanges();"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return throwError(\u0027The content you are editing has changed. Please verify the changes and try again.\u0027);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":89,"author":{"gitId":"-"},"content":" finalize(() \u003d\u003e (this.isFormPending \u003d false))"},{"lineNumber":90,"author":{"gitId":"-"},"content":" )"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":92,"author":{"gitId":"-"},"content":" (updatedIssue: Issue) \u003d\u003e {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(updatedIssue);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.resetToDefault();"},{"lineNumber":95,"author":{"gitId":"-"},"content":" },"},{"lineNumber":96,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":" );"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @return - Determines whether it is safe to submit a tester response."},{"lineNumber":104,"author":{"gitId":"-"},"content":" */"},{"lineNumber":105,"author":{"gitId":"-"},"content":" isSafeToSubmit(): Observable\u003cboolean\u003e {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return this.issueService.getLatestIssue(this.issue.id).pipe("},{"lineNumber":107,"author":{"gitId":"-"},"content":" map((issue: Issue) \u003d\u003e {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!issue.testerResponses) {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return issue.testerResponses.reduce((result, response, index) \u003d\u003e {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return result \u0026\u0026 response.compareTo(this.issue.testerResponses[index]) \u003d\u003d\u003d 0;"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }, true);"},{"lineNumber":114,"author":{"gitId":"-"},"content":" })"},{"lineNumber":115,"author":{"gitId":"-"},"content":" );"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }"},{"lineNumber":117,"author":{"gitId":"-"},"content":""},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Determines whether the user is updating a response that has already been deleted on Github."},{"lineNumber":120,"author":{"gitId":"-"},"content":" */"},{"lineNumber":121,"author":{"gitId":"-"},"content":" isUpdatingDeletedResponse(): boolean {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return this.issue.testerResponses \u0026\u0026 !this.issueService.issues[this.issue.id].testerResponses;"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }"},{"lineNumber":124,"author":{"gitId":"-"},"content":""},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Pops up a dialog that shows the difference between the outdated tester\u0027s response and the updated one."},{"lineNumber":127,"author":{"gitId":"-"},"content":" */"},{"lineNumber":128,"author":{"gitId":"-"},"content":" viewChanges(): void {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" this.dialog.open(ConflictDialogComponent, {"},{"lineNumber":130,"author":{"gitId":"-"},"content":" data: \u003cTesterResponseConflictData\u003e{"},{"lineNumber":131,"author":{"gitId":"-"},"content":" outdatedResponses: this.issue.testerResponses,"},{"lineNumber":132,"author":{"gitId":"-"},"content":" updatedResponses: this.issueService.issues[this.issue.id].testerResponses"},{"lineNumber":133,"author":{"gitId":"-"},"content":" },"},{"lineNumber":134,"author":{"gitId":"-"},"content":" autoFocus: false"},{"lineNumber":135,"author":{"gitId":"-"},"content":" });"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }"},{"lineNumber":137,"author":{"gitId":"-"},"content":""},{"lineNumber":138,"author":{"gitId":"-"},"content":" changeToEditMode() {"},{"lineNumber":139,"author":{"gitId":"-"},"content":" this.updateEditState.emit(true);"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }"},{"lineNumber":141,"author":{"gitId":"-"},"content":""},{"lineNumber":142,"author":{"gitId":"-"},"content":" openCancelDialogIfModified(): void {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" const reasonForDisagreementIsModified \u003d this.issue.testerResponses"},{"lineNumber":144,"author":{"gitId":"-"},"content":" .filter((t: TesterResponse, index: number) \u003d\u003e this.isResponseDisagreed(index))"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .map((t: TesterResponse, index: number) \u003d\u003e {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" const currentValue \u003d this.getTesterResponseText(index);"},{"lineNumber":147,"author":{"gitId":"-"},"content":" const initialValue \u003d t.reasonForDisagreement || \u0027\u0027;"},{"lineNumber":148,"author":{"gitId":"-"},"content":""},{"lineNumber":149,"author":{"gitId":"-"},"content":" return currentValue !\u003d\u003d initialValue;"},{"lineNumber":150,"author":{"gitId":"-"},"content":" })"},{"lineNumber":151,"author":{"gitId":"-"},"content":" .reduce((a, b) \u003d\u003e a || b, false);"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" const disagreementIsModified \u003d this.issue.testerResponses"},{"lineNumber":154,"author":{"gitId":"-"},"content":" .map((t: TesterResponse, index: number) \u003d\u003e {"},{"lineNumber":155,"author":{"gitId":"-"},"content":" const currentValue \u003d this.isResponseDisagreed(index);"},{"lineNumber":156,"author":{"gitId":"-"},"content":" const initialValue \u003d t.isDisagree();"},{"lineNumber":157,"author":{"gitId":"-"},"content":""},{"lineNumber":158,"author":{"gitId":"-"},"content":" return currentValue !\u003d\u003d initialValue;"},{"lineNumber":159,"author":{"gitId":"-"},"content":" })"},{"lineNumber":160,"author":{"gitId":"-"},"content":" .reduce((a, b) \u003d\u003e a || b, false);"},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":" const isModified \u003d reasonForDisagreementIsModified || disagreementIsModified;"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.dialogService.performActionIfModified("},{"lineNumber":165,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" isModified,"},{"lineNumber":166,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" () \u003d\u003e this.openCancelDialog(),"},{"lineNumber":167,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" () \u003d\u003e this.cancelEditMode()"},{"lineNumber":168,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }"},{"lineNumber":170,"author":{"gitId":"-"},"content":""},{"lineNumber":171,"author":{"gitId":"-"},"content":" openCancelDialog(): void {"},{"lineNumber":172,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openUserConfirmationModal("},{"lineNumber":173,"author":{"gitId":"-"},"content":" this.cancelEditModalMessages,"},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.yesButtonModalMessage,"},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.noButtonModalMessage"},{"lineNumber":176,"author":{"gitId":"-"},"content":" );"},{"lineNumber":177,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":178,"author":{"gitId":"-"},"content":" if (res) {"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.cancelEditMode();"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }"},{"lineNumber":181,"author":{"gitId":"-"},"content":" });"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }"},{"lineNumber":183,"author":{"gitId":"-"},"content":""},{"lineNumber":184,"author":{"gitId":"-"},"content":" cancelEditMode() {"},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.issueService.getIssue(this.issue.id).subscribe((issue: Issue) \u003d\u003e {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.issueUpdated.emit(issue);"},{"lineNumber":187,"author":{"gitId":"-"},"content":" this.resetToDefault();"},{"lineNumber":188,"author":{"gitId":"-"},"content":" });"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }"},{"lineNumber":190,"author":{"gitId":"-"},"content":""},{"lineNumber":191,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":192,"author":{"gitId":"-"},"content":" * Resets to default form state."},{"lineNumber":193,"author":{"gitId":"-"},"content":" */"},{"lineNumber":194,"author":{"gitId":"-"},"content":" resetToDefault(): void {"},{"lineNumber":195,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.SAVE;"},{"lineNumber":196,"author":{"gitId":"-"},"content":" this.updateEditState.emit(false);"},{"lineNumber":197,"author":{"gitId":"-"},"content":" this.resetForm();"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }"},{"lineNumber":199,"author":{"gitId":"-"},"content":""},{"lineNumber":200,"author":{"gitId":"-"},"content":" handleChangeOfDisagreeRadioButton(event, index: number) {"},{"lineNumber":201,"author":{"gitId":"-"},"content":" const responseFormControl \u003d this.testerResponseForm.get(this.getTesterResponseFormId(index));"},{"lineNumber":202,"author":{"gitId":"-"},"content":" const isDisagreeChecked \u003d this.isResponseDisagreed(index);"},{"lineNumber":203,"author":{"gitId":"-"},"content":" if (isDisagreeChecked) {"},{"lineNumber":204,"author":{"gitId":"-"},"content":" responseFormControl.enable();"},{"lineNumber":205,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":206,"author":{"gitId":"-"},"content":" responseFormControl.disable();"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }"},{"lineNumber":209,"author":{"gitId":"-"},"content":""},{"lineNumber":210,"author":{"gitId":"-"},"content":" trackDisagreeList(index: number, item: string[]): string {"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return item[index];"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }"},{"lineNumber":213,"author":{"gitId":"-"},"content":""},{"lineNumber":214,"author":{"gitId":"-"},"content":" isNewResponse(): boolean {"},{"lineNumber":215,"author":{"gitId":"-"},"content":" return !this.issue.status \u0026\u0026 this.userService.currentUser.role \u003d\u003d\u003d UserRole.Student;"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }"},{"lineNumber":217,"author":{"gitId":"-"},"content":""},{"lineNumber":218,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":219,"author":{"gitId":"-"},"content":" * Will create a form group with initial values in `this.issue`."},{"lineNumber":220,"author":{"gitId":"-"},"content":" */"},{"lineNumber":221,"author":{"gitId":"-"},"content":" createFormGroup() {"},{"lineNumber":222,"author":{"gitId":"-"},"content":" const group: any \u003d {};"},{"lineNumber":223,"author":{"gitId":"-"},"content":" // initialize fields for tester response and the radio buttons for tester to choose \"Agree\" / \"Disagree\""},{"lineNumber":224,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c this.issue.testerResponses.length; i++) {"},{"lineNumber":225,"author":{"gitId":"-"},"content":" const response \u003d this.issue.testerResponses[i];"},{"lineNumber":226,"author":{"gitId":"-"},"content":" group[this.getTesterResponseFormId(i)] \u003d new FormControl("},{"lineNumber":227,"author":{"gitId":"-"},"content":" {"},{"lineNumber":228,"author":{"gitId":"-"},"content":" value: response.reasonForDisagreement,"},{"lineNumber":229,"author":{"gitId":"-"},"content":" disabled: !response.isDisagree()"},{"lineNumber":230,"author":{"gitId":"-"},"content":" },"},{"lineNumber":231,"author":{"gitId":"-"},"content":" Validators.required"},{"lineNumber":232,"author":{"gitId":"-"},"content":" );"},{"lineNumber":233,"author":{"gitId":"-"},"content":" group[this.getDisagreeRadioFormId(i)] \u003d new FormControl("},{"lineNumber":234,"author":{"gitId":"-"},"content":" {"},{"lineNumber":235,"author":{"gitId":"-"},"content":" value: response.isDisagree(),"},{"lineNumber":236,"author":{"gitId":"-"},"content":" disabled: !this.isEditing"},{"lineNumber":237,"author":{"gitId":"-"},"content":" },"},{"lineNumber":238,"author":{"gitId":"-"},"content":" Validators.required"},{"lineNumber":239,"author":{"gitId":"-"},"content":" );"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }"},{"lineNumber":241,"author":{"gitId":"-"},"content":" return group;"},{"lineNumber":242,"author":{"gitId":"-"},"content":" }"},{"lineNumber":243,"author":{"gitId":"-"},"content":""},{"lineNumber":244,"author":{"gitId":"-"},"content":" resetForm(): void {"},{"lineNumber":245,"author":{"gitId":"-"},"content":" this.testerResponseForm \u003d this.formBuilder.group(this.createFormGroup());"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }"},{"lineNumber":247,"author":{"gitId":"-"},"content":""},{"lineNumber":248,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Based on the updated form and `this.issue` we obtain the updated tester response in Github format."},{"lineNumber":250,"author":{"gitId":"-"},"content":" */"},{"lineNumber":251,"author":{"gitId":"-"},"content":" getTesterResponseFromForm(): string {"},{"lineNumber":252,"author":{"gitId":"-"},"content":" if (!this.issue.testerResponses) {"},{"lineNumber":253,"author":{"gitId":"-"},"content":" return \u0027\u0027;"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }"},{"lineNumber":255,"author":{"gitId":"-"},"content":""},{"lineNumber":256,"author":{"gitId":"-"},"content":" const updatedIssue \u003d this.issue.clone(this.phaseService.currentPhase);"},{"lineNumber":257,"author":{"gitId":"-"},"content":""},{"lineNumber":258,"author":{"gitId":"-"},"content":" updatedIssue.testerResponses.map((response: TesterResponse, index: number) \u003d\u003e {"},{"lineNumber":259,"author":{"gitId":"-"},"content":" // Filter Keys based on Response Index"},{"lineNumber":260,"author":{"gitId":"-"},"content":" const isDisagree \u003d this.isResponseDisagreed(index);"},{"lineNumber":261,"author":{"gitId":"-"},"content":" const reason \u003d isDisagree ? this.getTesterResponseText(index) || response.reasonForDisagreement : response.INITIAL_RESPONSE;"},{"lineNumber":262,"author":{"gitId":"-"},"content":""},{"lineNumber":263,"author":{"gitId":"-"},"content":" response.setDisagree(isDisagree);"},{"lineNumber":264,"author":{"gitId":"-"},"content":" response.setReasonForDisagreement(reason);"},{"lineNumber":265,"author":{"gitId":"-"},"content":" return response;"},{"lineNumber":266,"author":{"gitId":"-"},"content":" });"},{"lineNumber":267,"author":{"gitId":"-"},"content":""},{"lineNumber":268,"author":{"gitId":"-"},"content":" return updatedIssue.createGithubTesterResponse();"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }"},{"lineNumber":270,"author":{"gitId":"-"},"content":""},{"lineNumber":271,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":272,"author":{"gitId":"-"},"content":" * @param index - index of action which the tester disagree."},{"lineNumber":273,"author":{"gitId":"-"},"content":" */"},{"lineNumber":274,"author":{"gitId":"-"},"content":" getTesterResponseFormId(index: number): string {"},{"lineNumber":275,"author":{"gitId":"-"},"content":" return `${this.responseTextIdentifier}-${index}`;"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }"},{"lineNumber":277,"author":{"gitId":"-"},"content":""},{"lineNumber":278,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":279,"author":{"gitId":"-"},"content":" * Gets the Tester\u0027s Response text."},{"lineNumber":280,"author":{"gitId":"-"},"content":" * @param index Tester Response Index."},{"lineNumber":281,"author":{"gitId":"-"},"content":" */"},{"lineNumber":282,"author":{"gitId":"-"},"content":" getTesterResponseText(index: number): string {"},{"lineNumber":283,"author":{"gitId":"-"},"content":" return this.testerResponseForm.get(this.getTesterResponseFormId(index)).value;"},{"lineNumber":284,"author":{"gitId":"-"},"content":" }"},{"lineNumber":285,"author":{"gitId":"-"},"content":""},{"lineNumber":286,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":287,"author":{"gitId":"-"},"content":" * @param index - index of action which the tester disagree."},{"lineNumber":288,"author":{"gitId":"-"},"content":" */"},{"lineNumber":289,"author":{"gitId":"-"},"content":" getDisagreeRadioFormId(index: number): string {"},{"lineNumber":290,"author":{"gitId":"-"},"content":" return `${this.responseRadioIdentifier}-${index}`;"},{"lineNumber":291,"author":{"gitId":"-"},"content":" }"},{"lineNumber":292,"author":{"gitId":"-"},"content":""},{"lineNumber":293,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":294,"author":{"gitId":"-"},"content":" * Checks if Tester Response was agreed to or disagreed with."},{"lineNumber":295,"author":{"gitId":"-"},"content":" * @param index Tester Response Index,"},{"lineNumber":296,"author":{"gitId":"-"},"content":" * @returns true if response was disagreed with, false if response was agreed with."},{"lineNumber":297,"author":{"gitId":"-"},"content":" */"},{"lineNumber":298,"author":{"gitId":"-"},"content":" isResponseDisagreed(index: number): boolean {"},{"lineNumber":299,"author":{"gitId":"-"},"content":" return this.testerResponseForm.get(this.getDisagreeRadioFormId(index)).value;"},{"lineNumber":300,"author":{"gitId":"-"},"content":" }"},{"lineNumber":301,"author":{"gitId":"-"},"content":""},{"lineNumber":302,"author":{"gitId":"-"},"content":" get conflict(): boolean {"},{"lineNumber":303,"author":{"gitId":"-"},"content":" return this.submitButtonText \u003d\u003d\u003d SUBMIT_BUTTON_TEXT.OVERWRITE;"},{"lineNumber":304,"author":{"gitId":"-"},"content":" }"},{"lineNumber":305,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":7,"-":298}},{"path":"src/app/shared/view-issue/view-issue.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv *ngIf\u003d\"isIssueLoading\" class\u003d\"centralize\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cmat-spinner [diameter]\u003d\"47\"\u003e\u003c/mat-spinner\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cdiv *ngIf\u003d\"!isIssueLoading\"\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003capp-issue-title [issue]\u003d\"issue\" (issueUpdated)\u003d\"updateIssue($event)\"\u003e\u003c/app-issue-title\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"column left\"\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003c!-- Tester\u0027s Post --\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003capp-issue-description"},{"lineNumber":14,"author":{"gitId":"-"},"content":" [isEditing]\u003d\"isIssueDescriptionEditing\""},{"lineNumber":15,"author":{"gitId":"-"},"content":" (changeEditState)\u003d\"updateDescriptionEditState($event)\""},{"lineNumber":16,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.TESTER_POST)\""},{"lineNumber":17,"author":{"gitId":"-"},"content":" [issue]\u003d\"issue\""},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" descriptionTitle\u003d\"Description of Issue\""},{"lineNumber":19,"author":{"gitId":"-"},"content":" (issueUpdated)\u003d\"updateIssue($event)\""},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/app-issue-description\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Team\u0027s Response --\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003capp-team-response"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.TEAM_RESPONSE) \u0026\u0026 issue.teamResponse\""},{"lineNumber":26,"author":{"gitId":"-"},"content":" [issue]\u003d\"issue\""},{"lineNumber":27,"author":{"gitId":"-"},"content":" [isEditing]\u003d\"isTeamResponseEditing\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" (updateEditState)\u003d\"updateTeamResponseEditState($event)\""},{"lineNumber":29,"author":{"gitId":"-"},"content":" (issueUpdated)\u003d\"updateIssue($event)\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/app-team-response\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c!-- New Team\u0027s Response --\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003capp-new-team-response *ngIf\u003d\"hasNoTeamResponse()\" [issue]\u003d\"issue\" (issueUpdated)\u003d\"updateIssue($event)\"\u003e \u003c/app-new-team-response\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c!-- Team Response Parsing Error --\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003capp-parse-error *ngIf\u003d\"hasTeamResponseParseError()\" [phase]\u003d\"\u0027Team Response\u0027\"\u003e \u003c/app-parse-error\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c!-- Tester\u0027s Response --\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003capp-tester-response"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.TESTER_RESPONSE) \u0026\u0026 issue.testerResponses \u0026\u0026 issue.testerResponses.length !\u003d\u003d 0\""},{"lineNumber":42,"author":{"gitId":"-"},"content":" [issue]\u003d\"issue\""},{"lineNumber":43,"author":{"gitId":"-"},"content":" [isEditing]\u003d\"isTesterResponseEditing\""},{"lineNumber":44,"author":{"gitId":"-"},"content":" (updateEditState)\u003d\"updateTesterResponseEditState($event)\""},{"lineNumber":45,"author":{"gitId":"-"},"content":" (issueUpdated)\u003d\"updateIssue($event)\""},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/app-tester-response\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c!-- Tester Response Parsing Error --\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003capp-parse-error"},{"lineNumber":51,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.TESTER_RESPONSE) \u0026\u0026 issue.testerResponseError\""},{"lineNumber":52,"author":{"gitId":"-"},"content":" [phase]\u003d\"\u0027Tester Response\u0027\""},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/app-parse-error\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c!-- Team Accepted --\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003capp-team-accepted *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.TESTER_RESPONSE) \u0026\u0026 issue.teamAccepted\"\u003e \u003c/app-team-accepted\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c!-- Issue Disputes For Tutor\u0027s Response --\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003capp-issue-dispute"},{"lineNumber":61,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.ISSUE_DISPUTE)\""},{"lineNumber":62,"author":{"gitId":"-"},"content":" [issue]\u003d\"issue\""},{"lineNumber":63,"author":{"gitId":"-"},"content":" (issueUpdated)\u003d\"updateIssue($event)\""},{"lineNumber":64,"author":{"gitId":"-"},"content":" [isEditing]\u003d\"isTutorResponseEditing\""},{"lineNumber":65,"author":{"gitId":"-"},"content":" (updateEditState)\u003d\"updateTutorResponseEditState($event)\""},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/app-issue-dispute\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"column right\"\u003e"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u003cdiv"},{"lineNumber":72,"author":{"gitId":"-"},"content":" *ngIf\u003d\""},{"lineNumber":73,"author":{"gitId":"-"},"content":" (this.isComponentVisible(issueComponentsEnum.NEW_TEAM_RESPONSE) \u0026\u0026 issue.teamResponse) ||"},{"lineNumber":74,"author":{"gitId":"-"},"content":" (this.isComponentVisible(issueComponentsEnum.TESTER_RESPONSE) \u0026\u0026 this.userService.currentUser.role \u003d\u003d\u003d userRole.Student) ||"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.isComponentVisible(issueComponentsEnum.ISSUE_DISPUTE) ||"},{"lineNumber":76,"author":{"gitId":"-"},"content":" !this.isComponentVisible(issueComponentsEnum.TEAM_RESPONSE)"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \""},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":79,"author":{"gitId":"-"},"content":" \u003c!-- Severity Label --\u003e"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003capp-issue-label"},{"lineNumber":81,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.SEVERITY_LABEL)\""},{"lineNumber":82,"author":{"gitId":"-"},"content":" [issue]\u003d\"issue\""},{"lineNumber":83,"author":{"gitId":"-"},"content":" attributeName\u003d\"severity\""},{"lineNumber":84,"author":{"gitId":"-"},"content":" (issueUpdated)\u003d\"updateIssue($event)\""},{"lineNumber":85,"author":{"gitId":"-"},"content":" \u003e\u003c/app-issue-label\u003e"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003c!-- Bug Type Label --\u003e"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.TYPE_LABEL)\"\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003capp-issue-label [issue]\u003d\"issue\" attributeName\u003d\"type\" (issueUpdated)\u003d\"updateIssue($event)\"\u003e\u003c/app-issue-label\u003e"},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c!-- Response Label --\u003e"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.RESPONSE_LABEL)\"\u003e"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":96,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003capp-issue-label [issue]\u003d\"issue\" attributeName\u003d\"response\" (issueUpdated)\u003d\"updateIssue($event)\"\u003e\u003c/app-issue-label\u003e"},{"lineNumber":97,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u003c!-- Assignee to this Issue --\u003e"},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.ASSIGNEE)\"\u003e"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u003capp-assignee-component [issue]\u003d\"issue\" [team]\u003d\"issue.teamAssigned\" (issueUpdated)\u003d\"updateIssue($event)\"\u003e\u003c/app-assignee-component\u003e"},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u003c!-- Duplicate information --\u003e"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003cdiv"},{"lineNumber":107,"author":{"gitId":"-"},"content":" *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.DUPLICATE) \u0026\u0026 (issueService.getDuplicateIssuesFor(issue) | async).length !\u003d\u003d 0\""},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u003capp-duplicated-issues-component [issue]\u003d\"issue\"\u003e\u003c/app-duplicated-issues-component\u003e"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u003cbr /\u003e"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u003cdiv"},{"lineNumber":114,"author":{"gitId":"-"},"content":" *ngIf\u003d\""},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.isComponentVisible(issueComponentsEnum.DUPLICATE) \u0026\u0026"},{"lineNumber":116,"author":{"gitId":"-"},"content":" (issue.duplicateOf || (issueService.getDuplicateIssuesFor(issue) | async).length \u003d\u003d\u003d 0)"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \""},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":119,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u003capp-duplicate-of-component [issue]\u003d\"issue\" (issueUpdated)\u003d\"updateIssue($event)\"\u003e\u003c/app-duplicate-of-component\u003e"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":122,"author":{"gitId":"-"},"content":""},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u003c!-- Faulty issue warning --\u003e"},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003cdiv"},{"lineNumber":125,"author":{"gitId":"-"},"content":" style\u003d\"margin-top: 15px; color: red\""},{"lineNumber":126,"author":{"gitId":"-"},"content":" *ngIf\u003d\""},{"lineNumber":127,"author":{"gitId":"-"},"content":" this.isComponentVisible(issueComponentsEnum.DUPLICATE) \u0026\u0026"},{"lineNumber":128,"author":{"gitId":"-"},"content":" (issueService.getDuplicateIssuesFor(issue) | async).length !\u003d\u003d 0 \u0026\u0026"},{"lineNumber":129,"author":{"gitId":"-"},"content":" (issue.duplicateOf || (issueService.getDuplicateIssuesFor(issue) | async).length \u003d\u003d\u003d 0)"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \""},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Need your resolution. An issue cannot have both duplicated issues and duplicated status."},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":134,"author":{"gitId":"-"},"content":""},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u003c!-- Unsure checkbox --\u003e"},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"this.isComponentVisible(issueComponentsEnum.UNSURE_CHECKBOX)\"\u003e"},{"lineNumber":137,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u003capp-unsure-checkbox [issue]\u003d\"issue\" (issueUpdated)\u003d\"updateIssue($event)\"\u003e\u003c/app-unsure-checkbox\u003e"},{"lineNumber":139,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":142,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":143,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"Eclipse-Dominator":1,"vigneshsankariyer1234567890":1,"-":141}},{"path":"src/assets/fontawesome/css/fontawesome.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"/*!"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" * Font Awesome Free 6.3.0 by @fontawesome - https://fontawesome.com"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" * Copyright 2023 Fonticons, Inc."},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":".fa {"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" font-family: var(--fa-style-family, \u0027Font Awesome 6 Free\u0027);"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" font-weight: var(--fa-style, 900);"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":".fa,"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-brands,"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-classic,"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-regular,"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sharp,"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-solid,"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":".fab,"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":".far,"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":".fas {"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" -moz-osx-font-smoothing: grayscale;"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-font-smoothing: antialiased;"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":" display: var(--fa-display, inline-block);"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" font-style: normal;"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" font-variant: normal;"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: 1;"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" text-rendering: auto;"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-classic,"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-regular,"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-solid,"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":".far,"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":".fas {"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" font-family: \u0027Font Awesome 6 Free\u0027;"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-brands,"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":".fab {"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" font-family: \u0027Font Awesome 6 Brands\u0027;"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-1x {"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 1em;"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-2x {"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 2em;"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-3x {"},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 3em;"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-4x {"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 4em;"},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-5x {"},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 5em;"},{"lineNumber":52,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-6x {"},{"lineNumber":54,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 6em;"},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":56,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-7x {"},{"lineNumber":57,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 7em;"},{"lineNumber":58,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":59,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-8x {"},{"lineNumber":60,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 8em;"},{"lineNumber":61,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-9x {"},{"lineNumber":63,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 9em;"},{"lineNumber":64,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":65,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-10x {"},{"lineNumber":66,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 10em;"},{"lineNumber":67,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":68,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-2xs {"},{"lineNumber":69,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 0.625em;"},{"lineNumber":70,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: 0.1em;"},{"lineNumber":71,"author":{"gitId":"Eclipse-Dominator"},"content":" vertical-align: 0.225em;"},{"lineNumber":72,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":73,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-xs {"},{"lineNumber":74,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 0.75em;"},{"lineNumber":75,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: 0.08333em;"},{"lineNumber":76,"author":{"gitId":"Eclipse-Dominator"},"content":" vertical-align: 0.125em;"},{"lineNumber":77,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":78,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sm {"},{"lineNumber":79,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 0.875em;"},{"lineNumber":80,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: 0.07143em;"},{"lineNumber":81,"author":{"gitId":"Eclipse-Dominator"},"content":" vertical-align: 0.05357em;"},{"lineNumber":82,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":83,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lg {"},{"lineNumber":84,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 1.25em;"},{"lineNumber":85,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: 0.05em;"},{"lineNumber":86,"author":{"gitId":"Eclipse-Dominator"},"content":" vertical-align: -0.075em;"},{"lineNumber":87,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":88,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-xl {"},{"lineNumber":89,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 1.5em;"},{"lineNumber":90,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: 0.04167em;"},{"lineNumber":91,"author":{"gitId":"Eclipse-Dominator"},"content":" vertical-align: -0.125em;"},{"lineNumber":92,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":93,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-2xl {"},{"lineNumber":94,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 2em;"},{"lineNumber":95,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: 0.03125em;"},{"lineNumber":96,"author":{"gitId":"Eclipse-Dominator"},"content":" vertical-align: -0.1875em;"},{"lineNumber":97,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":98,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fw {"},{"lineNumber":99,"author":{"gitId":"Eclipse-Dominator"},"content":" text-align: center;"},{"lineNumber":100,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 1.25em;"},{"lineNumber":101,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":102,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ul {"},{"lineNumber":103,"author":{"gitId":"Eclipse-Dominator"},"content":" list-style-type: none;"},{"lineNumber":104,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-left: var(--fa-li-margin, 2.5em);"},{"lineNumber":105,"author":{"gitId":"Eclipse-Dominator"},"content":" padding-left: 0;"},{"lineNumber":106,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":107,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ul \u003e li {"},{"lineNumber":108,"author":{"gitId":"Eclipse-Dominator"},"content":" position: relative;"},{"lineNumber":109,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":110,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-li {"},{"lineNumber":111,"author":{"gitId":"Eclipse-Dominator"},"content":" left: calc(var(--fa-li-width, 2em) * -1);"},{"lineNumber":112,"author":{"gitId":"Eclipse-Dominator"},"content":" position: absolute;"},{"lineNumber":113,"author":{"gitId":"Eclipse-Dominator"},"content":" text-align: center;"},{"lineNumber":114,"author":{"gitId":"Eclipse-Dominator"},"content":" width: var(--fa-li-width, 2em);"},{"lineNumber":115,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: inherit;"},{"lineNumber":116,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":117,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-border {"},{"lineNumber":118,"author":{"gitId":"Eclipse-Dominator"},"content":" border-radius: var(--fa-border-radius, 0.1em);"},{"lineNumber":119,"author":{"gitId":"Eclipse-Dominator"},"content":" border: var(--fa-border-width, 0.08em) var(--fa-border-style, solid) var(--fa-border-color, #eee);"},{"lineNumber":120,"author":{"gitId":"Eclipse-Dominator"},"content":" padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);"},{"lineNumber":121,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":122,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pull-left {"},{"lineNumber":123,"author":{"gitId":"Eclipse-Dominator"},"content":" float: left;"},{"lineNumber":124,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-right: var(--fa-pull-margin, 0.3em);"},{"lineNumber":125,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":126,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pull-right {"},{"lineNumber":127,"author":{"gitId":"Eclipse-Dominator"},"content":" float: right;"},{"lineNumber":128,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-left: var(--fa-pull-margin, 0.3em);"},{"lineNumber":129,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":130,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-beat {"},{"lineNumber":131,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-name: fa-beat;"},{"lineNumber":132,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-name: fa-beat;"},{"lineNumber":133,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":134,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":135,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":136,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":137,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":138,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":139,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":140,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":141,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);"},{"lineNumber":142,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-timing-function: var(--fa-animation-timing, ease-in-out);"},{"lineNumber":143,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":144,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bounce {"},{"lineNumber":145,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-name: fa-bounce;"},{"lineNumber":146,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-name: fa-bounce;"},{"lineNumber":147,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":148,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":149,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":150,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":151,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":152,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":153,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":154,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":155,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));"},{"lineNumber":156,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));"},{"lineNumber":157,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":158,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fade {"},{"lineNumber":159,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-name: fa-fade;"},{"lineNumber":160,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-name: fa-fade;"},{"lineNumber":161,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":162,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":163,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));"},{"lineNumber":164,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));"},{"lineNumber":165,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":166,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-beat-fade,"},{"lineNumber":167,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fade {"},{"lineNumber":168,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":169,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":170,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":171,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":172,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":173,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":174,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":175,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-beat-fade {"},{"lineNumber":176,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-name: fa-beat-fade;"},{"lineNumber":177,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-name: fa-beat-fade;"},{"lineNumber":178,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":179,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":180,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));"},{"lineNumber":181,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));"},{"lineNumber":182,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":183,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flip {"},{"lineNumber":184,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-name: fa-flip;"},{"lineNumber":185,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-name: fa-flip;"},{"lineNumber":186,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":187,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":188,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":189,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":190,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":191,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":192,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":193,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":194,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);"},{"lineNumber":195,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-timing-function: var(--fa-animation-timing, ease-in-out);"},{"lineNumber":196,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":197,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shake {"},{"lineNumber":198,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-name: fa-shake;"},{"lineNumber":199,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-name: fa-shake;"},{"lineNumber":200,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":201,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":202,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":203,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":204,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-timing-function: var(--fa-animation-timing, linear);"},{"lineNumber":205,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-timing-function: var(--fa-animation-timing, linear);"},{"lineNumber":206,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":207,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shake,"},{"lineNumber":208,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spin {"},{"lineNumber":209,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":210,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-delay: var(--fa-animation-delay, 0s);"},{"lineNumber":211,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":212,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":213,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":214,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spin {"},{"lineNumber":215,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-name: fa-spin;"},{"lineNumber":216,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-name: fa-spin;"},{"lineNumber":217,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-duration: var(--fa-animation-duration, 2s);"},{"lineNumber":218,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-duration: var(--fa-animation-duration, 2s);"},{"lineNumber":219,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":220,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":221,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-timing-function: var(--fa-animation-timing, linear);"},{"lineNumber":222,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-timing-function: var(--fa-animation-timing, linear);"},{"lineNumber":223,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":224,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spin-reverse {"},{"lineNumber":225,"author":{"gitId":"Eclipse-Dominator"},"content":" --fa-animation-direction: reverse;"},{"lineNumber":226,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":227,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pulse,"},{"lineNumber":228,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spin-pulse {"},{"lineNumber":229,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-name: fa-spin;"},{"lineNumber":230,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-name: fa-spin;"},{"lineNumber":231,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":232,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-direction: var(--fa-animation-direction, normal);"},{"lineNumber":233,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":234,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-duration: var(--fa-animation-duration, 1s);"},{"lineNumber":235,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":236,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: var(--fa-animation-iteration-count, infinite);"},{"lineNumber":237,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));"},{"lineNumber":238,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-timing-function: var(--fa-animation-timing, steps(8));"},{"lineNumber":239,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":240,"author":{"gitId":"Eclipse-Dominator"},"content":"@media (prefers-reduced-motion: reduce) {"},{"lineNumber":241,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-beat,"},{"lineNumber":242,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-beat-fade,"},{"lineNumber":243,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-bounce,"},{"lineNumber":244,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-fade,"},{"lineNumber":245,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-flip,"},{"lineNumber":246,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-pulse,"},{"lineNumber":247,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-shake,"},{"lineNumber":248,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-spin,"},{"lineNumber":249,"author":{"gitId":"Eclipse-Dominator"},"content":" .fa-spin-pulse {"},{"lineNumber":250,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-delay: -1ms;"},{"lineNumber":251,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-delay: -1ms;"},{"lineNumber":252,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-duration: 1ms;"},{"lineNumber":253,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-duration: 1ms;"},{"lineNumber":254,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-animation-iteration-count: 1;"},{"lineNumber":255,"author":{"gitId":"Eclipse-Dominator"},"content":" animation-iteration-count: 1;"},{"lineNumber":256,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transition-delay: 0s;"},{"lineNumber":257,"author":{"gitId":"Eclipse-Dominator"},"content":" transition-delay: 0s;"},{"lineNumber":258,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transition-duration: 0s;"},{"lineNumber":259,"author":{"gitId":"Eclipse-Dominator"},"content":" transition-duration: 0s;"},{"lineNumber":260,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":261,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":262,"author":{"gitId":"Eclipse-Dominator"},"content":"@-webkit-keyframes fa-beat {"},{"lineNumber":263,"author":{"gitId":"Eclipse-Dominator"},"content":" 0%,"},{"lineNumber":264,"author":{"gitId":"Eclipse-Dominator"},"content":" 90% {"},{"lineNumber":265,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1);"},{"lineNumber":266,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1);"},{"lineNumber":267,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":268,"author":{"gitId":"Eclipse-Dominator"},"content":" 45% {"},{"lineNumber":269,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-beat-scale, 1.25));"},{"lineNumber":270,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-beat-scale, 1.25));"},{"lineNumber":271,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":272,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":273,"author":{"gitId":"Eclipse-Dominator"},"content":"@keyframes fa-beat {"},{"lineNumber":274,"author":{"gitId":"Eclipse-Dominator"},"content":" 0%,"},{"lineNumber":275,"author":{"gitId":"Eclipse-Dominator"},"content":" 90% {"},{"lineNumber":276,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1);"},{"lineNumber":277,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1);"},{"lineNumber":278,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":279,"author":{"gitId":"Eclipse-Dominator"},"content":" 45% {"},{"lineNumber":280,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-beat-scale, 1.25));"},{"lineNumber":281,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-beat-scale, 1.25));"},{"lineNumber":282,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":283,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":284,"author":{"gitId":"Eclipse-Dominator"},"content":"@-webkit-keyframes fa-bounce {"},{"lineNumber":285,"author":{"gitId":"Eclipse-Dominator"},"content":" 0% {"},{"lineNumber":286,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1) translateY(0);"},{"lineNumber":287,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1) translateY(0);"},{"lineNumber":288,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":289,"author":{"gitId":"Eclipse-Dominator"},"content":" 10% {"},{"lineNumber":290,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);"},{"lineNumber":291,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);"},{"lineNumber":292,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":293,"author":{"gitId":"Eclipse-Dominator"},"content":" 30% {"},{"lineNumber":294,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1))"},{"lineNumber":295,"author":{"gitId":"Eclipse-Dominator"},"content":" translateY(var(--fa-bounce-height, -0.5em));"},{"lineNumber":296,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));"},{"lineNumber":297,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":298,"author":{"gitId":"Eclipse-Dominator"},"content":" 50% {"},{"lineNumber":299,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);"},{"lineNumber":300,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);"},{"lineNumber":301,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":302,"author":{"gitId":"Eclipse-Dominator"},"content":" 57% {"},{"lineNumber":303,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1) translateY(var(--fa-bounce-rebound, -0.125em));"},{"lineNumber":304,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1) translateY(var(--fa-bounce-rebound, -0.125em));"},{"lineNumber":305,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":306,"author":{"gitId":"Eclipse-Dominator"},"content":" 64% {"},{"lineNumber":307,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1) translateY(0);"},{"lineNumber":308,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1) translateY(0);"},{"lineNumber":309,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":310,"author":{"gitId":"Eclipse-Dominator"},"content":" to {"},{"lineNumber":311,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1) translateY(0);"},{"lineNumber":312,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1) translateY(0);"},{"lineNumber":313,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":314,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":315,"author":{"gitId":"Eclipse-Dominator"},"content":"@keyframes fa-bounce {"},{"lineNumber":316,"author":{"gitId":"Eclipse-Dominator"},"content":" 0% {"},{"lineNumber":317,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1) translateY(0);"},{"lineNumber":318,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1) translateY(0);"},{"lineNumber":319,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":320,"author":{"gitId":"Eclipse-Dominator"},"content":" 10% {"},{"lineNumber":321,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);"},{"lineNumber":322,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);"},{"lineNumber":323,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":324,"author":{"gitId":"Eclipse-Dominator"},"content":" 30% {"},{"lineNumber":325,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1))"},{"lineNumber":326,"author":{"gitId":"Eclipse-Dominator"},"content":" translateY(var(--fa-bounce-height, -0.5em));"},{"lineNumber":327,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));"},{"lineNumber":328,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":329,"author":{"gitId":"Eclipse-Dominator"},"content":" 50% {"},{"lineNumber":330,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);"},{"lineNumber":331,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);"},{"lineNumber":332,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":333,"author":{"gitId":"Eclipse-Dominator"},"content":" 57% {"},{"lineNumber":334,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1) translateY(var(--fa-bounce-rebound, -0.125em));"},{"lineNumber":335,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1) translateY(var(--fa-bounce-rebound, -0.125em));"},{"lineNumber":336,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":337,"author":{"gitId":"Eclipse-Dominator"},"content":" 64% {"},{"lineNumber":338,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1) translateY(0);"},{"lineNumber":339,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1) translateY(0);"},{"lineNumber":340,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":341,"author":{"gitId":"Eclipse-Dominator"},"content":" to {"},{"lineNumber":342,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1) translateY(0);"},{"lineNumber":343,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1) translateY(0);"},{"lineNumber":344,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":345,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":346,"author":{"gitId":"Eclipse-Dominator"},"content":"@-webkit-keyframes fa-fade {"},{"lineNumber":347,"author":{"gitId":"Eclipse-Dominator"},"content":" 50% {"},{"lineNumber":348,"author":{"gitId":"Eclipse-Dominator"},"content":" opacity: var(--fa-fade-opacity, 0.4);"},{"lineNumber":349,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":350,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":351,"author":{"gitId":"Eclipse-Dominator"},"content":"@keyframes fa-fade {"},{"lineNumber":352,"author":{"gitId":"Eclipse-Dominator"},"content":" 50% {"},{"lineNumber":353,"author":{"gitId":"Eclipse-Dominator"},"content":" opacity: var(--fa-fade-opacity, 0.4);"},{"lineNumber":354,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":355,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":356,"author":{"gitId":"Eclipse-Dominator"},"content":"@-webkit-keyframes fa-beat-fade {"},{"lineNumber":357,"author":{"gitId":"Eclipse-Dominator"},"content":" 0%,"},{"lineNumber":358,"author":{"gitId":"Eclipse-Dominator"},"content":" to {"},{"lineNumber":359,"author":{"gitId":"Eclipse-Dominator"},"content":" opacity: var(--fa-beat-fade-opacity, 0.4);"},{"lineNumber":360,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1);"},{"lineNumber":361,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1);"},{"lineNumber":362,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":363,"author":{"gitId":"Eclipse-Dominator"},"content":" 50% {"},{"lineNumber":364,"author":{"gitId":"Eclipse-Dominator"},"content":" opacity: 1;"},{"lineNumber":365,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));"},{"lineNumber":366,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-beat-fade-scale, 1.125));"},{"lineNumber":367,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":368,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":369,"author":{"gitId":"Eclipse-Dominator"},"content":"@keyframes fa-beat-fade {"},{"lineNumber":370,"author":{"gitId":"Eclipse-Dominator"},"content":" 0%,"},{"lineNumber":371,"author":{"gitId":"Eclipse-Dominator"},"content":" to {"},{"lineNumber":372,"author":{"gitId":"Eclipse-Dominator"},"content":" opacity: var(--fa-beat-fade-opacity, 0.4);"},{"lineNumber":373,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(1);"},{"lineNumber":374,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(1);"},{"lineNumber":375,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":376,"author":{"gitId":"Eclipse-Dominator"},"content":" 50% {"},{"lineNumber":377,"author":{"gitId":"Eclipse-Dominator"},"content":" opacity: 1;"},{"lineNumber":378,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));"},{"lineNumber":379,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(var(--fa-beat-fade-scale, 1.125));"},{"lineNumber":380,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":381,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":382,"author":{"gitId":"Eclipse-Dominator"},"content":"@-webkit-keyframes fa-flip {"},{"lineNumber":383,"author":{"gitId":"Eclipse-Dominator"},"content":" 50% {"},{"lineNumber":384,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));"},{"lineNumber":385,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));"},{"lineNumber":386,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":387,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":388,"author":{"gitId":"Eclipse-Dominator"},"content":"@keyframes fa-flip {"},{"lineNumber":389,"author":{"gitId":"Eclipse-Dominator"},"content":" 50% {"},{"lineNumber":390,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));"},{"lineNumber":391,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));"},{"lineNumber":392,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":393,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":394,"author":{"gitId":"Eclipse-Dominator"},"content":"@-webkit-keyframes fa-shake {"},{"lineNumber":395,"author":{"gitId":"Eclipse-Dominator"},"content":" 0% {"},{"lineNumber":396,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(-15deg);"},{"lineNumber":397,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(-15deg);"},{"lineNumber":398,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":399,"author":{"gitId":"Eclipse-Dominator"},"content":" 4% {"},{"lineNumber":400,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(15deg);"},{"lineNumber":401,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(15deg);"},{"lineNumber":402,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":403,"author":{"gitId":"Eclipse-Dominator"},"content":" 8%,"},{"lineNumber":404,"author":{"gitId":"Eclipse-Dominator"},"content":" 24% {"},{"lineNumber":405,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(-18deg);"},{"lineNumber":406,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(-18deg);"},{"lineNumber":407,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":408,"author":{"gitId":"Eclipse-Dominator"},"content":" 12%,"},{"lineNumber":409,"author":{"gitId":"Eclipse-Dominator"},"content":" 28% {"},{"lineNumber":410,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(18deg);"},{"lineNumber":411,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(18deg);"},{"lineNumber":412,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":413,"author":{"gitId":"Eclipse-Dominator"},"content":" 16% {"},{"lineNumber":414,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(-22deg);"},{"lineNumber":415,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(-22deg);"},{"lineNumber":416,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":417,"author":{"gitId":"Eclipse-Dominator"},"content":" 20% {"},{"lineNumber":418,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(22deg);"},{"lineNumber":419,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(22deg);"},{"lineNumber":420,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":421,"author":{"gitId":"Eclipse-Dominator"},"content":" 32% {"},{"lineNumber":422,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(-12deg);"},{"lineNumber":423,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(-12deg);"},{"lineNumber":424,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":425,"author":{"gitId":"Eclipse-Dominator"},"content":" 36% {"},{"lineNumber":426,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(12deg);"},{"lineNumber":427,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(12deg);"},{"lineNumber":428,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":429,"author":{"gitId":"Eclipse-Dominator"},"content":" 40%,"},{"lineNumber":430,"author":{"gitId":"Eclipse-Dominator"},"content":" to {"},{"lineNumber":431,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(0deg);"},{"lineNumber":432,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(0deg);"},{"lineNumber":433,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":434,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":435,"author":{"gitId":"Eclipse-Dominator"},"content":"@keyframes fa-shake {"},{"lineNumber":436,"author":{"gitId":"Eclipse-Dominator"},"content":" 0% {"},{"lineNumber":437,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(-15deg);"},{"lineNumber":438,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(-15deg);"},{"lineNumber":439,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":440,"author":{"gitId":"Eclipse-Dominator"},"content":" 4% {"},{"lineNumber":441,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(15deg);"},{"lineNumber":442,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(15deg);"},{"lineNumber":443,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":444,"author":{"gitId":"Eclipse-Dominator"},"content":" 8%,"},{"lineNumber":445,"author":{"gitId":"Eclipse-Dominator"},"content":" 24% {"},{"lineNumber":446,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(-18deg);"},{"lineNumber":447,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(-18deg);"},{"lineNumber":448,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":449,"author":{"gitId":"Eclipse-Dominator"},"content":" 12%,"},{"lineNumber":450,"author":{"gitId":"Eclipse-Dominator"},"content":" 28% {"},{"lineNumber":451,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(18deg);"},{"lineNumber":452,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(18deg);"},{"lineNumber":453,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":454,"author":{"gitId":"Eclipse-Dominator"},"content":" 16% {"},{"lineNumber":455,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(-22deg);"},{"lineNumber":456,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(-22deg);"},{"lineNumber":457,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":458,"author":{"gitId":"Eclipse-Dominator"},"content":" 20% {"},{"lineNumber":459,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(22deg);"},{"lineNumber":460,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(22deg);"},{"lineNumber":461,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":462,"author":{"gitId":"Eclipse-Dominator"},"content":" 32% {"},{"lineNumber":463,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(-12deg);"},{"lineNumber":464,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(-12deg);"},{"lineNumber":465,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":466,"author":{"gitId":"Eclipse-Dominator"},"content":" 36% {"},{"lineNumber":467,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(12deg);"},{"lineNumber":468,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(12deg);"},{"lineNumber":469,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":470,"author":{"gitId":"Eclipse-Dominator"},"content":" 40%,"},{"lineNumber":471,"author":{"gitId":"Eclipse-Dominator"},"content":" to {"},{"lineNumber":472,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(0deg);"},{"lineNumber":473,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(0deg);"},{"lineNumber":474,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":475,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":476,"author":{"gitId":"Eclipse-Dominator"},"content":"@-webkit-keyframes fa-spin {"},{"lineNumber":477,"author":{"gitId":"Eclipse-Dominator"},"content":" 0% {"},{"lineNumber":478,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(0deg);"},{"lineNumber":479,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(0deg);"},{"lineNumber":480,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":481,"author":{"gitId":"Eclipse-Dominator"},"content":" to {"},{"lineNumber":482,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(1turn);"},{"lineNumber":483,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(1turn);"},{"lineNumber":484,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":485,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":486,"author":{"gitId":"Eclipse-Dominator"},"content":"@keyframes fa-spin {"},{"lineNumber":487,"author":{"gitId":"Eclipse-Dominator"},"content":" 0% {"},{"lineNumber":488,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(0deg);"},{"lineNumber":489,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(0deg);"},{"lineNumber":490,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":491,"author":{"gitId":"Eclipse-Dominator"},"content":" to {"},{"lineNumber":492,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(1turn);"},{"lineNumber":493,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(1turn);"},{"lineNumber":494,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":495,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":496,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-90 {"},{"lineNumber":497,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(90deg);"},{"lineNumber":498,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(90deg);"},{"lineNumber":499,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":500,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-180 {"},{"lineNumber":501,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(180deg);"},{"lineNumber":502,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(180deg);"},{"lineNumber":503,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":504,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-270 {"},{"lineNumber":505,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(270deg);"},{"lineNumber":506,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(270deg);"},{"lineNumber":507,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":508,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flip-horizontal {"},{"lineNumber":509,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scaleX(-1);"},{"lineNumber":510,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scaleX(-1);"},{"lineNumber":511,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":512,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flip-vertical {"},{"lineNumber":513,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scaleY(-1);"},{"lineNumber":514,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scaleY(-1);"},{"lineNumber":515,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":516,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flip-both,"},{"lineNumber":517,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flip-horizontal.fa-flip-vertical {"},{"lineNumber":518,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: scale(-1);"},{"lineNumber":519,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: scale(-1);"},{"lineNumber":520,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":521,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-by {"},{"lineNumber":522,"author":{"gitId":"Eclipse-Dominator"},"content":" -webkit-transform: rotate(var(--fa-rotate-angle, none));"},{"lineNumber":523,"author":{"gitId":"Eclipse-Dominator"},"content":" transform: rotate(var(--fa-rotate-angle, none));"},{"lineNumber":524,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":525,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stack {"},{"lineNumber":526,"author":{"gitId":"Eclipse-Dominator"},"content":" display: inline-block;"},{"lineNumber":527,"author":{"gitId":"Eclipse-Dominator"},"content":" height: 2em;"},{"lineNumber":528,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: 2em;"},{"lineNumber":529,"author":{"gitId":"Eclipse-Dominator"},"content":" position: relative;"},{"lineNumber":530,"author":{"gitId":"Eclipse-Dominator"},"content":" vertical-align: middle;"},{"lineNumber":531,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 2.5em;"},{"lineNumber":532,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":533,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stack-1x,"},{"lineNumber":534,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stack-2x {"},{"lineNumber":535,"author":{"gitId":"Eclipse-Dominator"},"content":" left: 0;"},{"lineNumber":536,"author":{"gitId":"Eclipse-Dominator"},"content":" position: absolute;"},{"lineNumber":537,"author":{"gitId":"Eclipse-Dominator"},"content":" text-align: center;"},{"lineNumber":538,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 100%;"},{"lineNumber":539,"author":{"gitId":"Eclipse-Dominator"},"content":" z-index: var(--fa-stack-z-index, auto);"},{"lineNumber":540,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":541,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stack-1x {"},{"lineNumber":542,"author":{"gitId":"Eclipse-Dominator"},"content":" line-height: inherit;"},{"lineNumber":543,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":544,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stack-2x {"},{"lineNumber":545,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 2em;"},{"lineNumber":546,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":547,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-inverse {"},{"lineNumber":548,"author":{"gitId":"Eclipse-Dominator"},"content":" color: var(--fa-inverse, #fff);"},{"lineNumber":549,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":550,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":551,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-0:before {"},{"lineNumber":552,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\30\u0027;"},{"lineNumber":553,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":554,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-1:before {"},{"lineNumber":555,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\31\u0027;"},{"lineNumber":556,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":557,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-2:before {"},{"lineNumber":558,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\32\u0027;"},{"lineNumber":559,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":560,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-3:before {"},{"lineNumber":561,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\33\u0027;"},{"lineNumber":562,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":563,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-4:before {"},{"lineNumber":564,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\34\u0027;"},{"lineNumber":565,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":566,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-5:before {"},{"lineNumber":567,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\35\u0027;"},{"lineNumber":568,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":569,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-6:before {"},{"lineNumber":570,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\36\u0027;"},{"lineNumber":571,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":572,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-7:before {"},{"lineNumber":573,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\37\u0027;"},{"lineNumber":574,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":575,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-8:before {"},{"lineNumber":576,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\38\u0027;"},{"lineNumber":577,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":578,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-9:before {"},{"lineNumber":579,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\39\u0027;"},{"lineNumber":580,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":581,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fill-drip:before {"},{"lineNumber":582,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f576\u0027;"},{"lineNumber":583,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":584,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-to-circle:before {"},{"lineNumber":585,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4bd\u0027;"},{"lineNumber":586,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":587,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chevron-circle-right:before,"},{"lineNumber":588,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-chevron-right:before {"},{"lineNumber":589,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f138\u0027;"},{"lineNumber":590,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":591,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-at:before {"},{"lineNumber":592,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\40\u0027;"},{"lineNumber":593,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":594,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trash-alt:before,"},{"lineNumber":595,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trash-can:before {"},{"lineNumber":596,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2ed\u0027;"},{"lineNumber":597,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":598,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-text-height:before {"},{"lineNumber":599,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f034\u0027;"},{"lineNumber":600,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":601,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-times:before,"},{"lineNumber":602,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-xmark:before {"},{"lineNumber":603,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f235\u0027;"},{"lineNumber":604,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":605,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stethoscope:before {"},{"lineNumber":606,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0f1\u0027;"},{"lineNumber":607,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":608,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comment-alt:before,"},{"lineNumber":609,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-message:before {"},{"lineNumber":610,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f27a\u0027;"},{"lineNumber":611,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":612,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-info:before {"},{"lineNumber":613,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f129\u0027;"},{"lineNumber":614,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":615,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-compress-alt:before,"},{"lineNumber":616,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-down-left-and-up-right-to-center:before {"},{"lineNumber":617,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f422\u0027;"},{"lineNumber":618,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":619,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-explosion:before {"},{"lineNumber":620,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e9\u0027;"},{"lineNumber":621,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":622,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-alt:before,"},{"lineNumber":623,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-lines:before,"},{"lineNumber":624,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-text:before {"},{"lineNumber":625,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f15c\u0027;"},{"lineNumber":626,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":627,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wave-square:before {"},{"lineNumber":628,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f83e\u0027;"},{"lineNumber":629,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":630,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ring:before {"},{"lineNumber":631,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f70b\u0027;"},{"lineNumber":632,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":633,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-un:before {"},{"lineNumber":634,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d9\u0027;"},{"lineNumber":635,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":636,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice-three:before {"},{"lineNumber":637,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f527\u0027;"},{"lineNumber":638,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":639,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-alt:before,"},{"lineNumber":640,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-days:before {"},{"lineNumber":641,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f073\u0027;"},{"lineNumber":642,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":643,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-anchor-circle-check:before {"},{"lineNumber":644,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4aa\u0027;"},{"lineNumber":645,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":646,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-circle-arrow-right:before {"},{"lineNumber":647,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d1\u0027;"},{"lineNumber":648,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":649,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volleyball-ball:before,"},{"lineNumber":650,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volleyball:before {"},{"lineNumber":651,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f45f\u0027;"},{"lineNumber":652,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":653,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-up-to-line:before {"},{"lineNumber":654,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c2\u0027;"},{"lineNumber":655,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":656,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-desc:before,"},{"lineNumber":657,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-down:before {"},{"lineNumber":658,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0dd\u0027;"},{"lineNumber":659,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":660,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-minus:before,"},{"lineNumber":661,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-minus-circle:before {"},{"lineNumber":662,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f056\u0027;"},{"lineNumber":663,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":664,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-door-open:before {"},{"lineNumber":665,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f52b\u0027;"},{"lineNumber":666,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":667,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-right-from-bracket:before,"},{"lineNumber":668,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sign-out-alt:before {"},{"lineNumber":669,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2f5\u0027;"},{"lineNumber":670,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":671,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-atom:before {"},{"lineNumber":672,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5d2\u0027;"},{"lineNumber":673,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":674,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-soap:before {"},{"lineNumber":675,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e06e\u0027;"},{"lineNumber":676,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":677,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-music-camera-bolt:before,"},{"lineNumber":678,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-icons:before {"},{"lineNumber":679,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f86d\u0027;"},{"lineNumber":680,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":681,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-microphone-alt-slash:before,"},{"lineNumber":682,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-microphone-lines-slash:before {"},{"lineNumber":683,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f539\u0027;"},{"lineNumber":684,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":685,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bridge-circle-check:before {"},{"lineNumber":686,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c9\u0027;"},{"lineNumber":687,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":688,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pump-medical:before {"},{"lineNumber":689,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e06a\u0027;"},{"lineNumber":690,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":691,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fingerprint:before {"},{"lineNumber":692,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f577\u0027;"},{"lineNumber":693,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":694,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-point-right:before {"},{"lineNumber":695,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a4\u0027;"},{"lineNumber":696,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":697,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magnifying-glass-location:before,"},{"lineNumber":698,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-search-location:before {"},{"lineNumber":699,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f689\u0027;"},{"lineNumber":700,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":701,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-forward-step:before,"},{"lineNumber":702,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-step-forward:before {"},{"lineNumber":703,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f051\u0027;"},{"lineNumber":704,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":705,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-smile-beam:before,"},{"lineNumber":706,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-smile-beam:before {"},{"lineNumber":707,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5b8\u0027;"},{"lineNumber":708,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":709,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flag-checkered:before {"},{"lineNumber":710,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f11e\u0027;"},{"lineNumber":711,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":712,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-football-ball:before,"},{"lineNumber":713,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-football:before {"},{"lineNumber":714,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f44e\u0027;"},{"lineNumber":715,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":716,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-school-circle-exclamation:before {"},{"lineNumber":717,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e56c\u0027;"},{"lineNumber":718,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":719,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-crop:before {"},{"lineNumber":720,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f125\u0027;"},{"lineNumber":721,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":722,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angle-double-down:before,"},{"lineNumber":723,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angles-down:before {"},{"lineNumber":724,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f103\u0027;"},{"lineNumber":725,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":726,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users-rectangle:before {"},{"lineNumber":727,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e594\u0027;"},{"lineNumber":728,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":729,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-roof:before {"},{"lineNumber":730,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e537\u0027;"},{"lineNumber":731,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":732,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-line:before {"},{"lineNumber":733,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e534\u0027;"},{"lineNumber":734,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":735,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-beer-mug-empty:before,"},{"lineNumber":736,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-beer:before {"},{"lineNumber":737,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0fc\u0027;"},{"lineNumber":738,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":739,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-diagram-predecessor:before {"},{"lineNumber":740,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e477\u0027;"},{"lineNumber":741,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":742,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-long:before,"},{"lineNumber":743,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-long-arrow-up:before {"},{"lineNumber":744,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f176\u0027;"},{"lineNumber":745,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":746,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-burn:before,"},{"lineNumber":747,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fire-flame-simple:before {"},{"lineNumber":748,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f46a\u0027;"},{"lineNumber":749,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":750,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-male:before,"},{"lineNumber":751,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person:before {"},{"lineNumber":752,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f183\u0027;"},{"lineNumber":753,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":754,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laptop:before {"},{"lineNumber":755,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f109\u0027;"},{"lineNumber":756,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":757,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-csv:before {"},{"lineNumber":758,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6dd\u0027;"},{"lineNumber":759,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":760,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-menorah:before {"},{"lineNumber":761,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f676\u0027;"},{"lineNumber":762,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":763,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-plane:before {"},{"lineNumber":764,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e58f\u0027;"},{"lineNumber":765,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":766,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-record-vinyl:before {"},{"lineNumber":767,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f8d9\u0027;"},{"lineNumber":768,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":769,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-stars:before,"},{"lineNumber":770,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-stars:before {"},{"lineNumber":771,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f587\u0027;"},{"lineNumber":772,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":773,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bong:before {"},{"lineNumber":774,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f55c\u0027;"},{"lineNumber":775,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":776,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pastafarianism:before,"},{"lineNumber":777,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spaghetti-monster-flying:before {"},{"lineNumber":778,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f67b\u0027;"},{"lineNumber":779,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":780,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-up-across-line:before {"},{"lineNumber":781,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4af\u0027;"},{"lineNumber":782,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":783,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spoon:before,"},{"lineNumber":784,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-utensil-spoon:before {"},{"lineNumber":785,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2e5\u0027;"},{"lineNumber":786,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":787,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-jar-wheat:before {"},{"lineNumber":788,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e517\u0027;"},{"lineNumber":789,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":790,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-envelopes-bulk:before,"},{"lineNumber":791,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mail-bulk:before {"},{"lineNumber":792,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f674\u0027;"},{"lineNumber":793,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":794,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-circle-exclamation:before {"},{"lineNumber":795,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4eb\u0027;"},{"lineNumber":796,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":797,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-h:before,"},{"lineNumber":798,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hospital-symbol:before {"},{"lineNumber":799,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f47e\u0027;"},{"lineNumber":800,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":801,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pager:before {"},{"lineNumber":802,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f815\u0027;"},{"lineNumber":803,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":804,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-address-book:before,"},{"lineNumber":805,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-contact-book:before {"},{"lineNumber":806,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2b9\u0027;"},{"lineNumber":807,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":808,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-strikethrough:before {"},{"lineNumber":809,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0cc\u0027;"},{"lineNumber":810,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":811,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-k:before {"},{"lineNumber":812,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\4b\u0027;"},{"lineNumber":813,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":814,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-landmark-flag:before {"},{"lineNumber":815,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e51c\u0027;"},{"lineNumber":816,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":817,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pencil-alt:before,"},{"lineNumber":818,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pencil:before {"},{"lineNumber":819,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f303\u0027;"},{"lineNumber":820,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":821,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-backward:before {"},{"lineNumber":822,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f04a\u0027;"},{"lineNumber":823,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":824,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caret-right:before {"},{"lineNumber":825,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0da\u0027;"},{"lineNumber":826,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":827,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comments:before {"},{"lineNumber":828,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f086\u0027;"},{"lineNumber":829,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":830,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-clipboard:before,"},{"lineNumber":831,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-paste:before {"},{"lineNumber":832,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ea\u0027;"},{"lineNumber":833,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":834,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-code-pull-request:before {"},{"lineNumber":835,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e13c\u0027;"},{"lineNumber":836,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":837,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clipboard-list:before {"},{"lineNumber":838,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f46d\u0027;"},{"lineNumber":839,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":840,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-loading:before,"},{"lineNumber":841,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-ramp-box:before {"},{"lineNumber":842,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4de\u0027;"},{"lineNumber":843,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":844,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-check:before {"},{"lineNumber":845,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4fc\u0027;"},{"lineNumber":846,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":847,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vial-virus:before {"},{"lineNumber":848,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e597\u0027;"},{"lineNumber":849,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":850,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sheet-plastic:before {"},{"lineNumber":851,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e571\u0027;"},{"lineNumber":852,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":853,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-blog:before {"},{"lineNumber":854,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f781\u0027;"},{"lineNumber":855,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":856,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-ninja:before {"},{"lineNumber":857,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f504\u0027;"},{"lineNumber":858,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":859,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-arrow-up-from-line:before {"},{"lineNumber":860,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e539\u0027;"},{"lineNumber":861,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":862,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-scroll-torah:before,"},{"lineNumber":863,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-torah:before {"},{"lineNumber":864,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6a0\u0027;"},{"lineNumber":865,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":866,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-broom-ball:before,"},{"lineNumber":867,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-quidditch-broom-ball:before,"},{"lineNumber":868,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-quidditch:before {"},{"lineNumber":869,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f458\u0027;"},{"lineNumber":870,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":871,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-toggle-off:before {"},{"lineNumber":872,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f204\u0027;"},{"lineNumber":873,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":874,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-archive:before,"},{"lineNumber":875,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-box-archive:before {"},{"lineNumber":876,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f187\u0027;"},{"lineNumber":877,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":878,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-drowning:before {"},{"lineNumber":879,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e545\u0027;"},{"lineNumber":880,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":881,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-9-1:before,"},{"lineNumber":882,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-numeric-desc:before,"},{"lineNumber":883,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-numeric-down-alt:before {"},{"lineNumber":884,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f886\u0027;"},{"lineNumber":885,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":886,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-tongue-squint:before,"},{"lineNumber":887,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-tongue-squint:before {"},{"lineNumber":888,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f58a\u0027;"},{"lineNumber":889,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":890,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spray-can:before {"},{"lineNumber":891,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5bd\u0027;"},{"lineNumber":892,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":893,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-monster:before {"},{"lineNumber":894,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f63b\u0027;"},{"lineNumber":895,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":896,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-w:before {"},{"lineNumber":897,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\57\u0027;"},{"lineNumber":898,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":899,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-earth-africa:before,"},{"lineNumber":900,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-globe-africa:before {"},{"lineNumber":901,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f57c\u0027;"},{"lineNumber":902,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":903,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rainbow:before {"},{"lineNumber":904,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f75b\u0027;"},{"lineNumber":905,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":906,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-notch:before {"},{"lineNumber":907,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1ce\u0027;"},{"lineNumber":908,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":909,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tablet-alt:before,"},{"lineNumber":910,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tablet-screen-button:before {"},{"lineNumber":911,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3fa\u0027;"},{"lineNumber":912,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":913,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-paw:before {"},{"lineNumber":914,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1b0\u0027;"},{"lineNumber":915,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":916,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud:before {"},{"lineNumber":917,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c2\u0027;"},{"lineNumber":918,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":919,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trowel-bricks:before {"},{"lineNumber":920,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e58a\u0027;"},{"lineNumber":921,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":922,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-flushed:before,"},{"lineNumber":923,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flushed:before {"},{"lineNumber":924,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f579\u0027;"},{"lineNumber":925,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":926,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hospital-user:before {"},{"lineNumber":927,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f80d\u0027;"},{"lineNumber":928,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":929,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tent-arrow-left-right:before {"},{"lineNumber":930,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e57f\u0027;"},{"lineNumber":931,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":932,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gavel:before,"},{"lineNumber":933,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-legal:before {"},{"lineNumber":934,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0e3\u0027;"},{"lineNumber":935,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":936,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-binoculars:before {"},{"lineNumber":937,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1e5\u0027;"},{"lineNumber":938,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":939,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-microphone-slash:before {"},{"lineNumber":940,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f131\u0027;"},{"lineNumber":941,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":942,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-box-tissue:before {"},{"lineNumber":943,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e05b\u0027;"},{"lineNumber":944,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":945,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-motorcycle:before {"},{"lineNumber":946,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f21c\u0027;"},{"lineNumber":947,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":948,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bell-concierge:before,"},{"lineNumber":949,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-concierge-bell:before {"},{"lineNumber":950,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f562\u0027;"},{"lineNumber":951,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":952,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pen-ruler:before,"},{"lineNumber":953,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pencil-ruler:before {"},{"lineNumber":954,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5ae\u0027;"},{"lineNumber":955,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":956,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-arrows-left-right:before,"},{"lineNumber":957,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-arrows:before {"},{"lineNumber":958,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e068\u0027;"},{"lineNumber":959,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":960,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars-and-venus-burst:before {"},{"lineNumber":961,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e523\u0027;"},{"lineNumber":962,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":963,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caret-square-right:before,"},{"lineNumber":964,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-caret-right:before {"},{"lineNumber":965,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f152\u0027;"},{"lineNumber":966,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":967,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cut:before,"},{"lineNumber":968,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-scissors:before {"},{"lineNumber":969,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c4\u0027;"},{"lineNumber":970,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":971,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sun-plant-wilt:before {"},{"lineNumber":972,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e57a\u0027;"},{"lineNumber":973,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":974,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-toilets-portable:before {"},{"lineNumber":975,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e584\u0027;"},{"lineNumber":976,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":977,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hockey-puck:before {"},{"lineNumber":978,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f453\u0027;"},{"lineNumber":979,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":980,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-table:before {"},{"lineNumber":981,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ce\u0027;"},{"lineNumber":982,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":983,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magnifying-glass-arrow-right:before {"},{"lineNumber":984,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e521\u0027;"},{"lineNumber":985,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":986,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-digital-tachograph:before,"},{"lineNumber":987,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tachograph-digital:before {"},{"lineNumber":988,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f566\u0027;"},{"lineNumber":989,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":990,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users-slash:before {"},{"lineNumber":991,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e073\u0027;"},{"lineNumber":992,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":993,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clover:before {"},{"lineNumber":994,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e139\u0027;"},{"lineNumber":995,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":996,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mail-reply:before,"},{"lineNumber":997,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-reply:before {"},{"lineNumber":998,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3e5\u0027;"},{"lineNumber":999,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1000,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-star-and-crescent:before {"},{"lineNumber":1001,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f699\u0027;"},{"lineNumber":1002,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1003,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-fire:before {"},{"lineNumber":1004,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e50c\u0027;"},{"lineNumber":1005,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1006,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-minus-square:before,"},{"lineNumber":1007,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-minus:before {"},{"lineNumber":1008,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f146\u0027;"},{"lineNumber":1009,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1010,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-helicopter:before {"},{"lineNumber":1011,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f533\u0027;"},{"lineNumber":1012,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1013,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-compass:before {"},{"lineNumber":1014,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f14e\u0027;"},{"lineNumber":1015,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1016,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caret-square-down:before,"},{"lineNumber":1017,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-caret-down:before {"},{"lineNumber":1018,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f150\u0027;"},{"lineNumber":1019,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1020,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-circle-question:before {"},{"lineNumber":1021,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ef\u0027;"},{"lineNumber":1022,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1023,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laptop-code:before {"},{"lineNumber":1024,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5fc\u0027;"},{"lineNumber":1025,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1026,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-swatchbook:before {"},{"lineNumber":1027,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c3\u0027;"},{"lineNumber":1028,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1029,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-prescription-bottle:before {"},{"lineNumber":1030,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f485\u0027;"},{"lineNumber":1031,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1032,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bars:before,"},{"lineNumber":1033,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-navicon:before {"},{"lineNumber":1034,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c9\u0027;"},{"lineNumber":1035,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1036,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-group:before {"},{"lineNumber":1037,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e533\u0027;"},{"lineNumber":1038,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1039,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hourglass-3:before,"},{"lineNumber":1040,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hourglass-end:before {"},{"lineNumber":1041,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f253\u0027;"},{"lineNumber":1042,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1043,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-broken:before,"},{"lineNumber":1044,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-crack:before {"},{"lineNumber":1045,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7a9\u0027;"},{"lineNumber":1046,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1047,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-external-link-square-alt:before,"},{"lineNumber":1048,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-up-right:before {"},{"lineNumber":1049,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f360\u0027;"},{"lineNumber":1050,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1051,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-kiss-beam:before,"},{"lineNumber":1052,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-kiss-beam:before {"},{"lineNumber":1053,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f597\u0027;"},{"lineNumber":1054,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1055,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-film:before {"},{"lineNumber":1056,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f008\u0027;"},{"lineNumber":1057,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1058,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ruler-horizontal:before {"},{"lineNumber":1059,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f547\u0027;"},{"lineNumber":1060,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1061,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-robbery:before {"},{"lineNumber":1062,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e536\u0027;"},{"lineNumber":1063,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1064,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lightbulb:before {"},{"lineNumber":1065,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0eb\u0027;"},{"lineNumber":1066,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1067,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caret-left:before {"},{"lineNumber":1068,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0d9\u0027;"},{"lineNumber":1069,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1070,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-exclamation:before,"},{"lineNumber":1071,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-exclamation-circle:before {"},{"lineNumber":1072,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f06a\u0027;"},{"lineNumber":1073,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1074,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-school-circle-xmark:before {"},{"lineNumber":1075,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e56d\u0027;"},{"lineNumber":1076,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1077,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right-from-bracket:before,"},{"lineNumber":1078,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sign-out:before {"},{"lineNumber":1079,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f08b\u0027;"},{"lineNumber":1080,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1081,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chevron-circle-down:before,"},{"lineNumber":1082,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-chevron-down:before {"},{"lineNumber":1083,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f13a\u0027;"},{"lineNumber":1084,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1085,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-unlock-alt:before,"},{"lineNumber":1086,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-unlock-keyhole:before {"},{"lineNumber":1087,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f13e\u0027;"},{"lineNumber":1088,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1089,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-showers-heavy:before {"},{"lineNumber":1090,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f740\u0027;"},{"lineNumber":1091,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1092,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-headphones-alt:before,"},{"lineNumber":1093,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-headphones-simple:before {"},{"lineNumber":1094,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f58f\u0027;"},{"lineNumber":1095,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1096,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sitemap:before {"},{"lineNumber":1097,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0e8\u0027;"},{"lineNumber":1098,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1099,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-dollar-to-slot:before,"},{"lineNumber":1100,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-donate:before {"},{"lineNumber":1101,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4b9\u0027;"},{"lineNumber":1102,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1103,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-memory:before {"},{"lineNumber":1104,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f538\u0027;"},{"lineNumber":1105,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1106,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-road-spikes:before {"},{"lineNumber":1107,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e568\u0027;"},{"lineNumber":1108,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1109,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fire-burner:before {"},{"lineNumber":1110,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f1\u0027;"},{"lineNumber":1111,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1112,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flag:before {"},{"lineNumber":1113,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f024\u0027;"},{"lineNumber":1114,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1115,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hanukiah:before {"},{"lineNumber":1116,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6e6\u0027;"},{"lineNumber":1117,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1118,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-feather:before {"},{"lineNumber":1119,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f52d\u0027;"},{"lineNumber":1120,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1121,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-down:before,"},{"lineNumber":1122,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-low:before {"},{"lineNumber":1123,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f027\u0027;"},{"lineNumber":1124,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1125,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comment-slash:before {"},{"lineNumber":1126,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4b3\u0027;"},{"lineNumber":1127,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1128,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-sun-rain:before {"},{"lineNumber":1129,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f743\u0027;"},{"lineNumber":1130,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1131,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-compress:before {"},{"lineNumber":1132,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f066\u0027;"},{"lineNumber":1133,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1134,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wheat-alt:before,"},{"lineNumber":1135,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wheat-awn:before {"},{"lineNumber":1136,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e2cd\u0027;"},{"lineNumber":1137,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1138,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ankh:before {"},{"lineNumber":1139,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f644\u0027;"},{"lineNumber":1140,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1141,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-holding-child:before {"},{"lineNumber":1142,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4fa\u0027;"},{"lineNumber":1143,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1144,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-asterisk:before {"},{"lineNumber":1145,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\2a\u0027;"},{"lineNumber":1146,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1147,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-check-square:before,"},{"lineNumber":1148,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-check:before {"},{"lineNumber":1149,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f14a\u0027;"},{"lineNumber":1150,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1151,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-peseta-sign:before {"},{"lineNumber":1152,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e221\u0027;"},{"lineNumber":1153,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1154,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-header:before,"},{"lineNumber":1155,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heading:before {"},{"lineNumber":1156,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1dc\u0027;"},{"lineNumber":1157,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1158,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ghost:before {"},{"lineNumber":1159,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6e2\u0027;"},{"lineNumber":1160,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1161,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list-squares:before,"},{"lineNumber":1162,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list:before {"},{"lineNumber":1163,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f03a\u0027;"},{"lineNumber":1164,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1165,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-phone-square-alt:before,"},{"lineNumber":1166,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-phone-flip:before {"},{"lineNumber":1167,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f87b\u0027;"},{"lineNumber":1168,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1169,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cart-plus:before {"},{"lineNumber":1170,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f217\u0027;"},{"lineNumber":1171,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1172,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gamepad:before {"},{"lineNumber":1173,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f11b\u0027;"},{"lineNumber":1174,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1175,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-dot:before,"},{"lineNumber":1176,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dot-circle:before {"},{"lineNumber":1177,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f192\u0027;"},{"lineNumber":1178,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1179,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dizzy:before,"},{"lineNumber":1180,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-dizzy:before {"},{"lineNumber":1181,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f567\u0027;"},{"lineNumber":1182,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1183,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-egg:before {"},{"lineNumber":1184,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7fb\u0027;"},{"lineNumber":1185,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1186,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-medical-circle-xmark:before {"},{"lineNumber":1187,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e513\u0027;"},{"lineNumber":1188,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1189,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-campground:before {"},{"lineNumber":1190,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6bb\u0027;"},{"lineNumber":1191,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1192,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-folder-plus:before {"},{"lineNumber":1193,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f65e\u0027;"},{"lineNumber":1194,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1195,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-futbol-ball:before,"},{"lineNumber":1196,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-futbol:before,"},{"lineNumber":1197,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-soccer-ball:before {"},{"lineNumber":1198,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1e3\u0027;"},{"lineNumber":1199,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1200,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-paint-brush:before,"},{"lineNumber":1201,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-paintbrush:before {"},{"lineNumber":1202,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1fc\u0027;"},{"lineNumber":1203,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1204,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lock:before {"},{"lineNumber":1205,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f023\u0027;"},{"lineNumber":1206,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1207,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gas-pump:before {"},{"lineNumber":1208,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f52f\u0027;"},{"lineNumber":1209,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1210,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hot-tub-person:before,"},{"lineNumber":1211,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hot-tub:before {"},{"lineNumber":1212,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f593\u0027;"},{"lineNumber":1213,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1214,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map-location:before,"},{"lineNumber":1215,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map-marked:before {"},{"lineNumber":1216,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f59f\u0027;"},{"lineNumber":1217,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1218,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-flood-water:before {"},{"lineNumber":1219,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e50e\u0027;"},{"lineNumber":1220,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1221,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tree:before {"},{"lineNumber":1222,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1bb\u0027;"},{"lineNumber":1223,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1224,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bridge-lock:before {"},{"lineNumber":1225,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4cc\u0027;"},{"lineNumber":1226,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1227,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sack-dollar:before {"},{"lineNumber":1228,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f81d\u0027;"},{"lineNumber":1229,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1230,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-edit:before,"},{"lineNumber":1231,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pen-to-square:before {"},{"lineNumber":1232,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f044\u0027;"},{"lineNumber":1233,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1234,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car-side:before {"},{"lineNumber":1235,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5e4\u0027;"},{"lineNumber":1236,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1237,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-share-alt:before,"},{"lineNumber":1238,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-share-nodes:before {"},{"lineNumber":1239,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1e0\u0027;"},{"lineNumber":1240,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1241,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-circle-minus:before {"},{"lineNumber":1242,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ff\u0027;"},{"lineNumber":1243,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1244,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hourglass-2:before,"},{"lineNumber":1245,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hourglass-half:before {"},{"lineNumber":1246,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f252\u0027;"},{"lineNumber":1247,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1248,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-microscope:before {"},{"lineNumber":1249,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f610\u0027;"},{"lineNumber":1250,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1251,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sink:before {"},{"lineNumber":1252,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e06d\u0027;"},{"lineNumber":1253,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1254,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bag-shopping:before,"},{"lineNumber":1255,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shopping-bag:before {"},{"lineNumber":1256,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f290\u0027;"},{"lineNumber":1257,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1258,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-z-a:before,"},{"lineNumber":1259,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-alpha-desc:before,"},{"lineNumber":1260,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-alpha-down-alt:before {"},{"lineNumber":1261,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f881\u0027;"},{"lineNumber":1262,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1263,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mitten:before {"},{"lineNumber":1264,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7b5\u0027;"},{"lineNumber":1265,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1266,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-rays:before {"},{"lineNumber":1267,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e54d\u0027;"},{"lineNumber":1268,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1269,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users:before {"},{"lineNumber":1270,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c0\u0027;"},{"lineNumber":1271,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1272,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eye-slash:before {"},{"lineNumber":1273,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f070\u0027;"},{"lineNumber":1274,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1275,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flask-vial:before {"},{"lineNumber":1276,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f3\u0027;"},{"lineNumber":1277,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1278,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-paper:before,"},{"lineNumber":1279,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand:before {"},{"lineNumber":1280,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f256\u0027;"},{"lineNumber":1281,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1282,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-om:before {"},{"lineNumber":1283,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f679\u0027;"},{"lineNumber":1284,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1285,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-worm:before {"},{"lineNumber":1286,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e599\u0027;"},{"lineNumber":1287,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1288,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-circle-xmark:before {"},{"lineNumber":1289,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e50b\u0027;"},{"lineNumber":1290,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1291,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plug:before {"},{"lineNumber":1292,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1e6\u0027;"},{"lineNumber":1293,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1294,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chevron-up:before {"},{"lineNumber":1295,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f077\u0027;"},{"lineNumber":1296,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1297,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-spock:before {"},{"lineNumber":1298,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f259\u0027;"},{"lineNumber":1299,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1300,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stopwatch:before {"},{"lineNumber":1301,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2f2\u0027;"},{"lineNumber":1302,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1303,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-kiss:before,"},{"lineNumber":1304,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-kiss:before {"},{"lineNumber":1305,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f596\u0027;"},{"lineNumber":1306,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1307,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bridge-circle-xmark:before {"},{"lineNumber":1308,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4cb\u0027;"},{"lineNumber":1309,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1310,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-tongue:before,"},{"lineNumber":1311,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-tongue:before {"},{"lineNumber":1312,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f589\u0027;"},{"lineNumber":1313,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1314,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chess-bishop:before {"},{"lineNumber":1315,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f43a\u0027;"},{"lineNumber":1316,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1317,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-wink:before,"},{"lineNumber":1318,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-wink:before {"},{"lineNumber":1319,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f58c\u0027;"},{"lineNumber":1320,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1321,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-deaf:before,"},{"lineNumber":1322,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-deafness:before,"},{"lineNumber":1323,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ear-deaf:before,"},{"lineNumber":1324,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hard-of-hearing:before {"},{"lineNumber":1325,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2a4\u0027;"},{"lineNumber":1326,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1327,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-road-circle-check:before {"},{"lineNumber":1328,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e564\u0027;"},{"lineNumber":1329,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1330,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice-five:before {"},{"lineNumber":1331,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f523\u0027;"},{"lineNumber":1332,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1333,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rss-square:before,"},{"lineNumber":1334,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-rss:before {"},{"lineNumber":1335,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f143\u0027;"},{"lineNumber":1336,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1337,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-land-mine-on:before {"},{"lineNumber":1338,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e51b\u0027;"},{"lineNumber":1339,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1340,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-i-cursor:before {"},{"lineNumber":1341,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f246\u0027;"},{"lineNumber":1342,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1343,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stamp:before {"},{"lineNumber":1344,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5bf\u0027;"},{"lineNumber":1345,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1346,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stairs:before {"},{"lineNumber":1347,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e289\u0027;"},{"lineNumber":1348,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1349,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-i:before {"},{"lineNumber":1350,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\49\u0027;"},{"lineNumber":1351,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1352,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hryvnia-sign:before,"},{"lineNumber":1353,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hryvnia:before {"},{"lineNumber":1354,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6f2\u0027;"},{"lineNumber":1355,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1356,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pills:before {"},{"lineNumber":1357,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f484\u0027;"},{"lineNumber":1358,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1359,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-wide:before,"},{"lineNumber":1360,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-alt:before {"},{"lineNumber":1361,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f581\u0027;"},{"lineNumber":1362,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1363,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tooth:before {"},{"lineNumber":1364,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c9\u0027;"},{"lineNumber":1365,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1366,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-v:before {"},{"lineNumber":1367,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\56\u0027;"},{"lineNumber":1368,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1369,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bangladeshi-taka-sign:before {"},{"lineNumber":1370,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e2e6\u0027;"},{"lineNumber":1371,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1372,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bicycle:before {"},{"lineNumber":1373,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f206\u0027;"},{"lineNumber":1374,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1375,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rod-asclepius:before,"},{"lineNumber":1376,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rod-snake:before,"},{"lineNumber":1377,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-staff-aesculapius:before,"},{"lineNumber":1378,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-staff-snake:before {"},{"lineNumber":1379,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e579\u0027;"},{"lineNumber":1380,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1381,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-head-side-cough-slash:before {"},{"lineNumber":1382,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e062\u0027;"},{"lineNumber":1383,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1384,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ambulance:before,"},{"lineNumber":1385,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-medical:before {"},{"lineNumber":1386,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0f9\u0027;"},{"lineNumber":1387,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1388,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wheat-awn-circle-exclamation:before {"},{"lineNumber":1389,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e598\u0027;"},{"lineNumber":1390,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1391,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-snowman:before {"},{"lineNumber":1392,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7d0\u0027;"},{"lineNumber":1393,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1394,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mortar-pestle:before {"},{"lineNumber":1395,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5a7\u0027;"},{"lineNumber":1396,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1397,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-road-barrier:before {"},{"lineNumber":1398,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e562\u0027;"},{"lineNumber":1399,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1400,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-school:before {"},{"lineNumber":1401,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f549\u0027;"},{"lineNumber":1402,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1403,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-igloo:before {"},{"lineNumber":1404,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7ae\u0027;"},{"lineNumber":1405,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1406,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-joint:before {"},{"lineNumber":1407,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f595\u0027;"},{"lineNumber":1408,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1409,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angle-right:before {"},{"lineNumber":1410,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f105\u0027;"},{"lineNumber":1411,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1412,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-horse:before {"},{"lineNumber":1413,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6f0\u0027;"},{"lineNumber":1414,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1415,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-q:before {"},{"lineNumber":1416,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\51\u0027;"},{"lineNumber":1417,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1418,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-g:before {"},{"lineNumber":1419,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\47\u0027;"},{"lineNumber":1420,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1421,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-notes-medical:before {"},{"lineNumber":1422,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f481\u0027;"},{"lineNumber":1423,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1424,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-2:before,"},{"lineNumber":1425,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-half:before,"},{"lineNumber":1426,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-2:before,"},{"lineNumber":1427,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-half:before {"},{"lineNumber":1428,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2c9\u0027;"},{"lineNumber":1429,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1430,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dong-sign:before {"},{"lineNumber":1431,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e169\u0027;"},{"lineNumber":1432,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1433,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-capsules:before {"},{"lineNumber":1434,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f46b\u0027;"},{"lineNumber":1435,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1436,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-poo-bolt:before,"},{"lineNumber":1437,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-poo-storm:before {"},{"lineNumber":1438,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f75a\u0027;"},{"lineNumber":1439,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1440,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-frown-open:before,"},{"lineNumber":1441,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-frown-open:before {"},{"lineNumber":1442,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f57a\u0027;"},{"lineNumber":1443,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1444,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-point-up:before {"},{"lineNumber":1445,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a6\u0027;"},{"lineNumber":1446,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1447,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill:before {"},{"lineNumber":1448,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0d6\u0027;"},{"lineNumber":1449,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1450,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bookmark:before {"},{"lineNumber":1451,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f02e\u0027;"},{"lineNumber":1452,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1453,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-align-justify:before {"},{"lineNumber":1454,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f039\u0027;"},{"lineNumber":1455,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1456,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-umbrella-beach:before {"},{"lineNumber":1457,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5ca\u0027;"},{"lineNumber":1458,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1459,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-helmet-un:before {"},{"lineNumber":1460,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e503\u0027;"},{"lineNumber":1461,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1462,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bullseye:before {"},{"lineNumber":1463,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f140\u0027;"},{"lineNumber":1464,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1465,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bacon:before {"},{"lineNumber":1466,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7e5\u0027;"},{"lineNumber":1467,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1468,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-point-down:before {"},{"lineNumber":1469,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a7\u0027;"},{"lineNumber":1470,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1471,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-from-bracket:before {"},{"lineNumber":1472,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e09a\u0027;"},{"lineNumber":1473,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1474,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-folder-blank:before,"},{"lineNumber":1475,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-folder:before {"},{"lineNumber":1476,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f07b\u0027;"},{"lineNumber":1477,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1478,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-medical-alt:before,"},{"lineNumber":1479,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-waveform:before {"},{"lineNumber":1480,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f478\u0027;"},{"lineNumber":1481,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1482,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-radiation:before {"},{"lineNumber":1483,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7b9\u0027;"},{"lineNumber":1484,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1485,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chart-simple:before {"},{"lineNumber":1486,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e473\u0027;"},{"lineNumber":1487,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1488,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars-stroke:before {"},{"lineNumber":1489,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f229\u0027;"},{"lineNumber":1490,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1491,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vial:before {"},{"lineNumber":1492,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f492\u0027;"},{"lineNumber":1493,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1494,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dashboard:before,"},{"lineNumber":1495,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gauge-med:before,"},{"lineNumber":1496,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gauge:before,"},{"lineNumber":1497,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tachometer-alt-average:before {"},{"lineNumber":1498,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f624\u0027;"},{"lineNumber":1499,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1500,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magic-wand-sparkles:before,"},{"lineNumber":1501,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wand-magic-sparkles:before {"},{"lineNumber":1502,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e2ca\u0027;"},{"lineNumber":1503,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1504,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-e:before {"},{"lineNumber":1505,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\45\u0027;"},{"lineNumber":1506,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1507,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pen-alt:before,"},{"lineNumber":1508,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pen-clip:before {"},{"lineNumber":1509,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f305\u0027;"},{"lineNumber":1510,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1511,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bridge-circle-exclamation:before {"},{"lineNumber":1512,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ca\u0027;"},{"lineNumber":1513,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1514,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user:before {"},{"lineNumber":1515,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f007\u0027;"},{"lineNumber":1516,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1517,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-school-circle-check:before {"},{"lineNumber":1518,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e56b\u0027;"},{"lineNumber":1519,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1520,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dumpster:before {"},{"lineNumber":1521,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f793\u0027;"},{"lineNumber":1522,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1523,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shuttle-van:before,"},{"lineNumber":1524,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-van-shuttle:before {"},{"lineNumber":1525,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5b6\u0027;"},{"lineNumber":1526,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1527,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-user:before {"},{"lineNumber":1528,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4da\u0027;"},{"lineNumber":1529,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1530,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caret-square-left:before,"},{"lineNumber":1531,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-caret-left:before {"},{"lineNumber":1532,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f191\u0027;"},{"lineNumber":1533,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1534,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-highlighter:before {"},{"lineNumber":1535,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f591\u0027;"},{"lineNumber":1536,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1537,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-key:before {"},{"lineNumber":1538,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f084\u0027;"},{"lineNumber":1539,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1540,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bullhorn:before {"},{"lineNumber":1541,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a1\u0027;"},{"lineNumber":1542,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1543,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-globe:before {"},{"lineNumber":1544,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ac\u0027;"},{"lineNumber":1545,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1546,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-synagogue:before {"},{"lineNumber":1547,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f69b\u0027;"},{"lineNumber":1548,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1549,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-half-dress:before {"},{"lineNumber":1550,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e548\u0027;"},{"lineNumber":1551,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1552,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-road-bridge:before {"},{"lineNumber":1553,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e563\u0027;"},{"lineNumber":1554,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1555,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-location-arrow:before {"},{"lineNumber":1556,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f124\u0027;"},{"lineNumber":1557,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1558,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-c:before {"},{"lineNumber":1559,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\43\u0027;"},{"lineNumber":1560,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1561,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tablet-button:before {"},{"lineNumber":1562,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f10a\u0027;"},{"lineNumber":1563,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1564,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-lock:before {"},{"lineNumber":1565,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d6\u0027;"},{"lineNumber":1566,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1567,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pizza-slice:before {"},{"lineNumber":1568,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f818\u0027;"},{"lineNumber":1569,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1570,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill-wave:before {"},{"lineNumber":1571,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f53a\u0027;"},{"lineNumber":1572,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1573,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-area-chart:before,"},{"lineNumber":1574,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chart-area:before {"},{"lineNumber":1575,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1fe\u0027;"},{"lineNumber":1576,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1577,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-flag:before {"},{"lineNumber":1578,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e50d\u0027;"},{"lineNumber":1579,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1580,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-circle-minus:before {"},{"lineNumber":1581,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e540\u0027;"},{"lineNumber":1582,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1583,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ban:before,"},{"lineNumber":1584,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cancel:before {"},{"lineNumber":1585,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f05e\u0027;"},{"lineNumber":1586,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1587,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-camera-rotate:before {"},{"lineNumber":1588,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0d8\u0027;"},{"lineNumber":1589,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1590,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-air-freshener:before,"},{"lineNumber":1591,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spray-can-sparkles:before {"},{"lineNumber":1592,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5d0\u0027;"},{"lineNumber":1593,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1594,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-star:before {"},{"lineNumber":1595,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f005\u0027;"},{"lineNumber":1596,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1597,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-repeat:before {"},{"lineNumber":1598,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f363\u0027;"},{"lineNumber":1599,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1600,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cross:before {"},{"lineNumber":1601,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f654\u0027;"},{"lineNumber":1602,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1603,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-box:before {"},{"lineNumber":1604,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f466\u0027;"},{"lineNumber":1605,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1606,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-venus-mars:before {"},{"lineNumber":1607,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f228\u0027;"},{"lineNumber":1608,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1609,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-pointer:before,"},{"lineNumber":1610,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mouse-pointer:before {"},{"lineNumber":1611,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f245\u0027;"},{"lineNumber":1612,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1613,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-expand-arrows-alt:before,"},{"lineNumber":1614,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-maximize:before {"},{"lineNumber":1615,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f31e\u0027;"},{"lineNumber":1616,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1617,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-charging-station:before {"},{"lineNumber":1618,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5e7\u0027;"},{"lineNumber":1619,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1620,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shapes:before,"},{"lineNumber":1621,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-triangle-circle-square:before {"},{"lineNumber":1622,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f61f\u0027;"},{"lineNumber":1623,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1624,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-random:before,"},{"lineNumber":1625,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shuffle:before {"},{"lineNumber":1626,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f074\u0027;"},{"lineNumber":1627,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1628,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-running:before,"},{"lineNumber":1629,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-running:before {"},{"lineNumber":1630,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f70c\u0027;"},{"lineNumber":1631,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1632,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile-retro:before {"},{"lineNumber":1633,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e527\u0027;"},{"lineNumber":1634,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1635,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grip-lines-vertical:before {"},{"lineNumber":1636,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7a5\u0027;"},{"lineNumber":1637,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1638,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spider:before {"},{"lineNumber":1639,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f717\u0027;"},{"lineNumber":1640,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1641,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-bound:before {"},{"lineNumber":1642,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f9\u0027;"},{"lineNumber":1643,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1644,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-invoice-dollar:before {"},{"lineNumber":1645,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f571\u0027;"},{"lineNumber":1646,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1647,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane-circle-exclamation:before {"},{"lineNumber":1648,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e556\u0027;"},{"lineNumber":1649,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1650,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-x-ray:before {"},{"lineNumber":1651,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f497\u0027;"},{"lineNumber":1652,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1653,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spell-check:before {"},{"lineNumber":1654,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f891\u0027;"},{"lineNumber":1655,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1656,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-slash:before {"},{"lineNumber":1657,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f715\u0027;"},{"lineNumber":1658,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1659,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-computer-mouse:before,"},{"lineNumber":1660,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mouse:before {"},{"lineNumber":1661,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f8cc\u0027;"},{"lineNumber":1662,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1663,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right-to-bracket:before,"},{"lineNumber":1664,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sign-in:before {"},{"lineNumber":1665,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f090\u0027;"},{"lineNumber":1666,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1667,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shop-slash:before,"},{"lineNumber":1668,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-store-alt-slash:before {"},{"lineNumber":1669,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e070\u0027;"},{"lineNumber":1670,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1671,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-server:before {"},{"lineNumber":1672,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f233\u0027;"},{"lineNumber":1673,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1674,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-virus-covid-slash:before {"},{"lineNumber":1675,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4a9\u0027;"},{"lineNumber":1676,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1677,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shop-lock:before {"},{"lineNumber":1678,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4a5\u0027;"},{"lineNumber":1679,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1680,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hourglass-1:before,"},{"lineNumber":1681,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hourglass-start:before {"},{"lineNumber":1682,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f251\u0027;"},{"lineNumber":1683,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1684,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-blender-phone:before {"},{"lineNumber":1685,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6b6\u0027;"},{"lineNumber":1686,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1687,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-wheat:before {"},{"lineNumber":1688,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4db\u0027;"},{"lineNumber":1689,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1690,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-breastfeeding:before {"},{"lineNumber":1691,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e53a\u0027;"},{"lineNumber":1692,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1693,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-right-to-bracket:before,"},{"lineNumber":1694,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sign-in-alt:before {"},{"lineNumber":1695,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2f6\u0027;"},{"lineNumber":1696,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1697,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-venus:before {"},{"lineNumber":1698,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f221\u0027;"},{"lineNumber":1699,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1700,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-passport:before {"},{"lineNumber":1701,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5ab\u0027;"},{"lineNumber":1702,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1703,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-pulse:before,"},{"lineNumber":1704,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heartbeat:before {"},{"lineNumber":1705,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f21e\u0027;"},{"lineNumber":1706,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1707,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-carry-box:before,"},{"lineNumber":1708,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-carry:before {"},{"lineNumber":1709,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4ce\u0027;"},{"lineNumber":1710,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1711,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-high:before {"},{"lineNumber":1712,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f769\u0027;"},{"lineNumber":1713,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1714,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-microchip:before {"},{"lineNumber":1715,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2db\u0027;"},{"lineNumber":1716,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1717,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-crown:before {"},{"lineNumber":1718,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f521\u0027;"},{"lineNumber":1719,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1720,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-weight-hanging:before {"},{"lineNumber":1721,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5cd\u0027;"},{"lineNumber":1722,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1723,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-xmarks-lines:before {"},{"lineNumber":1724,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e59a\u0027;"},{"lineNumber":1725,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1726,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-prescription:before {"},{"lineNumber":1727,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f572\u0027;"},{"lineNumber":1728,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1729,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-weight-scale:before,"},{"lineNumber":1730,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-weight:before {"},{"lineNumber":1731,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f496\u0027;"},{"lineNumber":1732,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1733,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-friends:before,"},{"lineNumber":1734,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-group:before {"},{"lineNumber":1735,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f500\u0027;"},{"lineNumber":1736,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1737,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-a-z:before,"},{"lineNumber":1738,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-alpha-up:before {"},{"lineNumber":1739,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f15e\u0027;"},{"lineNumber":1740,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1741,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chess-knight:before {"},{"lineNumber":1742,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f441\u0027;"},{"lineNumber":1743,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1744,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-laugh-squint:before,"},{"lineNumber":1745,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laugh-squint:before {"},{"lineNumber":1746,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f59b\u0027;"},{"lineNumber":1747,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1748,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wheelchair:before {"},{"lineNumber":1749,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f193\u0027;"},{"lineNumber":1750,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1751,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-circle-up:before,"},{"lineNumber":1752,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-arrow-up:before {"},{"lineNumber":1753,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0aa\u0027;"},{"lineNumber":1754,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1755,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-toggle-on:before {"},{"lineNumber":1756,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f205\u0027;"},{"lineNumber":1757,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1758,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-walking:before,"},{"lineNumber":1759,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-walking:before {"},{"lineNumber":1760,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f554\u0027;"},{"lineNumber":1761,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1762,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-l:before {"},{"lineNumber":1763,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\4c\u0027;"},{"lineNumber":1764,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1765,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fire:before {"},{"lineNumber":1766,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f06d\u0027;"},{"lineNumber":1767,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1768,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bed-pulse:before,"},{"lineNumber":1769,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-procedures:before {"},{"lineNumber":1770,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f487\u0027;"},{"lineNumber":1771,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1772,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shuttle-space:before,"},{"lineNumber":1773,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-space-shuttle:before {"},{"lineNumber":1774,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f197\u0027;"},{"lineNumber":1775,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1776,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-laugh:before,"},{"lineNumber":1777,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laugh:before {"},{"lineNumber":1778,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f599\u0027;"},{"lineNumber":1779,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1780,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-folder-open:before {"},{"lineNumber":1781,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f07c\u0027;"},{"lineNumber":1782,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1783,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-circle-plus:before {"},{"lineNumber":1784,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e500\u0027;"},{"lineNumber":1785,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1786,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-code-fork:before {"},{"lineNumber":1787,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e13b\u0027;"},{"lineNumber":1788,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1789,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-city:before {"},{"lineNumber":1790,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f64f\u0027;"},{"lineNumber":1791,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1792,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-microphone-alt:before,"},{"lineNumber":1793,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-microphone-lines:before {"},{"lineNumber":1794,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3c9\u0027;"},{"lineNumber":1795,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1796,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pepper-hot:before {"},{"lineNumber":1797,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f816\u0027;"},{"lineNumber":1798,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1799,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-unlock:before {"},{"lineNumber":1800,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f09c\u0027;"},{"lineNumber":1801,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1802,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-colon-sign:before {"},{"lineNumber":1803,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e140\u0027;"},{"lineNumber":1804,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1805,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-headset:before {"},{"lineNumber":1806,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f590\u0027;"},{"lineNumber":1807,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1808,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-store-slash:before {"},{"lineNumber":1809,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e071\u0027;"},{"lineNumber":1810,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1811,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-road-circle-xmark:before {"},{"lineNumber":1812,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e566\u0027;"},{"lineNumber":1813,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1814,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-minus:before {"},{"lineNumber":1815,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f503\u0027;"},{"lineNumber":1816,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1817,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars-stroke-up:before,"},{"lineNumber":1818,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars-stroke-v:before {"},{"lineNumber":1819,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f22a\u0027;"},{"lineNumber":1820,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1821,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-champagne-glasses:before,"},{"lineNumber":1822,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-glass-cheers:before {"},{"lineNumber":1823,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f79f\u0027;"},{"lineNumber":1824,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1825,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clipboard:before {"},{"lineNumber":1826,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f328\u0027;"},{"lineNumber":1827,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1828,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-circle-exclamation:before {"},{"lineNumber":1829,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e50a\u0027;"},{"lineNumber":1830,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1831,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-arrow-up:before,"},{"lineNumber":1832,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-upload:before {"},{"lineNumber":1833,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f574\u0027;"},{"lineNumber":1834,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1835,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wifi-3:before,"},{"lineNumber":1836,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wifi-strong:before,"},{"lineNumber":1837,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wifi:before {"},{"lineNumber":1838,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1eb\u0027;"},{"lineNumber":1839,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1840,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bath:before,"},{"lineNumber":1841,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bathtub:before {"},{"lineNumber":1842,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2cd\u0027;"},{"lineNumber":1843,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1844,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-underline:before {"},{"lineNumber":1845,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0cd\u0027;"},{"lineNumber":1846,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1847,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-edit:before,"},{"lineNumber":1848,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-pen:before {"},{"lineNumber":1849,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4ff\u0027;"},{"lineNumber":1850,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1851,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-signature:before {"},{"lineNumber":1852,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5b7\u0027;"},{"lineNumber":1853,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1854,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stroopwafel:before {"},{"lineNumber":1855,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f551\u0027;"},{"lineNumber":1856,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1857,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bold:before {"},{"lineNumber":1858,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f032\u0027;"},{"lineNumber":1859,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1860,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-anchor-lock:before {"},{"lineNumber":1861,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ad\u0027;"},{"lineNumber":1862,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1863,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-ngo:before {"},{"lineNumber":1864,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d7\u0027;"},{"lineNumber":1865,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1866,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-manat-sign:before {"},{"lineNumber":1867,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1d5\u0027;"},{"lineNumber":1868,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1869,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-not-equal:before {"},{"lineNumber":1870,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f53e\u0027;"},{"lineNumber":1871,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1872,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-border-style:before,"},{"lineNumber":1873,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-border-top-left:before {"},{"lineNumber":1874,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f853\u0027;"},{"lineNumber":1875,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1876,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map-location-dot:before,"},{"lineNumber":1877,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map-marked-alt:before {"},{"lineNumber":1878,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5a0\u0027;"},{"lineNumber":1879,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1880,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-jedi:before {"},{"lineNumber":1881,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f669\u0027;"},{"lineNumber":1882,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1883,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-poll:before,"},{"lineNumber":1884,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-poll-vertical:before {"},{"lineNumber":1885,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f681\u0027;"},{"lineNumber":1886,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1887,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mug-hot:before {"},{"lineNumber":1888,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7b6\u0027;"},{"lineNumber":1889,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1890,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-car:before,"},{"lineNumber":1891,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car-battery:before {"},{"lineNumber":1892,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5df\u0027;"},{"lineNumber":1893,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1894,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gift:before {"},{"lineNumber":1895,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f06b\u0027;"},{"lineNumber":1896,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1897,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice-two:before {"},{"lineNumber":1898,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f528\u0027;"},{"lineNumber":1899,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1900,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chess-queen:before {"},{"lineNumber":1901,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f445\u0027;"},{"lineNumber":1902,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1903,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-glasses:before {"},{"lineNumber":1904,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f530\u0027;"},{"lineNumber":1905,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1906,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chess-board:before {"},{"lineNumber":1907,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f43c\u0027;"},{"lineNumber":1908,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1909,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-circle-check:before {"},{"lineNumber":1910,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d2\u0027;"},{"lineNumber":1911,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1912,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-chalkboard:before {"},{"lineNumber":1913,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e53d\u0027;"},{"lineNumber":1914,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1915,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars-stroke-h:before,"},{"lineNumber":1916,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars-stroke-right:before {"},{"lineNumber":1917,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f22b\u0027;"},{"lineNumber":1918,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1919,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-back-fist:before,"},{"lineNumber":1920,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-rock:before {"},{"lineNumber":1921,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f255\u0027;"},{"lineNumber":1922,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1923,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caret-square-up:before,"},{"lineNumber":1924,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-caret-up:before {"},{"lineNumber":1925,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f151\u0027;"},{"lineNumber":1926,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1927,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-showers-water:before {"},{"lineNumber":1928,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e4\u0027;"},{"lineNumber":1929,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1930,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bar-chart:before,"},{"lineNumber":1931,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chart-bar:before {"},{"lineNumber":1932,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f080\u0027;"},{"lineNumber":1933,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1934,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-bubbles:before,"},{"lineNumber":1935,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-wash:before {"},{"lineNumber":1936,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e05e\u0027;"},{"lineNumber":1937,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1938,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-less-than-equal:before {"},{"lineNumber":1939,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f537\u0027;"},{"lineNumber":1940,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1941,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-train:before {"},{"lineNumber":1942,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f238\u0027;"},{"lineNumber":1943,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1944,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eye-low-vision:before,"},{"lineNumber":1945,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-low-vision:before {"},{"lineNumber":1946,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2a8\u0027;"},{"lineNumber":1947,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1948,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-crow:before {"},{"lineNumber":1949,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f520\u0027;"},{"lineNumber":1950,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1951,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sailboat:before {"},{"lineNumber":1952,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e445\u0027;"},{"lineNumber":1953,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1954,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-window-restore:before {"},{"lineNumber":1955,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2d2\u0027;"},{"lineNumber":1956,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1957,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plus-square:before,"},{"lineNumber":1958,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-plus:before {"},{"lineNumber":1959,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0fe\u0027;"},{"lineNumber":1960,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1961,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-torii-gate:before {"},{"lineNumber":1962,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6a1\u0027;"},{"lineNumber":1963,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1964,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-frog:before {"},{"lineNumber":1965,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f52e\u0027;"},{"lineNumber":1966,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1967,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bucket:before {"},{"lineNumber":1968,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4cf\u0027;"},{"lineNumber":1969,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1970,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-image:before {"},{"lineNumber":1971,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f03e\u0027;"},{"lineNumber":1972,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1973,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-microphone:before {"},{"lineNumber":1974,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f130\u0027;"},{"lineNumber":1975,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1976,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cow:before {"},{"lineNumber":1977,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6c8\u0027;"},{"lineNumber":1978,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1979,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caret-up:before {"},{"lineNumber":1980,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0d8\u0027;"},{"lineNumber":1981,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1982,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-screwdriver:before {"},{"lineNumber":1983,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f54a\u0027;"},{"lineNumber":1984,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1985,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-folder-closed:before {"},{"lineNumber":1986,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e185\u0027;"},{"lineNumber":1987,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1988,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-tsunami:before {"},{"lineNumber":1989,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e515\u0027;"},{"lineNumber":1990,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1991,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-nfi:before {"},{"lineNumber":1992,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e576\u0027;"},{"lineNumber":1993,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1994,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-from-ground-water:before {"},{"lineNumber":1995,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4b5\u0027;"},{"lineNumber":1996,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":1997,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-glass-martini-alt:before,"},{"lineNumber":1998,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-martini-glass:before {"},{"lineNumber":1999,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f57b\u0027;"},{"lineNumber":2000,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2001,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-back:before,"},{"lineNumber":2002,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-backward:before,"},{"lineNumber":2003,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-left:before,"},{"lineNumber":2004,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-undo-alt:before {"},{"lineNumber":2005,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2ea\u0027;"},{"lineNumber":2006,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2007,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-columns:before,"},{"lineNumber":2008,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-table-columns:before {"},{"lineNumber":2009,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0db\u0027;"},{"lineNumber":2010,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2011,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lemon:before {"},{"lineNumber":2012,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f094\u0027;"},{"lineNumber":2013,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2014,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-head-side-mask:before {"},{"lineNumber":2015,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e063\u0027;"},{"lineNumber":2016,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2017,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-handshake:before {"},{"lineNumber":2018,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2b5\u0027;"},{"lineNumber":2019,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2020,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gem:before {"},{"lineNumber":2021,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3a5\u0027;"},{"lineNumber":2022,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2023,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dolly-box:before,"},{"lineNumber":2024,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dolly:before {"},{"lineNumber":2025,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f472\u0027;"},{"lineNumber":2026,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2027,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-smoking:before {"},{"lineNumber":2028,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f48d\u0027;"},{"lineNumber":2029,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2030,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-compress-arrows-alt:before,"},{"lineNumber":2031,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-minimize:before {"},{"lineNumber":2032,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f78c\u0027;"},{"lineNumber":2033,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2034,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-monument:before {"},{"lineNumber":2035,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5a6\u0027;"},{"lineNumber":2036,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2037,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-snowplow:before {"},{"lineNumber":2038,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7d2\u0027;"},{"lineNumber":2039,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2040,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angle-double-right:before,"},{"lineNumber":2041,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angles-right:before {"},{"lineNumber":2042,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f101\u0027;"},{"lineNumber":2043,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2044,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cannabis:before {"},{"lineNumber":2045,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f55f\u0027;"},{"lineNumber":2046,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2047,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-play:before,"},{"lineNumber":2048,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-play-circle:before {"},{"lineNumber":2049,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f144\u0027;"},{"lineNumber":2050,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2051,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tablets:before {"},{"lineNumber":2052,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f490\u0027;"},{"lineNumber":2053,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2054,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ethernet:before {"},{"lineNumber":2055,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f796\u0027;"},{"lineNumber":2056,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2057,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eur:before,"},{"lineNumber":2058,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-euro-sign:before,"},{"lineNumber":2059,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-euro:before {"},{"lineNumber":2060,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f153\u0027;"},{"lineNumber":2061,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2062,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chair:before {"},{"lineNumber":2063,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6c0\u0027;"},{"lineNumber":2064,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2065,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-check-circle:before,"},{"lineNumber":2066,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-check:before {"},{"lineNumber":2067,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f058\u0027;"},{"lineNumber":2068,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2069,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-stop:before,"},{"lineNumber":2070,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stop-circle:before {"},{"lineNumber":2071,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f28d\u0027;"},{"lineNumber":2072,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2073,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-compass-drafting:before,"},{"lineNumber":2074,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-drafting-compass:before {"},{"lineNumber":2075,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f568\u0027;"},{"lineNumber":2076,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2077,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plate-wheat:before {"},{"lineNumber":2078,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e55a\u0027;"},{"lineNumber":2079,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2080,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-icicles:before {"},{"lineNumber":2081,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7ad\u0027;"},{"lineNumber":2082,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2083,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-shelter:before {"},{"lineNumber":2084,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e54f\u0027;"},{"lineNumber":2085,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2086,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-neuter:before {"},{"lineNumber":2087,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f22c\u0027;"},{"lineNumber":2088,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2089,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-id-badge:before {"},{"lineNumber":2090,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2c1\u0027;"},{"lineNumber":2091,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2092,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-marker:before {"},{"lineNumber":2093,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5a1\u0027;"},{"lineNumber":2094,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2095,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-laugh-beam:before,"},{"lineNumber":2096,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laugh-beam:before {"},{"lineNumber":2097,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f59a\u0027;"},{"lineNumber":2098,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2099,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-helicopter-symbol:before {"},{"lineNumber":2100,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e502\u0027;"},{"lineNumber":2101,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2102,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-universal-access:before {"},{"lineNumber":2103,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f29a\u0027;"},{"lineNumber":2104,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2105,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chevron-circle-up:before,"},{"lineNumber":2106,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-chevron-up:before {"},{"lineNumber":2107,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f139\u0027;"},{"lineNumber":2108,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2109,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lari-sign:before {"},{"lineNumber":2110,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1c8\u0027;"},{"lineNumber":2111,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2112,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volcano:before {"},{"lineNumber":2113,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f770\u0027;"},{"lineNumber":2114,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2115,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-walking-dashed-line-arrow-right:before {"},{"lineNumber":2116,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e553\u0027;"},{"lineNumber":2117,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2118,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gbp:before,"},{"lineNumber":2119,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pound-sign:before,"},{"lineNumber":2120,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sterling-sign:before {"},{"lineNumber":2121,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f154\u0027;"},{"lineNumber":2122,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2123,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-viruses:before {"},{"lineNumber":2124,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e076\u0027;"},{"lineNumber":2125,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2126,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-person-confined:before {"},{"lineNumber":2127,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e577\u0027;"},{"lineNumber":2128,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2129,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-tie:before {"},{"lineNumber":2130,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f508\u0027;"},{"lineNumber":2131,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2132,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-long:before,"},{"lineNumber":2133,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-long-arrow-down:before {"},{"lineNumber":2134,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f175\u0027;"},{"lineNumber":2135,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2136,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tent-arrow-down-to-line:before {"},{"lineNumber":2137,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e57e\u0027;"},{"lineNumber":2138,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2139,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-certificate:before {"},{"lineNumber":2140,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a3\u0027;"},{"lineNumber":2141,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2142,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mail-reply-all:before,"},{"lineNumber":2143,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-reply-all:before {"},{"lineNumber":2144,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f122\u0027;"},{"lineNumber":2145,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2146,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-suitcase:before {"},{"lineNumber":2147,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0f2\u0027;"},{"lineNumber":2148,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2149,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-skating:before,"},{"lineNumber":2150,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-skating:before {"},{"lineNumber":2151,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7c5\u0027;"},{"lineNumber":2152,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2153,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-filter-circle-dollar:before,"},{"lineNumber":2154,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-funnel-dollar:before {"},{"lineNumber":2155,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f662\u0027;"},{"lineNumber":2156,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2157,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-camera-retro:before {"},{"lineNumber":2158,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f083\u0027;"},{"lineNumber":2159,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2160,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-circle-down:before,"},{"lineNumber":2161,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-arrow-down:before {"},{"lineNumber":2162,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ab\u0027;"},{"lineNumber":2163,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2164,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right-to-file:before,"},{"lineNumber":2165,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-import:before {"},{"lineNumber":2166,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f56f\u0027;"},{"lineNumber":2167,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2168,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-external-link-square:before,"},{"lineNumber":2169,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-arrow-up-right:before {"},{"lineNumber":2170,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f14c\u0027;"},{"lineNumber":2171,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2172,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-box-open:before {"},{"lineNumber":2173,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f49e\u0027;"},{"lineNumber":2174,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2175,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-scroll:before {"},{"lineNumber":2176,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f70e\u0027;"},{"lineNumber":2177,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2178,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spa:before {"},{"lineNumber":2179,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5bb\u0027;"},{"lineNumber":2180,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2181,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-location-pin-lock:before {"},{"lineNumber":2182,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e51f\u0027;"},{"lineNumber":2183,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2184,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pause:before {"},{"lineNumber":2185,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f04c\u0027;"},{"lineNumber":2186,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2187,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hill-avalanche:before {"},{"lineNumber":2188,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e507\u0027;"},{"lineNumber":2189,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2190,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-0:before,"},{"lineNumber":2191,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-empty:before,"},{"lineNumber":2192,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-0:before,"},{"lineNumber":2193,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-empty:before {"},{"lineNumber":2194,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2cb\u0027;"},{"lineNumber":2195,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2196,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bomb:before {"},{"lineNumber":2197,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1e2\u0027;"},{"lineNumber":2198,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2199,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-registered:before {"},{"lineNumber":2200,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f25d\u0027;"},{"lineNumber":2201,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2202,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-address-card:before,"},{"lineNumber":2203,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-contact-card:before,"},{"lineNumber":2204,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vcard:before {"},{"lineNumber":2205,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2bb\u0027;"},{"lineNumber":2206,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2207,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-balance-scale-right:before,"},{"lineNumber":2208,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-scale-unbalanced-flip:before {"},{"lineNumber":2209,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f516\u0027;"},{"lineNumber":2210,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2211,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-subscript:before {"},{"lineNumber":2212,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f12c\u0027;"},{"lineNumber":2213,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2214,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-diamond-turn-right:before,"},{"lineNumber":2215,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-directions:before {"},{"lineNumber":2216,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5eb\u0027;"},{"lineNumber":2217,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2218,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-burst:before {"},{"lineNumber":2219,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4dc\u0027;"},{"lineNumber":2220,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2221,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-laptop:before,"},{"lineNumber":2222,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laptop-house:before {"},{"lineNumber":2223,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e066\u0027;"},{"lineNumber":2224,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2225,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-tired:before,"},{"lineNumber":2226,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tired:before {"},{"lineNumber":2227,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c8\u0027;"},{"lineNumber":2228,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2229,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bills:before {"},{"lineNumber":2230,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1f3\u0027;"},{"lineNumber":2231,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2232,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-smog:before {"},{"lineNumber":2233,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f75f\u0027;"},{"lineNumber":2234,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2235,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-crutch:before {"},{"lineNumber":2236,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7f7\u0027;"},{"lineNumber":2237,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2238,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-arrow-up:before,"},{"lineNumber":2239,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-upload-alt:before,"},{"lineNumber":2240,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-upload:before {"},{"lineNumber":2241,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ee\u0027;"},{"lineNumber":2242,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2243,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-palette:before {"},{"lineNumber":2244,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f53f\u0027;"},{"lineNumber":2245,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2246,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-turn-right:before {"},{"lineNumber":2247,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c0\u0027;"},{"lineNumber":2248,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2249,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vest:before {"},{"lineNumber":2250,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e085\u0027;"},{"lineNumber":2251,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2252,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ferry:before {"},{"lineNumber":2253,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ea\u0027;"},{"lineNumber":2254,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2255,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-down-to-people:before {"},{"lineNumber":2256,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4b9\u0027;"},{"lineNumber":2257,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2258,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-seedling:before,"},{"lineNumber":2259,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sprout:before {"},{"lineNumber":2260,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4d8\u0027;"},{"lineNumber":2261,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2262,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-alt-h:before,"},{"lineNumber":2263,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-left-right:before {"},{"lineNumber":2264,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f337\u0027;"},{"lineNumber":2265,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2266,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-boxes-packing:before {"},{"lineNumber":2267,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c7\u0027;"},{"lineNumber":2268,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2269,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-circle-left:before,"},{"lineNumber":2270,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-arrow-left:before {"},{"lineNumber":2271,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a8\u0027;"},{"lineNumber":2272,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2273,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-group-arrows-rotate:before {"},{"lineNumber":2274,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f6\u0027;"},{"lineNumber":2275,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2276,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bowl-food:before {"},{"lineNumber":2277,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c6\u0027;"},{"lineNumber":2278,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2279,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-candy-cane:before {"},{"lineNumber":2280,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f786\u0027;"},{"lineNumber":2281,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2282,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-wide-short:before,"},{"lineNumber":2283,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-amount-asc:before,"},{"lineNumber":2284,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-amount-down:before {"},{"lineNumber":2285,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f160\u0027;"},{"lineNumber":2286,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2287,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-bolt:before,"},{"lineNumber":2288,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thunderstorm:before {"},{"lineNumber":2289,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f76c\u0027;"},{"lineNumber":2290,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2291,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-remove-format:before,"},{"lineNumber":2292,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-text-slash:before {"},{"lineNumber":2293,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f87d\u0027;"},{"lineNumber":2294,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2295,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-smile-wink:before,"},{"lineNumber":2296,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-smile-wink:before {"},{"lineNumber":2297,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4da\u0027;"},{"lineNumber":2298,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2299,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-word:before {"},{"lineNumber":2300,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c2\u0027;"},{"lineNumber":2301,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2302,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-powerpoint:before {"},{"lineNumber":2303,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c4\u0027;"},{"lineNumber":2304,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2305,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-h:before,"},{"lineNumber":2306,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-left-right:before {"},{"lineNumber":2307,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f07e\u0027;"},{"lineNumber":2308,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2309,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-lock:before {"},{"lineNumber":2310,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e510\u0027;"},{"lineNumber":2311,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2312,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-arrow-down:before,"},{"lineNumber":2313,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-download-alt:before,"},{"lineNumber":2314,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-download:before {"},{"lineNumber":2315,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ed\u0027;"},{"lineNumber":2316,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2317,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-children:before {"},{"lineNumber":2318,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e1\u0027;"},{"lineNumber":2319,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2320,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-blackboard:before,"},{"lineNumber":2321,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chalkboard:before {"},{"lineNumber":2322,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f51b\u0027;"},{"lineNumber":2323,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2324,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-alt-slash:before,"},{"lineNumber":2325,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-large-slash:before {"},{"lineNumber":2326,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4fa\u0027;"},{"lineNumber":2327,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2328,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-envelope-open:before {"},{"lineNumber":2329,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2b6\u0027;"},{"lineNumber":2330,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2331,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-handshake-alt-slash:before,"},{"lineNumber":2332,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-handshake-simple-slash:before {"},{"lineNumber":2333,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e05f\u0027;"},{"lineNumber":2334,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2335,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mattress-pillow:before {"},{"lineNumber":2336,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e525\u0027;"},{"lineNumber":2337,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2338,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-guarani-sign:before {"},{"lineNumber":2339,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e19a\u0027;"},{"lineNumber":2340,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2341,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-rotate:before,"},{"lineNumber":2342,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-refresh:before,"},{"lineNumber":2343,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sync:before {"},{"lineNumber":2344,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f021\u0027;"},{"lineNumber":2345,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2346,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fire-extinguisher:before {"},{"lineNumber":2347,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f134\u0027;"},{"lineNumber":2348,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2349,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cruzeiro-sign:before {"},{"lineNumber":2350,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e152\u0027;"},{"lineNumber":2351,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2352,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-greater-than-equal:before {"},{"lineNumber":2353,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f532\u0027;"},{"lineNumber":2354,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2355,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shield-alt:before,"},{"lineNumber":2356,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shield-halved:before {"},{"lineNumber":2357,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3ed\u0027;"},{"lineNumber":2358,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2359,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-atlas:before,"},{"lineNumber":2360,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-atlas:before {"},{"lineNumber":2361,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f558\u0027;"},{"lineNumber":2362,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2363,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-virus:before {"},{"lineNumber":2364,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e074\u0027;"},{"lineNumber":2365,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2366,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-envelope-circle-check:before {"},{"lineNumber":2367,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e8\u0027;"},{"lineNumber":2368,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2369,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-layer-group:before {"},{"lineNumber":2370,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5fd\u0027;"},{"lineNumber":2371,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2372,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-to-dot:before {"},{"lineNumber":2373,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4be\u0027;"},{"lineNumber":2374,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2375,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-archway:before {"},{"lineNumber":2376,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f557\u0027;"},{"lineNumber":2377,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2378,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-circle-check:before {"},{"lineNumber":2379,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4fd\u0027;"},{"lineNumber":2380,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2381,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-chimney-crack:before,"},{"lineNumber":2382,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-damage:before {"},{"lineNumber":2383,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6f1\u0027;"},{"lineNumber":2384,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2385,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-archive:before,"},{"lineNumber":2386,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-zipper:before {"},{"lineNumber":2387,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c6\u0027;"},{"lineNumber":2388,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2389,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square:before {"},{"lineNumber":2390,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c8\u0027;"},{"lineNumber":2391,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2392,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-glass-martini:before,"},{"lineNumber":2393,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-martini-glass-empty:before {"},{"lineNumber":2394,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f000\u0027;"},{"lineNumber":2395,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2396,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-couch:before {"},{"lineNumber":2397,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4b8\u0027;"},{"lineNumber":2398,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2399,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cedi-sign:before {"},{"lineNumber":2400,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0df\u0027;"},{"lineNumber":2401,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2402,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-italic:before {"},{"lineNumber":2403,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f033\u0027;"},{"lineNumber":2404,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2405,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-church:before {"},{"lineNumber":2406,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f51d\u0027;"},{"lineNumber":2407,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2408,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comments-dollar:before {"},{"lineNumber":2409,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f653\u0027;"},{"lineNumber":2410,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2411,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-democrat:before {"},{"lineNumber":2412,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f747\u0027;"},{"lineNumber":2413,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2414,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-z:before {"},{"lineNumber":2415,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\5a\u0027;"},{"lineNumber":2416,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2417,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-skiing:before,"},{"lineNumber":2418,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-skiing:before {"},{"lineNumber":2419,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7c9\u0027;"},{"lineNumber":2420,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2421,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-road-lock:before {"},{"lineNumber":2422,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e567\u0027;"},{"lineNumber":2423,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2424,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-a:before {"},{"lineNumber":2425,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\41\u0027;"},{"lineNumber":2426,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2427,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-arrow-down:before,"},{"lineNumber":2428,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-down:before {"},{"lineNumber":2429,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e03f\u0027;"},{"lineNumber":2430,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2431,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-feather-alt:before,"},{"lineNumber":2432,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-feather-pointed:before {"},{"lineNumber":2433,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f56b\u0027;"},{"lineNumber":2434,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2435,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-p:before {"},{"lineNumber":2436,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\50\u0027;"},{"lineNumber":2437,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2438,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-snowflake:before {"},{"lineNumber":2439,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2dc\u0027;"},{"lineNumber":2440,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2441,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-newspaper:before {"},{"lineNumber":2442,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1ea\u0027;"},{"lineNumber":2443,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2444,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ad:before,"},{"lineNumber":2445,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rectangle-ad:before {"},{"lineNumber":2446,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f641\u0027;"},{"lineNumber":2447,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2448,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-circle-right:before,"},{"lineNumber":2449,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-arrow-right:before {"},{"lineNumber":2450,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a9\u0027;"},{"lineNumber":2451,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2452,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-filter-circle-xmark:before {"},{"lineNumber":2453,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e17b\u0027;"},{"lineNumber":2454,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2455,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-locust:before {"},{"lineNumber":2456,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e520\u0027;"},{"lineNumber":2457,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2458,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort:before,"},{"lineNumber":2459,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-unsorted:before {"},{"lineNumber":2460,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0dc\u0027;"},{"lineNumber":2461,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2462,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list-1-2:before,"},{"lineNumber":2463,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list-numeric:before,"},{"lineNumber":2464,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list-ol:before {"},{"lineNumber":2465,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0cb\u0027;"},{"lineNumber":2466,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2467,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-dress-burst:before {"},{"lineNumber":2468,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e544\u0027;"},{"lineNumber":2469,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2470,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-check-alt:before,"},{"lineNumber":2471,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-check-dollar:before {"},{"lineNumber":2472,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f53d\u0027;"},{"lineNumber":2473,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2474,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vector-square:before {"},{"lineNumber":2475,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5cb\u0027;"},{"lineNumber":2476,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2477,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bread-slice:before {"},{"lineNumber":2478,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7ec\u0027;"},{"lineNumber":2479,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2480,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-language:before {"},{"lineNumber":2481,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1ab\u0027;"},{"lineNumber":2482,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2483,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-kiss-wink-heart:before,"},{"lineNumber":2484,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-kiss-wink-heart:before {"},{"lineNumber":2485,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f598\u0027;"},{"lineNumber":2486,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2487,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-filter:before {"},{"lineNumber":2488,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0b0\u0027;"},{"lineNumber":2489,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2490,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-question:before {"},{"lineNumber":2491,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\3f\u0027;"},{"lineNumber":2492,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2493,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-signature:before {"},{"lineNumber":2494,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f573\u0027;"},{"lineNumber":2495,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2496,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-alt:before,"},{"lineNumber":2497,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-up-down-left-right:before {"},{"lineNumber":2498,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0b2\u0027;"},{"lineNumber":2499,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2500,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-chimney-user:before {"},{"lineNumber":2501,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e065\u0027;"},{"lineNumber":2502,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2503,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-holding-heart:before {"},{"lineNumber":2504,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4be\u0027;"},{"lineNumber":2505,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2506,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-puzzle-piece:before {"},{"lineNumber":2507,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f12e\u0027;"},{"lineNumber":2508,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2509,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-check:before {"},{"lineNumber":2510,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f53c\u0027;"},{"lineNumber":2511,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2512,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-star-half-alt:before,"},{"lineNumber":2513,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-star-half-stroke:before {"},{"lineNumber":2514,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c0\u0027;"},{"lineNumber":2515,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2516,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-code:before {"},{"lineNumber":2517,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f121\u0027;"},{"lineNumber":2518,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2519,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-glass-whiskey:before,"},{"lineNumber":2520,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-whiskey-glass:before {"},{"lineNumber":2521,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7a0\u0027;"},{"lineNumber":2522,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2523,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-circle-exclamation:before {"},{"lineNumber":2524,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d3\u0027;"},{"lineNumber":2525,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2526,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magnifying-glass-chart:before {"},{"lineNumber":2527,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e522\u0027;"},{"lineNumber":2528,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2529,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-right-from-square:before,"},{"lineNumber":2530,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-external-link:before {"},{"lineNumber":2531,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f08e\u0027;"},{"lineNumber":2532,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2533,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cubes-stacked:before {"},{"lineNumber":2534,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e6\u0027;"},{"lineNumber":2535,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2536,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-krw:before,"},{"lineNumber":2537,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-won-sign:before,"},{"lineNumber":2538,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-won:before {"},{"lineNumber":2539,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f159\u0027;"},{"lineNumber":2540,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2541,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-virus-covid:before {"},{"lineNumber":2542,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4a8\u0027;"},{"lineNumber":2543,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2544,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-austral-sign:before {"},{"lineNumber":2545,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0a9\u0027;"},{"lineNumber":2546,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2547,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-f:before {"},{"lineNumber":2548,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\46\u0027;"},{"lineNumber":2549,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2550,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-leaf:before {"},{"lineNumber":2551,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f06c\u0027;"},{"lineNumber":2552,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2553,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-road:before {"},{"lineNumber":2554,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f018\u0027;"},{"lineNumber":2555,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2556,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cab:before,"},{"lineNumber":2557,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-taxi:before {"},{"lineNumber":2558,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1ba\u0027;"},{"lineNumber":2559,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2560,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-circle-plus:before {"},{"lineNumber":2561,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e541\u0027;"},{"lineNumber":2562,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2563,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chart-pie:before,"},{"lineNumber":2564,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pie-chart:before {"},{"lineNumber":2565,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f200\u0027;"},{"lineNumber":2566,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2567,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bolt-lightning:before {"},{"lineNumber":2568,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0b7\u0027;"},{"lineNumber":2569,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2570,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sack-xmark:before {"},{"lineNumber":2571,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e56a\u0027;"},{"lineNumber":2572,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2573,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-excel:before {"},{"lineNumber":2574,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c3\u0027;"},{"lineNumber":2575,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2576,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-contract:before {"},{"lineNumber":2577,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f56c\u0027;"},{"lineNumber":2578,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2579,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fish-fins:before {"},{"lineNumber":2580,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f2\u0027;"},{"lineNumber":2581,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2582,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-flag:before {"},{"lineNumber":2583,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d5\u0027;"},{"lineNumber":2584,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2585,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-beam:before,"},{"lineNumber":2586,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-beam:before {"},{"lineNumber":2587,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f582\u0027;"},{"lineNumber":2588,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2589,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-object-ungroup:before {"},{"lineNumber":2590,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f248\u0027;"},{"lineNumber":2591,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2592,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-poop:before {"},{"lineNumber":2593,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f619\u0027;"},{"lineNumber":2594,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2595,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-location-pin:before,"},{"lineNumber":2596,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map-marker:before {"},{"lineNumber":2597,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f041\u0027;"},{"lineNumber":2598,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2599,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-kaaba:before {"},{"lineNumber":2600,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f66b\u0027;"},{"lineNumber":2601,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2602,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-toilet-paper:before {"},{"lineNumber":2603,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f71e\u0027;"},{"lineNumber":2604,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2605,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hard-hat:before,"},{"lineNumber":2606,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hat-hard:before,"},{"lineNumber":2607,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-helmet-safety:before {"},{"lineNumber":2608,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f807\u0027;"},{"lineNumber":2609,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2610,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eject:before {"},{"lineNumber":2611,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f052\u0027;"},{"lineNumber":2612,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2613,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-alt-circle-right:before,"},{"lineNumber":2614,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-right:before {"},{"lineNumber":2615,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f35a\u0027;"},{"lineNumber":2616,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2617,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane-circle-check:before {"},{"lineNumber":2618,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e555\u0027;"},{"lineNumber":2619,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2620,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-rolling-eyes:before,"},{"lineNumber":2621,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-meh-rolling-eyes:before {"},{"lineNumber":2622,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5a5\u0027;"},{"lineNumber":2623,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2624,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-object-group:before {"},{"lineNumber":2625,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f247\u0027;"},{"lineNumber":2626,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2627,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chart-line:before,"},{"lineNumber":2628,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-line-chart:before {"},{"lineNumber":2629,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f201\u0027;"},{"lineNumber":2630,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2631,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mask-ventilator:before {"},{"lineNumber":2632,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e524\u0027;"},{"lineNumber":2633,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2634,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right:before {"},{"lineNumber":2635,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f061\u0027;"},{"lineNumber":2636,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2637,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map-signs:before,"},{"lineNumber":2638,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-signs-post:before {"},{"lineNumber":2639,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f277\u0027;"},{"lineNumber":2640,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2641,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cash-register:before {"},{"lineNumber":2642,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f788\u0027;"},{"lineNumber":2643,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2644,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-circle-question:before {"},{"lineNumber":2645,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e542\u0027;"},{"lineNumber":2646,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2647,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-h:before {"},{"lineNumber":2648,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\48\u0027;"},{"lineNumber":2649,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2650,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tarp:before {"},{"lineNumber":2651,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e57b\u0027;"},{"lineNumber":2652,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2653,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-screwdriver-wrench:before,"},{"lineNumber":2654,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tools:before {"},{"lineNumber":2655,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7d9\u0027;"},{"lineNumber":2656,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2657,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-to-eye:before {"},{"lineNumber":2658,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4bf\u0027;"},{"lineNumber":2659,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2660,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plug-circle-bolt:before {"},{"lineNumber":2661,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e55b\u0027;"},{"lineNumber":2662,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2663,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart:before {"},{"lineNumber":2664,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f004\u0027;"},{"lineNumber":2665,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2666,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars-and-venus:before {"},{"lineNumber":2667,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f224\u0027;"},{"lineNumber":2668,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2669,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-home-user:before,"},{"lineNumber":2670,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-user:before {"},{"lineNumber":2671,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1b0\u0027;"},{"lineNumber":2672,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2673,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dumpster-fire:before {"},{"lineNumber":2674,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f794\u0027;"},{"lineNumber":2675,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2676,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-crack:before {"},{"lineNumber":2677,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e3b1\u0027;"},{"lineNumber":2678,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2679,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cocktail:before,"},{"lineNumber":2680,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-martini-glass-citrus:before {"},{"lineNumber":2681,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f561\u0027;"},{"lineNumber":2682,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2683,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-surprise:before,"},{"lineNumber":2684,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-surprise:before {"},{"lineNumber":2685,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c2\u0027;"},{"lineNumber":2686,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2687,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bottle-water:before {"},{"lineNumber":2688,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c5\u0027;"},{"lineNumber":2689,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2690,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-pause:before,"},{"lineNumber":2691,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pause-circle:before {"},{"lineNumber":2692,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f28b\u0027;"},{"lineNumber":2693,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2694,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-toilet-paper-slash:before {"},{"lineNumber":2695,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e072\u0027;"},{"lineNumber":2696,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2697,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-apple-alt:before,"},{"lineNumber":2698,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-apple-whole:before {"},{"lineNumber":2699,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5d1\u0027;"},{"lineNumber":2700,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2701,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-kitchen-set:before {"},{"lineNumber":2702,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e51a\u0027;"},{"lineNumber":2703,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2704,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-r:before {"},{"lineNumber":2705,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\52\u0027;"},{"lineNumber":2706,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2707,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-1:before,"},{"lineNumber":2708,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-quarter:before,"},{"lineNumber":2709,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-1:before,"},{"lineNumber":2710,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-quarter:before {"},{"lineNumber":2711,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2ca\u0027;"},{"lineNumber":2712,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2713,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cube:before {"},{"lineNumber":2714,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1b2\u0027;"},{"lineNumber":2715,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2716,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bitcoin-sign:before {"},{"lineNumber":2717,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0b4\u0027;"},{"lineNumber":2718,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2719,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shield-dog:before {"},{"lineNumber":2720,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e573\u0027;"},{"lineNumber":2721,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2722,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-solar-panel:before {"},{"lineNumber":2723,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5ba\u0027;"},{"lineNumber":2724,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2725,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lock-open:before {"},{"lineNumber":2726,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3c1\u0027;"},{"lineNumber":2727,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2728,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-elevator:before {"},{"lineNumber":2729,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e16d\u0027;"},{"lineNumber":2730,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2731,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill-transfer:before {"},{"lineNumber":2732,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e528\u0027;"},{"lineNumber":2733,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2734,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill-trend-up:before {"},{"lineNumber":2735,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e529\u0027;"},{"lineNumber":2736,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2737,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-flood-water-circle-arrow-right:before {"},{"lineNumber":2738,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e50f\u0027;"},{"lineNumber":2739,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2740,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-poll-h:before,"},{"lineNumber":2741,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-poll-horizontal:before {"},{"lineNumber":2742,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f682\u0027;"},{"lineNumber":2743,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2744,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle:before {"},{"lineNumber":2745,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f111\u0027;"},{"lineNumber":2746,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2747,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-backward-fast:before,"},{"lineNumber":2748,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fast-backward:before {"},{"lineNumber":2749,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f049\u0027;"},{"lineNumber":2750,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2751,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-recycle:before {"},{"lineNumber":2752,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1b8\u0027;"},{"lineNumber":2753,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2754,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-astronaut:before {"},{"lineNumber":2755,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4fb\u0027;"},{"lineNumber":2756,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2757,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane-slash:before {"},{"lineNumber":2758,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e069\u0027;"},{"lineNumber":2759,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2760,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trademark:before {"},{"lineNumber":2761,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f25c\u0027;"},{"lineNumber":2762,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2763,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-basketball-ball:before,"},{"lineNumber":2764,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-basketball:before {"},{"lineNumber":2765,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f434\u0027;"},{"lineNumber":2766,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2767,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-satellite-dish:before {"},{"lineNumber":2768,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7c0\u0027;"},{"lineNumber":2769,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2770,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-alt-circle-up:before,"},{"lineNumber":2771,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-up:before {"},{"lineNumber":2772,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f35b\u0027;"},{"lineNumber":2773,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2774,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile-alt:before,"},{"lineNumber":2775,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile-screen-button:before {"},{"lineNumber":2776,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3cd\u0027;"},{"lineNumber":2777,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2778,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-high:before,"},{"lineNumber":2779,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-up:before {"},{"lineNumber":2780,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f028\u0027;"},{"lineNumber":2781,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2782,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users-rays:before {"},{"lineNumber":2783,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e593\u0027;"},{"lineNumber":2784,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2785,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wallet:before {"},{"lineNumber":2786,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f555\u0027;"},{"lineNumber":2787,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2788,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clipboard-check:before {"},{"lineNumber":2789,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f46c\u0027;"},{"lineNumber":2790,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2791,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-audio:before {"},{"lineNumber":2792,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c7\u0027;"},{"lineNumber":2793,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2794,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-burger:before,"},{"lineNumber":2795,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hamburger:before {"},{"lineNumber":2796,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f805\u0027;"},{"lineNumber":2797,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2798,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wrench:before {"},{"lineNumber":2799,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ad\u0027;"},{"lineNumber":2800,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2801,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bugs:before {"},{"lineNumber":2802,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d0\u0027;"},{"lineNumber":2803,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2804,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rupee-sign:before,"},{"lineNumber":2805,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rupee:before {"},{"lineNumber":2806,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f156\u0027;"},{"lineNumber":2807,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2808,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-image:before {"},{"lineNumber":2809,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c5\u0027;"},{"lineNumber":2810,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2811,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-question:before,"},{"lineNumber":2812,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-question-circle:before {"},{"lineNumber":2813,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f059\u0027;"},{"lineNumber":2814,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2815,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane-departure:before {"},{"lineNumber":2816,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5b0\u0027;"},{"lineNumber":2817,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2818,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-handshake-slash:before {"},{"lineNumber":2819,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e060\u0027;"},{"lineNumber":2820,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2821,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-bookmark:before {"},{"lineNumber":2822,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0bb\u0027;"},{"lineNumber":2823,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2824,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-code-branch:before {"},{"lineNumber":2825,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f126\u0027;"},{"lineNumber":2826,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2827,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hat-cowboy:before {"},{"lineNumber":2828,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f8c0\u0027;"},{"lineNumber":2829,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2830,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bridge:before {"},{"lineNumber":2831,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c8\u0027;"},{"lineNumber":2832,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2833,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-phone-alt:before,"},{"lineNumber":2834,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-phone-flip:before {"},{"lineNumber":2835,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f879\u0027;"},{"lineNumber":2836,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2837,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-front:before {"},{"lineNumber":2838,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e2b7\u0027;"},{"lineNumber":2839,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2840,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cat:before {"},{"lineNumber":2841,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6be\u0027;"},{"lineNumber":2842,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2843,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-anchor-circle-exclamation:before {"},{"lineNumber":2844,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ab\u0027;"},{"lineNumber":2845,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2846,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-field:before {"},{"lineNumber":2847,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e58d\u0027;"},{"lineNumber":2848,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2849,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-route:before {"},{"lineNumber":2850,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4d7\u0027;"},{"lineNumber":2851,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2852,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clipboard-question:before {"},{"lineNumber":2853,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e3\u0027;"},{"lineNumber":2854,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2855,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-panorama:before {"},{"lineNumber":2856,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e209\u0027;"},{"lineNumber":2857,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2858,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comment-medical:before {"},{"lineNumber":2859,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7f5\u0027;"},{"lineNumber":2860,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2861,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-teeth-open:before {"},{"lineNumber":2862,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f62f\u0027;"},{"lineNumber":2863,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2864,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-circle-minus:before {"},{"lineNumber":2865,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ed\u0027;"},{"lineNumber":2866,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2867,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tags:before {"},{"lineNumber":2868,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f02c\u0027;"},{"lineNumber":2869,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2870,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wine-glass:before {"},{"lineNumber":2871,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4e3\u0027;"},{"lineNumber":2872,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2873,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fast-forward:before,"},{"lineNumber":2874,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-forward-fast:before {"},{"lineNumber":2875,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f050\u0027;"},{"lineNumber":2876,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2877,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-meh-blank:before,"},{"lineNumber":2878,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-meh-blank:before {"},{"lineNumber":2879,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5a4\u0027;"},{"lineNumber":2880,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2881,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-parking:before,"},{"lineNumber":2882,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-parking:before {"},{"lineNumber":2883,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f540\u0027;"},{"lineNumber":2884,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2885,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-signal:before {"},{"lineNumber":2886,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e012\u0027;"},{"lineNumber":2887,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2888,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bars-progress:before,"},{"lineNumber":2889,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tasks-alt:before {"},{"lineNumber":2890,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f828\u0027;"},{"lineNumber":2891,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2892,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-faucet-drip:before {"},{"lineNumber":2893,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e006\u0027;"},{"lineNumber":2894,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2895,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cart-flatbed:before,"},{"lineNumber":2896,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dolly-flatbed:before {"},{"lineNumber":2897,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f474\u0027;"},{"lineNumber":2898,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2899,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ban-smoking:before,"},{"lineNumber":2900,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-smoking-ban:before {"},{"lineNumber":2901,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f54d\u0027;"},{"lineNumber":2902,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2903,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-terminal:before {"},{"lineNumber":2904,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f120\u0027;"},{"lineNumber":2905,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2906,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile-button:before {"},{"lineNumber":2907,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f10b\u0027;"},{"lineNumber":2908,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2909,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-medical-flag:before {"},{"lineNumber":2910,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e514\u0027;"},{"lineNumber":2911,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2912,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-basket-shopping:before,"},{"lineNumber":2913,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shopping-basket:before {"},{"lineNumber":2914,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f291\u0027;"},{"lineNumber":2915,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2916,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tape:before {"},{"lineNumber":2917,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4db\u0027;"},{"lineNumber":2918,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2919,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bus-alt:before,"},{"lineNumber":2920,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bus-simple:before {"},{"lineNumber":2921,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f55e\u0027;"},{"lineNumber":2922,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2923,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eye:before {"},{"lineNumber":2924,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f06e\u0027;"},{"lineNumber":2925,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2926,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-sad-cry:before,"},{"lineNumber":2927,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sad-cry:before {"},{"lineNumber":2928,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5b3\u0027;"},{"lineNumber":2929,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2930,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-audio-description:before {"},{"lineNumber":2931,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f29e\u0027;"},{"lineNumber":2932,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2933,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-military-to-person:before {"},{"lineNumber":2934,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e54c\u0027;"},{"lineNumber":2935,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2936,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-shield:before {"},{"lineNumber":2937,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f0\u0027;"},{"lineNumber":2938,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2939,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-slash:before {"},{"lineNumber":2940,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f506\u0027;"},{"lineNumber":2941,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2942,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pen:before {"},{"lineNumber":2943,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f304\u0027;"},{"lineNumber":2944,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2945,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tower-observation:before {"},{"lineNumber":2946,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e586\u0027;"},{"lineNumber":2947,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2948,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-code:before {"},{"lineNumber":2949,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c9\u0027;"},{"lineNumber":2950,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2951,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-signal-5:before,"},{"lineNumber":2952,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-signal-perfect:before,"},{"lineNumber":2953,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-signal:before {"},{"lineNumber":2954,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f012\u0027;"},{"lineNumber":2955,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2956,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bus:before {"},{"lineNumber":2957,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f207\u0027;"},{"lineNumber":2958,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2959,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-circle-xmark:before {"},{"lineNumber":2960,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e501\u0027;"},{"lineNumber":2961,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2962,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-home-lg:before,"},{"lineNumber":2963,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-chimney:before {"},{"lineNumber":2964,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e3af\u0027;"},{"lineNumber":2965,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2966,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-window-maximize:before {"},{"lineNumber":2967,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2d0\u0027;"},{"lineNumber":2968,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2969,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-frown:before,"},{"lineNumber":2970,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-frown:before {"},{"lineNumber":2971,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f119\u0027;"},{"lineNumber":2972,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2973,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-prescription:before {"},{"lineNumber":2974,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5b1\u0027;"},{"lineNumber":2975,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2976,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shop:before,"},{"lineNumber":2977,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-store-alt:before {"},{"lineNumber":2978,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f54f\u0027;"},{"lineNumber":2979,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2980,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-floppy-disk:before,"},{"lineNumber":2981,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-save:before {"},{"lineNumber":2982,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c7\u0027;"},{"lineNumber":2983,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2984,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vihara:before {"},{"lineNumber":2985,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6a7\u0027;"},{"lineNumber":2986,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2987,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-balance-scale-left:before,"},{"lineNumber":2988,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-scale-unbalanced:before {"},{"lineNumber":2989,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f515\u0027;"},{"lineNumber":2990,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2991,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-asc:before,"},{"lineNumber":2992,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-up:before {"},{"lineNumber":2993,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0de\u0027;"},{"lineNumber":2994,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2995,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comment-dots:before,"},{"lineNumber":2996,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-commenting:before {"},{"lineNumber":2997,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4ad\u0027;"},{"lineNumber":2998,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":2999,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plant-wilt:before {"},{"lineNumber":3000,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e5aa\u0027;"},{"lineNumber":3001,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3002,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-diamond:before {"},{"lineNumber":3003,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f219\u0027;"},{"lineNumber":3004,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3005,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-squint:before,"},{"lineNumber":3006,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-squint:before {"},{"lineNumber":3007,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f585\u0027;"},{"lineNumber":3008,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3009,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-holding-dollar:before,"},{"lineNumber":3010,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-holding-usd:before {"},{"lineNumber":3011,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4c0\u0027;"},{"lineNumber":3012,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3013,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bacterium:before {"},{"lineNumber":3014,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e05a\u0027;"},{"lineNumber":3015,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3016,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-pointer:before {"},{"lineNumber":3017,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f25a\u0027;"},{"lineNumber":3018,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3019,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-drum-steelpan:before {"},{"lineNumber":3020,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f56a\u0027;"},{"lineNumber":3021,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3022,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-scissors:before {"},{"lineNumber":3023,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f257\u0027;"},{"lineNumber":3024,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3025,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-praying:before,"},{"lineNumber":3026,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-praying-hands:before {"},{"lineNumber":3027,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f684\u0027;"},{"lineNumber":3028,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3029,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right-rotate:before,"},{"lineNumber":3030,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-rotate-forward:before,"},{"lineNumber":3031,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-rotate-right:before,"},{"lineNumber":3032,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-redo:before {"},{"lineNumber":3033,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f01e\u0027;"},{"lineNumber":3034,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3035,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-biohazard:before {"},{"lineNumber":3036,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f780\u0027;"},{"lineNumber":3037,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3038,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-location-crosshairs:before,"},{"lineNumber":3039,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-location:before {"},{"lineNumber":3040,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f601\u0027;"},{"lineNumber":3041,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3042,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars-double:before {"},{"lineNumber":3043,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f227\u0027;"},{"lineNumber":3044,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3045,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-child-dress:before {"},{"lineNumber":3046,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e59c\u0027;"},{"lineNumber":3047,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3048,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users-between-lines:before {"},{"lineNumber":3049,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e591\u0027;"},{"lineNumber":3050,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3051,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lungs-virus:before {"},{"lineNumber":3052,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e067\u0027;"},{"lineNumber":3053,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3054,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-tears:before,"},{"lineNumber":3055,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-tears:before {"},{"lineNumber":3056,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f588\u0027;"},{"lineNumber":3057,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3058,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-phone:before {"},{"lineNumber":3059,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f095\u0027;"},{"lineNumber":3060,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3061,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-times:before,"},{"lineNumber":3062,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-xmark:before {"},{"lineNumber":3063,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f273\u0027;"},{"lineNumber":3064,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3065,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-child-reaching:before {"},{"lineNumber":3066,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e59d\u0027;"},{"lineNumber":3067,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3068,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-head-side-virus:before {"},{"lineNumber":3069,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e064\u0027;"},{"lineNumber":3070,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3071,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-cog:before,"},{"lineNumber":3072,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-gear:before {"},{"lineNumber":3073,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4fe\u0027;"},{"lineNumber":3074,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3075,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-1-9:before,"},{"lineNumber":3076,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-numeric-up:before {"},{"lineNumber":3077,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f163\u0027;"},{"lineNumber":3078,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3079,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-door-closed:before {"},{"lineNumber":3080,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f52a\u0027;"},{"lineNumber":3081,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3082,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shield-virus:before {"},{"lineNumber":3083,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e06c\u0027;"},{"lineNumber":3084,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3085,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice-six:before {"},{"lineNumber":3086,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f526\u0027;"},{"lineNumber":3087,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3088,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mosquito-net:before {"},{"lineNumber":3089,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e52c\u0027;"},{"lineNumber":3090,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3091,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bridge-water:before {"},{"lineNumber":3092,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ce\u0027;"},{"lineNumber":3093,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3094,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-booth:before {"},{"lineNumber":3095,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f756\u0027;"},{"lineNumber":3096,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3097,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-text-width:before {"},{"lineNumber":3098,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f035\u0027;"},{"lineNumber":3099,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3100,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hat-wizard:before {"},{"lineNumber":3101,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6e8\u0027;"},{"lineNumber":3102,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3103,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pen-fancy:before {"},{"lineNumber":3104,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5ac\u0027;"},{"lineNumber":3105,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3106,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-digging:before,"},{"lineNumber":3107,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-digging:before {"},{"lineNumber":3108,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f85e\u0027;"},{"lineNumber":3109,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3110,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trash:before {"},{"lineNumber":3111,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1f8\u0027;"},{"lineNumber":3112,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3113,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gauge-simple-med:before,"},{"lineNumber":3114,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gauge-simple:before,"},{"lineNumber":3115,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tachometer-average:before {"},{"lineNumber":3116,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f629\u0027;"},{"lineNumber":3117,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3118,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-medical:before {"},{"lineNumber":3119,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7e6\u0027;"},{"lineNumber":3120,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3121,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-poo:before {"},{"lineNumber":3122,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2fe\u0027;"},{"lineNumber":3123,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3124,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-quote-right-alt:before,"},{"lineNumber":3125,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-quote-right:before {"},{"lineNumber":3126,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f10e\u0027;"},{"lineNumber":3127,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3128,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shirt:before,"},{"lineNumber":3129,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-t-shirt:before,"},{"lineNumber":3130,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tshirt:before {"},{"lineNumber":3131,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f553\u0027;"},{"lineNumber":3132,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3133,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cubes:before {"},{"lineNumber":3134,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1b3\u0027;"},{"lineNumber":3135,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3136,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-divide:before {"},{"lineNumber":3137,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f529\u0027;"},{"lineNumber":3138,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3139,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tenge-sign:before,"},{"lineNumber":3140,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tenge:before {"},{"lineNumber":3141,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7d7\u0027;"},{"lineNumber":3142,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3143,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-headphones:before {"},{"lineNumber":3144,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f025\u0027;"},{"lineNumber":3145,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3146,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-holding:before {"},{"lineNumber":3147,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4c2\u0027;"},{"lineNumber":3148,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3149,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-clapping:before {"},{"lineNumber":3150,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1a8\u0027;"},{"lineNumber":3151,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3152,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-republican:before {"},{"lineNumber":3153,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f75e\u0027;"},{"lineNumber":3154,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3155,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-left:before {"},{"lineNumber":3156,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f060\u0027;"},{"lineNumber":3157,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3158,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-circle-xmark:before {"},{"lineNumber":3159,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e543\u0027;"},{"lineNumber":3160,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3161,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ruler:before {"},{"lineNumber":3162,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f545\u0027;"},{"lineNumber":3163,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3164,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-align-left:before {"},{"lineNumber":3165,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f036\u0027;"},{"lineNumber":3166,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3167,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice-d6:before {"},{"lineNumber":3168,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6d1\u0027;"},{"lineNumber":3169,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3170,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-restroom:before {"},{"lineNumber":3171,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7bd\u0027;"},{"lineNumber":3172,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3173,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-j:before {"},{"lineNumber":3174,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\4a\u0027;"},{"lineNumber":3175,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3176,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users-viewfinder:before {"},{"lineNumber":3177,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e595\u0027;"},{"lineNumber":3178,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3179,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-video:before {"},{"lineNumber":3180,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c8\u0027;"},{"lineNumber":3181,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3182,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-external-link-alt:before,"},{"lineNumber":3183,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-up-right-from-square:before {"},{"lineNumber":3184,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f35d\u0027;"},{"lineNumber":3185,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3186,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-table-cells:before,"},{"lineNumber":3187,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-th:before {"},{"lineNumber":3188,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f00a\u0027;"},{"lineNumber":3189,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3190,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-pdf:before {"},{"lineNumber":3191,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c1\u0027;"},{"lineNumber":3192,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3193,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bible:before,"},{"lineNumber":3194,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-bible:before {"},{"lineNumber":3195,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f647\u0027;"},{"lineNumber":3196,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3197,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-o:before {"},{"lineNumber":3198,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\4f\u0027;"},{"lineNumber":3199,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3200,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-medkit:before,"},{"lineNumber":3201,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-suitcase-medical:before {"},{"lineNumber":3202,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0fa\u0027;"},{"lineNumber":3203,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3204,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-secret:before {"},{"lineNumber":3205,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f21b\u0027;"},{"lineNumber":3206,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3207,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-otter:before {"},{"lineNumber":3208,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f700\u0027;"},{"lineNumber":3209,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3210,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-female:before,"},{"lineNumber":3211,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-dress:before {"},{"lineNumber":3212,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f182\u0027;"},{"lineNumber":3213,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3214,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comment-dollar:before {"},{"lineNumber":3215,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f651\u0027;"},{"lineNumber":3216,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3217,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-briefcase-clock:before,"},{"lineNumber":3218,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-business-time:before {"},{"lineNumber":3219,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f64a\u0027;"},{"lineNumber":3220,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3221,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-table-cells-large:before,"},{"lineNumber":3222,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-th-large:before {"},{"lineNumber":3223,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f009\u0027;"},{"lineNumber":3224,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3225,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-tanakh:before,"},{"lineNumber":3226,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tanakh:before {"},{"lineNumber":3227,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f827\u0027;"},{"lineNumber":3228,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3229,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-phone-volume:before,"},{"lineNumber":3230,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-control-phone:before {"},{"lineNumber":3231,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2a0\u0027;"},{"lineNumber":3232,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3233,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hat-cowboy-side:before {"},{"lineNumber":3234,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f8c1\u0027;"},{"lineNumber":3235,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3236,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clipboard-user:before {"},{"lineNumber":3237,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7f3\u0027;"},{"lineNumber":3238,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3239,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-child:before {"},{"lineNumber":3240,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1ae\u0027;"},{"lineNumber":3241,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3242,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lira-sign:before {"},{"lineNumber":3243,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f195\u0027;"},{"lineNumber":3244,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3245,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-satellite:before {"},{"lineNumber":3246,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7bf\u0027;"},{"lineNumber":3247,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3248,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane-lock:before {"},{"lineNumber":3249,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e558\u0027;"},{"lineNumber":3250,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3251,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tag:before {"},{"lineNumber":3252,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f02b\u0027;"},{"lineNumber":3253,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3254,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comment:before {"},{"lineNumber":3255,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f075\u0027;"},{"lineNumber":3256,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3257,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-birthday-cake:before,"},{"lineNumber":3258,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cake-candles:before,"},{"lineNumber":3259,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cake:before {"},{"lineNumber":3260,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1fd\u0027;"},{"lineNumber":3261,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3262,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-envelope:before {"},{"lineNumber":3263,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0e0\u0027;"},{"lineNumber":3264,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3265,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angle-double-up:before,"},{"lineNumber":3266,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angles-up:before {"},{"lineNumber":3267,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f102\u0027;"},{"lineNumber":3268,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3269,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-paperclip:before {"},{"lineNumber":3270,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c6\u0027;"},{"lineNumber":3271,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3272,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right-to-city:before {"},{"lineNumber":3273,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4b3\u0027;"},{"lineNumber":3274,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3275,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ribbon:before {"},{"lineNumber":3276,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4d6\u0027;"},{"lineNumber":3277,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3278,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lungs:before {"},{"lineNumber":3279,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f604\u0027;"},{"lineNumber":3280,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3281,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-9-1:before,"},{"lineNumber":3282,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-numeric-up-alt:before {"},{"lineNumber":3283,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f887\u0027;"},{"lineNumber":3284,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3285,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-litecoin-sign:before {"},{"lineNumber":3286,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1d3\u0027;"},{"lineNumber":3287,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3288,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-border-none:before {"},{"lineNumber":3289,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f850\u0027;"},{"lineNumber":3290,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3291,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-nodes:before {"},{"lineNumber":3292,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e2\u0027;"},{"lineNumber":3293,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3294,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-parachute-box:before {"},{"lineNumber":3295,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4cd\u0027;"},{"lineNumber":3296,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3297,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-indent:before {"},{"lineNumber":3298,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f03c\u0027;"},{"lineNumber":3299,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3300,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-field-un:before {"},{"lineNumber":3301,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e58e\u0027;"},{"lineNumber":3302,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3303,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hourglass-empty:before,"},{"lineNumber":3304,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hourglass:before {"},{"lineNumber":3305,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f254\u0027;"},{"lineNumber":3306,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3307,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mountain:before {"},{"lineNumber":3308,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6fc\u0027;"},{"lineNumber":3309,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3310,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-doctor:before,"},{"lineNumber":3311,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-md:before {"},{"lineNumber":3312,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0f0\u0027;"},{"lineNumber":3313,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3314,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-info:before,"},{"lineNumber":3315,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-info-circle:before {"},{"lineNumber":3316,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f05a\u0027;"},{"lineNumber":3317,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3318,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-meatball:before {"},{"lineNumber":3319,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f73b\u0027;"},{"lineNumber":3320,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3321,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-camera-alt:before,"},{"lineNumber":3322,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-camera:before {"},{"lineNumber":3323,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f030\u0027;"},{"lineNumber":3324,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3325,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-virus:before {"},{"lineNumber":3326,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e578\u0027;"},{"lineNumber":3327,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3328,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-meteor:before {"},{"lineNumber":3329,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f753\u0027;"},{"lineNumber":3330,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3331,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car-on:before {"},{"lineNumber":3332,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4dd\u0027;"},{"lineNumber":3333,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3334,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sleigh:before {"},{"lineNumber":3335,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7cc\u0027;"},{"lineNumber":3336,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3337,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-1-9:before,"},{"lineNumber":3338,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-numeric-asc:before,"},{"lineNumber":3339,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-numeric-down:before {"},{"lineNumber":3340,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f162\u0027;"},{"lineNumber":3341,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3342,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-holding-droplet:before,"},{"lineNumber":3343,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-holding-water:before {"},{"lineNumber":3344,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4c1\u0027;"},{"lineNumber":3345,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3346,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-water:before {"},{"lineNumber":3347,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f773\u0027;"},{"lineNumber":3348,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3349,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-check:before {"},{"lineNumber":3350,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f274\u0027;"},{"lineNumber":3351,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3352,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-braille:before {"},{"lineNumber":3353,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2a1\u0027;"},{"lineNumber":3354,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3355,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-prescription-bottle-alt:before,"},{"lineNumber":3356,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-prescription-bottle-medical:before {"},{"lineNumber":3357,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f486\u0027;"},{"lineNumber":3358,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3359,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-landmark:before {"},{"lineNumber":3360,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f66f\u0027;"},{"lineNumber":3361,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3362,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck:before {"},{"lineNumber":3363,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0d1\u0027;"},{"lineNumber":3364,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3365,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-crosshairs:before {"},{"lineNumber":3366,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f05b\u0027;"},{"lineNumber":3367,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3368,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-cane:before {"},{"lineNumber":3369,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e53c\u0027;"},{"lineNumber":3370,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3371,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tent:before {"},{"lineNumber":3372,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e57d\u0027;"},{"lineNumber":3373,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3374,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vest-patches:before {"},{"lineNumber":3375,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e086\u0027;"},{"lineNumber":3376,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3377,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-check-double:before {"},{"lineNumber":3378,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f560\u0027;"},{"lineNumber":3379,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3380,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-a-z:before,"},{"lineNumber":3381,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-alpha-asc:before,"},{"lineNumber":3382,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-alpha-down:before {"},{"lineNumber":3383,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f15d\u0027;"},{"lineNumber":3384,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3385,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill-wheat:before {"},{"lineNumber":3386,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e52a\u0027;"},{"lineNumber":3387,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3388,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cookie:before {"},{"lineNumber":3389,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f563\u0027;"},{"lineNumber":3390,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3391,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-left-rotate:before,"},{"lineNumber":3392,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-rotate-back:before,"},{"lineNumber":3393,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-rotate-backward:before,"},{"lineNumber":3394,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-rotate-left:before,"},{"lineNumber":3395,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-undo:before {"},{"lineNumber":3396,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0e2\u0027;"},{"lineNumber":3397,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3398,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hard-drive:before,"},{"lineNumber":3399,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hdd:before {"},{"lineNumber":3400,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a0\u0027;"},{"lineNumber":3401,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3402,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-squint-tears:before,"},{"lineNumber":3403,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-squint-tears:before {"},{"lineNumber":3404,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f586\u0027;"},{"lineNumber":3405,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3406,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dumbbell:before {"},{"lineNumber":3407,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f44b\u0027;"},{"lineNumber":3408,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3409,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list-alt:before,"},{"lineNumber":3410,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rectangle-list:before {"},{"lineNumber":3411,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f022\u0027;"},{"lineNumber":3412,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3413,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tarp-droplet:before {"},{"lineNumber":3414,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e57c\u0027;"},{"lineNumber":3415,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3416,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-medical-circle-check:before {"},{"lineNumber":3417,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e511\u0027;"},{"lineNumber":3418,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3419,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-skiing-nordic:before,"},{"lineNumber":3420,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-skiing-nordic:before {"},{"lineNumber":3421,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7ca\u0027;"},{"lineNumber":3422,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3423,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-plus:before {"},{"lineNumber":3424,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f271\u0027;"},{"lineNumber":3425,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3426,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane-arrival:before {"},{"lineNumber":3427,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5af\u0027;"},{"lineNumber":3428,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3429,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-alt-circle-left:before,"},{"lineNumber":3430,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-left:before {"},{"lineNumber":3431,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f359\u0027;"},{"lineNumber":3432,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3433,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-subway:before,"},{"lineNumber":3434,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-train-subway:before {"},{"lineNumber":3435,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f239\u0027;"},{"lineNumber":3436,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3437,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chart-gantt:before {"},{"lineNumber":3438,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0e4\u0027;"},{"lineNumber":3439,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3440,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-indian-rupee-sign:before,"},{"lineNumber":3441,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-indian-rupee:before,"},{"lineNumber":3442,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-inr:before {"},{"lineNumber":3443,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1bc\u0027;"},{"lineNumber":3444,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3445,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-crop-alt:before,"},{"lineNumber":3446,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-crop-simple:before {"},{"lineNumber":3447,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f565\u0027;"},{"lineNumber":3448,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3449,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill-1:before,"},{"lineNumber":3450,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill-alt:before {"},{"lineNumber":3451,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3d1\u0027;"},{"lineNumber":3452,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3453,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-left-long:before,"},{"lineNumber":3454,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-long-arrow-alt-left:before {"},{"lineNumber":3455,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f30a\u0027;"},{"lineNumber":3456,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3457,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dna:before {"},{"lineNumber":3458,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f471\u0027;"},{"lineNumber":3459,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3460,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-virus-slash:before {"},{"lineNumber":3461,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e075\u0027;"},{"lineNumber":3462,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3463,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-minus:before,"},{"lineNumber":3464,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-subtract:before {"},{"lineNumber":3465,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f068\u0027;"},{"lineNumber":3466,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3467,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chess:before {"},{"lineNumber":3468,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f439\u0027;"},{"lineNumber":3469,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3470,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-left-long:before,"},{"lineNumber":3471,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-long-arrow-left:before {"},{"lineNumber":3472,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f177\u0027;"},{"lineNumber":3473,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3474,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plug-circle-check:before {"},{"lineNumber":3475,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e55c\u0027;"},{"lineNumber":3476,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3477,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-street-view:before {"},{"lineNumber":3478,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f21d\u0027;"},{"lineNumber":3479,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3480,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-franc-sign:before {"},{"lineNumber":3481,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e18f\u0027;"},{"lineNumber":3482,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3483,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-off:before {"},{"lineNumber":3484,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f026\u0027;"},{"lineNumber":3485,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3486,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-american-sign-language-interpreting:before,"},{"lineNumber":3487,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-asl-interpreting:before,"},{"lineNumber":3488,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-american-sign-language-interpreting:before,"},{"lineNumber":3489,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-asl-interpreting:before {"},{"lineNumber":3490,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2a3\u0027;"},{"lineNumber":3491,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3492,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cog:before,"},{"lineNumber":3493,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gear:before {"},{"lineNumber":3494,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f013\u0027;"},{"lineNumber":3495,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3496,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-droplet-slash:before,"},{"lineNumber":3497,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tint-slash:before {"},{"lineNumber":3498,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c7\u0027;"},{"lineNumber":3499,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3500,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mosque:before {"},{"lineNumber":3501,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f678\u0027;"},{"lineNumber":3502,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3503,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mosquito:before {"},{"lineNumber":3504,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e52b\u0027;"},{"lineNumber":3505,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3506,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-star-of-david:before {"},{"lineNumber":3507,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f69a\u0027;"},{"lineNumber":3508,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3509,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-military-rifle:before {"},{"lineNumber":3510,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e54b\u0027;"},{"lineNumber":3511,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3512,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cart-shopping:before,"},{"lineNumber":3513,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shopping-cart:before {"},{"lineNumber":3514,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f07a\u0027;"},{"lineNumber":3515,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3516,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vials:before {"},{"lineNumber":3517,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f493\u0027;"},{"lineNumber":3518,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3519,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plug-circle-plus:before {"},{"lineNumber":3520,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e55f\u0027;"},{"lineNumber":3521,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3522,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-place-of-worship:before {"},{"lineNumber":3523,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f67f\u0027;"},{"lineNumber":3524,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3525,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grip-vertical:before {"},{"lineNumber":3526,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f58e\u0027;"},{"lineNumber":3527,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3528,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-turn-up:before,"},{"lineNumber":3529,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-level-up:before {"},{"lineNumber":3530,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f148\u0027;"},{"lineNumber":3531,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3532,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-u:before {"},{"lineNumber":3533,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\55\u0027;"},{"lineNumber":3534,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3535,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-root-alt:before,"},{"lineNumber":3536,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-root-variable:before {"},{"lineNumber":3537,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f698\u0027;"},{"lineNumber":3538,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3539,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clock-four:before,"},{"lineNumber":3540,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clock:before {"},{"lineNumber":3541,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f017\u0027;"},{"lineNumber":3542,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3543,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-backward-step:before,"},{"lineNumber":3544,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-step-backward:before {"},{"lineNumber":3545,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f048\u0027;"},{"lineNumber":3546,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3547,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pallet:before {"},{"lineNumber":3548,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f482\u0027;"},{"lineNumber":3549,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3550,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-faucet:before {"},{"lineNumber":3551,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e005\u0027;"},{"lineNumber":3552,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3553,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-baseball-bat-ball:before {"},{"lineNumber":3554,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f432\u0027;"},{"lineNumber":3555,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3556,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-s:before {"},{"lineNumber":3557,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\53\u0027;"},{"lineNumber":3558,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3559,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-timeline:before {"},{"lineNumber":3560,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e29c\u0027;"},{"lineNumber":3561,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3562,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-keyboard:before {"},{"lineNumber":3563,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f11c\u0027;"},{"lineNumber":3564,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3565,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caret-down:before {"},{"lineNumber":3566,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0d7\u0027;"},{"lineNumber":3567,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3568,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clinic-medical:before,"},{"lineNumber":3569,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-chimney-medical:before {"},{"lineNumber":3570,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7f2\u0027;"},{"lineNumber":3571,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3572,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-3:before,"},{"lineNumber":3573,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-three-quarters:before,"},{"lineNumber":3574,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-3:before,"},{"lineNumber":3575,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-three-quarters:before {"},{"lineNumber":3576,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2c8\u0027;"},{"lineNumber":3577,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3578,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile-android-alt:before,"},{"lineNumber":3579,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile-screen:before {"},{"lineNumber":3580,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3cf\u0027;"},{"lineNumber":3581,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3582,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane-up:before {"},{"lineNumber":3583,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e22d\u0027;"},{"lineNumber":3584,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3585,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-piggy-bank:before {"},{"lineNumber":3586,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4d3\u0027;"},{"lineNumber":3587,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3588,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-3:before,"},{"lineNumber":3589,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-half:before {"},{"lineNumber":3590,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f242\u0027;"},{"lineNumber":3591,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3592,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mountain-city:before {"},{"lineNumber":3593,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e52e\u0027;"},{"lineNumber":3594,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3595,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-coins:before {"},{"lineNumber":3596,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f51e\u0027;"},{"lineNumber":3597,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3598,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-khanda:before {"},{"lineNumber":3599,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f66d\u0027;"},{"lineNumber":3600,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3601,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sliders-h:before,"},{"lineNumber":3602,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sliders:before {"},{"lineNumber":3603,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1de\u0027;"},{"lineNumber":3604,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3605,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-folder-tree:before {"},{"lineNumber":3606,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f802\u0027;"},{"lineNumber":3607,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3608,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-network-wired:before {"},{"lineNumber":3609,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6ff\u0027;"},{"lineNumber":3610,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3611,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map-pin:before {"},{"lineNumber":3612,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f276\u0027;"},{"lineNumber":3613,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3614,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hamsa:before {"},{"lineNumber":3615,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f665\u0027;"},{"lineNumber":3616,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3617,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cent-sign:before {"},{"lineNumber":3618,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e3f5\u0027;"},{"lineNumber":3619,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3620,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flask:before {"},{"lineNumber":3621,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c3\u0027;"},{"lineNumber":3622,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3623,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-pregnant:before {"},{"lineNumber":3624,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e31e\u0027;"},{"lineNumber":3625,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3626,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wand-sparkles:before {"},{"lineNumber":3627,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f72b\u0027;"},{"lineNumber":3628,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3629,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ellipsis-v:before,"},{"lineNumber":3630,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ellipsis-vertical:before {"},{"lineNumber":3631,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f142\u0027;"},{"lineNumber":3632,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3633,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ticket:before {"},{"lineNumber":3634,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f145\u0027;"},{"lineNumber":3635,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3636,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-power-off:before {"},{"lineNumber":3637,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f011\u0027;"},{"lineNumber":3638,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3639,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-long-arrow-alt-right:before,"},{"lineNumber":3640,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-right-long:before {"},{"lineNumber":3641,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f30b\u0027;"},{"lineNumber":3642,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3643,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-flag-usa:before {"},{"lineNumber":3644,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f74d\u0027;"},{"lineNumber":3645,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3646,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laptop-file:before {"},{"lineNumber":3647,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e51d\u0027;"},{"lineNumber":3648,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3649,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-teletype:before,"},{"lineNumber":3650,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tty:before {"},{"lineNumber":3651,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1e4\u0027;"},{"lineNumber":3652,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3653,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-diagram-next:before {"},{"lineNumber":3654,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e476\u0027;"},{"lineNumber":3655,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3656,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-rifle:before {"},{"lineNumber":3657,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e54e\u0027;"},{"lineNumber":3658,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3659,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-medical-circle-exclamation:before {"},{"lineNumber":3660,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e512\u0027;"},{"lineNumber":3661,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3662,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-closed-captioning:before {"},{"lineNumber":3663,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f20a\u0027;"},{"lineNumber":3664,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3665,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hiking:before,"},{"lineNumber":3666,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-hiking:before {"},{"lineNumber":3667,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6ec\u0027;"},{"lineNumber":3668,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3669,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-venus-double:before {"},{"lineNumber":3670,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f226\u0027;"},{"lineNumber":3671,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3672,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-images:before {"},{"lineNumber":3673,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f302\u0027;"},{"lineNumber":3674,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3675,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calculator:before {"},{"lineNumber":3676,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1ec\u0027;"},{"lineNumber":3677,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3678,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-people-pulling:before {"},{"lineNumber":3679,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e535\u0027;"},{"lineNumber":3680,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3681,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-n:before {"},{"lineNumber":3682,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\4e\u0027;"},{"lineNumber":3683,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3684,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cable-car:before,"},{"lineNumber":3685,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tram:before {"},{"lineNumber":3686,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7da\u0027;"},{"lineNumber":3687,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3688,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-rain:before {"},{"lineNumber":3689,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f73d\u0027;"},{"lineNumber":3690,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3691,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-circle-xmark:before {"},{"lineNumber":3692,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d4\u0027;"},{"lineNumber":3693,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3694,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ship:before {"},{"lineNumber":3695,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f21a\u0027;"},{"lineNumber":3696,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3697,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-down-to-line:before {"},{"lineNumber":3698,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4b8\u0027;"},{"lineNumber":3699,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3700,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-download:before {"},{"lineNumber":3701,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f019\u0027;"},{"lineNumber":3702,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3703,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin:before,"},{"lineNumber":3704,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin:before {"},{"lineNumber":3705,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f580\u0027;"},{"lineNumber":3706,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3707,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-backspace:before,"},{"lineNumber":3708,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-delete-left:before {"},{"lineNumber":3709,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f55a\u0027;"},{"lineNumber":3710,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3711,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eye-dropper-empty:before,"},{"lineNumber":3712,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eye-dropper:before,"},{"lineNumber":3713,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eyedropper:before {"},{"lineNumber":3714,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1fb\u0027;"},{"lineNumber":3715,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3716,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-circle-check:before {"},{"lineNumber":3717,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e5a0\u0027;"},{"lineNumber":3718,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3719,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-forward:before {"},{"lineNumber":3720,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f04e\u0027;"},{"lineNumber":3721,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3722,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile-android:before,"},{"lineNumber":3723,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile-phone:before,"},{"lineNumber":3724,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mobile:before {"},{"lineNumber":3725,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3ce\u0027;"},{"lineNumber":3726,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3727,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-meh:before,"},{"lineNumber":3728,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-meh:before {"},{"lineNumber":3729,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f11a\u0027;"},{"lineNumber":3730,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3731,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-align-center:before {"},{"lineNumber":3732,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f037\u0027;"},{"lineNumber":3733,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3734,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-dead:before,"},{"lineNumber":3735,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-skull:before {"},{"lineNumber":3736,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6b7\u0027;"},{"lineNumber":3737,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3738,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-drivers-license:before,"},{"lineNumber":3739,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-id-card:before {"},{"lineNumber":3740,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2c2\u0027;"},{"lineNumber":3741,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3742,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dedent:before,"},{"lineNumber":3743,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-outdent:before {"},{"lineNumber":3744,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f03b\u0027;"},{"lineNumber":3745,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3746,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-circle-exclamation:before {"},{"lineNumber":3747,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4fe\u0027;"},{"lineNumber":3748,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3749,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-home-alt:before,"},{"lineNumber":3750,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-home-lg-alt:before,"},{"lineNumber":3751,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-home:before,"},{"lineNumber":3752,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house:before {"},{"lineNumber":3753,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f015\u0027;"},{"lineNumber":3754,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3755,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-week:before {"},{"lineNumber":3756,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f784\u0027;"},{"lineNumber":3757,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3758,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laptop-medical:before {"},{"lineNumber":3759,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f812\u0027;"},{"lineNumber":3760,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3761,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-b:before {"},{"lineNumber":3762,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\42\u0027;"},{"lineNumber":3763,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3764,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-medical:before {"},{"lineNumber":3765,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f477\u0027;"},{"lineNumber":3766,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3767,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice-one:before {"},{"lineNumber":3768,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f525\u0027;"},{"lineNumber":3769,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3770,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-kiwi-bird:before {"},{"lineNumber":3771,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f535\u0027;"},{"lineNumber":3772,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3773,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right-arrow-left:before,"},{"lineNumber":3774,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-exchange:before {"},{"lineNumber":3775,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ec\u0027;"},{"lineNumber":3776,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3777,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-redo-alt:before,"},{"lineNumber":3778,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-forward:before,"},{"lineNumber":3779,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate-right:before {"},{"lineNumber":3780,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2f9\u0027;"},{"lineNumber":3781,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3782,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cutlery:before,"},{"lineNumber":3783,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-utensils:before {"},{"lineNumber":3784,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2e7\u0027;"},{"lineNumber":3785,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3786,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-wide-short:before,"},{"lineNumber":3787,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-amount-up:before {"},{"lineNumber":3788,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f161\u0027;"},{"lineNumber":3789,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3790,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mill-sign:before {"},{"lineNumber":3791,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1ed\u0027;"},{"lineNumber":3792,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3793,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bowl-rice:before {"},{"lineNumber":3794,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e2eb\u0027;"},{"lineNumber":3795,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3796,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-skull:before {"},{"lineNumber":3797,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f54c\u0027;"},{"lineNumber":3798,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3799,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-broadcast-tower:before,"},{"lineNumber":3800,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tower-broadcast:before {"},{"lineNumber":3801,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f519\u0027;"},{"lineNumber":3802,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3803,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-pickup:before {"},{"lineNumber":3804,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f63c\u0027;"},{"lineNumber":3805,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3806,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-long-arrow-alt-up:before,"},{"lineNumber":3807,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-up-long:before {"},{"lineNumber":3808,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f30c\u0027;"},{"lineNumber":3809,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3810,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stop:before {"},{"lineNumber":3811,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f04d\u0027;"},{"lineNumber":3812,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3813,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-code-merge:before {"},{"lineNumber":3814,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f387\u0027;"},{"lineNumber":3815,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3816,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-upload:before {"},{"lineNumber":3817,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f093\u0027;"},{"lineNumber":3818,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3819,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hurricane:before {"},{"lineNumber":3820,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f751\u0027;"},{"lineNumber":3821,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3822,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mound:before {"},{"lineNumber":3823,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e52d\u0027;"},{"lineNumber":3824,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3825,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-toilet-portable:before {"},{"lineNumber":3826,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e583\u0027;"},{"lineNumber":3827,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3828,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-compact-disc:before {"},{"lineNumber":3829,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f51f\u0027;"},{"lineNumber":3830,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3831,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-arrow-down:before,"},{"lineNumber":3832,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-download:before {"},{"lineNumber":3833,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f56d\u0027;"},{"lineNumber":3834,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3835,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-caravan:before {"},{"lineNumber":3836,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f8ff\u0027;"},{"lineNumber":3837,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3838,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shield-cat:before {"},{"lineNumber":3839,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e572\u0027;"},{"lineNumber":3840,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3841,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bolt:before,"},{"lineNumber":3842,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-zap:before {"},{"lineNumber":3843,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0e7\u0027;"},{"lineNumber":3844,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3845,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-glass-water:before {"},{"lineNumber":3846,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f4\u0027;"},{"lineNumber":3847,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3848,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-oil-well:before {"},{"lineNumber":3849,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e532\u0027;"},{"lineNumber":3850,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3851,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vault:before {"},{"lineNumber":3852,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e2c5\u0027;"},{"lineNumber":3853,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3854,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mars:before {"},{"lineNumber":3855,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f222\u0027;"},{"lineNumber":3856,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3857,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-toilet:before {"},{"lineNumber":3858,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7d8\u0027;"},{"lineNumber":3859,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3860,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane-circle-xmark:before {"},{"lineNumber":3861,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e557\u0027;"},{"lineNumber":3862,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3863,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cny:before,"},{"lineNumber":3864,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-jpy:before,"},{"lineNumber":3865,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rmb:before,"},{"lineNumber":3866,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-yen-sign:before,"},{"lineNumber":3867,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-yen:before {"},{"lineNumber":3868,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f157\u0027;"},{"lineNumber":3869,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3870,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rouble:before,"},{"lineNumber":3871,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rub:before,"},{"lineNumber":3872,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ruble-sign:before,"},{"lineNumber":3873,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ruble:before {"},{"lineNumber":3874,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f158\u0027;"},{"lineNumber":3875,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3876,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sun:before {"},{"lineNumber":3877,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f185\u0027;"},{"lineNumber":3878,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3879,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-guitar:before {"},{"lineNumber":3880,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7a6\u0027;"},{"lineNumber":3881,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3882,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-laugh-wink:before,"},{"lineNumber":3883,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-laugh-wink:before {"},{"lineNumber":3884,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f59c\u0027;"},{"lineNumber":3885,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3886,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-horse-head:before {"},{"lineNumber":3887,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7ab\u0027;"},{"lineNumber":3888,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3889,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bore-hole:before {"},{"lineNumber":3890,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c3\u0027;"},{"lineNumber":3891,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3892,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-industry:before {"},{"lineNumber":3893,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f275\u0027;"},{"lineNumber":3894,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3895,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-alt-circle-down:before,"},{"lineNumber":3896,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-down:before {"},{"lineNumber":3897,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f358\u0027;"},{"lineNumber":3898,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3899,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-turn-to-dots:before {"},{"lineNumber":3900,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c1\u0027;"},{"lineNumber":3901,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3902,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-florin-sign:before {"},{"lineNumber":3903,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e184\u0027;"},{"lineNumber":3904,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3905,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-short-wide:before,"},{"lineNumber":3906,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-amount-desc:before,"},{"lineNumber":3907,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-amount-down-alt:before {"},{"lineNumber":3908,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f884\u0027;"},{"lineNumber":3909,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3910,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-less-than:before {"},{"lineNumber":3911,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\3c\u0027;"},{"lineNumber":3912,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3913,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angle-down:before {"},{"lineNumber":3914,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f107\u0027;"},{"lineNumber":3915,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3916,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car-tunnel:before {"},{"lineNumber":3917,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4de\u0027;"},{"lineNumber":3918,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3919,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-head-side-cough:before {"},{"lineNumber":3920,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e061\u0027;"},{"lineNumber":3921,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3922,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grip-lines:before {"},{"lineNumber":3923,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7a4\u0027;"},{"lineNumber":3924,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3925,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thumbs-down:before {"},{"lineNumber":3926,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f165\u0027;"},{"lineNumber":3927,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3928,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-lock:before {"},{"lineNumber":3929,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f502\u0027;"},{"lineNumber":3930,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3931,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right-long:before,"},{"lineNumber":3932,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-long-arrow-right:before {"},{"lineNumber":3933,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f178\u0027;"},{"lineNumber":3934,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3935,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-anchor-circle-xmark:before {"},{"lineNumber":3936,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ac\u0027;"},{"lineNumber":3937,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3938,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ellipsis-h:before,"},{"lineNumber":3939,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ellipsis:before {"},{"lineNumber":3940,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f141\u0027;"},{"lineNumber":3941,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3942,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chess-pawn:before {"},{"lineNumber":3943,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f443\u0027;"},{"lineNumber":3944,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3945,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-first-aid:before,"},{"lineNumber":3946,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-kit-medical:before {"},{"lineNumber":3947,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f479\u0027;"},{"lineNumber":3948,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3949,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-through-window:before {"},{"lineNumber":3950,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e5a9\u0027;"},{"lineNumber":3951,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3952,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-toolbox:before {"},{"lineNumber":3953,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f552\u0027;"},{"lineNumber":3954,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3955,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-holding-circle:before {"},{"lineNumber":3956,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4fb\u0027;"},{"lineNumber":3957,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3958,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bug:before {"},{"lineNumber":3959,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f188\u0027;"},{"lineNumber":3960,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3961,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-credit-card-alt:before,"},{"lineNumber":3962,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-credit-card:before {"},{"lineNumber":3963,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f09d\u0027;"},{"lineNumber":3964,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3965,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-automobile:before,"},{"lineNumber":3966,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car:before {"},{"lineNumber":3967,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1b9\u0027;"},{"lineNumber":3968,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3969,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-holding-hand:before {"},{"lineNumber":3970,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f7\u0027;"},{"lineNumber":3971,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3972,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-open-reader:before,"},{"lineNumber":3973,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-reader:before {"},{"lineNumber":3974,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5da\u0027;"},{"lineNumber":3975,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3976,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mountain-sun:before {"},{"lineNumber":3977,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e52f\u0027;"},{"lineNumber":3978,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3979,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-left-right-to-line:before {"},{"lineNumber":3980,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4ba\u0027;"},{"lineNumber":3981,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3982,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice-d20:before {"},{"lineNumber":3983,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6cf\u0027;"},{"lineNumber":3984,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3985,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-droplet:before {"},{"lineNumber":3986,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e58c\u0027;"},{"lineNumber":3987,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3988,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-circle-xmark:before {"},{"lineNumber":3989,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e5a1\u0027;"},{"lineNumber":3990,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3991,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-arrow-up:before,"},{"lineNumber":3992,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-up:before {"},{"lineNumber":3993,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e040\u0027;"},{"lineNumber":3994,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3995,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-medal:before {"},{"lineNumber":3996,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5a2\u0027;"},{"lineNumber":3997,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":3998,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bed:before {"},{"lineNumber":3999,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f236\u0027;"},{"lineNumber":4000,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4001,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-h-square:before,"},{"lineNumber":4002,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-h:before {"},{"lineNumber":4003,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0fd\u0027;"},{"lineNumber":4004,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4005,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-podcast:before {"},{"lineNumber":4006,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2ce\u0027;"},{"lineNumber":4007,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4008,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-4:before,"},{"lineNumber":4009,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-full:before,"},{"lineNumber":4010,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-4:before,"},{"lineNumber":4011,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer-full:before {"},{"lineNumber":4012,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2c7\u0027;"},{"lineNumber":4013,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4014,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bell:before {"},{"lineNumber":4015,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0f3\u0027;"},{"lineNumber":4016,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4017,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-superscript:before {"},{"lineNumber":4018,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f12b\u0027;"},{"lineNumber":4019,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4020,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plug-circle-xmark:before {"},{"lineNumber":4021,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e560\u0027;"},{"lineNumber":4022,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4023,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-star-of-life:before {"},{"lineNumber":4024,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f621\u0027;"},{"lineNumber":4025,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4026,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-phone-slash:before {"},{"lineNumber":4027,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3dd\u0027;"},{"lineNumber":4028,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4029,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-paint-roller:before {"},{"lineNumber":4030,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5aa\u0027;"},{"lineNumber":4031,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4032,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands-helping:before,"},{"lineNumber":4033,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-handshake-angle:before {"},{"lineNumber":4034,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4c4\u0027;"},{"lineNumber":4035,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4036,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-location-dot:before,"},{"lineNumber":4037,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map-marker-alt:before {"},{"lineNumber":4038,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3c5\u0027;"},{"lineNumber":4039,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4040,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file:before {"},{"lineNumber":4041,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f15b\u0027;"},{"lineNumber":4042,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4043,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-greater-than:before {"},{"lineNumber":4044,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\3e\u0027;"},{"lineNumber":4045,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4046,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-swimming:before,"},{"lineNumber":4047,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-swimmer:before {"},{"lineNumber":4048,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c4\u0027;"},{"lineNumber":4049,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4050,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down:before {"},{"lineNumber":4051,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f063\u0027;"},{"lineNumber":4052,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4053,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-droplet:before,"},{"lineNumber":4054,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tint:before {"},{"lineNumber":4055,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f043\u0027;"},{"lineNumber":4056,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4057,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-eraser:before {"},{"lineNumber":4058,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f12d\u0027;"},{"lineNumber":4059,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4060,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-earth-america:before,"},{"lineNumber":4061,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-earth-americas:before,"},{"lineNumber":4062,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-earth:before,"},{"lineNumber":4063,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-globe-americas:before {"},{"lineNumber":4064,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f57d\u0027;"},{"lineNumber":4065,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4066,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-burst:before {"},{"lineNumber":4067,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e53b\u0027;"},{"lineNumber":4068,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4069,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dove:before {"},{"lineNumber":4070,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4ba\u0027;"},{"lineNumber":4071,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4072,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-0:before,"},{"lineNumber":4073,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-empty:before {"},{"lineNumber":4074,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f244\u0027;"},{"lineNumber":4075,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4076,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-socks:before {"},{"lineNumber":4077,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f696\u0027;"},{"lineNumber":4078,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4079,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-inbox:before {"},{"lineNumber":4080,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f01c\u0027;"},{"lineNumber":4081,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4082,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-section:before {"},{"lineNumber":4083,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e447\u0027;"},{"lineNumber":4084,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4085,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gauge-high:before,"},{"lineNumber":4086,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tachometer-alt-fast:before,"},{"lineNumber":4087,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tachometer-alt:before {"},{"lineNumber":4088,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f625\u0027;"},{"lineNumber":4089,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4090,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-envelope-open-text:before {"},{"lineNumber":4091,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f658\u0027;"},{"lineNumber":4092,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4093,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hospital-alt:before,"},{"lineNumber":4094,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hospital-wide:before,"},{"lineNumber":4095,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hospital:before {"},{"lineNumber":4096,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0f8\u0027;"},{"lineNumber":4097,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4098,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wine-bottle:before {"},{"lineNumber":4099,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f72f\u0027;"},{"lineNumber":4100,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4101,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chess-rook:before {"},{"lineNumber":4102,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f447\u0027;"},{"lineNumber":4103,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4104,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bars-staggered:before,"},{"lineNumber":4105,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-reorder:before,"},{"lineNumber":4106,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stream:before {"},{"lineNumber":4107,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f550\u0027;"},{"lineNumber":4108,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4109,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dharmachakra:before {"},{"lineNumber":4110,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f655\u0027;"},{"lineNumber":4111,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4112,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hotdog:before {"},{"lineNumber":4113,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f80f\u0027;"},{"lineNumber":4114,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4115,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-blind:before,"},{"lineNumber":4116,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-walking-with-cane:before {"},{"lineNumber":4117,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f29d\u0027;"},{"lineNumber":4118,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4119,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-drum:before {"},{"lineNumber":4120,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f569\u0027;"},{"lineNumber":4121,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4122,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ice-cream:before {"},{"lineNumber":4123,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f810\u0027;"},{"lineNumber":4124,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4125,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-heart-circle-bolt:before {"},{"lineNumber":4126,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4fc\u0027;"},{"lineNumber":4127,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4128,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fax:before {"},{"lineNumber":4129,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1ac\u0027;"},{"lineNumber":4130,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4131,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-paragraph:before {"},{"lineNumber":4132,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1dd\u0027;"},{"lineNumber":4133,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4134,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-check-to-slot:before,"},{"lineNumber":4135,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vote-yea:before {"},{"lineNumber":4136,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f772\u0027;"},{"lineNumber":4137,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4138,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-star-half:before {"},{"lineNumber":4139,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f089\u0027;"},{"lineNumber":4140,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4141,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-boxes-alt:before,"},{"lineNumber":4142,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-boxes-stacked:before,"},{"lineNumber":4143,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-boxes:before {"},{"lineNumber":4144,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f468\u0027;"},{"lineNumber":4145,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4146,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chain:before,"},{"lineNumber":4147,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-link:before {"},{"lineNumber":4148,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c1\u0027;"},{"lineNumber":4149,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4150,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-assistive-listening-systems:before,"},{"lineNumber":4151,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ear-listen:before {"},{"lineNumber":4152,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2a2\u0027;"},{"lineNumber":4153,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4154,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tree-city:before {"},{"lineNumber":4155,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e587\u0027;"},{"lineNumber":4156,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4157,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-play:before {"},{"lineNumber":4158,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f04b\u0027;"},{"lineNumber":4159,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4160,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-font:before {"},{"lineNumber":4161,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f031\u0027;"},{"lineNumber":4162,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4163,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rupiah-sign:before {"},{"lineNumber":4164,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e23d\u0027;"},{"lineNumber":4165,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4166,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magnifying-glass:before,"},{"lineNumber":4167,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-search:before {"},{"lineNumber":4168,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f002\u0027;"},{"lineNumber":4169,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4170,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ping-pong-paddle-ball:before,"},{"lineNumber":4171,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-table-tennis-paddle-ball:before,"},{"lineNumber":4172,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-table-tennis:before {"},{"lineNumber":4173,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f45d\u0027;"},{"lineNumber":4174,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4175,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-diagnoses:before,"},{"lineNumber":4176,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-dots-from-line:before {"},{"lineNumber":4177,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f470\u0027;"},{"lineNumber":4178,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4179,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trash-can-arrow-up:before,"},{"lineNumber":4180,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trash-restore-alt:before {"},{"lineNumber":4181,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f82a\u0027;"},{"lineNumber":4182,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4183,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-naira-sign:before {"},{"lineNumber":4184,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1f6\u0027;"},{"lineNumber":4185,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4186,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cart-arrow-down:before {"},{"lineNumber":4187,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f218\u0027;"},{"lineNumber":4188,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4189,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-walkie-talkie:before {"},{"lineNumber":4190,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f8ef\u0027;"},{"lineNumber":4191,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4192,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-edit:before,"},{"lineNumber":4193,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-pen:before {"},{"lineNumber":4194,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f31c\u0027;"},{"lineNumber":4195,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4196,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-receipt:before {"},{"lineNumber":4197,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f543\u0027;"},{"lineNumber":4198,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4199,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pen-square:before,"},{"lineNumber":4200,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pencil-square:before,"},{"lineNumber":4201,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-pen:before {"},{"lineNumber":4202,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f14b\u0027;"},{"lineNumber":4203,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4204,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-suitcase-rolling:before {"},{"lineNumber":4205,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c1\u0027;"},{"lineNumber":4206,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4207,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-circle-exclamation:before {"},{"lineNumber":4208,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e53f\u0027;"},{"lineNumber":4209,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4210,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chevron-down:before {"},{"lineNumber":4211,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f078\u0027;"},{"lineNumber":4212,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4213,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-5:before,"},{"lineNumber":4214,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-full:before,"},{"lineNumber":4215,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery:before {"},{"lineNumber":4216,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f240\u0027;"},{"lineNumber":4217,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4218,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-skull-crossbones:before {"},{"lineNumber":4219,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f714\u0027;"},{"lineNumber":4220,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4221,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-code-compare:before {"},{"lineNumber":4222,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e13a\u0027;"},{"lineNumber":4223,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4224,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list-dots:before,"},{"lineNumber":4225,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list-ul:before {"},{"lineNumber":4226,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ca\u0027;"},{"lineNumber":4227,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4228,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-school-lock:before {"},{"lineNumber":4229,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e56f\u0027;"},{"lineNumber":4230,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4231,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tower-cell:before {"},{"lineNumber":4232,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e585\u0027;"},{"lineNumber":4233,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4234,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-down-long:before,"},{"lineNumber":4235,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-long-arrow-alt-down:before {"},{"lineNumber":4236,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f309\u0027;"},{"lineNumber":4237,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4238,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ranking-star:before {"},{"lineNumber":4239,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e561\u0027;"},{"lineNumber":4240,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4241,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chess-king:before {"},{"lineNumber":4242,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f43f\u0027;"},{"lineNumber":4243,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4244,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-harassing:before {"},{"lineNumber":4245,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e549\u0027;"},{"lineNumber":4246,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4247,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-brazilian-real-sign:before {"},{"lineNumber":4248,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e46c\u0027;"},{"lineNumber":4249,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4250,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-landmark-alt:before,"},{"lineNumber":4251,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-landmark-dome:before {"},{"lineNumber":4252,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f752\u0027;"},{"lineNumber":4253,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4254,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up:before {"},{"lineNumber":4255,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f062\u0027;"},{"lineNumber":4256,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4257,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-television:before,"},{"lineNumber":4258,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tv-alt:before,"},{"lineNumber":4259,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tv:before {"},{"lineNumber":4260,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f26c\u0027;"},{"lineNumber":4261,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4262,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shrimp:before {"},{"lineNumber":4263,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e448\u0027;"},{"lineNumber":4264,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4265,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-list-check:before,"},{"lineNumber":4266,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tasks:before {"},{"lineNumber":4267,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0ae\u0027;"},{"lineNumber":4268,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4269,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-jug-detergent:before {"},{"lineNumber":4270,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e519\u0027;"},{"lineNumber":4271,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4272,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-user:before,"},{"lineNumber":4273,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-circle:before {"},{"lineNumber":4274,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2bd\u0027;"},{"lineNumber":4275,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4276,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-shield:before {"},{"lineNumber":4277,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f505\u0027;"},{"lineNumber":4278,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4279,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wind:before {"},{"lineNumber":4280,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f72e\u0027;"},{"lineNumber":4281,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4282,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car-burst:before,"},{"lineNumber":4283,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car-crash:before {"},{"lineNumber":4284,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5e1\u0027;"},{"lineNumber":4285,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4286,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-y:before {"},{"lineNumber":4287,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\59\u0027;"},{"lineNumber":4288,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4289,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-snowboarding:before,"},{"lineNumber":4290,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-snowboarding:before {"},{"lineNumber":4291,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7ce\u0027;"},{"lineNumber":4292,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4293,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shipping-fast:before,"},{"lineNumber":4294,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-fast:before {"},{"lineNumber":4295,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f48b\u0027;"},{"lineNumber":4296,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4297,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fish:before {"},{"lineNumber":4298,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f578\u0027;"},{"lineNumber":4299,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4300,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-graduate:before {"},{"lineNumber":4301,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f501\u0027;"},{"lineNumber":4302,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4303,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-adjust:before,"},{"lineNumber":4304,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-half-stroke:before {"},{"lineNumber":4305,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f042\u0027;"},{"lineNumber":4306,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4307,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clapperboard:before {"},{"lineNumber":4308,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e131\u0027;"},{"lineNumber":4309,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4310,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-radiation:before,"},{"lineNumber":4311,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-radiation-alt:before {"},{"lineNumber":4312,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7ba\u0027;"},{"lineNumber":4313,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4314,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-baseball-ball:before,"},{"lineNumber":4315,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-baseball:before {"},{"lineNumber":4316,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f433\u0027;"},{"lineNumber":4317,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4318,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-jet-fighter-up:before {"},{"lineNumber":4319,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e518\u0027;"},{"lineNumber":4320,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4321,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-diagram-project:before,"},{"lineNumber":4322,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-project-diagram:before {"},{"lineNumber":4323,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f542\u0027;"},{"lineNumber":4324,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4325,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-copy:before {"},{"lineNumber":4326,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0c5\u0027;"},{"lineNumber":4327,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4328,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-mute:before,"},{"lineNumber":4329,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-times:before,"},{"lineNumber":4330,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-volume-xmark:before {"},{"lineNumber":4331,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6a9\u0027;"},{"lineNumber":4332,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4333,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-sparkles:before {"},{"lineNumber":4334,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e05d\u0027;"},{"lineNumber":4335,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4336,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grip-horizontal:before,"},{"lineNumber":4337,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grip:before {"},{"lineNumber":4338,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f58d\u0027;"},{"lineNumber":4339,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4340,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-share-from-square:before,"},{"lineNumber":4341,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-share-square:before {"},{"lineNumber":4342,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f14d\u0027;"},{"lineNumber":4343,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4344,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-child-combatant:before,"},{"lineNumber":4345,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-child-rifle:before {"},{"lineNumber":4346,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e0\u0027;"},{"lineNumber":4347,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4348,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gun:before {"},{"lineNumber":4349,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e19b\u0027;"},{"lineNumber":4350,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4351,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-phone-square:before,"},{"lineNumber":4352,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-phone:before {"},{"lineNumber":4353,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f098\u0027;"},{"lineNumber":4354,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4355,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-add:before,"},{"lineNumber":4356,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plus:before {"},{"lineNumber":4357,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\2b\u0027;"},{"lineNumber":4358,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4359,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-expand:before {"},{"lineNumber":4360,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f065\u0027;"},{"lineNumber":4361,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4362,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-computer:before {"},{"lineNumber":4363,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4e5\u0027;"},{"lineNumber":4364,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4365,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-close:before,"},{"lineNumber":4366,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-multiply:before,"},{"lineNumber":4367,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-remove:before,"},{"lineNumber":4368,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-times:before,"},{"lineNumber":4369,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-xmark:before {"},{"lineNumber":4370,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f00d\u0027;"},{"lineNumber":4371,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4372,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-up-down-left-right:before,"},{"lineNumber":4373,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows:before {"},{"lineNumber":4374,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f047\u0027;"},{"lineNumber":4375,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4376,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chalkboard-teacher:before,"},{"lineNumber":4377,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chalkboard-user:before {"},{"lineNumber":4378,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f51c\u0027;"},{"lineNumber":4379,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4380,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-peso-sign:before {"},{"lineNumber":4381,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e222\u0027;"},{"lineNumber":4382,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4383,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-shield:before {"},{"lineNumber":4384,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4d8\u0027;"},{"lineNumber":4385,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4386,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-baby:before {"},{"lineNumber":4387,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f77c\u0027;"},{"lineNumber":4388,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4389,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users-line:before {"},{"lineNumber":4390,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e592\u0027;"},{"lineNumber":4391,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4392,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-quote-left-alt:before,"},{"lineNumber":4393,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-quote-left:before {"},{"lineNumber":4394,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f10d\u0027;"},{"lineNumber":4395,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4396,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tractor:before {"},{"lineNumber":4397,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f722\u0027;"},{"lineNumber":4398,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4399,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trash-arrow-up:before,"},{"lineNumber":4400,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trash-restore:before {"},{"lineNumber":4401,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f829\u0027;"},{"lineNumber":4402,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4403,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-down-up-lock:before {"},{"lineNumber":4404,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4b0\u0027;"},{"lineNumber":4405,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4406,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-lines-leaning:before {"},{"lineNumber":4407,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e51e\u0027;"},{"lineNumber":4408,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4409,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ruler-combined:before {"},{"lineNumber":4410,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f546\u0027;"},{"lineNumber":4411,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4412,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-copyright:before {"},{"lineNumber":4413,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1f9\u0027;"},{"lineNumber":4414,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4415,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-equals:before {"},{"lineNumber":4416,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\3d\u0027;"},{"lineNumber":4417,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4418,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-blender:before {"},{"lineNumber":4419,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f517\u0027;"},{"lineNumber":4420,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4421,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-teeth:before {"},{"lineNumber":4422,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f62e\u0027;"},{"lineNumber":4423,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4424,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ils:before,"},{"lineNumber":4425,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shekel-sign:before,"},{"lineNumber":4426,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shekel:before,"},{"lineNumber":4427,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sheqel-sign:before,"},{"lineNumber":4428,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sheqel:before {"},{"lineNumber":4429,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f20b\u0027;"},{"lineNumber":4430,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4431,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-map:before {"},{"lineNumber":4432,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f279\u0027;"},{"lineNumber":4433,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4434,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rocket:before {"},{"lineNumber":4435,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f135\u0027;"},{"lineNumber":4436,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4437,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-photo-film:before,"},{"lineNumber":4438,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-photo-video:before {"},{"lineNumber":4439,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f87c\u0027;"},{"lineNumber":4440,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4441,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-folder-minus:before {"},{"lineNumber":4442,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f65d\u0027;"},{"lineNumber":4443,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4444,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-store:before {"},{"lineNumber":4445,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f54e\u0027;"},{"lineNumber":4446,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4447,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-trend-up:before {"},{"lineNumber":4448,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e098\u0027;"},{"lineNumber":4449,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4450,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plug-circle-minus:before {"},{"lineNumber":4451,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e55e\u0027;"},{"lineNumber":4452,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4453,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sign-hanging:before,"},{"lineNumber":4454,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sign:before {"},{"lineNumber":4455,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4d9\u0027;"},{"lineNumber":4456,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4457,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bezier-curve:before {"},{"lineNumber":4458,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f55b\u0027;"},{"lineNumber":4459,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4460,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bell-slash:before {"},{"lineNumber":4461,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1f6\u0027;"},{"lineNumber":4462,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4463,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tablet-android:before,"},{"lineNumber":4464,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tablet:before {"},{"lineNumber":4465,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3fb\u0027;"},{"lineNumber":4466,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4467,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-school-flag:before {"},{"lineNumber":4468,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e56e\u0027;"},{"lineNumber":4469,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4470,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fill:before {"},{"lineNumber":4471,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f575\u0027;"},{"lineNumber":4472,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4473,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angle-up:before {"},{"lineNumber":4474,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f106\u0027;"},{"lineNumber":4475,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4476,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-drumstick-bite:before {"},{"lineNumber":4477,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6d7\u0027;"},{"lineNumber":4478,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4479,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-holly-berry:before {"},{"lineNumber":4480,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7aa\u0027;"},{"lineNumber":4481,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4482,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chevron-left:before {"},{"lineNumber":4483,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f053\u0027;"},{"lineNumber":4484,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4485,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bacteria:before {"},{"lineNumber":4486,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e059\u0027;"},{"lineNumber":4487,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4488,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-lizard:before {"},{"lineNumber":4489,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f258\u0027;"},{"lineNumber":4490,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4491,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-notdef:before {"},{"lineNumber":4492,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1fe\u0027;"},{"lineNumber":4493,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4494,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-disease:before {"},{"lineNumber":4495,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7fa\u0027;"},{"lineNumber":4496,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4497,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-briefcase-medical:before {"},{"lineNumber":4498,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f469\u0027;"},{"lineNumber":4499,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4500,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-genderless:before {"},{"lineNumber":4501,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f22d\u0027;"},{"lineNumber":4502,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4503,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chevron-right:before {"},{"lineNumber":4504,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f054\u0027;"},{"lineNumber":4505,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4506,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-retweet:before {"},{"lineNumber":4507,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f079\u0027;"},{"lineNumber":4508,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4509,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car-alt:before,"},{"lineNumber":4510,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-car-rear:before {"},{"lineNumber":4511,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5de\u0027;"},{"lineNumber":4512,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4513,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pump-soap:before {"},{"lineNumber":4514,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e06b\u0027;"},{"lineNumber":4515,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4516,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-video-slash:before {"},{"lineNumber":4517,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4e2\u0027;"},{"lineNumber":4518,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4519,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-2:before,"},{"lineNumber":4520,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-quarter:before {"},{"lineNumber":4521,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f243\u0027;"},{"lineNumber":4522,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4523,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-radio:before {"},{"lineNumber":4524,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f8d7\u0027;"},{"lineNumber":4525,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4526,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-baby-carriage:before,"},{"lineNumber":4527,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-carriage-baby:before {"},{"lineNumber":4528,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f77d\u0027;"},{"lineNumber":4529,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4530,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-traffic-light:before {"},{"lineNumber":4531,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f637\u0027;"},{"lineNumber":4532,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4533,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thermometer:before {"},{"lineNumber":4534,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f491\u0027;"},{"lineNumber":4535,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4536,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vr-cardboard:before {"},{"lineNumber":4537,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f729\u0027;"},{"lineNumber":4538,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4539,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-middle-finger:before {"},{"lineNumber":4540,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f806\u0027;"},{"lineNumber":4541,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4542,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-percent:before,"},{"lineNumber":4543,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-percentage:before {"},{"lineNumber":4544,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\25\u0027;"},{"lineNumber":4545,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4546,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-moving:before {"},{"lineNumber":4547,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4df\u0027;"},{"lineNumber":4548,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4549,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-glass-water-droplet:before {"},{"lineNumber":4550,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f5\u0027;"},{"lineNumber":4551,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4552,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-display:before {"},{"lineNumber":4553,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e163\u0027;"},{"lineNumber":4554,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4555,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-smile:before,"},{"lineNumber":4556,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-smile:before {"},{"lineNumber":4557,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f118\u0027;"},{"lineNumber":4558,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4559,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thumb-tack:before,"},{"lineNumber":4560,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thumbtack:before {"},{"lineNumber":4561,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f08d\u0027;"},{"lineNumber":4562,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4563,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trophy:before {"},{"lineNumber":4564,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f091\u0027;"},{"lineNumber":4565,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4566,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-praying:before,"},{"lineNumber":4567,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pray:before {"},{"lineNumber":4568,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f683\u0027;"},{"lineNumber":4569,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4570,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hammer:before {"},{"lineNumber":4571,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6e3\u0027;"},{"lineNumber":4572,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4573,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-peace:before {"},{"lineNumber":4574,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f25b\u0027;"},{"lineNumber":4575,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4576,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rotate:before,"},{"lineNumber":4577,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sync-alt:before {"},{"lineNumber":4578,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2f1\u0027;"},{"lineNumber":4579,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4580,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-spinner:before {"},{"lineNumber":4581,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f110\u0027;"},{"lineNumber":4582,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4583,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-robot:before {"},{"lineNumber":4584,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f544\u0027;"},{"lineNumber":4585,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4586,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-peace:before {"},{"lineNumber":4587,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f67c\u0027;"},{"lineNumber":4588,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4589,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cogs:before,"},{"lineNumber":4590,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gears:before {"},{"lineNumber":4591,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f085\u0027;"},{"lineNumber":4592,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4593,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-warehouse:before {"},{"lineNumber":4594,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f494\u0027;"},{"lineNumber":4595,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4596,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-right-dots:before {"},{"lineNumber":4597,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4b7\u0027;"},{"lineNumber":4598,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4599,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-splotch:before {"},{"lineNumber":4600,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5bc\u0027;"},{"lineNumber":4601,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4602,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-hearts:before,"},{"lineNumber":4603,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-hearts:before {"},{"lineNumber":4604,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f584\u0027;"},{"lineNumber":4605,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4606,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice-four:before {"},{"lineNumber":4607,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f524\u0027;"},{"lineNumber":4608,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4609,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sim-card:before {"},{"lineNumber":4610,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7c4\u0027;"},{"lineNumber":4611,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4612,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-transgender-alt:before,"},{"lineNumber":4613,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-transgender:before {"},{"lineNumber":4614,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f225\u0027;"},{"lineNumber":4615,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4616,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mercury:before {"},{"lineNumber":4617,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f223\u0027;"},{"lineNumber":4618,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4619,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-turn-down:before,"},{"lineNumber":4620,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-level-down:before {"},{"lineNumber":4621,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f149\u0027;"},{"lineNumber":4622,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4623,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-falling-burst:before {"},{"lineNumber":4624,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e547\u0027;"},{"lineNumber":4625,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4626,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-award:before {"},{"lineNumber":4627,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f559\u0027;"},{"lineNumber":4628,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4629,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ticket-alt:before,"},{"lineNumber":4630,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ticket-simple:before {"},{"lineNumber":4631,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3ff\u0027;"},{"lineNumber":4632,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4633,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building:before {"},{"lineNumber":4634,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1ad\u0027;"},{"lineNumber":4635,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4636,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angle-double-left:before,"},{"lineNumber":4637,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angles-left:before {"},{"lineNumber":4638,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f100\u0027;"},{"lineNumber":4639,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4640,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-qrcode:before {"},{"lineNumber":4641,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f029\u0027;"},{"lineNumber":4642,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4643,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clock-rotate-left:before,"},{"lineNumber":4644,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-history:before {"},{"lineNumber":4645,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1da\u0027;"},{"lineNumber":4646,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4647,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-beam-sweat:before,"},{"lineNumber":4648,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-beam-sweat:before {"},{"lineNumber":4649,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f583\u0027;"},{"lineNumber":4650,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4651,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-right-from-file:before,"},{"lineNumber":4652,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-export:before {"},{"lineNumber":4653,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f56e\u0027;"},{"lineNumber":4654,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4655,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shield-blank:before,"},{"lineNumber":4656,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shield:before {"},{"lineNumber":4657,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f132\u0027;"},{"lineNumber":4658,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4659,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-short-wide:before,"},{"lineNumber":4660,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-amount-up-alt:before {"},{"lineNumber":4661,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f885\u0027;"},{"lineNumber":4662,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4663,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-medical:before {"},{"lineNumber":4664,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e3b2\u0027;"},{"lineNumber":4665,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4666,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-golf-ball-tee:before,"},{"lineNumber":4667,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-golf-ball:before {"},{"lineNumber":4668,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f450\u0027;"},{"lineNumber":4669,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4670,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chevron-circle-left:before,"},{"lineNumber":4671,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-chevron-left:before {"},{"lineNumber":4672,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f137\u0027;"},{"lineNumber":4673,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4674,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-chimney-window:before {"},{"lineNumber":4675,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e00d\u0027;"},{"lineNumber":4676,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4677,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-pen-nib:before {"},{"lineNumber":4678,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5ad\u0027;"},{"lineNumber":4679,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4680,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tent-arrow-turn-left:before {"},{"lineNumber":4681,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e580\u0027;"},{"lineNumber":4682,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4683,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tents:before {"},{"lineNumber":4684,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e582\u0027;"},{"lineNumber":4685,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4686,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magic:before,"},{"lineNumber":4687,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wand-magic:before {"},{"lineNumber":4688,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0d0\u0027;"},{"lineNumber":4689,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4690,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dog:before {"},{"lineNumber":4691,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6d3\u0027;"},{"lineNumber":4692,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4693,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-carrot:before {"},{"lineNumber":4694,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f787\u0027;"},{"lineNumber":4695,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4696,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-moon:before {"},{"lineNumber":4697,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f186\u0027;"},{"lineNumber":4698,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4699,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wine-glass-alt:before,"},{"lineNumber":4700,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wine-glass-empty:before {"},{"lineNumber":4701,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5ce\u0027;"},{"lineNumber":4702,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4703,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cheese:before {"},{"lineNumber":4704,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7ef\u0027;"},{"lineNumber":4705,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4706,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-yin-yang:before {"},{"lineNumber":4707,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6ad\u0027;"},{"lineNumber":4708,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4709,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-music:before {"},{"lineNumber":4710,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f001\u0027;"},{"lineNumber":4711,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4712,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-code-commit:before {"},{"lineNumber":4713,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f386\u0027;"},{"lineNumber":4714,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4715,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-temperature-low:before {"},{"lineNumber":4716,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f76b\u0027;"},{"lineNumber":4717,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4718,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-biking:before,"},{"lineNumber":4719,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-biking:before {"},{"lineNumber":4720,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f84a\u0027;"},{"lineNumber":4721,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4722,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-broom:before {"},{"lineNumber":4723,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f51a\u0027;"},{"lineNumber":4724,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4725,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shield-heart:before {"},{"lineNumber":4726,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e574\u0027;"},{"lineNumber":4727,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4728,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gopuram:before {"},{"lineNumber":4729,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f664\u0027;"},{"lineNumber":4730,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4731,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-earth-oceania:before,"},{"lineNumber":4732,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-globe-oceania:before {"},{"lineNumber":4733,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e47b\u0027;"},{"lineNumber":4734,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4735,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-xmark:before,"},{"lineNumber":4736,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-times-square:before,"},{"lineNumber":4737,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-xmark-square:before {"},{"lineNumber":4738,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2d3\u0027;"},{"lineNumber":4739,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4740,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hashtag:before {"},{"lineNumber":4741,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\23\u0027;"},{"lineNumber":4742,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4743,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-expand-alt:before,"},{"lineNumber":4744,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-up-right-and-down-left-from-center:before {"},{"lineNumber":4745,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f424\u0027;"},{"lineNumber":4746,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4747,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-oil-can:before {"},{"lineNumber":4748,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f613\u0027;"},{"lineNumber":4749,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4750,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-t:before {"},{"lineNumber":4751,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\54\u0027;"},{"lineNumber":4752,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4753,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hippo:before {"},{"lineNumber":4754,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6ed\u0027;"},{"lineNumber":4755,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4756,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chart-column:before {"},{"lineNumber":4757,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0e3\u0027;"},{"lineNumber":4758,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4759,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-infinity:before {"},{"lineNumber":4760,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f534\u0027;"},{"lineNumber":4761,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4762,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-vial-circle-check:before {"},{"lineNumber":4763,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e596\u0027;"},{"lineNumber":4764,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4765,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-arrow-down-to-line:before {"},{"lineNumber":4766,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e538\u0027;"},{"lineNumber":4767,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4768,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-voicemail:before {"},{"lineNumber":4769,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f897\u0027;"},{"lineNumber":4770,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4771,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fan:before {"},{"lineNumber":4772,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f863\u0027;"},{"lineNumber":4773,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4774,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-walking-luggage:before {"},{"lineNumber":4775,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e554\u0027;"},{"lineNumber":4776,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4777,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-alt-v:before,"},{"lineNumber":4778,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-up-down:before {"},{"lineNumber":4779,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f338\u0027;"},{"lineNumber":4780,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4781,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-moon-rain:before {"},{"lineNumber":4782,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f73c\u0027;"},{"lineNumber":4783,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4784,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar:before {"},{"lineNumber":4785,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f133\u0027;"},{"lineNumber":4786,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4787,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trailer:before {"},{"lineNumber":4788,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e041\u0027;"},{"lineNumber":4789,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4790,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bahai:before,"},{"lineNumber":4791,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-haykal:before {"},{"lineNumber":4792,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f666\u0027;"},{"lineNumber":4793,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4794,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sd-card:before {"},{"lineNumber":4795,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7c2\u0027;"},{"lineNumber":4796,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4797,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dragon:before {"},{"lineNumber":4798,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6d5\u0027;"},{"lineNumber":4799,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4800,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shoe-prints:before {"},{"lineNumber":4801,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f54b\u0027;"},{"lineNumber":4802,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4803,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-plus:before,"},{"lineNumber":4804,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plus-circle:before {"},{"lineNumber":4805,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f055\u0027;"},{"lineNumber":4806,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4807,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grin-tongue-wink:before,"},{"lineNumber":4808,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grin-tongue-wink:before {"},{"lineNumber":4809,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f58b\u0027;"},{"lineNumber":4810,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4811,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-holding:before {"},{"lineNumber":4812,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4bd\u0027;"},{"lineNumber":4813,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4814,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plug-circle-exclamation:before {"},{"lineNumber":4815,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e55d\u0027;"},{"lineNumber":4816,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4817,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chain-broken:before,"},{"lineNumber":4818,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-chain-slash:before,"},{"lineNumber":4819,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-link-slash:before,"},{"lineNumber":4820,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-unlink:before {"},{"lineNumber":4821,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f127\u0027;"},{"lineNumber":4822,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4823,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-clone:before {"},{"lineNumber":4824,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f24d\u0027;"},{"lineNumber":4825,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4826,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-walking-arrow-loop-left:before {"},{"lineNumber":4827,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e551\u0027;"},{"lineNumber":4828,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4829,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-z-a:before,"},{"lineNumber":4830,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sort-alpha-up-alt:before {"},{"lineNumber":4831,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f882\u0027;"},{"lineNumber":4832,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4833,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fire-alt:before,"},{"lineNumber":4834,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fire-flame-curved:before {"},{"lineNumber":4835,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7e4\u0027;"},{"lineNumber":4836,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4837,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tornado:before {"},{"lineNumber":4838,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f76f\u0027;"},{"lineNumber":4839,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4840,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-circle-plus:before {"},{"lineNumber":4841,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e494\u0027;"},{"lineNumber":4842,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4843,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-quran:before,"},{"lineNumber":4844,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-quran:before {"},{"lineNumber":4845,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f687\u0027;"},{"lineNumber":4846,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4847,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-anchor:before {"},{"lineNumber":4848,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f13d\u0027;"},{"lineNumber":4849,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4850,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-border-all:before {"},{"lineNumber":4851,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f84c\u0027;"},{"lineNumber":4852,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4853,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angry:before,"},{"lineNumber":4854,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-angry:before {"},{"lineNumber":4855,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f556\u0027;"},{"lineNumber":4856,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4857,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cookie-bite:before {"},{"lineNumber":4858,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f564\u0027;"},{"lineNumber":4859,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4860,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-trend-down:before {"},{"lineNumber":4861,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e097\u0027;"},{"lineNumber":4862,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4863,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-feed:before,"},{"lineNumber":4864,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rss:before {"},{"lineNumber":4865,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f09e\u0027;"},{"lineNumber":4866,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4867,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-draw-polygon:before {"},{"lineNumber":4868,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5ee\u0027;"},{"lineNumber":4869,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4870,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-balance-scale:before,"},{"lineNumber":4871,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-scale-balanced:before {"},{"lineNumber":4872,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f24e\u0027;"},{"lineNumber":4873,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4874,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gauge-simple-high:before,"},{"lineNumber":4875,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tachometer-fast:before,"},{"lineNumber":4876,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tachometer:before {"},{"lineNumber":4877,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f62a\u0027;"},{"lineNumber":4878,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4879,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-shower:before {"},{"lineNumber":4880,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2cc\u0027;"},{"lineNumber":4881,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4882,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-desktop-alt:before,"},{"lineNumber":4883,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-desktop:before {"},{"lineNumber":4884,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f390\u0027;"},{"lineNumber":4885,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4886,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-m:before {"},{"lineNumber":4887,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\4d\u0027;"},{"lineNumber":4888,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4889,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-table-list:before,"},{"lineNumber":4890,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-th-list:before {"},{"lineNumber":4891,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f00b\u0027;"},{"lineNumber":4892,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4893,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-comment-sms:before,"},{"lineNumber":4894,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sms:before {"},{"lineNumber":4895,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7cd\u0027;"},{"lineNumber":4896,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4897,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book:before {"},{"lineNumber":4898,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f02d\u0027;"},{"lineNumber":4899,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4900,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-plus:before {"},{"lineNumber":4901,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f234\u0027;"},{"lineNumber":4902,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4903,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-check:before {"},{"lineNumber":4904,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f00c\u0027;"},{"lineNumber":4905,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4906,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-4:before,"},{"lineNumber":4907,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-battery-three-quarters:before {"},{"lineNumber":4908,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f241\u0027;"},{"lineNumber":4909,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4910,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-house-circle-check:before {"},{"lineNumber":4911,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e509\u0027;"},{"lineNumber":4912,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4913,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-angle-left:before {"},{"lineNumber":4914,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f104\u0027;"},{"lineNumber":4915,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4916,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-diagram-successor:before {"},{"lineNumber":4917,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e47a\u0027;"},{"lineNumber":4918,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4919,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-truck-arrow-right:before {"},{"lineNumber":4920,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e58b\u0027;"},{"lineNumber":4921,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4922,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-split-up-and-left:before {"},{"lineNumber":4923,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4bc\u0027;"},{"lineNumber":4924,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4925,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fist-raised:before,"},{"lineNumber":4926,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-fist:before {"},{"lineNumber":4927,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6de\u0027;"},{"lineNumber":4928,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4929,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-moon:before {"},{"lineNumber":4930,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6c3\u0027;"},{"lineNumber":4931,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4932,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-briefcase:before {"},{"lineNumber":4933,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0b1\u0027;"},{"lineNumber":4934,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4935,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-falling:before {"},{"lineNumber":4936,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e546\u0027;"},{"lineNumber":4937,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4938,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-image-portrait:before,"},{"lineNumber":4939,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-portrait:before {"},{"lineNumber":4940,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3e0\u0027;"},{"lineNumber":4941,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4942,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-tag:before {"},{"lineNumber":4943,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f507\u0027;"},{"lineNumber":4944,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4945,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rug:before {"},{"lineNumber":4946,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e569\u0027;"},{"lineNumber":4947,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4948,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-earth-europe:before,"},{"lineNumber":4949,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-globe-europe:before {"},{"lineNumber":4950,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f7a2\u0027;"},{"lineNumber":4951,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4952,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cart-flatbed-suitcase:before,"},{"lineNumber":4953,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-luggage-cart:before {"},{"lineNumber":4954,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f59d\u0027;"},{"lineNumber":4955,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4956,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rectangle-times:before,"},{"lineNumber":4957,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-rectangle-xmark:before,"},{"lineNumber":4958,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-times-rectangle:before,"},{"lineNumber":4959,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-window-close:before {"},{"lineNumber":4960,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f410\u0027;"},{"lineNumber":4961,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4962,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-baht-sign:before {"},{"lineNumber":4963,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e0ac\u0027;"},{"lineNumber":4964,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4965,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-open:before {"},{"lineNumber":4966,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f518\u0027;"},{"lineNumber":4967,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4968,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-book-journal-whills:before,"},{"lineNumber":4969,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-journal-whills:before {"},{"lineNumber":4970,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f66a\u0027;"},{"lineNumber":4971,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4972,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-handcuffs:before {"},{"lineNumber":4973,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4f8\u0027;"},{"lineNumber":4974,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4975,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-exclamation-triangle:before,"},{"lineNumber":4976,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-triangle-exclamation:before,"},{"lineNumber":4977,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-warning:before {"},{"lineNumber":4978,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f071\u0027;"},{"lineNumber":4979,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4980,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-database:before {"},{"lineNumber":4981,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1c0\u0027;"},{"lineNumber":4982,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4983,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-turn-right:before,"},{"lineNumber":4984,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mail-forward:before,"},{"lineNumber":4985,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-share:before {"},{"lineNumber":4986,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f064\u0027;"},{"lineNumber":4987,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4988,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bottle-droplet:before {"},{"lineNumber":4989,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4c4\u0027;"},{"lineNumber":4990,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4991,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mask-face:before {"},{"lineNumber":4992,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1d7\u0027;"},{"lineNumber":4993,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4994,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hill-rockslide:before {"},{"lineNumber":4995,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e508\u0027;"},{"lineNumber":4996,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4997,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-exchange-alt:before,"},{"lineNumber":4998,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-right-left:before {"},{"lineNumber":4999,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f362\u0027;"},{"lineNumber":5000,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5001,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-paper-plane:before {"},{"lineNumber":5002,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1d8\u0027;"},{"lineNumber":5003,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5004,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-road-circle-exclamation:before {"},{"lineNumber":5005,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e565\u0027;"},{"lineNumber":5006,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5007,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dungeon:before {"},{"lineNumber":5008,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6d9\u0027;"},{"lineNumber":5009,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5010,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-align-right:before {"},{"lineNumber":5011,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f038\u0027;"},{"lineNumber":5012,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5013,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill-1-wave:before,"},{"lineNumber":5014,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-money-bill-wave-alt:before {"},{"lineNumber":5015,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f53b\u0027;"},{"lineNumber":5016,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5017,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-life-ring:before {"},{"lineNumber":5018,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1cd\u0027;"},{"lineNumber":5019,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5020,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hands:before,"},{"lineNumber":5021,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sign-language:before,"},{"lineNumber":5022,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-signing:before {"},{"lineNumber":5023,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2a7\u0027;"},{"lineNumber":5024,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5025,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-day:before {"},{"lineNumber":5026,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f783\u0027;"},{"lineNumber":5027,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5028,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ladder-water:before,"},{"lineNumber":5029,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-swimming-pool:before,"},{"lineNumber":5030,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-water-ladder:before {"},{"lineNumber":5031,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5c5\u0027;"},{"lineNumber":5032,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5033,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-up-down:before,"},{"lineNumber":5034,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-v:before {"},{"lineNumber":5035,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f07d\u0027;"},{"lineNumber":5036,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5037,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-grimace:before,"},{"lineNumber":5038,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-grimace:before {"},{"lineNumber":5039,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f57f\u0027;"},{"lineNumber":5040,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5041,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wheelchair-alt:before,"},{"lineNumber":5042,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-wheelchair-move:before {"},{"lineNumber":5043,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e2ce\u0027;"},{"lineNumber":5044,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5045,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-level-down-alt:before,"},{"lineNumber":5046,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-turn-down:before {"},{"lineNumber":5047,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3be\u0027;"},{"lineNumber":5048,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5049,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-walking-arrow-right:before {"},{"lineNumber":5050,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e552\u0027;"},{"lineNumber":5051,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5052,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-envelope-square:before,"},{"lineNumber":5053,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-envelope:before {"},{"lineNumber":5054,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f199\u0027;"},{"lineNumber":5055,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5056,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dice:before {"},{"lineNumber":5057,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f522\u0027;"},{"lineNumber":5058,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5059,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bowling-ball:before {"},{"lineNumber":5060,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f436\u0027;"},{"lineNumber":5061,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5062,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-brain:before {"},{"lineNumber":5063,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5dc\u0027;"},{"lineNumber":5064,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5065,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-band-aid:before,"},{"lineNumber":5066,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bandage:before {"},{"lineNumber":5067,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f462\u0027;"},{"lineNumber":5068,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5069,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-calendar-minus:before {"},{"lineNumber":5070,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f272\u0027;"},{"lineNumber":5071,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5072,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-circle-xmark:before,"},{"lineNumber":5073,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-times-circle:before,"},{"lineNumber":5074,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-xmark-circle:before {"},{"lineNumber":5075,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f057\u0027;"},{"lineNumber":5076,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5077,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-gifts:before {"},{"lineNumber":5078,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f79c\u0027;"},{"lineNumber":5079,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5080,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hotel:before {"},{"lineNumber":5081,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f594\u0027;"},{"lineNumber":5082,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5083,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-earth-asia:before,"},{"lineNumber":5084,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-globe-asia:before {"},{"lineNumber":5085,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f57e\u0027;"},{"lineNumber":5086,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5087,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-id-card-alt:before,"},{"lineNumber":5088,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-id-card-clip:before {"},{"lineNumber":5089,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f47f\u0027;"},{"lineNumber":5090,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5091,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magnifying-glass-plus:before,"},{"lineNumber":5092,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-search-plus:before {"},{"lineNumber":5093,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f00e\u0027;"},{"lineNumber":5094,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5095,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-thumbs-up:before {"},{"lineNumber":5096,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f164\u0027;"},{"lineNumber":5097,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5098,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-clock:before {"},{"lineNumber":5099,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4fd\u0027;"},{"lineNumber":5100,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5101,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-allergies:before,"},{"lineNumber":5102,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-dots:before {"},{"lineNumber":5103,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f461\u0027;"},{"lineNumber":5104,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5105,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-file-invoice:before {"},{"lineNumber":5106,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f570\u0027;"},{"lineNumber":5107,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5108,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-window-minimize:before {"},{"lineNumber":5109,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f2d1\u0027;"},{"lineNumber":5110,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5111,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-coffee:before,"},{"lineNumber":5112,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mug-saucer:before {"},{"lineNumber":5113,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0f4\u0027;"},{"lineNumber":5114,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5115,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-brush:before {"},{"lineNumber":5116,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f55d\u0027;"},{"lineNumber":5117,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5118,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mask:before {"},{"lineNumber":5119,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6fa\u0027;"},{"lineNumber":5120,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5121,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magnifying-glass-minus:before,"},{"lineNumber":5122,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-search-minus:before {"},{"lineNumber":5123,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f010\u0027;"},{"lineNumber":5124,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5125,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-ruler-vertical:before {"},{"lineNumber":5126,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f548\u0027;"},{"lineNumber":5127,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5128,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-alt:before,"},{"lineNumber":5129,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-large:before {"},{"lineNumber":5130,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f406\u0027;"},{"lineNumber":5131,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5132,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-train-tram:before {"},{"lineNumber":5133,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e5b4\u0027;"},{"lineNumber":5134,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5135,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-nurse:before {"},{"lineNumber":5136,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f82f\u0027;"},{"lineNumber":5137,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5138,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-syringe:before {"},{"lineNumber":5139,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f48e\u0027;"},{"lineNumber":5140,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5141,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-cloud-sun:before {"},{"lineNumber":5142,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f6c4\u0027;"},{"lineNumber":5143,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5144,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stopwatch-20:before {"},{"lineNumber":5145,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e06f\u0027;"},{"lineNumber":5146,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5147,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-full:before {"},{"lineNumber":5148,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f45c\u0027;"},{"lineNumber":5149,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5150,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magnet:before {"},{"lineNumber":5151,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f076\u0027;"},{"lineNumber":5152,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5153,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-jar:before {"},{"lineNumber":5154,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e516\u0027;"},{"lineNumber":5155,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5156,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-note-sticky:before,"},{"lineNumber":5157,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sticky-note:before {"},{"lineNumber":5158,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f249\u0027;"},{"lineNumber":5159,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5160,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bug-slash:before {"},{"lineNumber":5161,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e490\u0027;"},{"lineNumber":5162,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5163,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrow-up-from-water-pump:before {"},{"lineNumber":5164,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4b6\u0027;"},{"lineNumber":5165,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5166,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bone:before {"},{"lineNumber":5167,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5d7\u0027;"},{"lineNumber":5168,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5169,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-user-injured:before {"},{"lineNumber":5170,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f728\u0027;"},{"lineNumber":5171,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5172,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-face-sad-tear:before,"},{"lineNumber":5173,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sad-tear:before {"},{"lineNumber":5174,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f5b4\u0027;"},{"lineNumber":5175,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5176,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plane:before {"},{"lineNumber":5177,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f072\u0027;"},{"lineNumber":5178,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5179,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-tent-arrows-down:before {"},{"lineNumber":5180,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e581\u0027;"},{"lineNumber":5181,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5182,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-exclamation:before {"},{"lineNumber":5183,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\21\u0027;"},{"lineNumber":5184,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5185,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-arrows-spin:before {"},{"lineNumber":5186,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e4bb\u0027;"},{"lineNumber":5187,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5188,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-print:before {"},{"lineNumber":5189,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f02f\u0027;"},{"lineNumber":5190,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5191,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-try:before,"},{"lineNumber":5192,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-turkish-lira-sign:before,"},{"lineNumber":5193,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-turkish-lira:before {"},{"lineNumber":5194,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e2bb\u0027;"},{"lineNumber":5195,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5196,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dollar-sign:before,"},{"lineNumber":5197,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-dollar:before,"},{"lineNumber":5198,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-usd:before {"},{"lineNumber":5199,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\24\u0027;"},{"lineNumber":5200,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5201,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-x:before {"},{"lineNumber":5202,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\58\u0027;"},{"lineNumber":5203,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5204,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-magnifying-glass-dollar:before,"},{"lineNumber":5205,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-search-dollar:before {"},{"lineNumber":5206,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f688\u0027;"},{"lineNumber":5207,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5208,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users-cog:before,"},{"lineNumber":5209,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-users-gear:before {"},{"lineNumber":5210,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f509\u0027;"},{"lineNumber":5211,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5212,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-military-pointing:before {"},{"lineNumber":5213,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e54a\u0027;"},{"lineNumber":5214,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5215,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-bank:before,"},{"lineNumber":5216,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-building-columns:before,"},{"lineNumber":5217,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-institution:before,"},{"lineNumber":5218,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-museum:before,"},{"lineNumber":5219,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-university:before {"},{"lineNumber":5220,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f19c\u0027;"},{"lineNumber":5221,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5222,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-umbrella:before {"},{"lineNumber":5223,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0e9\u0027;"},{"lineNumber":5224,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5225,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-trowel:before {"},{"lineNumber":5226,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e589\u0027;"},{"lineNumber":5227,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5228,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-d:before {"},{"lineNumber":5229,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\44\u0027;"},{"lineNumber":5230,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5231,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-stapler:before {"},{"lineNumber":5232,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e5af\u0027;"},{"lineNumber":5233,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5234,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-masks-theater:before,"},{"lineNumber":5235,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-theater-masks:before {"},{"lineNumber":5236,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f630\u0027;"},{"lineNumber":5237,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5238,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-kip-sign:before {"},{"lineNumber":5239,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e1c4\u0027;"},{"lineNumber":5240,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5241,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-point-left:before {"},{"lineNumber":5242,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0a5\u0027;"},{"lineNumber":5243,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5244,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-handshake-alt:before,"},{"lineNumber":5245,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-handshake-simple:before {"},{"lineNumber":5246,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f4c6\u0027;"},{"lineNumber":5247,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5248,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-fighter-jet:before,"},{"lineNumber":5249,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-jet-fighter:before {"},{"lineNumber":5250,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f0fb\u0027;"},{"lineNumber":5251,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5252,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-share-alt-square:before,"},{"lineNumber":5253,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-square-share-nodes:before {"},{"lineNumber":5254,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f1e1\u0027;"},{"lineNumber":5255,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5256,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-barcode:before {"},{"lineNumber":5257,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f02a\u0027;"},{"lineNumber":5258,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5259,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-plus-minus:before {"},{"lineNumber":5260,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e43c\u0027;"},{"lineNumber":5261,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5262,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-video-camera:before,"},{"lineNumber":5263,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-video:before {"},{"lineNumber":5264,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f03d\u0027;"},{"lineNumber":5265,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5266,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-graduation-cap:before,"},{"lineNumber":5267,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-mortar-board:before {"},{"lineNumber":5268,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f19d\u0027;"},{"lineNumber":5269,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5270,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-hand-holding-medical:before {"},{"lineNumber":5271,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e05c\u0027;"},{"lineNumber":5272,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5273,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-person-circle-check:before {"},{"lineNumber":5274,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\e53e\u0027;"},{"lineNumber":5275,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5276,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-level-up-alt:before,"},{"lineNumber":5277,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-turn-up:before {"},{"lineNumber":5278,"author":{"gitId":"Eclipse-Dominator"},"content":" content: \u0027\\f3bf\u0027;"},{"lineNumber":5279,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5280,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sr-only,"},{"lineNumber":5281,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-sr-only-focusable:not(:focus),"},{"lineNumber":5282,"author":{"gitId":"Eclipse-Dominator"},"content":".sr-only,"},{"lineNumber":5283,"author":{"gitId":"Eclipse-Dominator"},"content":".sr-only-focusable:not(:focus) {"},{"lineNumber":5284,"author":{"gitId":"Eclipse-Dominator"},"content":" position: absolute;"},{"lineNumber":5285,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 1px;"},{"lineNumber":5286,"author":{"gitId":"Eclipse-Dominator"},"content":" height: 1px;"},{"lineNumber":5287,"author":{"gitId":"Eclipse-Dominator"},"content":" padding: 0;"},{"lineNumber":5288,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: -1px;"},{"lineNumber":5289,"author":{"gitId":"Eclipse-Dominator"},"content":" overflow: hidden;"},{"lineNumber":5290,"author":{"gitId":"Eclipse-Dominator"},"content":" clip: rect(0, 0, 0, 0);"},{"lineNumber":5291,"author":{"gitId":"Eclipse-Dominator"},"content":" white-space: nowrap;"},{"lineNumber":5292,"author":{"gitId":"Eclipse-Dominator"},"content":" border-width: 0;"},{"lineNumber":5293,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":5293}},{"path":"src/assets/fontawesome/css/solid.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"/*!"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" * Font Awesome Free 6.3.0 by @fontawesome - https://fontawesome.com"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" * Copyright 2023 Fonticons, Inc."},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":":host,"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":":root {"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" --fa-style-family-classic: \u0027Font Awesome 6 Free\u0027;"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" --fa-font-solid: normal 900 1em/1 \u0027Font Awesome 6 Free\u0027;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":"@font-face {"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" font-family: \u0027Font Awesome 6 Free\u0027;"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" font-style: normal;"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" font-weight: 900;"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" font-display: block;"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":" src: url(../webfonts/fa-solid-900.woff2) format(\u0027woff2\u0027), url(../webfonts/fa-solid-900.ttf) format(\u0027truetype\u0027);"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":".fa-solid,"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":".fas {"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" font-weight: 900;"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":21}},{"path":"src/polyfills.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"/***************************************************************************************************"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" * Load `$localize` onto the global scope - used if i18n tags appear in Angular templates."},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" */"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import \u0027@angular/localize/init\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * This file includes polyfills needed by Angular and is loaded before the app."},{"lineNumber":7,"author":{"gitId":"-"},"content":" * You can add your own extra polyfills to this file."},{"lineNumber":8,"author":{"gitId":"-"},"content":" *"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * This file is divided into 2 sections:"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers."},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 2. Application imports. Files imported after ZoneJS that should be loaded before your main"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * file."},{"lineNumber":13,"author":{"gitId":"-"},"content":" *"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * automatically update themselves. This includes Safari \u003e\u003d 10, Chrome \u003e\u003d 55 (including Opera),"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Edge \u003e\u003d 13 on the desktop, and iOS 10 and Chrome on mobile."},{"lineNumber":17,"author":{"gitId":"-"},"content":" *"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Learn more in https://angular.io/guide/browser-support"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"/***************************************************************************************************"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * BROWSER POLYFILLS"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"/** IE10 and IE11 requires the following for NgClass support on SVG elements */"},{"lineNumber":26,"author":{"gitId":"-"},"content":"// import \u0027classlist.js\u0027; // Run `npm install --save classlist.js`."},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Web Animations `@angular/platform-browser/animations`"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari."},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0)."},{"lineNumber":32,"author":{"gitId":"-"},"content":" */"},{"lineNumber":33,"author":{"gitId":"-"},"content":"// import \u0027web-animations-js\u0027; // Run `npm install --save web-animations-js`."},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * By default, zone.js will patch all possible macroTask and DomEvents"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * user can disable parts of macroTask/DomEvents patch by setting following flags"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * because those flags need to be set before `zone.js` being loaded, and webpack"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * will put import in the top of bundle, so user need to create a separate file"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * in this directory (for example: zone-flags.ts), and put the following flags"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * into that file, and then add the following code before importing zone.js."},{"lineNumber":42,"author":{"gitId":"-"},"content":" * import \u0027./zone-flags.ts\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * The flags allowed in zone-flags.ts are listed here."},{"lineNumber":45,"author":{"gitId":"-"},"content":" *"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * The following flags will work for all browsers."},{"lineNumber":47,"author":{"gitId":"-"},"content":" *"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * (window as any).__Zone_disable_requestAnimationFrame \u003d true; // disable patch requestAnimationFrame"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * (window as any).__Zone_disable_on_property \u003d true; // disable patch onProperty such as onclick"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * (window as any).__zone_symbol__UNPATCHED_EVENTS \u003d [\u0027scroll\u0027, \u0027mousemove\u0027]; // disable patch specified eventNames"},{"lineNumber":51,"author":{"gitId":"-"},"content":" *"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * with the following flag, it will bypass `zone.js` patch for IE/Edge"},{"lineNumber":54,"author":{"gitId":"-"},"content":" *"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * (window as any).__Zone_enable_cross_context_check \u003d true;"},{"lineNumber":56,"author":{"gitId":"-"},"content":" *"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":"/***************************************************************************************************"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Zone JS is required by default for Angular itself."},{"lineNumber":61,"author":{"gitId":"-"},"content":" */"},{"lineNumber":62,"author":{"gitId":"-"},"content":"import \u0027zone.js/dist/zone\u0027; // Included with Angular CLI."},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"-"},"content":"/***************************************************************************************************"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * APPLICATION IMPORTS"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"(window as any).global \u003d window;"}],"authorContributionMap":{"vigneshsankariyer1234567890":5,"-":62}},{"path":"src/styles.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"/* You can add global styles to this file, and also import other style files */"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"@import \u0027./assets/fontawesome/css/fontawesome.min.css\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"@import \u0027./assets/fontawesome/css/solid.min.css\u0027;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"html,"},{"lineNumber":6,"author":{"gitId":"-"},"content":"body {"},{"lineNumber":7,"author":{"gitId":"-"},"content":" margin: 0;"},{"lineNumber":8,"author":{"gitId":"-"},"content":" padding: 0;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":" min-height: 100vh;"},{"lineNumber":11,"author":{"gitId":"-"},"content":" height: 100%;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"html,"},{"lineNumber":15,"author":{"gitId":"-"},"content":"body {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" height: 100%;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}"},{"lineNumber":18,"author":{"gitId":"-"},"content":"body {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" margin: 0;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" font-family: Roboto, \u0027Helvetica Neue\u0027, sans-serif;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":"/* Timeline comment style */"},{"lineNumber":24,"author":{"gitId":"-"},"content":".timeline-header {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" background-color: #f1f8ff;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" border-bottom: 1px solid #c0d3eb;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" border-top-left-radius: 3px;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" border-top-right-radius: 3px;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" color: #586069;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" height: 35px;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" padding: 5px;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":".timeline-comment {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" overflow: auto;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" border: 1px solid #c0d3eb;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" background-color: #fff;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" border-radius: 3px;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" margin-bottom: 30px;"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":".comment {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" padding: 15px;"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":".question-mark {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" color: red;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" font-size: 35px;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" margin: 0 10px 15px 0;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" text-shadow: -1.5px 0 black, 0 1.5px black, 1.5px 0 black, 0 -1.5px black;"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}"},{"lineNumber":52,"author":{"gitId":"-"},"content":"/* Timeline comment style */"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":"/* MaterialUI icon styles */"},{"lineNumber":55,"author":{"gitId":"-"},"content":".material-icons-outlined,"},{"lineNumber":56,"author":{"gitId":"-"},"content":".material-icons.material-icons--outlined,"},{"lineNumber":57,"author":{"gitId":"-"},"content":".material-icons-two-tone,"},{"lineNumber":58,"author":{"gitId":"-"},"content":".material-icons.material-icons--two-tone,"},{"lineNumber":59,"author":{"gitId":"-"},"content":".material-icons-round,"},{"lineNumber":60,"author":{"gitId":"-"},"content":".material-icons.material-icons--round,"},{"lineNumber":61,"author":{"gitId":"-"},"content":".material-icons-sharp,"},{"lineNumber":62,"author":{"gitId":"-"},"content":".material-icons.material-icons--sharp {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" font-weight: normal;"},{"lineNumber":64,"author":{"gitId":"-"},"content":" font-style: normal;"},{"lineNumber":65,"author":{"gitId":"-"},"content":" font-size: 24px;"},{"lineNumber":66,"author":{"gitId":"-"},"content":" line-height: 1;"},{"lineNumber":67,"author":{"gitId":"-"},"content":" letter-spacing: normal;"},{"lineNumber":68,"author":{"gitId":"-"},"content":" text-transform: none;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" display: inline-block;"},{"lineNumber":70,"author":{"gitId":"-"},"content":" white-space: nowrap;"},{"lineNumber":71,"author":{"gitId":"-"},"content":" word-wrap: normal;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" direction: ltr;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \u0027liga\u0027;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" -webkit-font-smoothing: antialiased;"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":".material-icons-outlined,"},{"lineNumber":78,"author":{"gitId":"-"},"content":".material-icons.material-icons--outlined {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" font-family: \u0027Material Icons Outlined\u0027;"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":".material-icons-two-tone,"},{"lineNumber":83,"author":{"gitId":"-"},"content":".material-icons.material-icons--two-tone {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" font-family: \u0027Material Icons Two Tone\u0027;"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":".material-icons-round,"},{"lineNumber":88,"author":{"gitId":"-"},"content":".material-icons.material-icons--round {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" font-family: \u0027Material Icons Round\u0027;"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":".material-icons-sharp,"},{"lineNumber":93,"author":{"gitId":"-"},"content":".material-icons.material-icons--sharp {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" font-family: \u0027Material Icons Sharp\u0027;"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}"},{"lineNumber":96,"author":{"gitId":"-"},"content":"/* MaterialUI icon styles */"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":".link-grey-dark {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" color: #24292e;"},{"lineNumber":100,"author":{"gitId":"-"},"content":" font-weight: 500;"},{"lineNumber":101,"author":{"gitId":"-"},"content":" font-size: 16px;"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":".link-grey-dark:hover {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" color: #0366d6;"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":".no-underline {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" text-decoration: none !important;"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":".grid-flush-left {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" position: absolute;"},{"lineNumber":114,"author":{"gitId":"-"},"content":" left: 5px;"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":".grid-flush-right {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" position: absolute;"},{"lineNumber":119,"author":{"gitId":"-"},"content":" right: 5px;"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}"},{"lineNumber":121,"author":{"gitId":"-"},"content":""},{"lineNumber":122,"author":{"gitId":"-"},"content":".mat-table tbody tr:hover td {"},{"lineNumber":123,"author":{"gitId":"-"},"content":" background-color: #e8e8ee;"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":"table {"},{"lineNumber":127,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":128,"author":{"gitId":"-"},"content":" table-layout: fixed;"},{"lineNumber":129,"author":{"gitId":"-"},"content":"}"},{"lineNumber":130,"author":{"gitId":"-"},"content":""},{"lineNumber":131,"author":{"gitId":"-"},"content":".centralize {"},{"lineNumber":132,"author":{"gitId":"-"},"content":" display: flex;"},{"lineNumber":133,"author":{"gitId":"-"},"content":" justify-content: center;"},{"lineNumber":134,"author":{"gitId":"-"},"content":" align-items: center;"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":".editor-actions {"},{"lineNumber":138,"author":{"gitId":"-"},"content":" float: right;"},{"lineNumber":139,"author":{"gitId":"-"},"content":" padding: 10px;"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}"},{"lineNumber":141,"author":{"gitId":"-"},"content":""},{"lineNumber":142,"author":{"gitId":"-"},"content":".editor-action {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" margin-left: 10px !important;"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}"},{"lineNumber":145,"author":{"gitId":"-"},"content":""},{"lineNumber":146,"author":{"gitId":"-"},"content":".bold-name {"},{"lineNumber":147,"author":{"gitId":"-"},"content":" font-weight: 500;"},{"lineNumber":148,"author":{"gitId":"-"},"content":" font-size: 17px;"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}"},{"lineNumber":150,"author":{"gitId":"-"},"content":""},{"lineNumber":151,"author":{"gitId":"-"},"content":".full-grid-width {"},{"lineNumber":152,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}"},{"lineNumber":154,"author":{"gitId":"-"},"content":""},{"lineNumber":155,"author":{"gitId":"-"},"content":".white-spinner circle {"},{"lineNumber":156,"author":{"gitId":"-"},"content":" stroke: white !important;"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}"},{"lineNumber":158,"author":{"gitId":"-"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":".sync-spinner {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" display: flex;"},{"lineNumber":161,"author":{"gitId":"-"},"content":" align-items: center;"},{"lineNumber":162,"author":{"gitId":"-"},"content":" justify-content: center;"},{"lineNumber":163,"author":{"gitId":"-"},"content":" margin-left: 16px;"},{"lineNumber":164,"author":{"gitId":"-"},"content":" margin-right: 16px;"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}"},{"lineNumber":166,"author":{"gitId":"-"},"content":""},{"lineNumber":167,"author":{"gitId":"-"},"content":".column.left {"},{"lineNumber":168,"author":{"gitId":"-"},"content":" max-width: 85%;"},{"lineNumber":169,"author":{"gitId":"-"},"content":" min-width: 380px;"},{"lineNumber":170,"author":{"gitId":"-"},"content":"}"},{"lineNumber":171,"author":{"gitId":"-"},"content":""},{"lineNumber":172,"author":{"gitId":"-"},"content":".column.right {"},{"lineNumber":173,"author":{"gitId":"-"},"content":" max-width: 15%;"},{"lineNumber":174,"author":{"gitId":"-"},"content":" min-width: 180px;"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":3,"-":172}},{"path":"tests/app/auth/profiles/profiles.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, DebugElement } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { BrowserAnimationsModule } from \u0027@angular/platform-browser/animations\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { ProfilesComponent } from \u0027../../../../src/app/auth/profiles/profiles.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Profile } from \u0027../../../../src/app/core/models/profile.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ProfileService } from \u0027../../../../src/app/core/services/profile.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../../../../src/app/shared/shared.module\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":12,"author":{"gitId":"-"},"content":" template: `\u003capp-profiles (selectedProfileEmitter)\u003d\"onSelected($event)\"\u003e \u003c/app-profiles\u003e`"},{"lineNumber":13,"author":{"gitId":"-"},"content":"})"},{"lineNumber":14,"author":{"gitId":"-"},"content":"class TestHostComponent {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" selectedProfile: Profile | undefined;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" onSelected(profile: Profile) {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" this.selectedProfile \u003d profile;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"describe(\u0027ProfilesComponent\u0027, () \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" let fixture: ComponentFixture\u003cTestHostComponent\u003e;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" let debugElement: DebugElement;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" let nativeElement: HTMLElement;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" let testHost: TestHostComponent;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" let profilesEl: HTMLElement;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" const profileService \u003d jasmine.createSpyObj(\u0027ProfileService\u0027, [\u0027fetchExternalProfiles\u0027]);"},{"lineNumber":29,"author":{"gitId":"-"},"content":" const errorHandlingService \u003d jasmine.createSpyObj(\u0027ErrorHandlingService\u0027, [\u0027handleError\u0027]);"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" const testProfiles: Profile[] \u003d ["},{"lineNumber":32,"author":{"gitId":"-"},"content":" {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" profileName: \u0027testProfile1\u0027,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" repoName: \u0027test-org1/pe\u0027"},{"lineNumber":35,"author":{"gitId":"-"},"content":" },"},{"lineNumber":36,"author":{"gitId":"-"},"content":" {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" profileName: \u0027testProfile2\u0027,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" repoName: \u0027test-org2/pe\u0027"},{"lineNumber":39,"author":{"gitId":"-"},"content":" },"},{"lineNumber":40,"author":{"gitId":"-"},"content":" {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" profileName: \u0027testProfile3\u0027,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" repoName: \u0027test-org3/pe\u0027"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" beforeEach(waitForAsync(() \u003d\u003e {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" TestBed.configureTestingModule({"},{"lineNumber":48,"author":{"gitId":"-"},"content":" imports: [BrowserAnimationsModule, SharedModule],"},{"lineNumber":49,"author":{"gitId":"-"},"content":" declarations: [ProfilesComponent, TestHostComponent],"},{"lineNumber":50,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":51,"author":{"gitId":"-"},"content":" { provide: ProfileService, useValue: profileService },"},{"lineNumber":52,"author":{"gitId":"-"},"content":" { provide: ErrorHandlingService, useValue: errorHandlingService }"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }).compileComponents();"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }));"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" beforeEach(fakeAsync(() \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" profileService.fetchExternalProfiles.and.returnValue(Promise.resolve(testProfiles));"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" fixture \u003d TestBed.createComponent(TestHostComponent);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" testHost \u003d fixture.componentInstance;"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" debugElement \u003d fixture.debugElement;"},{"lineNumber":64,"author":{"gitId":"-"},"content":" nativeElement \u003d debugElement.nativeElement;"},{"lineNumber":65,"author":{"gitId":"-"},"content":" profilesEl \u003d \u003cHTMLElement\u003enativeElement.querySelector(\u0027app-profiles\u0027);"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" fixture.detectChanges(); // onInit()"},{"lineNumber":68,"author":{"gitId":"-"},"content":" tick(); // wait for profiles to be loaded"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }));"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" it(\u0027should display the correct profiles from AppConfig\u0027, () \u003d\u003e {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" openMatSelect();"},{"lineNumber":73,"author":{"gitId":"-"},"content":" const displayedOptions \u003d getOptions();"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" displayedOptions.slice(1).forEach((el, i) \u003d\u003e {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" const optionTextEl \u003d \u003cHTMLElement\u003eel.querySelector(\u0027.mat-option-text\u0027);"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!optionTextEl) {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" fail(\u0027optionTextEl should not be null\u0027);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }"},{"lineNumber":80,"author":{"gitId":"-"},"content":" const profileName \u003d optionTextEl.innerText;"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expect(profileName).toBe(testProfiles[i].profileName);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" });"},{"lineNumber":83,"author":{"gitId":"-"},"content":" });"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" it(\u0027should emit the correct profile through selectProfile when mat-option is clicked\u0027, () \u003d\u003e {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" openMatSelect();"},{"lineNumber":87,"author":{"gitId":"-"},"content":" const displayedOptions \u003d getOptions();"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" displayedOptions[3].click();"},{"lineNumber":90,"author":{"gitId":"-"},"content":" expect(testHost.selectedProfile).toEqual(testProfiles[2]);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":92,"author":{"gitId":"-"},"content":" });"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":" function openMatSelect(): void {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" const select \u003d \u003cHTMLElement\u003eprofilesEl.querySelector(\u0027.mat-select\u0027);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!select) {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" fail(\u0027Select should not be null\u0027);"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":" select.click();"},{"lineNumber":100,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":""},{"lineNumber":103,"author":{"gitId":"-"},"content":" function getOptions(): HTMLElement[] {"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return Array.from(document.querySelectorAll(\u0027.mat-option\u0027));"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }"},{"lineNumber":106,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":104}},{"path":"tests/app/auth/session-selection/session-selection.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, DebugElement, EventEmitter, Input, Output } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ComponentFixture, TestBed, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { By } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { BrowserAnimationsModule } from \u0027@angular/platform-browser/animations\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ProfilesComponent } from \u0027../../../../src/app/auth/profiles/profiles.component\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { SessionSelectionComponent } from \u0027../../../../src/app/auth/session-selection/session-selection.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { Profile } from \u0027../../../../src/app/core/models/profile.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027../../../../src/app/core/services/auth.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../../../src/app/core/services/github.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../../../src/app/core/services/logging.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../../src/app/core/services/phase.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../../../../src/app/shared/shared.module\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":17,"author":{"gitId":"-"},"content":" selector: \u0027app-profiles\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" template: \u0027\u0027"},{"lineNumber":19,"author":{"gitId":"-"},"content":"})"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class ProfilesStubComponent implements Partial\u003cProfilesComponent\u003e {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Output() selectedProfileEmitter: EventEmitter\u003cProfile\u003e \u003d new EventEmitter\u003cProfile\u003e();"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Input() urlEncodedSessionName: string;"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" selectProfile(profile: Profile): void {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.selectedProfileEmitter.emit(profile);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":"describe(\u0027SessionSelectionComponent (unit tests)\u0027, () \u003d\u003e {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" let fixture: ComponentFixture\u003cSessionSelectionComponent\u003e;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" let component: SessionSelectionComponent;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" let debugElement: DebugElement;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" let nativeElement: HTMLElement;"},{"lineNumber":34,"author":{"gitId":"-"},"content":" let profilesDebugEl: DebugElement;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" let profilesComponent: ProfilesComponent;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" let profileEmitter: EventEmitter\u003cProfile\u003e;"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" const logger \u003d jasmine.createSpyObj(\u0027LoggingService\u0027, [\u0027info\u0027]);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" const githubService \u003d jasmine.createSpyObj(\u0027GithubService\u0027, [\u0027storeOrganizationDetails\u0027]);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" const phaseService \u003d jasmine.createSpyObj(\u0027PhaseService\u0027, [\u0027storeSessionData\u0027]);"},{"lineNumber":41,"author":{"gitId":"-"},"content":" const authService \u003d jasmine.createSpyObj(\u0027AuthService\u0027, [\u0027startOAuthProcess\u0027, \u0027changeAuthState\u0027]);"},{"lineNumber":42,"author":{"gitId":"-"},"content":" const errorHandlingService \u003d jasmine.createSpyObj(\u0027ErrorHandlingService\u0027, [\u0027handleError\u0027]);"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":" const testProfile: Profile \u003d {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" profileName: \u0027testProfile\u0027,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" repoName: \u0027testOrg/pe\u0027"},{"lineNumber":47,"author":{"gitId":"-"},"content":" };"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" beforeEach(waitForAsync(() \u003d\u003e {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" TestBed.configureTestingModule({"},{"lineNumber":51,"author":{"gitId":"-"},"content":" imports: [SharedModule, BrowserAnimationsModule],"},{"lineNumber":52,"author":{"gitId":"-"},"content":" declarations: [SessionSelectionComponent, ProfilesStubComponent],"},{"lineNumber":53,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":54,"author":{"gitId":"-"},"content":" { provide: LoggingService, useValue: logger },"},{"lineNumber":55,"author":{"gitId":"-"},"content":" { provide: GithubService, useValue: githubService },"},{"lineNumber":56,"author":{"gitId":"-"},"content":" { provide: PhaseService, useValue: phaseService },"},{"lineNumber":57,"author":{"gitId":"-"},"content":" { provide: AuthService, useValue: authService },"},{"lineNumber":58,"author":{"gitId":"-"},"content":" { provide: ErrorHandlingService, useValue: errorHandlingService }"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }).compileComponents();"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }));"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" fixture \u003d TestBed.createComponent(SessionSelectionComponent);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" fixture.detectChanges(); // onInit()"},{"lineNumber":66,"author":{"gitId":"-"},"content":" component \u003d fixture.componentInstance;"},{"lineNumber":67,"author":{"gitId":"-"},"content":" debugElement \u003d fixture.debugElement;"},{"lineNumber":68,"author":{"gitId":"-"},"content":" nativeElement \u003d debugElement.nativeElement;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" profilesDebugEl \u003d debugElement.query(By.directive(ProfilesStubComponent));"},{"lineNumber":70,"author":{"gitId":"-"},"content":" profilesComponent \u003d profilesDebugEl.componentInstance;"},{"lineNumber":71,"author":{"gitId":"-"},"content":" profileEmitter \u003d profilesComponent.selectedProfileEmitter;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" spyOn(component.sessionEmitter, \u0027emit\u0027);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" });"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" it(\u0027renders without errors\u0027, () \u003d\u003e {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" expect(component).toBeTruthy();"},{"lineNumber":77,"author":{"gitId":"-"},"content":" });"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" it(\u0027renders the profiles component\u0027, () \u003d\u003e {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" expect(profilesComponent).toBeTruthy();"},{"lineNumber":81,"author":{"gitId":"-"},"content":" });"},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" describe(\u0027when profile is selected\u0027, () \u003d\u003e {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" it(\u0027should emit the correct repo name\u0027, () \u003d\u003e {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" profileEmitter.emit(testProfile);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":87,"author":{"gitId":"-"},"content":" expect(component.sessionEmitter.emit).toHaveBeenCalledWith(testProfile.repoName);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" });"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" it(\u0027should update the session input correctly\u0027, () \u003d\u003e {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" profileEmitter.emit(testProfile);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":93,"author":{"gitId":"-"},"content":" const sessionInput \u003d nativeElement.querySelector(\u0027input[formcontrolname\u003d\"session\"]\u0027);"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (sessionInput \u003d\u003d null) {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" fail(\u0027sessionFieldEl should not be null\u0027);"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":" expect((\u003cHTMLInputElement\u003esessionInput).value).toBe(testProfile.repoName);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" });"},{"lineNumber":101,"author":{"gitId":"-"},"content":" });"},{"lineNumber":102,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":100}},{"path":"tests/app/phase-team-response/issues-faulty/issues-faulty.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../../../src/app/core/services/user.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { IssuesFaultyComponent } from \u0027../../../../src/app/phase-team-response/issues-faulty/issues-faulty.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { TEAM_3, TEAM_4, USER_Q } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { generateIssueWithRandomData, ISSUE_WITH_EMPTY_DESCRIPTION } from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"describe(\u0027IssuesFaultyComponent\u0027, () \u003d\u003e {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" describe(\u0027.ngOnInit()\u0027, () \u003d\u003e {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" const dummyTeam \u003d TEAM_4;"},{"lineNumber":11,"author":{"gitId":"-"},"content":" const dummyIssue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":12,"author":{"gitId":"-"},"content":" let issueService: IssueService;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" let issuesFaultyComponent: IssuesFaultyComponent;"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const userService \u003d new UserService(null, null, null);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" userService.currentUser \u003d USER_Q;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" const DUMMY_DUPLICATE_ISSUE_ID \u003d 1;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" const DUMMY_RESPONSE \u003d \u0027dummy response\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" issueService \u003d new IssueService(null, null, null, null, null);"},{"lineNumber":21,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(dummyIssue);"},{"lineNumber":22,"author":{"gitId":"-"},"content":" issuesFaultyComponent \u003d new IssuesFaultyComponent(issueService, userService, null);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" issuesFaultyComponent.ngOnInit();"},{"lineNumber":24,"author":{"gitId":"-"},"content":" });"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for an issue with no team response\u0027, () \u003d\u003e {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" const testIssue \u003d { ...dummyIssue, teamResponse: undefined } as Issue;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(testIssue);"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" expect(issuesFaultyComponent.filter(testIssue)).toBeFalse();"},{"lineNumber":31,"author":{"gitId":"-"},"content":" });"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for a non-duplicate issue with responses\u0027, () \u003d\u003e {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" const testIssue \u003d { ...dummyIssue, teamResponse: DUMMY_RESPONSE, duplicateOf: undefined } as Issue;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(testIssue);"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" expect(issuesFaultyComponent.filter(testIssue)).toBeFalse();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" });"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for a duplicate issue with responses that is not duplicated by other issues\u0027, () \u003d\u003e {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" const testIssue \u003d {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" ...dummyIssue,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" teamResponse: DUMMY_RESPONSE,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" duplicateOf: DUMMY_DUPLICATE_ISSUE_ID"},{"lineNumber":45,"author":{"gitId":"-"},"content":" } as Issue;"},{"lineNumber":46,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(testIssue);"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" expect(issuesFaultyComponent.filter(testIssue)).toBeFalse();"},{"lineNumber":49,"author":{"gitId":"-"},"content":" });"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return true for a duplicate issue with responses that is duplicated by other issues\u0027, () \u003d\u003e {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" const testIssue \u003d {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ...Issue.createPhaseTeamResponseIssue(generateIssueWithRandomData(), TEAM_3),"},{"lineNumber":54,"author":{"gitId":"-"},"content":" duplicateOf: dummyIssue.id,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" teamResponse: DUMMY_RESPONSE"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } as Issue;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(testIssue);"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":" const duplicateOfTestIssue \u003d {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" ...Issue.createPhaseTeamResponseIssue(generateIssueWithRandomData(), TEAM_3),"},{"lineNumber":61,"author":{"gitId":"-"},"content":" duplicateOf: testIssue.id"},{"lineNumber":62,"author":{"gitId":"-"},"content":" } as Issue;"},{"lineNumber":63,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(duplicateOfTestIssue);"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" expect(issuesFaultyComponent.filter(testIssue)).toBeTrue();"},{"lineNumber":66,"author":{"gitId":"-"},"content":" });"},{"lineNumber":67,"author":{"gitId":"-"},"content":" });"},{"lineNumber":68,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":66}},{"path":"tests/app/phase-team-response/issues-pending/issues-pending.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Issue, STATUS } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Team } from \u0027../../../../src/app/core/models/team.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../../../src/app/core/services/user.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { IssuesPendingComponent } from \u0027../../../../src/app/phase-team-response/issues-pending/issues-pending.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { TEAM_4, USER_Q } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { ISSUE_WITH_EMPTY_DESCRIPTION } from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"describe(\u0027IssuesPendingComponent\u0027, () \u003d\u003e {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" describe(\u0027.ngOnInit()\u0027, () \u003d\u003e {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" const dummyTeam: Team \u003d TEAM_4;"},{"lineNumber":12,"author":{"gitId":"-"},"content":" let dummyIssue: Issue;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" let issuesPendingComponent: IssuesPendingComponent;"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const issueService: IssueService \u003d new IssueService(null, null, null, null, null);"},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const userService: UserService \u003d new UserService(null, null, null);"},{"lineNumber":16,"author":{"gitId":"-"},"content":" userService.currentUser \u003d USER_Q;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" const DUMMY_DUPLICATE_ISSUE_ID \u003d 1;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" const DUMMY_RESPONSE \u003d \u0027dummy response\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" dummyIssue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":22,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(dummyIssue);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" issuesPendingComponent \u003d new IssuesPendingComponent(issueService, null, userService);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" issuesPendingComponent.ngOnInit();"},{"lineNumber":25,"author":{"gitId":"-"},"content":" });"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for a duplicate issue with no team response\u0027, () \u003d\u003e {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d DUMMY_DUPLICATE_ISSUE_ID;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" issueService.issues[dummyIssue.id].teamResponse \u003d undefined;"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" expect(issuesPendingComponent.filter(dummyIssue)).toBeFalse();"},{"lineNumber":32,"author":{"gitId":"-"},"content":" });"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for a non-duplicate issue with responses\u0027, () \u003d\u003e {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d undefined;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" issueService.issues[dummyIssue.id].teamResponse \u003d DUMMY_RESPONSE;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dummyIssue.status \u003d STATUS.Done;"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" expect(issuesPendingComponent.filter(dummyIssue)).toBeFalse();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" });"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for a duplicate issue with responses\u0027, () \u003d\u003e {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d DUMMY_DUPLICATE_ISSUE_ID;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" issueService.issues[dummyIssue.id].teamResponse \u003d DUMMY_RESPONSE;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" dummyIssue.status \u003d STATUS.Done;"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" expect(issuesPendingComponent.filter(dummyIssue)).toBeFalse();"},{"lineNumber":48,"author":{"gitId":"-"},"content":" });"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return true for a non-duplicate issue with no responses\u0027, () \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d undefined;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" issueService.issues[dummyIssue.id].teamResponse \u003d undefined;"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" expect(issuesPendingComponent.filter(dummyIssue)).toBeTrue();"},{"lineNumber":55,"author":{"gitId":"-"},"content":" });"},{"lineNumber":56,"author":{"gitId":"-"},"content":" });"},{"lineNumber":57,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":55}},{"path":"tests/app/phase-team-response/issues-responded/issues-responded.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Issue, STATUS } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../../../src/app/core/services/user.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { IssuesRespondedComponent } from \u0027../../../../src/app/phase-team-response/issues-responded/issues-responded.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { TEAM_4, USER_Q } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ISSUE_WITH_EMPTY_DESCRIPTION } from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"describe(\u0027IssuesRespondedComponent\u0027, () \u003d\u003e {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" describe(\u0027.ngOnInit()\u0027, () \u003d\u003e {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" const DUMMY_TEAM \u003d TEAM_4;"},{"lineNumber":11,"author":{"gitId":"-"},"content":" const DUMMY_DUPLICATE_ISSUE_ID \u003d 1;"},{"lineNumber":12,"author":{"gitId":"-"},"content":" const DUMMY_RESPONSE \u003d \u0027dummy response\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" let dummyIssue: Issue;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const issueService \u003d new IssueService(null, null, null, null, null);"},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const userService \u003d new UserService(null, null, null);"},{"lineNumber":17,"author":{"gitId":"-"},"content":" userService.currentUser \u003d USER_Q;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" const issuesRespondedComponent \u003d new IssuesRespondedComponent(issueService, userService);"},{"lineNumber":19,"author":{"gitId":"-"},"content":" issuesRespondedComponent.ngOnInit();"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" dummyIssue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, DUMMY_TEAM);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(dummyIssue);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" });"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for a non-duplicate issue with no team response and not marked done\u0027, () \u003d\u003e {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d undefined;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" dummyIssue.status \u003d undefined;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" dummyIssue.teamResponse \u003d undefined;"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" expect(issuesRespondedComponent.filter(dummyIssue)).toBeFalse();"},{"lineNumber":32,"author":{"gitId":"-"},"content":" });"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for a non-duplicate issue with responses and not marked done\u0027, () \u003d\u003e {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d undefined;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" dummyIssue.status \u003d undefined;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dummyIssue.teamResponse \u003d DUMMY_RESPONSE;"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" expect(issuesRespondedComponent.filter(dummyIssue)).toBeFalse();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" });"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return false for a duplicate issue with no team response and not marked done\u0027, () \u003d\u003e {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d DUMMY_DUPLICATE_ISSUE_ID;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dummyIssue.status \u003d undefined;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" dummyIssue.teamResponse \u003d undefined;"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" expect(issuesRespondedComponent.filter(dummyIssue)).toBeFalse();"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d DUMMY_DUPLICATE_ISSUE_ID;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" dummyIssue.status \u003d STATUS.Incomplete;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" dummyIssue.teamResponse \u003d undefined;"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" expect(issuesRespondedComponent.filter(dummyIssue)).toBeFalse();"},{"lineNumber":54,"author":{"gitId":"-"},"content":" });"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" it(\u0027should set filter to return true for a non-duplicate issue that is marked done with a team response\u0027, () \u003d\u003e {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" dummyIssue.duplicateOf \u003d undefined;"},{"lineNumber":58,"author":{"gitId":"-"},"content":" dummyIssue.status \u003d STATUS.Done;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" dummyIssue.teamResponse \u003d DUMMY_RESPONSE;"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" expect(issuesRespondedComponent.filter(dummyIssue)).toBeTrue();"},{"lineNumber":62,"author":{"gitId":"-"},"content":" });"},{"lineNumber":63,"author":{"gitId":"-"},"content":" });"},{"lineNumber":64,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":62}},{"path":"tests/app/shared/comment-editor/upload-text-insertor.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { DebugElement, ElementRef } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ComponentFixture, TestBed, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { FormControl, FormGroup } from \u0027@angular/forms\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { BrowserAnimationsModule } from \u0027@angular/platform-browser/animations\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { MarkdownModule } from \u0027ngx-markdown\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../../../src/app/core/services/logging.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { UploadService } from \u0027../../../../src/app/core/services/upload.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { CommentEditorComponent } from \u0027../../../../src/app/shared/comment-editor/comment-editor.component\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" DISPLAYABLE_CONTENT,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" insertUploadingText,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" insertUploadUrl,"},{"lineNumber":16,"author":{"gitId":"-"},"content":" insertUploadUrlVideo"},{"lineNumber":17,"author":{"gitId":"-"},"content":"} from \u0027../../../../src/app/shared/comment-editor/upload-text-insertor\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../../../../src/app/shared/shared.module\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"function isDisplayable(filename) {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return DISPLAYABLE_CONTENT.includes(filename.split(\u0027.\u0027).pop().toLowerCase());"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"describe(\u0027UploadTextInsertor\u0027, () \u003d\u003e {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" let fixture: ComponentFixture\u003cCommentEditorComponent\u003e;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" let commentEditorComponent: CommentEditorComponent;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" let form: FormGroup;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" let commentField;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" let commentTextArea: ElementRef\u003cHTMLTextAreaElement\u003e;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" let textAreaEl: HTMLTextAreaElement;"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" const uploadService \u003d jasmine.createSpyObj([\u0027isVideoFile\u0027, \u0027isSupportedFileType\u0027, \u0027uploadFile\u0027]);"},{"lineNumber":33,"author":{"gitId":"-"},"content":" const errorHandlingService \u003d jasmine.createSpyObj([\u0027handleError\u0027]);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" const logger \u003d jasmine.createSpyObj([\u0027info\u0027]);"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" const uploadTextTemplate \u003d (filename) \u003d\u003e `${isDisplayable(filename) ? \u0027!\u0027 : \u0027\u0027}[Uploading ${filename}...]\\n`;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" const uploadUrlTemplate \u003d (filename, uploadUrl) \u003d\u003e `${isDisplayable(filename) ? \u0027!\u0027 : \u0027\u0027}[${filename}](${uploadUrl})\\n`;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" const uploadVideoTemplate \u003d (uploadUrl) \u003d\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" `\u003ci\u003e\u003cvideo controls\u003e\u003csource src\u003d\"${uploadUrl}\" type\u003d\"video/mp4\"\u003eYour browser does not support the video tag.\u003c/video\u003e\u003cbr\u003evideo:${uploadUrl}\u003c/i\u003e\\n`;"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" const testDisplayableFilename \u003d \u0027test_file.jpg\u0027;"},{"lineNumber":42,"author":{"gitId":"-"},"content":" const testFilename \u003d \u0027test_file.pdf\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" const testVideo \u003d \u0027test_vid.mp4\u0027;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" const testUrl \u003d \u0027testurl.com/test\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" const dummyText \u003d \u0027dummyText\u0027;"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" beforeEach(waitForAsync(() \u003d\u003e {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" TestBed.configureTestingModule({"},{"lineNumber":49,"author":{"gitId":"-"},"content":" imports: [SharedModule, MarkdownModule.forChild(), BrowserAnimationsModule],"},{"lineNumber":50,"author":{"gitId":"-"},"content":" declarations: [CommentEditorComponent],"},{"lineNumber":51,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":52,"author":{"gitId":"-"},"content":" { provide: UploadService, useValue: uploadService },"},{"lineNumber":53,"author":{"gitId":"-"},"content":" { provide: ErrorHandlingService, useValue: errorHandlingService },"},{"lineNumber":54,"author":{"gitId":"-"},"content":" { provide: LoggingService, useValue: logger }"},{"lineNumber":55,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }).compileComponents();"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }));"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" fixture \u003d TestBed.createComponent(CommentEditorComponent);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" form \u003d new FormGroup({"},{"lineNumber":62,"author":{"gitId":"-"},"content":" description: new FormControl(\u0027\u0027)"},{"lineNumber":63,"author":{"gitId":"-"},"content":" });"},{"lineNumber":64,"author":{"gitId":"-"},"content":" commentField \u003d form.get(\u0027description\u0027);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" commentEditorComponent \u003d fixture.componentInstance;"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Set up compulsory input fields"},{"lineNumber":67,"author":{"gitId":"-"},"content":" commentEditorComponent.commentField \u003d commentField;"},{"lineNumber":68,"author":{"gitId":"-"},"content":" commentEditorComponent.commentForm \u003d form;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" commentEditorComponent.id \u003d \u0027description\u0027;"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" commentTextArea \u003d commentEditorComponent.commentTextArea;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" textAreaEl \u003d commentTextArea.nativeElement;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" });"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" it(\u0027should set up correctly\u0027, () \u003d\u003e {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" expect(fixture).toBeDefined();"},{"lineNumber":78,"author":{"gitId":"-"},"content":" expect(commentTextArea).toBeDefined();"},{"lineNumber":79,"author":{"gitId":"-"},"content":" expect(commentField).toBeDefined();"},{"lineNumber":80,"author":{"gitId":"-"},"content":" });"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":" describe(\u0027insertUploadingText\u0027, () \u003d\u003e {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" describe(\u0027should set the correct value in the commentField\u0027, () \u003d\u003e {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" it(\u0027should insert a ! for displayable files\u0027, () \u003d\u003e {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" const expected \u003d uploadTextTemplate(testDisplayableFilename);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" insertUploadingText(testDisplayableFilename, commentField, commentTextArea);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" expect(commentField.value).toBe(expected);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" });"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" it(\u0027should not insert a ! for non-displayable files\u0027, () \u003d\u003e {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" const expected \u003d uploadTextTemplate(testFilename);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" insertUploadingText(testFilename, commentField, commentTextArea);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" expect(commentField.value).toBe(expected);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" });"},{"lineNumber":95,"author":{"gitId":"-"},"content":" });"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" it(\"should reposition the cursor by the uploading text\u0027s length\", () \u003d\u003e {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" const initialPosition \u003d textAreaEl.selectionEnd;"},{"lineNumber":99,"author":{"gitId":"-"},"content":" const expected \u003d uploadTextTemplate(testDisplayableFilename);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" insertUploadingText(testDisplayableFilename, commentField, commentTextArea);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" expect(textAreaEl.selectionEnd).toBe(expected.length + initialPosition);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" });"},{"lineNumber":103,"author":{"gitId":"-"},"content":" });"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" describe(\u0027replacePlaceholderString\u0027, () \u003d\u003e {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" insertUploadingText(testDisplayableFilename, commentField, commentTextArea);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" });"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":" describe(\u0027should position the cursor\u0027, () \u003d\u003e {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" it(\u0027should reposition to the end of the upload url if cursor is within the uploading text\u0027, () \u003d\u003e {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" insertUploadUrl(testDisplayableFilename, testUrl, commentField, commentTextArea);"},{"lineNumber":113,"author":{"gitId":"-"},"content":" const expected \u003d uploadUrlTemplate(testDisplayableFilename, testUrl);"},{"lineNumber":114,"author":{"gitId":"-"},"content":" expect(textAreaEl.selectionEnd).toBe(expected.length);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" });"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":" it(\u0027should not reposition if the cursor is before the uploading text\u0027, () \u003d\u003e {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // Insert text before the upload text and position cursor at the start"},{"lineNumber":119,"author":{"gitId":"-"},"content":" const startOfField \u003d 0;"},{"lineNumber":120,"author":{"gitId":"-"},"content":" commentField.setValue(`${dummyText}${commentField.value}`);"},{"lineNumber":121,"author":{"gitId":"-"},"content":" textAreaEl.setSelectionRange(startOfField, startOfField);"},{"lineNumber":122,"author":{"gitId":"-"},"content":" insertUploadUrl(testDisplayableFilename, testUrl, commentField, commentTextArea);"},{"lineNumber":123,"author":{"gitId":"-"},"content":" expect(textAreaEl.selectionEnd).toBe(startOfField);"},{"lineNumber":124,"author":{"gitId":"-"},"content":" });"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":" it(\u0027should reposition the cursor by the difference in length if cursor is after the uploading text\u0027, () \u003d\u003e {"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // Insert text after the upload text and position cursor at the end"},{"lineNumber":128,"author":{"gitId":"-"},"content":" commentField.setValue(`${commentField.value}${dummyText}`);"},{"lineNumber":129,"author":{"gitId":"-"},"content":" const endOfField \u003d commentField.value.length;"},{"lineNumber":130,"author":{"gitId":"-"},"content":" textAreaEl.setSelectionRange(endOfField, endOfField);"},{"lineNumber":131,"author":{"gitId":"-"},"content":" insertUploadUrl(testDisplayableFilename, testUrl, commentField, commentTextArea);"},{"lineNumber":132,"author":{"gitId":"-"},"content":" const updatedEndOfField \u003d commentField.value.length;"},{"lineNumber":133,"author":{"gitId":"-"},"content":" expect(textAreaEl.selectionEnd).toBe(updatedEndOfField);"},{"lineNumber":134,"author":{"gitId":"-"},"content":" });"},{"lineNumber":135,"author":{"gitId":"-"},"content":" });"},{"lineNumber":136,"author":{"gitId":"-"},"content":" });"},{"lineNumber":137,"author":{"gitId":"-"},"content":""},{"lineNumber":138,"author":{"gitId":"-"},"content":" describe(\u0027insertUploadUrl\u0027, () \u003d\u003e {"},{"lineNumber":139,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" insertUploadingText(testDisplayableFilename, commentField, commentTextArea);"},{"lineNumber":141,"author":{"gitId":"-"},"content":" });"},{"lineNumber":142,"author":{"gitId":"-"},"content":""},{"lineNumber":143,"author":{"gitId":"-"},"content":" it(\u0027should replace the uploading text with the filename and link\u0027, () \u003d\u003e {"},{"lineNumber":144,"author":{"gitId":"-"},"content":" insertUploadUrl(testDisplayableFilename, testUrl, commentField, commentTextArea);"},{"lineNumber":145,"author":{"gitId":"-"},"content":" const expected \u003d uploadUrlTemplate(testDisplayableFilename, testUrl);"},{"lineNumber":146,"author":{"gitId":"-"},"content":" expect(commentField.value).toBe(expected);"},{"lineNumber":147,"author":{"gitId":"-"},"content":" });"},{"lineNumber":148,"author":{"gitId":"-"},"content":""},{"lineNumber":149,"author":{"gitId":"-"},"content":" it(\u0027should replace only the uploading text, leaving the rest of the field unchanged\u0027, () \u003d\u003e {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // insert dummy text before and after, should remain unchanged"},{"lineNumber":151,"author":{"gitId":"-"},"content":" commentField.setValue(`${dummyText}${commentField.value}${dummyText}`);"},{"lineNumber":152,"author":{"gitId":"-"},"content":" insertUploadUrl(testDisplayableFilename, testUrl, commentField, commentTextArea);"},{"lineNumber":153,"author":{"gitId":"-"},"content":" const expected \u003d `${dummyText}${uploadUrlTemplate(testDisplayableFilename, testUrl)}${dummyText}`;"},{"lineNumber":154,"author":{"gitId":"-"},"content":" expect(commentField.value).toBe(expected);"},{"lineNumber":155,"author":{"gitId":"-"},"content":" });"},{"lineNumber":156,"author":{"gitId":"-"},"content":" });"},{"lineNumber":157,"author":{"gitId":"-"},"content":""},{"lineNumber":158,"author":{"gitId":"-"},"content":" describe(\u0027insertUploadUrlVideo\u0027, () \u003d\u003e {"},{"lineNumber":159,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" insertUploadingText(testVideo, commentField, commentTextArea);"},{"lineNumber":161,"author":{"gitId":"-"},"content":" });"},{"lineNumber":162,"author":{"gitId":"-"},"content":""},{"lineNumber":163,"author":{"gitId":"-"},"content":" it(\u0027should replace the uploading text with the correct HTML text\u0027, () \u003d\u003e {"},{"lineNumber":164,"author":{"gitId":"-"},"content":" insertUploadUrlVideo(testVideo, testUrl, commentField, commentTextArea);"},{"lineNumber":165,"author":{"gitId":"-"},"content":" const expected \u003d uploadVideoTemplate(testUrl);"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expect(commentField.value).toBe(expected);"},{"lineNumber":167,"author":{"gitId":"-"},"content":" });"},{"lineNumber":168,"author":{"gitId":"-"},"content":" });"},{"lineNumber":169,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":167}},{"path":"tests/app/shared/issue-tables/search-filter.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Team } from \u0027../../../../src/app/core/models/team.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027../../../../src/app/shared/issue-tables/issue-tables-columns\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { applySearchFilter } from \u0027../../../../src/app/shared/issue-tables/search-filter\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { USER_SHUMING } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" DUPLICATED_ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" ISSUE_WITH_ASSIGNEES,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY"},{"lineNumber":13,"author":{"gitId":"-"},"content":"} from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"describe(\u0027search-filter\u0027, () \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" describe(\u0027applySearchFilter()\u0027, () \u003d\u003e {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" const dummyTeam: Team \u003d new Team({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" id: \u0027dummyId\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" teamMembers: []"},{"lineNumber":20,"author":{"gitId":"-"},"content":" });"},{"lineNumber":21,"author":{"gitId":"-"},"content":" let searchKey: string;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" const mediumSeverityIssueWithResponse: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mediumSeverityIssueWithResponse.response \u003d \u0027Accepted\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" const mediumSeverityIssueWithAssigneee: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_ASSIGNEES, dummyTeam);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" const lowSeverityFeatureFlawIssue: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY, dummyTeam);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" const highSeverityDocumentationBugIssue: Issue \u003d Issue.createPhaseTeamResponseIssue("},{"lineNumber":27,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" dummyTeam"},{"lineNumber":29,"author":{"gitId":"-"},"content":" );"},{"lineNumber":30,"author":{"gitId":"-"},"content":" const duplicatedIssue: Issue \u003d Issue.createPhaseTeamResponseIssue(DUPLICATED_ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY, dummyTeam);"},{"lineNumber":31,"author":{"gitId":"-"},"content":" duplicatedIssue.duplicateOf \u003d highSeverityDocumentationBugIssue.id;"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" const issuesList: Issue[] \u003d ["},{"lineNumber":34,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" highSeverityDocumentationBugIssue"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":39,"author":{"gitId":"-"},"content":" const displayedColumns: string[] \u003d ["},{"lineNumber":40,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.ID,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.TITLE,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.TYPE,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.SEVERITY,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.RESPONSE,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.ASSIGNEE,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.DUPLICATED_ISSUES"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const issueService: IssueService \u003d new IssueService(null, null, null, null, null);"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(mediumSeverityIssueWithResponse);"},{"lineNumber":52,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(mediumSeverityIssueWithAssigneee);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(lowSeverityFeatureFlawIssue);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(highSeverityDocumentationBugIssue);"},{"lineNumber":55,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(duplicatedIssue);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" });"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":" it(\u0027can filter for issues which are assigned to a specific user\u0027, () \u003d\u003e {"},{"lineNumber":59,"author":{"gitId":"-"},"content":" searchKey \u003d USER_SHUMING.loginId;"},{"lineNumber":60,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithAssigneee]);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" });"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" it(\u0027can filter for an issue by the id of its duplicate issues\u0027, () \u003d\u003e {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" searchKey \u003d duplicatedIssue.id.toString();"},{"lineNumber":65,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([highSeverityDocumentationBugIssue]);"},{"lineNumber":66,"author":{"gitId":"-"},"content":" });"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" it(\u0027can filter for issues that contain the search key in any other column\u0027, () \u003d\u003e {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Search by id of issue"},{"lineNumber":70,"author":{"gitId":"-"},"content":" searchKey \u003d mediumSeverityIssueWithResponse.id.toString();"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithResponse]);"},{"lineNumber":72,"author":{"gitId":"-"},"content":""},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Search by title of issue"},{"lineNumber":74,"author":{"gitId":"-"},"content":" searchKey \u003d mediumSeverityIssueWithAssigneee.title;"},{"lineNumber":75,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithAssigneee]);"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":" // Search by type of issue"},{"lineNumber":78,"author":{"gitId":"-"},"content":" searchKey \u003d highSeverityDocumentationBugIssue.type;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([highSeverityDocumentationBugIssue]);"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Search by severity of issue"},{"lineNumber":82,"author":{"gitId":"-"},"content":" searchKey \u003d lowSeverityFeatureFlawIssue.severity;"},{"lineNumber":83,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([lowSeverityFeatureFlawIssue]);"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" // Search by response of issue"},{"lineNumber":86,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" searchKey \u003d mediumSeverityIssueWithResponse.response;"},{"lineNumber":87,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithResponse]);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" });"},{"lineNumber":89,"author":{"gitId":"-"},"content":" });"},{"lineNumber":90,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":3,"-":87}},{"path":"tests/app/shared/issue/assignee/assignee.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { DebugElement } from \u0027@angular/core\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ComponentFixture, TestBed, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { FormsModule } from \u0027@angular/forms\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { By } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { BrowserAnimationsModule } from \u0027@angular/platform-browser/animations\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../../../../src/app/core/models/phase.model\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { Team } from \u0027../../../../../src/app/core/models/team.model\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { User, UserRole } from \u0027../../../../../src/app/core/models/user.model\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../../../../src/app/core/services/permission.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../../../src/app/core/services/phase.service\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { AssigneeComponent } from \u0027../../../../../src/app/shared/issue/assignee/assignee.component\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { MaterialModule } from \u0027../../../../../src/app/shared/material.module\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import { ISSUE_WITH_EMPTY_DESCRIPTION } from \u0027../../../../constants/githubissue.constants\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"describe(\u0027AssigneeComponent\u0027, () \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" let component: AssigneeComponent;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" let debugElement: DebugElement;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" let nativeElement: HTMLElement;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" let fixture: ComponentFixture\u003cAssigneeComponent\u003e;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" let dummyIssue: Issue;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" const testStudent: User \u003d {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" loginId: \u0027testStudent\u0027,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" role: UserRole.Student"},{"lineNumber":31,"author":{"gitId":"-"},"content":" };"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" const testStudent2: User \u003d {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" loginId: \u0027testStudent2\u0027,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" role: UserRole.Student"},{"lineNumber":36,"author":{"gitId":"-"},"content":" };"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" const testStudent3: User \u003d {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" loginId: \u0027testStudent3\u0027,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" role: UserRole.Student"},{"lineNumber":41,"author":{"gitId":"-"},"content":" };"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" const testStudent4: User \u003d {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" loginId: \u0027testStudent4\u0027,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" role: UserRole.Student"},{"lineNumber":46,"author":{"gitId":"-"},"content":" };"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" const dummyTeam: Team \u003d new Team({"},{"lineNumber":49,"author":{"gitId":"-"},"content":" id: \u0027F09-2\u0027,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" teamMembers: [testStudent, testStudent2, testStudent3, testStudent4]"},{"lineNumber":51,"author":{"gitId":"-"},"content":" });"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" const phaseService: any \u003d jasmine.createSpyObj(\u0027PhaseService\u0027, [], { currentPhase: Phase.phaseTeamResponse });"},{"lineNumber":54,"author":{"gitId":"-"},"content":" const issueService: any \u003d jasmine.createSpyObj(\u0027IssueService\u0027, [\u0027getDuplicateIssuesFor\u0027, \u0027getLatestIssue\u0027, \u0027updateIssue\u0027]);"},{"lineNumber":55,"author":{"gitId":"-"},"content":" const permissionsService: any \u003d jasmine.createSpyObj(\u0027PermissionService\u0027, [\u0027isIssueLabelsEditable\u0027]);"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" beforeEach(waitForAsync(() \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" TestBed.configureTestingModule({"},{"lineNumber":59,"author":{"gitId":"-"},"content":" declarations: [AssigneeComponent],"},{"lineNumber":60,"author":{"gitId":"-"},"content":" providers: [IssueService, ErrorHandlingService, PhaseService, PermissionService],"},{"lineNumber":61,"author":{"gitId":"-"},"content":" imports: [FormsModule, MaterialModule, BrowserAnimationsModule]"},{"lineNumber":62,"author":{"gitId":"-"},"content":" })"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .overrideProvider(IssueService, { useValue: issueService })"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .overrideProvider(PhaseService, { useValue: phaseService })"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .overrideProvider(PermissionService, { useValue: permissionsService })"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .compileComponents();"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }));"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" permissionsService.isIssueLabelsEditable.and.callFake(() \u003d\u003e true);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" issueService.getDuplicateIssuesFor.and.returnValue(of([]));"},{"lineNumber":72,"author":{"gitId":"-"},"content":" fixture \u003d TestBed.createComponent(AssigneeComponent);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" component \u003d fixture.componentInstance;"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" dummyIssue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":76,"author":{"gitId":"-"},"content":" component.team \u003d dummyTeam;"},{"lineNumber":77,"author":{"gitId":"-"},"content":" component.issue \u003d dummyIssue;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" debugElement \u003d fixture.debugElement;"},{"lineNumber":81,"author":{"gitId":"-"},"content":" nativeElement \u003d fixture.nativeElement;"},{"lineNumber":82,"author":{"gitId":"-"},"content":" });"},{"lineNumber":83,"author":{"gitId":"-"},"content":""},{"lineNumber":84,"author":{"gitId":"-"},"content":" it(\u0027should have a placeholder value of - given no assignees\u0027, () \u003d\u003e {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" const matPlaceholderValue: HTMLElement \u003d debugElement.query(By.css(\u0027p\u0027)).nativeElement;"},{"lineNumber":86,"author":{"gitId":"-"},"content":" expect(matPlaceholderValue.innerText).toEqual(\u0027-\u0027); // Placeholder Value"},{"lineNumber":87,"author":{"gitId":"-"},"content":" });"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" it(\u0027should be able to open the assignee selector\u0027, () \u003d\u003e {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" openMatSelect();"},{"lineNumber":91,"author":{"gitId":"-"},"content":" const matOption: HTMLElement \u003d debugElement.query(By.css(\u0027.mat-option\u0027)).nativeElement;"},{"lineNumber":92,"author":{"gitId":"-"},"content":" const inputElement: HTMLElement \u003d debugElement.query(By.css(\u0027.mat-select-panel\u0027)).nativeElement;"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":" expect(inputElement.children.length).toBe(dummyTeam.teamMembers.length);"},{"lineNumber":95,"author":{"gitId":"-"},"content":" expect(matOption.attributes.getNamedItem(\u0027aria-selected\u0027).value).toEqual(\u0027false\u0027);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" });"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" it(\u0027should emit an event containing the issue with updated assignees, upon closing the MatSelect\u0027, () \u003d\u003e {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" spyOn(component.issueUpdated, \u0027emit\u0027);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" openMatSelect();"},{"lineNumber":101,"author":{"gitId":"-"},"content":" addAssignee();"},{"lineNumber":102,"author":{"gitId":"-"},"content":" dispatchClosedEvent();"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":" expect(component.issueUpdated.emit).toHaveBeenCalledWith(jasmine.objectContaining({ assignees: [testStudent.loginId] }));"},{"lineNumber":105,"author":{"gitId":"-"},"content":" });"},{"lineNumber":106,"author":{"gitId":"-"},"content":""},{"lineNumber":107,"author":{"gitId":"-"},"content":" it(\u0027should show the updated assignees upon receiving an updated issue\u0027, () \u003d\u003e {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" component.issue.assignees \u003d [testStudent.loginId];"},{"lineNumber":109,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":110,"author":{"gitId":"-"},"content":""},{"lineNumber":111,"author":{"gitId":"-"},"content":" const matListText: HTMLElement \u003d debugElement.query(By.css(\u0027.mat-list-item-content\u0027)).nativeElement;"},{"lineNumber":112,"author":{"gitId":"-"},"content":" expect(matListText.innerText).toEqual(testStudent.loginId);"},{"lineNumber":113,"author":{"gitId":"-"},"content":" });"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"-"},"content":" it(\u0027should update assignees of duplicate issues\u0027, () \u003d\u003e {"},{"lineNumber":116,"author":{"gitId":"-"},"content":" const duplicateIssue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":117,"author":{"gitId":"-"},"content":" issueService.updateIssue.and.callFake((x: Issue) \u003d\u003e of(x));"},{"lineNumber":118,"author":{"gitId":"-"},"content":" issueService.getDuplicateIssuesFor.and.returnValue(of([duplicateIssue]));"},{"lineNumber":119,"author":{"gitId":"-"},"content":""},{"lineNumber":120,"author":{"gitId":"-"},"content":" openMatSelect();"},{"lineNumber":121,"author":{"gitId":"-"},"content":" addAssignee();"},{"lineNumber":122,"author":{"gitId":"-"},"content":" dispatchClosedEvent();"},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"-"},"content":" const updatedIssue \u003d dummyIssue.clone(phaseService.currentPhase);"},{"lineNumber":125,"author":{"gitId":"-"},"content":" updatedIssue.assignees \u003d [testStudent.loginId];"},{"lineNumber":126,"author":{"gitId":"-"},"content":" const updatedDuplicateIssue \u003d duplicateIssue.clone(phaseService.currentPhase);"},{"lineNumber":127,"author":{"gitId":"-"},"content":" updatedDuplicateIssue.assignees \u003d [testStudent.loginId];"},{"lineNumber":128,"author":{"gitId":"-"},"content":""},{"lineNumber":129,"author":{"gitId":"-"},"content":" expect(issueService.updateIssue).toHaveBeenCalledWith(updatedIssue);"},{"lineNumber":130,"author":{"gitId":"-"},"content":" expect(issueService.updateIssue).toHaveBeenCalledWith(updatedDuplicateIssue);"},{"lineNumber":131,"author":{"gitId":"-"},"content":" });"},{"lineNumber":132,"author":{"gitId":"-"},"content":""},{"lineNumber":133,"author":{"gitId":"-"},"content":" function openMatSelect(): void {"},{"lineNumber":134,"author":{"gitId":"-"},"content":" const matSelectButton: HTMLElement \u003d nativeElement.querySelector(\u0027button\u0027);"},{"lineNumber":135,"author":{"gitId":"-"},"content":" matSelectButton.click();"},{"lineNumber":136,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" function addAssignee(): void {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" const matOption: HTMLElement \u003d debugElement.query(By.css(\u0027.mat-option\u0027)).nativeElement;"},{"lineNumber":141,"author":{"gitId":"-"},"content":" matOption.click();"},{"lineNumber":142,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }"},{"lineNumber":144,"author":{"gitId":"-"},"content":""},{"lineNumber":145,"author":{"gitId":"-"},"content":" function dispatchClosedEvent() {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" const matSelectElement: HTMLElement \u003d debugElement.query(By.css(\u0027.mat-select\u0027)).nativeElement;"},{"lineNumber":147,"author":{"gitId":"-"},"content":" issueService.updateIssue.and.callFake((updatedIssue: Issue) \u003d\u003e of(updatedIssue));"},{"lineNumber":148,"author":{"gitId":"-"},"content":" matSelectElement.dispatchEvent(new Event(\u0027closed\u0027));"},{"lineNumber":149,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }"},{"lineNumber":151,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":149}},{"path":"tests/app/shared/issue/description/description.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { FormBuilder, NgForm } from \u0027@angular/forms\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatDialogRef } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { UserConfirmationComponent } from \u0027../../../../../src/app/core/guards/user-confirmation/user-confirmation.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../../../../src/app/core/models/phase.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../../../../src/app/core/services/dialog.service\u0027;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoadingService } from \u0027../../../../../src/app/core/services/loading.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../../../src/app/core/services/phase.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { DescriptionComponent } from \u0027../../../../../src/app/shared/issue/description/description.component\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { ISSUE_WITH_EMPTY_DESCRIPTION } from \u0027../../../../constants/githubissue.constants\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"describe(\u0027DescriptionComponent\u0027, () \u003d\u003e {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" let descriptionComponent: DescriptionComponent;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" let issueService: any;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" let phaseService: PhaseService;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" let formBuilder: FormBuilder;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" let thisIssue: Issue;"},{"lineNumber":19,"author":{"gitId":"-"},"content":" let dialog: any;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" let errorHandlingService: any;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" let dialogService: jasmine.SpyObj\u003cDialogService\u003e;"},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let loadingService: jasmine.SpyObj\u003cLoadingService\u003e;"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" formBuilder \u003d new FormBuilder();"},{"lineNumber":26,"author":{"gitId":"-"},"content":" phaseService \u003d new PhaseService(null, null, null);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" phaseService.currentPhase \u003d Phase.phaseTeamResponse;"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" dialog \u003d jasmine.createSpyObj(\u0027MatDialog\u0027, [\u0027open\u0027]);"},{"lineNumber":30,"author":{"gitId":"-"},"content":" errorHandlingService \u003d jasmine.createSpyObj(\u0027ErrorHandlingService\u0027, [\u0027handleError\u0027]);"},{"lineNumber":31,"author":{"gitId":"-"},"content":" issueService \u003d jasmine.createSpyObj(\u0027IssueService\u0027, [\u0027getIssue\u0027, \u0027getLatestIssue\u0027, \u0027updateIssue\u0027]);"},{"lineNumber":32,"author":{"gitId":"-"},"content":" dialogService \u003d jasmine.createSpyObj(\u0027DialogService\u0027, [\u0027openUserConfirmationModal\u0027]);"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService \u003d jasmine.createSpyObj(\u0027LoadingService\u0027, ["},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027showLoader\u0027,"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027hideLoader\u0027,"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addAnimationMode\u0027,"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addCssClasses\u0027,"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addSpinnerOptions\u0027,"},{"lineNumber":39,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addTheme\u0027,"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addViewContainerRef\u0027"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ]);"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addAnimationMode.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addCssClasses.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addSpinnerOptions.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addTheme.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addViewContainerRef.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptionComponent \u003d new DescriptionComponent("},{"lineNumber":49,"author":{"gitId":"-"},"content":" issueService,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" formBuilder,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" errorHandlingService,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" dialog,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" phaseService,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" null,"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" dialogService,"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService"},{"lineNumber":57,"author":{"gitId":"-"},"content":" );"},{"lineNumber":58,"author":{"gitId":"-"},"content":" thisIssue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":59,"author":{"gitId":"-"},"content":" descriptionComponent.issue \u003d thisIssue;"},{"lineNumber":60,"author":{"gitId":"-"},"content":" });"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" it(\u0027should be initialised with a FromGroup instance\u0027, () \u003d\u003e {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" descriptionComponent.ngOnInit();"},{"lineNumber":64,"author":{"gitId":"-"},"content":" expect(descriptionComponent.issueDescriptionForm.value).toEqual({ description: \u0027\u0027 });"},{"lineNumber":65,"author":{"gitId":"-"},"content":" });"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should mark isSavePending as true if called\u0027, () \u003d\u003e {"},{"lineNumber":68,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" descriptionComponent.isSavePending \u003d false;"},{"lineNumber":69,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" descriptionComponent.showSpinner();"},{"lineNumber":71,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(descriptionComponent.isSavePending).toEqual(true);"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":74,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":75,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should mark isSavePending as false if called\u0027, () \u003d\u003e {"},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" descriptionComponent.isSavePending \u003d true;"},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":78,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" descriptionComponent.hideSpinner();"},{"lineNumber":79,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":80,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(descriptionComponent.isSavePending).toEqual(false);"},{"lineNumber":81,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":82,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" it(\u0027should update the form value correctly and emit an event when entering edit mode\u0027, () \u003d\u003e {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" const descriptionComponentEditState \u003d spyOn(descriptionComponent.changeEditState, \u0027emit\u0027);"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" descriptionComponent.ngOnInit();"},{"lineNumber":87,"author":{"gitId":"-"},"content":" descriptionComponent.changeToEditMode();"},{"lineNumber":88,"author":{"gitId":"-"},"content":" expect(descriptionComponentEditState).toHaveBeenCalledTimes(1);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" expect(descriptionComponent.issueDescriptionForm.value).toEqual({ description: thisIssue.description });"},{"lineNumber":90,"author":{"gitId":"-"},"content":" });"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":" it(\u0027should not have its value updated with issue description is invalid\u0027, () \u003d\u003e {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" descriptionComponent.issue.description \u003d undefined;"},{"lineNumber":94,"author":{"gitId":"-"},"content":" descriptionComponent.ngOnInit();"},{"lineNumber":95,"author":{"gitId":"-"},"content":" descriptionComponent.changeToEditMode();"},{"lineNumber":96,"author":{"gitId":"-"},"content":" expect(descriptionComponent.issueDescriptionForm.value).toEqual({ description: \u0027\u0027 });"},{"lineNumber":97,"author":{"gitId":"-"},"content":" });"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" it(\u0027should highlight conflicting changes, if the issue description was updated simultaneously by another user\u0027, () \u003d\u003e {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // Simulation of getting updated issue from Github."},{"lineNumber":101,"author":{"gitId":"-"},"content":" const updatedIssue \u003d thisIssue.clone(phaseService.currentPhase);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" updatedIssue.description \u003d \u0027Issue description was modified simultaneously on GitHub\u0027;"},{"lineNumber":103,"author":{"gitId":"-"},"content":" issueService.issues \u003d [];"},{"lineNumber":104,"author":{"gitId":"-"},"content":" issueService.issues[updatedIssue.id] \u003d updatedIssue;"},{"lineNumber":105,"author":{"gitId":"-"},"content":" descriptionComponent.issue \u003d thisIssue;"},{"lineNumber":106,"author":{"gitId":"-"},"content":""},{"lineNumber":107,"author":{"gitId":"-"},"content":" const viewChangesCall \u003d spyOn(descriptionComponent, \u0027viewChanges\u0027);"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":" const form \u003d new NgForm([], []);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" descriptionComponent.ngOnInit();"},{"lineNumber":111,"author":{"gitId":"-"},"content":" descriptionComponent.changeToEditMode();"},{"lineNumber":112,"author":{"gitId":"-"},"content":""},{"lineNumber":113,"author":{"gitId":"-"},"content":" issueService.getLatestIssue.and.callFake((x: number) \u003d\u003e of(updatedIssue));"},{"lineNumber":114,"author":{"gitId":"-"},"content":" dialog.open.and.callFake((x: any) \u003d\u003e {});"},{"lineNumber":115,"author":{"gitId":"-"},"content":" errorHandlingService.handleError.and.callFake((x: any) \u003d\u003e {});"},{"lineNumber":116,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":117,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":118,"author":{"gitId":"-"},"content":" descriptionComponent.updateDescription(form);"},{"lineNumber":119,"author":{"gitId":"-"},"content":""},{"lineNumber":120,"author":{"gitId":"-"},"content":" expect(viewChangesCall).toHaveBeenCalledTimes(1);"},{"lineNumber":121,"author":{"gitId":"-"},"content":" expect(descriptionComponent.conflict.outdatedContent).toEqual(thisIssue.description);"},{"lineNumber":122,"author":{"gitId":"-"},"content":" expect(descriptionComponent.conflict.updatedContent).toEqual(updatedIssue.description);"},{"lineNumber":123,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(descriptionComponent.isSavePending).toEqual(false);"},{"lineNumber":124,"author":{"gitId":"-"},"content":" });"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":" it(\u0027should be configured correctly when description is updated\u0027, () \u003d\u003e {"},{"lineNumber":127,"author":{"gitId":"-"},"content":" const form \u003d new NgForm([], []);"},{"lineNumber":128,"author":{"gitId":"-"},"content":" const formResetForm \u003d spyOn(form, \u0027resetForm\u0027);"},{"lineNumber":129,"author":{"gitId":"-"},"content":" const issueUpdatedEmit \u003d spyOn(descriptionComponent.issueUpdated, \u0027emit\u0027);"},{"lineNumber":130,"author":{"gitId":"-"},"content":" const resetCall \u003d spyOn(descriptionComponent, \u0027resetToDefault\u0027);"},{"lineNumber":131,"author":{"gitId":"-"},"content":""},{"lineNumber":132,"author":{"gitId":"-"},"content":" descriptionComponent.ngOnInit();"},{"lineNumber":133,"author":{"gitId":"-"},"content":" descriptionComponent.changeToEditMode();"},{"lineNumber":134,"author":{"gitId":"-"},"content":""},{"lineNumber":135,"author":{"gitId":"-"},"content":" issueService.getLatestIssue.and.callFake((x: number) \u003d\u003e of(thisIssue));"},{"lineNumber":136,"author":{"gitId":"-"},"content":" issueService.updateIssue.and.callFake((x: Issue) \u003d\u003e of(x));"},{"lineNumber":137,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":138,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":139,"author":{"gitId":"-"},"content":" descriptionComponent.updateDescription(form);"},{"lineNumber":140,"author":{"gitId":"-"},"content":""},{"lineNumber":141,"author":{"gitId":"-"},"content":" expect(formResetForm).toHaveBeenCalledTimes(1);"},{"lineNumber":142,"author":{"gitId":"-"},"content":" expect(issueUpdatedEmit).toHaveBeenCalledTimes(1);"},{"lineNumber":143,"author":{"gitId":"-"},"content":" expect(resetCall).toHaveBeenCalledTimes(1);"},{"lineNumber":144,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(descriptionComponent.isSavePending).toEqual(false);"},{"lineNumber":145,"author":{"gitId":"-"},"content":" });"},{"lineNumber":146,"author":{"gitId":"-"},"content":""},{"lineNumber":147,"author":{"gitId":"-"},"content":" it(\u0027should revert edits if edit mode is cancelled\u0027, () \u003d\u003e {"},{"lineNumber":148,"author":{"gitId":"-"},"content":" const issueUpdatedEmit \u003d spyOn(descriptionComponent.issueUpdated, \u0027emit\u0027);"},{"lineNumber":149,"author":{"gitId":"-"},"content":" const resetCall \u003d spyOn(descriptionComponent, \u0027resetToDefault\u0027);"},{"lineNumber":150,"author":{"gitId":"-"},"content":""},{"lineNumber":151,"author":{"gitId":"-"},"content":" descriptionComponent.ngOnInit();"},{"lineNumber":152,"author":{"gitId":"-"},"content":" descriptionComponent.changeToEditMode();"},{"lineNumber":153,"author":{"gitId":"-"},"content":""},{"lineNumber":154,"author":{"gitId":"-"},"content":" issueService.getIssue.and.callFake((x: number) \u003d\u003e of(thisIssue));"},{"lineNumber":155,"author":{"gitId":"-"},"content":" issueService.updateIssue.and.callFake((x: Issue) \u003d\u003e of(x));"},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptionComponent.cancelEditMode();"},{"lineNumber":157,"author":{"gitId":"-"},"content":""},{"lineNumber":158,"author":{"gitId":"-"},"content":" expect(issueUpdatedEmit).toHaveBeenCalledTimes(1);"},{"lineNumber":159,"author":{"gitId":"-"},"content":" expect(resetCall).toHaveBeenCalledTimes(1);"},{"lineNumber":160,"author":{"gitId":"-"},"content":" });"},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":" it(\u0027should cancel edit mode only if confirmed in confirmation dialog\u0027, () \u003d\u003e {"},{"lineNumber":163,"author":{"gitId":"-"},"content":" const cancelEditCall \u003d spyOn(descriptionComponent, \u0027cancelEditMode\u0027);"},{"lineNumber":164,"author":{"gitId":"-"},"content":""},{"lineNumber":165,"author":{"gitId":"-"},"content":" descriptionComponent.ngOnInit();"},{"lineNumber":166,"author":{"gitId":"-"},"content":" descriptionComponent.changeToEditMode();"},{"lineNumber":167,"author":{"gitId":"-"},"content":""},{"lineNumber":168,"author":{"gitId":"-"},"content":" dialogService.openUserConfirmationModal.and.returnValue({ afterClosed: () \u003d\u003e of(false) } as MatDialogRef\u003cUserConfirmationComponent\u003e);"},{"lineNumber":169,"author":{"gitId":"-"},"content":" descriptionComponent.openCancelDialog();"},{"lineNumber":170,"author":{"gitId":"-"},"content":" expect(cancelEditCall).toHaveBeenCalledTimes(0);"},{"lineNumber":171,"author":{"gitId":"-"},"content":""},{"lineNumber":172,"author":{"gitId":"-"},"content":" dialogService.openUserConfirmationModal.and.returnValue({ afterClosed: () \u003d\u003e of(true) } as MatDialogRef\u003cUserConfirmationComponent\u003e);"},{"lineNumber":173,"author":{"gitId":"-"},"content":" descriptionComponent.openCancelDialog();"},{"lineNumber":174,"author":{"gitId":"-"},"content":" expect(cancelEditCall).toHaveBeenCalledTimes(1);"},{"lineNumber":175,"author":{"gitId":"-"},"content":" });"},{"lineNumber":176,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":40,"-":136}},{"path":"tests/app/shared/issue/duplicatedIssues/duplicated-issues.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { DebugElement } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ComponentFixture, TestBed, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { By, HAMMER_LOADER } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { RouterTestingModule } from \u0027@angular/router/testing\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Observable, of } from \u0027rxjs\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../../../../src/app/core/models/phase.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../../../../src/app/core/services/permission.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../../../src/app/core/services/phase.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { DuplicatedIssuesComponent } from \u0027../../../../../src/app/shared/issue/duplicatedIssues/duplicated-issues.component\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { MaterialModule } from \u0027../../../../../src/app/shared/material.module\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { TEAM_4 } from \u0027../../../../constants/data.constants\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" ISSUE_PENDING_MODERATION,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ISSUE_PENDING_MODERATION_HIGH_SEVERITY_FEATURE_FLAW,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" ISSUE_PENDING_MODERATION_LOW_SEVERITY_DOCUMENTATION_BUG"},{"lineNumber":19,"author":{"gitId":"-"},"content":"} from \u0027../../../../constants/githubissue.constants\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"describe(\u0027DuplicatedIssuesComponent\u0027, () \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" let component: DuplicatedIssuesComponent;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" let debugElement: DebugElement;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" let nativeElement: HTMLElement;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" let fixture: ComponentFixture\u003cDuplicatedIssuesComponent\u003e;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" let dummyDuplicatedIssues: Observable\u003cIssue[]\u003e;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" let thisIssue: Issue;"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" const dummyTeam \u003d TEAM_4;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" const firstDummyIssue \u003d Issue.createPhaseModerationIssue(ISSUE_PENDING_MODERATION_HIGH_SEVERITY_FEATURE_FLAW, dummyTeam);"},{"lineNumber":31,"author":{"gitId":"-"},"content":" const secondDummyIssue \u003d Issue.createPhaseModerationIssue(ISSUE_PENDING_MODERATION_LOW_SEVERITY_DOCUMENTATION_BUG, dummyTeam);"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" const permissionService: any \u003d jasmine.createSpyObj(\u0027PermissionService\u0027, [\u0027isTeamResponseEditable\u0027, \u0027isTutorResponseEditable\u0027]);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" const issueService: any \u003d jasmine.createSpyObj(\u0027IssueService\u0027, ["},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u0027getDuplicateIssuesFor\u0027,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u0027updateIssueWithComment\u0027,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u0027updateIssue\u0027,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u0027updateLocalStore\u0027"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ]);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" const phaseService: any \u003d jasmine.createSpyObj(\u0027PhaseService\u0027, [], { currentPhase: Phase.phaseModeration });"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" beforeEach(waitForAsync(() \u003d\u003e {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" TestBed.configureTestingModule({"},{"lineNumber":44,"author":{"gitId":"-"},"content":" declarations: [DuplicatedIssuesComponent],"},{"lineNumber":45,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":46,"author":{"gitId":"-"},"content":" IssueService,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ErrorHandlingService,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" PhaseService,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" PermissionService,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" provide: HAMMER_LOADER,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" useValue: () \u003d\u003e new Promise(() \u003d\u003e {})"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":55,"author":{"gitId":"-"},"content":" imports: [MaterialModule, RouterTestingModule]"},{"lineNumber":56,"author":{"gitId":"-"},"content":" })"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .overrideProvider(PermissionService, { useValue: permissionService })"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .overrideProvider(IssueService, { useValue: issueService })"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .overrideProvider(PhaseService, { useValue: phaseService })"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .compileComponents();"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }));"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" dummyDuplicatedIssues \u003d of([firstDummyIssue, secondDummyIssue]);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" issueService.getDuplicateIssuesFor.and.callFake(() \u003d\u003e dummyDuplicatedIssues);"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" thisIssue \u003d Issue.createPhaseModerationIssue(ISSUE_PENDING_MODERATION, dummyTeam);"},{"lineNumber":68,"author":{"gitId":"-"},"content":" firstDummyIssue.duplicateOf \u003d thisIssue.id;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" secondDummyIssue.duplicateOf \u003d thisIssue.id;"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" fixture \u003d TestBed.createComponent(DuplicatedIssuesComponent);"},{"lineNumber":72,"author":{"gitId":"-"},"content":" component \u003d fixture.componentInstance;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" component.issue \u003d thisIssue;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" debugElement \u003d fixture.debugElement;"},{"lineNumber":77,"author":{"gitId":"-"},"content":" nativeElement \u003d fixture.nativeElement;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" });"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" it(\u0027should create a chip for each duplicated issue\u0027, () \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Check that the number of chips is the same as the number of duplicate issues"},{"lineNumber":82,"author":{"gitId":"-"},"content":" const matChipListLength: number \u003d debugElement.queryAll(By.css(\u0027.mat-chip\u0027)).length;"},{"lineNumber":83,"author":{"gitId":"-"},"content":" const duplicateIssueslength: number \u003d getDuplicateIssuesLength();"},{"lineNumber":84,"author":{"gitId":"-"},"content":" expect(matChipListLength).toEqual(duplicateIssueslength);"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Check that first chip contains information on first issue in the duplicate issues array"},{"lineNumber":87,"author":{"gitId":"-"},"content":" const matChipAnchor: HTMLElement \u003d nativeElement.querySelector(\u0027a\u0027);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" expect(matChipAnchor.innerText).toEqual(`#${firstDummyIssue.id}`);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" });"},{"lineNumber":90,"author":{"gitId":"-"},"content":""},{"lineNumber":91,"author":{"gitId":"-"},"content":" it(\u0027should only allow cancellation of duplicate status if team/tutor response is editable\u0027, () \u003d\u003e {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Team/tutor response is not editable"},{"lineNumber":93,"author":{"gitId":"-"},"content":" mockTeamResponseEditPermission(permissionService, false);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" mockTutorResponseEditPermission(permissionService, false);"},{"lineNumber":95,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":96,"author":{"gitId":"-"},"content":" const cancelIconQuery \u003d debugElement.query(By.css(\u0027.mat-icon\u0027));"},{"lineNumber":97,"author":{"gitId":"-"},"content":" expect(cancelIconQuery).toBeNull();"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" // Team response is editable"},{"lineNumber":100,"author":{"gitId":"-"},"content":" mockTeamResponseEditPermission(permissionService, true);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" mockTutorResponseEditPermission(permissionService, false);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":103,"author":{"gitId":"-"},"content":" let cancelIcon: HTMLElement \u003d debugElement.query(By.css(\u0027.mat-icon\u0027)).nativeElement;"},{"lineNumber":104,"author":{"gitId":"-"},"content":" expect(cancelIcon).toBeDefined();"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" // Tutor response is editable"},{"lineNumber":107,"author":{"gitId":"-"},"content":" mockTeamResponseEditPermission(permissionService, false);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" mockTutorResponseEditPermission(permissionService, true);"},{"lineNumber":109,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":110,"author":{"gitId":"-"},"content":" cancelIcon \u003d debugElement.query(By.css(\u0027.mat-icon\u0027)).nativeElement;"},{"lineNumber":111,"author":{"gitId":"-"},"content":" expect(cancelIcon).toBeDefined();"},{"lineNumber":112,"author":{"gitId":"-"},"content":" });"},{"lineNumber":113,"author":{"gitId":"-"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":" it(\u0027should remove duplicate status of an duplicated issue once cancel icon is clicked\u0027, () \u003d\u003e {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" let updatedFirstDummyIssue: Issue;"},{"lineNumber":116,"author":{"gitId":"-"},"content":" issueService.updateIssueWithComment.and.callFake((duplicatedIssue: Issue) \u003d\u003e {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" updatedFirstDummyIssue \u003d duplicatedIssue;"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return of(duplicatedIssue);"},{"lineNumber":119,"author":{"gitId":"-"},"content":" });"},{"lineNumber":120,"author":{"gitId":"-"},"content":" mockTeamResponseEditPermission(permissionService, true);"},{"lineNumber":121,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":122,"author":{"gitId":"-"},"content":""},{"lineNumber":123,"author":{"gitId":"-"},"content":" expect(firstDummyIssue.duplicateOf).toEqual(component.issue.id);"},{"lineNumber":124,"author":{"gitId":"-"},"content":" cancelDuplicateStatus();"},{"lineNumber":125,"author":{"gitId":"-"},"content":" expect(updatedFirstDummyIssue.duplicateOf).toBeNull();"},{"lineNumber":126,"author":{"gitId":"-"},"content":" expect(issueService.updateLocalStore).toHaveBeenCalledWith(updatedFirstDummyIssue);"},{"lineNumber":127,"author":{"gitId":"-"},"content":" });"},{"lineNumber":128,"author":{"gitId":"-"},"content":""},{"lineNumber":129,"author":{"gitId":"-"},"content":" function getDuplicateIssuesLength(): number {"},{"lineNumber":130,"author":{"gitId":"-"},"content":" let length: number;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" component.duplicatedIssues.subscribe((x) \u003d\u003e (length \u003d x.length));"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return length;"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }"},{"lineNumber":134,"author":{"gitId":"-"},"content":""},{"lineNumber":135,"author":{"gitId":"-"},"content":" function cancelDuplicateStatus(): void {"},{"lineNumber":136,"author":{"gitId":"-"},"content":" const cancelIcon: HTMLElement \u003d debugElement.query(By.css(\u0027.mat-icon\u0027)).nativeElement;"},{"lineNumber":137,"author":{"gitId":"-"},"content":" cancelIcon.click();"},{"lineNumber":138,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }"},{"lineNumber":140,"author":{"gitId":"-"},"content":""},{"lineNumber":141,"author":{"gitId":"-"},"content":" function mockTeamResponseEditPermission(permissionService: any, editable: boolean): void {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" permissionService.isTeamResponseEditable.and.callFake(() \u003d\u003e editable);"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }"},{"lineNumber":144,"author":{"gitId":"-"},"content":""},{"lineNumber":145,"author":{"gitId":"-"},"content":" function mockTutorResponseEditPermission(permissionService: any, editable: boolean): void {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" permissionService.isTutorResponseEditable.and.callFake(() \u003d\u003e editable);"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }"},{"lineNumber":148,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":146}},{"path":"tests/app/shared/issue/label/label.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../../../../src/app/core/models/phase.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../../../../src/app/core/services/label.service\u0027;"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoadingService } from \u0027../../../../../src/app/core/services/loading.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../../../src/app/core/services/phase.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LabelComponent } from \u0027../../../../../src/app/shared/issue/label/label.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ISSUE_WITH_EMPTY_DESCRIPTION } from \u0027../../../../constants/githubissue.constants\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { COLOR_SEVERITY_HIGH, COLOR_SEVERITY_LOW, SEVERITY, SEVERITY_HIGH, SEVERITY_LABELS } from \u0027../../../../constants/label.constants\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"describe(\u0027LabelComponent\u0027, () \u003d\u003e {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" let labelComponent: any;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" let issueService: any;"},{"lineNumber":14,"author":{"gitId":"-"},"content":" let labelService: any;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" let phaseService: any;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" let thisIssue: Issue;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" let issueUpdatedEmit: any;"},{"lineNumber":18,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let loadingService: jasmine.SpyObj\u003cLoadingService\u003e;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" labelService \u003d jasmine.createSpyObj(LabelService, [\u0027getLabelList\u0027, \u0027getColorOfLabel\u0027]);"},{"lineNumber":22,"author":{"gitId":"-"},"content":" issueService \u003d jasmine.createSpyObj(\u0027IssueService\u0027, [\u0027getDuplicateIssuesFor\u0027, \u0027updateIssue\u0027]);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" phaseService \u003d jasmine.createSpyObj(PhaseService, [\u0027currentPhase\u0027]);"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService \u003d jasmine.createSpyObj(\u0027LoadingService\u0027, ["},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027showLoader\u0027,"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027hideLoader\u0027,"},{"lineNumber":27,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addAnimationMode\u0027,"},{"lineNumber":28,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addCssClasses\u0027,"},{"lineNumber":29,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addSpinnerOptions\u0027,"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addTheme\u0027,"},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addViewContainerRef\u0027"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ]);"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addAnimationMode.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addCssClasses.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addSpinnerOptions.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addTheme.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addViewContainerRef.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelComponent \u003d new LabelComponent(issueService, null, phaseService, labelService, null, null, loadingService);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" thisIssue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" labelComponent.issue \u003d thisIssue;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" labelComponent.attributeName \u003d SEVERITY;"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" issueUpdatedEmit \u003d spyOn(labelComponent.issueUpdated, \u0027emit\u0027);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" });"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should mark isSavePending as true if called\u0027, () \u003d\u003e {"},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelComponent.isSavePending \u003d false;"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":49,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelComponent.showSpinner();"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":51,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(labelComponent.isSavePending).toEqual(true);"},{"lineNumber":52,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":53,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should mark isSavePending as false if called\u0027, () \u003d\u003e {"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelComponent.isSavePending \u003d true;"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelComponent.hideSpinner();"},{"lineNumber":58,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":59,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(labelComponent.isSavePending).toEqual(false);"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" it(\u0027should be initialised with a list of label values and a labelColor\u0027, () \u003d\u003e {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" labelService.getLabelList.and.returnValue(SEVERITY_LABELS);"},{"lineNumber":64,"author":{"gitId":"-"},"content":" labelService.getColorOfLabel.and.returnValue(COLOR_SEVERITY_LOW);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" labelComponent.ngOnInit();"},{"lineNumber":66,"author":{"gitId":"-"},"content":" labelComponent.ngOnChanges();"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" expect(labelComponent.labelValues).toEqual(SEVERITY_LABELS);"},{"lineNumber":69,"author":{"gitId":"-"},"content":" expect(labelComponent.labelColor).toEqual(COLOR_SEVERITY_LOW);"},{"lineNumber":70,"author":{"gitId":"-"},"content":" });"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":" it(\u0027should change label color when updateLabel is called\u0027, () \u003d\u003e {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" labelService.getLabelList.and.returnValue(SEVERITY_LABELS);"},{"lineNumber":74,"author":{"gitId":"-"},"content":" labelService.getColorOfLabel.and.returnValue(COLOR_SEVERITY_LOW);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" labelComponent.ngOnInit();"},{"lineNumber":76,"author":{"gitId":"-"},"content":" labelComponent.ngOnChanges();"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" labelService.getColorOfLabel.and.returnValue(COLOR_SEVERITY_HIGH);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" phaseService.currentPhase.and.returnValue(Phase.phaseBugReporting);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" issueService.updateIssue.and.callFake((x: Issue) \u003d\u003e of(x));"},{"lineNumber":81,"author":{"gitId":"-"},"content":" issueService.getDuplicateIssuesFor.and.returnValue(of([]));"},{"lineNumber":82,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":83,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":84,"author":{"gitId":"-"},"content":" labelComponent.updateLabel(SEVERITY_HIGH);"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" expect(issueUpdatedEmit).toHaveBeenCalledTimes(1);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" expect(labelComponent.labelValues).toEqual(SEVERITY_LABELS);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" expect(labelComponent.labelColor).toEqual(COLOR_SEVERITY_HIGH);"},{"lineNumber":89,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(labelComponent.isSavePending).toEqual(false);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" });"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":" it(\u0027should update labels of duplicate issues\u0027, () \u003d\u003e {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" labelService.getLabelList.and.returnValue(SEVERITY_LABELS);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" labelService.getColorOfLabel.and.returnValue(COLOR_SEVERITY_LOW);"},{"lineNumber":95,"author":{"gitId":"-"},"content":" labelComponent.ngOnInit();"},{"lineNumber":96,"author":{"gitId":"-"},"content":" labelComponent.ngOnChanges();"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" phaseService.currentPhase.and.returnValue(Phase.phaseTeamResponse);"},{"lineNumber":99,"author":{"gitId":"-"},"content":" issueService.updateIssue.and.callFake((x: Issue) \u003d\u003e of(x));"},{"lineNumber":100,"author":{"gitId":"-"},"content":""},{"lineNumber":101,"author":{"gitId":"-"},"content":" const duplicateIssue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" issueService.getDuplicateIssuesFor.and.returnValue(of([duplicateIssue]));"},{"lineNumber":103,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":104,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":105,"author":{"gitId":"-"},"content":" labelComponent.updateLabel(SEVERITY_HIGH);"},{"lineNumber":106,"author":{"gitId":"-"},"content":""},{"lineNumber":107,"author":{"gitId":"-"},"content":" const updatedIssue \u003d thisIssue.clone(phaseService.currentPhase);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" updatedIssue.severity \u003d SEVERITY_HIGH;"},{"lineNumber":109,"author":{"gitId":"-"},"content":" const updatedDuplicateIssue \u003d duplicateIssue.clone(phaseService.currentPhase);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" updatedDuplicateIssue.severity \u003d SEVERITY_HIGH;"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":" expect(issueService.updateIssue).toHaveBeenCalledWith(updatedIssue);"},{"lineNumber":113,"author":{"gitId":"-"},"content":" expect(issueService.updateIssue).toHaveBeenCalledWith(updatedDuplicateIssue);"},{"lineNumber":114,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(labelComponent.isSavePending).toEqual(false);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" });"},{"lineNumber":116,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":39,"-":77}},{"path":"tests/app/shared/issue/title/title.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { FormBuilder, NgForm } from \u0027@angular/forms\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatDialogRef } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { UserConfirmationComponent } from \u0027../../../../../src/app/core/guards/user-confirmation/user-confirmation.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../../../../src/app/core/models/phase.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../../../../src/app/core/services/dialog.service\u0027;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoadingService } from \u0027../../../../../src/app/core/services/loading.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../../../../src/app/core/services/phase.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { TitleComponent } from \u0027../../../../../src/app/shared/issue/title/title.component\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { ISSUE_WITH_EMPTY_DESCRIPTION } from \u0027../../../../constants/githubissue.constants\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"describe(\u0027TitleComponent\u0027, () \u003d\u003e {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" let titleComponent: TitleComponent;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" let issueService: any;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" let thisIssue: Issue;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" let formBuilder: any;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" let phaseService: PhaseService;"},{"lineNumber":19,"author":{"gitId":"-"},"content":" let dialogService: jasmine.SpyObj\u003cDialogService\u003e;"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let loadingService: jasmine.SpyObj\u003cLoadingService\u003e;"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" formBuilder \u003d new FormBuilder();"},{"lineNumber":24,"author":{"gitId":"-"},"content":" phaseService \u003d new PhaseService(null, null, null);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" phaseService.currentPhase \u003d Phase.phaseTeamResponse;"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" issueService \u003d jasmine.createSpyObj(\u0027IssueService\u0027, [\u0027updateIssue\u0027]);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" dialogService \u003d jasmine.createSpyObj(\u0027DialogService\u0027, [\u0027openUserConfirmationModal\u0027]);"},{"lineNumber":29,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService \u003d jasmine.createSpyObj(\u0027LoadingService\u0027, ["},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027showLoader\u0027,"},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027hideLoader\u0027,"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addAnimationMode\u0027,"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addCssClasses\u0027,"},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addSpinnerOptions\u0027,"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addTheme\u0027,"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027addViewContainerRef\u0027"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ]);"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addAnimationMode.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":39,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addCssClasses.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addSpinnerOptions.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addTheme.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addViewContainerRef.and.callFake(() \u003d\u003e loadingService);"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" titleComponent \u003d new TitleComponent(issueService, formBuilder, null, null, phaseService, dialogService, loadingService);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" thisIssue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":45,"author":{"gitId":"-"},"content":" titleComponent.issue \u003d thisIssue;"},{"lineNumber":46,"author":{"gitId":"-"},"content":" });"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" it(\u0027should be initialised with an issueTitleForm\u0027, () \u003d\u003e {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" titleComponent.ngOnInit();"},{"lineNumber":50,"author":{"gitId":"-"},"content":" expect(titleComponent.issueTitleForm.value).toEqual({ title: \u0027\u0027 });"},{"lineNumber":51,"author":{"gitId":"-"},"content":" });"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should mark isSavePending as true if called\u0027, () \u003d\u003e {"},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" titleComponent.isSavePending \u003d false;"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" titleComponent.showSpinner();"},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":58,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(titleComponent.isSavePending).toEqual(true);"},{"lineNumber":59,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should mark isSavePending as false if called\u0027, () \u003d\u003e {"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" titleComponent.isSavePending \u003d true;"},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" titleComponent.hideSpinner();"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(titleComponent.isSavePending).toEqual(false);"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":68,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" it(\u0027should be updated with correct flags and values in editing mode\u0027, () \u003d\u003e {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" titleComponent.ngOnInit();"},{"lineNumber":71,"author":{"gitId":"-"},"content":" titleComponent.changeToEditMode();"},{"lineNumber":72,"author":{"gitId":"-"},"content":" expect(titleComponent.isEditing).toEqual(true);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" expect(titleComponent.issueTitleForm.value).toEqual({ title: thisIssue.title });"},{"lineNumber":74,"author":{"gitId":"-"},"content":" });"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" it(\u0027should not have its value updated with issue title is invalid\u0027, () \u003d\u003e {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" thisIssue.title \u003d undefined;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" titleComponent.issue \u003d thisIssue;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" titleComponent.ngOnInit();"},{"lineNumber":80,"author":{"gitId":"-"},"content":" titleComponent.changeToEditMode();"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expect(titleComponent.isEditing).toEqual(true);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" expect(titleComponent.issueTitleForm.value).toEqual({ title: \u0027\u0027 });"},{"lineNumber":83,"author":{"gitId":"-"},"content":" });"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" it(\u0027should be configured correctly when title is updated\u0027, () \u003d\u003e {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" const form \u003d new NgForm([], []);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" const formResetForm \u003d spyOn(form, \u0027resetForm\u0027);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" const titleComponentEmitter \u003d spyOn(titleComponent.issueUpdated, \u0027emit\u0027);"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" titleComponent.ngOnInit();"},{"lineNumber":91,"author":{"gitId":"-"},"content":" titleComponent.changeToEditMode();"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" issueService.updateIssue.and.callFake((x: Issue) \u003d\u003e of(x));"},{"lineNumber":94,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":95,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader.and.callFake(() \u003d\u003e {});"},{"lineNumber":96,"author":{"gitId":"-"},"content":" titleComponent.updateTitle(form);"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" expect(formResetForm).toHaveBeenCalledTimes(1);"},{"lineNumber":99,"author":{"gitId":"-"},"content":" expect(titleComponentEmitter).toHaveBeenCalledTimes(1);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" expect(titleComponent.isEditing).toEqual(false);"},{"lineNumber":101,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(titleComponent.isSavePending).toEqual(false);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" });"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":" it(\u0027should cancel edit mode only if confirmed in confirmation dialog\u0027, () \u003d\u003e {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" titleComponent.ngOnInit();"},{"lineNumber":106,"author":{"gitId":"-"},"content":" titleComponent.changeToEditMode();"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" dialogService.openUserConfirmationModal.and.returnValue({ afterClosed: () \u003d\u003e of(false) } as MatDialogRef\u003cUserConfirmationComponent\u003e);"},{"lineNumber":109,"author":{"gitId":"-"},"content":" titleComponent.openCancelDialog();"},{"lineNumber":110,"author":{"gitId":"-"},"content":" expect(titleComponent.isEditing).toEqual(true);"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":" dialogService.openUserConfirmationModal.and.returnValue({ afterClosed: () \u003d\u003e of(true) } as MatDialogRef\u003cUserConfirmationComponent\u003e);"},{"lineNumber":113,"author":{"gitId":"-"},"content":" titleComponent.openCancelDialog();"},{"lineNumber":114,"author":{"gitId":"-"},"content":" expect(titleComponent.isEditing).toEqual(false);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" });"},{"lineNumber":116,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":36,"-":80}},{"path":"tests/constants/githubcomment.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { GithubComment } from \u0027../../src/app/core/models/github/github-comment.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"export const EMPTY_TEAM_RESPONSE: GithubComment \u003d {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" body: \"# Team\u0027s Response\\n\" + \u0027\\n\u0027 + \u0027 ## Duplicate status (if any):\\n\u0027 + \u0027--\u0027,"},{"lineNumber":5,"author":{"gitId":"-"},"content":" created_at: \u00272020-02-16T18:31:38Z\u0027,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id: 586737495,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" issue_url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/91\u0027,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-02T12:50:02Z\u0027,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/comments/586737495\u0027,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" user: {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" login: \u0027testathorStudent\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" id: 46639862,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" avatar_url: \u0027https://avatars3.githubusercontent.com/u/46639862?v\u003d4\u0027,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/testathorStudent\u0027"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }"},{"lineNumber":16,"author":{"gitId":"-"},"content":"};"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":"// Type and severity disagreeement"},{"lineNumber":19,"author":{"gitId":"-"},"content":"export const TEAM_RESPONSE_MULTIPLE_DISAGREEMENT \u003d {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" body:"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u0027[IMPORTANT!: Please do not edit or reply to this comment using the GitHub UI. You can respond to it using CATcher during the next phase of the PE]\\n\\n\u0027 +"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \"# Team\u0027s Response\\n\" +"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u0027This is a dummy team response comment: \u0027 +"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u0027Thanks for the feedback\\n\\n\u0027 +"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u0027# Items for the Tester to Verify\\n\\n\u0027 +"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u0027## :question: Issue severity\\n\\n\u0027 +"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u0027Team chose [`severity.Low`]\\n\u0027 +"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u0027Originally [`severity.High`]\\n\\n\u0027 +"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u0027- [ ] I disagree\\n\\n\u0027 +"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u0027**Reason for disagreement:** [replace this with your reason]\\n\\n\u0027 +"},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n\\n\u0027 +"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u0027## :question: Issue type\\n\\n\u0027 +"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u0027Team chose [`type.DocumentationBug`]\\n\u0027 +"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u0027Originally [`type.FunctionalityBug`]\\n\\n\u0027 +"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u0027- [ ] I disagree\\n\\n\u0027 +"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u0027**Reason for disagreement:** [replace this with your reason]\\n\\n\u0027 +"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" created_at: \u00272021-06-29T17:15:11Z\u0027,"},{"lineNumber":39,"author":{"gitId":"-"},"content":" id: 870774171,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" updated_at: \u00272021-06-29T17:15:11Z\u0027"},{"lineNumber":41,"author":{"gitId":"-"},"content":"} as GithubComment;"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":"export const PENDING_TUTOR_MODERATION: GithubComment \u003d {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" body:"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u0027# Tutor Moderation\\n\\n\u0027 +"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027## :question: Issue Type\\n\\n- [x] Done\\n\\ntest\\n\\n\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n\u0027 +"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u0027## :question: Issue Severity\\n\\n- [ ] Done\\n\\n\u0027 +"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027[replace this with your explanation]\\n\\n\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n\u0027 +"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u0027## :question: Not Related Question\\n\\n- [ ] Done\\n\\n\u0027 +"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027[replace this with your explanation]\\n\\n\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n\u0027,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" created_at: \u00272020-08-15T06:39:24Z\u0027,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" id: 674357972,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" issue_url: \u0027https://api.github.com/repos/CATcher-org/pe-evaluation/issues/26\u0027,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" updated_at: \u00272020-08-15T06:39:40Z\u0027,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-evaluation/issues/comments/674357972\u0027,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" user: {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" login: \u0027testathorTutor\u0027,"},{"lineNumber":58,"author":{"gitId":"-"},"content":" id: 46640218,"},{"lineNumber":59,"author":{"gitId":"-"},"content":" avatar_url: \u0027https://avatars2.githubusercontent.com/u/46640218?v\u003d4\u0027,"},{"lineNumber":60,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/testathorTutor\u0027"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }"},{"lineNumber":62,"author":{"gitId":"-"},"content":"};"}],"authorContributionMap":{"vigneshsankariyer1234567890":5,"-":57}},{"path":"tests/constants/githubissue.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { IssueState } from \u0027../../graphql/graphql-types\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027../../src/app/core/models/github/github-issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../../src/app/core/models/github/github-label.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { USER_ANUBHAV, USER_SHUMING } from \u0027./data.constants\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { EMPTY_TEAM_RESPONSE, PENDING_TUTOR_MODERATION } from \u0027./githubcomment.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":7,"author":{"gitId":"-"},"content":" GITHUB_LABEL_DOCUMENTATION_BUG,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" GITHUB_LABEL_FEATURE_FLAW,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" GITHUB_LABEL_FUNCTIONALITY_BUG,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" GITHUB_LABEL_HIGH_SEVERITY,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" GITHUB_LABEL_LOW_SEVERITY,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GITHUB_LABEL_MEDIUM_SEVERITY,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" GITHUB_LABEL_TEAM_LABEL,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" GITHUB_LABEL_TUTORIAL_LABEL"},{"lineNumber":15,"author":{"gitId":"-"},"content":"} from \u0027./githublabel.constants\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"const randomId: () \u003d\u003e string \u003d () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return Math.floor(Math.random() * 1000000000).toString();"},{"lineNumber":19,"author":{"gitId":"-"},"content":"};"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"const randomIssueNumber: () \u003d\u003e number \u003d () \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return Math.round(Math.random() * 1000);"},{"lineNumber":23,"author":{"gitId":"-"},"content":"};"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"const randomISODate: (startDate?: Date, endDate?: Date) \u003d\u003e string \u003d ("},{"lineNumber":26,"author":{"gitId":"-"},"content":" startDate: Date \u003d new Date(2020, 1, 1),"},{"lineNumber":27,"author":{"gitId":"-"},"content":" endDate: Date \u003d new Date()"},{"lineNumber":28,"author":{"gitId":"-"},"content":") \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return new Date(startDate.getTime() + Math.random() * (startDate.getTime() - endDate.getTime())).toISOString();"},{"lineNumber":30,"author":{"gitId":"-"},"content":"};"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":"const USER_ANUBHAV_DETAILS \u003d {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" login: USER_ANUBHAV.loginId,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" avatar_url: \u0027https://avatars1.githubusercontent.com/u/35621759?v\u003d4\u0027,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/anubh-v\u0027"},{"lineNumber":36,"author":{"gitId":"-"},"content":"};"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"const USER_ANUBHAV_ASSIGNEE_DETAILS \u003d {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" login: USER_ANUBHAV.loginId,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" id: 35621759,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/anubh-v\u0027"},{"lineNumber":42,"author":{"gitId":"-"},"content":"};"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":"const USER_SHUMING_DETAILS \u003d {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" login: USER_SHUMING.loginId,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" avatar_url: \u0027https://avatars0.githubusercontent.com/u/43642522?v\u003d4\u0027,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/geshuming\u0027"},{"lineNumber":48,"author":{"gitId":"-"},"content":"};"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":"const USER_SHUMING_ASSIGNEE_DETAILS \u003d {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" login: \u0027geshuming\u0027,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" id: 43642522,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/geshuming\u0027"},{"lineNumber":54,"author":{"gitId":"-"},"content":"};"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":"const ISSUE_BODY \u003d"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u0027# Issue Description\\n{original issue description}\\n\u0027 +"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \"# Team\u0027s Response\\n{team\u0027s response}\\n # Disputes\\n\\n\" +"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \"## :question: Issue Type\\n\\n### Team says:\\r\\n{the team\u0027s action that is being disputed}\\r\\n\\r\\n\" +"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \"### Tester says:\\r\\n{tester\u0027s objection}\\n\\n\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n## :question: Issue Severity\\n\\n\" +"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \"### Team says:\\r\\n{the team\u0027s action that is being disputed}\\r\\n\\r\\n\" +"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \"### Tester says:\\r\\n{tester\u0027s objection}\\n\\n\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n## :question: Not Related Question\\n\\n\" +"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \"### Team says:\\r\\n{the team\u0027s action that is being disputed}\\r\\n\\r\\n\" +"},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \"### Tester says:\\r\\n{tester\u0027s objection}\\n\\n\u003ccatcher-end-of-segment\u003e\u003chr\u003e\\n\\n\";"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_EMPTY_DESCRIPTION \u003d new GithubIssue({"},{"lineNumber":67,"author":{"gitId":"-"},"content":" id: \u0027574085971\u0027,"},{"lineNumber":68,"author":{"gitId":"-"},"content":" number: 92,"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":70,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":71,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":72,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-02T16:19:02Z\u0027,"},{"lineNumber":73,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":74,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":75,"author":{"gitId":"-"},"content":" title: \u0027App starts to lag when given large amount of input\u0027,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-13T13:37:32Z\u0027,"},{"lineNumber":77,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/92\u0027,"},{"lineNumber":78,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":79,"author":{"gitId":"-"},"content":"});"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY \u003d new GithubIssue({"},{"lineNumber":82,"author":{"gitId":"-"},"content":" id: \u0027384830567\u0027,"},{"lineNumber":83,"author":{"gitId":"-"},"content":" number: 130,"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":85,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":86,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":87,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-02T16:19:02Z\u0027,"},{"lineNumber":88,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FEATURE_FLAW, GITHUB_LABEL_LOW_SEVERITY],"},{"lineNumber":89,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":90,"author":{"gitId":"-"},"content":" title: \u0027App is sometimes slow\u0027,"},{"lineNumber":91,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-13T13:37:32Z\u0027,"},{"lineNumber":92,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/130\u0027,"},{"lineNumber":93,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":94,"author":{"gitId":"-"},"content":"});"},{"lineNumber":95,"author":{"gitId":"-"},"content":""},{"lineNumber":96,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY \u003d new GithubIssue({"},{"lineNumber":97,"author":{"gitId":"-"},"content":" id: \u0027573957398\u0027,"},{"lineNumber":98,"author":{"gitId":"-"},"content":" number: 32,"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":100,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":101,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":102,"author":{"gitId":"-"},"content":" created_at: \u00272010-03-12T19:12:02Z\u0027,"},{"lineNumber":103,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_DOCUMENTATION_BUG, GITHUB_LABEL_HIGH_SEVERITY],"},{"lineNumber":104,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":105,"author":{"gitId":"-"},"content":" title: \u0027Too many typos\u0027,"},{"lineNumber":106,"author":{"gitId":"-"},"content":" updated_at: \u00272012-03-12T19:12:02Z\u0027,"},{"lineNumber":107,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/130\u0027,"},{"lineNumber":108,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":109,"author":{"gitId":"-"},"content":"});"},{"lineNumber":110,"author":{"gitId":"-"},"content":""},{"lineNumber":111,"author":{"gitId":"-"},"content":"export const DUPLICATED_ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY \u003d new GithubIssue({"},{"lineNumber":112,"author":{"gitId":"-"},"content":" id: \u0027573957399\u0027,"},{"lineNumber":113,"author":{"gitId":"-"},"content":" number: 33,"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":115,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":116,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":117,"author":{"gitId":"-"},"content":" created_at: \u00272010-04-12T19:12:02Z\u0027,"},{"lineNumber":118,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_DOCUMENTATION_BUG, GITHUB_LABEL_HIGH_SEVERITY],"},{"lineNumber":119,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":120,"author":{"gitId":"-"},"content":" title: \u0027Too many typos 2\u0027,"},{"lineNumber":121,"author":{"gitId":"-"},"content":" updated_at: \u00272012-04-12T19:12:02Z\u0027,"},{"lineNumber":122,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/130\u0027,"},{"lineNumber":123,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":124,"author":{"gitId":"-"},"content":"});"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_ASSIGNEES \u003d new GithubIssue({"},{"lineNumber":127,"author":{"gitId":"-"},"content":" id: \u0027551732011\u0027,"},{"lineNumber":128,"author":{"gitId":"-"},"content":" number: 91,"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assignees: [USER_ANUBHAV_ASSIGNEE_DETAILS, USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":130,"author":{"gitId":"-"},"content":" body: \u0027Screen freezes every few minutes\u0027,"},{"lineNumber":131,"author":{"gitId":"-"},"content":" created_at: \u00272020-01-18T07:01:45Z\u0027,"},{"lineNumber":132,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":133,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":134,"author":{"gitId":"-"},"content":" title: \u0027Screen freezes\u0027,"},{"lineNumber":135,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-02T12:50:02Z\u0027,"},{"lineNumber":136,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/91\u0027,"},{"lineNumber":137,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS,"},{"lineNumber":138,"author":{"gitId":"-"},"content":" comments: [EMPTY_TEAM_RESPONSE]"},{"lineNumber":139,"author":{"gitId":"-"},"content":"});"},{"lineNumber":140,"author":{"gitId":"-"},"content":""},{"lineNumber":141,"author":{"gitId":"-"},"content":"export const generateIssueWithRandomData: () \u003d\u003e GithubIssue \u003d () \u003d\u003e {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" const created_and_updated_date: string \u003d randomISODate();"},{"lineNumber":143,"author":{"gitId":"-"},"content":" const issueNumber: number \u003d randomIssueNumber();"},{"lineNumber":144,"author":{"gitId":"-"},"content":" const severityLabels: GithubLabel[] \u003d [GITHUB_LABEL_LOW_SEVERITY, GITHUB_LABEL_MEDIUM_SEVERITY, GITHUB_LABEL_HIGH_SEVERITY];"},{"lineNumber":145,"author":{"gitId":"-"},"content":" const typeLabels: GithubLabel[] \u003d [GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_FEATURE_FLAW, GITHUB_LABEL_DOCUMENTATION_BUG];"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return new GithubIssue({"},{"lineNumber":147,"author":{"gitId":"-"},"content":" id: randomId(),"},{"lineNumber":148,"author":{"gitId":"-"},"content":" number: issueNumber,"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":150,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":151,"author":{"gitId":"-"},"content":" body: `Issue No.: ${issueNumber}\\nSample Content.`,"},{"lineNumber":152,"author":{"gitId":"-"},"content":" created_at: created_and_updated_date,"},{"lineNumber":153,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, typeLabels[issueNumber % 3], severityLabels[issueNumber % 3]],"},{"lineNumber":154,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":155,"author":{"gitId":"-"},"content":" title: `Random Issue: ${issueNumber}`,"},{"lineNumber":156,"author":{"gitId":"-"},"content":" updated_at: created_and_updated_date,"},{"lineNumber":157,"author":{"gitId":"-"},"content":" url: `https://api.github.com/repos/CATcher-org/pe-results/issues/${issueNumber}`,"},{"lineNumber":158,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":159,"author":{"gitId":"-"},"content":" });"},{"lineNumber":160,"author":{"gitId":"-"},"content":"};"},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":"export const ISSUE_PENDING_MODERATION \u003d new GithubIssue({"},{"lineNumber":163,"author":{"gitId":"-"},"content":" id: \u0027574674360\u0027,"},{"lineNumber":164,"author":{"gitId":"-"},"content":" number: 26,"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assignees: [USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":166,"author":{"gitId":"-"},"content":" body: ISSUE_BODY,"},{"lineNumber":167,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-03T13:38:32Z\u0027,"},{"lineNumber":168,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":169,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":170,"author":{"gitId":"-"},"content":" title: \u0027Basic Issue, Three Disputes, Unsure\u0027,"},{"lineNumber":171,"author":{"gitId":"-"},"content":" updated_at: \u00272020-08-15T06:39:40Z\u0027,"},{"lineNumber":172,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/26\u0027,"},{"lineNumber":173,"author":{"gitId":"-"},"content":" user: USER_SHUMING_DETAILS,"},{"lineNumber":174,"author":{"gitId":"-"},"content":" comments: [PENDING_TUTOR_MODERATION]"},{"lineNumber":175,"author":{"gitId":"-"},"content":"});"},{"lineNumber":176,"author":{"gitId":"-"},"content":""},{"lineNumber":177,"author":{"gitId":"-"},"content":"export const ISSUE_PENDING_MODERATION_HIGH_SEVERITY_FEATURE_FLAW \u003d new GithubIssue({"},{"lineNumber":178,"author":{"gitId":"-"},"content":" id: \u0027239538360\u0027,"},{"lineNumber":179,"author":{"gitId":"-"},"content":" number: 93,"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assignees: [USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":181,"author":{"gitId":"-"},"content":" body: ISSUE_BODY,"},{"lineNumber":182,"author":{"gitId":"-"},"content":" created_at: \u00272020-10-14T10:28:32Z\u0027,"},{"lineNumber":183,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FEATURE_FLAW, GITHUB_LABEL_HIGH_SEVERITY],"},{"lineNumber":184,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":185,"author":{"gitId":"-"},"content":" title: \u0027Redundant buggy feature\u0027,"},{"lineNumber":186,"author":{"gitId":"-"},"content":" updated_at: \u00272020-11-25T13:19:40Z\u0027,"},{"lineNumber":187,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/26\u0027,"},{"lineNumber":188,"author":{"gitId":"-"},"content":" user: USER_SHUMING_DETAILS,"},{"lineNumber":189,"author":{"gitId":"-"},"content":" comments: [PENDING_TUTOR_MODERATION]"},{"lineNumber":190,"author":{"gitId":"-"},"content":"});"},{"lineNumber":191,"author":{"gitId":"-"},"content":""},{"lineNumber":192,"author":{"gitId":"-"},"content":"export const ISSUE_PENDING_MODERATION_LOW_SEVERITY_DOCUMENTATION_BUG \u003d new GithubIssue({"},{"lineNumber":193,"author":{"gitId":"-"},"content":" id: \u0027384756360\u0027,"},{"lineNumber":194,"author":{"gitId":"-"},"content":" number: 6,"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assignees: [USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":196,"author":{"gitId":"-"},"content":" body: ISSUE_BODY,"},{"lineNumber":197,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-26T09:08:12Z\u0027,"},{"lineNumber":198,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_DOCUMENTATION_BUG, GITHUB_LABEL_LOW_SEVERITY],"},{"lineNumber":199,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":200,"author":{"gitId":"-"},"content":" title: \u0027Documentation bug, too many typos\u0027,"},{"lineNumber":201,"author":{"gitId":"-"},"content":" updated_at: \u00272020-11-10T16:59:40Z\u0027,"},{"lineNumber":202,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/26\u0027,"},{"lineNumber":203,"author":{"gitId":"-"},"content":" user: USER_SHUMING_DETAILS,"},{"lineNumber":204,"author":{"gitId":"-"},"content":" comments: [PENDING_TUTOR_MODERATION]"},{"lineNumber":205,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":3,"-":202}},{"path":"tests/constants/label.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Label } from \u0027../../src/app/core/models/label.model\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LabelService, LABEL_DEFINITIONS } from \u0027../../src/app/core/services/label.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"// Label name constants"},{"lineNumber":5,"author":{"gitId":"-"},"content":"export const SEVERITY_VERY_LOW \u003d \u0027Very Low\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"export const SEVERITY_LOW \u003d \u0027Low\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"export const SEVERITY_MEDIUM \u003d \u0027Medium\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"export const SEVERITY_HIGH \u003d \u0027High\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"export const TYPE_DOCUMENTATION_BUG \u003d \u0027DocumentationBug\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"export const TYPE_FUNCTIONALITY_BUG \u003d \u0027FunctionalityBug\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"export const TYPE_FEATURE_FLAW \u003d \u0027FeatureFlaw\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"export const RESPONSE_ACCEPTED \u003d \u0027Accepted\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"export const RESPONSE_REJECTED \u003d \u0027Rejected\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"export const RESPONSE_ISSUE_UNCLEAR \u003d \u0027IssueUnclear\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export const RESPONSE_CANNOT_REPRODUCE \u003d \u0027CannotReproduce\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"export const STATUS_DONE \u003d \u0027Done\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"export const STATUS_INCOMPLETE \u003d \u0027Incomplete\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"// Label category constants"},{"lineNumber":20,"author":{"gitId":"-"},"content":"export const SEVERITY \u003d \u0027severity\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"export const TYPE \u003d \u0027type\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"export const RESPONSE \u003d \u0027response\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"export const STATUS \u003d \u0027status\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"// Label color constants"},{"lineNumber":26,"author":{"gitId":"-"},"content":"export const COLOR_BLACK \u003d \u0027000000\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"export const COLOR_WHITE \u003d \u0027ffffff\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_VERY_LOW \u003d \u0027ffe0e0\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_LOW \u003d \u0027ffcccc\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_MEDIUM \u003d \u0027ff9999\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_HIGH \u003d \u0027ff6666\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"export const COLOR_TYPE_DOCUMENTATION_BUG \u003d \u0027d966ff\u0027;"},{"lineNumber":33,"author":{"gitId":"-"},"content":"export const COLOR_TYPE_FUNCTIONALITY_BUG \u003d \u00279900cc\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":"export const COLOR_RESPONSE_ACCEPTED \u003d \u002700802b\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":"export const COLOR_RESPONSE_REJECTED \u003d \u0027ff9900\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":"export const COLOR_RESPONSE_ISSUE_UNCLEAR \u003d \u0027ffcc80\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":"export const COLOR_RESPONSE_CANNOT_REPRODUCE \u003d \u0027ffebcc\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":"export const COLOR_STATUS_DONE \u003d \u0027a6a6a6\u0027;"},{"lineNumber":39,"author":{"gitId":"-"},"content":"export const COLOR_STATUS_INCOMPLETE \u003d \u0027000000\u0027;"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"export const CSS_BORDER_RADIUS_3PX \u003d \u00273px\u0027;"},{"lineNumber":42,"author":{"gitId":"-"},"content":"export const CSS_CURSOR_DEFAULT \u003d \u0027default\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":"export const CSS_PADDING_3PX \u003d \u00273px\u0027;"},{"lineNumber":44,"author":{"gitId":"-"},"content":"export const CSS_FONT_WEIGHT_410 \u003d \u0027410\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":"export const CSS_DISPLAY_INLINE_FLEX \u003d \u0027inline-flex\u0027;"},{"lineNumber":46,"author":{"gitId":"-"},"content":"export const CSS_DISPLAY_INLINE_BLOCK \u003d \u0027inline-block\u0027;"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":"// CSS style constants"},{"lineNumber":49,"author":{"gitId":"-"},"content":"export const DARK_BG_LIGHT_TEXT \u003d {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${COLOR_BLACK}`,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u0027border-radius\u0027: CSS_BORDER_RADIUS_3PX,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" cursor: CSS_CURSOR_DEFAULT,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" padding: CSS_PADDING_3PX,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" color: `#${COLOR_WHITE}`,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u0027font-weight\u0027: CSS_FONT_WEIGHT_410,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" display: CSS_DISPLAY_INLINE_FLEX"},{"lineNumber":57,"author":{"gitId":"-"},"content":"};"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":"export const LIGHT_BG_DARK_TEXT \u003d {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${COLOR_WHITE}`,"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u0027border-radius\u0027: CSS_BORDER_RADIUS_3PX,"},{"lineNumber":62,"author":{"gitId":"-"},"content":" cursor: CSS_CURSOR_DEFAULT,"},{"lineNumber":63,"author":{"gitId":"-"},"content":" padding: CSS_PADDING_3PX,"},{"lineNumber":64,"author":{"gitId":"-"},"content":" color: `#${COLOR_BLACK}`,"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0027font-weight\u0027: CSS_FONT_WEIGHT_410,"},{"lineNumber":66,"author":{"gitId":"-"},"content":" display: CSS_DISPLAY_INLINE_FLEX"},{"lineNumber":67,"author":{"gitId":"-"},"content":"};"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":"export const INLINE_BLOCK_TEXT \u003d {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${COLOR_WHITE}`,"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u0027border-radius\u0027: CSS_BORDER_RADIUS_3PX,"},{"lineNumber":72,"author":{"gitId":"-"},"content":" cursor: CSS_CURSOR_DEFAULT,"},{"lineNumber":73,"author":{"gitId":"-"},"content":" padding: CSS_PADDING_3PX,"},{"lineNumber":74,"author":{"gitId":"-"},"content":" color: `#${COLOR_BLACK}`,"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u0027font-weight\u0027: CSS_FONT_WEIGHT_410,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" display: CSS_DISPLAY_INLINE_BLOCK"},{"lineNumber":77,"author":{"gitId":"-"},"content":"};"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":"export const RESPONSE_REJECTED_LABEL \u003d new Label(RESPONSE, RESPONSE_REJECTED, COLOR_RESPONSE_REJECTED, LABEL_DEFINITIONS.responseRejected);"},{"lineNumber":80,"author":{"gitId":"-"},"content":"export const STATUS_DONE_LABEL \u003d new Label(STATUS, STATUS_DONE, COLOR_STATUS_DONE);"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":"export const TYPE_DOCUMENTATION_BUG_LABEL \u003d new Label("},{"lineNumber":83,"author":{"gitId":"-"},"content":" TYPE,"},{"lineNumber":84,"author":{"gitId":"-"},"content":" TYPE_DOCUMENTATION_BUG,"},{"lineNumber":85,"author":{"gitId":"-"},"content":" COLOR_TYPE_DOCUMENTATION_BUG,"},{"lineNumber":86,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.typeDocumentationBug"},{"lineNumber":87,"author":{"gitId":"-"},"content":");"},{"lineNumber":88,"author":{"gitId":"-"},"content":"export const TYPE_FUNCTIONALITY_BUG_LABEL \u003d new Label("},{"lineNumber":89,"author":{"gitId":"-"},"content":" TYPE,"},{"lineNumber":90,"author":{"gitId":"-"},"content":" TYPE_FUNCTIONALITY_BUG,"},{"lineNumber":91,"author":{"gitId":"-"},"content":" COLOR_TYPE_FUNCTIONALITY_BUG,"},{"lineNumber":92,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.typeFunctionalityBug"},{"lineNumber":93,"author":{"gitId":"-"},"content":");"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":"export const SEVERITY_HIGH_LABEL \u003d new Label(SEVERITY, SEVERITY_HIGH, COLOR_SEVERITY_HIGH, LABEL_DEFINITIONS.severityHigh);"},{"lineNumber":96,"author":{"gitId":"-"},"content":"export const SEVERITY_MEDIUM_LABEL \u003d new Label(SEVERITY, SEVERITY_MEDIUM, COLOR_SEVERITY_MEDIUM, LABEL_DEFINITIONS.severityMedium);"},{"lineNumber":97,"author":{"gitId":"-"},"content":"export const SEVERITY_LOW_LABEL \u003d new Label(SEVERITY, SEVERITY_LOW, COLOR_SEVERITY_LOW, LABEL_DEFINITIONS.severityLow);"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":"// Constant array of labels for team response phase and moderation phase to simulate Github response"},{"lineNumber":100,"author":{"gitId":"-"},"content":"export const SOME_TEAM_RESPONSE_PHASE_LABELS \u003d ["},{"lineNumber":101,"author":{"gitId":"-"},"content":" {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" color: COLOR_RESPONSE_ACCEPTED,"},{"lineNumber":103,"author":{"gitId":"-"},"content":" name: RESPONSE + \u0027.\u0027 + RESPONSE_ACCEPTED,"},{"lineNumber":104,"author":{"gitId":"-"},"content":" definition: LABEL_DEFINITIONS.responseAccepted"},{"lineNumber":105,"author":{"gitId":"-"},"content":" },"},{"lineNumber":106,"author":{"gitId":"-"},"content":" {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" color: COLOR_SEVERITY_LOW,"},{"lineNumber":108,"author":{"gitId":"-"},"content":" name: SEVERITY + \u0027.\u0027 + SEVERITY_LOW,"},{"lineNumber":109,"author":{"gitId":"-"},"content":" definition: LABEL_DEFINITIONS.severityLow"},{"lineNumber":110,"author":{"gitId":"-"},"content":" },"},{"lineNumber":111,"author":{"gitId":"-"},"content":" {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" color: COLOR_TYPE_FUNCTIONALITY_BUG,"},{"lineNumber":113,"author":{"gitId":"-"},"content":" name: TYPE + \u0027.\u0027 + TYPE_FUNCTIONALITY_BUG,"},{"lineNumber":114,"author":{"gitId":"-"},"content":" definition: LABEL_DEFINITIONS.typeFunctionalityBug"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":"];"},{"lineNumber":117,"author":{"gitId":"-"},"content":""},{"lineNumber":118,"author":{"gitId":"-"},"content":"// Constant array of labels for tester phase to simulate Github response"},{"lineNumber":119,"author":{"gitId":"-"},"content":"export const SOME_TESTER_PHASE_LABELS \u003d ["},{"lineNumber":120,"author":{"gitId":"-"},"content":" {"},{"lineNumber":121,"author":{"gitId":"-"},"content":" color: COLOR_SEVERITY_HIGH,"},{"lineNumber":122,"author":{"gitId":"-"},"content":" name: SEVERITY + \u0027.\u0027 + SEVERITY_HIGH"},{"lineNumber":123,"author":{"gitId":"-"},"content":" },"},{"lineNumber":124,"author":{"gitId":"-"},"content":" {"},{"lineNumber":125,"author":{"gitId":"-"},"content":" color: COLOR_TYPE_DOCUMENTATION_BUG,"},{"lineNumber":126,"author":{"gitId":"-"},"content":" name: TYPE + \u0027.\u0027 + TYPE_DOCUMENTATION_BUG"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }"},{"lineNumber":128,"author":{"gitId":"-"},"content":"];"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":"export const ALL_REQUIRED_LABELS_ARRAY: {}[] \u003d LabelService.getRequiredLabelsAsArray(true).map((label: Label) \u003d\u003e {"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return {"},{"lineNumber":132,"author":{"gitId":"-"},"content":" color: label.labelColor,"},{"lineNumber":133,"author":{"gitId":"-"},"content":" name: label.getFormattedName()"},{"lineNumber":134,"author":{"gitId":"-"},"content":" };"},{"lineNumber":135,"author":{"gitId":"-"},"content":"});"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":"// List of labels"},{"lineNumber":138,"author":{"gitId":"-"},"content":"export const SEVERITY_LABELS \u003d ["},{"lineNumber":139,"author":{"gitId":"-"},"content":" new Label(SEVERITY, SEVERITY_LOW, COLOR_SEVERITY_LOW, LABEL_DEFINITIONS.severityLow),"},{"lineNumber":140,"author":{"gitId":"-"},"content":" new Label(SEVERITY, SEVERITY_MEDIUM, COLOR_SEVERITY_MEDIUM, LABEL_DEFINITIONS.severityMedium),"},{"lineNumber":141,"author":{"gitId":"-"},"content":" new Label(SEVERITY, SEVERITY_HIGH, COLOR_SEVERITY_HIGH, LABEL_DEFINITIONS.undefined)"},{"lineNumber":142,"author":{"gitId":"-"},"content":"];"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":141}},{"path":"tests/helper/mock.mat.spinner.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"export class MockMatSpinner {"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" _elementRef \u003d document.createElement(\u0027div\u0027);"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" _document \u003d {"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" get: () \u003d\u003e null"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" };"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" _diameter \u003d 0;"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" _value \u003d 0;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" _mode \u003d \u0027\u0027;"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":10,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Add other properties and methods as needed"},{"lineNumber":11,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":12,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" set diameter(value: number) {"},{"lineNumber":13,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this._diameter \u003d value;"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" get diameter(): number {"},{"lineNumber":17,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this._diameter;"},{"lineNumber":18,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":19,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" set mode(value: string) {"},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this._mode \u003d value;"},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" get mode(): string {"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this._mode;"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":27,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":27}},{"path":"tests/helper/mock.view.container.ref.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ComponentRef, ElementRef, EmbeddedViewRef, Injector, TemplateRef, ViewContainerRef, ViewRef } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"export class MockViewContainerRef implements ViewContainerRef {"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" element: ElementRef;"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" injector: Injector;"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" parentInjector: any;"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" length: number;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" _views: ViewRef[] \u003d [];"},{"lineNumber":10,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":11,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor(injector: Injector) {"},{"lineNumber":12,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.injector \u003d injector;"},{"lineNumber":13,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" createEmbeddedView\u003cC\u003e(templateRef: TemplateRef\u003cC\u003e, context?: C, index?: number): EmbeddedViewRef\u003cC\u003e {"},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Implement the required method with a fake return value or logic."},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return null as any;"},{"lineNumber":17,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":18,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":19,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" createComponent\u003cC\u003e(componentFactory: any, index?: number, injector?: any, projectableNodes?: any[], ngModuleRef?: any): ComponentRef\u003cC\u003e {"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Implement the required method with a fake return value or logic."},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return null as any;"},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" insert(viewRef: EmbeddedViewRef\u003cany\u003e, index?: number): EmbeddedViewRef\u003cany\u003e {"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (index \u003d\u003d null || index \u003e this._views.length) {"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" index \u003d this._views.length;"},{"lineNumber":27,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":28,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":29,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this._views.splice(index, 0, viewRef);"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.length \u003d this._views.length;"},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return viewRef;"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" remove(index?: number): void {"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (index \u003d\u003d null || index \u003e\u003d this._views.length) {"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" index \u003d this._views.length - 1;"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":39,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (index \u003e\u003d 0) {"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this._views.splice(index, 1);"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.length \u003d this._views.length;"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" clear(): void {"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" throw new Error(\u0027Method not implemented.\u0027);"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" get(index: number): ViewRef | null {"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" throw new Error(\u0027Method not implemented.\u0027);"},{"lineNumber":49,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" indexOf(viewRef: ViewRef): number {"},{"lineNumber":51,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" throw new Error(\u0027Method not implemented.\u0027);"},{"lineNumber":52,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":53,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" detach(index?: number | undefined): ViewRef | null {"},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" throw new Error(\u0027Method not implemented.\u0027);"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" move(viewRef: ViewRef, currentIndex: number): ViewRef {"},{"lineNumber":58,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" throw new Error(\u0027Method not implemented.\u0027);"},{"lineNumber":59,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":60}},{"path":"tests/model/templates/sections/issue-dispute-section-parser.model.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { IssueDisputeSectionParser } from \u0027../../../../src/app/core/models/templates/section-parsers/issue-dispute-section-parser.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"const TYPE_DISPUTE \u003d"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u0027## :question: Issue Type\\n\\n\u0027 +"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u0027### Team says:\\n\\n\u0027 +"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \"{the team\u0027s action that is being disputed}\\n\\n\" +"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u0027### Tester says:\\n\\n\u0027 +"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \"{tester\u0027s objection}\\n\\n\" +"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"const EXPECTED_TITLE \u003d \u0027Issue Type\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"const EXPECTED_DESCRIPTION \u003d"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u0027### Team says:\\n\\n\u0027 + \"{the team\u0027s action that is being disputed}\\n\\n\" + \u0027### Tester says:\\n\\n\u0027 + \"{tester\u0027s objection}\";"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"describe(\u0027IssueDisputeSectionParser\u0027, () \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" it(\u0027parses type dispute correctly\u0027, () \u003d\u003e {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" const result \u003d IssueDisputeSectionParser.run(TYPE_DISPUTE).result;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" expect(result.title).toBe(EXPECTED_TITLE);"},{"lineNumber":20,"author":{"gitId":"-"},"content":" expect(result.description).toBe(EXPECTED_DESCRIPTION);"},{"lineNumber":21,"author":{"gitId":"-"},"content":" });"},{"lineNumber":22,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":21}},{"path":"tests/model/templates/sections/moderation-section-parser.model.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" DoneCheckboxParser,"},{"lineNumber":3,"author":{"gitId":"-"},"content":" ModerationSectionParser"},{"lineNumber":4,"author":{"gitId":"-"},"content":"} from \u0027../../../../src/app/core/models/templates/section-parsers/moderation-section-parser.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"const TYPE_DISPUTE \u003d"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027## :question: Issue Type\\n\\n\u0027 + \u0027- [ ] Done\\n\\n\u0027 + \u0027[replace this with your explanation]\\n\\n\u0027 + \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"const EMPTY_DONE_CHECKBOX \u003d \u0027- [ ] Done\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"const FILLED_DONE_CHECKBOX \u003d \u0027- [x] Done\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"const EXPECTED_TITLE \u003d \u0027Issue Type\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"const EXPECTED_DESCRIPTION \u003d \u0027- [ ] Done\\n\\n[replace this with your explanation]\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"const EXPECTED_TUTOR_RESPONSE \u003d \u0027[replace this with your explanation]\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"describe(\u0027DoneCheckboxParser\u0027, () \u003d\u003e {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" it(\u0027parses empty checkbox correctly\u0027, () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" const result \u003d DoneCheckboxParser.run(EMPTY_DONE_CHECKBOX).result;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" expect(result).toBe(false);"},{"lineNumber":21,"author":{"gitId":"-"},"content":" });"},{"lineNumber":22,"author":{"gitId":"-"},"content":" it(\u0027parses filled checkbox correctly\u0027, () \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" const result \u003d DoneCheckboxParser.run(FILLED_DONE_CHECKBOX).result;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" expect(result).toBe(true);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" });"},{"lineNumber":27,"author":{"gitId":"-"},"content":"});"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":"describe(\u0027ModerationSectionParser\u0027, () \u003d\u003e {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" it(\u0027parses type dispute correctly\u0027, () \u003d\u003e {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" const result \u003d ModerationSectionParser.run(TYPE_DISPUTE).result;"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" expect(result.title).toBe(EXPECTED_TITLE);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expect(result.description).toBe(EXPECTED_DESCRIPTION);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expect(result.todo.isChecked).toBe(false);"},{"lineNumber":36,"author":{"gitId":"-"},"content":" expect(result.tutorResponse).toBe(EXPECTED_TUTOR_RESPONSE);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" });"},{"lineNumber":38,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":36}},{"path":"tests/model/templates/sections/tester-response-section-parser.model.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" DisagreeCheckboxParser,"},{"lineNumber":3,"author":{"gitId":"-"},"content":" TesterResponseSectionParser"},{"lineNumber":4,"author":{"gitId":"-"},"content":"} from \u0027../../../../src/app/core/models/templates/section-parsers/tester-response-section-parser.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"const EMPTY_DISAGREE_CHECKBOX \u003d \u0027- [ ] I disagree\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"const FILLED_DISAGREE_CHECKBOX \u003d \u0027- [x] I disagree\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"const DEFAULT_DISAGREEMENT_REASON \u003d \u0027[replace this with your reason]\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"const USER_DISAGREEMENT_REASON \u003d \u0027I disagree!\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"const RESPONSE_TITLE \u003d \u0027response\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"const RESPONSE_DESCRIPTION \u003d \u0027Team chose [`response.Rejected`]\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"const RESPONSE_TEAM_CHOSE \u003d \u0027Rejected\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"const SEVERITY_TITLE \u003d \u0027severity\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"const SEVERITY_DESCRIPTION \u003d \u0027Team chose [`severity.Low`]\\nOriginally [`severity.High`]\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"const SEVERITY_TEAM_CHOSE \u003d \u0027Low\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"const SEVERITY_TESTER_CHOSE \u003d \u0027High\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"const TYPE_TITLE \u003d \u0027type\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"const TYPE_DESCRIPTION \u003d \u0027Team chose [`type.DocumentationBug`]\\nOriginally [`type.FunctionalityBug`]\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"const TYPE_TEAM_CHOSE \u003d \u0027DocumentationBug\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"const TYPE_TESTER_CHOSE \u003d \u0027FunctionalityBug\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"const DUPLICATE_TITLE \u003d \u0027duplicate status\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"const DUPLICATE_DESCRIPTION \u003d"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \"Team chose to mark this issue as a duplicate of another issue (as explained in the _**Team\u0027s response**_ above)\";"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":"export const RESPONSE_DISAGREEMENT \u003d"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u0027## :question: Issue response\\n\\n\u0027 +"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u0027Team chose [`response.Rejected`]\\n\\n\u0027 +"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u0027- [ ] I disagree\\n\\n\u0027 +"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u0027**Reason for disagreement:** [replace this with your reason]\\n\\n\u0027 +"},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":"export const SEVERITY_DISAGREEMENT \u003d"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u0027## :question: Issue severity\\n\\n\u0027 +"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u0027Team chose [`severity.Low`]\\n\u0027 +"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u0027Originally [`severity.High`]\\n\\n\u0027 +"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u0027- [x] I disagree\\n\\n\u0027 +"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u0027**Reason for disagreement:** I disagree!\\n\\n\u0027 +"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":"export const TYPE_DISAGREEMENT \u003d"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u0027## :question: Issue type\\n\\n\u0027 +"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u0027Team chose [`type.DocumentationBug`]\\n\u0027 +"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u0027Originally [`type.FunctionalityBug`]\\n\\n\u0027 +"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u0027- [ ] I disagree\\n\\n\u0027 +"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u0027**Reason for disagreement:** [replace this with your reason]\\n\\n\u0027 +"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":"export const DUPLICATE_DISAGREEMENT \u003d"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u0027## :question: Issue duplicate status\\n\\n\u0027 +"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \"Team chose to mark this issue as a duplicate of another issue (as explained in the _**Team\u0027s response**_ above)\\n\\n\" +"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u0027- [ ] I disagree\\n\\n\u0027 +"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u0027**Reason for disagreement:** [replace this with your reason]\\n\\n\u0027 +"},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027\u003ccatcher-end-of-segment\u003e\u003chr\u003e\u0027;"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":"describe(\u0027DisagreeCheckboxParser\u0027, () \u003d\u003e {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" it(\u0027parses empty checkbox correctly\u0027, () \u003d\u003e {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" const result \u003d DisagreeCheckboxParser.run(EMPTY_DISAGREE_CHECKBOX).result;"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" expect(result).toBe(false);"},{"lineNumber":64,"author":{"gitId":"-"},"content":" });"},{"lineNumber":65,"author":{"gitId":"-"},"content":" it(\u0027parses filled checkbox correctly\u0027, () \u003d\u003e {"},{"lineNumber":66,"author":{"gitId":"-"},"content":" const result \u003d DisagreeCheckboxParser.run(FILLED_DISAGREE_CHECKBOX).result;"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" expect(result).toBe(true);"},{"lineNumber":69,"author":{"gitId":"-"},"content":" });"},{"lineNumber":70,"author":{"gitId":"-"},"content":"});"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":"describe(\u0027TesterResponseSectionParser\u0027, () \u003d\u003e {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" it(\u0027parses response disagreement correctly\u0027, () \u003d\u003e {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" const result \u003d TesterResponseSectionParser.run(RESPONSE_DISAGREEMENT).result;"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" expect(result.title).toBe(RESPONSE_TITLE);"},{"lineNumber":77,"author":{"gitId":"-"},"content":" expect(result.description).toBe(RESPONSE_DESCRIPTION);"},{"lineNumber":78,"author":{"gitId":"-"},"content":" expect(result.teamChose).toBe(RESPONSE_TEAM_CHOSE);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" expect(result.testerChose).toBe(null);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" expect(result.disagreeCheckboxValue).toBe(false);"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expect(result.reasonForDisagreement).toBe(DEFAULT_DISAGREEMENT_REASON);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" });"},{"lineNumber":83,"author":{"gitId":"-"},"content":" it(\u0027parses severity disagreement correctly\u0027, () \u003d\u003e {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" const result \u003d TesterResponseSectionParser.run(SEVERITY_DISAGREEMENT).result;"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" expect(result.title).toBe(SEVERITY_TITLE);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" expect(result.description).toBe(SEVERITY_DESCRIPTION);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" expect(result.teamChose).toBe(SEVERITY_TEAM_CHOSE);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" expect(result.testerChose).toBe(SEVERITY_TESTER_CHOSE);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" expect(result.disagreeCheckboxValue).toBe(true);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" expect(result.reasonForDisagreement).toBe(USER_DISAGREEMENT_REASON);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" });"},{"lineNumber":93,"author":{"gitId":"-"},"content":" it(\u0027parses type disagreement correctly\u0027, () \u003d\u003e {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" const result \u003d TesterResponseSectionParser.run(TYPE_DISAGREEMENT).result;"},{"lineNumber":95,"author":{"gitId":"-"},"content":""},{"lineNumber":96,"author":{"gitId":"-"},"content":" expect(result.title).toBe(TYPE_TITLE);"},{"lineNumber":97,"author":{"gitId":"-"},"content":" expect(result.description).toBe(TYPE_DESCRIPTION);"},{"lineNumber":98,"author":{"gitId":"-"},"content":" expect(result.teamChose).toBe(TYPE_TEAM_CHOSE);"},{"lineNumber":99,"author":{"gitId":"-"},"content":" expect(result.testerChose).toBe(TYPE_TESTER_CHOSE);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" expect(result.disagreeCheckboxValue).toBe(false);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" expect(result.reasonForDisagreement).toBe(DEFAULT_DISAGREEMENT_REASON);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" });"},{"lineNumber":103,"author":{"gitId":"-"},"content":" it(\u0027parses duplicate status disagreement correctly\u0027, () \u003d\u003e {"},{"lineNumber":104,"author":{"gitId":"-"},"content":" const result \u003d TesterResponseSectionParser.run(DUPLICATE_DISAGREEMENT).result;"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" expect(result.title).toBe(DUPLICATE_TITLE);"},{"lineNumber":107,"author":{"gitId":"-"},"content":" expect(result.description).toBe(DUPLICATE_DESCRIPTION);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" expect(result.teamChose).toBe(null);"},{"lineNumber":109,"author":{"gitId":"-"},"content":" expect(result.testerChose).toBe(null);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" expect(result.disagreeCheckboxValue).toBe(false);"},{"lineNumber":111,"author":{"gitId":"-"},"content":" expect(result.reasonForDisagreement).toBe(DEFAULT_DISAGREEMENT_REASON);"},{"lineNumber":112,"author":{"gitId":"-"},"content":" });"},{"lineNumber":113,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":4,"-":109}},{"path":"tests/model/undoredo.model.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { UndoRedo } from \u0027../../src/app/core/models/undoredo.model\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"const SIZE \u003d 5;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"describe(\u0027UndoRedo model class\u0027, () \u003d\u003e {"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" let undoRedo: UndoRedo\u003cnumber\u003e;"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" let observedVariable: number;"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" observedVariable \u003d 0;"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo \u003d new UndoRedo\u003cnumber\u003e(SIZE, () \u003d\u003e observedVariable);"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" describe(\u0027.addEntry(T, boolean)\u0027, () \u003d\u003e {"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should add a new element correctly to an empty history\u0027, () \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(1);"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex]).toBe(1);"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(0);"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.firstEntryIndex).toBe(0);"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(0);"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" describe(\u0027on a history with data\u0027, () \u003d\u003e {"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" for (let i \u003d 1; i \u003c SIZE; i++) {"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(i, true);"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should add a new element to a partially filled history\u0027, () \u003d\u003e {"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" const currIndex \u003d undoRedo.currIndex;"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(currIndex).toBe(SIZE - 2);"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.firstEntryIndex).toBe(0);"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(currIndex);"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(SIZE);"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex]).toBe(SIZE);"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.firstEntryIndex).toBe(0);"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(currIndex + 1);"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(currIndex + 1);"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should add wrap around when adding new element to full history\u0027, () \u003d\u003e {"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(SIZE);"},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(SIZE - 1);"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.firstEntryIndex).toBe(0);"},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(SIZE - 1);"},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(SIZE + 1);"},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(0);"},{"lineNumber":52,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex]).toBe(SIZE + 1);"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.firstEntryIndex).toBe(1);"},{"lineNumber":54,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(0);"},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":56,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":57,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should correctly add new element to after undo and resets future states\u0027, () \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.undo();"},{"lineNumber":59,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.undo();"},{"lineNumber":60,"author":{"gitId":"Eclipse-Dominator"},"content":" // 1 2 3 4 \u003d\u003e 1 2"},{"lineNumber":61,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex]).toBe(2);"},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(SIZE - 4);"},{"lineNumber":63,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(SIZE - 2);"},{"lineNumber":64,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(2.5);"},{"lineNumber":65,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex]).toBe(2.5);"},{"lineNumber":66,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(SIZE - 3);"},{"lineNumber":67,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(SIZE - 3);"},{"lineNumber":68,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":69,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":70,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":71,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":72,"author":{"gitId":"Eclipse-Dominator"},"content":" describe(\u0027.undo()\u0027, () \u003d\u003e {"},{"lineNumber":73,"author":{"gitId":"Eclipse-Dominator"},"content":" describe(\u0027null tests\u0027, () \u003d\u003e {"},{"lineNumber":74,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should return null on empty history\u0027, () \u003d\u003e {"},{"lineNumber":75,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.undo()).toBe(null);"},{"lineNumber":76,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":77,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":78,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should return null on last history\u0027, () \u003d\u003e {"},{"lineNumber":79,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(1);"},{"lineNumber":80,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.undo()).toBe(null);"},{"lineNumber":81,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":82,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":83,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":84,"author":{"gitId":"Eclipse-Dominator"},"content":" describe(\u0027non-null tests\u0027, () \u003d\u003e {"},{"lineNumber":85,"author":{"gitId":"Eclipse-Dominator"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":86,"author":{"gitId":"Eclipse-Dominator"},"content":" for (let i \u003d 1; i \u003c SIZE; i++) {"},{"lineNumber":87,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(i, true);"},{"lineNumber":88,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":89,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":90,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":91,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should return the last seen element\u0027, () \u003d\u003e {"},{"lineNumber":92,"author":{"gitId":"Eclipse-Dominator"},"content":" // 1 2 3 4 \u003d\u003e 1 2 (3) 4"},{"lineNumber":93,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.undo()).toBe(3);"},{"lineNumber":94,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex]).toBe(3);"},{"lineNumber":95,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(SIZE - 3);"},{"lineNumber":96,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(SIZE - 2);"},{"lineNumber":97,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":98,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":99,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should poll for latest change if there are further changes\u0027, () \u003d\u003e {"},{"lineNumber":100,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.isSaved \u003d false;"},{"lineNumber":101,"author":{"gitId":"Eclipse-Dominator"},"content":" observedVariable \u003d 999;"},{"lineNumber":102,"author":{"gitId":"Eclipse-Dominator"},"content":" // 1 2 3 4 \u003d\u003e 1 2 3 (4) 999"},{"lineNumber":103,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.undo()).toBe(4);"},{"lineNumber":104,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex]).toBe(4);"},{"lineNumber":105,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex + 1]).toBe(999);"},{"lineNumber":106,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(SIZE - 2);"},{"lineNumber":107,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(SIZE - 1);"},{"lineNumber":108,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":109,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":110,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":111,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":112,"author":{"gitId":"Eclipse-Dominator"},"content":" describe(\u0027.redo()\u0027, () \u003d\u003e {"},{"lineNumber":113,"author":{"gitId":"Eclipse-Dominator"},"content":" describe(\u0027null tests\u0027, () \u003d\u003e {"},{"lineNumber":114,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should return null on empty history\u0027, () \u003d\u003e {"},{"lineNumber":115,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.redo()).toBe(null);"},{"lineNumber":116,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":117,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":118,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should return null on latest history\u0027, () \u003d\u003e {"},{"lineNumber":119,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(1);"},{"lineNumber":120,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.redo()).toBe(null);"},{"lineNumber":121,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":122,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":123,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":124,"author":{"gitId":"Eclipse-Dominator"},"content":" describe(\u0027non-null tests\u0027, () \u003d\u003e {"},{"lineNumber":125,"author":{"gitId":"Eclipse-Dominator"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":126,"author":{"gitId":"Eclipse-Dominator"},"content":" for (let i \u003d 1; i \u003c SIZE; i++) {"},{"lineNumber":127,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.addEntry(i, true);"},{"lineNumber":128,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":129,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.undo();"},{"lineNumber":130,"author":{"gitId":"Eclipse-Dominator"},"content":" undoRedo.undo();"},{"lineNumber":131,"author":{"gitId":"Eclipse-Dominator"},"content":" // 1 2 3 4 \u003d\u003e 1 (2) 3 4"},{"lineNumber":132,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":133,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":134,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should return the last seen element\u0027, () \u003d\u003e {"},{"lineNumber":135,"author":{"gitId":"Eclipse-Dominator"},"content":" // 1 (2) 3 4 \u003d\u003e 1 2 (3) 4"},{"lineNumber":136,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.redo()).toBe(3);"},{"lineNumber":137,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.historyArray[undoRedo.currIndex]).toBe(3);"},{"lineNumber":138,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.currIndex).toBe(SIZE - 3);"},{"lineNumber":139,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(undoRedo.lastEntryIndex).toBe(SIZE - 2);"},{"lineNumber":140,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":141,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":142,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":143,"author":{"gitId":"Eclipse-Dominator"},"content":"});"}],"authorContributionMap":{"Eclipse-Dominator":143}},{"path":"tests/services/error-handling.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormErrorComponent } from \u0027../../src/app/shared/error-toasters/form-error/form-error.component\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { GeneralMessageErrorComponent } from \u0027../../src/app/shared/error-toasters/general-message-error/general-message-error.component\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" ERROR_WITH_NO_MESSAGE,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" HTTP_304_ERROR,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" HTTP_400_ERROR,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" HTTP_401_ERROR,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" HTTP_404_ERROR,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" HTTP_422_ERROR,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" HTTP_500_ERROR,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" OCTOKIT_REQUEST_ERROR,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" STANDARD_ERROR"},{"lineNumber":14,"author":{"gitId":"-"},"content":"} from \u0027../constants/error.constants\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"let errorHandlingService: ErrorHandlingService;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"let mockLoggingService;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"let mockSnackBar;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"describe(\u0027ErrorHandlingService\u0027, () \u003d\u003e {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" mockLoggingService \u003d jasmine.createSpyObj(\u0027LoggingService\u0027, [\u0027error\u0027, \u0027debug\u0027]);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" mockSnackBar \u003d jasmine.createSpyObj(\u0027MatSnackBar\u0027, [\u0027openFromComponent\u0027]);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" errorHandlingService \u003d new ErrorHandlingService(mockSnackBar, mockLoggingService);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" });"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" describe(\u0027ErrorHandlingService: handleError()\u0027, () \u003d\u003e {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" it(\u0027should log errors when handling errors\u0027, () \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(STANDARD_ERROR);"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(mockLoggingService.error).toHaveBeenCalledWith(\u0027ErrorHandlingService: \u0027 + STANDARD_ERROR);"},{"lineNumber":31,"author":{"gitId":"-"},"content":" });"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" it(\u0027should use the GeneralMessageErrorComponent when handling Errors\u0027, () \u003d\u003e {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(STANDARD_ERROR);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledWith(GeneralMessageErrorComponent, {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" data: { message: STANDARD_ERROR.message }"},{"lineNumber":37,"author":{"gitId":"-"},"content":" });"},{"lineNumber":38,"author":{"gitId":"-"},"content":" });"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" it(\u0027should stringify Errors if there is no message before displaying\u0027, () \u003d\u003e {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(ERROR_WITH_NO_MESSAGE);"},{"lineNumber":42,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledWith(GeneralMessageErrorComponent, {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" data: { message: JSON.stringify(ERROR_WITH_NO_MESSAGE) }"},{"lineNumber":44,"author":{"gitId":"-"},"content":" });"},{"lineNumber":45,"author":{"gitId":"-"},"content":" });"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" it(\u0027should not open the snackbar when handling http status 304 errors\u0027, () \u003d\u003e {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(HTTP_304_ERROR);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).not.toHaveBeenCalled();"},{"lineNumber":50,"author":{"gitId":"-"},"content":" });"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" it(\u0027should use the FormErrorComponent when handling http status 422 errors\u0027, () \u003d\u003e {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(HTTP_422_ERROR);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledWith(FormErrorComponent, { data: HTTP_422_ERROR });"},{"lineNumber":55,"author":{"gitId":"-"},"content":" });"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" it(\u0027should use the GeneralMessageErrorComponent when handling other http errors\u0027, () \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(HTTP_500_ERROR);"},{"lineNumber":59,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledWith(GeneralMessageErrorComponent, { data: HTTP_500_ERROR });"},{"lineNumber":60,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(HTTP_400_ERROR);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledWith(GeneralMessageErrorComponent, { data: HTTP_400_ERROR });"},{"lineNumber":62,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(HTTP_401_ERROR);"},{"lineNumber":63,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledWith(GeneralMessageErrorComponent, { data: HTTP_401_ERROR });"},{"lineNumber":64,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(HTTP_404_ERROR);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledWith(GeneralMessageErrorComponent, { data: HTTP_404_ERROR });"},{"lineNumber":66,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledTimes(4);"},{"lineNumber":67,"author":{"gitId":"-"},"content":" });"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" it(\u0027should treat octokit request errors as http errors\u0027, () \u003d\u003e {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" errorHandlingService.handleError(OCTOKIT_REQUEST_ERROR);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expect(mockSnackBar.openFromComponent).toHaveBeenCalledWith(GeneralMessageErrorComponent, { data: OCTOKIT_REQUEST_ERROR });"},{"lineNumber":72,"author":{"gitId":"-"},"content":" });"},{"lineNumber":73,"author":{"gitId":"-"},"content":" });"},{"lineNumber":74,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":73}},{"path":"tests/services/label.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../../src/app/core/models/github/github-label.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Label } from \u0027../../src/app/core/models/label.model\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LabelService, LABEL_DEFINITIONS } from \u0027../../src/app/core/services/label.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import * as GithubLabelConstant from \u0027../constants/githublabel.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import * as LabelConstant from \u0027../constants/label.constants\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"let labelService: LabelService;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"let githubService: any;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"describe(\u0027LabelService\u0027, () \u003d\u003e {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" githubService \u003d jasmine.createSpyObj(\u0027GithubService\u0027, [\u0027fetchAllLabels\u0027, \u0027createLabel\u0027]);"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelService \u003d new LabelService(githubService, null);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" });"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":" describe(\u0027.syncLabels()\u0027, () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" it(\u0027should create all required labels for team response phase if no required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of([]));"},{"lineNumber":20,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(true)).subscribe();"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.SEVERITY_LOW_LABEL);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.RESPONSE_REJECTED_LABEL);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.STATUS_DONE_LABEL);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.TYPE_DOCUMENTATION_BUG_LABEL);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes(LabelService.getRequiredLabelsAsArray(true).length);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" });"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" it(\u0027should create all required labels for tester phase if no required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of([]));"},{"lineNumber":31,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(false)).subscribe();"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.SEVERITY_LOW_LABEL);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.TYPE_DOCUMENTATION_BUG_LABEL);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes(LabelService.getRequiredLabelsAsArray(false).length);"},{"lineNumber":36,"author":{"gitId":"-"},"content":" });"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" it(\u0027should create missing required labels for team response phase if some required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of(LabelConstant.SOME_TEAM_RESPONSE_PHASE_LABELS));"},{"lineNumber":40,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(true)).subscribe();"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertLabelNotCreated(githubService, LabelConstant.SEVERITY_LOW_LABEL);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.RESPONSE_REJECTED_LABEL);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.STATUS_DONE_LABEL);"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.TYPE_DOCUMENTATION_BUG_LABEL);"},{"lineNumber":46,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes("},{"lineNumber":47,"author":{"gitId":"-"},"content":" LabelService.getRequiredLabelsAsArray(true).length - LabelConstant.SOME_TEAM_RESPONSE_PHASE_LABELS.length"},{"lineNumber":48,"author":{"gitId":"-"},"content":" );"},{"lineNumber":49,"author":{"gitId":"-"},"content":" });"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" it(\u0027should create missing required labels for tester phase if some required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of(LabelConstant.SOME_TESTER_PHASE_LABELS));"},{"lineNumber":53,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(false)).subscribe();"},{"lineNumber":54,"author":{"gitId":"-"},"content":""},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertLabelNotCreated(githubService, LabelConstant.SEVERITY_HIGH_LABEL);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.TYPE_FUNCTIONALITY_BUG_LABEL);"},{"lineNumber":57,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes("},{"lineNumber":58,"author":{"gitId":"-"},"content":" LabelService.getRequiredLabelsAsArray(false).length - LabelConstant.SOME_TESTER_PHASE_LABELS.length"},{"lineNumber":59,"author":{"gitId":"-"},"content":" );"},{"lineNumber":60,"author":{"gitId":"-"},"content":" });"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" it(\u0027should not need to create any required labels if all required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of(LabelConstant.ALL_REQUIRED_LABELS_ARRAY));"},{"lineNumber":64,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(true)).subscribe();"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes(0);"},{"lineNumber":67,"author":{"gitId":"-"},"content":" });"},{"lineNumber":68,"author":{"gitId":"-"},"content":" });"},{"lineNumber":69,"author":{"gitId":"-"},"content":"});"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: toLabel()\u0027, () \u003d\u003e {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" beforeAll(() \u003d\u003e {"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelService \u003d new LabelService(null, null);"},{"lineNumber":74,"author":{"gitId":"-"},"content":" });"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" afterAll(() \u003d\u003e {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" });"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" it(\u0027should convert a GithubLabel object to a corresponding Label object\u0027, () \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" const lowSeverityLabel \u003d labelService.toLabel(GithubLabelConstant.GITHUB_LABEL_LOW_SEVERITY);"},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" expect(lowSeverityLabel.labelCategory).toBe(LabelConstant.SEVERITY);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" expect(lowSeverityLabel.labelValue).toBe(LabelConstant.SEVERITY_LOW);"},{"lineNumber":85,"author":{"gitId":"-"},"content":" expect(lowSeverityLabel.labelColor).toBe(LabelConstant.COLOR_SEVERITY_LOW);"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" const functionalityBugLabel \u003d labelService.toLabel(GithubLabelConstant.GITHUB_LABEL_FUNCTIONALITY_BUG);"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" expect(functionalityBugLabel.labelCategory).toBe(LabelConstant.TYPE);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" expect(functionalityBugLabel.labelValue).toBe(LabelConstant.TYPE_FUNCTIONALITY_BUG);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" expect(functionalityBugLabel.labelColor).toBe(LabelConstant.COLOR_TYPE_FUNCTIONALITY_BUG);"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" const tutoriallabel \u003d labelService.toLabel(GithubLabelConstant.GITHUB_LABEL_TUTORIAL_LABEL);"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" expect(tutoriallabel.labelCategory).toBe(\u0027tutorial\u0027);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" expect(tutoriallabel.labelValue).toBe(\u0027CS2103T-W12\u0027);"},{"lineNumber":97,"author":{"gitId":"-"},"content":" expect(tutoriallabel.labelColor).toBe(\u0027c2e0c6\u0027);"},{"lineNumber":98,"author":{"gitId":"-"},"content":" });"},{"lineNumber":99,"author":{"gitId":"-"},"content":"});"},{"lineNumber":100,"author":{"gitId":"-"},"content":""},{"lineNumber":101,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: isDarkColor()\u0027, () \u003d\u003e {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":103,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelService \u003d new LabelService(null, null);"},{"lineNumber":104,"author":{"gitId":"-"},"content":" });"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":108,"author":{"gitId":"-"},"content":" });"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":" it(\u0027should be true for dark color\u0027, () \u003d\u003e {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" expect(labelService.isDarkColor(LabelConstant.COLOR_BLACK)).toBeTruthy();"},{"lineNumber":112,"author":{"gitId":"-"},"content":" });"},{"lineNumber":113,"author":{"gitId":"-"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":" it(\u0027should be false for light color\u0027, () \u003d\u003e {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" expect(labelService.isDarkColor(LabelConstant.COLOR_WHITE)).toBeFalsy();"},{"lineNumber":116,"author":{"gitId":"-"},"content":" });"},{"lineNumber":117,"author":{"gitId":"-"},"content":"});"},{"lineNumber":118,"author":{"gitId":"-"},"content":""},{"lineNumber":119,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: setLabelStyle()\u0027, () \u003d\u003e {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":121,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelService \u003d new LabelService(null, null);"},{"lineNumber":122,"author":{"gitId":"-"},"content":" });"},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":125,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":126,"author":{"gitId":"-"},"content":" });"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":" it(\u0027should be dark color background with light color text\u0027, () \u003d\u003e {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" expect(labelService.setLabelStyle(LabelConstant.COLOR_BLACK)).toEqual(LabelConstant.DARK_BG_LIGHT_TEXT);"},{"lineNumber":130,"author":{"gitId":"-"},"content":" });"},{"lineNumber":131,"author":{"gitId":"-"},"content":""},{"lineNumber":132,"author":{"gitId":"-"},"content":" it(\u0027should be light color background with dark color text\u0027, () \u003d\u003e {"},{"lineNumber":133,"author":{"gitId":"-"},"content":" expect(labelService.setLabelStyle(LabelConstant.COLOR_WHITE)).toEqual(LabelConstant.LIGHT_BG_DARK_TEXT);"},{"lineNumber":134,"author":{"gitId":"-"},"content":" });"},{"lineNumber":135,"author":{"gitId":"-"},"content":""},{"lineNumber":136,"author":{"gitId":"-"},"content":" it(\u0027should be light color background with dark color text\u0027, () \u003d\u003e {"},{"lineNumber":137,"author":{"gitId":"-"},"content":" expect(labelService.setLabelStyle(LabelConstant.COLOR_WHITE, \u0027inline-block\u0027)).toEqual(LabelConstant.INLINE_BLOCK_TEXT);"},{"lineNumber":138,"author":{"gitId":"-"},"content":" });"},{"lineNumber":139,"author":{"gitId":"-"},"content":"});"},{"lineNumber":140,"author":{"gitId":"-"},"content":""},{"lineNumber":141,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: getColorOfLabel()\u0027, () \u003d\u003e {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":143,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelService \u003d new LabelService(null, null);"},{"lineNumber":144,"author":{"gitId":"-"},"content":" });"},{"lineNumber":145,"author":{"gitId":"-"},"content":""},{"lineNumber":146,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":147,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":148,"author":{"gitId":"-"},"content":" });"},{"lineNumber":149,"author":{"gitId":"-"},"content":""},{"lineNumber":150,"author":{"gitId":"-"},"content":" it(\u0027should be correct label color for Severity.Low\u0027, () \u003d\u003e {"},{"lineNumber":151,"author":{"gitId":"-"},"content":" expect(labelService.getColorOfLabel(\u0027severity\u0027, LabelConstant.SEVERITY_LOW)).toEqual(LabelConstant.COLOR_SEVERITY_LOW);"},{"lineNumber":152,"author":{"gitId":"-"},"content":" });"},{"lineNumber":153,"author":{"gitId":"-"},"content":""},{"lineNumber":154,"author":{"gitId":"-"},"content":" it(\u0027should be white color for invalid inputs\u0027, () \u003d\u003e {"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expect(labelService.getColorOfLabel(\u0027others\u0027, null)).toEqual(LabelConstant.COLOR_WHITE.toLowerCase());"},{"lineNumber":156,"author":{"gitId":"-"},"content":" });"},{"lineNumber":157,"author":{"gitId":"-"},"content":"});"},{"lineNumber":158,"author":{"gitId":"-"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: getLabelDefinition()\u0027, () \u003d\u003e {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":161,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" labelService \u003d new LabelService(null, null);"},{"lineNumber":162,"author":{"gitId":"-"},"content":" });"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":166,"author":{"gitId":"-"},"content":" });"},{"lineNumber":167,"author":{"gitId":"-"},"content":""},{"lineNumber":168,"author":{"gitId":"-"},"content":" it(\u0027should return the correct label definition for type.FunctionalityBug\u0027, () \u003d\u003e {"},{"lineNumber":169,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.TYPE_FUNCTIONALITY_BUG, LabelConstant.TYPE)).toEqual("},{"lineNumber":170,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.typeFunctionalityBug"},{"lineNumber":171,"author":{"gitId":"-"},"content":" );"},{"lineNumber":172,"author":{"gitId":"-"},"content":" });"},{"lineNumber":173,"author":{"gitId":"-"},"content":""},{"lineNumber":174,"author":{"gitId":"-"},"content":" it(\u0027should return the correct label definition for severity.Medium\u0027, () \u003d\u003e {"},{"lineNumber":175,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.SEVERITY_MEDIUM, LabelConstant.SEVERITY)).toEqual("},{"lineNumber":176,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.severityMedium"},{"lineNumber":177,"author":{"gitId":"-"},"content":" );"},{"lineNumber":178,"author":{"gitId":"-"},"content":" });"},{"lineNumber":179,"author":{"gitId":"-"},"content":""},{"lineNumber":180,"author":{"gitId":"-"},"content":" it(\u0027should return the correct label definition for response.Rejected\u0027, () \u003d\u003e {"},{"lineNumber":181,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.RESPONSE_REJECTED, LabelConstant.RESPONSE)).toEqual("},{"lineNumber":182,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.responseRejected"},{"lineNumber":183,"author":{"gitId":"-"},"content":" );"},{"lineNumber":184,"author":{"gitId":"-"},"content":" });"},{"lineNumber":185,"author":{"gitId":"-"},"content":""},{"lineNumber":186,"author":{"gitId":"-"},"content":" it(\u0027should return null for label with no definition\u0027, () \u003d\u003e {"},{"lineNumber":187,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.STATUS_DONE, LabelConstant.STATUS)).toEqual(LABEL_DEFINITIONS.undefined);"},{"lineNumber":188,"author":{"gitId":"-"},"content":" });"},{"lineNumber":189,"author":{"gitId":"-"},"content":""},{"lineNumber":190,"author":{"gitId":"-"},"content":" it(\u0027should return null for invalid inputs\u0027, () \u003d\u003e {"},{"lineNumber":191,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(null, null)).toEqual(LABEL_DEFINITIONS.undefined);"},{"lineNumber":192,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(null, LabelConstant.SEVERITY)).toEqual(LABEL_DEFINITIONS.undefined);"},{"lineNumber":193,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.SEVERITY_MEDIUM, null)).toEqual(LABEL_DEFINITIONS.undefined);"},{"lineNumber":194,"author":{"gitId":"-"},"content":" });"},{"lineNumber":195,"author":{"gitId":"-"},"content":"});"},{"lineNumber":196,"author":{"gitId":"-"},"content":""},{"lineNumber":197,"author":{"gitId":"-"},"content":"function assertLabelCreated(githubService: any, label: Label) {"},{"lineNumber":198,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledWith(label.getFormattedName(), label.labelColor);"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}"},{"lineNumber":200,"author":{"gitId":"-"},"content":""},{"lineNumber":201,"author":{"gitId":"-"},"content":"function assertLabelNotCreated(githubService: any, label: Label) {"},{"lineNumber":202,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).not.toHaveBeenCalledWith(label.getFormattedName(), label.labelColor);"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":7,"-":196}},{"path":"tests/services/loading.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { DOCUMENT } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ComponentFactory, ComponentFactoryResolver, ComponentRef, ElementRef, Injector, Renderer2, ViewContainerRef } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { TestBed, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MatSpinner } from \u0027@angular/material/progress-spinner\u0027;"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoadingService } from \u0027../../src/app/core/services/loading.service\u0027;"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MockMatSpinner } from \u0027../helper/mock.mat.spinner\u0027;"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { MockViewContainerRef } from \u0027../helper/mock.view.container.ref\u0027;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"describe(\u0027LoadingService\u0027, () \u003d\u003e {"},{"lineNumber":10,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let mockMatSpinnerInstance: MockMatSpinner;"},{"lineNumber":11,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let mockRenderer: jasmine.SpyObj\u003cRenderer2\u003e;"},{"lineNumber":12,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let mockComponentInjector: jasmine.SpyObj\u003cInjector\u003e;"},{"lineNumber":13,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let elementRef: ElementRef;"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let mockComponentRef: ComponentRef\u003cMatSpinner\u003e;"},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let mockInjector: jasmine.SpyObj\u003cInjector\u003e;"},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let loadingService: LoadingService;"},{"lineNumber":17,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let mockComponentFactory: jasmine.SpyObj\u003cComponentFactory\u003cMatSpinner\u003e\u003e;"},{"lineNumber":18,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let mockComponentFactoryResolver: jasmine.SpyObj\u003cComponentFactoryResolver\u003e;"},{"lineNumber":19,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let mockViewContainerRef: MockViewContainerRef;"},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let document: Document;"},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" beforeEach(async () \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockMatSpinnerInstance \u003d new MockMatSpinner();"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockRenderer \u003d jasmine.createSpyObj\u003cRenderer2\u003e(\u0027Renderer2\u0027, [\u0027createElement\u0027, \u0027appendChild\u0027, \u0027setStyle\u0027, \u0027addClass\u0027]);"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockRenderer.addClass.and.callFake((el: any, className: string) \u003d\u003e {"},{"lineNumber":27,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" // Simulate adding the class by appending it to the element\u0027s classList"},{"lineNumber":28,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" el.classList.add(className);"},{"lineNumber":29,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockComponentInjector \u003d jasmine.createSpyObj(\u0027Injector\u0027, {"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" get: mockRenderer"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" elementRef \u003d {"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" nativeElement: {"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" classList: {"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" add: jasmine.createSpy(\u0027classList.add\u0027),"},{"lineNumber":39,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" remove: jasmine.createSpy(\u0027classList.remove\u0027),"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" contains: jasmine.createSpy(\u0027classList.contains\u0027),"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" toggle: jasmine.createSpy(\u0027classList.toggle\u0027),"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" length: 0,"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" item: jasmine.createSpy(\u0027classList.item\u0027),"},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" toString: jasmine.createSpy(\u0027classList.toString\u0027),"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" entries: jasmine.createSpy(\u0027classList.entries\u0027),"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" forEach: jasmine.createSpy(\u0027classList.forEach\u0027),"},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" keys: jasmine.createSpy(\u0027classList.keys\u0027),"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" values: jasmine.createSpy(\u0027classList.values\u0027)"},{"lineNumber":49,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":51,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" };"},{"lineNumber":52,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":53,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockComponentRef \u003d ({"},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" location: elementRef,"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" changeDetectorRef: jasmine.createSpyObj(\u0027ChangeDetectorRef\u0027, [\u0027detectChanges\u0027]),"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" hostView: null as any,"},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" instance: mockMatSpinnerInstance,"},{"lineNumber":58,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" injector: mockComponentInjector,"},{"lineNumber":59,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" onDestroy: null as any,"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" destroy: () \u003d\u003e {},"},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" componentType: MatSpinner"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" } as unknown) as ComponentRef\u003cMatSpinner\u003e;"},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockComponentFactory \u003d jasmine.createSpyObj\u003cComponentFactory\u003cMatSpinner\u003e\u003e({"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" create: mockComponentRef"},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":68,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockComponentFactoryResolver \u003d jasmine.createSpyObj\u003cComponentFactoryResolver\u003e({"},{"lineNumber":69,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" resolveComponentFactory: mockComponentFactory"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":71,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockInjector \u003d jasmine.createSpyObj(\u0027Injector\u0027, {"},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" get: mockRenderer"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":74,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":75,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mockViewContainerRef \u003d new MockViewContainerRef(mockInjector);"},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" await TestBed.configureTestingModule({"},{"lineNumber":78,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" providers: ["},{"lineNumber":79,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: ComponentFactoryResolver, useValue: mockComponentFactoryResolver },"},{"lineNumber":80,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: Injector, useValue: mockInjector },"},{"lineNumber":81,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: MatSpinner, useClass: MockMatSpinner },"},{"lineNumber":82,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" LoadingService"},{"lineNumber":83,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ]"},{"lineNumber":84,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }).compileComponents();"},{"lineNumber":85,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":86,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService \u003d TestBed.inject(LoadingService);"},{"lineNumber":87,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" document \u003d TestBed.inject(DOCUMENT);"},{"lineNumber":88,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":89,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":90,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" describe(\u0027.new()\u0027, () \u003d\u003e {"},{"lineNumber":91,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should create a new loading service\u0027, () \u003d\u003e {"},{"lineNumber":92,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService).toBeTruthy();"},{"lineNumber":93,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":94,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":95,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":96,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" describe(\u0027.addCssClasses()\u0027, () \u003d\u003e {"},{"lineNumber":97,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":98,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027should add CSS Classes to the spinner reference\u0027,"},{"lineNumber":99,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":100,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const testClassList \u003d [\u0027test-class-1\u0027, \u0027test-class-2\u0027, \u0027test-class-3\u0027];"},{"lineNumber":101,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":102,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addCssClasses(testClassList);"},{"lineNumber":103,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":104,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader();"},{"lineNumber":105,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":106,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).not.toBeNull();"},{"lineNumber":107,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (loadingService.spinnerComponentRef) {"},{"lineNumber":108,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const spinnerElement \u003d loadingService.spinnerComponentRef.location.nativeElement;"},{"lineNumber":109,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(spinnerElement.classList.add).toHaveBeenCalledTimes(testClassList.length);"},{"lineNumber":110,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" for (const className of testClassList) {"},{"lineNumber":111,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(spinnerElement.classList.add).toHaveBeenCalledWith(className);"},{"lineNumber":112,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":113,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":114,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":115,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":116,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":117,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":118,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" describe(\u0027.addAnimationMode()\u0027, () \u003d\u003e {"},{"lineNumber":119,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":120,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027should add an animation mode to the spinner reference\u0027,"},{"lineNumber":121,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":122,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addAnimationMode(\u0027determinate\u0027);"},{"lineNumber":123,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":124,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader();"},{"lineNumber":125,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":126,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).not.toBeNull();"},{"lineNumber":127,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (loadingService.spinnerComponentRef) {"},{"lineNumber":128,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const spinnerRef \u003d loadingService.spinnerComponentRef;"},{"lineNumber":129,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(spinnerRef.instance.mode).toEqual(\u0027determinate\u0027);"},{"lineNumber":130,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":131,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":132,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":133,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":134,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":135,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" describe(\u0027.addSpinnerOptions()\u0027, () \u003d\u003e {"},{"lineNumber":136,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":137,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027should add a diameter to the spinner reference\u0027,"},{"lineNumber":138,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":139,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const testDiameter \u003d 20;"},{"lineNumber":140,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addSpinnerOptions({ diameter: testDiameter });"},{"lineNumber":141,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":142,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader();"},{"lineNumber":143,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":144,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).not.toBeNull();"},{"lineNumber":145,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (loadingService.spinnerComponentRef) {"},{"lineNumber":146,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const spinnerRef \u003d loadingService.spinnerComponentRef;"},{"lineNumber":147,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(spinnerRef.instance.diameter).toEqual(testDiameter);"},{"lineNumber":148,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":149,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":150,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":151,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":152,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":153,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027should add stroke width to the spinner reference\u0027,"},{"lineNumber":154,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":155,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const testStrokeWidth \u003d 20;"},{"lineNumber":156,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addSpinnerOptions({ strokeWidth: testStrokeWidth });"},{"lineNumber":157,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":158,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader();"},{"lineNumber":159,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":160,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).not.toBeNull();"},{"lineNumber":161,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (loadingService.spinnerComponentRef) {"},{"lineNumber":162,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const spinnerRef \u003d loadingService.spinnerComponentRef;"},{"lineNumber":163,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(spinnerRef.instance.strokeWidth).toEqual(testStrokeWidth);"},{"lineNumber":164,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":165,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":166,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":167,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":168,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":169,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" describe(\u0027.addTheme()\u0027, () \u003d\u003e {"},{"lineNumber":170,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":171,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027should add a theme to the spinner reference\u0027,"},{"lineNumber":172,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":173,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const testTheme \u003d \u0027accent\u0027;"},{"lineNumber":174,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addTheme(testTheme);"},{"lineNumber":175,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":176,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader();"},{"lineNumber":177,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":178,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).not.toBeNull();"},{"lineNumber":179,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (loadingService.spinnerComponentRef) {"},{"lineNumber":180,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const spinnerRef \u003d loadingService.spinnerComponentRef;"},{"lineNumber":181,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(spinnerRef.instance.color).toEqual(testTheme);"},{"lineNumber":182,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":183,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":184,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":185,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":186,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":187,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" describe(\u0027.hideLoader()\u0027, () \u003d\u003e {"},{"lineNumber":188,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":189,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027should remove the spinner\u0027,"},{"lineNumber":190,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":191,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader();"},{"lineNumber":192,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":193,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).not.toBeNull();"},{"lineNumber":194,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":195,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader();"},{"lineNumber":196,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":197,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).toBeNull();"},{"lineNumber":198,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":199,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":200,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":201,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":202,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" describe(\u0027.addViewContainerRef()\u0027, () \u003d\u003e {"},{"lineNumber":203,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":204,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027should add the view container ref\u0027,"},{"lineNumber":205,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":206,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addViewContainerRef(mockViewContainerRef);"},{"lineNumber":207,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":208,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerContainerRef).not.toBeNull();"},{"lineNumber":209,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":210,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerContainerRef).toEqual(mockViewContainerRef);"},{"lineNumber":211,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":212,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader();"},{"lineNumber":213,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":214,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(mockViewContainerRef._views.length).toBe(1);"},{"lineNumber":215,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":216,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(mockViewContainerRef._views[0]).toEqual(loadingService.spinnerComponentRef?.hostView);"},{"lineNumber":217,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":218,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":219,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":220,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":221,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027should remove the spinner from the view container ref\u0027,"},{"lineNumber":222,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":223,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.hideLoader();"},{"lineNumber":224,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":225,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(mockViewContainerRef._views.length).toBe(0);"},{"lineNumber":226,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":227,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).toBeNull();"},{"lineNumber":228,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":229,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":230,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":231,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":232,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" describe(\u0027.ngOnDestroy()\u0027, () \u003d\u003e {"},{"lineNumber":233,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it("},{"lineNumber":234,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u0027destroy existing subscriptions and reset spinner refs\u0027,"},{"lineNumber":235,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":236,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.addViewContainerRef(mockViewContainerRef);"},{"lineNumber":237,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":238,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.showLoader();"},{"lineNumber":239,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":240,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loadingService.ngOnDestroy();"},{"lineNumber":241,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":242,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerComponentRef).toBeNull();"},{"lineNumber":243,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":244,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(loadingService.spinnerContainerRef).toBeNull();"},{"lineNumber":245,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":246,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" );"},{"lineNumber":247,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":248,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":248}},{"path":"tests/services/logging.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../src/app/core/services/logging.service\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MockLocalStorage } from \u0027../helper/mock.local.storage\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"let logger: LoggingService;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"let headerLog: string;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"let sessionSeparator: string;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"const mockDate \u003d new Date(2021, 6, 27);"},{"lineNumber":8,"author":{"gitId":"-"},"content":"const infoLogMessage \u003d \u0027Info log message\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"const mockLocalStorageFunctionCalls \u003d (mockLocalStorage: MockLocalStorage) \u003d\u003e {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" spyOn(localStorage, \u0027getItem\u0027).and.callFake(mockLocalStorage.getItem.bind(mockLocalStorage));"},{"lineNumber":12,"author":{"gitId":"-"},"content":" spyOn(localStorage, \u0027setItem\u0027).and.callFake(mockLocalStorage.setItem.bind(mockLocalStorage));"},{"lineNumber":13,"author":{"gitId":"-"},"content":" spyOn(localStorage, \u0027removeItem\u0027).and.callFake(mockLocalStorage.removeItem.bind(mockLocalStorage));"},{"lineNumber":14,"author":{"gitId":"-"},"content":" spyOn(localStorage, \u0027clear\u0027).and.callFake(mockLocalStorage.clear.bind(mockLocalStorage));"},{"lineNumber":15,"author":{"gitId":"-"},"content":"};"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"const mockDates \u003d () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" jasmine.clock().install();"},{"lineNumber":19,"author":{"gitId":"-"},"content":" jasmine.clock().mockDate(mockDate);"},{"lineNumber":20,"author":{"gitId":"-"},"content":"};"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":"const initializeLoggingService \u003d () \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger \u003d new LoggingService();"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" headerLog \u003d `${logger.LOG_START_HEADER}\\n${mockDate.toLocaleString()}`;"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" sessionSeparator \u003d logger.SESSION_LOG_SEPARATOR;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"};"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"describe(\u0027LoggingService\u0027, () \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" beforeAll(() \u003d\u003e {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" const mockLocalStorage \u003d new MockLocalStorage();"},{"lineNumber":31,"author":{"gitId":"-"},"content":" mockLocalStorageFunctionCalls(mockLocalStorage);"},{"lineNumber":32,"author":{"gitId":"-"},"content":" mockDates();"},{"lineNumber":33,"author":{"gitId":"-"},"content":" initializeLoggingService();"},{"lineNumber":34,"author":{"gitId":"-"},"content":" });"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.reset();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" localStorage.clear();"},{"lineNumber":39,"author":{"gitId":"-"},"content":" });"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" afterAll(() \u003d\u003e {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" jasmine.clock().uninstall();"},{"lineNumber":43,"author":{"gitId":"-"},"content":" });"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" describe(\u0027.startSession()\u0027, () \u003d\u003e {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" it(\u0027should successfully initialize logging session\u0027, () \u003d\u003e {"},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":49,"author":{"gitId":"-"},"content":" const expectedLog \u003d headerLog;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":51,"author":{"gitId":"-"},"content":" });"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" it(\u0027should successfully reinitialize logging session\u0027, () \u003d\u003e {"},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.reset();"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":58,"author":{"gitId":"-"},"content":" const expectedLog \u003d `${headerLog}${sessionSeparator}${headerLog}`;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":60,"author":{"gitId":"-"},"content":" });"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" it(\u0027should successfully reinitialize logging session when limit reached\u0027, () \u003d\u003e {"},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" Array(logger.LOG_COUNT_LIMIT)"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .fill(0)"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .forEach(() \u003d\u003e {"},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.reset();"},{"lineNumber":68,"author":{"gitId":"-"},"content":" });"},{"lineNumber":69,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":71,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const expectedLog \u003d Array(logger.LOG_COUNT_LIMIT)"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .fill(\u0027\u0027)"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .map((_) \u003d\u003e headerLog)"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .join(sessionSeparator);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":76,"author":{"gitId":"-"},"content":" });"},{"lineNumber":77,"author":{"gitId":"-"},"content":" });"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" describe(\u0027.reset()\u0027, () \u003d\u003e {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" it(\u0027should do nothing if no session is ongoing\u0027, () \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.reset();"},{"lineNumber":82,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":83,"author":{"gitId":"-"},"content":" expect(actualLog).toBeNull();"},{"lineNumber":84,"author":{"gitId":"-"},"content":" });"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" it(\u0027should not tamper with existing log histories\u0027, () \u003d\u003e {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" let expectedLog \u003d headerLog;"},{"lineNumber":88,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" for (let i \u003d 0; i \u003c logger.LOG_COUNT_LIMIT + 1; i +\u003d 1) {"},{"lineNumber":89,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":90,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.reset();"},{"lineNumber":91,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":93,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (i \u003c logger.LOG_COUNT_LIMIT - 1) {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" expectedLog +\u003d `${sessionSeparator}${headerLog}`;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":" });"},{"lineNumber":98,"author":{"gitId":"-"},"content":" });"},{"lineNumber":99,"author":{"gitId":"-"},"content":""},{"lineNumber":100,"author":{"gitId":"-"},"content":" describe(\u0027adding logs\u0027, () \u003d\u003e {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" it(\u0027should successfully add info logs\u0027, () \u003d\u003e {"},{"lineNumber":102,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":103,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const initialLog \u003d logger.getCachedLog();"},{"lineNumber":104,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.info(infoLogMessage);"},{"lineNumber":105,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":106,"author":{"gitId":"-"},"content":" const expectedLog \u003d `${initialLog}\\n${infoLogMessage}`;"},{"lineNumber":107,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" });"},{"lineNumber":109,"author":{"gitId":"-"},"content":" });"},{"lineNumber":110,"author":{"gitId":"-"},"content":""},{"lineNumber":111,"author":{"gitId":"-"},"content":" describe(\u0027updating and trimming logs from sessions\u0027, () \u003d\u003e {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" it(\u0027should trim oldest log if number of sessions exceed session limit\u0027, () \u003d\u003e {"},{"lineNumber":113,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" Array(logger.LOG_COUNT_LIMIT + 1)"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .fill(0)"},{"lineNumber":115,"author":{"gitId":"-"},"content":" .forEach(() \u003d\u003e {"},{"lineNumber":116,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":117,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.info(infoLogMessage);"},{"lineNumber":118,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.reset();"},{"lineNumber":119,"author":{"gitId":"-"},"content":" });"},{"lineNumber":120,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger.startSession();"},{"lineNumber":121,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":122,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const expectedLog \u003d Array(logger.LOG_COUNT_LIMIT)"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .fill(\u0027\u0027)"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .map((_) \u003d\u003e headerLog)"},{"lineNumber":125,"author":{"gitId":"-"},"content":" .join(`\\n${infoLogMessage}${sessionSeparator}`);"},{"lineNumber":126,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":127,"author":{"gitId":"-"},"content":" });"},{"lineNumber":128,"author":{"gitId":"-"},"content":" });"},{"lineNumber":129,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":35,"-":94}},{"path":"tests/services/permissions.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../src/app/core/models/phase.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { UserRole } from \u0027../../src/app/core/models/user.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { PermissionService } from \u0027../../src/app/core/services/permission.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../src/app/core/services/phase.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../src/app/core/services/user.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"const testStudent \u003d {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" loginId: \u0027testStudent\u0027,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" role: UserRole.Student"},{"lineNumber":10,"author":{"gitId":"-"},"content":"};"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"const testTutor \u003d {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" loginId: \u0027testTutor\u0027,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" role: UserRole.Tutor"},{"lineNumber":15,"author":{"gitId":"-"},"content":"};"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"const testAdmin \u003d {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" loginId: \u0027testAdmin\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" role: UserRole.Admin"},{"lineNumber":20,"author":{"gitId":"-"},"content":"};"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"const mockUserService \u003d new UserService(null, null, null);"},{"lineNumber":23,"author":{"gitId":"-"},"content":"const mockPhaseService \u003d new PhaseService(null, null, null);"},{"lineNumber":24,"author":{"gitId":"-"},"content":"const permissionService \u003d new PermissionService(mockUserService, mockPhaseService);"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":"describe(\u0027Test a few permissions for each role in each phase\u0027, () \u003d\u003e {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" it(\u0027Test a few permissions for UserRole.Student\u0027, () \u003d\u003e {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseBugReporting;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" mockUserService.currentUser \u003d testStudent;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueCreatable()).toBe(true);"},{"lineNumber":31,"author":{"gitId":"-"},"content":" expect(permissionService.isTutorResponseEditable()).toBe(false);"},{"lineNumber":32,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseTeamResponse;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueLabelsEditable()).toBe(true);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expect(permissionService.isTeamResponseEditable()).toBe(true);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseTesterResponse;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueEditable()).toBe(true);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueDescriptionEditable()).toBe(false);"},{"lineNumber":38,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseModeration;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueDeletable()).toBe(false);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueTitleEditable()).toBe(false);"},{"lineNumber":41,"author":{"gitId":"-"},"content":" });"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" it(\u0027Test a few permissions for UserRole.Tutor\u0027, () \u003d\u003e {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseBugReporting;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mockUserService.currentUser \u003d testTutor;"},{"lineNumber":46,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueCreatable()).toBe(false);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueTitleEditable()).toBe(false);"},{"lineNumber":48,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseTeamResponse;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueLabelsEditable()).toBe(false);"},{"lineNumber":50,"author":{"gitId":"-"},"content":" expect(permissionService.isTeamResponseEditable()).toBe(false);"},{"lineNumber":51,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseTesterResponse;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueEditable()).toBe(false);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueDescriptionEditable()).toBe(false);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseModeration;"},{"lineNumber":55,"author":{"gitId":"-"},"content":" expect(permissionService.isTutorResponseEditable()).toBe(true);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueDeletable()).toBe(false);"},{"lineNumber":57,"author":{"gitId":"-"},"content":" });"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":" it(\u0027Test a few permissions for UserRole.Admin\u0027, () \u003d\u003e {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseBugReporting;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" mockUserService.currentUser \u003d testAdmin;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueCreatable()).toBe(true);"},{"lineNumber":63,"author":{"gitId":"-"},"content":" expect(permissionService.isTutorResponseEditable()).toBe(false);"},{"lineNumber":64,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseTeamResponse;"},{"lineNumber":65,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueLabelsEditable()).toBe(true);"},{"lineNumber":66,"author":{"gitId":"-"},"content":" expect(permissionService.isTeamResponseEditable()).toBe(true);"},{"lineNumber":67,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseTesterResponse;"},{"lineNumber":68,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueEditable()).toBe(true);"},{"lineNumber":69,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueDescriptionEditable()).toBe(true);"},{"lineNumber":70,"author":{"gitId":"-"},"content":" mockPhaseService.currentPhase \u003d Phase.phaseModeration;"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueDeletable()).toBe(false);"},{"lineNumber":72,"author":{"gitId":"-"},"content":" expect(permissionService.isIssueTitleEditable()).toBe(false);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" });"},{"lineNumber":74,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":73}},{"path":"tests/services/profile.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Profile } from \u0027../../src/app/core/models/profile.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../src/app/core/services/github.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { ProfileService } from \u0027../../src/app/core/services/profile.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"let githubService: GithubService;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"let profileService: ProfileService;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"const EMPTY_PROFILES \u003d [];"},{"lineNumber":9,"author":{"gitId":"-"},"content":"const VALID_PROFILES \u003d ["},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cProfile\u003e{"},{"lineNumber":11,"author":{"gitId":"-"},"content":" profileName: \u0027CATcher\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" repoName: \u0027CATcher-org/public_data\u0027"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }"},{"lineNumber":14,"author":{"gitId":"-"},"content":"];"},{"lineNumber":15,"author":{"gitId":"-"},"content":"const INVALID_PROFILES \u003d ["},{"lineNumber":16,"author":{"gitId":"-"},"content":" {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" profileName: \u0027CATcher\u0027"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }"},{"lineNumber":19,"author":{"gitId":"-"},"content":"];"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"describe(\u0027ProfileService\u0027, () \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" githubService \u003d new GithubService(null, null, null);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" profileService \u003d new ProfileService(githubService);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" });"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" describe(\u0027.fetchExternalProfiles()\u0027, () \u003d\u003e {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" it(\u0027should return an empty array if no profiles are given\u0027, () \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" spyOn(window, \u0027fetch\u0027).and.returnValue(generateProfilesPromise(EMPTY_PROFILES));"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return profileService.fetchExternalProfiles().then((profiles) \u003d\u003e expect(profiles).toEqual(EMPTY_PROFILES));"},{"lineNumber":31,"author":{"gitId":"-"},"content":" });"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" it(\u0027should return the set of profiles if a set of valid profiles is given\u0027, () \u003d\u003e {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" spyOn(window, \u0027fetch\u0027).and.returnValue(generateProfilesPromise(VALID_PROFILES));"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return profileService.fetchExternalProfiles().then((profiles) \u003d\u003e expect(profiles).toEqual(VALID_PROFILES));"},{"lineNumber":36,"author":{"gitId":"-"},"content":" });"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" it(\u0027should throw an error if a set of invalid profiles is given\u0027, () \u003d\u003e {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" spyOn(window, \u0027fetch\u0027).and.returnValue(generateProfilesPromise(INVALID_PROFILES));"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return profileService"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .fetchExternalProfiles()"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .then(() \u003d\u003e fail())"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .catch((error: Error) \u003d\u003e expect(error.message).toEqual(\u0027profiles.json is malformed\u0027));"},{"lineNumber":44,"author":{"gitId":"-"},"content":" });"},{"lineNumber":45,"author":{"gitId":"-"},"content":" });"},{"lineNumber":46,"author":{"gitId":"-"},"content":"});"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":"function generateProfilesPromise(profiles: any[]): Promise\u003cResponse\u003e {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" const mockResponse: Response \u003d { json: () \u003d\u003e Promise.resolve({ profiles: profiles }) } as Response;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return Promise.resolve(mockResponse);"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":50}},{"path":"tests/services/repo-creator.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../src/app/core/models/phase.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" BUG_REPORTING_INVALID_ROLE,"},{"lineNumber":5,"author":{"gitId":"-"},"content":" CURRENT_PHASE_REPO_CLOSED,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" MISSING_REQUIRED_REPO,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" RepoCreatorService"},{"lineNumber":8,"author":{"gitId":"-"},"content":"} from \u0027../../src/app/core/services/repo-creator.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../src/app/core/services/user.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { USER_JUNWEI, USER_Q } from \u0027../constants/data.constants\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"const PHASE_OWNER \u003d \u0027CATcher-org\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"const PHASE_REPO \u003d \u0027bugreporting\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"let repoCreatorService: RepoCreatorService;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"let matDialogRef: any;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"let matDialog: any;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"let githubService: any;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"let userService: UserService;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"describe(\u0027RepoCreatorService\u0027, () \u003d\u003e {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" userService \u003d new UserService(null, null, null);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" githubService \u003d jasmine.createSpyObj(\u0027GithubService\u0027, [\u0027isRepositoryPresent\u0027, \u0027createRepository\u0027]);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" matDialog \u003d jasmine.createSpyObj(\u0027MatDialog\u0027, [\u0027open\u0027]);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" matDialogRef \u003d jasmine.createSpyObj(\u0027MatDialogRef\u003cSessionFixConfirmationComponent\u003e\u0027, [\u0027afterClosed\u0027]);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" repoCreatorService \u003d new RepoCreatorService(githubService, userService, matDialog);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" });"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" describe(\u0027.verifyRepoCreation()\u0027, () \u003d\u003e {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" it(\u0027should not need to check the presence of the repository if no fix was done\u0027, () \u003d\u003e {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" of(null).pipe(repoCreatorService.verifyRepoCreation(PHASE_OWNER, PHASE_REPO)).subscribe();"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" expect(githubService.isRepositoryPresent).not.toHaveBeenCalled();"},{"lineNumber":34,"author":{"gitId":"-"},"content":" });"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" it(\u0027should check the presence of the repository if a fix was done\u0027, () \u003d\u003e {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" githubService.isRepositoryPresent.and.callFake(() \u003d\u003e of(true));"},{"lineNumber":38,"author":{"gitId":"-"},"content":" of(true).pipe(repoCreatorService.verifyRepoCreation(PHASE_OWNER, PHASE_REPO)).subscribe();"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" expect(githubService.isRepositoryPresent).toHaveBeenCalledWith(PHASE_OWNER, PHASE_REPO);"},{"lineNumber":41,"author":{"gitId":"-"},"content":" });"},{"lineNumber":42,"author":{"gitId":"-"},"content":" });"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":" describe(\u0027.requestRepoCreationPermissions()\u0027, () \u003d\u003e {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" it(\u0027should not return any permissions if the repo was already created\u0027, () \u003d\u003e {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" of(true)"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .pipe(repoCreatorService.requestRepoCreationPermissions(Phase.phaseBugReporting, PHASE_REPO))"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .subscribe((repoCreationPermission: boolean | null) \u003d\u003e expect(repoCreationPermission).toBe(null));"},{"lineNumber":49,"author":{"gitId":"-"},"content":" });"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" it(\u0027should not return any permissions if the repo was not created and the current phase is not bugReporting\u0027, () \u003d\u003e {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" of(false)"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .pipe(repoCreatorService.requestRepoCreationPermissions(Phase.phaseModeration, PHASE_REPO))"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .subscribe((repoCreationPermission: boolean | null) \u003d\u003e expect(repoCreationPermission).toBe(null));"},{"lineNumber":55,"author":{"gitId":"-"},"content":" });"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" it(\u0027should return permissions from matDialog if the repo was not created and current phase is bugReporting\u0027, () \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" userService.currentUser \u003d USER_JUNWEI;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" matDialog.open.and.callFake(() \u003d\u003e matDialogRef);"},{"lineNumber":60,"author":{"gitId":"-"},"content":" const permissionFromDialog \u003d false;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" matDialogRef.afterClosed.and.callFake(() \u003d\u003e of(permissionFromDialog));"},{"lineNumber":62,"author":{"gitId":"-"},"content":" of(false)"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .pipe(repoCreatorService.requestRepoCreationPermissions(Phase.phaseBugReporting, PHASE_REPO))"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .subscribe((repoCreationPermission: boolean | null) \u003d\u003e expect(repoCreationPermission).toBe(permissionFromDialog));"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" expect(matDialog.open).toHaveBeenCalledTimes(1);"},{"lineNumber":67,"author":{"gitId":"-"},"content":" expect(matDialogRef.afterClosed).toHaveBeenCalledTimes(1);"},{"lineNumber":68,"author":{"gitId":"-"},"content":" });"},{"lineNumber":69,"author":{"gitId":"-"},"content":" });"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" describe(\u0027verifyRepoCreationPermissions()\u0027, () \u003d\u003e {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" it(\u0027should return the original permissions if repo creation was not needed\u0027, () \u003d\u003e {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" userService.currentUser \u003d USER_JUNWEI;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" of(null)"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .pipe(repoCreatorService.verifyRepoCreationPermissions(Phase.phaseBugReporting))"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .subscribe((repoCreationPermission: boolean | null) \u003d\u003e expect(repoCreationPermission).toBe(null));"},{"lineNumber":77,"author":{"gitId":"-"},"content":" });"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" it(\u0027should return the original permissions if permissions were given\u0027, () \u003d\u003e {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" userService.currentUser \u003d USER_JUNWEI;"},{"lineNumber":81,"author":{"gitId":"-"},"content":" of(true)"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .pipe(repoCreatorService.verifyRepoCreationPermissions(Phase.phaseBugReporting))"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .subscribe((repoCreationPermission: boolean | null) \u003d\u003e expect(repoCreationPermission).toBe(true));"},{"lineNumber":84,"author":{"gitId":"-"},"content":" });"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" it(\u0027should throw an error if no permissions were given\u0027, () \u003d\u003e {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" of(false)"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .pipe(repoCreatorService.verifyRepoCreationPermissions(Phase.phaseBugReporting))"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":90,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":91,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(MISSING_REQUIRED_REPO))"},{"lineNumber":92,"author":{"gitId":"-"},"content":" });"},{"lineNumber":93,"author":{"gitId":"-"},"content":" });"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" it(\u0027should throw an error if the wrong phase were given\u0027, () \u003d\u003e {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" of(true)"},{"lineNumber":97,"author":{"gitId":"-"},"content":" .pipe(repoCreatorService.verifyRepoCreationPermissions(Phase.phaseModeration))"},{"lineNumber":98,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":99,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":100,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(CURRENT_PHASE_REPO_CLOSED))"},{"lineNumber":101,"author":{"gitId":"-"},"content":" });"},{"lineNumber":102,"author":{"gitId":"-"},"content":" });"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":" it(\u0027should throw an error if permissions, correct phase, but wrong user role were given\u0027, () \u003d\u003e {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" userService.currentUser \u003d USER_Q;"},{"lineNumber":106,"author":{"gitId":"-"},"content":" of(true)"},{"lineNumber":107,"author":{"gitId":"-"},"content":" .pipe(repoCreatorService.verifyRepoCreationPermissions(Phase.phaseBugReporting))"},{"lineNumber":108,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":109,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":110,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(BUG_REPORTING_INVALID_ROLE))"},{"lineNumber":111,"author":{"gitId":"-"},"content":" });"},{"lineNumber":112,"author":{"gitId":"-"},"content":" });"},{"lineNumber":113,"author":{"gitId":"-"},"content":" });"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"-"},"content":" describe(\u0027.attemptRepoCreation()\u0027, () \u003d\u003e {"},{"lineNumber":116,"author":{"gitId":"-"},"content":" it(\u0027should not create the repository if repo creation is not needed\u0027, () \u003d\u003e {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" of(null).pipe(repoCreatorService.attemptRepoCreation(PHASE_REPO)).subscribe();"},{"lineNumber":118,"author":{"gitId":"-"},"content":""},{"lineNumber":119,"author":{"gitId":"-"},"content":" expect(githubService.createRepository).not.toHaveBeenCalled();"},{"lineNumber":120,"author":{"gitId":"-"},"content":" });"},{"lineNumber":121,"author":{"gitId":"-"},"content":""},{"lineNumber":122,"author":{"gitId":"-"},"content":" it(\u0027should create the repository if permissions, correct phase and correct user role were given\u0027, () \u003d\u003e {"},{"lineNumber":123,"author":{"gitId":"-"},"content":" userService.currentUser \u003d USER_JUNWEI;"},{"lineNumber":124,"author":{"gitId":"-"},"content":" githubService.createRepository.and.callFake(() \u003d\u003e of(true));"},{"lineNumber":125,"author":{"gitId":"-"},"content":" of(true).pipe(repoCreatorService.attemptRepoCreation(PHASE_REPO)).subscribe();"},{"lineNumber":126,"author":{"gitId":"-"},"content":""},{"lineNumber":127,"author":{"gitId":"-"},"content":" expect(githubService.createRepository).toHaveBeenCalledWith(PHASE_REPO);"},{"lineNumber":128,"author":{"gitId":"-"},"content":" });"},{"lineNumber":129,"author":{"gitId":"-"},"content":" });"},{"lineNumber":130,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":129}},{"path":"tests/services/user.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { User } from \u0027../../src/app/core/models/user.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../src/app/core/services/user.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { jsonData, USER_JUNWEI, USER_Q, USER_SHUMING, USER_WITH_TWO_ROLES } from \u0027../constants/data.constants\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"let dataService: any;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"describe(\u0027UserService\u0027, () \u003d\u003e {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" describe(\u0027.createUserModel(loginId)\u0027, () \u003d\u003e {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" beforeAll(() \u003d\u003e {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" dataService \u003d jasmine.createSpyObj(\u0027DataService\u0027, [\u0027getDataFile\u0027]);"},{"lineNumber":12,"author":{"gitId":"-"},"content":" dataService.getDataFile.and.returnValue(of(jsonData));"},{"lineNumber":13,"author":{"gitId":"-"},"content":" });"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":" it(\u0027creates a Student user correctly\u0027, async () \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" await createAndVerifyUser(USER_JUNWEI.loginId, USER_JUNWEI);"},{"lineNumber":17,"author":{"gitId":"-"},"content":" });"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" it(\u0027creates a Tutor user correctly when loginId is very short\u0027, async () \u003d\u003e {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" await createAndVerifyUser(USER_Q.loginId, USER_Q);"},{"lineNumber":21,"author":{"gitId":"-"},"content":" });"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" it(\u0027creates an Admin user correctly\u0027, async () \u003d\u003e {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" await createAndVerifyUser(USER_SHUMING.loginId, USER_SHUMING);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" });"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" it(\u0027assigns highest possible role to a user who has multiple roles in data.csv\u0027, async () \u003d\u003e {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" await createAndVerifyUser(USER_WITH_TWO_ROLES.loginId, USER_WITH_TWO_ROLES);"},{"lineNumber":29,"author":{"gitId":"-"},"content":" });"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" it(\u0027should authorize User despite loginId being of different casing\u0027, () \u003d\u003e {"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const userService \u003d new UserService(null, dataService, null);"},{"lineNumber":33,"author":{"gitId":"-"},"content":" userService.createUserModel(USER_JUNWEI.loginId).subscribe((user) \u003d\u003e {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expect(user).toBeDefined();"},{"lineNumber":35,"author":{"gitId":"-"},"content":" });"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" userService.createUserModel(\u0027JUNWEi96\u0027).subscribe((user) \u003d\u003e {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expect(user).toBeDefined();"},{"lineNumber":39,"author":{"gitId":"-"},"content":" });"},{"lineNumber":40,"author":{"gitId":"-"},"content":" });"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" it(\u0027throws an error if the user is unauthorized\u0027, (done) \u003d\u003e {"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const userService \u003d new UserService(null, dataService, null);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" userService.createUserModel(\u0027RandomUser\u0027).subscribe("},{"lineNumber":45,"author":{"gitId":"-"},"content":" (user) \u003d\u003e {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" fail(\u0027This test case should have failed.\u0027);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" done();"},{"lineNumber":48,"author":{"gitId":"-"},"content":" },"},{"lineNumber":49,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" expect(error).toEqual(new Error(\u0027Unauthorized user.\u0027));"},{"lineNumber":51,"author":{"gitId":"-"},"content":" done();"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":" );"},{"lineNumber":54,"author":{"gitId":"-"},"content":" });"},{"lineNumber":55,"author":{"gitId":"-"},"content":" });"},{"lineNumber":56,"author":{"gitId":"-"},"content":"});"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":"async function createAndVerifyUser(loginId: string, expectedUser: User) {"},{"lineNumber":59,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const userService \u003d new UserService(null, dataService, null);"},{"lineNumber":60,"author":{"gitId":"-"},"content":" const actualUser \u003d await userService.createUserModel(loginId).toPromise();"},{"lineNumber":61,"author":{"gitId":"-"},"content":" expect(actualUser).toEqual(expectedUser);"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":3,"-":59}}] diff --git a/CATcher-org_WATcher_main/authorship.json b/CATcher-org_WATcher_main/authorship.json index 762489f..b2b234a 100644 --- a/CATcher-org_WATcher_main/authorship.json +++ b/CATcher-org_WATcher_main/authorship.json @@ -1 +1 @@ -[{"path":"src/app/activity-dashboard/event-tables/GithubEventDataTable.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { DataSource } from \u0027@angular/cdk/table\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":3,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import * as moment from \u0027moment\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { BehaviorSubject, merge, Observable, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { flatMap, map } from \u0027rxjs/operators\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubEvent } from \u0027../../core/models/github/github-event.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { EventWeek } from \u0027../event-week.model\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { paginateData } from \u0027./event-paginator\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Adapted from IssuesDataTable for Events."},{"lineNumber":16,"author":{"gitId":"-"},"content":" */"},{"lineNumber":17,"author":{"gitId":"-"},"content":"export class GithubEventDataTable extends DataSource\u003cEventWeek\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private startDate \u003d new BehaviorSubject(\u0027\u0027);"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private endDate \u003d new BehaviorSubject(\u0027\u0027);"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private eventsSubject \u003d new BehaviorSubject\u003cEventWeek[]\u003e([]);"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private eventSubscription: Subscription;"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" public isLoading$ \u003d this.githubEventService.isLoading.asObservable();"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":26,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private logger: LoggingService,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private sort: MatSort,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private paginator: MatPaginator,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private actor?: GithubUser,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private defaultFilter?: (event: GithubEvent) \u003d\u003e boolean"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" super();"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" connect(): Observable\u003cEventWeek[]\u003e {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return this.eventsSubject.asObservable();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" disconnect() {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.startDate.complete();"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.endDate.complete();"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.eventsSubject.complete();"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.eventSubscription.unsubscribe();"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" /** Group GithubEvents[] week by week. Needs refactoring. */"},{"lineNumber":48,"author":{"gitId":"-"},"content":" groupByWeeks(githubEvents: GithubEvent[]): EventWeek[] {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" const endDate \u003d this.startDate.getValue() \u003d\u003d\u003d \u0027\u0027 ? moment() : moment(this.endDate.getValue());"},{"lineNumber":50,"author":{"gitId":"-"},"content":" const startDate \u003d"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.startDate.getValue() \u003d\u003d\u003d \u0027\u0027 ? endDate.clone().subtract(1, \u0027month\u0027).startOf(\u0027day\u0027) : moment(this.startDate.getValue());"},{"lineNumber":52,"author":{"gitId":"-"},"content":" const loopDate \u003d moment(startDate).day(\u0027Sunday\u0027);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" const eventWeeks \u003d [];"},{"lineNumber":54,"author":{"gitId":"-"},"content":" let eventsInAWeek \u003d [];"},{"lineNumber":55,"author":{"gitId":"-"},"content":" let weekNum \u003d 1;"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" githubEvents.forEach((githubEvent) \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" weekNum++;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" const eventDate \u003d moment(githubEvent.created_at);"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (loopDate.isAfter(eventDate)) {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // event in earlier week"},{"lineNumber":62,"author":{"gitId":"-"},"content":" } else if (loopDate.clone().add(7, \u0027days\u0027).isAfter(eventDate) \u0026\u0026 loopDate.isBefore(eventDate)) {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // event in this week"},{"lineNumber":64,"author":{"gitId":"-"},"content":" eventsInAWeek.push(githubEvent);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // event in later week"},{"lineNumber":67,"author":{"gitId":"-"},"content":" eventWeeks.push(EventWeek.of(loopDate.format(\u0027ll\u0027), eventsInAWeek)); // push previous week"},{"lineNumber":68,"author":{"gitId":"-"},"content":" eventsInAWeek \u003d [];"},{"lineNumber":69,"author":{"gitId":"-"},"content":" loopDate.add(7, \u0027days\u0027);"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Empty weeks if any"},{"lineNumber":72,"author":{"gitId":"-"},"content":" while (loopDate.clone().add(7, \u0027days\u0027).isBefore(eventDate) \u0026\u0026 loopDate.clone().add(7, \u0027days\u0027).isBefore(endDate)) {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" eventWeeks.push(EventWeek.of(loopDate.format(\u0027ll\u0027), []));"},{"lineNumber":74,"author":{"gitId":"-"},"content":" loopDate.add(7, \u0027days\u0027);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":" console.assert(loopDate.clone().add(7, \u0027days\u0027).isAfter(eventDate) \u0026\u0026 loopDate.isBefore(eventDate));"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (eventDate.isBefore(endDate)) {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" eventsInAWeek.push(githubEvent);"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }"},{"lineNumber":83,"author":{"gitId":"-"},"content":" });"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" eventWeeks.push(EventWeek.of(loopDate.format(\u0027ll\u0027), eventsInAWeek)); // push final week"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" return eventWeeks;"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" loadEvents() {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // If no pagination and sorting"},{"lineNumber":92,"author":{"gitId":"-"},"content":" let sortChange;"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (this.sort !\u003d\u003d undefined) {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" sortChange \u003d this.sort.sortChange;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" let page;"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (this.paginator !\u003d\u003d undefined) {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" page \u003d this.paginator.page;"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" const displayDataChanges \u003d [page, sortChange, this.startDate, this.endDate].filter((x) \u003d\u003e x !\u003d\u003d undefined);"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.githubEventService.pollEvents();"},{"lineNumber":105,"author":{"gitId":"cheehongw"},"content":" this.githubEventService.events$.subscribe((x) \u003d\u003e this.logger.debug(\u0027GithubEventDataTable: \u0027, x));"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.eventSubscription \u003d this.githubEventService.events$"},{"lineNumber":107,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":108,"author":{"gitId":"-"},"content":" flatMap(() \u003d\u003e {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // merge creates an observable from values that changes display"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return merge(...displayDataChanges).pipe("},{"lineNumber":111,"author":{"gitId":"-"},"content":" // maps each change in display value to new event ordering or filtering"},{"lineNumber":112,"author":{"gitId":"-"},"content":" map(() \u003d\u003e {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" let data \u003d \u003cGithubEvent[]\u003eObject.values(this.githubEventService.events$.getValue()).reverse();"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (this.defaultFilter) {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" data \u003d data.filter(this.defaultFilter);"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // Filter by actor of event"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (this.actor) {"},{"lineNumber":119,"author":{"gitId":"-"},"content":" data \u003d data.filter((githubEvent) \u003d\u003e {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!githubEvent.actor) {"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":122,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return githubEvent.actor.login \u003d\u003d\u003d this.actor.login;"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }"},{"lineNumber":125,"author":{"gitId":"-"},"content":" });"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":" let weekData \u003d this.groupByWeeks(data);"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (this.paginator !\u003d\u003d undefined) {"},{"lineNumber":131,"author":{"gitId":"-"},"content":" weekData \u003d paginateData(this.paginator, weekData);"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return weekData;"},{"lineNumber":134,"author":{"gitId":"-"},"content":" })"},{"lineNumber":135,"author":{"gitId":"-"},"content":" );"},{"lineNumber":136,"author":{"gitId":"-"},"content":" })"},{"lineNumber":137,"author":{"gitId":"-"},"content":" )"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .subscribe((data) \u003d\u003e {"},{"lineNumber":139,"author":{"gitId":"-"},"content":" this.eventsSubject.next(data);"},{"lineNumber":140,"author":{"gitId":"-"},"content":" });"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }"},{"lineNumber":142,"author":{"gitId":"-"},"content":""},{"lineNumber":143,"author":{"gitId":"-"},"content":" /*"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Start and end date getters and setters."},{"lineNumber":145,"author":{"gitId":"-"},"content":" */"},{"lineNumber":146,"author":{"gitId":"-"},"content":" get start(): string {"},{"lineNumber":147,"author":{"gitId":"-"},"content":" return this.startDate.value;"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }"},{"lineNumber":149,"author":{"gitId":"-"},"content":""},{"lineNumber":150,"author":{"gitId":"-"},"content":" set start(date: string) {"},{"lineNumber":151,"author":{"gitId":"-"},"content":" this.startDate.next(date);"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }"},{"lineNumber":153,"author":{"gitId":"-"},"content":""},{"lineNumber":154,"author":{"gitId":"-"},"content":" get end(): string {"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return this.endDate.value;"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }"},{"lineNumber":157,"author":{"gitId":"-"},"content":""},{"lineNumber":158,"author":{"gitId":"-"},"content":" set end(date: string) {"},{"lineNumber":159,"author":{"gitId":"-"},"content":" this.endDate.next(date);"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }"},{"lineNumber":161,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":2,"-":158,"cheehongw":1}},{"path":"src/app/activity-dashboard/event-tables/event-paginator.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { EventWeek } from \u0027../event-week.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"export function paginateData(paginator: MatPaginator, data: EventWeek[]): EventWeek[] {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" paginator.length \u003d data.length;"},{"lineNumber":6,"author":{"gitId":"-"},"content":" let result \u003d getDataForPage(paginator.pageIndex, paginator.pageSize, data);"},{"lineNumber":7,"author":{"gitId":"-"},"content":" if (result.length \u003d\u003d\u003d 0) {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" paginator.pageIndex -\u003d 1;"},{"lineNumber":9,"author":{"gitId":"-"},"content":" result \u003d getDataForPage(paginator.pageIndex, paginator.pageSize, data);"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }"},{"lineNumber":11,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"function getDataForPage(pageIndex: number, pageSize: number, data: EventWeek[]): EventWeek[] {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" const startIndex \u003d pageIndex * pageSize;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return data.splice(startIndex, pageSize);"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":16}},{"path":"src/app/activity-dashboard/event-tables/event-tables.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { animate, state, style, transition, trigger } from \u0027@angular/animations\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, Input, OnInit, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":4,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { EventWeek } from \u0027../event-week.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { GithubEventDataTable } from \u0027./GithubEventDataTable\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"export enum ACTION_BUTTONS {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" VIEW_IN_WEB,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" COLLAPSE"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":17,"author":{"gitId":"-"},"content":" selector: \u0027app-event-tables\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" templateUrl: \u0027./event-tables.component.html\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./event-tables.component.css\u0027],"},{"lineNumber":20,"author":{"gitId":"-"},"content":" animations: ["},{"lineNumber":21,"author":{"gitId":"-"},"content":" trigger(\u0027detailExpand\u0027, ["},{"lineNumber":22,"author":{"gitId":"-"},"content":" state(\u0027collapsed\u0027, style({ height: \u00270px\u0027, minHeight: \u00270\u0027 })),"},{"lineNumber":23,"author":{"gitId":"-"},"content":" state(\u0027expanded\u0027, style({ height: \u0027*\u0027 })),"},{"lineNumber":24,"author":{"gitId":"-"},"content":" transition(\u0027expanded \u003c\u003d\u003e collapsed\u0027, animate(\u0027225ms cubic-bezier(0.4, 0.0, 0.2, 1)\u0027))"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ])"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":27,"author":{"gitId":"-"},"content":"})"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Angular Table Expandable Rows"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * ref: https://material.angular.io/components/table/examples#table-expandable-rows"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */"},{"lineNumber":33,"author":{"gitId":"-"},"content":"export class EventTablesComponent implements OnInit, AfterViewInit {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Input() columnsToDisplay: string[];"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Input() expandedColumnsToDisplay: string[];"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Input() actions: ACTION_BUTTONS[];"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Input() actor?: GithubUser \u003d undefined;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Input() filters?: any \u003d undefined;"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" @ViewChild(MatSort, { static: true }) sort: MatSort;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" githubEvents: GithubEventDataTable;"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" public readonly action_buttons \u003d ACTION_BUTTONS;"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" /** The expanded row */"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expandedElement: EventWeek | null;"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"cheehongw"},"content":" constructor(public githubEventService: GithubEventService, private logger: LoggingService) {}"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" this.githubEvents \u003d new GithubEventDataTable(this.githubEventService, this.logger, this.sort, this.paginator, this.actor, this.filters);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.githubEvents.loadEvents();"},{"lineNumber":59,"author":{"gitId":"-"},"content":" });"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" reload() {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.githubEvents.loadEvents();"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Formats the title text to account for those that contain long words."},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param title - Title of Event that is to be displayed in the Table Row."},{"lineNumber":69,"author":{"gitId":"-"},"content":" */"},{"lineNumber":70,"author":{"gitId":"-"},"content":" fitTitleText(title: string): string {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Arbitrary Length of Characters beyond which an overflow occurs."},{"lineNumber":72,"author":{"gitId":"-"},"content":" const MAX_WORD_LENGTH \u003d 43;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" const SPLITTER_TEXT \u003d \u0027 \u0027;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" const ELLIPSES \u003d \u0027...\u0027;"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" return title"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .split(SPLITTER_TEXT)"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .map((word) \u003d\u003e {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (word.length \u003e MAX_WORD_LENGTH) {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return word.substring(0, MAX_WORD_LENGTH - 5).concat(ELLIPSES);"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return word;"},{"lineNumber":83,"author":{"gitId":"-"},"content":" })"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .join(SPLITTER_TEXT);"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" /** Not implemented yet. */"},{"lineNumber":88,"author":{"gitId":"-"},"content":" viewEventInBrowser(id: number, event: Event) {"},{"lineNumber":89,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`EventTablesComponent: Opening Event ${id} on Github`);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // window.open(\u0027https://github.com/\u0027, \u0027_blank\u0027);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" /** Show individual GithubEvents of EventWeek. */"},{"lineNumber":94,"author":{"gitId":"-"},"content":" showExpandedDetails(element: EventWeek) {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (element.events.length \u003e 0) {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.expandedElement \u003d this.expandedElement \u003d\u003d\u003d element ? null : element;"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":""},{"lineNumber":100,"author":{"gitId":"-"},"content":" /** Returns color string of cell. Shade darkens with magnitude of number. */"},{"lineNumber":101,"author":{"gitId":"-"},"content":" colorCell(count: number) {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (count \u003d\u003d\u003d 0) {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return \u0027white\u0027;"},{"lineNumber":104,"author":{"gitId":"-"},"content":" } else if (count \u003e 0 \u0026\u0026 count \u003c\u003d 5) {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return \u0027pale-green\u0027;"},{"lineNumber":106,"author":{"gitId":"-"},"content":" } else if (count \u003e 6) {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return \u0027green\u0027;"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":2,"Eclipse-Dominator":1,"-":105,"cheehongw":2}},{"path":"src/app/app.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../environments/environment\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027./core/services/error-handling.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./core/services/logging.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":7,"author":{"gitId":"-"},"content":" selector: \u0027app-root\u0027,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" templateUrl: \u0027./app.component.html\u0027,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./app.component.css\u0027]"},{"lineNumber":10,"author":{"gitId":"-"},"content":"})"},{"lineNumber":11,"author":{"gitId":"-"},"content":"export class AppComponent implements AfterViewInit {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" NOT_CONNECTED_ERROR: Error \u003d new Error(\u0027You are not connected to the internet.\u0027);"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor(logger: LoggingService, public errorHandlingService: ErrorHandlingService) {"},{"lineNumber":15,"author":{"gitId":"cheehongw"},"content":" logger.info(\u0027AppComponent: AppConfig\u0027, AppConfig);"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"cheehongw"},"content":" logger.info(\u0027AppComponent: Mode web\u0027);"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" ngAfterViewInit() {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" this.addListenerForNetworkOffline();"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * This listener checks if WATcher has a connection to a network, and will show an error snackbar if it does not."},{"lineNumber":26,"author":{"gitId":"-"},"content":" */"},{"lineNumber":27,"author":{"gitId":"-"},"content":" addListenerForNetworkOffline() {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" window.addEventListener("},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u0027offline\u0027,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" (event) \u003d\u003e {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(this.NOT_CONNECTED_ERROR);"},{"lineNumber":32,"author":{"gitId":"-"},"content":" },"},{"lineNumber":33,"author":{"gitId":"-"},"content":" false"},{"lineNumber":34,"author":{"gitId":"-"},"content":" );"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":33,"cheehongw":2}},{"path":"src/app/app.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpClientModule } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ErrorHandler, NgModule, NgZone } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { BrowserModule, Title } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { BrowserAnimationsModule } from \u0027@angular/platform-browser/animations\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Apollo, ApolloModule } from \u0027apollo-angular\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { HttpLink, HttpLinkModule } from \u0027apollo-angular-link-http\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { InMemoryCache, IntrospectionFragmentMatcher } from \u0027apollo-cache-inmemory\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ApolloLink } from \u0027apollo-link\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { setContext } from \u0027apollo-link-context\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import \u0027reflect-metadata\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import graphqlTypes from \u0027../../graphql/graphql-types\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import \u0027../polyfills\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { ActivityDashboardModule } from \u0027./activity-dashboard/activity-dashboard.module\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { AppRoutingModule } from \u0027./app-routing.module\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { AppComponent } from \u0027./app.component\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { AuthModule } from \u0027./auth/auth.module\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { UserConfirmationComponent } from \u0027./core/guards/user-confirmation/user-confirmation.component\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027./core/services/auth.service\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027./core/services/error-handling.service\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import { AuthServiceFactory } from \u0027./core/services/factories/factory.auth.service\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import { GithubServiceFactory } from \u0027./core/services/factories/factory.github.service\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import { IssueServiceFactory } from \u0027./core/services/factories/factory.issue.service\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./core/services/github.service\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027./core/services/githubevent.service\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027./core/services/issue.service\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./core/services/logging.service\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027./core/services/phase.service\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import { SessionFixConfirmationComponent } from \u0027./core/services/session-fix-confirmation/session-fix-confirmation.component\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./core/services/user.service\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import { IssuesViewerModule } from \u0027./issues-viewer/issues-viewer.module\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import { LabelDefinitionPopupComponent } from \u0027./shared/label-definition-popup/label-definition-popup.component\u0027;"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import { HeaderComponent } from \u0027./shared/layout\u0027;"},{"lineNumber":34,"author":{"gitId":"cheehongw"},"content":"import { RepoChangeFormComponent } from \u0027./shared/repo-change-form/repo-change-form.component\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027./shared/shared.module\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" declarations: ["},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" AppComponent,"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" HeaderComponent,"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" UserConfirmationComponent,"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" LabelDefinitionPopupComponent,"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" RepoChangeFormComponent,"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":" SessionFixConfirmationComponent"},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" ],"},{"lineNumber":46,"author":{"gitId":"-"},"content":" imports: ["},{"lineNumber":47,"author":{"gitId":"-"},"content":" BrowserModule,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" BrowserAnimationsModule,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AuthModule,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" IssuesViewerModule,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" ActivityDashboardModule,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" SharedModule,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" HttpClientModule,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppRoutingModule,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" ApolloModule,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" HttpLinkModule"},{"lineNumber":57,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":58,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":59,"author":{"gitId":"-"},"content":" {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" provide: GithubService,"},{"lineNumber":61,"author":{"gitId":"-"},"content":" useFactory: GithubServiceFactory,"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" deps: [ErrorHandlingService, Apollo, LoggingService]"},{"lineNumber":63,"author":{"gitId":"-"},"content":" },"},{"lineNumber":64,"author":{"gitId":"-"},"content":" {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" provide: AuthService,"},{"lineNumber":66,"author":{"gitId":"-"},"content":" useFactory: AuthServiceFactory,"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" deps: [Router, NgZone, GithubService, UserService, IssueService, PhaseService, GithubEventService, Title, LoggingService]"},{"lineNumber":68,"author":{"gitId":"-"},"content":" },"},{"lineNumber":69,"author":{"gitId":"-"},"content":" {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" provide: IssueService,"},{"lineNumber":71,"author":{"gitId":"-"},"content":" useFactory: IssueServiceFactory,"},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" deps: [GithubService, UserService, PhaseService]"},{"lineNumber":73,"author":{"gitId":"-"},"content":" },"},{"lineNumber":74,"author":{"gitId":"-"},"content":" {"},{"lineNumber":75,"author":{"gitId":"-"},"content":" provide: ErrorHandler,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" useClass: ErrorHandlingService"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }"},{"lineNumber":78,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":79,"author":{"gitId":"Echomo-Xinyu"},"content":" bootstrap: [AppComponent]"},{"lineNumber":80,"author":{"gitId":"-"},"content":"})"},{"lineNumber":81,"author":{"gitId":"-"},"content":"export class AppModule {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" constructor(private apollo: Apollo, private httpLink: HttpLink, private authService: AuthService, private logger: LoggingService) {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" const URI \u003d \u0027https://api.github.com/graphql\u0027;"},{"lineNumber":84,"author":{"gitId":"-"},"content":" const log \u003d new ApolloLink((operation, forward) \u003d\u003e {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" operation.setContext({ start: performance.now() });"},{"lineNumber":86,"author":{"gitId":"cheehongw"},"content":" this.logger.info(\u0027AppModule: GraphQL request\u0027, operation.getContext());"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return forward(operation).map((result) \u003d\u003e {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" const time \u003d performance.now() - operation.getContext().start;"},{"lineNumber":89,"author":{"gitId":"cheehongw"},"content":" this.logger.info(\u0027AppModule: GraphQL response\u0027, operation.getContext(), `in ${Math.round(time)}ms`);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" const repo \u003d operation.getContext().response.body.data.repository;"},{"lineNumber":91,"author":{"gitId":"-"},"content":" const item \u003d Object.keys(repo)[0];"},{"lineNumber":92,"author":{"gitId":"cheehongw"},"content":" this.logger.debug(\u0027AppModule: GraphQL response body\u0027, item, repo[item].edges.length, repo[item].edges);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":94,"author":{"gitId":"-"},"content":" });"},{"lineNumber":95,"author":{"gitId":"-"},"content":" });"},{"lineNumber":96,"author":{"gitId":"-"},"content":" const basic \u003d setContext(() \u003d\u003e {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return { headers: { Accept: \u0027charset\u003dutf-8\u0027 } };"},{"lineNumber":98,"author":{"gitId":"-"},"content":" });"},{"lineNumber":99,"author":{"gitId":"-"},"content":" const auth \u003d setContext(() \u003d\u003e {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return { headers: { Authorization: `Token ${this.authService.accessToken.getValue()}` } };"},{"lineNumber":101,"author":{"gitId":"-"},"content":" });"},{"lineNumber":102,"author":{"gitId":"-"},"content":" const link \u003d ApolloLink.from([log, basic, auth, this.httpLink.create({ uri: URI })]);"},{"lineNumber":103,"author":{"gitId":"-"},"content":" const fragmentMatcher \u003d new IntrospectionFragmentMatcher({"},{"lineNumber":104,"author":{"gitId":"-"},"content":" introspectionQueryResultData: graphqlTypes"},{"lineNumber":105,"author":{"gitId":"-"},"content":" });"},{"lineNumber":106,"author":{"gitId":"-"},"content":" const cache \u003d new InMemoryCache({ fragmentMatcher });"},{"lineNumber":107,"author":{"gitId":"-"},"content":" this.apollo.create({"},{"lineNumber":108,"author":{"gitId":"-"},"content":" link: link,"},{"lineNumber":109,"author":{"gitId":"-"},"content":" cache: cache"},{"lineNumber":110,"author":{"gitId":"-"},"content":" });"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":8,"Echomo-Xinyu":1,"vigneshsankariyer1234567890":3,"-":96,"cheehongw":4}},{"path":"src/app/auth/auth.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, NgZone, OnDestroy, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ActivatedRoute, Router } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Observable, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { filter, flatMap, map } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../environments/environment\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../core/models/github-user.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { ApplicationService } from \u0027../core/services/application.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { AuthService, AuthState } from \u0027../core/services/auth.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../core/services/error-handling.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../core/services/logging.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../core/services/phase.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../core/services/user.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"const APPLICATION_VERSION_OUTDATED_ERROR \u003d \u0027Please update to the latest version of WATcher.\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":17,"author":{"gitId":"-"},"content":" selector: \u0027app-auth\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" templateUrl: \u0027./auth.component.html\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./auth.component.css\u0027]"},{"lineNumber":20,"author":{"gitId":"-"},"content":"})"},{"lineNumber":21,"author":{"gitId":"-"},"content":"export class AuthComponent implements OnInit, OnDestroy {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" authState: AuthState;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" accessTokenSubscription: Subscription;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" authStateSubscription: Subscription;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" currentUserName: string;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" urlEncodedSessionName: string;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" urlEncodedRepo: string;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" sessionInformation: string;"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":31,"author":{"gitId":"-"},"content":" public appService: ApplicationService,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private authService: AuthService,"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private ngZone: NgZone,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private activatedRoute: ActivatedRoute,"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private logger: LoggingService"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ) {}"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.logger.startSession();"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" const oauthCode \u003d this.activatedRoute.snapshot.queryParamMap.get(\u0027code\u0027);"},{"lineNumber":46,"author":{"gitId":"-"},"content":" const state \u003d this.activatedRoute.snapshot.queryParamMap.get(\u0027state\u0027);"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (this.authService.isAuthenticated()) {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.router.navigate([this.phaseService.currentPhase]);"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.initAccessTokenSubscription();"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.initAuthStateSubscription();"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.createProfileFromUrlQueryParams();"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.getRepoFromUrlQueryParams();"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (oauthCode) {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // runs upon receiving oauthCode from the redirect"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // this.restoreOrgDetailsFromLocalStorage();"},{"lineNumber":60,"author":{"gitId":"cheehongw"},"content":" this.logger.info(\u0027AuthComponent: Obtained authorisation code from Github\u0027);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.fetchAccessToken(oauthCode, state);"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Will fetch the access token from GitHub."},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param oauthCode - The authorisation code obtained from GitHub."},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param state - The state returned from GitHub."},{"lineNumber":69,"author":{"gitId":"-"},"content":" */"},{"lineNumber":70,"author":{"gitId":"-"},"content":" fetchAccessToken(oauthCode: string, state: string) {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!this.authService.isReturnedStateSame(state)) {"},{"lineNumber":72,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`AuthComponent: Received incorrect state ${state}, continue waiting for correct state`);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`AuthComponent: Retrieving access token from Github`);"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" const accessTokenUrl \u003d `${AppConfig.accessTokenUrl}/${oauthCode}/client_id/${AppConfig.clientId}`;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" fetch(accessTokenUrl)"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .then((res) \u003d\u003e res.json())"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .then((data) \u003d\u003e {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (data.error) {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new Error(data.error);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.authService.storeOAuthAccessToken(data.token);"},{"lineNumber":86,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`AuthComponent: Sucessfully obtained access token`);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" })"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .catch((err) \u003d\u003e {"},{"lineNumber":89,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`AuthComponent: Error in data fetched from access token URL: ${err}`);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(err);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" });"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" ngOnDestroy() {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (this.authStateSubscription) {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" this.authStateSubscription.unsubscribe();"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (this.accessTokenSubscription) {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" this.accessTokenSubscription.unsubscribe();"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Checks whether the current version of WATcher is outdated."},{"lineNumber":106,"author":{"gitId":"-"},"content":" */"},{"lineNumber":107,"author":{"gitId":"-"},"content":" checkAppIsOutdated(): Observable\u003cany\u003e {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return this.appService.isApplicationOutdated().pipe("},{"lineNumber":109,"author":{"gitId":"-"},"content":" map((isOutdated: boolean) \u003d\u003e {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (isOutdated) {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new Error(APPLICATION_VERSION_OUTDATED_ERROR);"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }"},{"lineNumber":113,"author":{"gitId":"-"},"content":" })"},{"lineNumber":114,"author":{"gitId":"-"},"content":" );"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":" updateSession(sessionEvent: string) {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" this.sessionInformation \u003d sessionEvent;"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" goToSessionSelect() {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }"},{"lineNumber":124,"author":{"gitId":"-"},"content":""},{"lineNumber":125,"author":{"gitId":"-"},"content":" isUserNotAuthenticated(): boolean {"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.NotAuthenticated;"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }"},{"lineNumber":128,"author":{"gitId":"-"},"content":""},{"lineNumber":129,"author":{"gitId":"-"},"content":" isUserAuthenticating(): boolean {"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.AwaitingAuthentication;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }"},{"lineNumber":132,"author":{"gitId":"-"},"content":""},{"lineNumber":133,"author":{"gitId":"-"},"content":" isAwaitingOAuthUserConfirm(): boolean {"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.ConfirmOAuthUser;"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":" get currentSessionOrg(): string {"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!this.sessionInformation) {"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // Retrieve org details of session information from local storage"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return window.localStorage.getItem(\u0027org\u0027);"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return this.getOrgDetails(this.sessionInformation);"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }"},{"lineNumber":144,"author":{"gitId":"-"},"content":""},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Extracts the Organization Details from the input sessionInformation."},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param sessionInformation - string in the format of \u0027orgName/dataRepo\u0027"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private getOrgDetails(sessionInformation: string) {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return sessionInformation.split(\u0027/\u0027)[0];"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" private initAuthStateSubscription() {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" this.authStateSubscription \u003d this.authService.currentAuthState.subscribe((state) \u003d\u003e {"},{"lineNumber":155,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e {"},{"lineNumber":156,"author":{"gitId":"-"},"content":" this.authState \u003d state;"},{"lineNumber":157,"author":{"gitId":"-"},"content":" });"},{"lineNumber":158,"author":{"gitId":"-"},"content":" });"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }"},{"lineNumber":160,"author":{"gitId":"-"},"content":""},{"lineNumber":161,"author":{"gitId":"-"},"content":" private initAccessTokenSubscription() {"},{"lineNumber":162,"author":{"gitId":"-"},"content":" this.accessTokenSubscription \u003d this.authService.accessToken"},{"lineNumber":163,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":164,"author":{"gitId":"-"},"content":" filter((token: string) \u003d\u003e !!token),"},{"lineNumber":165,"author":{"gitId":"-"},"content":" flatMap(() \u003d\u003e this.userService.getAuthenticatedUser())"},{"lineNumber":166,"author":{"gitId":"-"},"content":" )"},{"lineNumber":167,"author":{"gitId":"-"},"content":" .subscribe((user: GithubUser) \u003d\u003e {"},{"lineNumber":168,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e {"},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.currentUserName \u003d user.login;"},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.ConfirmOAuthUser);"},{"lineNumber":171,"author":{"gitId":"-"},"content":" });"},{"lineNumber":172,"author":{"gitId":"-"},"content":" });"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }"},{"lineNumber":174,"author":{"gitId":"-"},"content":""},{"lineNumber":175,"author":{"gitId":"-"},"content":" private createProfileFromUrlQueryParams() {"},{"lineNumber":176,"author":{"gitId":"-"},"content":" const urlParams \u003d this.activatedRoute.snapshot.queryParamMap;"},{"lineNumber":177,"author":{"gitId":"-"},"content":" if (urlParams.has(\u0027session\u0027)) {"},{"lineNumber":178,"author":{"gitId":"-"},"content":" this.urlEncodedSessionName \u003d urlParams.get(\u0027session\u0027);"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }"},{"lineNumber":181,"author":{"gitId":"-"},"content":""},{"lineNumber":182,"author":{"gitId":"-"},"content":" private getRepoFromUrlQueryParams() {"},{"lineNumber":183,"author":{"gitId":"-"},"content":" const urlParams \u003d this.activatedRoute.snapshot.queryParamMap;"},{"lineNumber":184,"author":{"gitId":"-"},"content":" if (urlParams.has(\u0027repo\u0027)) {"},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.urlEncodedRepo \u003d urlParams.get(\u0027repo\u0027);"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":182,"cheehongw":5}},{"path":"src/app/auth/auth.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { CommonModule } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../shared/shared.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { AuthRoutingModule } from \u0027./auth-routing.module\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { AuthComponent } from \u0027./auth.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ConfirmLoginComponent } from \u0027./confirm-login/confirm-login.component\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { JsonParseErrorDialogComponent } from \u0027./profiles/json-parse-error-dialog/json-parse-error-dialog.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ProfilesComponent } from \u0027./profiles/profiles.component\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { SessionSelectionComponent } from \u0027./session-selection/session-selection.component\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":12,"author":{"gitId":"-"},"content":" imports: [AuthRoutingModule, SharedModule, CommonModule],"},{"lineNumber":13,"author":{"gitId":"Echomo-Xinyu"},"content":" declarations: [AuthComponent, ProfilesComponent, JsonParseErrorDialogComponent, ConfirmLoginComponent, SessionSelectionComponent]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class AuthModule {}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":14}},{"path":"src/app/auth/confirm-login/confirm-login.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cbutton mat-stroked-button class\u003d\"sign-in-button\" color\u003d\"primary\" (click)\u003d\"this.completeLoginProcess()\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"logo\"\u003e \u003cimg class\u003d\"github-logo\" src\u003d\"./assets/images/github-logo.png\" alt\u003d\"github-logo\" /\u003e \u003c/span\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cspan\u003e Continue as {{ this.username }} \u003c/span\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"\u003cdiv class\u003d\"mat-body-1\" style\u003d\"margin-top: 20px\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" To change account, please sign into the desired account from the"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003ca href\u003d\"https://github.com/\" (click)\u003d\"onGithubWebsiteClicked()\"\u003eofficial Github website\u003c/a\u003e."},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":8}},{"path":"src/app/auth/confirm-login/confirm-login.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Input, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Observable, of } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../core/models/phase.model\u0027;"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Repo } from \u0027../../core/models/repo.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { AuthService, AuthState } from \u0027../../core/services/auth.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { GithubService } from \u0027../../core/services/github.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../core/services/user.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":16,"author":{"gitId":"-"},"content":" selector: \u0027app-auth-confirm-login\u0027,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" templateUrl: \u0027./confirm-login.component.html\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./confirm-login.component.css\u0027]"},{"lineNumber":19,"author":{"gitId":"-"},"content":"})"},{"lineNumber":20,"author":{"gitId":"-"},"content":"export class ConfirmLoginComponent implements OnInit {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Input() username: string;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Input() currentSessionOrg: string;"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":25,"author":{"gitId":"-"},"content":" private authService: AuthService,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private logger: LoggingService,"},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private router: Router,"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public githubService: GithubService"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" onGithubWebsiteClicked() {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" window.open(\u0027https://github.com/\u0027, \u0027_blank\u0027);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" window.location.reload();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" logIntoAnotherAccount() {"},{"lineNumber":43,"author":{"gitId":"cheehongw"},"content":" this.logger.info(\u0027ConfirmLoginComponent: Logging into another account\u0027);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.authService.startOAuthProcess();"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Handles the clean up required after authentication and setting up of user data is completed."},{"lineNumber":49,"author":{"gitId":"-"},"content":" */"},{"lineNumber":50,"author":{"gitId":"-"},"content":" handleAuthSuccess() {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.authService.setTitleWithPhaseDetail();"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.router.navigateByUrl(Phase.issuesViewer);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.Authenticated);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Will complete the process of logging in the given user."},{"lineNumber":58,"author":{"gitId":"-"},"content":" */"},{"lineNumber":59,"author":{"gitId":"-"},"content":" completeLoginProcess(): void {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.phaseService.initializeCurrentRepository();"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`ConfirmLoginComponent: Current repo is ${this.phaseService.currentRepo}`);"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.userService"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .createUserModel(this.username)"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .pipe("},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap(() \u003d\u003e {"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const currentRepo \u003d this.phaseService.currentRepo;"},{"lineNumber":68,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (Repo.isInvalidRepoName(currentRepo)) {"},{"lineNumber":69,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return of(false);"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":71,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this.githubService.isRepositoryPresent(currentRepo.owner, currentRepo.name);"},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }),"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((isValidRepository) \u003d\u003e {"},{"lineNumber":74,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (!isValidRepository) {"},{"lineNumber":75,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return new Observable();"},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this.githubEventService.setLatestChangeEvent();"},{"lineNumber":78,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":79,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" )"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":81,"author":{"gitId":"-"},"content":" () \u003d\u003e {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.handleAuthSuccess();"},{"lineNumber":83,"author":{"gitId":"-"},"content":" },"},{"lineNumber":84,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":87,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`ConfirmLoginComponent: Completion of login process failed with an error: ${error}`);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":" );"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.handleAuthSuccess();"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":22,"-":68,"cheehongw":2}},{"path":"src/app/auth/profiles/json-parse-error-dialog/json-parse-error-dialog.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDialogRef } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { ProfilesComponent } from \u0027../profiles.component\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * This Component is responsible for informing the user if there"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * are errors in the profiles.json file that is available to the app."},{"lineNumber":8,"author":{"gitId":"-"},"content":" */"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-json-parse-error-dialog\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./json-parse-error-dialog.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./json-parse-error-dialog.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class JsonParseErrorDialogComponent implements OnInit {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" constructor(public dialogRef: MatDialogRef\u003cProfilesComponent\u003e) {}"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Closes the Dialog"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */"},{"lineNumber":23,"author":{"gitId":"-"},"content":" onClick(): void {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" this.dialogRef.close();"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":25}},{"path":"src/app/auth/profiles/profiles.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { animate, state, style, transition, trigger } from \u0027@angular/animations\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Component, EventEmitter, Input, OnInit, Output } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { isValidProfile, Profile } from \u0027../../core/models/profile.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { MALFORMED_PROFILES_ERROR, ProfileService } from \u0027../../core/services/profile.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { JsonParseErrorDialogComponent } from \u0027./json-parse-error-dialog/json-parse-error-dialog.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":10,"author":{"gitId":"-"},"content":" selector: \u0027app-profiles\u0027,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" templateUrl: \u0027./profiles.component.html\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./profiles.component.css\u0027],"},{"lineNumber":13,"author":{"gitId":"-"},"content":" animations: ["},{"lineNumber":14,"author":{"gitId":"-"},"content":" // animation triggers go here"},{"lineNumber":15,"author":{"gitId":"-"},"content":" trigger(\u0027triggerFileInput\u0027, ["},{"lineNumber":16,"author":{"gitId":"-"},"content":" state(\u0027normal\u0027, style({})),"},{"lineNumber":17,"author":{"gitId":"-"},"content":" state("},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u0027pressed\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" style({"},{"lineNumber":20,"author":{"gitId":"-"},"content":" color: \u0027orange\u0027"},{"lineNumber":21,"author":{"gitId":"-"},"content":" })"},{"lineNumber":22,"author":{"gitId":"-"},"content":" ),"},{"lineNumber":23,"author":{"gitId":"-"},"content":" transition(\u0027normal \u003d\u003e pressed\u0027, [animate(\u00270.25s ease\u0027)]),"},{"lineNumber":24,"author":{"gitId":"-"},"content":" transition(\u0027pressed \u003d\u003e normal\u0027, [animate(\u00270.25s ease\u0027)])"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ])"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":27,"author":{"gitId":"-"},"content":"})"},{"lineNumber":28,"author":{"gitId":"-"},"content":"export class ProfilesComponent implements OnInit {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private readonly ANIMATION_DURATION: number \u003d 250;"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" profiles: Profile[] \u003d []; // List of profiles taken from profiles.json"},{"lineNumber":32,"author":{"gitId":"-"},"content":" blankProfile: Profile \u003d { profileName: \u0027\u0027, repoName: \u0027\u0027 }; // A blank profile to reset values"},{"lineNumber":33,"author":{"gitId":"-"},"content":" animationActivated \u003d false; // Assists color change animations."},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" selectedProfile: Profile \u003d this.blankProfile;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Input() urlEncodedSessionName: string;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Output() selectedProfileEmitter: EventEmitter\u003cProfile\u003e \u003d new EventEmitter\u003cProfile\u003e();"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" profilesData \u003d {"},{"lineNumber":40,"author":{"gitId":"-"},"content":" isDirectoryMessageVisible: false,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" fileName: null,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" fileDirectory: null"},{"lineNumber":43,"author":{"gitId":"-"},"content":" };"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" constructor(public errorDialog: MatDialog, public profileService: ProfileService, public errorHandlingService: ErrorHandlingService) {}"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.initProfiles();"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Activates the button selection animation and opens the file selector."},{"lineNumber":53,"author":{"gitId":"-"},"content":" * @param fileInput - OS default file selector."},{"lineNumber":54,"author":{"gitId":"-"},"content":" */"},{"lineNumber":55,"author":{"gitId":"-"},"content":" fileSelectorInitiation(fileInput: HTMLInputElement): void {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.animationActivated \u003d true;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.animationActivated \u003d false;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" fileInput.click();"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }, this.ANIMATION_DURATION);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Reads the user selected file"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */"},{"lineNumber":66,"author":{"gitId":"-"},"content":" fileSelected(event: Event): void {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" const target \u003d event.target as HTMLInputElement;"},{"lineNumber":68,"author":{"gitId":"-"},"content":" const file \u003d target.files[0];"},{"lineNumber":69,"author":{"gitId":"-"},"content":" const reader \u003d new FileReader();"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" reader.onload \u003d () \u003d\u003e {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!(reader.result instanceof ArrayBuffer)) {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" try {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" const { profiles } \u003d JSON.parse(reader.result);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.profileService.validateProfiles(profiles);"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.profiles \u003d profiles.concat(this.profiles).filter((p) \u003d\u003e !!p);"},{"lineNumber":77,"author":{"gitId":"-"},"content":" target.value \u003d \u0027\u0027;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" } catch (e) {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.openErrorDialog();"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"-"},"content":" };"},{"lineNumber":83,"author":{"gitId":"-"},"content":" reader.readAsText(file);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Processes available Profiles information from the external repository."},{"lineNumber":88,"author":{"gitId":"-"},"content":" */"},{"lineNumber":89,"author":{"gitId":"-"},"content":" initProfiles(): void {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.profileService"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .fetchExternalProfiles()"},{"lineNumber":92,"author":{"gitId":"-"},"content":" .then((externalProfiles) \u003d\u003e {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.profiles \u003d this.profiles.concat(externalProfiles).filter((p) \u003d\u003e !!p);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" })"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .then(() \u003d\u003e this.setUrlEncodedProfile(this.profiles))"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .catch((e) \u003d\u003e {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (e \u003d\u003d\u003d MALFORMED_PROFILES_ERROR) {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.openErrorDialog();"},{"lineNumber":99,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(e);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":" });"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Makes Error dialog visible to the user."},{"lineNumber":107,"author":{"gitId":"-"},"content":" */"},{"lineNumber":108,"author":{"gitId":"-"},"content":" openErrorDialog(): void {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.errorDialog.open(JsonParseErrorDialogComponent);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Sends the selected profile information to listening component."},{"lineNumber":114,"author":{"gitId":"-"},"content":" * @param profile - Profile selected by user."},{"lineNumber":115,"author":{"gitId":"-"},"content":" */"},{"lineNumber":116,"author":{"gitId":"-"},"content":" selectProfile(profile: Profile): void {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (profile \u003d\u003d\u003d this.blankProfile || isValidProfile(profile)) {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" this.selectedProfileEmitter.emit(profile);"},{"lineNumber":119,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" this.openErrorDialog();"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }"},{"lineNumber":123,"author":{"gitId":"-"},"content":" setUrlEncodedProfile(validProfiles: Profile[]) {"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (!this.urlEncodedSessionName) {"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":" const profile \u003d validProfiles.find((profile) \u003d\u003e profile.profileName \u003d\u003d\u003d this.urlEncodedSessionName);"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (profile) {"},{"lineNumber":130,"author":{"gitId":"-"},"content":" this.selectedProfile.profileName \u003d this.urlEncodedSessionName;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" this.selectProfile(profile);"},{"lineNumber":132,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":133,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(new Error(\u0027Invalid URL provided session\u0027));"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":135}},{"path":"src/app/auth/session-selection/session-selection.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cmat-card class\u003d\"login-card\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cmat-card-header style\u003d\"margin-bottom: 20px\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-card-title class\u003d\"login-title\"\u003e Repository URL \u003c/mat-card-title\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003c/mat-card-header\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cform [formGroup]\u003d\"repoForm\" (ngSubmit)\u003d\"setupSession()\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003cmat-card-content\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cmat-form-field class\u003d\"login-field\"\u003e"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cinput matInput placeholder\u003d\"Repository Location (Org/Repo)\" formControlName\u003d\"repo\" required [matAutocomplete]\u003d\"auto\" /\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cmat-autocomplete #auto\u003d\"matAutocomplete\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmat-option *ngFor\u003d\"let suggestion of filteredSuggestions | async\" [value]\u003d\"suggestion\"\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" {{ suggestion }}"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/mat-option\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/mat-autocomplete\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cmat-card-actions\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *ngIf\u003d\"!isSettingUpSession\""},{"lineNumber":20,"author":{"gitId":"-"},"content":" class\u003d\"sign-in-button\""},{"lineNumber":21,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":22,"author":{"gitId":"-"},"content":" [disabled]\u003d\"repoForm.invalid || isSettingUpSession\""},{"lineNumber":23,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":24,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cdiv\u003eSubmit\u003c/div\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"isSettingUpSession\" class\u003d\"spinner-centralize\"\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cmat-spinner [diameter]\u003d\"47\"\u003e\u003c/mat-spinner\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/mat-card-actions\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/mat-card-content\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/form\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c!-- \u003c/mat-tab\u003e --\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c!-- \u003c/mat-tab-group\u003e --\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003c/mat-card\u003e"}],"authorContributionMap":{"Eclipse-Dominator":1,"-":35}},{"path":"src/app/auth/session-selection/session-selection.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, EventEmitter, Input, OnInit, Output } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormBuilder, FormGroup, Validators } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Profile } from \u0027../../core/models/profile.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { AuthService, AuthState } from \u0027../../core/services/auth.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { RepoUrlCacheService } from \u0027../../core/services/repo-url-cache.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-session-selection\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./session-selection.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./session-selection.component.css\u0027, \u0027../auth.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class SessionSelectionComponent implements OnInit {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // isSettingUpSession is used to indicate whether WATcher is in the midst of setting up the session."},{"lineNumber":17,"author":{"gitId":"-"},"content":" isSettingUpSession: boolean;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" profileForm: FormGroup;"},{"lineNumber":19,"author":{"gitId":"-"},"content":" repoForm: FormGroup;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" filteredSuggestions: Observable\u003cstring[]\u003e;"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Input() urlEncodedSessionName: string;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Input() urlEncodedRepo: string;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Output() sessionEmitter: EventEmitter\u003cstring\u003e \u003d new EventEmitter\u003cstring\u003e();"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":28,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private logger: LoggingService,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private authService: AuthService,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private repoUrlCacheService: RepoUrlCacheService,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.isSettingUpSession \u003d false;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.initProfileForm();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.initRepoForm();"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.autofillRepo();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Fills the login form with data from the given Profile."},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @param profile - Profile selected by the user."},{"lineNumber":45,"author":{"gitId":"-"},"content":" */"},{"lineNumber":46,"author":{"gitId":"-"},"content":" onProfileSelect(profile: Profile): void {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.profileForm.get(\u0027session\u0027).setValue(profile.repoName);"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.sessionEmitter.emit(profile.repoName);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" setupSession() {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (this.repoForm.invalid) {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.isSettingUpSession \u003d true;"},{"lineNumber":56,"author":{"gitId":"-"},"content":" const repoInformation: string \u003d this.repoForm.get(\u0027repo\u0027).value;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" const repoOrg: string \u003d this.getOrgDetails(repoInformation);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" const repoName: string \u003d this.getDataRepoDetails(repoInformation);"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Persist repo information in local browser storage"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * To retrieve after authentication redirects back to WATcher"},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" *"},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" * Since localStorage::setItem with an undefined value can result in"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" * the subsequent value being stored as a string being \u0027undefined\u0027, check"},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" * if undefined before storing it. Let\u0027s reset the items before setting them."},{"lineNumber":67,"author":{"gitId":"-"},"content":" */"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.localStorage.removeItem(\u0027org\u0027);"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.localStorage.removeItem(\u0027dataRepo\u0027);"},{"lineNumber":71,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (repoOrg \u0026\u0026 repoName) {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" window.localStorage.setItem(\u0027org\u0027, repoOrg);"},{"lineNumber":74,"author":{"gitId":"-"},"content":" window.localStorage.setItem(\u0027dataRepo\u0027, repoName);"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.repoUrlCacheService.cache(repoInformation);"},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`SessionSelectionComponent: Selected Repository: ${repoInformation}`);"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.authService.startOAuthProcess();"},{"lineNumber":83,"author":{"gitId":"-"},"content":" } catch (error) {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.isSettingUpSession \u003d false;"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Extracts the Organization Details from the input sessionInformation."},{"lineNumber":92,"author":{"gitId":"-"},"content":" * @param sessionInformation - string in the format of \u0027orgName/dataRepo\u0027"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private getOrgDetails(sessionInformation: string) {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return sessionInformation.split(\u0027/\u0027)[0];"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Extracts the Data Repository Details from the input sessionInformation."},{"lineNumber":100,"author":{"gitId":"-"},"content":" * @param sessionInformation - string in the format of \u0027orgName/dataRepo\u0027"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private getDataRepoDetails(sessionInformation: string) {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return sessionInformation.split(\u0027/\u0027)[1];"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" private initProfileForm() {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" this.profileForm \u003d this.formBuilder.group({"},{"lineNumber":108,"author":{"gitId":"-"},"content":" session: [\u0027\u0027, Validators.required]"},{"lineNumber":109,"author":{"gitId":"-"},"content":" });"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":" private initRepoForm() {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.repoForm \u003d this.formBuilder.group({"},{"lineNumber":114,"author":{"gitId":"-"},"content":" repo: [\u0027\u0027, Validators.required]"},{"lineNumber":115,"author":{"gitId":"-"},"content":" });"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":" this.filteredSuggestions \u003d this.repoUrlCacheService.getFilteredSuggestions(this.repoForm.get(\u0027repo\u0027));"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }"},{"lineNumber":119,"author":{"gitId":"-"},"content":""},{"lineNumber":120,"author":{"gitId":"-"},"content":" private autofillRepo() {"},{"lineNumber":121,"author":{"gitId":"-"},"content":" this.repoForm.get(\u0027repo\u0027).setValue(this.urlEncodedRepo);"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":9,"-":113,"cheehongw":1}},{"path":"src/app/core/guards/user-confirmation/user-confirmation.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { CanDeactivateIssueGuard } from \u0027../can-deactivate-issue-guard.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * The UserConfirmationComponent is responsible for rendering the UserDialog"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * to verify if certain changes made to relevant inputs are to be discarded."},{"lineNumber":8,"author":{"gitId":"-"},"content":" */"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-user-confirmation\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./user-confirmation.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./user-confirmation.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class UserConfirmationComponent implements OnInit {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // Injection of a reference to Dialog from the Service that it is to be"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // displayed in."},{"lineNumber":18,"author":{"gitId":"-"},"content":" constructor(public dialogRef: MatDialogRef\u003cCanDeactivateIssueGuard\u003e, @Inject(MAT_DIALOG_DATA) public data) {}"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Closes the dialog."},{"lineNumber":24,"author":{"gitId":"-"},"content":" */"},{"lineNumber":25,"author":{"gitId":"-"},"content":" onNoClick(): void {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.dialogRef.close(false);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":27}},{"path":"src/app/core/models/issue.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import * as moment from \u0027moment\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { GithubComment } from \u0027./github/github-comment.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027./github/github-issue.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027./github/github-label.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { HiddenData } from \u0027./hidden-data.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Milestone } from \u0027./milestone.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"export class Issue {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" /** Basic Fields */"},{"lineNumber":10,"author":{"gitId":"-"},"content":" readonly globalId: string;"},{"lineNumber":11,"author":{"gitId":"-"},"content":" readonly id: number;"},{"lineNumber":12,"author":{"gitId":"-"},"content":" readonly created_at: string;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" readonly githubIssue: GithubIssue;"},{"lineNumber":14,"author":{"gitId":"-"},"content":" githubComments: GithubComment[];"},{"lineNumber":15,"author":{"gitId":"-"},"content":" title: string;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" description: string;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" hiddenDataInDescription: HiddenData;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" updated_at: string;"},{"lineNumber":19,"author":{"gitId":"-"},"content":" closed_at: string;"},{"lineNumber":20,"author":{"gitId":"Echomo-Xinyu"},"content":" milestone: Milestone;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" state: string;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" issueOrPr: string;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" author: string;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" /** Depending on the phase, assignees attribute can be derived from Github\u0027s assignee feature OR from the Github\u0027s issue description */"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assignees?: string[];"},{"lineNumber":27,"author":{"gitId":"-"},"content":" labels?: string[];"},{"lineNumber":28,"author":{"gitId":"-"},"content":" githubLabels?: GithubLabel[];"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Formats the text to create space at the end of the user input to prevent any issues with"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * the markdown interpretation."},{"lineNumber":33,"author":{"gitId":"-"},"content":" *"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Brought over from comment-editor.component.ts"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */"},{"lineNumber":36,"author":{"gitId":"-"},"content":" static formatText(text: string): string {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (text \u003d\u003d\u003d null) {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return null;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (text \u003d\u003d\u003d undefined) {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return undefined;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" const newLinesRegex \u003d /[\\n\\r]/gi;"},{"lineNumber":46,"author":{"gitId":"-"},"content":" const textSplitArray \u003d text.split(newLinesRegex);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (textSplitArray.filter((split) \u003d\u003e split.trim() !\u003d\u003d \u0027\u0027).length \u003e 0) {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return `${text}\\n\\n`;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return text;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Processes and cleans a raw issue description obtained from user input."},{"lineNumber":56,"author":{"gitId":"-"},"content":" */"},{"lineNumber":57,"author":{"gitId":"-"},"content":" static updateDescription(description: string): string {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" const defaultString \u003d \u0027No details provided by bug reporter.\u0027;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return Issue.orDefaultString(Issue.formatText(description), defaultString);"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Given two strings, returns the first if it is not an empty string or a false value such as null/undefined."},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns the second string if the first is an empty string."},{"lineNumber":65,"author":{"gitId":"-"},"content":" */"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private static orDefaultString(stringA: string, def: string): string {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (!stringA) {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return def;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return stringA.length !\u003d\u003d 0 ? stringA : def;"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }"},{"lineNumber":72,"author":{"gitId":"-"},"content":""},{"lineNumber":73,"author":{"gitId":"-"},"content":" protected constructor(githubIssue: GithubIssue) {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /** Basic Fields */"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.globalId \u003d githubIssue.id;"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.id \u003d +githubIssue.number;"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.created_at \u003d moment(githubIssue.created_at).format(\u0027lll\u0027);"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.updated_at \u003d moment(githubIssue.updated_at).format(\u0027lll\u0027);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.closed_at \u003d moment(githubIssue.closed_at).format(\u0027lll\u0027);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.title \u003d githubIssue.title;"},{"lineNumber":81,"author":{"gitId":"-"},"content":" this.hiddenDataInDescription \u003d new HiddenData(githubIssue.body);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.description \u003d Issue.updateDescription(this.hiddenDataInDescription.originalStringWithoutHiddenData);"},{"lineNumber":83,"author":{"gitId":"Echomo-Xinyu"},"content":" // githubIssue without milestone will be set to default milestone"},{"lineNumber":84,"author":{"gitId":"Echomo-Xinyu"},"content":" this.milestone \u003d githubIssue.milestone ? new Milestone(githubIssue.milestone) : Milestone.DefaultMilestone;"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.state \u003d githubIssue.state;"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.issueOrPr \u003d githubIssue.issueOrPr;"},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.author \u003d githubIssue.user.login;"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // this.githubIssue \u003d githubIssue;"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.assignees \u003d githubIssue.assignees.map((assignee) \u003d\u003e assignee.login);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" this.githubLabels \u003d githubIssue.labels;"},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.labels \u003d githubIssue.labels.map((label) \u003d\u003e label.name);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static createPhaseBugReportingIssue(githubIssue: GithubIssue): Issue {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Issue(githubIssue);"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" createGithubIssueDescription(): string {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return `${this.description}\\n${this.hiddenDataInDescription.toString()}`;"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":"export interface Issues {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" [id: number]: Issue;"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":"export const IssuesFilter \u003d {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" issuesViewer: {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Student: \u0027NO_FILTER\u0027,"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Tutor: \u0027NO_FILTER\u0027,"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Admin: \u0027NO_FILTER\u0027"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }"},{"lineNumber":114,"author":{"gitId":"-"},"content":"};"}],"authorContributionMap":{"Echomo-Xinyu":3,"-":111}},{"path":"src/app/core/models/milestone.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":2,"author":{"gitId":"-"},"content":" * Represents a milestone and its attributes fetched from Github."},{"lineNumber":3,"author":{"gitId":"-"},"content":" */"},{"lineNumber":4,"author":{"gitId":"-"},"content":"export class Milestone {"},{"lineNumber":5,"author":{"gitId":"Echomo-Xinyu"},"content":" static DefaultMilestone: Milestone \u003d new Milestone({ number: \u0027untracked\u0027, title: \u0027Without a milestone\u0027, state: null });"},{"lineNumber":6,"author":{"gitId":"-"},"content":" readonly number: string; // equivalent to the id of an issue e.g. milestone #1"},{"lineNumber":7,"author":{"gitId":"-"},"content":" title: string;"},{"lineNumber":8,"author":{"gitId":"-"},"content":" state: string;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":" constructor(milestone: { number: string; title: string; state: string }) {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" this.number \u003d milestone.number;"},{"lineNumber":12,"author":{"gitId":"-"},"content":" this.title \u003d milestone.title;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" this.state \u003d milestone.state;"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":" public equals(milestone: Milestone) {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return this.number \u003d\u003d\u003d milestone.number;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":18}},{"path":"src/app/core/models/repo.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":2,"author":{"gitId":"-"},"content":" * Represents a repository."},{"lineNumber":3,"author":{"gitId":"-"},"content":" * Repository url is owner/name."},{"lineNumber":4,"author":{"gitId":"-"},"content":" */"},{"lineNumber":5,"author":{"gitId":"-"},"content":"export class Repo {"},{"lineNumber":6,"author":{"gitId":"-"},"content":" owner: string;"},{"lineNumber":7,"author":{"gitId":"-"},"content":" name: string;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":" /** Creates a new Repo from owner and name strings. */"},{"lineNumber":10,"author":{"gitId":"-"},"content":" constructor(owner: string, name: string) {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" this.owner \u003d owner;"},{"lineNumber":12,"author":{"gitId":"-"},"content":" this.name \u003d name;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** Creates a new Repo from one repository url. */"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static of(repoUrl: string) {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" const repoUrlSplit \u003d repoUrl.split(\u0027/\u0027);"},{"lineNumber":18,"author":{"gitId":"-"},"content":" if (repoUrlSplit.length !\u003d\u003d 2) {"},{"lineNumber":19,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" throw new Error(\u0027Invalid repository name. Please provide repository name in the format Org/Repository Name.\u0027);"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new Repo(repoUrlSplit[0], repoUrlSplit[1]);"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public static ofEmptyRepo() {"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return EMPTY_REPO;"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":27,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":28,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public static isInvalidRepoName(repo: unknown) {"},{"lineNumber":29,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (repo instanceof Repo) {"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const otherRepo \u003d repo as Repo;"},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return otherRepo.equals(EMPTY_REPO);"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return false;"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" /** String representation of a Repo. */"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public toString(): string {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return this.owner + \u0027/\u0027 + this.name;"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public equals(otherRepo: unknown): boolean {"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (otherRepo instanceof Repo) {"},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return otherRepo.name \u003d\u003d\u003d this.name \u0026\u0026 otherRepo.owner \u003d\u003d\u003d this.owner;"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return false;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":51,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"const EMPTY_REPO \u003d new Repo(\u0027\u0027, \u0027\u0027);"}],"authorContributionMap":{"vigneshsankariyer1234567890":23,"-":28}},{"path":"src/app/core/services/auth.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgZone } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Title } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { BehaviorSubject } from \u0027rxjs\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { generateSessionId } from \u0027../../shared/lib/session\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { uuid } from \u0027../../shared/lib/uuid\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027./githubevent.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027./issue.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027./phase.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./user.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"export enum AuthState {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u0027NotAuthenticated\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u0027AwaitingAuthentication\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u0027ConfirmOAuthUser\u0027,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u0027Authenticated\u0027"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":24,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":25,"author":{"gitId":"-"},"content":"})"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Responsible for initiating the authentication process and querying or"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * updating the application state with regards to authentication."},{"lineNumber":30,"author":{"gitId":"-"},"content":" */"},{"lineNumber":31,"author":{"gitId":"-"},"content":"export class AuthService {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" authStateSource \u003d new BehaviorSubject(AuthState.NotAuthenticated);"},{"lineNumber":33,"author":{"gitId":"-"},"content":" currentAuthState \u003d this.authStateSource.asObservable();"},{"lineNumber":34,"author":{"gitId":"-"},"content":" accessToken \u003d new BehaviorSubject(undefined);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private state: string;"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" ENABLE_POPUP_MESSAGE \u003d \u0027Please enable pop-ups in your browser\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":40,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private ngZone: NgZone,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private titleService: Title,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private logger: LoggingService"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Will store the OAuth token."},{"lineNumber":53,"author":{"gitId":"-"},"content":" */"},{"lineNumber":54,"author":{"gitId":"-"},"content":" storeOAuthAccessToken(token: string) {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.githubService.storeOAuthAccessToken(token);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.accessToken.next(token);"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":" reset(): void {"},{"lineNumber":60,"author":{"gitId":"Eclipse-Dominator"},"content":" this.logger.info(\u0027AuthService: Clearing access token and setting AuthState to NotAuthenticated.\u0027);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.accessToken.next(undefined);"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e this.router.navigate([\u0027\u0027]));"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" logOut(): void {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.githubService.reset();"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.userService.reset();"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.issueService.reset(true);"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.phaseService.reset();"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.githubEventService.reset();"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.logger.reset();"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.setLandingPageTitle();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.issueService.setIssueTeamFilter(\u0027All Teams\u0027);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.reset();"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" setTitleWithPhaseDetail(): void {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" const appSetting \u003d require(\u0027../../../../package.json\u0027);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" const title \u003d `${appSetting.name} ${appSetting.version} - ${this.phaseService.getCurrentRepositoryURL()}`;"},{"lineNumber":81,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`AuthService: Setting Title as ${title}`);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.titleService.setTitle(title);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" setLandingPageTitle(): void {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" const appSetting \u003d require(\u0027../../../../package.json\u0027);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" const title \u003d `${appSetting.name} ${appSetting.version}`;"},{"lineNumber":88,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`AuthService: Setting Title as ${title}`);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" this.titleService.setTitle(title);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":" isAuthenticated(): boolean {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this.authStateSource.getValue() \u003d\u003d\u003d AuthState.Authenticated;"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }"},{"lineNumber":95,"author":{"gitId":"-"},"content":""},{"lineNumber":96,"author":{"gitId":"-"},"content":" changeAuthState(newAuthState: AuthState) {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (newAuthState \u003d\u003d\u003d AuthState.Authenticated) {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" const sessionId \u003d generateSessionId();"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.issueService.setSessionId(sessionId);"},{"lineNumber":100,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`AuthService: Successfully authenticated with session: ${sessionId}`);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.authStateSource.next(newAuthState);"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Generates and assigns an unguessable random \u0027state\u0027 string to pass to Github for protection against cross-site request forgery attacks"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */"},{"lineNumber":108,"author":{"gitId":"-"},"content":" generateStateString() {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.state \u003d uuid();"},{"lineNumber":110,"author":{"gitId":"-"},"content":" sessionStorage.setItem(\u0027state\u0027, this.state);"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }"},{"lineNumber":112,"author":{"gitId":"-"},"content":""},{"lineNumber":113,"author":{"gitId":"-"},"content":" isReturnedStateSame(returnedState: string): boolean {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" const state \u003d sessionStorage.getItem(\u0027state\u0027);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return returnedState \u003d\u003d\u003d state;"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }"},{"lineNumber":117,"author":{"gitId":"-"},"content":""},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Will start the Github OAuth web flow process."},{"lineNumber":120,"author":{"gitId":"-"},"content":" */"},{"lineNumber":121,"author":{"gitId":"-"},"content":" startOAuthProcess() {"},{"lineNumber":122,"author":{"gitId":"cheehongw"},"content":" this.logger.info(\u0027AuthService: Starting authentication\u0027);"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // Available OAuth scopes https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps#available-scopes"},{"lineNumber":124,"author":{"gitId":"-"},"content":" const githubRepoPermission \u003d \u0027public_repo\u0027;"},{"lineNumber":125,"author":{"gitId":"-"},"content":" this.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":126,"author":{"gitId":"-"},"content":""},{"lineNumber":127,"author":{"gitId":"-"},"content":" this.generateStateString();"},{"lineNumber":128,"author":{"gitId":"-"},"content":" this.redirectToOAuthPage("},{"lineNumber":129,"author":{"gitId":"-"},"content":" encodeURI("},{"lineNumber":130,"author":{"gitId":"-"},"content":" `${AppConfig.githubUrl}/login/oauth/authorize?client_id\u003d${AppConfig.clientId}\u0026scope\u003d${githubRepoPermission},read:user\u0026state\u003d${this.state}`"},{"lineNumber":131,"author":{"gitId":"-"},"content":" )"},{"lineNumber":132,"author":{"gitId":"-"},"content":" );"},{"lineNumber":133,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`AuthService: Redirecting for Github authentication`);"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }"},{"lineNumber":135,"author":{"gitId":"-"},"content":""},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Will redirect to GitHub OAuth page"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private redirectToOAuthPage(url: string): void {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (url \u003d\u003d null) {"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }"},{"lineNumber":143,"author":{"gitId":"-"},"content":" window.location.href \u003d url;"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":1,"-":139,"cheehongw":5}},{"path":"src/app/core/services/dialog.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { LabelDefinitionPopupComponent } from \u0027../../shared/label-definition-popup/label-definition-popup.component\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { RepoChangeFormComponent } from \u0027../../shared/repo-change-form/repo-change-form.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { UserConfirmationComponent } from \u0027../guards/user-confirmation/user-confirmation.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":8,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":9,"author":{"gitId":"-"},"content":"})"},{"lineNumber":10,"author":{"gitId":"-"},"content":"export class DialogService {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" constructor(private dialog: MatDialog) {}"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":" openUserConfirmationModal(messages: string[], yesButtonMessage: string, noButtonMessage: string) {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" return this.dialog.open(UserConfirmationComponent, {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" data: {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" messages: messages,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" yesMessage: yesButtonMessage,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" noMessage: noButtonMessage"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }"},{"lineNumber":20,"author":{"gitId":"-"},"content":" });"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" openLabelDefinitionDialog(labelName: String, labelDefinition: String) {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return this.dialog.open(LabelDefinitionPopupComponent, {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" data: {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" header: labelName,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" body: labelDefinition"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }"},{"lineNumber":29,"author":{"gitId":"-"},"content":" });"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }"},{"lineNumber":31,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":32,"author":{"gitId":"cheehongw"},"content":" openChangeRepoDialog(repoName: String) {"},{"lineNumber":33,"author":{"gitId":"cheehongw"},"content":" return this.dialog.open(RepoChangeFormComponent, {"},{"lineNumber":34,"author":{"gitId":"cheehongw"},"content":" data: {"},{"lineNumber":35,"author":{"gitId":"cheehongw"},"content":" repoName: repoName"},{"lineNumber":36,"author":{"gitId":"cheehongw"},"content":" },"},{"lineNumber":37,"author":{"gitId":"cheehongw"},"content":" height: \u0027auto\u0027,"},{"lineNumber":38,"author":{"gitId":"cheehongw"},"content":" width: \u002740%\u0027"},{"lineNumber":39,"author":{"gitId":"cheehongw"},"content":" });"},{"lineNumber":40,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"vigneshsankariyer1234567890":1,"-":29,"cheehongw":10}},{"path":"src/app/core/services/error-handling.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpErrorResponse } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ErrorHandler, Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSnackBar } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { RequestError } from \u0027@octokit/request-error\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { FormErrorComponent } from \u0027../../shared/error-toasters/form-error/form-error.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GeneralMessageErrorComponent } from \u0027../../shared/error-toasters/general-message-error/general-message-error.component\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"export const ERRORCODE_NOT_FOUND \u003d 404;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"const FILTERABLE \u003d [\u0027node_modules\u0027];"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":14,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":15,"author":{"gitId":"-"},"content":"})"},{"lineNumber":16,"author":{"gitId":"-"},"content":"export class ErrorHandlingService implements ErrorHandler {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" constructor(private snackBar: MatSnackBar, private logger: LoggingService) {}"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" handleError(error: HttpErrorResponse | Error | RequestError, actionCallback?: () \u003d\u003e void) {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.logger.error(error);"},{"lineNumber":21,"author":{"gitId":"-"},"content":" if (error instanceof Error) {"},{"lineNumber":22,"author":{"gitId":"cheehongw"},"content":" this.logger.debug(\u0027ErrorHandlingService: \u0027, this.cleanStack(error.stack));"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }"},{"lineNumber":24,"author":{"gitId":"-"},"content":" if (error instanceof HttpErrorResponse) {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.handleHttpError(error, actionCallback);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" } else if (error.constructor.name \u003d\u003d\u003d \u0027RequestError\u0027) {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.handleHttpError(error as RequestError, actionCallback);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.handleGeneralError(error.message || JSON.stringify(error));"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" private cleanStack(stacktrace: string): string {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return stacktrace"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .split(\u0027\\n\u0027)"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .filter((line) \u003d\u003e !FILTERABLE.some((word) \u003d\u003e line.includes(word))) // exclude lines that contain words in FILTERABLE"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .join(\u0027\\n\u0027);"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" // Ref: https://developer.github.com/v3/#client-errors"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private handleHttpError(error: HttpErrorResponse | RequestError, actionCallback?: () \u003d\u003e void): void {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Angular treats 304 Not Modified as an error, we will ignore it."},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (error.status \u003d\u003d\u003d 304) {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!navigator.onLine) {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.handleGeneralError(\u0027No Internet Connection\u0027);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" switch (error.status) {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" case 500: // Internal Server Error."},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(GeneralMessageErrorComponent, { data: error });"},{"lineNumber":55,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":56,"author":{"gitId":"-"},"content":" case 422: // Form errors"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(FormErrorComponent, { data: error });"},{"lineNumber":58,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" case 400: // Bad request"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case 401: // Unauthorized"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case 404: // Not found"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(GeneralMessageErrorComponent, { data: error });"},{"lineNumber":63,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":64,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(GeneralMessageErrorComponent, { data: error });"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":" private handleGeneralError(error: string): void {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(GeneralMessageErrorComponent, { data: { message: error } });"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":71,"cheehongw":1}},{"path":"src/app/core/services/factories/factory.auth.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { NgZone } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Title } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"// import { AppConfig } from \u0027../../../../environments/environment\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027../auth.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../github.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../githubevent.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../issue.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../logging.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"// import { MockAuthService } from \u0027../mocks/mock.auth.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../phase.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../user.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"export function AuthServiceFactory("},{"lineNumber":15,"author":{"gitId":"-"},"content":" router: Router,"},{"lineNumber":16,"author":{"gitId":"-"},"content":" ngZone: NgZone,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" githubService: GithubService,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" userService: UserService,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" issueService: IssueService,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" phaseService: PhaseService,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" githubEventService: GithubEventService,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" titleService: Title,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" logger: LoggingService"},{"lineNumber":24,"author":{"gitId":"-"},"content":") {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // TODO: Write Mocks"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // if (AppConfig.test) {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // return new MockAuthService("},{"lineNumber":28,"author":{"gitId":"-"},"content":" // router,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // ngZone,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // githubService,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // userService,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // issueService,"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // phaseService,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // githubEventService,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // titleService,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // logger"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // );"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // }"},{"lineNumber":39,"author":{"gitId":"-"},"content":" console.log(logger);"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return new AuthService(router, ngZone, githubService, userService, issueService, phaseService, githubEventService, titleService, logger);"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":40}},{"path":"src/app/core/services/factories/factory.github.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Apollo } from \u0027apollo-angular\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"// import { AppConfig } from \u0027../../../../environments/environment\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../error-handling.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../github.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../logging.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"// import { MockGithubService } from \u0027../mocks/mock.github.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"export function GithubServiceFactory(handling: ErrorHandlingService, apollo: Apollo, logger: LoggingService) {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" // TODO: Write Mocks"},{"lineNumber":10,"author":{"gitId":"-"},"content":" // if (AppConfig.test) {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" // return new MockGithubService();"},{"lineNumber":12,"author":{"gitId":"-"},"content":" // }"},{"lineNumber":13,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return new GithubService(handling, apollo, logger);"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":12}},{"path":"src/app/core/services/factories/factory.issue.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"// import { AppConfig } from \u0027../../../../environments/environment\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../github.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../issue.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"// import { MockIssueService } from \u0027../mocks/mock.issue.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../phase.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../user.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"export function IssueServiceFactory(githubService: GithubService, userService: UserService, phaseService: PhaseService) {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" // TODO: Write Mocks"},{"lineNumber":10,"author":{"gitId":"-"},"content":" // if (AppConfig.test) {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" // return new MockIssueService(githubService, phaseService, dataService);"},{"lineNumber":12,"author":{"gitId":"-"},"content":" // }"},{"lineNumber":13,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return new IssueService(githubService, userService, phaseService);"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":12}},{"path":"src/app/core/services/github.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpErrorResponse } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Apollo, QueryRef } from \u0027apollo-angular\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { ApolloQueryResult } from \u0027apollo-client\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { DocumentNode } from \u0027graphql\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { BehaviorSubject, forkJoin, from, merge, Observable, of, throwError } from \u0027rxjs\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { catchError, filter, flatMap, map, throwIfEmpty } from \u0027rxjs/operators\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" FetchIssue,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" FetchIssueQuery,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" FetchIssues,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" FetchIssuesQuery,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" FetchPullRequests,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" FetchPullRequestsQuery"},{"lineNumber":15,"author":{"gitId":"-"},"content":"} from \u0027../../../../graphql/graphql-types\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { getNumberOfPages } from \u0027../../shared/lib/github-paginator-parser\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../models/github-user.model\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import { IssueLastModifiedManagerModel } from \u0027../models/github/cache-manager/issue-last-modified-manager.model\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import { IssuesCacheManager } from \u0027../models/github/cache-manager/issues-cache-manager.model\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import { GithubEvent } from \u0027../models/github/github-event.model\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import { GithubGraphqlIssue } from \u0027../models/github/github-graphql.issue\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import { GithubGraphqlIssueOrPr } from \u0027../models/github/github-graphql.issue-or-pr\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import RestGithubIssueFilter from \u0027../models/github/github-issue-filter.model\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027../models/github/github-issue.model\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import { GithubResponse } from \u0027../models/github/github-response.model\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import { GithubRelease } from \u0027../models/github/github.release\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import { SessionData } from \u0027../models/session.model\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import { ERRORCODE_NOT_FOUND, ErrorHandlingService } from \u0027./error-handling.service\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":"const { Octokit } \u003d require(\u0027@octokit/rest\u0027);"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":"const WATCHER_ORG \u003d \u0027WATcher-org\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":"const WATCHER_REPO \u003d \u0027WATcher\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":"const UNABLE_TO_OPEN_IN_BROWSER \u003d \u0027Unable to open this issue in Browser\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"/** Owner of Repository to watch */"},{"lineNumber":39,"author":{"gitId":"-"},"content":"let ORG_NAME \u003d \u0027\u0027; // repoOrg"},{"lineNumber":40,"author":{"gitId":"-"},"content":"/** Name of Repository to watch */"},{"lineNumber":41,"author":{"gitId":"-"},"content":"let REPO \u003d \u0027\u0027; // repoName"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":"/** Owner of Settings repository, currently not used */"},{"lineNumber":44,"author":{"gitId":"-"},"content":"let MOD_ORG \u003d \u0027\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":"/** Name of Settings repository, currently not used */"},{"lineNumber":46,"author":{"gitId":"-"},"content":"let DATA_REPO \u003d \u0027\u0027;"},{"lineNumber":47,"author":{"gitId":"-"},"content":"const MAX_ITEMS_PER_PAGE \u003d 100;"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":"let octokit \u003d new Octokit();"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":52,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":53,"author":{"gitId":"-"},"content":"})"},{"lineNumber":54,"author":{"gitId":"-"},"content":""},{"lineNumber":55,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Responsible for communicating with GitHub to create, update, read and delete"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * features related to Github using GitHub API Requests."},{"lineNumber":58,"author":{"gitId":"-"},"content":" * For example, issues, issue labels and repositories."},{"lineNumber":59,"author":{"gitId":"-"},"content":" */"},{"lineNumber":60,"author":{"gitId":"-"},"content":"export class GithubService {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private static readonly IF_NONE_MATCH_EMPTY \u003d { \u0027If-None-Match\u0027: \u0027\u0027 };"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" private issuesCacheManager \u003d new IssuesCacheManager();"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private issuesLastModifiedManager \u003d new IssueLastModifiedManagerModel();"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private issueQueryRefs \u003d new Map\u003cnumber, QueryRef\u003cFetchIssueQuery\u003e\u003e();"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor(private errorHandlingService: ErrorHandlingService, private apollo: Apollo, private logger: LoggingService) {}"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" storeOAuthAccessToken(accessToken: string) {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" octokit \u003d new Octokit({"},{"lineNumber":71,"author":{"gitId":"-"},"content":" auth() {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return `Token ${accessToken}`;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" },"},{"lineNumber":74,"author":{"gitId":"-"},"content":" log: {"},{"lineNumber":75,"author":{"gitId":"cheehongw"},"content":" debug: (message, ...otherInfo) \u003d\u003e this.logger.debug(\u0027GithubService: \u0027 + message, ...otherInfo),"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // Do not log info for HTTP response 304 due to repeated polling"},{"lineNumber":77,"author":{"gitId":"Eclipse-Dominator"},"content":" info: (message, ...otherInfo) \u003d\u003e"},{"lineNumber":78,"author":{"gitId":"Eclipse-Dominator"},"content":" /304 in \\d+ms$/.test(message) ? undefined : this.logger.info(\u0027GithubService: \u0027 + message, ...otherInfo),"},{"lineNumber":79,"author":{"gitId":"cheehongw"},"content":" warn: (message, ...otherInfo) \u003d\u003e this.logger.warn(\u0027GithubService: \u0027 + message, ...otherInfo),"},{"lineNumber":80,"author":{"gitId":"cheehongw"},"content":" error: (message, ...otherInfo) \u003d\u003e this.logger.error(\u0027GithubService: \u0027 + message, ...otherInfo)"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"-"},"content":" });"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Sets settings repository. Not used."},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @param orgName WATcher organisation"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @param dataRepo WATcher repository"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */"},{"lineNumber":90,"author":{"gitId":"-"},"content":" storeOrganizationDetails(orgName: string, dataRepo: string) {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" MOD_ORG \u003d orgName;"},{"lineNumber":92,"author":{"gitId":"-"},"content":" DATA_REPO \u003d dataRepo;"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Sets repository to watch. This repository is used for fetching from Github."},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @param phaseRepoOwner Repository owner"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @param repoName Repository name"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */"},{"lineNumber":100,"author":{"gitId":"-"},"content":" storePhaseDetails(phaseRepoOwner: string, repoName: string) {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" REPO \u003d repoName;"},{"lineNumber":102,"author":{"gitId":"-"},"content":" ORG_NAME \u003d phaseRepoOwner;"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Fetches an array of filtered GitHubIssues using GraphQL query."},{"lineNumber":107,"author":{"gitId":"-"},"content":" * In WATcher, this includes pull requests."},{"lineNumber":108,"author":{"gitId":"-"},"content":" *"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @param issuesFilter - The issue filter."},{"lineNumber":110,"author":{"gitId":"-"},"content":" * @returns An observable array of filtered GithubIssues"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */"},{"lineNumber":112,"author":{"gitId":"-"},"content":" fetchIssuesGraphql(issuesFilter: RestGithubIssueFilter): Observable\u003cArray\u003cGithubIssue\u003e\u003e {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" const graphqlFilter \u003d issuesFilter.convertToGraphqlFilter();"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /*"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Github Issues consists of issues and pull requests in WATcher."},{"lineNumber":116,"author":{"gitId":"-"},"content":" */"},{"lineNumber":117,"author":{"gitId":"-"},"content":" const issueObs \u003d this.toFetchIssues(issuesFilter).pipe("},{"lineNumber":118,"author":{"gitId":"-"},"content":" filter((toFetch) \u003d\u003e toFetch),"},{"lineNumber":119,"author":{"gitId":"-"},"content":" flatMap(() \u003d\u003e {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return this.fetchGraphqlList\u003cFetchIssuesQuery, GithubGraphqlIssueOrPr\u003e("},{"lineNumber":121,"author":{"gitId":"-"},"content":" FetchIssues,"},{"lineNumber":122,"author":{"gitId":"-"},"content":" { owner: ORG_NAME, name: REPO, filter: graphqlFilter },"},{"lineNumber":123,"author":{"gitId":"-"},"content":" (result) \u003d\u003e result.data.repository.issues.edges,"},{"lineNumber":124,"author":{"gitId":"-"},"content":" GithubGraphqlIssueOrPr"},{"lineNumber":125,"author":{"gitId":"-"},"content":" );"},{"lineNumber":126,"author":{"gitId":"-"},"content":" })"},{"lineNumber":127,"author":{"gitId":"-"},"content":" );"},{"lineNumber":128,"author":{"gitId":"-"},"content":" const prObs \u003d this.toFetchIssues(issuesFilter).pipe("},{"lineNumber":129,"author":{"gitId":"-"},"content":" filter((toFetch) \u003d\u003e toFetch),"},{"lineNumber":130,"author":{"gitId":"-"},"content":" flatMap(() \u003d\u003e {"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return this.fetchGraphqlList\u003cFetchPullRequestsQuery, GithubGraphqlIssueOrPr\u003e("},{"lineNumber":132,"author":{"gitId":"-"},"content":" FetchPullRequests,"},{"lineNumber":133,"author":{"gitId":"-"},"content":" { owner: ORG_NAME, name: REPO },"},{"lineNumber":134,"author":{"gitId":"-"},"content":" (result) \u003d\u003e result.data.repository.pullRequests.edges,"},{"lineNumber":135,"author":{"gitId":"-"},"content":" GithubGraphqlIssueOrPr"},{"lineNumber":136,"author":{"gitId":"-"},"content":" );"},{"lineNumber":137,"author":{"gitId":"-"},"content":" })"},{"lineNumber":138,"author":{"gitId":"-"},"content":" );"},{"lineNumber":139,"author":{"gitId":"-"},"content":""},{"lineNumber":140,"author":{"gitId":"-"},"content":" // Concatenate both streams together."},{"lineNumber":141,"author":{"gitId":"-"},"content":" return merge(issueObs, prObs);"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }"},{"lineNumber":143,"author":{"gitId":"-"},"content":""},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Checks if there are pages of filtered issues that are not cached in the cache model,"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * and updates the model to cache these new pages."},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param filter - The issue filter."},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @returns Observable\u003cboolean\u003e that returns true if there are pages that do not exist in the cache model."},{"lineNumber":149,"author":{"gitId":"-"},"content":" */"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private toFetchIssues(filter: RestGithubIssueFilter): Observable\u003cboolean\u003e {"},{"lineNumber":151,"author":{"gitId":"-"},"content":" let responseInFirstPage: GithubResponse\u003cGithubIssue[]\u003e;"},{"lineNumber":152,"author":{"gitId":"-"},"content":" return this.getIssuesAPICall(filter, 1).pipe("},{"lineNumber":153,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue[]\u003e) \u003d\u003e {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" responseInFirstPage \u003d response;"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return getNumberOfPages(response);"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":157,"author":{"gitId":"-"},"content":" flatMap((numOfPages: number) \u003d\u003e {"},{"lineNumber":158,"author":{"gitId":"-"},"content":" const apiCalls: Observable\u003cGithubResponse\u003cGithubIssue[]\u003e\u003e[] \u003d [];"},{"lineNumber":159,"author":{"gitId":"-"},"content":" for (let i \u003d 2; i \u003c\u003d numOfPages; i++) {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" apiCalls.push(this.getIssuesAPICall(filter, i));"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return apiCalls.length \u003d\u003d\u003d 0 ? of([]) : forkJoin(apiCalls);"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":164,"author":{"gitId":"-"},"content":" map((resultArray: GithubResponse\u003cGithubIssue[]\u003e[]) \u003d\u003e {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" const responses \u003d [responseInFirstPage, ...resultArray];"},{"lineNumber":166,"author":{"gitId":"-"},"content":" const isCached \u003d responses.reduce((result, response) \u003d\u003e {"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return result \u0026\u0026 response.isCached;"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }, true);"},{"lineNumber":169,"author":{"gitId":"-"},"content":" responses.forEach((resp, index) \u003d\u003e this.issuesCacheManager.set(index + 1, resp));"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return !isCached;"},{"lineNumber":171,"author":{"gitId":"-"},"content":" })"},{"lineNumber":172,"author":{"gitId":"-"},"content":" );"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }"},{"lineNumber":174,"author":{"gitId":"-"},"content":""},{"lineNumber":175,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Checks if the specified repository exists."},{"lineNumber":177,"author":{"gitId":"-"},"content":" * @param owner - Owner of Specified Repository."},{"lineNumber":178,"author":{"gitId":"-"},"content":" * @param repo - Name of Repository."},{"lineNumber":179,"author":{"gitId":"-"},"content":" */"},{"lineNumber":180,"author":{"gitId":"-"},"content":" isRepositoryPresent(owner: string, repo: string): Observable\u003cboolean\u003e {"},{"lineNumber":181,"author":{"gitId":"-"},"content":" return from(octokit.repos.get({ owner: owner, repo: repo, headers: GithubService.IF_NONE_MATCH_EMPTY })).pipe("},{"lineNumber":182,"author":{"gitId":"-"},"content":" map((rawData: { status: number }) \u003d\u003e {"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return rawData.status !\u003d\u003d ERRORCODE_NOT_FOUND;"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":185,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return of(false);"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":188,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch repository data.\u0027))"},{"lineNumber":189,"author":{"gitId":"-"},"content":" );"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }"},{"lineNumber":191,"author":{"gitId":"-"},"content":""},{"lineNumber":192,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":193,"author":{"gitId":"-"},"content":" * Fetches information about an issue using GraphQL."},{"lineNumber":194,"author":{"gitId":"-"},"content":" *"},{"lineNumber":195,"author":{"gitId":"-"},"content":" * If the issue is not modified, return a `304 - Not Modified` response."},{"lineNumber":196,"author":{"gitId":"-"},"content":" *"},{"lineNumber":197,"author":{"gitId":"-"},"content":" * @param id - The issue id."},{"lineNumber":198,"author":{"gitId":"-"},"content":" * @returns Observable\u003cGithubGraphqlIssue\u003e that represents the response object."},{"lineNumber":199,"author":{"gitId":"-"},"content":" */"},{"lineNumber":200,"author":{"gitId":"-"},"content":" fetchIssueGraphql(id: number): Observable\u003cGithubGraphqlIssue\u003e {"},{"lineNumber":201,"author":{"gitId":"-"},"content":" if (this.issueQueryRefs.get(id) \u003d\u003d\u003d undefined) {"},{"lineNumber":202,"author":{"gitId":"-"},"content":" const newQueryRef \u003d this.apollo.watchQuery\u003cFetchIssueQuery\u003e({"},{"lineNumber":203,"author":{"gitId":"-"},"content":" query: FetchIssue,"},{"lineNumber":204,"author":{"gitId":"-"},"content":" variables: {"},{"lineNumber":205,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":206,"author":{"gitId":"-"},"content":" name: REPO,"},{"lineNumber":207,"author":{"gitId":"-"},"content":" issueId: id"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }"},{"lineNumber":209,"author":{"gitId":"-"},"content":" });"},{"lineNumber":210,"author":{"gitId":"-"},"content":" this.issueQueryRefs.set(id, newQueryRef);"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }"},{"lineNumber":212,"author":{"gitId":"-"},"content":""},{"lineNumber":213,"author":{"gitId":"-"},"content":" const queryRef \u003d this.issueQueryRefs.get(id);"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return this.toFetchIssue(id).pipe("},{"lineNumber":215,"author":{"gitId":"-"},"content":" filter((toFetch) \u003d\u003e toFetch),"},{"lineNumber":216,"author":{"gitId":"-"},"content":" flatMap(() \u003d\u003e from(queryRef.refetch())),"},{"lineNumber":217,"author":{"gitId":"-"},"content":" map((value: ApolloQueryResult\u003cFetchIssueQuery\u003e) \u003d\u003e {"},{"lineNumber":218,"author":{"gitId":"-"},"content":" return new GithubGraphqlIssue(value.data.repository.issue);"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":220,"author":{"gitId":"-"},"content":" throwIfEmpty(() \u003d\u003e new HttpErrorResponse({ status: 304 }))"},{"lineNumber":221,"author":{"gitId":"-"},"content":" );"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }"},{"lineNumber":223,"author":{"gitId":"-"},"content":""},{"lineNumber":224,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Checks if the issue has been modified since the last query, and"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * updates the model to reflect the last modified time."},{"lineNumber":227,"author":{"gitId":"-"},"content":" *"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * @param id - The issue id."},{"lineNumber":229,"author":{"gitId":"-"},"content":" * @returns Observable\u003cboolean\u003e that returns true if the issue has been modified."},{"lineNumber":230,"author":{"gitId":"-"},"content":" */"},{"lineNumber":231,"author":{"gitId":"-"},"content":" toFetchIssue(id: number): Observable\u003cboolean\u003e {"},{"lineNumber":232,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":233,"author":{"gitId":"-"},"content":" octokit.issues.get({"},{"lineNumber":234,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":235,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":236,"author":{"gitId":"-"},"content":" issue_number: id,"},{"lineNumber":237,"author":{"gitId":"-"},"content":" headers: { \u0027If-Modified-Since\u0027: this.issuesLastModifiedManager.get(id) }"},{"lineNumber":238,"author":{"gitId":"-"},"content":" })"},{"lineNumber":239,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":240,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":241,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.set(id, response.headers[\u0027last-modified\u0027]);"},{"lineNumber":242,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":244,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch issue.\u0027))"},{"lineNumber":245,"author":{"gitId":"-"},"content":" );"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }"},{"lineNumber":247,"author":{"gitId":"-"},"content":""},{"lineNumber":248,"author":{"gitId":"-"},"content":" fetchAllMilestones(): Observable\u003cArray\u003c{}\u003e\u003e {"},{"lineNumber":249,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":250,"author":{"gitId":"-"},"content":" octokit.issues.listMilestonesForRepo({"},{"lineNumber":251,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":252,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":253,"author":{"gitId":"-"},"content":" state: \u0027all\u0027,"},{"lineNumber":254,"author":{"gitId":"-"},"content":" per_page: MAX_ITEMS_PER_PAGE,"},{"lineNumber":255,"author":{"gitId":"-"},"content":" headers: GithubService.IF_NONE_MATCH_EMPTY"},{"lineNumber":256,"author":{"gitId":"-"},"content":" })"},{"lineNumber":257,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":258,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":259,"author":{"gitId":"-"},"content":" return response[\u0027data\u0027];"},{"lineNumber":260,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":261,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch milestones.\u0027))"},{"lineNumber":262,"author":{"gitId":"-"},"content":" );"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }"},{"lineNumber":264,"author":{"gitId":"-"},"content":""},{"lineNumber":265,"author":{"gitId":"-"},"content":" fetchAllLabels(): Observable\u003cArray\u003c{}\u003e\u003e {"},{"lineNumber":266,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":267,"author":{"gitId":"-"},"content":" octokit.issues.listLabelsForRepo({"},{"lineNumber":268,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":269,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":270,"author":{"gitId":"-"},"content":" per_page: MAX_ITEMS_PER_PAGE,"},{"lineNumber":271,"author":{"gitId":"-"},"content":" headers: GithubService.IF_NONE_MATCH_EMPTY"},{"lineNumber":272,"author":{"gitId":"-"},"content":" })"},{"lineNumber":273,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":274,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":275,"author":{"gitId":"-"},"content":" return response[\u0027data\u0027];"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":277,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch labels.\u0027))"},{"lineNumber":278,"author":{"gitId":"-"},"content":" );"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }"},{"lineNumber":280,"author":{"gitId":"-"},"content":""},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Checks if the given list of users are allowed to be assigned to an issue."},{"lineNumber":283,"author":{"gitId":"-"},"content":" * @param assignees - GitHub usernames to be checked"},{"lineNumber":284,"author":{"gitId":"-"},"content":" */"},{"lineNumber":285,"author":{"gitId":"-"},"content":" areUsersAssignable(assignees: string[]): Observable\u003cvoid\u003e {"},{"lineNumber":286,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":287,"author":{"gitId":"-"},"content":" octokit.issues.listAssignees({"},{"lineNumber":288,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":289,"author":{"gitId":"-"},"content":" repo: REPO"},{"lineNumber":290,"author":{"gitId":"-"},"content":" })"},{"lineNumber":291,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":292,"author":{"gitId":"-"},"content":" map(({ data }: { data: { login: string }[] }) \u003d\u003e data.map(({ login }) \u003d\u003e login)),"},{"lineNumber":293,"author":{"gitId":"-"},"content":" map((assignables: string[]) \u003d\u003e"},{"lineNumber":294,"author":{"gitId":"-"},"content":" assignees.forEach((assignee) \u003d\u003e {"},{"lineNumber":295,"author":{"gitId":"-"},"content":" if (!assignables.includes(assignee)) {"},{"lineNumber":296,"author":{"gitId":"-"},"content":" throw new Error(`Cannot assign ${assignee} to the issue. Please check if ${assignee} is authorized.`);"},{"lineNumber":297,"author":{"gitId":"-"},"content":" }"},{"lineNumber":298,"author":{"gitId":"-"},"content":" })"},{"lineNumber":299,"author":{"gitId":"-"},"content":" )"},{"lineNumber":300,"author":{"gitId":"-"},"content":" );"},{"lineNumber":301,"author":{"gitId":"-"},"content":" }"},{"lineNumber":302,"author":{"gitId":"-"},"content":""},{"lineNumber":303,"author":{"gitId":"-"},"content":" getUsersAssignable(): Observable\u003cGithubUser[]\u003e {"},{"lineNumber":304,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":305,"author":{"gitId":"-"},"content":" octokit.issues.listAssignees({"},{"lineNumber":306,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":307,"author":{"gitId":"-"},"content":" repo: REPO"},{"lineNumber":308,"author":{"gitId":"-"},"content":" })"},{"lineNumber":309,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":310,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":311,"author":{"gitId":"-"},"content":" return response[\u0027data\u0027];"},{"lineNumber":312,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":313,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch assignable users for repository\u0027))"},{"lineNumber":314,"author":{"gitId":"-"},"content":" );"},{"lineNumber":315,"author":{"gitId":"-"},"content":" }"},{"lineNumber":316,"author":{"gitId":"-"},"content":""},{"lineNumber":317,"author":{"gitId":"-"},"content":" fetchEventsForRepo(): Observable\u003cany[]\u003e {"},{"lineNumber":318,"author":{"gitId":"-"},"content":" return from(octokit.issues.listEventsForRepo({ owner: ORG_NAME, repo: REPO, headers: GithubService.IF_NONE_MATCH_EMPTY })).pipe("},{"lineNumber":319,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":320,"author":{"gitId":"-"},"content":" return response[\u0027data\u0027];"},{"lineNumber":321,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":322,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch issue events for repository\u0027))"},{"lineNumber":323,"author":{"gitId":"-"},"content":" );"},{"lineNumber":324,"author":{"gitId":"-"},"content":" }"},{"lineNumber":325,"author":{"gitId":"-"},"content":""},{"lineNumber":326,"author":{"gitId":"-"},"content":" fetchEventsForRepoCall(pageNumber: number): Observable\u003cGithubResponse\u003cany[]\u003e\u003e {"},{"lineNumber":327,"author":{"gitId":"-"},"content":" return \u003cObservable\u003cGithubResponse\u003cany[]\u003e\u003e\u003efrom("},{"lineNumber":328,"author":{"gitId":"-"},"content":" octokit.activity.listRepoEvents({"},{"lineNumber":329,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":330,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":331,"author":{"gitId":"-"},"content":" page: pageNumber"},{"lineNumber":332,"author":{"gitId":"-"},"content":" })"},{"lineNumber":333,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ).pipe(catchError((err) \u003d\u003e throwError(\u0027Failed to fetch activity events for repository\u0027)));"},{"lineNumber":334,"author":{"gitId":"-"},"content":" }"},{"lineNumber":335,"author":{"gitId":"-"},"content":""},{"lineNumber":336,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":337,"author":{"gitId":"-"},"content":" * Fetches all events of current repository for Activity Dashboard."},{"lineNumber":338,"author":{"gitId":"-"},"content":" * Adapted from getIssueApiCalls()."},{"lineNumber":339,"author":{"gitId":"-"},"content":" *"},{"lineNumber":340,"author":{"gitId":"-"},"content":" * @returns GithubEvents observable"},{"lineNumber":341,"author":{"gitId":"-"},"content":" */"},{"lineNumber":342,"author":{"gitId":"-"},"content":" fetchAllEventsForRepo(): Observable\u003cGithubEvent[]\u003e {"},{"lineNumber":343,"author":{"gitId":"-"},"content":" let responseInFirstPage: GithubResponse\u003cGithubEvent[]\u003e;"},{"lineNumber":344,"author":{"gitId":"-"},"content":" return this.fetchEventsForRepoCall(1).pipe("},{"lineNumber":345,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubEvent[]\u003e) \u003d\u003e {"},{"lineNumber":346,"author":{"gitId":"-"},"content":" responseInFirstPage \u003d response;"},{"lineNumber":347,"author":{"gitId":"-"},"content":" return getNumberOfPages(response);"},{"lineNumber":348,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":349,"author":{"gitId":"-"},"content":" flatMap((numOfPages: number) \u003d\u003e {"},{"lineNumber":350,"author":{"gitId":"-"},"content":" const apiCalls: Observable\u003cGithubResponse\u003cGithubEvent[]\u003e\u003e[] \u003d [];"},{"lineNumber":351,"author":{"gitId":"-"},"content":" for (let i \u003d 1; i \u003c\u003d numOfPages; i++) {"},{"lineNumber":352,"author":{"gitId":"-"},"content":" apiCalls.push(this.fetchEventsForRepoCall(i));"},{"lineNumber":353,"author":{"gitId":"-"},"content":" }"},{"lineNumber":354,"author":{"gitId":"-"},"content":" return apiCalls.length \u003d\u003d\u003d 0 ? of([]) : forkJoin(apiCalls);"},{"lineNumber":355,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":356,"author":{"gitId":"-"},"content":" map((responseArray) \u003d\u003e responseArray.map((x) \u003d\u003e x[\u0027data\u0027]))"},{"lineNumber":357,"author":{"gitId":"-"},"content":" );"},{"lineNumber":358,"author":{"gitId":"-"},"content":" }"},{"lineNumber":359,"author":{"gitId":"-"},"content":""},{"lineNumber":360,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":361,"author":{"gitId":"-"},"content":" * Not in use. Fetches data csv file from Organization repository."},{"lineNumber":362,"author":{"gitId":"-"},"content":" */"},{"lineNumber":363,"author":{"gitId":"-"},"content":" fetchDataFile(): Observable\u003c{}\u003e {"},{"lineNumber":364,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":365,"author":{"gitId":"-"},"content":" octokit.repos.getContents({ owner: MOD_ORG, repo: DATA_REPO, path: \u0027data.csv\u0027, headers: GithubService.IF_NONE_MATCH_EMPTY })"},{"lineNumber":366,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":367,"author":{"gitId":"-"},"content":" map((rawData) \u003d\u003e {"},{"lineNumber":368,"author":{"gitId":"-"},"content":" return { data: atob(rawData[\u0027data\u0027][\u0027content\u0027]) };"},{"lineNumber":369,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":370,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch data file.\u0027))"},{"lineNumber":371,"author":{"gitId":"-"},"content":" );"},{"lineNumber":372,"author":{"gitId":"-"},"content":" }"},{"lineNumber":373,"author":{"gitId":"-"},"content":""},{"lineNumber":374,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":375,"author":{"gitId":"-"},"content":" * Gets information of latest release of WATcher."},{"lineNumber":376,"author":{"gitId":"-"},"content":" * @returns GithubRelease observable"},{"lineNumber":377,"author":{"gitId":"-"},"content":" */"},{"lineNumber":378,"author":{"gitId":"-"},"content":" fetchLatestRelease(): Observable\u003cGithubRelease\u003e {"},{"lineNumber":379,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":380,"author":{"gitId":"-"},"content":" octokit.repos.getLatestRelease({ owner: WATCHER_ORG, repo: WATCHER_REPO, headers: GithubService.IF_NONE_MATCH_EMPTY })"},{"lineNumber":381,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":382,"author":{"gitId":"-"},"content":" map((res) \u003d\u003e res[\u0027data\u0027]),"},{"lineNumber":383,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch latest release.\u0027))"},{"lineNumber":384,"author":{"gitId":"-"},"content":" );"},{"lineNumber":385,"author":{"gitId":"-"},"content":" }"},{"lineNumber":386,"author":{"gitId":"-"},"content":""},{"lineNumber":387,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":388,"author":{"gitId":"-"},"content":" * Fetches the data file that is regulates session information."},{"lineNumber":389,"author":{"gitId":"-"},"content":" * @return Observable\u003cSessionData\u003e representing session information."},{"lineNumber":390,"author":{"gitId":"-"},"content":" */"},{"lineNumber":391,"author":{"gitId":"-"},"content":" fetchSettingsFile(): Observable\u003cSessionData\u003e {"},{"lineNumber":392,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":393,"author":{"gitId":"-"},"content":" octokit.repos.getContents({ owner: MOD_ORG, repo: DATA_REPO, path: \u0027settings.json\u0027, headers: GithubService.IF_NONE_MATCH_EMPTY })"},{"lineNumber":394,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":395,"author":{"gitId":"-"},"content":" map((rawData) \u003d\u003e JSON.parse(atob(rawData[\u0027data\u0027][\u0027content\u0027]))),"},{"lineNumber":396,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch settings file.\u0027))"},{"lineNumber":397,"author":{"gitId":"-"},"content":" );"},{"lineNumber":398,"author":{"gitId":"-"},"content":" }"},{"lineNumber":399,"author":{"gitId":"-"},"content":""},{"lineNumber":400,"author":{"gitId":"-"},"content":" fetchAuthenticatedUser(): Observable\u003cGithubUser\u003e {"},{"lineNumber":401,"author":{"gitId":"-"},"content":" return from(octokit.users.getAuthenticated()).pipe("},{"lineNumber":402,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":403,"author":{"gitId":"-"},"content":" return response[\u0027data\u0027];"},{"lineNumber":404,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":405,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch authenticated user.\u0027))"},{"lineNumber":406,"author":{"gitId":"-"},"content":" );"},{"lineNumber":407,"author":{"gitId":"-"},"content":" }"},{"lineNumber":408,"author":{"gitId":"-"},"content":""},{"lineNumber":409,"author":{"gitId":"-"},"content":" getRepoURL(): string {"},{"lineNumber":410,"author":{"gitId":"-"},"content":" return ORG_NAME.concat(\u0027/\u0027).concat(REPO);"},{"lineNumber":411,"author":{"gitId":"-"},"content":" }"},{"lineNumber":412,"author":{"gitId":"-"},"content":""},{"lineNumber":413,"author":{"gitId":"-"},"content":" viewIssueInBrowser(id: number, event: Event) {"},{"lineNumber":414,"author":{"gitId":"-"},"content":" if (id) {"},{"lineNumber":415,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.open(\u0027https://github.com/\u0027.concat(this.getRepoURL()).concat(\u0027/issues/\u0027).concat(String(id)));"},{"lineNumber":416,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":417,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(new Error(UNABLE_TO_OPEN_IN_BROWSER));"},{"lineNumber":418,"author":{"gitId":"-"},"content":" }"},{"lineNumber":419,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":420,"author":{"gitId":"-"},"content":" }"},{"lineNumber":421,"author":{"gitId":"-"},"content":""},{"lineNumber":422,"author":{"gitId":"-"},"content":" reset(): void {"},{"lineNumber":423,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`GithubService: Resetting issues cache`);"},{"lineNumber":424,"author":{"gitId":"-"},"content":" this.issuesCacheManager.clear();"},{"lineNumber":425,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.clear();"},{"lineNumber":426,"author":{"gitId":"-"},"content":" this.issueQueryRefs.clear();"},{"lineNumber":427,"author":{"gitId":"-"},"content":" }"},{"lineNumber":428,"author":{"gitId":"-"},"content":""},{"lineNumber":429,"author":{"gitId":"-"},"content":" getProfilesData(): Promise\u003cResponse\u003e {"},{"lineNumber":430,"author":{"gitId":"-"},"content":" return fetch(AppConfig.clientDataUrl);"},{"lineNumber":431,"author":{"gitId":"-"},"content":" }"},{"lineNumber":432,"author":{"gitId":"-"},"content":""},{"lineNumber":433,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":434,"author":{"gitId":"-"},"content":" * Performs an API call to fetch a page of filtered issues with a given pageNumber."},{"lineNumber":435,"author":{"gitId":"-"},"content":" *"},{"lineNumber":436,"author":{"gitId":"-"},"content":" * The request is sent with the ETag of the latest cached HTTP response."},{"lineNumber":437,"author":{"gitId":"-"},"content":" * If page requested has the same ETag, or the request results in an error,"},{"lineNumber":438,"author":{"gitId":"-"},"content":" * then the cached page is returned instead."},{"lineNumber":439,"author":{"gitId":"-"},"content":" *"},{"lineNumber":440,"author":{"gitId":"-"},"content":" * @param filter - The issue filter"},{"lineNumber":441,"author":{"gitId":"-"},"content":" * @param pageNumber - The page to be fetched"},{"lineNumber":442,"author":{"gitId":"-"},"content":" * @returns An observable representing the response containing a single page of filtered issues"},{"lineNumber":443,"author":{"gitId":"-"},"content":" */"},{"lineNumber":444,"author":{"gitId":"-"},"content":" private getIssuesAPICall(filter: RestGithubIssueFilter, pageNumber: number): Observable\u003cGithubResponse\u003cGithubIssue[]\u003e\u003e {"},{"lineNumber":445,"author":{"gitId":"-"},"content":" const apiCall: Promise\u003cGithubResponse\u003cGithubIssue[]\u003e\u003e \u003d octokit.issues.listForRepo({"},{"lineNumber":446,"author":{"gitId":"-"},"content":" ...filter,"},{"lineNumber":447,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":448,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":449,"author":{"gitId":"-"},"content":" sort: \u0027created\u0027,"},{"lineNumber":450,"author":{"gitId":"-"},"content":" direction: \u0027desc\u0027,"},{"lineNumber":451,"author":{"gitId":"-"},"content":" per_page: 100,"},{"lineNumber":452,"author":{"gitId":"-"},"content":" page: pageNumber,"},{"lineNumber":453,"author":{"gitId":"-"},"content":" headers: { \u0027If-None-Match\u0027: this.issuesCacheManager.getEtagFor(pageNumber) },"},{"lineNumber":454,"author":{"gitId":"-"},"content":" state: \u0027all\u0027"},{"lineNumber":455,"author":{"gitId":"-"},"content":" });"},{"lineNumber":456,"author":{"gitId":"Eclipse-Dominator"},"content":" const apiCall$ \u003d from("},{"lineNumber":457,"author":{"gitId":"Eclipse-Dominator"},"content":" apiCall.catch((err) \u003d\u003e {"},{"lineNumber":458,"author":{"gitId":"cheehongw"},"content":" return this.issuesCacheManager.get(pageNumber);"},{"lineNumber":459,"author":{"gitId":"Eclipse-Dominator"},"content":" })"},{"lineNumber":460,"author":{"gitId":"Eclipse-Dominator"},"content":" );"},{"lineNumber":461,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":462,"author":{"gitId":"-"},"content":" return apiCall$.pipe("},{"lineNumber":463,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":464,"author":{"gitId":"cheehongw"},"content":" // catchError does not appear to catch an error on an observable created from a promise..."},{"lineNumber":465,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`GithubService: Error caught in getIssuesAPICall`);"},{"lineNumber":466,"author":{"gitId":"-"},"content":" return of(this.issuesCacheManager.get(pageNumber));"},{"lineNumber":467,"author":{"gitId":"-"},"content":" })"},{"lineNumber":468,"author":{"gitId":"-"},"content":" );"},{"lineNumber":469,"author":{"gitId":"-"},"content":" }"},{"lineNumber":470,"author":{"gitId":"-"},"content":""},{"lineNumber":471,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":472,"author":{"gitId":"-"},"content":" * Fetches a list of items using a GraphQL query that queries for paginated data."},{"lineNumber":473,"author":{"gitId":"-"},"content":" *"},{"lineNumber":474,"author":{"gitId":"-"},"content":" * @param query - The GraphQL query that queries for paginated data."},{"lineNumber":475,"author":{"gitId":"-"},"content":" * @param variables - Additional variables for the GraphQL query."},{"lineNumber":476,"author":{"gitId":"-"},"content":" * @callback pluckEdges A function that returns a list of edges in a ApolloQueryResult."},{"lineNumber":477,"author":{"gitId":"-"},"content":" * @callback Model Constructor for the item model."},{"lineNumber":478,"author":{"gitId":"-"},"content":" * @returns A list of items from the query."},{"lineNumber":479,"author":{"gitId":"-"},"content":" */"},{"lineNumber":480,"author":{"gitId":"-"},"content":" private fetchGraphqlList\u003cT, M\u003e("},{"lineNumber":481,"author":{"gitId":"-"},"content":" query: DocumentNode,"},{"lineNumber":482,"author":{"gitId":"-"},"content":" variables: {},"},{"lineNumber":483,"author":{"gitId":"-"},"content":" pluckEdges: (results: ApolloQueryResult\u003cT\u003e) \u003d\u003e Array\u003cany\u003e,"},{"lineNumber":484,"author":{"gitId":"-"},"content":" Model: new (data) \u003d\u003e M"},{"lineNumber":485,"author":{"gitId":"-"},"content":" ): Observable\u003cArray\u003cM\u003e\u003e {"},{"lineNumber":486,"author":{"gitId":"-"},"content":" return this.withPagination\u003cT\u003e(pluckEdges, query, variables, false).pipe("},{"lineNumber":487,"author":{"gitId":"-"},"content":" map((results: ApolloQueryResult\u003cT\u003e[]) \u003d\u003e {"},{"lineNumber":488,"author":{"gitId":"-"},"content":" const issues \u003d results.reduce((accumulated, current) \u003d\u003e accumulated.concat(pluckEdges(current)), []);"},{"lineNumber":489,"author":{"gitId":"-"},"content":" return issues.map((issue) \u003d\u003e new Model(issue.node));"},{"lineNumber":490,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":491,"author":{"gitId":"-"},"content":" throwIfEmpty(() \u003d\u003e {"},{"lineNumber":492,"author":{"gitId":"-"},"content":" return new HttpErrorResponse({ status: 304 });"},{"lineNumber":493,"author":{"gitId":"-"},"content":" })"},{"lineNumber":494,"author":{"gitId":"-"},"content":" );"},{"lineNumber":495,"author":{"gitId":"-"},"content":" }"},{"lineNumber":496,"author":{"gitId":"-"},"content":""},{"lineNumber":497,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":498,"author":{"gitId":"-"},"content":" * Returns an observable that will continually emit the currently accumulated results, until a page that has less"},{"lineNumber":499,"author":{"gitId":"-"},"content":" * than 100 items is found, after which it performs a final emit with the full results array, and completes."},{"lineNumber":500,"author":{"gitId":"-"},"content":" *"},{"lineNumber":501,"author":{"gitId":"-"},"content":" * If `shouldAccumulate` is false, the observable will emit only the latest result, it will still complete on the"},{"lineNumber":502,"author":{"gitId":"-"},"content":" * same condition."},{"lineNumber":503,"author":{"gitId":"-"},"content":" *"},{"lineNumber":504,"author":{"gitId":"-"},"content":" * @callback pluckEdges - A function that returns a list of edges in a ApolloQueryResult."},{"lineNumber":505,"author":{"gitId":"-"},"content":" * @params query - The query to be performed."},{"lineNumber":506,"author":{"gitId":"-"},"content":" * @params variables - The variables for the query."},{"lineNumber":507,"author":{"gitId":"-"},"content":" * @params shouldAccumulate - Whether the observable should accumulate the results."},{"lineNumber":508,"author":{"gitId":"-"},"content":" * @returns an observable"},{"lineNumber":509,"author":{"gitId":"-"},"content":" */"},{"lineNumber":510,"author":{"gitId":"-"},"content":" private withPagination\u003cT\u003e("},{"lineNumber":511,"author":{"gitId":"-"},"content":" pluckEdges: (results: ApolloQueryResult\u003cT\u003e) \u003d\u003e Array\u003cany\u003e,"},{"lineNumber":512,"author":{"gitId":"-"},"content":" query: DocumentNode,"},{"lineNumber":513,"author":{"gitId":"-"},"content":" variables: { [key: string]: any } \u003d {},"},{"lineNumber":514,"author":{"gitId":"-"},"content":" shouldAccumulate: boolean \u003d true"},{"lineNumber":515,"author":{"gitId":"-"},"content":" ): Observable\u003cApolloQueryResult\u003cT\u003e[]\u003e {"},{"lineNumber":516,"author":{"gitId":"-"},"content":" const maxResultsCount \u003d 100;"},{"lineNumber":517,"author":{"gitId":"-"},"content":" const apollo \u003d this.apollo;"},{"lineNumber":518,"author":{"gitId":"-"},"content":""},{"lineNumber":519,"author":{"gitId":"-"},"content":" let accumulatedResults: ApolloQueryResult\u003cT\u003e[] \u003d [];"},{"lineNumber":520,"author":{"gitId":"-"},"content":" const behaviorSubject: BehaviorSubject\u003cApolloQueryResult\u003cT\u003e[]\u003e \u003d new BehaviorSubject(accumulatedResults);"},{"lineNumber":521,"author":{"gitId":"-"},"content":""},{"lineNumber":522,"author":{"gitId":"-"},"content":" async function queryWith(cursor: string): Promise\u003cvoid\u003e {"},{"lineNumber":523,"author":{"gitId":"-"},"content":" const graphqlQuery \u003d apollo.watchQuery\u003cT\u003e({ query, variables: { ...variables, cursor } });"},{"lineNumber":524,"author":{"gitId":"-"},"content":""},{"lineNumber":525,"author":{"gitId":"-"},"content":" await graphqlQuery.refetch().then(async (results: ApolloQueryResult\u003cT\u003e) \u003d\u003e {"},{"lineNumber":526,"author":{"gitId":"-"},"content":" const intermediate \u003d Array.isArray(results) ? results : [results];"},{"lineNumber":527,"author":{"gitId":"-"},"content":" const edges \u003d pluckEdges(results);"},{"lineNumber":528,"author":{"gitId":"-"},"content":" const nextCursor \u003d edges.length \u003d\u003d\u003d 0 ? null : edges[edges.length - 1].cursor;"},{"lineNumber":529,"author":{"gitId":"-"},"content":""},{"lineNumber":530,"author":{"gitId":"-"},"content":" if (shouldAccumulate) {"},{"lineNumber":531,"author":{"gitId":"-"},"content":" accumulatedResults \u003d accumulatedResults.concat(intermediate);"},{"lineNumber":532,"author":{"gitId":"-"},"content":" behaviorSubject.next(accumulatedResults);"},{"lineNumber":533,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":534,"author":{"gitId":"-"},"content":" behaviorSubject.next(intermediate);"},{"lineNumber":535,"author":{"gitId":"-"},"content":" }"},{"lineNumber":536,"author":{"gitId":"-"},"content":" if (edges.length \u003c maxResultsCount || !nextCursor) {"},{"lineNumber":537,"author":{"gitId":"-"},"content":" // No more queries to perform."},{"lineNumber":538,"author":{"gitId":"-"},"content":" behaviorSubject.complete();"},{"lineNumber":539,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":540,"author":{"gitId":"-"},"content":" }"},{"lineNumber":541,"author":{"gitId":"-"},"content":""},{"lineNumber":542,"author":{"gitId":"-"},"content":" // Use a chain of await to ensure that all recursive queries are completed before `complete` is called."},{"lineNumber":543,"author":{"gitId":"-"},"content":" await queryWith(nextCursor);"},{"lineNumber":544,"author":{"gitId":"-"},"content":" });"},{"lineNumber":545,"author":{"gitId":"-"},"content":" }"},{"lineNumber":546,"author":{"gitId":"-"},"content":""},{"lineNumber":547,"author":{"gitId":"-"},"content":" queryWith(null);"},{"lineNumber":548,"author":{"gitId":"-"},"content":""},{"lineNumber":549,"author":{"gitId":"-"},"content":" return behaviorSubject.asObservable();"},{"lineNumber":550,"author":{"gitId":"-"},"content":" }"},{"lineNumber":551,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":6,"vigneshsankariyer1234567890":6,"-":531,"cheehongw":8}},{"path":"src/app/core/services/issue.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { BehaviorSubject, EMPTY, Observable, of, Subscription, timer } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { catchError, exhaustMap, finalize, map } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import RestGithubIssueFilter from \u0027../models/github/github-issue-filter.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027../models/github/github-issue.model\u0027;"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Issue, Issues, IssuesFilter } from \u0027../models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../models/phase.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027./phase.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./user.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":13,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Responsible for creating and updating issues, and periodically fetching issues"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * using GitHub."},{"lineNumber":19,"author":{"gitId":"-"},"content":" */"},{"lineNumber":20,"author":{"gitId":"-"},"content":"export class IssueService {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" static readonly POLL_INTERVAL \u003d 5000; // 5 seconds"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" issues: Issues;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" issues$: BehaviorSubject\u003cIssue[]\u003e;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" private sessionId: string;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private issueTeamFilter \u003d \u0027All Teams\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private issuesPollSubscription: Subscription;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /** Whether the IssueService is downloading the data from Github*/"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public isLoading \u003d new BehaviorSubject\u003cboolean\u003e(false);"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor(private githubService: GithubService, private userService: UserService, private phaseService: PhaseService) {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.issues$ \u003d new BehaviorSubject(new Array\u003cIssue\u003e());"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" startPollIssues() {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (this.issuesPollSubscription \u003d\u003d\u003d undefined) {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (this.issues$.getValue().length \u003d\u003d\u003d 0) {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.isLoading.next(true);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.issuesPollSubscription \u003d timer(0, IssueService.POLL_INTERVAL)"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":44,"author":{"gitId":"-"},"content":" exhaustMap(() \u003d\u003e {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return this.reloadAllIssues().pipe("},{"lineNumber":46,"author":{"gitId":"-"},"content":" catchError(() \u003d\u003e {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return EMPTY;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":49,"author":{"gitId":"-"},"content":" finalize(() \u003d\u003e this.isLoading.next(false))"},{"lineNumber":50,"author":{"gitId":"-"},"content":" );"},{"lineNumber":51,"author":{"gitId":"-"},"content":" })"},{"lineNumber":52,"author":{"gitId":"-"},"content":" )"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .subscribe();"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" stopPollIssues() {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (this.issuesPollSubscription) {"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.issuesPollSubscription.unsubscribe();"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.issuesPollSubscription \u003d undefined;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }"},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"-"},"content":" reloadAllIssues() {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this.initializeData();"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" getIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (this.issues \u003d\u003d\u003d undefined) {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return this.getLatestIssue(id);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return of(this.issues[id]);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" getLatestIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this.githubService.fetchIssueGraphql(id).pipe("},{"lineNumber":78,"author":{"gitId":"-"},"content":" map((response: GithubIssue) \u003d\u003e {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.createAndSaveIssueModel(response);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return this.issues[id];"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":82,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return of(this.issues[id]);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" })"},{"lineNumber":85,"author":{"gitId":"-"},"content":" );"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":""},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * This function will update the issue\u0027s state of the application. This function needs to be called whenever a issue is deleted."},{"lineNumber":90,"author":{"gitId":"-"},"content":" */"},{"lineNumber":91,"author":{"gitId":"-"},"content":" deleteFromLocalStore(issueToDelete: Issue) {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" const { [issueToDelete.id]: issueToRemove, ...withoutIssueToRemove } \u003d this.issues;"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.issues \u003d withoutIssueToRemove;"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.issues$.next(Object.values(this.issues));"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * This function will update the issue\u0027s state of the application. This function needs to be called whenever a issue is added/updated."},{"lineNumber":99,"author":{"gitId":"-"},"content":" */"},{"lineNumber":100,"author":{"gitId":"-"},"content":" updateLocalStore(issueToUpdate: Issue) {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.issues \u003d {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" ...this.issues,"},{"lineNumber":103,"author":{"gitId":"-"},"content":" [issueToUpdate.id]: issueToUpdate"},{"lineNumber":104,"author":{"gitId":"-"},"content":" };"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.issues$.next(Object.values(this.issues));"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" reset(resetSessionId: boolean) {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (resetSessionId) {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.sessionId \u003d undefined;"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }"},{"lineNumber":112,"author":{"gitId":"-"},"content":""},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.issues \u003d undefined;"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.issues$.next(new Array\u003cIssue\u003e());"},{"lineNumber":115,"author":{"gitId":"-"},"content":""},{"lineNumber":116,"author":{"gitId":"-"},"content":" this.stopPollIssues();"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }"},{"lineNumber":118,"author":{"gitId":"-"},"content":""},{"lineNumber":119,"author":{"gitId":"-"},"content":" private initializeData(): Observable\u003cIssue[]\u003e {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" let issuesAPICallsByFilter: Observable\u003cArray\u003cGithubIssue\u003e\u003e;"},{"lineNumber":121,"author":{"gitId":"-"},"content":""},{"lineNumber":122,"author":{"gitId":"-"},"content":" switch (IssuesFilter[this.phaseService.currentPhase][this.userService.currentUser.role]) {"},{"lineNumber":123,"author":{"gitId":"-"},"content":" case \u0027FILTER_BY_CREATOR\u0027:"},{"lineNumber":124,"author":{"gitId":"-"},"content":" issuesAPICallsByFilter \u003d this.githubService.fetchIssuesGraphql("},{"lineNumber":125,"author":{"gitId":"-"},"content":" new RestGithubIssueFilter({ creator: this.userService.currentUser.loginId })"},{"lineNumber":126,"author":{"gitId":"-"},"content":" );"},{"lineNumber":127,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":128,"author":{"gitId":"-"},"content":" case \u0027NO_FILTER\u0027:"},{"lineNumber":129,"author":{"gitId":"-"},"content":" issuesAPICallsByFilter \u003d this.githubService.fetchIssuesGraphql(new RestGithubIssueFilter({}));"},{"lineNumber":130,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" case \u0027NO_ACCESS\u0027:"},{"lineNumber":132,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return of([]);"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }"},{"lineNumber":135,"author":{"gitId":"-"},"content":""},{"lineNumber":136,"author":{"gitId":"-"},"content":" const fetchedIssueIds: number[] \u003d [];"},{"lineNumber":137,"author":{"gitId":"-"},"content":""},{"lineNumber":138,"author":{"gitId":"-"},"content":" return issuesAPICallsByFilter.pipe("},{"lineNumber":139,"author":{"gitId":"-"},"content":" map((issuesByFilter: []) \u003d\u003e {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // Take each issue and put it in next in issues$"},{"lineNumber":141,"author":{"gitId":"-"},"content":" for (const issue of issuesByFilter) {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" fetchedIssueIds.push(this.createIssueModel(issue).id);"},{"lineNumber":143,"author":{"gitId":"-"},"content":" this.createAndSaveIssueModel(issue);"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }"},{"lineNumber":145,"author":{"gitId":"-"},"content":""},{"lineNumber":146,"author":{"gitId":"-"},"content":" const outdatedIssueIds: number[] \u003d this.getOutdatedIssueIds(fetchedIssueIds);"},{"lineNumber":147,"author":{"gitId":"-"},"content":" this.deleteIssuesFromLocalStore(outdatedIssueIds);"},{"lineNumber":148,"author":{"gitId":"-"},"content":""},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (this.issues \u003d\u003d\u003d undefined) {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return [];"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":" return Object.values(this.issues);"},{"lineNumber":153,"author":{"gitId":"-"},"content":" })"},{"lineNumber":154,"author":{"gitId":"-"},"content":" );"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }"},{"lineNumber":156,"author":{"gitId":"-"},"content":""},{"lineNumber":157,"author":{"gitId":"-"},"content":" private createAndSaveIssueModel(githubIssue: GithubIssue): boolean {"},{"lineNumber":158,"author":{"gitId":"-"},"content":" const issue \u003d this.createIssueModel(githubIssue);"},{"lineNumber":159,"author":{"gitId":"-"},"content":" this.updateLocalStore(issue);"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }"},{"lineNumber":162,"author":{"gitId":"-"},"content":""},{"lineNumber":163,"author":{"gitId":"-"},"content":" private deleteIssuesFromLocalStore(ids: number[]): void {"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ids.forEach((id: number) \u003d\u003e {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" this.getIssue(id).subscribe((issue) \u003d\u003e this.deleteFromLocalStore(issue));"},{"lineNumber":166,"author":{"gitId":"-"},"content":" });"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }"},{"lineNumber":168,"author":{"gitId":"-"},"content":""},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * Returns an array of outdated issue ids by comparing the ids of the recently"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * fetched issues with the current issue ids in the local store"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */"},{"lineNumber":173,"author":{"gitId":"-"},"content":" private getOutdatedIssueIds(fetchedIssueIds: number[]): number[] {"},{"lineNumber":174,"author":{"gitId":"-"},"content":" /*"},{"lineNumber":175,"author":{"gitId":"-"},"content":" Ignore for first fetch or ignore if there is no fetch result"},{"lineNumber":176,"author":{"gitId":"-"},"content":""},{"lineNumber":177,"author":{"gitId":"-"},"content":" We also have to ignore for no fetch result as the cache might return a"},{"lineNumber":178,"author":{"gitId":"-"},"content":" 304 reponse with no differences in issues, resulting in the fetchIssueIds"},{"lineNumber":179,"author":{"gitId":"-"},"content":" to be empty"},{"lineNumber":180,"author":{"gitId":"-"},"content":" */"},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (this.issues \u003d\u003d\u003d undefined || !fetchedIssueIds.length) {"},{"lineNumber":182,"author":{"gitId":"-"},"content":" return [];"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }"},{"lineNumber":184,"author":{"gitId":"-"},"content":""},{"lineNumber":185,"author":{"gitId":"-"},"content":" const fetchedIssueIdsSet \u003d new Set\u003cnumber\u003e(fetchedIssueIds);"},{"lineNumber":186,"author":{"gitId":"-"},"content":""},{"lineNumber":187,"author":{"gitId":"-"},"content":" const result \u003d Object.keys(this.issues)"},{"lineNumber":188,"author":{"gitId":"-"},"content":" .map((x) \u003d\u003e +x)"},{"lineNumber":189,"author":{"gitId":"-"},"content":" .filter((issueId) \u003d\u003e !fetchedIssueIdsSet.has(issueId));"},{"lineNumber":190,"author":{"gitId":"-"},"content":""},{"lineNumber":191,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }"},{"lineNumber":193,"author":{"gitId":"-"},"content":""},{"lineNumber":194,"author":{"gitId":"-"},"content":" private createIssueModel(githubIssue: GithubIssue): Issue {"},{"lineNumber":195,"author":{"gitId":"-"},"content":" switch (this.phaseService.currentPhase) {"},{"lineNumber":196,"author":{"gitId":"-"},"content":" case Phase.issuesViewer:"},{"lineNumber":197,"author":{"gitId":"-"},"content":" return Issue.createPhaseBugReportingIssue(githubIssue);"},{"lineNumber":198,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }"},{"lineNumber":202,"author":{"gitId":"-"},"content":""},{"lineNumber":203,"author":{"gitId":"-"},"content":" setIssueTeamFilter(filterValue: string) {"},{"lineNumber":204,"author":{"gitId":"-"},"content":" if (filterValue) {"},{"lineNumber":205,"author":{"gitId":"-"},"content":" this.issueTeamFilter \u003d filterValue;"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }"},{"lineNumber":208,"author":{"gitId":"-"},"content":""},{"lineNumber":209,"author":{"gitId":"-"},"content":" setSessionId(sessionId: string) {"},{"lineNumber":210,"author":{"gitId":"-"},"content":" this.sessionId \u003d sessionId;"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }"},{"lineNumber":212,"author":{"gitId":"-"},"content":""},{"lineNumber":213,"author":{"gitId":"-"},"content":" getIssueTeamFilter(): string {"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return this.issueTeamFilter;"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }"},{"lineNumber":216,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":1,"vigneshsankariyer1234567890":1,"-":214}},{"path":"src/app/core/services/label.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { map } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Label } from \u0027../models/label.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"/* The threshold to decide if color is dark or light."},{"lineNumber":8,"author":{"gitId":"-"},"content":"A higher threshold value will result in more colors determined to be \"dark\"."},{"lineNumber":9,"author":{"gitId":"-"},"content":"W3C recommendation is 0.179, but 0.184 is chosen so that some colors (like bright red)"},{"lineNumber":10,"author":{"gitId":"-"},"content":"are considered dark (Github too consider them dark) */"},{"lineNumber":11,"author":{"gitId":"-"},"content":"const COLOR_DARKNESS_THRESHOLD \u003d 0.184;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"const COLOR_BLACK \u003d \u0027000000\u0027; // Dark color for text with light background"},{"lineNumber":14,"author":{"gitId":"-"},"content":"const COLOR_WHITE \u003d \u0027ffffff\u0027; // Light color for text with dark background"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":17,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":18,"author":{"gitId":"-"},"content":"})"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Responsible for retrieval and parsing of label data"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * from the GitHub repository for the WATcher application."},{"lineNumber":23,"author":{"gitId":"-"},"content":" */"},{"lineNumber":24,"author":{"gitId":"-"},"content":"export class LabelService {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" labels: Label[];"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService) {}"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Fetch labels from Github."},{"lineNumber":31,"author":{"gitId":"-"},"content":" */"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public fetchLabels(): Observable\u003cany\u003e {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return this.githubService.fetchAllLabels().pipe("},{"lineNumber":34,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.labels \u003d this.parseLabelData(response);"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return response;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" })"},{"lineNumber":38,"author":{"gitId":"-"},"content":" );"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Parses label information and returns an array of Label objects."},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @param labels - Label Information from API."},{"lineNumber":44,"author":{"gitId":"-"},"content":" */"},{"lineNumber":45,"author":{"gitId":"-"},"content":" parseLabelData(labels: Array\u003cany\u003e): Label[] {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" const labelData: Label[] \u003d [];"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" for (const label of labels) {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" labelData.push(new Label(label));"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return labelData;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns true if the given color is considered \"dark\""},{"lineNumber":56,"author":{"gitId":"-"},"content":" * The color is considered \"dark\" if its luminance is less than COLOR_DARKNESS_THRESHOLD"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param inputColor: the color"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */"},{"lineNumber":59,"author":{"gitId":"-"},"content":" isDarkColor(inputColor: string): boolean {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" const COLOR \u003d inputColor.charAt(0) \u003d\u003d\u003d \u0027#\u0027 ? inputColor.substring(1, 7) : inputColor;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" const R \u003d parseInt(COLOR.substring(0, 2), 16);"},{"lineNumber":62,"author":{"gitId":"-"},"content":" const G \u003d parseInt(COLOR.substring(2, 4), 16);"},{"lineNumber":63,"author":{"gitId":"-"},"content":" const B \u003d parseInt(COLOR.substring(4, 6), 16);"},{"lineNumber":64,"author":{"gitId":"-"},"content":" const RGB \u003d [R / 255, G / 255, B / 255];"},{"lineNumber":65,"author":{"gitId":"-"},"content":" const LINEAR_RGB \u003d RGB.map((col) \u003d\u003e {"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (col \u003c\u003d 0.03928) {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return col / 12.92;"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return Math.pow((col + 0.055) / 1.055, 2.4);"},{"lineNumber":70,"author":{"gitId":"-"},"content":" });"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Calculate the luminance of the color"},{"lineNumber":72,"author":{"gitId":"-"},"content":" const LUMINANCE \u003d 0.2126 * LINEAR_RGB[0] + 0.7152 * LINEAR_RGB[1] + 0.0722 * LINEAR_RGB[2];"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // The color is \"dark\" if the luminance is lower than the threshold"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return LUMINANCE \u003c COLOR_DARKNESS_THRESHOLD;"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":78,"author":{"gitId":"Eclipse-Dominator"},"content":" * Returns a css style for the background and text color of the label"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @param color: the color of the label"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * @return the style with background-color in rgb"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @throws exception if input is an invalid color code"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */"},{"lineNumber":83,"author":{"gitId":"Eclipse-Dominator"},"content":" setLabelStyle(color: string) {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" let textColor: string;"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" textColor \u003d this.isDarkColor(color) ? COLOR_WHITE : COLOR_BLACK;"},{"lineNumber":87,"author":{"gitId":"-"},"content":""},{"lineNumber":88,"author":{"gitId":"-"},"content":" const styles \u003d {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${color}`,"},{"lineNumber":90,"author":{"gitId":"Eclipse-Dominator"},"content":" color: `#${textColor}`"},{"lineNumber":91,"author":{"gitId":"-"},"content":" };"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" return styles;"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":3,"-":92}},{"path":"src/app/core/services/logging.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { downloadAsTextFile } from \u0027../../shared/lib/file-download\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":6,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":7,"author":{"gitId":"-"},"content":"})"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Responsible for logging events and errors while the application is"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * running to ease debugging for WATcher developers and maintainers."},{"lineNumber":12,"author":{"gitId":"-"},"content":" */"},{"lineNumber":13,"author":{"gitId":"-"},"content":"export class LoggingService {"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private logger: Console;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private isInSession \u003d false;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private readonly LOG_KEY \u003d \u0027WATcher-Log\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private readonly LOG_FILE_NAME \u003d \u0027WATcher-log.txt\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public readonly LOG_START_HEADER \u003d `\u003d\u003d\u003d\u003d\u003d\u003d New WATcher v${AppConfig.version} Session Log \u003d\u003d\u003d\u003d\u003d\u003d`;"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public readonly LOG_COUNT_LIMIT \u003d 4;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public readonly SESSION_LOG_SEPARATOR \u003d \u0027\\n\u0027.repeat(2); // More new-lines added for clarity."},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor() {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" this.logger \u003d console;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" this.startSession();"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.isInSession \u003d false;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Configures loggging Session if Logging Service is not"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * in session."},{"lineNumber":34,"author":{"gitId":"-"},"content":" */"},{"lineNumber":35,"author":{"gitId":"-"},"content":" startSession() {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // Prevents the OAuth Pop-up window from being able to"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // start a session."},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (window.opener \u0026\u0026 window.opener !\u003d\u003d window) {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (!this.isInSession) {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.isInSession \u003d true;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.initializeLogCache();"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" private initializeLogCache() {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.setCachedLog(this.getTrimmedLogCache(this.getCachedLog(), this.LOG_COUNT_LIMIT));"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Trims the existing Log in the browser\u0027s cache to a select number"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * of Sessions if necessary."},{"lineNumber":54,"author":{"gitId":"-"},"content":" * @param sessionCount The number of Session Logs to preserve in the cache"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private getTrimmedLogCache(currentLog: string, sessionCount: number): string {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" const currentDateTime \u003d new Date().toLocaleString();"},{"lineNumber":58,"author":{"gitId":"-"},"content":" const logHeaderWithDateTime \u003d `${this.LOG_START_HEADER}\\n${currentDateTime}`;"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Check if Trimming is Necessary"},{"lineNumber":61,"author":{"gitId":"-"},"content":" const numberOfSessions: number \u003d"},{"lineNumber":62,"author":{"gitId":"-"},"content":" currentLog \u003d\u003d null"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ? 0"},{"lineNumber":64,"author":{"gitId":"-"},"content":" : currentLog.split(\u0027\\n\u0027).filter((currentLogLine: string) \u003d\u003e currentLogLine.includes(this.LOG_START_HEADER)).length;"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (numberOfSessions \u003d\u003d\u003d 0) {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return logHeaderWithDateTime;"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (numberOfSessions \u003c sessionCount) {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return `${currentLog}${this.SESSION_LOG_SEPARATOR}${logHeaderWithDateTime}`;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" const separatedSessionLogs: string[] \u003d currentLog"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .split(`${this.LOG_START_HEADER}`)"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .filter((line: string) \u003d\u003e !!line)"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .map((line: string) \u003d\u003e `${this.LOG_START_HEADER}\\n${line.trim()}`);"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" separatedSessionLogs.splice(0, separatedSessionLogs.length - sessionCount + 1);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" separatedSessionLogs.push(`${logHeaderWithDateTime}`);"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":" return separatedSessionLogs.join(this.SESSION_LOG_SEPARATOR);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" getCachedLog(): string {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return localStorage.getItem(this.LOG_KEY);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" private setCachedLog(updatedLog: string): void {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" localStorage.setItem(this.LOG_KEY, updatedLog);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" private updateLog(...updatedLog: any[]): void {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.setCachedLog(`${this.getCachedLog()}\\n${updatedLog.toString()}`);"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" exportLogFile() {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" const log: string \u003d this.getCachedLog();"},{"lineNumber":99,"author":{"gitId":"-"},"content":" downloadAsTextFile(this.LOG_FILE_NAME, log);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" info(...params: any[]) {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" this.updateLog(params);"},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.logger.info(params);"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }"},{"lineNumber":106,"author":{"gitId":"-"},"content":""},{"lineNumber":107,"author":{"gitId":"-"},"content":" error(...params: any[]) {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" this.updateLog(params);"},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.logger.error(params);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":" warn(...params: any[]) {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.updateLog(params);"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.logger.warn(params);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":" debug(...params: any[]) {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (AppConfig.production) {"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // Log file will not be updated to keep log messages short"},{"lineNumber":122,"author":{"gitId":"-"},"content":" this.logger.debug(params);"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":122}},{"path":"src/app/core/services/milestone.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { map } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Milestone } from \u0027../models/milestone.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":8,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":9,"author":{"gitId":"-"},"content":"})"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Responsible for retrieval and parsing and syncing of milestone data"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * from the GitHub repository for the WATcher application."},{"lineNumber":14,"author":{"gitId":"-"},"content":" */"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class MilestoneService {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" milestones: Milestone[];"},{"lineNumber":17,"author":{"gitId":"-"},"content":" hasNoMilestones: boolean;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService) {}"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Fetch all milestones from github."},{"lineNumber":23,"author":{"gitId":"-"},"content":" */"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public fetchMilestones(): Observable\u003cany\u003e {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return this.githubService.fetchAllMilestones().pipe("},{"lineNumber":26,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.milestones \u003d this.parseMilestoneData(response);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.hasNoMilestones \u003d response.length \u003d\u003d\u003d 0;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return response;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" })"},{"lineNumber":31,"author":{"gitId":"-"},"content":" );"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses milestone information and returns an array of Milestone objects."},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param milestones - Milestone Information from API."},{"lineNumber":37,"author":{"gitId":"-"},"content":" */"},{"lineNumber":38,"author":{"gitId":"-"},"content":" parseMilestoneData(milestones: Array\u003cany\u003e): Milestone[] {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" const milestoneData: Milestone[] \u003d [];"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" for (const milestone of milestones) {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" milestoneData.push(new Milestone(milestone));"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"Echomo-Xinyu"},"content":" milestoneData.sort((a: Milestone, b: Milestone) \u003d\u003e a.title.localeCompare(b.title));"},{"lineNumber":45,"author":{"gitId":"Echomo-Xinyu"},"content":""},{"lineNumber":46,"author":{"gitId":"Echomo-Xinyu"},"content":" // add default milestone for untracked issues/PRs at the end"},{"lineNumber":47,"author":{"gitId":"Echomo-Xinyu"},"content":" milestoneData.push(Milestone.DefaultMilestone);"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return milestoneData;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":4,"-":46}},{"path":"src/app/core/services/phase.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { BehaviorSubject, Observable, Subject } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../models/phase.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Repo } from \u0027../models/repo.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { SessionData } from \u0027../models/session.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { RepoUrlCacheService } from \u0027./repo-url-cache.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"export const SESSION_AVALIABILITY_FIX_FAILED \u003d \u0027Session Availability Fix failed.\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The title of each phase that appears in the header bar."},{"lineNumber":14,"author":{"gitId":"-"},"content":" */"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export const PhaseDescription \u003d {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" [Phase.issuesViewer]: \u0027Issues Dashboard\u0027,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" [Phase.activityDashboard]: \u0027Activity Dashboard\u0027"},{"lineNumber":18,"author":{"gitId":"-"},"content":"};"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * All data of the session."},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Add accessible phases here."},{"lineNumber":23,"author":{"gitId":"-"},"content":" */"},{"lineNumber":24,"author":{"gitId":"-"},"content":"export const STARTING_SESSION_DATA: SessionData \u003d {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" sessionRepo: ["},{"lineNumber":26,"author":{"gitId":"-"},"content":" { phase: Phase.issuesViewer, repos: [] }"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // { phase: Phase.activityDashboard, repos: [] }"},{"lineNumber":28,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":29,"author":{"gitId":"-"},"content":"};"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":"export const STARTING_PHASE \u003d Phase.issuesViewer;"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":34,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":35,"author":{"gitId":"-"},"content":"})"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Responsible for managing the current selected feature of WATcher as well as the"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * current session data and repository details related to the session."},{"lineNumber":40,"author":{"gitId":"-"},"content":" *"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * A phase is terminology from CATcher, in WATcher it refers to a feature of WATcher."},{"lineNumber":42,"author":{"gitId":"-"},"content":" */"},{"lineNumber":43,"author":{"gitId":"-"},"content":"export class PhaseService {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public currentPhase: Phase \u003d STARTING_PHASE;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public currentRepo: Repo; // current or main repository of current phase"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public otherRepos: Repo[]; // more repositories relevant to this phase"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"cheehongw"},"content":" /**"},{"lineNumber":49,"author":{"gitId":"cheehongw"},"content":" * Expose an observable to track changes to currentRepo"},{"lineNumber":50,"author":{"gitId":"cheehongw"},"content":" *"},{"lineNumber":51,"author":{"gitId":"cheehongw"},"content":" * TODO - replace all references to currentRepo to have"},{"lineNumber":52,"author":{"gitId":"cheehongw"},"content":" * dependencies subscribe to this observable?"},{"lineNumber":53,"author":{"gitId":"cheehongw"},"content":" */"},{"lineNumber":54,"author":{"gitId":"cheehongw"},"content":" public repoChanged$: Subject\u003cRepo | null\u003e \u003d new Subject();"},{"lineNumber":55,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" /** Whether the PhaseService is changing the repository */"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public isChangingRepo \u003d new BehaviorSubject\u003cboolean\u003e(false);"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":" public sessionData \u003d STARTING_SESSION_DATA; // stores session data for the session"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService, private repoUrlCacheService: RepoUrlCacheService, public logger: LoggingService) {}"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Sets the current main repository and additional repos if any."},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Updates session data in Phase Service and local storage."},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Updates Github Service with current repository."},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param repo Main current repository"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param repos Additional repositories"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */"},{"lineNumber":70,"author":{"gitId":"-"},"content":" setRepository(repo: Repo, repos?: Repo[]): void {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.currentRepo \u003d repo;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.otherRepos \u003d repos ? repos : [];"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.sessionData.sessionRepo.find((x) \u003d\u003e x.phase \u003d\u003d\u003d this.currentPhase).repos \u003d this.getRepository();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.githubService.storePhaseDetails(this.currentRepo.owner, this.currentRepo.name);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" localStorage.setItem(\u0027sessionData\u0027, JSON.stringify(this.sessionData));"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Changes current respository to a new repository."},{"lineNumber":80,"author":{"gitId":"-"},"content":" * @param repo New current repository"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */"},{"lineNumber":82,"author":{"gitId":"-"},"content":" private changeCurrentRepository(repo: Repo): void {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.logger.info(`PhaseService: Changing current repository to \u0027${repo}\u0027`);"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (this.currentPhase \u003d\u003d\u003d Phase.issuesViewer) {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /** Adds past repositories to phase */"},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.otherRepos.push(this.currentRepo);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":" this.setRepository(repo, this.otherRepos);"},{"lineNumber":90,"author":{"gitId":"-"},"content":""},{"lineNumber":91,"author":{"gitId":"-"},"content":" this.repoUrlCacheService.cache(repo.toString());"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"cheehongw"},"content":" this.repoChanged$.next(repo);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }"},{"lineNumber":95,"author":{"gitId":"-"},"content":""},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Change repository if a valid repository is provided"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @param repo New repository"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */"},{"lineNumber":100,"author":{"gitId":"-"},"content":" async changeRepositoryIfValid(repo: Repo) {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.isChangingRepo.next(true);"},{"lineNumber":102,"author":{"gitId":"-"},"content":""},{"lineNumber":103,"author":{"gitId":"-"},"content":" const isValidRepository \u003d await this.githubService.isRepositoryPresent(repo.owner, repo.name).toPromise();"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!isValidRepository) {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.isChangingRepo.next(false);"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new Error(\u0027Invalid repository name. Please check your organisation and repository name.\u0027);"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.changeCurrentRepository(repo);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.isChangingRepo.next(false);"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }"},{"lineNumber":112,"author":{"gitId":"-"},"content":""},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Returns the full repository array of the current feature."},{"lineNumber":115,"author":{"gitId":"-"},"content":" */"},{"lineNumber":116,"author":{"gitId":"-"},"content":" getRepository(): Repo[] {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return [this.currentRepo].concat(this.otherRepos);"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }"},{"lineNumber":119,"author":{"gitId":"-"},"content":""},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Retrieves the repository url from local storage and sets to current repository."},{"lineNumber":122,"author":{"gitId":"-"},"content":" */"},{"lineNumber":123,"author":{"gitId":"-"},"content":" initializeCurrentRepository() {"},{"lineNumber":124,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const org \u003d window.localStorage.getItem(\u0027org\u0027);"},{"lineNumber":125,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const repoName \u003d window.localStorage.getItem(\u0027dataRepo\u0027);"},{"lineNumber":126,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`Phase Service: received initial org (${org}) and initial name (${repoName})`);"},{"lineNumber":127,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let repo: Repo;"},{"lineNumber":128,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (!org || !repoName) {"},{"lineNumber":129,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" repo \u003d Repo.ofEmptyRepo();"},{"lineNumber":130,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" } else {"},{"lineNumber":131,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" repo \u003d new Repo(org, repoName);"},{"lineNumber":132,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":133,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`PhaseService: Repo is ${repo}`);"},{"lineNumber":134,"author":{"gitId":"-"},"content":" this.setRepository(repo);"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Checks if the necessary repository is available. TODO: Future to use to verify setRepository."},{"lineNumber":139,"author":{"gitId":"-"},"content":" */"},{"lineNumber":140,"author":{"gitId":"-"},"content":" verifySessionAvailability(): Observable\u003cboolean\u003e {"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return this.githubService.isRepositoryPresent(this.currentRepo.owner, this.currentRepo.name);"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }"},{"lineNumber":143,"author":{"gitId":"-"},"content":""},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Changes phase and updates Phase Service\u0027s properties."},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param phase New phase"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */"},{"lineNumber":148,"author":{"gitId":"-"},"content":" changePhase(phase: Phase) {"},{"lineNumber":149,"author":{"gitId":"-"},"content":" this.currentPhase \u003d phase;"},{"lineNumber":150,"author":{"gitId":"-"},"content":""},{"lineNumber":151,"author":{"gitId":"-"},"content":" // For now, assumes repository stays the same"},{"lineNumber":152,"author":{"gitId":"-"},"content":" this.githubService.storePhaseDetails(this.currentRepo.owner, this.currentRepo.name);"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }"},{"lineNumber":154,"author":{"gitId":"-"},"content":""},{"lineNumber":155,"author":{"gitId":"-"},"content":" public getCurrentRepositoryURL() {"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return this.currentRepo.owner.concat(\u0027/\u0027).concat(this.currentRepo.name);"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }"},{"lineNumber":158,"author":{"gitId":"-"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" this.currentPhase \u003d STARTING_PHASE;"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }"},{"lineNumber":162,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":10,"-":143,"cheehongw":9}},{"path":"src/app/core/services/session-fix-confirmation/session-fix-confirmation.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"export interface RepositoryData {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" user: string;"},{"lineNumber":6,"author":{"gitId":"-"},"content":" repoName: string;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":10,"author":{"gitId":"-"},"content":" selector: \u0027app-session-fix-confirmation\u0027,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" templateUrl: \u0027./session-fix-confirmation.component.html\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./session-fix-confirmation.component.css\u0027]"},{"lineNumber":13,"author":{"gitId":"-"},"content":"})"},{"lineNumber":14,"author":{"gitId":"-"},"content":"export class SessionFixConfirmationComponent implements OnInit {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" constructor(public dialogRef: MatDialogRef\u003cSessionFixConfirmationComponent\u003e, @Inject(MAT_DIALOG_DATA) public data: RepositoryData) {}"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":17}},{"path":"src/app/core/services/user.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { map } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../models/github-user.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { User, UserRole } from \u0027../models/user.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":10,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":11,"author":{"gitId":"-"},"content":"})"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Responsible for creation of users and teams within the WATcher application."},{"lineNumber":15,"author":{"gitId":"-"},"content":" */"},{"lineNumber":16,"author":{"gitId":"-"},"content":"export class UserService {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public currentUser: User;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"cheehongw"},"content":" constructor(private githubService: GithubService, private logger: LoggingService) {}"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Get the authenticated user if it exist."},{"lineNumber":23,"author":{"gitId":"-"},"content":" */"},{"lineNumber":24,"author":{"gitId":"-"},"content":" getAuthenticatedUser(): Observable\u003cGithubUser\u003e {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return this.githubService.fetchAuthenticatedUser().pipe("},{"lineNumber":26,"author":{"gitId":"-"},"content":" map((data: GithubUser) \u003d\u003e {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return data;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" })"},{"lineNumber":29,"author":{"gitId":"-"},"content":" );"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" createUserModel(userLoginId: string): Observable\u003cUser\u003e {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.currentUser \u003d \u003cUser\u003e{ loginId: userLoginId, role: UserRole.Student };"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // to refactor"},{"lineNumber":35,"author":{"gitId":"-"},"content":" const o \u003d new Observable\u003cUser\u003e((s) \u003d\u003e {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" s.next(this.currentUser);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" s.complete();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" });"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return o;"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" this.logger.info(\u0027UserService: Clearing current user\u0027);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.currentUser \u003d undefined;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":1,"-":43,"cheehongw":2}},{"path":"src/app/issues-viewer/card-view/card-view.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"card-column\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"column-header\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-card\u003e"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cmat-card-header [ngStyle]\u003d\"{ height: \u002740px\u0027 }\"\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cdiv"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mat-card-avatar"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" *ngIf\u003d\"this.assignee\""},{"lineNumber":8,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"{"},{"lineNumber":9,"author":{"gitId":"-"},"content":" background: \u0027url(\u0027 + this.assignee.avatar_url + \u0027)\u0027,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u0027background-size\u0027: \u002740px\u0027"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }\""},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003e\u003c/div\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmat-card-title\u003e"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" {{ this.assignee !\u003d\u003d undefined ? this.assignee.login : \u0027Unassigned Issues\u0027 }}"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/mat-card-title\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row-count\"\u003e{{ this.issues.count }}\u003c/div\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/mat-card-header\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/mat-card\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"scrollable-container-wrapper\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"scrollable-container\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"issue-pr-cards\" *ngFor\u003d\"let issue of this.issues$ | async; index as i\"\u003e"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003capp-issue-pr-card [issue]\u003d\"issue\" [dropdownFilter]\u003d\"issues.dropdownFilter\"\u003e\u003c/app-issue-pr-card\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cmat-card class\u003d\"loading-spinner\" *ngIf\u003d\"this.issues.isLoading$ | async\"\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cmat-progress-spinner color\u003d\"primary\" mode\u003d\"indeterminate\" diameter\u003d\"50\" strokeWidth\u003d\"5\"\u003e\u003c/mat-progress-spinner\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/mat-card\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cmat-paginator [pageSize]\u003d\"20\" [pageSizeOptions]\u003d\"[10, 20, 50]\"\u003e\u003c/mat-paginator\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"Eclipse-Dominator":1,"vigneshsankariyer1234567890":3,"-":28}},{"path":"src/app/issues-viewer/card-view/card-view.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, Input, OnDestroy, OnInit, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":3,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":"import { FilterableComponent, FilterableSource } from \u0027../../shared/issue-tables/filterableTypes\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { IssuesDataTable } from \u0027../../shared/issue-tables/IssuesDataTable\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":12,"author":{"gitId":"-"},"content":" selector: \u0027app-card-view\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" templateUrl: \u0027./card-view.component.html\u0027,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./card-view.component.css\u0027]"},{"lineNumber":15,"author":{"gitId":"-"},"content":"})"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Displays issues as Cards."},{"lineNumber":19,"author":{"gitId":"-"},"content":" */"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":"export class CardViewComponent implements OnInit, AfterViewInit, OnDestroy, FilterableComponent {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Input() headers: string[];"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Input() assignee?: GithubUser \u003d undefined;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Input() filters?: any \u003d undefined;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Input() sort?: MatSort \u003d undefined;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" issues: IssuesDataTable;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" issues$: Observable\u003cIssue[]\u003e;"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" constructor(public issueService: IssueService) {}"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.issues \u003d new IssuesDataTable(this.issueService, this.sort, this.paginator, this.headers, this.assignee, this.filters);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.issues.loadIssues();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.issues$ \u003d this.issues.connect();"},{"lineNumber":41,"author":{"gitId":"-"},"content":" });"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.issues.disconnect();"},{"lineNumber":47,"author":{"gitId":"-"},"content":" });"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":" retrieveFilterable(): FilterableSource {"},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" return this.issues;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":2,"Eclipse-Dominator":5,"-":46}},{"path":"src/app/issues-viewer/issues-viewer.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".issue-table {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" width: 25%;"},{"lineNumber":3,"author":{"gitId":"-"},"content":" min-width: 200px;"},{"lineNumber":4,"author":{"gitId":"-"},"content":" max-width: 400px;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":".dropdown-filters .mat-form-field {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" margin: 8px;"},{"lineNumber":9,"author":{"gitId":"-"},"content":" font-size: 14px;"},{"lineNumber":10,"author":{"gitId":"-"},"content":" max-width: 20%;"},{"lineNumber":11,"author":{"gitId":"-"},"content":" width: 25%; /* depends on number of filters*/"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":".search-bar {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" width: 90%;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":".dropdown-filters {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":".label-filter-grid-tile {"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 100%;"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":".submit-button {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" margin-left: 8px;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":".switch-repo-tile {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" background-color: lightblue;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":".wrapper {"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" display: flex;"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" overflow-x: auto;"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" /* white-space: nowrap; */"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"}"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":".loading-spinner {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" display: flex;"},{"lineNumber":42,"author":{"gitId":"-"},"content":" justify-content: center;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" align-items: center;"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":1,"vigneshsankariyer1234567890":6,"-":37}},{"path":"src/app/issues-viewer/issues-viewer.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv\u003e"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cdiv class\u003d\"loading-spinner\" *ngIf\u003d\"this.phaseService.isChangingRepo | async; else elseBlock\"\u003e"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-progress-spinner color\u003d\"primary\" mode\u003d\"indeterminate\" diameter\u003d\"50\" strokeWidth\u003d\"5\"\u003e \u003c/mat-progress-spinner\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cng-template #elseBlock\u003e"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003capp-filter-bar [views$]\u003d\"views\" #filterbar\u003e\u003c/app-filter-bar\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cdiv class\u003d\"wrapper\"\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003capp-card-view"},{"lineNumber":11,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let assignee of assignees\""},{"lineNumber":12,"author":{"gitId":"-"},"content":" class\u003d\"issue-table\""},{"lineNumber":13,"author":{"gitId":"-"},"content":" [assignee]\u003d\"assignee\""},{"lineNumber":14,"author":{"gitId":"-"},"content":" [headers]\u003d\"this.displayedColumns\""},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" [sort]\u003d\"filterbar.matSort\""},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003e\u003c/app-card-view\u003e"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003capp-card-view class\u003d\"issue-table\" [headers]\u003d\"this.displayedColumns\" [sort]\u003d\"filterbar.matSort\"\u003e\u003c/app-card-view\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/ng-template\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"Eclipse-Dominator":5,"vigneshsankariyer1234567890":1,"-":14}},{"path":"src/app/issues-viewer/issues-viewer.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { BehaviorSubject, of, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../core/models/github-user.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Repo } from \u0027../core/models/repo.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../core/services/github.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../core/services/issue.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { MilestoneService } from \u0027../core/services/milestone.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../core/services/phase.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027../shared/issue-tables/issue-tables-columns\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { CardViewComponent } from \u0027./card-view/card-view.component\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":13,"author":{"gitId":"-"},"content":" selector: \u0027app-issues-viewer\u0027,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" templateUrl: \u0027./issues-viewer.component.html\u0027,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./issues-viewer.component.css\u0027]"},{"lineNumber":16,"author":{"gitId":"-"},"content":"})"},{"lineNumber":17,"author":{"gitId":"-"},"content":"export class IssuesViewerComponent implements OnInit, AfterViewInit, OnDestroy {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" readonly displayedColumns \u003d [TABLE_COLUMNS.ID, TABLE_COLUMNS.TITLE, TABLE_COLUMNS.ASSIGNEE, TABLE_COLUMNS.LABEL];"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"cheehongw"},"content":" /** Observes for any change in repo*/"},{"lineNumber":21,"author":{"gitId":"cheehongw"},"content":" repoChangeSubscription: Subscription;"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Observes for any change in the cardviews */"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" viewChange: Subscription;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" /** Users to show as columns */"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assignees: GithubUser[];"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" @ViewChildren(CardViewComponent) cardViews: QueryList\u003cCardViewComponent\u003e;"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" views \u003d new BehaviorSubject\u003cQueryList\u003cCardViewComponent\u003e\u003e(undefined);"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":34,"author":{"gitId":"-"},"content":" public phaseService: PhaseService,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public githubService: GithubService,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public issueService: IssueService,"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" public milestoneService: MilestoneService"},{"lineNumber":38,"author":{"gitId":"cheehongw"},"content":" ) {"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" this.repoChangeSubscription \u003d this.phaseService.repoChanged$.subscribe((newRepo) \u003d\u003e {"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" this.issueService.reset(false);"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" this.initialize();"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":43,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.initialize();"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":" this.viewChange \u003d this.cardViews.changes.subscribe((x) \u003d\u003e this.views.next(x));"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":54,"author":{"gitId":"cheehongw"},"content":" this.repoChangeSubscription.unsubscribe();"},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":" this.viewChange.unsubscribe();"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Fetch and initialize all information from repository to populate Issue Dashboard."},{"lineNumber":60,"author":{"gitId":"-"},"content":" */"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private initialize() {"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.checkIfValidRepository().subscribe((isValidRepository) \u003d\u003e {"},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (!isValidRepository) {"},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" throw new Error(\u0027Invalid repository name. Please provide repository name in the format Org/Repository.\u0027);"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Fetch assignees"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.assignees \u003d [];"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.githubService.getUsersAssignable().subscribe((x) \u003d\u003e (this.assignees \u003d x));"},{"lineNumber":72,"author":{"gitId":"-"},"content":""},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Fetch issues"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.issueService.reloadAllIssues();"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" /**"},{"lineNumber":78,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" * Checks if our current repository available on phase service is indeed a valid repository"},{"lineNumber":79,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" */"},{"lineNumber":80,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private checkIfValidRepository() {"},{"lineNumber":81,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const currentRepo \u003d this.phaseService.currentRepo;"},{"lineNumber":82,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":83,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (Repo.isInvalidRepoName(currentRepo)) {"},{"lineNumber":84,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return of(false);"},{"lineNumber":85,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this.githubService.isRepositoryPresent(currentRepo.owner, currentRepo.name);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":10,"vigneshsankariyer1234567890":18,"-":56,"cheehongw":5}},{"path":"src/app/issues-viewer/issues-viewer.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { FilterBarModule } from \u0027../shared/filter-bar/filter-bar.module\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { IssuesPrCardModule } from \u0027../shared/issue-pr-card/issue-pr-card.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../shared/shared.module\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { CardViewComponent } from \u0027./card-view/card-view.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { IssuesViewerRoutingModule } from \u0027./issues-viewer-routing.module\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssuesViewerComponent } from \u0027./issues-viewer.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" imports: [FilterBarModule, IssuesViewerRoutingModule, IssuesPrCardModule, SharedModule],"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" declarations: [IssuesViewerComponent, CardViewComponent],"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" exports: [IssuesViewerComponent, CardViewComponent]"},{"lineNumber":13,"author":{"gitId":"-"},"content":"})"},{"lineNumber":14,"author":{"gitId":"-"},"content":"export class IssuesViewerModule {}"}],"authorContributionMap":{"Eclipse-Dominator":5,"-":9}},{"path":"src/app/shared/error-toasters/error-toaster.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { CommonModule } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MaterialModule } from \u0027../material.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { FormErrorComponent } from \u0027./form-error/form-error.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GeneralMessageErrorComponent } from \u0027./general-message-error/general-message-error.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { InvalidCredentialsErrorComponent } from \u0027./invalid-credentials-error/invalid-credentials-error.component\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { ToasterComponent } from \u0027./toaster/toaster.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":10,"author":{"gitId":"-"},"content":" imports: [CommonModule, MaterialModule],"},{"lineNumber":11,"author":{"gitId":"-"},"content":" declarations: [GeneralMessageErrorComponent, FormErrorComponent, InvalidCredentialsErrorComponent, ToasterComponent],"},{"lineNumber":12,"author":{"gitId":"Echomo-Xinyu"},"content":" exports: [GeneralMessageErrorComponent, FormErrorComponent, InvalidCredentialsErrorComponent]"},{"lineNumber":13,"author":{"gitId":"-"},"content":"})"},{"lineNumber":14,"author":{"gitId":"-"},"content":"export class ErrorToasterModule {}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":13}},{"path":"src/app/shared/error-toasters/form-error/form-error.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MAT_SNACK_BAR_DATA } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"-"},"content":" selector: \u0027app-form-error\u0027,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" templateUrl: \u0027./form-error.component.html\u0027"},{"lineNumber":7,"author":{"gitId":"-"},"content":"})"},{"lineNumber":8,"author":{"gitId":"-"},"content":"export class FormErrorComponent {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) {}"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":9}},{"path":"src/app/shared/error-toasters/general-message-error/general-message-error.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MAT_SNACK_BAR_DATA } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"-"},"content":" selector: \u0027app-general-message-error\u0027,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" templateUrl: \u0027./general-message-error.component.html\u0027"},{"lineNumber":7,"author":{"gitId":"-"},"content":"})"},{"lineNumber":8,"author":{"gitId":"-"},"content":"export class GeneralMessageErrorComponent {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) {}"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":9}},{"path":"src/app/shared/error-toasters/invalid-credentials-error/invalid-credentials-error.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSnackBarRef, MAT_SNACK_BAR_DATA } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"-"},"content":" selector: \u0027app-form-error\u0027,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" templateUrl: \u0027./invalid-credentials-error.component.html\u0027"},{"lineNumber":7,"author":{"gitId":"-"},"content":"})"},{"lineNumber":8,"author":{"gitId":"-"},"content":"export class InvalidCredentialsErrorComponent {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" constructor(public snackBarRef: MatSnackBarRef\u003cInvalidCredentialsErrorComponent\u003e, @Inject(MAT_SNACK_BAR_DATA) public data: any) {}"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":9}},{"path":"src/app/shared/error-toasters/toaster/toaster.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSnackBarRef } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"-"},"content":" selector: \u0027app-toaster\u0027,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" templateUrl: \u0027./toaster.component.html\u0027,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./toaster.component.css\u0027]"},{"lineNumber":8,"author":{"gitId":"-"},"content":"})"},{"lineNumber":9,"author":{"gitId":"-"},"content":"export class ToasterComponent implements OnInit {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" constructor(public snackBarRef: MatSnackBarRef\u003cToasterComponent\u003e) {}"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":12}},{"path":"src/app/shared/filter-bar/filter-bar.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":".dropdown-filters .mat-form-field {"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 8px;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 14px;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" max-width: 20%;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 25%; /* depends on number of filters*/"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":".search-bar {"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 90%;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":".dropdown-filters {"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 100%;"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":".label-filter-grid-tile {"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 100%;"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":".submit-button {"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-left: 8px;"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":22}},{"path":"src/app/shared/filter-bar/filter-bar.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003cmat-grid-list cols\u003d\"7\" rowHeight\u003d\"80px\"\u003e"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-grid-tile colspan\u003d\"3\"\u003e"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-form-field class\u003d\"search-bar\"\u003e"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cinput matInput (keyup)\u003d\"applyFilter($event.target.value)\" placeholder\u003d\"Search\" /\u003e"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-grid-tile colspan\u003d\"3\"\u003e"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cdiv class\u003d\"dropdown-filters\"\u003e"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-form-field appearance\u003d\"standard\"\u003e"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-label\u003eStatus\u003c/mat-label\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cmat-select [(value)]\u003d\"this.dropdownFilter.status\" (selectionChange)\u003d\"updateTypePairing(); applyDropdownFilter()\"\u003e"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"all\"\u003eAll\u003c/mat-option\u003e"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"open\"\u003eOpen\u003c/mat-option\u003e"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"closed\"\u003eClosed\u003c/mat-option\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"merged\" *ngIf\u003d\"isNotFilterIssue()\"\u003eMerged\u003c/mat-option\u003e"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-select\u003e"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-form-field appearance\u003d\"standard\"\u003e"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-label\u003eType\u003c/mat-label\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cmat-select [(value)]\u003d\"this.dropdownFilter.type\" (selectionChange)\u003d\"updateStatusPairing(); applyDropdownFilter()\"\u003e"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"all\"\u003eAll\u003c/mat-option\u003e"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"issue\"\u003eIssue\u003c/mat-option\u003e"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"pullrequest\"\u003ePull Request\u003c/mat-option\u003e"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-select\u003e"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-form-field appearance\u003d\"standard\" matSort [matSortDisableClear]\u003d\"true\"\u003e"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-label\u003eSort\u003c/mat-label\u003e"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-select [(value)]\u003d\"this.dropdownFilter.sort\" (selectionChange)\u003d\"applyDropdownFilter()\"\u003e"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"id\"\u003e"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cspan mat-sort-header\u003d\"id\"\u003eID\u003c/span\u003e"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-option\u003e"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"title\"\u003e"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cspan mat-sort-header\u003d\"title\"\u003eTitle\u003c/span\u003e"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-option\u003e"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"date\"\u003e"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cspan mat-sort-header\u003d\"date\"\u003eDate Updated\u003c/span\u003e"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-option\u003e"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-select\u003e"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-form-field appearance\u003d\"standard\"\u003e"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-label\u003eMilestone\u003c/mat-label\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cmat-select"},{"lineNumber":44,"author":{"gitId":"-"},"content":" #milestoneSelectorRef"},{"lineNumber":45,"author":{"gitId":"-"},"content":" [(value)]\u003d\"this.dropdownFilter.milestones\""},{"lineNumber":46,"author":{"gitId":"-"},"content":" (selectionChange)\u003d\"applyDropdownFilter()\""},{"lineNumber":47,"author":{"gitId":"-"},"content":" [disabled]\u003d\"this.milestoneService.hasNoMilestones\""},{"lineNumber":48,"author":{"gitId":"-"},"content":" multiple"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cmat-select-trigger *ngIf\u003d\"this.milestoneService.hasNoMilestones\"\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cspan\u003eNo Milestones\u003c/span\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/mat-select-trigger\u003e"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option *ngFor\u003d\"let milestone of this.milestoneService.milestones\" [value]\u003d\"milestone.number\"\u003e"},{"lineNumber":54,"author":{"gitId":"Eclipse-Dominator"},"content":" {{ milestone.title }}"},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-option\u003e"},{"lineNumber":56,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-select\u003e"},{"lineNumber":57,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":58,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/div\u003e"},{"lineNumber":59,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":60,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":61,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-grid-tile class\u003d\"label-filter-grid-tile\" colspan\u003d\"1\"\u003e"},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003capp-label-filter-bar [selectedLabels]\u003d\"this.labelFilter$\" [hiddenLabels]\u003d\"this.hiddenLabels$\"\u003e\u003c/app-label-filter-bar\u003e"},{"lineNumber":63,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":64,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003c/mat-grid-list\u003e"}],"authorContributionMap":{"Eclipse-Dominator":51,"-":13}},{"path":"src/app/shared/filter-bar/filter-bar.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { AfterViewInit, Component, Input, OnDestroy, OnInit, QueryList, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { MatSelect } from \u0027@angular/material/select\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"import { BehaviorSubject, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":"import { MilestoneService } from \u0027../../core/services/milestone.service\u0027;"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":"import { PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":"import { DEFAULT_DROPDOWN_FILTER, DropdownFilter } from \u0027../issue-tables/dropdownfilter\u0027;"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":"import { FilterableComponent } from \u0027../issue-tables/filterableTypes\u0027;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LabelFilterBarComponent } from \u0027./label-filter-bar/label-filter-bar.component\u0027;"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"/**"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" * This component is abstracted out filterbar used by both detailed-viewer page"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" * and Issues-viewer"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":"@Component({"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" selector: \u0027app-filter-bar\u0027,"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" templateUrl: \u0027./filter-bar.component.html\u0027,"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" styleUrls: [\u0027./filter-bar.component.css\u0027]"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":"})"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":"export class FilterBarComponent implements OnInit, AfterViewInit, OnDestroy {"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() views$: BehaviorSubject\u003cQueryList\u003cFilterableComponent\u003e\u003e;"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" repoChangeSubscription: Subscription;"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Selected dropdown filter value */"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" dropdownFilter: DropdownFilter \u003d DEFAULT_DROPDOWN_FILTER;"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Selected label filters, instance passed into LabelChipBar to populate */"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" labelFilter$ \u003d new BehaviorSubject\u003cstring[]\u003e([]);"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" labelFilterSubscription: Subscription;"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Selected label to hide */"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" hiddenLabels$ \u003d new BehaviorSubject\u003cSet\u003cstring\u003e\u003e(new Set());"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":" hiddenLabelSubscription: Subscription;"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Milestone subscription */"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" milestoneSubscription: Subscription;"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" /** One MatSort controls all IssueDataTables */"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" @ViewChild(MatSort, { static: true }) matSort: MatSort;"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" @ViewChild(LabelFilterBarComponent, { static: true }) labelFilterBar: LabelFilterBarComponent;"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" @ViewChild(\u0027milestoneSelectorRef\u0027, { static: false }) milestoneSelectorRef: MatSelect;"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":" constructor(public milestoneService: MilestoneService, private phaseService: PhaseService, private logger: LoggingService) {"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" this.repoChangeSubscription \u003d this.phaseService.repoChanged$.subscribe((newRepo) \u003d\u003e this.initialize());"},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" ngOnInit() {"},{"lineNumber":52,"author":{"gitId":"Eclipse-Dominator"},"content":" this.initialize();"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":54,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":" ngAfterViewInit(): void {"},{"lineNumber":56,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Apply dropdown filter when LabelChipBar populates with label filters */"},{"lineNumber":57,"author":{"gitId":"Eclipse-Dominator"},"content":" this.labelFilterSubscription \u003d this.labelFilter$.subscribe((labels) \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"Eclipse-Dominator"},"content":" this.dropdownFilter.labels \u003d labels;"},{"lineNumber":59,"author":{"gitId":"Eclipse-Dominator"},"content":" this.applyDropdownFilter();"},{"lineNumber":60,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":61,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":" this.hiddenLabelSubscription \u003d this.hiddenLabels$.subscribe((labels) \u003d\u003e {"},{"lineNumber":63,"author":{"gitId":"Eclipse-Dominator"},"content":" this.dropdownFilter.hiddenLabels \u003d labels;"},{"lineNumber":64,"author":{"gitId":"Eclipse-Dominator"},"content":" this.applyDropdownFilter();"},{"lineNumber":65,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":66,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":67,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":68,"author":{"gitId":"Eclipse-Dominator"},"content":" ngOnDestroy(): void {"},{"lineNumber":69,"author":{"gitId":"Eclipse-Dominator"},"content":" this.labelFilterSubscription?.unsubscribe();"},{"lineNumber":70,"author":{"gitId":"Eclipse-Dominator"},"content":" this.hiddenLabelSubscription?.unsubscribe();"},{"lineNumber":71,"author":{"gitId":"Eclipse-Dominator"},"content":" this.milestoneSubscription.unsubscribe();"},{"lineNumber":72,"author":{"gitId":"Eclipse-Dominator"},"content":" this.repoChangeSubscription.unsubscribe();"},{"lineNumber":73,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":74,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":75,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":76,"author":{"gitId":"Eclipse-Dominator"},"content":" * Signals to IssuesDataTable that a change has occurred in filter."},{"lineNumber":77,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param filterValue"},{"lineNumber":78,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":79,"author":{"gitId":"Eclipse-Dominator"},"content":" applyFilter(filterValue: string) {"},{"lineNumber":80,"author":{"gitId":"Eclipse-Dominator"},"content":" this.views$?.value?.forEach((v) \u003d\u003e (v.retrieveFilterable().filter \u003d filterValue));"},{"lineNumber":81,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":82,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Changes type to a valid, default value when an incompatible combination of type and status is encountered."},{"lineNumber":85,"author":{"gitId":"-"},"content":" */"},{"lineNumber":86,"author":{"gitId":"-"},"content":" updateTypePairing() {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (this.dropdownFilter.status \u003d\u003d\u003d \u0027merged\u0027) {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.dropdownFilter.type \u003d \u0027pullrequest\u0027;"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Changes status to a valid, default value when an incompatible combination of type and status is encountered."},{"lineNumber":94,"author":{"gitId":"-"},"content":" */"},{"lineNumber":95,"author":{"gitId":"-"},"content":" updateStatusPairing() {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (this.dropdownFilter.status \u003d\u003d\u003d \u0027merged\u0027 \u0026\u0026 this.dropdownFilter.type \u003d\u003d\u003d \u0027issue\u0027) {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" this.dropdownFilter.status \u003d \u0027all\u0027;"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }"},{"lineNumber":100,"author":{"gitId":"-"},"content":""},{"lineNumber":101,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":102,"author":{"gitId":"Eclipse-Dominator"},"content":" * Signals to IssuesDataTable that a change has occurred in dropdown filter."},{"lineNumber":103,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":104,"author":{"gitId":"Eclipse-Dominator"},"content":" applyDropdownFilter() {"},{"lineNumber":105,"author":{"gitId":"Eclipse-Dominator"},"content":" this.views$?.value?.forEach((v) \u003d\u003e (v.retrieveFilterable().dropdownFilter \u003d this.dropdownFilter));"},{"lineNumber":106,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":107,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Checks if program is filtering by type issue."},{"lineNumber":110,"author":{"gitId":"-"},"content":" */"},{"lineNumber":111,"author":{"gitId":"-"},"content":" isNotFilterIssue() {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return this.dropdownFilter.type !\u003d\u003d \u0027issue\u0027;"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":116,"author":{"gitId":"Eclipse-Dominator"},"content":" * Fetch and initialize all information from repository to populate Issue Dashboard."},{"lineNumber":117,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":118,"author":{"gitId":"Eclipse-Dominator"},"content":" private initialize() {"},{"lineNumber":119,"author":{"gitId":"Eclipse-Dominator"},"content":" // Fetch labels"},{"lineNumber":120,"author":{"gitId":"Eclipse-Dominator"},"content":" this.labelFilterBar.load();"},{"lineNumber":121,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":122,"author":{"gitId":"Eclipse-Dominator"},"content":" // Fetch milestones and update dropdown filter"},{"lineNumber":123,"author":{"gitId":"Eclipse-Dominator"},"content":" this.milestoneSubscription \u003d this.milestoneService.fetchMilestones().subscribe("},{"lineNumber":124,"author":{"gitId":"Eclipse-Dominator"},"content":" (response) \u003d\u003e {"},{"lineNumber":125,"author":{"gitId":"Eclipse-Dominator"},"content":" this.logger.debug(\u0027IssuesViewerComponent: Fetched milestones from Github\u0027);"},{"lineNumber":126,"author":{"gitId":"Eclipse-Dominator"},"content":" this.milestoneService.milestones.forEach((milestone) \u003d\u003e this.dropdownFilter.milestones.push(milestone.number));"},{"lineNumber":127,"author":{"gitId":"Eclipse-Dominator"},"content":" },"},{"lineNumber":128,"author":{"gitId":"Eclipse-Dominator"},"content":" (err) \u003d\u003e {},"},{"lineNumber":129,"author":{"gitId":"Eclipse-Dominator"},"content":" () \u003d\u003e {}"},{"lineNumber":130,"author":{"gitId":"Eclipse-Dominator"},"content":" );"},{"lineNumber":131,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":132,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":107,"-":25}},{"path":"src/app/shared/filter-bar/filter-bar.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { SharedModule } from \u0027../shared.module\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { FilterBarComponent } from \u0027./filter-bar.component\u0027;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LabelFilterBarComponent } from \u0027./label-filter-bar/label-filter-bar.component\u0027;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":"@NgModule({"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" imports: [SharedModule],"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" declarations: [FilterBarComponent, LabelFilterBarComponent],"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" exports: [FilterBarComponent]"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"})"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":"export class FilterBarModule {}"}],"authorContributionMap":{"Eclipse-Dominator":11}},{"path":"src/app/shared/filter-bar/label-filter-bar/label-filter-bar.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"::ng-deep.mat-menu-content:not(:empty) {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" /* Override mat-menu-content\u0027s non-empty default CSS. */"},{"lineNumber":3,"author":{"gitId":"-"},"content":" padding-top: 0px !important;"},{"lineNumber":4,"author":{"gitId":"-"},"content":" padding-bottom: 0px !important;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"::ng-deep.mat-menu-panel {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Override mat-menu-panel\u0027s default CSS. */"},{"lineNumber":9,"author":{"gitId":"-"},"content":" width: 280px;"},{"lineNumber":10,"author":{"gitId":"-"},"content":" max-width: none !important;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":".popup-container {"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" flex-direction: column;"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":".popupmenu {"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" width: max-content;"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":".scroll-container {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" max-height: 400px;"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 100%;"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" overflow-y: auto;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" position: relative;"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" -ms-overflow-style: none; /* IE and Edge */"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" scrollbar-width: none; /* Firefox */"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":"/* Ref: https://css-scroll-shadows.vercel.app */"},{"lineNumber":31,"author":{"gitId":"-"},"content":".scroll-container::before {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" pointer-events: none;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" content: \u0027\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":" position: absolute;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" z-index: 2;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" height: 7px;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" display: block;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" background-image: linear-gradient(to bottom, white 66%, transparent);"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":".scroll-container::after {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" pointer-events: none;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" content: \u0027\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" position: sticky;"},{"lineNumber":46,"author":{"gitId":"-"},"content":" z-index: 2;"},{"lineNumber":47,"author":{"gitId":"-"},"content":" top: 100%;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" height: 7px;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" display: block;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" background-image: linear-gradient(to top, white 66%, transparent);"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":".scroll-container-wrapper {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" position: relative;"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":".scroll-container-wrapper::before {"},{"lineNumber":59,"author":{"gitId":"-"},"content":" pointer-events: none;"},{"lineNumber":60,"author":{"gitId":"-"},"content":" content: \u0027\u0027;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" position: absolute;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" z-index: 1;"},{"lineNumber":63,"author":{"gitId":"-"},"content":" top: 0;"},{"lineNumber":64,"author":{"gitId":"-"},"content":" left: 0;"},{"lineNumber":65,"author":{"gitId":"-"},"content":" right: 0;"},{"lineNumber":66,"author":{"gitId":"-"},"content":" height: 5px;"},{"lineNumber":67,"author":{"gitId":"-"},"content":" background-image: radial-gradient(farthest-side at 50% 0, rgba(0, 0, 0, 0.7), transparent);"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":".scroll-container-wrapper::after {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" pointer-events: none;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" content: \u0027\u0027;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" position: absolute;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" z-index: 1;"},{"lineNumber":75,"author":{"gitId":"-"},"content":" bottom: 0;"},{"lineNumber":76,"author":{"gitId":"-"},"content":" left: 0;"},{"lineNumber":77,"author":{"gitId":"-"},"content":" right: 0;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" height: 5px;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" background-image: radial-gradient(farthest-side at 50% 100%, rgba(0, 0, 0, 0.7), transparent);"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":".scroll-container::-webkit-scrollbar {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" display: none; /* Hide scrollbar for Chrome, Safari and Opera */"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"Eclipse-Dominator"},"content":".flexbox-container {"},{"lineNumber":87,"author":{"gitId":"Eclipse-Dominator"},"content":" display: flex;"},{"lineNumber":88,"author":{"gitId":"Eclipse-Dominator"},"content":" flex-direction: row;"},{"lineNumber":89,"author":{"gitId":"Eclipse-Dominator"},"content":" justify-content: flex-start;"},{"lineNumber":90,"author":{"gitId":"Eclipse-Dominator"},"content":" align-items: center;"},{"lineNumber":91,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":92,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":93,"author":{"gitId":"Eclipse-Dominator"},"content":".input-field {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" width: calc(100% - (2 * 15px)); /* To account for left and right padding. */"},{"lineNumber":95,"author":{"gitId":"-"},"content":" padding: 0 15px;"},{"lineNumber":96,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":97,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":98,"author":{"gitId":"Eclipse-Dominator"},"content":".list-option {"},{"lineNumber":99,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 100%;"},{"lineNumber":100,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":101,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":102,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-chip {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" height: auto;"},{"lineNumber":104,"author":{"gitId":"-"},"content":" padding: 5.5px 7px;"},{"lineNumber":105,"author":{"gitId":"-"},"content":" line-height: 1.1em;"},{"lineNumber":106,"author":{"gitId":"Eclipse-Dominator"},"content":" position: inherit;"},{"lineNumber":107,"author":{"gitId":"Eclipse-Dominator"},"content":" border-radius: 6px;"},{"lineNumber":108,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 12px;"},{"lineNumber":109,"author":{"gitId":"Eclipse-Dominator"},"content":" min-height: 16px;"},{"lineNumber":110,"author":{"gitId":"-"},"content":" max-height: 42px;"},{"lineNumber":111,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 0px;"},{"lineNumber":112,"author":{"gitId":"Eclipse-Dominator"},"content":" top: 50%;"},{"lineNumber":113,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":114,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":115,"author":{"gitId":"Echomo-Xinyu"},"content":".mat-stroked-button {"},{"lineNumber":116,"author":{"gitId":"Echomo-Xinyu"},"content":" font-weight: normal;"},{"lineNumber":117,"author":{"gitId":"Echomo-Xinyu"},"content":"}"},{"lineNumber":118,"author":{"gitId":"Echomo-Xinyu"},"content":""},{"lineNumber":119,"author":{"gitId":"Eclipse-Dominator"},"content":".hidden {"},{"lineNumber":120,"author":{"gitId":"Eclipse-Dominator"},"content":" display: none !important;"},{"lineNumber":121,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":122,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":123,"author":{"gitId":"Eclipse-Dominator"},"content":"mat-list-option {"},{"lineNumber":124,"author":{"gitId":"Eclipse-Dominator"},"content":" width: max-content;"},{"lineNumber":125,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":126,"author":{"gitId":"-"},"content":""},{"lineNumber":127,"author":{"gitId":"-"},"content":".no-labels {"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /* Chosen to look similar to button above. */"},{"lineNumber":129,"author":{"gitId":"-"},"content":" padding: 0 16px;"},{"lineNumber":130,"author":{"gitId":"-"},"content":" font-size: 14px;"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":45,"Echomo-Xinyu":4,"-":82}},{"path":"src/app/shared/filter-bar/label-filter-bar/label-filter-bar.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"Echomo-Xinyu"},"content":"\u003cbutton mat-stroked-button *ngIf\u003d\"loaded\" [matMenuTriggerFor]\u003d\"menu\"\u003e"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":" {{ selectedLabelNames.length \u003d\u003d 0 ? \u0027All\u0027 : selectedLabelNames.length }} Selected | {{ hiddenLabelNames?.size || 0 }} Hidden â–¾"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003c/button\u003e"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":5,"author":{"gitId":"Echomo-Xinyu"},"content":"\u003cbutton mat-stroked-button disabled *ngIf\u003d\"!loaded\" color\u003d\"accent\"\u003e"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-progress-bar mode\u003d\"query\"\u003e\u003c/mat-progress-bar\u003e"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003c/button\u003e"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003cmat-menu #menu\u003d\"matMenu\" class\u003d\"popupmenu\"\u003e"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cdiv (click)\u003d\"$event.stopPropagation()\" class\u003d\"popup-container\"\u003e"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-form-field appearance\u003d\"standard\" class\u003d\"input-field\"\u003e"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-label\u003eLabels\u003c/mat-label\u003e"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cinput #input matInput placeholder\u003d\"Find labels\" /\u003e"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cbutton mat-button (click)\u003d\"removeAllSelection()\"\u003eRemove all\u003c/button\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"!hasLabels(input.value)\" class\u003d\"no-labels\"\u003eNo Labels Found!\u003c/div\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"scroll-container-wrapper\"\u003e"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cdiv class\u003d\"scroll-container\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cmat-selection-list [(ngModel)]\u003d\"selectedLabelNames\" (selectionChange)\u003d\"updateSelection()\"\u003e"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-list-option"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" #option"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" *ngFor\u003d\"let label of allLabels\""},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" [value]\u003d\"label.name\""},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" [selected]\u003d\"selectedLabelNames.includes(label.name)\""},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" class\u003d\"list-option\""},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" [class.hidden]\u003d\"filter(input.value, label.name)\""},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003e"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cdiv class\u003d\"flexbox-container\"\u003e"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton mat-icon-button *ngIf\u003d\"!hiddenLabelNames.has(label.name)\" (click)\u003d\"hide(label.name); $event.stopPropagation()\"\u003e"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-icon\u003evisibility\u003c/mat-icon\u003e"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/button\u003e"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton mat-icon-button *ngIf\u003d\"hiddenLabelNames.has(label.name)\" (click)\u003d\"show(label.name); $event.stopPropagation()\"\u003e"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-icon\u003evisibility_off\u003c/mat-icon\u003e"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/button\u003e"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-chip"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" [ngStyle]\u003d\"labelService.setLabelStyle(label.color)\""},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" [disabled]\u003d\"hiddenLabelNames.has(label.name)\""},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" (click)\u003d\"simulateClick(option); $event.stopPropagation()\""},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003e"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" {{ label.name }}"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-chip\u003e"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/div\u003e"},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-list-option\u003e"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-selection-list\u003e"},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/div\u003e"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/div\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003c/mat-menu\u003e"}],"authorContributionMap":{"Echomo-Xinyu":3,"Eclipse-Dominator":41,"-":6}},{"path":"src/app/shared/filter-bar/label-filter-bar/label-filter-bar.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Input, OnDestroy, OnInit, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatListOption, MatSelectionList } from \u0027@angular/material/list\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { BehaviorSubject, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LabelService } from \u0027../../../core/services/label.service\u0027;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LoggingService } from \u0027../../../core/services/logging.service\u0027;"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":"export type simplifiedLabel \u003d {"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" name: string;"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" color: string;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"};"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"@Component({"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" selector: \u0027app-label-filter-bar\u0027,"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" templateUrl: \u0027./label-filter-bar.component.html\u0027,"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" styleUrls: [\u0027./label-filter-bar.component.css\u0027]"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":"})"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":"export class LabelFilterBarComponent implements OnInit, OnDestroy {"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() selectedLabels: BehaviorSubject\u003cstring[]\u003e;"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() hiddenLabels: BehaviorSubject\u003cSet\u003cstring\u003e\u003e;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @ViewChild(MatSelectionList) matSelectionList;"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" allLabels: simplifiedLabel[];"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" selectedLabelNames: string[] \u003d [];"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" hiddenLabelNames: Set\u003cstring\u003e \u003d new Set();"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" loaded \u003d false;"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" labelSubscription: Subscription;"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":" constructor(private labelService: LabelService, private logger: LoggingService) {}"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" ngOnInit() {"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" this.loaded \u003d false;"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" this.load();"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" ngOnDestroy(): void {"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" this.labelSubscription?.unsubscribe();"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" hide(label: string): void {"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.hiddenLabelNames.has(label)) {"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" return;"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" this.hiddenLabelNames.add(label);"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":" this.hiddenLabels.next(this.hiddenLabelNames);"},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Show labels that were hidden */"},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":" show(label: string): void {"},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" if (!this.hiddenLabelNames.has(label)) {"},{"lineNumber":52,"author":{"gitId":"Eclipse-Dominator"},"content":" return;"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":54,"author":{"gitId":"Eclipse-Dominator"},"content":" this.hiddenLabelNames.delete(label);"},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":" this.hiddenLabels.next(this.hiddenLabelNames);"},{"lineNumber":56,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":57,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":58,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":59,"author":{"gitId":"Eclipse-Dominator"},"content":" * chip as of the current project version consumes click events"},{"lineNumber":60,"author":{"gitId":"Eclipse-Dominator"},"content":" * this method is used as an workaround the issue."},{"lineNumber":61,"author":{"gitId":"Eclipse-Dominator"},"content":" * https://github.com/angular/components/issues/19759"},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":63,"author":{"gitId":"Eclipse-Dominator"},"content":" simulateClick(el: MatListOption): void {"},{"lineNumber":64,"author":{"gitId":"Eclipse-Dominator"},"content":" if (el.disabled) {"},{"lineNumber":65,"author":{"gitId":"Eclipse-Dominator"},"content":" return;"},{"lineNumber":66,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":67,"author":{"gitId":"Eclipse-Dominator"},"content":" el.toggle();"},{"lineNumber":68,"author":{"gitId":"Eclipse-Dominator"},"content":" this.selectedLabels.next(this.selectedLabelNames);"},{"lineNumber":69,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":70,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":71,"author":{"gitId":"Eclipse-Dominator"},"content":" /** loads in the labels in the repository */"},{"lineNumber":72,"author":{"gitId":"Eclipse-Dominator"},"content":" public load() {"},{"lineNumber":73,"author":{"gitId":"Eclipse-Dominator"},"content":" this.labelSubscription \u003d this.labelService.fetchLabels().subscribe("},{"lineNumber":74,"author":{"gitId":"Eclipse-Dominator"},"content":" (response) \u003d\u003e {"},{"lineNumber":75,"author":{"gitId":"Eclipse-Dominator"},"content":" this.logger.debug(\u0027LabelFilterBarComponent: Fetched labels from Github\u0027);"},{"lineNumber":76,"author":{"gitId":"Eclipse-Dominator"},"content":" },"},{"lineNumber":77,"author":{"gitId":"Eclipse-Dominator"},"content":" (err) \u003d\u003e {},"},{"lineNumber":78,"author":{"gitId":"Eclipse-Dominator"},"content":" () \u003d\u003e {"},{"lineNumber":79,"author":{"gitId":"Eclipse-Dominator"},"content":" this.initialize();"},{"lineNumber":80,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":81,"author":{"gitId":"Eclipse-Dominator"},"content":" );"},{"lineNumber":82,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":83,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":84,"author":{"gitId":"Eclipse-Dominator"},"content":" private initialize() {"},{"lineNumber":85,"author":{"gitId":"Eclipse-Dominator"},"content":" this.allLabels \u003d this.labelService.labels.map((label) \u003d\u003e {"},{"lineNumber":86,"author":{"gitId":"Eclipse-Dominator"},"content":" return {"},{"lineNumber":87,"author":{"gitId":"Eclipse-Dominator"},"content":" name: label.getFormattedName(),"},{"lineNumber":88,"author":{"gitId":"Eclipse-Dominator"},"content":" color: label.color"},{"lineNumber":89,"author":{"gitId":"Eclipse-Dominator"},"content":" };"},{"lineNumber":90,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":91,"author":{"gitId":"Eclipse-Dominator"},"content":" this.loaded \u003d true;"},{"lineNumber":92,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":93,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":94,"author":{"gitId":"Eclipse-Dominator"},"content":" filter(filter: string, target: string): boolean {"},{"lineNumber":95,"author":{"gitId":"Eclipse-Dominator"},"content":" return !target.toLowerCase().includes(filter.toLowerCase());"},{"lineNumber":96,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" hasLabels(filter: string): boolean {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (this.allLabels \u003d\u003d\u003d undefined || this.allLabels.length \u003d\u003d\u003d 0) {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this.allLabels.some((label) \u003d\u003e !this.filter(filter, label.name));"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" updateSelection(): void {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.selectedLabels.next(this.selectedLabelNames);"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":" removeAllSelection(): void {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.matSelectionList.deselectAll();"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.updateSelection();"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }"},{"lineNumber":113,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":94,"-":19}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-header/issue-pr-card-header.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"span.octicon {"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-right: 8px;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" display: inline-flex;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-card-title {"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" display: flex;"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" align-items: center;"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 12px;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" text-align: left;"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" overflow: auto;"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":".column-header .mat-card-title {"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 14px;"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-card-header {"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" display: flex;"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" align-items: center;"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":" justify-content: center;"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":":host ::ng-deep .mat-card-header-text {"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 2px;"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":26}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-header/issue-pr-card-header.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003cmat-card-header\u003e"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-card-title\u003e"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cspan class\u003d\"octicon\" [octicon]\u003d\"getOcticon()\" [color]\u003d\"getIssueOpenOrCloseColor()\"\u003e\u003c/span\u003e"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" #{{ issue.id }}: {{ fitTitleText() }}"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-card-title\u003e"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003c/mat-card-header\u003e"}],"authorContributionMap":{"Eclipse-Dominator":6}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-header/issue-pr-card-header.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Component, Input } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Issue } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" selector: \u0027app-issue-pr-card-header\u0027,"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" templateUrl: \u0027./issue-pr-card-header.component.html\u0027,"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" styleUrls: [\u0027./issue-pr-card-header.component.css\u0027]"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":"})"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":"export class IssuePrCardHeaderComponent {"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() issue: Issue;"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" constructor() {}"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" * Returns corresponding Github icon identifier for issue to display."},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":" * @returns string to create icon"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" getOcticon() {"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" const type \u003d this.issue.issueOrPr;"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" const state \u003d this.issue.state;"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" switch (true) {"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" case type \u003d\u003d\u003d \u0027Issue\u0027 \u0026\u0026 state \u003d\u003d\u003d \u0027OPEN\u0027: {"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027issue-opened\u0027;"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" case type \u003d\u003d\u003d \u0027Issue\u0027 \u0026\u0026 state \u003d\u003d\u003d \u0027CLOSED\u0027: {"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027issue-closed\u0027;"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":" case type \u003d\u003d\u003d \u0027PullRequest\u0027 \u0026\u0026 state \u003d\u003d\u003d \u0027OPEN\u0027: {"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027git-pull-request\u0027;"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" case type \u003d\u003d\u003d \u0027PullRequest\u0027 \u0026\u0026 state \u003d\u003d\u003d \u0027CLOSED\u0027: {"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027git-pull-request-closed\u0027;"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":" case type \u003d\u003d\u003d \u0027PullRequest\u0027 \u0026\u0026 state \u003d\u003d\u003d \u0027MERGED\u0027: {"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027git-merge\u0027;"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" default: {"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027circle\u0027; // unknown type and state"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Returns status color for issue */"},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" getIssueOpenOrCloseColor() {"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.issue.state \u003d\u003d\u003d \u0027OPEN\u0027) {"},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027green\u0027;"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" } else if (this.issue.issueOrPr \u003d\u003d\u003d \u0027PullRequest\u0027 \u0026\u0026 this.issue.state \u003d\u003d\u003d \u0027CLOSED\u0027) {"},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027red\u0027;"},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":" } else {"},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027purple\u0027;"},{"lineNumber":52,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":54,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":56,"author":{"gitId":"Eclipse-Dominator"},"content":" * Formats the title text to account for those that contain long words."},{"lineNumber":57,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param title - Title of Issue that is to be displayed in the Table Row."},{"lineNumber":58,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":59,"author":{"gitId":"Eclipse-Dominator"},"content":" fitTitleText(): string {"},{"lineNumber":60,"author":{"gitId":"Eclipse-Dominator"},"content":" // Arbitrary Length of Characters beyond which an overflow occurs."},{"lineNumber":61,"author":{"gitId":"Eclipse-Dominator"},"content":" const MAX_WORD_LENGTH \u003d 43;"},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":" const SPLITTER_TEXT \u003d \u0027 \u0027;"},{"lineNumber":63,"author":{"gitId":"Eclipse-Dominator"},"content":" const ELLIPSES \u003d \u0027...\u0027;"},{"lineNumber":64,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":65,"author":{"gitId":"Eclipse-Dominator"},"content":" return this.issue.title"},{"lineNumber":66,"author":{"gitId":"Eclipse-Dominator"},"content":" .split(SPLITTER_TEXT)"},{"lineNumber":67,"author":{"gitId":"Eclipse-Dominator"},"content":" .map((word) \u003d\u003e {"},{"lineNumber":68,"author":{"gitId":"Eclipse-Dominator"},"content":" if (word.length \u003e MAX_WORD_LENGTH) {"},{"lineNumber":69,"author":{"gitId":"Eclipse-Dominator"},"content":" return word.substring(0, MAX_WORD_LENGTH - 5).concat(ELLIPSES);"},{"lineNumber":70,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":71,"author":{"gitId":"Eclipse-Dominator"},"content":" return word;"},{"lineNumber":72,"author":{"gitId":"Eclipse-Dominator"},"content":" })"},{"lineNumber":73,"author":{"gitId":"Eclipse-Dominator"},"content":" .join(SPLITTER_TEXT);"},{"lineNumber":74,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":75,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":75}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-labels/issue-pr-card-labels.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-chip {"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" border-radius: 6px;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 10px;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" padding: 11px 7px;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" min-height: 16px;"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 2px;"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":":host ::ng-deep .mat-chip-list-wrapper .mat-standard-chip,"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-chip-list-wrapper input.mat-input-element {"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 2px;"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-chip-list {"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 0;"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":16}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-labels/issue-pr-card-labels.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003cmat-chip-list aria-label\u003d\"Labels\"\u003e"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cng-container *ngFor\u003d\"let label of labels\"\u003e"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-chip *ngIf\u003d\"!labelSet?.has(label.name)\" [ngStyle]\u003d\"labelService.setLabelStyle(label.color)\" selected\u003e"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" {{ label.name }}"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-chip\u003e"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/ng-container\u003e"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003c/mat-chip-list\u003e"}],"authorContributionMap":{"Eclipse-Dominator":7}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-labels/issue-pr-card-labels.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Component, Input } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Label } from \u0027../../../core/models/label.model\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LabelService } from \u0027../../../core/services/label.service\u0027;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"@Component({"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" selector: \u0027app-issue-pr-card-labels\u0027,"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" templateUrl: \u0027./issue-pr-card-labels.component.html\u0027,"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" styleUrls: [\u0027./issue-pr-card-labels.component.css\u0027]"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":"})"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"export class IssuePrCardLabelsComponent {"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() labels: Label[];"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() labelSet: Set\u003cLabel\u003e;"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" constructor(public labelService: LabelService) {}"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":14}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-milestone/issue-pr-card-milestone.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"span.octicon-milestone {"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-right: 4px;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" display: inline-flex;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":".milestone {"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" display: inline-flex;"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-right: 8px;"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-bottom: 0px;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-top: 0px;"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" align-items: center;"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":12}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-milestone/issue-pr-card-milestone.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003cdiv *ngIf\u003d\"milestone.state\" class\u003d\"milestone\"\u003e"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cspan class\u003d\"octicon-milestone\" octicon\u003d\"milestone\" color\u003d\"grey\" size\u003d\"8\"\u003e \u003c/span\u003e"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" {{ milestone.title }}"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"Eclipse-Dominator":4}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-milestone/issue-pr-card-milestone.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Component, Input } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Milestone } from \u0027../../../core/models/milestone.model\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" selector: \u0027app-issue-pr-card-milestone\u0027,"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" templateUrl: \u0027./issue-pr-card-milestone.component.html\u0027,"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" styleUrls: [\u0027./issue-pr-card-milestone.component.css\u0027]"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":"})"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":"export class IssuePrCardMilestoneComponent {"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() milestone: Milestone;"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" constructor() {}"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":13}},{"path":"src/app/shared/issue-pr-card/issue-pr-card.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":".card {"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 8px 0px 8px 0px;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-card {"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" padding: 10px;"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":".column-header {"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" justify-content: center;"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 0;"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":".border-green {"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" border-left: 2.4px solid green;"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":".border-purple {"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" border-left: 2.4px solid purple;"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":".border-red {"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" border-left: 2.4px solid red;"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-card-content {"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" display: flex;"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" align-items: center;"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 11px;"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" text-align: left;"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 0px;"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" padding: 0px;"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-card-subtitle {"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" display: flex;"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" align-items: center;"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 11px;"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" text-align: left;"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" overflow: auto;"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 6px 0;"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":42}},{"path":"src/app/shared/issue-pr-card/issue-pr-card.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003cmat-card class\u003d\"card\" [ngClass]\u003d\"getIssueOpenOrCloseColorCSSClass()\"\u003e"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003ca class\u003d\"no-underline link-grey-dark\" (click)\u003d\"viewIssueInBrowser($event)\"\u003e"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cspan [matTooltip]\u003d\"this.issue.updated_at\"\u003e"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003capp-issue-pr-card-header [issue]\u003d\"issue\"\u003e\u003c/app-issue-pr-card-header\u003e"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-card-content\u003e"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003capp-issue-pr-card-milestone [milestone]\u003d\"issue.milestone\"\u003e\u003c/app-issue-pr-card-milestone\u003e"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003capp-issue-pr-card-labels [labels]\u003d\"issue.githubLabels\" [labelSet]\u003d\"dropdownFilter?.hiddenLabels\"\u003e\u003c/app-issue-pr-card-labels\u003e"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-card-content\u003e"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/span\u003e"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/a\u003e"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003c/mat-card\u003e"}],"authorContributionMap":{"Eclipse-Dominator":11}},{"path":"src/app/shared/issue-pr-card/issue-pr-card.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Component, Input } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { GithubService } from \u0027../../core/services/github.service\u0027;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LabelService } from \u0027../../core/services/label.service\u0027;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":"import { DropdownFilter } from \u0027../issue-tables/dropdownfilter\u0027;"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":"@Component({"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" selector: \u0027app-issue-pr-card\u0027,"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" templateUrl: \u0027./issue-pr-card.component.html\u0027,"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" styleUrls: [\u0027./issue-pr-card.component.css\u0027]"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"})"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":"export class IssuePrCardComponent {"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() issue: Issue;"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() dropdownFilter?: DropdownFilter;"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" constructor(private logger: LoggingService, private githubService: GithubService, public labelService: LabelService) {}"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Opens issue in new window */"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" viewIssueInBrowser(event: Event) {"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":" this.logger.info(`CardViewComponent: Opening Issue ${this.issue.id} on Github`);"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" this.githubService.viewIssueInBrowser(this.issue.id, event);"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Returns CSS class for border color */"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" getIssueOpenOrCloseColorCSSClass() {"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.issue.state \u003d\u003d\u003d \u0027OPEN\u0027) {"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027border-green\u0027;"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":" } else if (this.issue.issueOrPr \u003d\u003d\u003d \u0027PullRequest\u0027 \u0026\u0026 this.issue.state \u003d\u003d\u003d \u0027CLOSED\u0027) {"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027border-red\u0027;"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" } else {"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027border-purple\u0027;"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" * Truncates description to fit in card content."},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param description - Description of Issue that is to be displayed."},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" fitDescriptionText(): string {"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" // Arbitrary Length of Characters beyond which an overflow occurs."},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" const MAX_CHARACTER_LENGTH \u003d 72;"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" const ELLIPSES \u003d \u0027...\u0027;"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" return this.issue.description.slice(0, MAX_CHARACTER_LENGTH) + ELLIPSES;"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":47}},{"path":"src/app/shared/issue-pr-card/issue-pr-card.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { SharedModule } from \u0027../shared.module\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { IssuePrCardHeaderComponent } from \u0027./issue-pr-card-header/issue-pr-card-header.component\u0027;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"import { IssuePrCardLabelsComponent } from \u0027./issue-pr-card-labels/issue-pr-card-labels.component\u0027;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"import { IssuePrCardMilestoneComponent } from \u0027./issue-pr-card-milestone/issue-pr-card-milestone.component\u0027;"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { IssuePrCardComponent } from \u0027./issue-pr-card.component\u0027;"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":"@NgModule({"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" imports: [SharedModule],"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" declarations: [IssuePrCardComponent, IssuePrCardHeaderComponent, IssuePrCardMilestoneComponent, IssuePrCardLabelsComponent],"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" exports: [IssuePrCardComponent]"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"})"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":"export class IssuesPrCardModule {}"}],"authorContributionMap":{"Eclipse-Dominator":12,"vigneshsankariyer1234567890":1}},{"path":"src/app/shared/issue-tables/IssuesDataTable.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { DataSource } from \u0027@angular/cdk/table\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":3,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { BehaviorSubject, merge, Observable, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"import { map } from \u0027rxjs/operators\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":"import { applyDropdownFilter, DEFAULT_DROPDOWN_FILTER, DropdownFilter } from \u0027./dropdownfilter\u0027;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"import { FilterableSource } from \u0027./filterableTypes\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { paginateData } from \u0027./issue-paginator\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { getSortedData } from \u0027./issue-sorter\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { applySearchFilter } from \u0027./search-filter\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":"export class IssuesDataTable extends DataSource\u003cIssue\u003e implements FilterableSource {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public count \u003d 0;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private filterChange \u003d new BehaviorSubject(\u0027\u0027);"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private dropdownFilterChange \u003d new BehaviorSubject(DEFAULT_DROPDOWN_FILTER);"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private teamFilterChange \u003d new BehaviorSubject(\u0027\u0027);"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private issuesSubject \u003d new BehaviorSubject\u003cIssue[]\u003e([]);"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private issueSubscription: Subscription;"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" public isLoading$ \u003d this.issueService.isLoading.asObservable();"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":26,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private sort: MatSort,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private paginator: MatPaginator,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private displayedColumn: string[],"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private assignee?: GithubUser,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private defaultFilter?: (issue: Issue) \u003d\u003e boolean"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" super();"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" connect(): Observable\u003cIssue[]\u003e {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return this.issuesSubject.asObservable();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" disconnect() {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.dropdownFilterChange.complete();"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.filterChange.complete();"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.teamFilterChange.complete();"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.issuesSubject.complete();"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.issueSubscription.unsubscribe();"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.issueService.stopPollIssues();"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" loadIssues() {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // If no pagination and sorting"},{"lineNumber":51,"author":{"gitId":"-"},"content":" let sortChange;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (this.sort !\u003d\u003d undefined) {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" sortChange \u003d this.sort.sortChange;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" let page;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (this.paginator !\u003d\u003d undefined) {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" page \u003d this.paginator.page;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"Eclipse-Dominator"},"content":" const displayDataChanges \u003d [this.issueService.issues$, page, sortChange, this.filterChange, this.dropdownFilterChange].filter("},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":" (x) \u003d\u003e x !\u003d\u003d undefined"},{"lineNumber":63,"author":{"gitId":"Eclipse-Dominator"},"content":" );"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.issueService.startPollIssues();"},{"lineNumber":66,"author":{"gitId":"Eclipse-Dominator"},"content":" this.issueSubscription \u003d merge(...displayDataChanges)"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":68,"author":{"gitId":"-"},"content":" // maps each change in display value to new issue ordering or filtering"},{"lineNumber":69,"author":{"gitId":"-"},"content":" map(() \u003d\u003e {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" let data \u003d \u003cIssue[]\u003eObject.values(this.issueService.issues$.getValue()).reverse();"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (this.defaultFilter) {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" data \u003d data.filter(this.defaultFilter);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Filter by assignee of issue"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (this.assignee) {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" data \u003d data.filter((issue) \u003d\u003e {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (issue.issueOrPr \u003d\u003d\u003d \u0027PullRequest\u0027) {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return issue.author \u003d\u003d\u003d this.assignee.login;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" } else if (!issue.assignees) {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":81,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return issue.assignees.includes(this.assignee.login);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }"},{"lineNumber":84,"author":{"gitId":"-"},"content":" });"},{"lineNumber":85,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" } else {"},{"lineNumber":86,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" data \u003d data.filter((issue) \u003d\u003e {"},{"lineNumber":87,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return issue.issueOrPr !\u003d\u003d \u0027PullRequest\u0027 \u0026\u0026 issue.assignees.length \u003d\u003d\u003d 0;"},{"lineNumber":88,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // Dropdown Filters"},{"lineNumber":91,"author":{"gitId":"Eclipse-Dominator"},"content":" data \u003d data.filter(applyDropdownFilter(this.dropdownFilter));"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (this.sort !\u003d\u003d undefined) {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" data \u003d getSortedData(this.sort, data);"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":" data \u003d applySearchFilter(this.filter, this.displayedColumn, this.issueService, data);"},{"lineNumber":97,"author":{"gitId":"-"},"content":" this.count \u003d data.length;"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (this.paginator !\u003d\u003d undefined) {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" data \u003d paginateData(this.paginator, data);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return data;"},{"lineNumber":103,"author":{"gitId":"-"},"content":" })"},{"lineNumber":104,"author":{"gitId":"-"},"content":" )"},{"lineNumber":105,"author":{"gitId":"-"},"content":" .subscribe((issues) \u003d\u003e {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.issuesSubject.next(issues);"},{"lineNumber":107,"author":{"gitId":"-"},"content":" });"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":" get filter(): string {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return this.filterChange.value;"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }"},{"lineNumber":113,"author":{"gitId":"-"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":" set filter(filter: string) {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.filterChange.next(filter);"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }"},{"lineNumber":117,"author":{"gitId":"-"},"content":""},{"lineNumber":118,"author":{"gitId":"-"},"content":" get dropdownFilter(): DropdownFilter {"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return this.dropdownFilterChange.value;"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }"},{"lineNumber":121,"author":{"gitId":"-"},"content":""},{"lineNumber":122,"author":{"gitId":"-"},"content":" set dropdownFilter(filter: DropdownFilter) {"},{"lineNumber":123,"author":{"gitId":"-"},"content":" this.dropdownFilterChange.next(filter);"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":2,"Eclipse-Dominator":9,"vigneshsankariyer1234567890":4,"-":110}},{"path":"src/app/shared/issue-tables/dropdownfilter.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"export type DropdownFilter \u003d {"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" status: string;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" type: string;"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" sort: string;"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" labels: string[];"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" milestones: string[];"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" hiddenLabels?: Set\u003cstring\u003e;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"};"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"export const DEFAULT_DROPDOWN_FILTER \u003d \u003cDropdownFilter\u003e{"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" status: \u0027all\u0027,"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" type: \u0027all\u0027,"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" sort: \u0027id\u0027,"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":" labels: [],"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" milestones: []"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":"};"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":"/**"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":" * This module serves to improve separation of concerns in IssuesDataTable.ts and IssueList.ts module by containing the logic for"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" * applying dropdownFilter to the issues data table in this module."},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" * This module exports a single function applyDropDownFilter which is called by IssueList."},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" * This functions returns a function to check if a issue matches a dropdownfilter"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":"export function applyDropdownFilter(dropdownFilter: DropdownFilter): (a: Issue) \u003d\u003e boolean {"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" return (issue) \u003d\u003e {"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" let ret \u003d true;"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" if (dropdownFilter.status \u003d\u003d\u003d \u0027open\u0027) {"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" ret \u003d ret \u0026\u0026 issue.state \u003d\u003d\u003d \u0027OPEN\u0027;"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" } else if (dropdownFilter.status \u003d\u003d\u003d \u0027closed\u0027) {"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" // there is apparently also a status called \u0027all\u0027 based on github api"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" ret \u003d ret \u0026\u0026 issue.state \u003d\u003d\u003d \u0027CLOSED\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" } else if (dropdownFilter.status \u003d\u003d\u003d \u0027merged\u0027) {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ret \u003d ret \u0026\u0026 issue.state \u003d\u003d\u003d \u0027MERGED\u0027;"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" if (dropdownFilter.type \u003d\u003d\u003d \u0027issue\u0027) {"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" ret \u003d ret \u0026\u0026 issue.issueOrPr \u003d\u003d\u003d \u0027Issue\u0027;"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" } else if (dropdownFilter.type \u003d\u003d\u003d \u0027pullrequest\u0027) {"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" ret \u003d ret \u0026\u0026 issue.issueOrPr \u003d\u003d\u003d \u0027PullRequest\u0027;"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" ret \u003d ret \u0026\u0026 dropdownFilter.milestones.some((milestone) \u003d\u003e issue.milestone.number \u003d\u003d\u003d milestone);"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":" return ret \u0026\u0026 dropdownFilter.labels.every((label) \u003d\u003e issue.labels.includes(label));"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" };"},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":47,"-":2}},{"path":"src/app/shared/issue-tables/filterableTypes.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { DropdownFilter } from \u0027./dropdownfilter\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"/**"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" * This module aims to abstract out classes that can be filtered"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":"/**"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" * FilterableSource is an interface that contains a source that can be filtered"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" * by a string filter or dropdownFilter."},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" * The source should set filter and dropdownFilter as a getter and setter"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" * and applies the filter when these variables are changed."},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":"export interface FilterableSource {"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" filter: string;"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" dropdownFilter: DropdownFilter;"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":"/**"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" * FilterComponent is a component that contains a FilterableSource"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":"export interface FilterableComponent {"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" retrieveFilterable: () \u003d\u003e FilterableSource;"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":23}},{"path":"src/app/shared/issue-tables/issue-paginator.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"export function paginateData(paginator: MatPaginator, data: Issue[]): Issue[] {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" paginator.length \u003d data.length;"},{"lineNumber":6,"author":{"gitId":"-"},"content":" let result \u003d getDataForPage(paginator.pageIndex, paginator.pageSize, data);"},{"lineNumber":7,"author":{"gitId":"-"},"content":" if (result.length \u003d\u003d\u003d 0) {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" paginator.pageIndex -\u003d 1;"},{"lineNumber":9,"author":{"gitId":"-"},"content":" result \u003d getDataForPage(paginator.pageIndex, paginator.pageSize, data);"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }"},{"lineNumber":11,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"function getDataForPage(pageIndex: number, pageSize: number, data: Issue[]): Issue[] {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" const startIndex \u003d pageIndex * pageSize;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return data.splice(startIndex, pageSize);"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":16}},{"path":"src/app/shared/issue-tables/issue-sorter.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import * as moment from \u0027moment\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"export function getSortedData(sort: MatSort, data: Issue[]): Issue[] {"},{"lineNumber":6,"author":{"gitId":"-"},"content":" if (!sort.active) {"},{"lineNumber":7,"author":{"gitId":"-"},"content":" return data;"},{"lineNumber":8,"author":{"gitId":"-"},"content":" }"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":" const direction: number \u003d sort.direction \u003d\u003d\u003d \u0027asc\u0027 ? 1 : -1;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":" return data.sort((a, b) \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" switch (sort.active) {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" case \u0027assignees\u0027:"},{"lineNumber":15,"author":{"gitId":"-"},"content":" return direction * compareByStringValue(a.assignees.join(\u0027, \u0027), b.assignees.join(\u0027, \u0027));"},{"lineNumber":16,"author":{"gitId":"-"},"content":" case \u0027id\u0027:"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return direction * compareByIntegerValue(a.id, b.id);"},{"lineNumber":18,"author":{"gitId":"-"},"content":" case \u0027date\u0027:"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return direction * compareByDateValue(a.updated_at, b.updated_at);"},{"lineNumber":20,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // title, responseTag are string values"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return direction * compareByStringValue(a[sort.active], b[sort.active]);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }"},{"lineNumber":24,"author":{"gitId":"-"},"content":" });"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":"function compareByStringValue(valueA: string, valueB: string): number {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" const orderA \u003d String(valueA || \u0027\u0027).toUpperCase();"},{"lineNumber":29,"author":{"gitId":"-"},"content":" const orderB \u003d String(valueB || \u0027\u0027).toUpperCase();"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return orderA \u003c orderB ? -1 : 1;"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":"function compareByIntegerValue(valueA: number, valueB: number): number {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return valueA \u003c valueB ? -1 : 1;"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":"function compareByDateValue(valueA: string, valueB: string): number {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return moment(valueA).isBefore(valueB) ? -1 : 1;"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"Eclipse-Dominator":1,"-":37}},{"path":"src/app/shared/issue-tables/search-filter.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027./issue-tables-columns\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * This module serves to improve separation of concerns in IssuesDataTable.ts module by containing the logic for"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * applying search filter to the issues data table in this module."},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" * This module exports a 2 function applySearchFilter and searchFilter"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" * SearchFilter returns a function to test if an Issue matches"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" * applySearchFilter applies searchfilter to a list of issues."},{"lineNumber":11,"author":{"gitId":"-"},"content":" */"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":"export function searchFilter(filter: string, displayedColumn: string[]): (a: Issue) \u003d\u003e boolean {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" const searchKey \u003d filter.toLowerCase();"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" return (issue: Issue) \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" for (const column of displayedColumn) {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" switch (column) {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" case TABLE_COLUMNS.LABEL:"},{"lineNumber":19,"author":{"gitId":"-"},"content":" if (matchesLabel(issue.labels, searchKey)) {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }"},{"lineNumber":22,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" case TABLE_COLUMNS.ASSIGNEE:"},{"lineNumber":24,"author":{"gitId":"-"},"content":" if (matchesAssignee(issue.assignees, searchKey)) {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }"},{"lineNumber":27,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":29,"author":{"gitId":"-"},"content":" if (matchesOtherColumns(issue, column, searchKey)) {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }"},{"lineNumber":32,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" };"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":"export function applySearchFilter(filter: string, displayedColumn: string[], issueService: IssueService, data: Issue[]): Issue[] {"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" const result \u003d data.slice().filter(searchFilter(filter, displayedColumn));"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":"function containsSearchKey(item: string, searchKey: string): boolean {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return item.indexOf(searchKey) !\u003d\u003d -1;"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":"function matchesAssignee(assignees: string[], searchKey: string): boolean {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" for (const assignee of assignees) {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" const lowerCaseAssignee \u003d assignee.toLowerCase();"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (containsSearchKey(lowerCaseAssignee, searchKey)) {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":"function matchesLabel(labels: string[], searchKey: string): boolean {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" for (const label of labels) {"},{"lineNumber":59,"author":{"gitId":"-"},"content":" const lowerCaseLabel \u003d label.toLowerCase();"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (containsSearchKey(lowerCaseLabel, searchKey)) {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":"function matchesOtherColumns(issue: Issue, column: string, searchKey: string): boolean {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" const searchStr \u003d String(issue[column]).toLowerCase();"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return containsSearchKey(searchStr, searchKey);"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":11,"-":58}},{"path":"src/app/shared/label-definition-popup/label-definition-popup.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { DomSanitizer } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * The LabelDefinitionPopupComponent is responsible for rendering the UserDialog"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * to show the definition of the corresponding label."},{"lineNumber":8,"author":{"gitId":"-"},"content":" */"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-label-definition-popup\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./label-definition-popup.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./label-definition-popup.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class LabelDefinitionPopupComponent {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" labelName: string;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" labelDefinitionHtmlTemplate;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // Injection of a reference to Dialog from the Service that it is to be"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // displayed in."},{"lineNumber":20,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":21,"author":{"gitId":"-"},"content":" public dialogRef: MatDialogRef\u003cLabelDefinitionPopupComponent\u003e,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Inject(MAT_DIALOG_DATA) public data,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private _sanitizer: DomSanitizer"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.labelName \u003d data.header;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // since we only display HTML fetched from our own source, we can safely bypass the sanitization of HTML"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.labelDefinitionHtmlTemplate \u003d _sanitizer.bypassSecurityTrustHtml(data.body);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Closes the dialog."},{"lineNumber":32,"author":{"gitId":"-"},"content":" */"},{"lineNumber":33,"author":{"gitId":"-"},"content":" onNoClick(): void {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.dialogRef.close(false);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":35}},{"path":"src/app/shared/layout/header.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cmat-toolbar color\u003d\"primary\" style\u003d\"position: sticky; position: -webkit-sticky; top: 0; z-index: 1000\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":3,"author":{"gitId":"-"},"content":" *ngIf\u003d\"isBackButtonShown()\""},{"lineNumber":4,"author":{"gitId":"-"},"content":" mat-icon-button"},{"lineNumber":5,"author":{"gitId":"-"},"content":" class\u003d\"mat-toolbar mat-primary back-button\""},{"lineNumber":6,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.9)\""},{"lineNumber":7,"author":{"gitId":"-"},"content":" (click)\u003d\"goBack()\""},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003earrow_back_ios\u003c/mat-icon\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003ca class\u003d\"mat-toolbar mat-primary\" style\u003d\"text-decoration: none\" [routerLink]\u003d\"phaseService.currentPhase\""},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003eWATcher v{{ this.getVersion() }}\u003c/a"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"phase-descriptor\" *ngIf\u003d\"auth.isAuthenticated()\" style\u003d\"margin-left: 10px\"\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" ({{ this.getPhaseDescription(phaseService.currentPhase) }})"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 this.phaseService.sessionData.sessionRepo.length \u003e 1\"\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cbutton mat-button [matMenuTriggerFor]\u003d\"menu\"\u003e\u003cmat-icon style\u003d\"color: white\"\u003eexpand_more\u003c/mat-icon\u003e\u003c/button\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cmat-menu #menu\u003d\"matMenu\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":22,"author":{"gitId":"-"},"content":" mat-menu-item"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let sessionRepo of this.phaseService.sessionData.sessionRepo\""},{"lineNumber":24,"author":{"gitId":"-"},"content":" (click)\u003d\"this.routeToSelectedPhase(sessionRepo.phase)\""},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cspan\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cmat-icon [ngStyle]\u003d\"{ color: \u0027green\u0027, visibility: this.phaseService.currentPhase \u003d\u003d\u003d sessionRepo.phase ? \u0027visible\u0027 : \u0027hidden\u0027 }\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003edone\u003c/mat-icon"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" {{ this.getPhaseDescription(sessionRepo.phase) }}"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/mat-menu\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"cheehongw"},"content":" \u003c!-- everything else --\u003e"},{"lineNumber":37,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"flex: 1 1 auto\"\u003e\u003c/span\u003e"},{"lineNumber":39,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":40,"author":{"gitId":"cheehongw"},"content":" \u003cdiv *ngIf\u003d\"auth.isAuthenticated()\"\u003e"},{"lineNumber":41,"author":{"gitId":"cheehongw"},"content":" \u003cspan id\u003d\"phase-descriptor\" style\u003d\"margin-left: 10px\"\u003e"},{"lineNumber":42,"author":{"gitId":"cheehongw"},"content":" {{ this.currentRepo }}"},{"lineNumber":43,"author":{"gitId":"cheehongw"},"content":" \u003c/span\u003e"},{"lineNumber":44,"author":{"gitId":"cheehongw"},"content":" \u003cbutton mat-button matTooltip\u003d\"Change Repository\" (click)\u003d\"this.openChangeRepoDialog()\"\u003e"},{"lineNumber":45,"author":{"gitId":"cheehongw"},"content":" \u003cmat-icon\u003eedit\u003c/mat-icon\u003e"},{"lineNumber":46,"author":{"gitId":"cheehongw"},"content":" \u003c/button\u003e"},{"lineNumber":47,"author":{"gitId":"cheehongw"},"content":" \u003c/div\u003e"},{"lineNumber":48,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"flex: 1 1 auto\"\u003e\u003c/span\u003e"},{"lineNumber":50,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cbutton mat-button matTooltip\u003d\"Download WATcher Log\" (click)\u003d\"this.exportLogFile()\"\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003ereceipt\u003c/mat-icon\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cbutton mat-button matTooltip\u003d\"Give feedback about WATcher\" (click)\u003d\"openIssueTracker()\"\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003email\u003c/mat-icon\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":59,"author":{"gitId":"-"},"content":" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 isOpenUrlButtonShown()\""},{"lineNumber":60,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":61,"author":{"gitId":"-"},"content":" matTooltip\u003d\"View current page on GitHub\""},{"lineNumber":62,"author":{"gitId":"-"},"content":" (click)\u003d\"viewBrowser()\""},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eopen_in_new\u003c/mat-icon\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"sync-spinner\" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 (this.isLoading$ | async); else notLoading\"\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003cmat-spinner class\u003d\"white-spinner\" [diameter]\u003d\"20\"\u003e\u003c/mat-spinner\u003e"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u003cng-template #notLoading\u003e"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":73,"author":{"gitId":"-"},"content":" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 isReloadButtonShown() \u0026\u0026 !this.isReloadButtonDisabled\""},{"lineNumber":74,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":75,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Synchronize with Github data\""},{"lineNumber":76,"author":{"gitId":"-"},"content":" (click)\u003d\"reload()\""},{"lineNumber":77,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Sync"},{"lineNumber":79,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003erefresh\u003c/mat-icon\u003e"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"sync-spinner\" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 isReloadButtonShown() \u0026\u0026 this.isReloadButtonDisabled\"\u003e"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"font-size: 14px; margin-right: 7px\"\u003eSync\u003c/span\u003e"},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u003cmat-spinner class\u003d\"white-spinner\" [diameter]\u003d\"20\"\u003e\u003c/mat-spinner\u003e"},{"lineNumber":84,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":" \u003c/ng-template\u003e"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003cbutton *ngIf\u003d\"auth.isAuthenticated()\" mat-button matTooltip\u003d\"Log out\" (click)\u003d\"openLogOutDialog(); $event.stopPropagation()\"\u003e"},{"lineNumber":88,"author":{"gitId":"-"},"content":" ({{ userService.currentUser.loginId }})"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cmat-icon style\u003d\"margin-left: 2px\"\u003eexit_to_app\u003c/mat-icon\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003c/mat-toolbar\u003e"}],"authorContributionMap":{"-":78,"cheehongw":13}},{"path":"src/app/shared/layout/header.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Location } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Component, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Router, RoutesRecognized } from \u0027@angular/router\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { filter, pairwise, switchMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../core/models/phase.model\u0027;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Repo } from \u0027../../core/models/repo.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027../../core/services/auth.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../core/services/dialog.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../core/services/github.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { PhaseDescription, PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../core/services/user.service\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"const ISSUE_TRACKER_URL \u003d \u0027https://github.com/CATcher-org/WATcher/issues\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":22,"author":{"gitId":"-"},"content":" selector: \u0027app-layout-header\u0027,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" templateUrl: \u0027./header.component.html\u0027"},{"lineNumber":24,"author":{"gitId":"-"},"content":"})"},{"lineNumber":25,"author":{"gitId":"-"},"content":"export class HeaderComponent implements OnInit {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private prevUrl;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" isReloadButtonDisabled \u003d false;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" ISSUE_FILTER \u003d \u0027/issues?q\u003dis:issue+is:all\u0027; // the filtered list must be an issue and must be open"},{"lineNumber":29,"author":{"gitId":"-"},"content":" TUTORIAL_LABEL \u003d \u0027+label:tutorial.\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" TEAM_LABEL \u003d \u0027+label:team.\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" EXCLUDE_DUPLICATE \u003d \u0027+-label:duplicate\u0027; // exclude duplicate issues"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" public isLoading$: Observable\u003cboolean\u003e;"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" // Messages for the modal popup window upon logging out"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private readonly logOutDialogMessages \u003d [\u0027Do you wish to log out?\u0027];"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private readonly yesButtonDialogMessage \u003d \u0027Yes, I wish to log out\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private readonly noButtonDialogMessage \u003d \"No, I don\u0027t wish to log out\";"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"cheehongw"},"content":" /** Model for the displayed repository name */"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" currentRepo \u003d \u0027\u0027;"},{"lineNumber":42,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":44,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public auth: AuthService,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public phaseService: PhaseService,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public userService: UserService,"},{"lineNumber":48,"author":{"gitId":"cheehongw"},"content":" public logger: LoggingService,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private location: Location,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private dialogService: DialogService"},{"lineNumber":55,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" router.events"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":58,"author":{"gitId":"-"},"content":" filter((e: any) \u003d\u003e e instanceof RoutesRecognized),"},{"lineNumber":59,"author":{"gitId":"-"},"content":" pairwise()"},{"lineNumber":60,"author":{"gitId":"-"},"content":" )"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .subscribe((e) \u003d\u003e {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.prevUrl \u003d e[0].urlAfterRedirects;"},{"lineNumber":63,"author":{"gitId":"-"},"content":" });"},{"lineNumber":64,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":65,"author":{"gitId":"Eclipse-Dominator"},"content":" this.auth.currentAuthState.subscribe((authState) \u003d\u003e {"},{"lineNumber":66,"author":{"gitId":"cheehongw"},"content":" if (auth.isAuthenticated()) {"},{"lineNumber":67,"author":{"gitId":"cheehongw"},"content":" this.initializeRepoNameInTitle();"},{"lineNumber":68,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":69,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.isLoading$ \u003d this.issueService.isLoading.asObservable();"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Replaces and resets the current phase data and routes the app to the"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * newly selected phase."},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @param openPhase - Open Phase that is selected by the user."},{"lineNumber":80,"author":{"gitId":"-"},"content":" */"},{"lineNumber":81,"author":{"gitId":"-"},"content":" routeToSelectedPhase(openPhase: string): void {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // Do nothing if the selected phase is the current phase."},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (this.phaseService.currentPhase \u003d\u003d\u003d Phase[openPhase]) {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Replace Current Phase Data."},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.phaseService.changePhase(Phase[openPhase]);"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" // Remove current phase issues and load selected phase issues."},{"lineNumber":91,"author":{"gitId":"-"},"content":" this.githubService.reset();"},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.issueService.reset(false);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.reload();"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" // Route app to new phase."},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.router.navigateByUrl(this.phaseService.currentPhase);"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" isBackButtonShown(): boolean {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return `/${this.phaseService.currentPhase}` !\u003d\u003d this.router.url \u0026\u0026 this.router.url !\u003d\u003d \u0027/\u0027 \u0026\u0026 !this.router.url.startsWith(\u0027/?code\u0027);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":""},{"lineNumber":103,"author":{"gitId":"-"},"content":" isReloadButtonShown(): boolean {"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return this.router.url !\u003d\u003d \u0027/phaseBugReporting/issues/new\u0027;"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }"},{"lineNumber":106,"author":{"gitId":"-"},"content":""},{"lineNumber":107,"author":{"gitId":"-"},"content":" isOpenUrlButtonShown(): boolean {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return this.phaseService.currentPhase \u003d\u003d\u003d Phase.issuesViewer || this.phaseService.currentPhase \u003d\u003d\u003d Phase.activityDashboard;"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }"},{"lineNumber":110,"author":{"gitId":"-"},"content":""},{"lineNumber":111,"author":{"gitId":"-"},"content":" getVersion(): string {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return AppConfig.version;"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"-"},"content":" getPhaseDescription(openPhase: string): string {"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return PhaseDescription[openPhase];"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }"},{"lineNumber":118,"author":{"gitId":"-"},"content":""},{"lineNumber":119,"author":{"gitId":"-"},"content":" goBack() {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (this.prevUrl \u003d\u003d\u003d `/${this.phaseService.currentPhase}/issues/new`) {"},{"lineNumber":121,"author":{"gitId":"-"},"content":" this.router.navigateByUrl(this.phaseService.currentPhase);"},{"lineNumber":122,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":123,"author":{"gitId":"-"},"content":" this.location.back();"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }"},{"lineNumber":126,"author":{"gitId":"-"},"content":""},{"lineNumber":127,"author":{"gitId":"-"},"content":" viewBrowser() {"},{"lineNumber":128,"author":{"gitId":"-"},"content":" if (this.phaseService.currentPhase \u003d\u003d\u003d Phase.activityDashboard) {"},{"lineNumber":129,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.open(`https://github.com/${this.phaseService.currentRepo.owner}/${this.phaseService.currentRepo.name}/pulse`);"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }"},{"lineNumber":132,"author":{"gitId":"-"},"content":""},{"lineNumber":133,"author":{"gitId":"-"},"content":" const routerUrl \u003d this.router.url.substring(1); // remove the first \u0027/\u0027 from string"},{"lineNumber":134,"author":{"gitId":"-"},"content":" const issueUrlIndex \u003d routerUrl.indexOf(\u0027/\u0027); // find the index of second \u0027/\u0027"},{"lineNumber":135,"author":{"gitId":"-"},"content":" let issueUrl: string;"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":" // If can\u0027t find the index of second \u0027/\u0027, then router is at the /issues (table list) page"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (issueUrlIndex \u003c 0) {"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // Apply filters to the issueUrl"},{"lineNumber":140,"author":{"gitId":"-"},"content":" issueUrl \u003d this.ISSUE_FILTER;"},{"lineNumber":141,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // issueUrl will be from the second \u0027/\u0027"},{"lineNumber":143,"author":{"gitId":"-"},"content":" issueUrl \u003d routerUrl.substring(issueUrlIndex);"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // Open the url in user\u0027s preferred browser"},{"lineNumber":146,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.open(\u0027https://github.com/\u0027.concat(this.githubService.getRepoURL()).concat(issueUrl));"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }"},{"lineNumber":148,"author":{"gitId":"-"},"content":""},{"lineNumber":149,"author":{"gitId":"-"},"content":" openIssueTracker() {"},{"lineNumber":150,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.open(ISSUE_TRACKER_URL);"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" reload() {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" this.isReloadButtonDisabled \u003d true;"},{"lineNumber":155,"author":{"gitId":"-"},"content":""},{"lineNumber":156,"author":{"gitId":"-"},"content":" this.githubEventService.reloadPage().subscribe("},{"lineNumber":157,"author":{"gitId":"-"},"content":" (success) \u003d\u003e success,"},{"lineNumber":158,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":159,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error, () \u003d\u003e this.githubEventService.reloadPage());"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }"},{"lineNumber":161,"author":{"gitId":"-"},"content":" );"},{"lineNumber":162,"author":{"gitId":"-"},"content":""},{"lineNumber":163,"author":{"gitId":"-"},"content":" // Prevent user from spamming the reload button"},{"lineNumber":164,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" this.isReloadButtonDisabled \u003d false;"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }, 3000);"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }"},{"lineNumber":168,"author":{"gitId":"-"},"content":""},{"lineNumber":169,"author":{"gitId":"-"},"content":" logOut() {"},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.auth.logOut();"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }"},{"lineNumber":172,"author":{"gitId":"-"},"content":""},{"lineNumber":173,"author":{"gitId":"-"},"content":" openLogOutDialog() {"},{"lineNumber":174,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openUserConfirmationModal("},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.logOutDialogMessages,"},{"lineNumber":176,"author":{"gitId":"-"},"content":" this.yesButtonDialogMessage,"},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.noButtonDialogMessage"},{"lineNumber":178,"author":{"gitId":"-"},"content":" );"},{"lineNumber":179,"author":{"gitId":"-"},"content":""},{"lineNumber":180,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (res) {"},{"lineNumber":182,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`HeaderComponent: Logging out from ${this.userService.currentUser.loginId}`);"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.logOut();"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }"},{"lineNumber":185,"author":{"gitId":"-"},"content":" });"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }"},{"lineNumber":187,"author":{"gitId":"-"},"content":""},{"lineNumber":188,"author":{"gitId":"-"},"content":" exportLogFile() {"},{"lineNumber":189,"author":{"gitId":"cheehongw"},"content":" this.logger.exportLogFile();"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }"},{"lineNumber":191,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":192,"author":{"gitId":"cheehongw"},"content":" initializeRepoNameInTitle() {"},{"lineNumber":193,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (Repo.isInvalidRepoName(this.phaseService.currentRepo)) {"},{"lineNumber":194,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return;"},{"lineNumber":195,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":196,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const currentRepoString \u003d this.phaseService.currentRepo.toString();"},{"lineNumber":197,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`HeaderComponent: initializing current repository name as ${currentRepoString}`);"},{"lineNumber":198,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.currentRepo \u003d currentRepoString;"},{"lineNumber":199,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":200,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":201,"author":{"gitId":"cheehongw"},"content":" /**"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * Change repository viewed on Issue Dashboard, if a valid repository is provided."},{"lineNumber":203,"author":{"gitId":"cheehongw"},"content":" */"},{"lineNumber":204,"author":{"gitId":"-"},"content":" changeRepositoryIfValid(repo: Repo, newRepoString: string) {"},{"lineNumber":205,"author":{"gitId":"Eclipse-Dominator"},"content":" this.phaseService"},{"lineNumber":206,"author":{"gitId":"Eclipse-Dominator"},"content":" .changeRepositoryIfValid(repo)"},{"lineNumber":207,"author":{"gitId":"-"},"content":" .then(() \u003d\u003e {"},{"lineNumber":208,"author":{"gitId":"-"},"content":" this.auth.setTitleWithPhaseDetail();"},{"lineNumber":209,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.currentRepo \u003d newRepoString;"},{"lineNumber":210,"author":{"gitId":"-"},"content":" })"},{"lineNumber":211,"author":{"gitId":"-"},"content":" .catch((error) \u003d\u003e this.errorHandlingService.handleError(error));"},{"lineNumber":212,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":213,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":214,"author":{"gitId":"cheehongw"},"content":" openChangeRepoDialog() {"},{"lineNumber":215,"author":{"gitId":"cheehongw"},"content":" const dialogRef \u003d this.dialogService.openChangeRepoDialog(this.currentRepo);"},{"lineNumber":216,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":217,"author":{"gitId":"Eclipse-Dominator"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":218,"author":{"gitId":"cheehongw"},"content":" if (!res) {"},{"lineNumber":219,"author":{"gitId":"cheehongw"},"content":" return;"},{"lineNumber":220,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":221,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const newRepo \u003d Repo.of(res);"},{"lineNumber":222,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":223,"author":{"gitId":"-"},"content":" this.changeRepositoryIfValid(newRepo, res);"},{"lineNumber":224,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }"},{"lineNumber":226,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":7,"vigneshsankariyer1234567890":13,"-":183,"cheehongw":23}},{"path":"src/app/shared/material.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { DragDropModule } from \u0027@angular/cdk/drag-drop\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ScrollingModule } from \u0027@angular/cdk/scrolling\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { CdkTableModule } from \u0027@angular/cdk/table\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { CdkTreeModule } from \u0027@angular/cdk/tree\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatAutocompleteModule } from \u0027@angular/material/autocomplete\u0027;"},{"lineNumber":8,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatBadgeModule } from \u0027@angular/material/badge\u0027;"},{"lineNumber":9,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatBottomSheetModule } from \u0027@angular/material/bottom-sheet\u0027;"},{"lineNumber":10,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatButtonModule } from \u0027@angular/material/button\u0027;"},{"lineNumber":11,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatButtonToggleModule } from \u0027@angular/material/button-toggle\u0027;"},{"lineNumber":12,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatCardModule } from \u0027@angular/material/card\u0027;"},{"lineNumber":13,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatCheckboxModule } from \u0027@angular/material/checkbox\u0027;"},{"lineNumber":14,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatChipsModule } from \u0027@angular/material/chips\u0027;"},{"lineNumber":15,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatNativeDateModule, MatRippleModule } from \u0027@angular/material/core\u0027;"},{"lineNumber":16,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDatepickerModule } from \u0027@angular/material/datepicker\u0027;"},{"lineNumber":17,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDialogModule } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":18,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDividerModule } from \u0027@angular/material/divider\u0027;"},{"lineNumber":19,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatExpansionModule } from \u0027@angular/material/expansion\u0027;"},{"lineNumber":20,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatGridListModule } from \u0027@angular/material/grid-list\u0027;"},{"lineNumber":21,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatIconModule } from \u0027@angular/material/icon\u0027;"},{"lineNumber":22,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatInputModule } from \u0027@angular/material/input\u0027;"},{"lineNumber":23,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatListModule } from \u0027@angular/material/list\u0027;"},{"lineNumber":24,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatMenuModule } from \u0027@angular/material/menu\u0027;"},{"lineNumber":25,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatPaginatorModule } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":26,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatProgressBarModule } from \u0027@angular/material/progress-bar\u0027;"},{"lineNumber":27,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatProgressSpinnerModule } from \u0027@angular/material/progress-spinner\u0027;"},{"lineNumber":28,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatRadioModule } from \u0027@angular/material/radio\u0027;"},{"lineNumber":29,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSelectModule } from \u0027@angular/material/select\u0027;"},{"lineNumber":30,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSidenavModule } from \u0027@angular/material/sidenav\u0027;"},{"lineNumber":31,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSlideToggleModule } from \u0027@angular/material/slide-toggle\u0027;"},{"lineNumber":32,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSliderModule } from \u0027@angular/material/slider\u0027;"},{"lineNumber":33,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSnackBarModule } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":34,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSortModule } from \u0027@angular/material/sort\u0027;"},{"lineNumber":35,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatStepperModule } from \u0027@angular/material/stepper\u0027;"},{"lineNumber":36,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatTableModule } from \u0027@angular/material/table\u0027;"},{"lineNumber":37,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatTabsModule } from \u0027@angular/material/tabs\u0027;"},{"lineNumber":38,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatToolbarModule } from \u0027@angular/material/toolbar\u0027;"},{"lineNumber":39,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatTooltipModule } from \u0027@angular/material/tooltip\u0027;"},{"lineNumber":40,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatTreeModule } from \u0027@angular/material/tree\u0027;"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exports: ["},{"lineNumber":44,"author":{"gitId":"-"},"content":" CdkTableModule,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" CdkTreeModule,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" DragDropModule,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" MatAutocompleteModule,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" MatBadgeModule,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" MatBottomSheetModule,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" MatButtonModule,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" MatButtonToggleModule,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" MatCardModule,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" MatCheckboxModule,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" MatChipsModule,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" MatStepperModule,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" MatDatepickerModule,"},{"lineNumber":57,"author":{"gitId":"-"},"content":" MatDialogModule,"},{"lineNumber":58,"author":{"gitId":"-"},"content":" MatDividerModule,"},{"lineNumber":59,"author":{"gitId":"-"},"content":" MatExpansionModule,"},{"lineNumber":60,"author":{"gitId":"-"},"content":" MatGridListModule,"},{"lineNumber":61,"author":{"gitId":"-"},"content":" MatIconModule,"},{"lineNumber":62,"author":{"gitId":"-"},"content":" MatInputModule,"},{"lineNumber":63,"author":{"gitId":"-"},"content":" MatListModule,"},{"lineNumber":64,"author":{"gitId":"-"},"content":" MatMenuModule,"},{"lineNumber":65,"author":{"gitId":"-"},"content":" MatNativeDateModule,"},{"lineNumber":66,"author":{"gitId":"-"},"content":" MatPaginatorModule,"},{"lineNumber":67,"author":{"gitId":"-"},"content":" MatProgressBarModule,"},{"lineNumber":68,"author":{"gitId":"-"},"content":" MatProgressSpinnerModule,"},{"lineNumber":69,"author":{"gitId":"-"},"content":" MatRadioModule,"},{"lineNumber":70,"author":{"gitId":"-"},"content":" MatRippleModule,"},{"lineNumber":71,"author":{"gitId":"-"},"content":" MatSelectModule,"},{"lineNumber":72,"author":{"gitId":"-"},"content":" MatSidenavModule,"},{"lineNumber":73,"author":{"gitId":"-"},"content":" MatSliderModule,"},{"lineNumber":74,"author":{"gitId":"-"},"content":" MatSlideToggleModule,"},{"lineNumber":75,"author":{"gitId":"-"},"content":" MatSnackBarModule,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" MatSortModule,"},{"lineNumber":77,"author":{"gitId":"-"},"content":" MatTableModule,"},{"lineNumber":78,"author":{"gitId":"-"},"content":" MatTabsModule,"},{"lineNumber":79,"author":{"gitId":"-"},"content":" MatToolbarModule,"},{"lineNumber":80,"author":{"gitId":"-"},"content":" MatTooltipModule,"},{"lineNumber":81,"author":{"gitId":"-"},"content":" MatTreeModule,"},{"lineNumber":82,"author":{"gitId":"-"},"content":" ScrollingModule"},{"lineNumber":83,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":84,"author":{"gitId":"-"},"content":"})"},{"lineNumber":85,"author":{"gitId":"-"},"content":"export class MaterialModule {}"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":"/** Copyright 2018 Google Inc. All Rights Reserved."},{"lineNumber":88,"author":{"gitId":"-"},"content":" Use of this source code is governed by an MIT-style license that"},{"lineNumber":89,"author":{"gitId":"-"},"content":" can be found in the LICENSE file at http://angular.io/license */"}],"authorContributionMap":{"Echomo-Xinyu":34,"-":55}},{"path":"src/app/shared/repo-change-form/repo-change-form.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"cheehongw"},"content":".change-repo-form-title {"},{"lineNumber":2,"author":{"gitId":"cheehongw"},"content":" width: 100%;"},{"lineNumber":3,"author":{"gitId":"cheehongw"},"content":"}"},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":5,"author":{"gitId":"cheehongw"},"content":".mat-dialog-content {"},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":" width: 100%;"},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":"}"},{"lineNumber":8,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":9,"author":{"gitId":"cheehongw"},"content":".mat-form-field {"},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":" width: 100%;"},{"lineNumber":11,"author":{"gitId":"cheehongw"},"content":"}"},{"lineNumber":12,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":13,"author":{"gitId":"cheehongw"},"content":".mat-dialog-actions {"},{"lineNumber":14,"author":{"gitId":"cheehongw"},"content":" justify-content: flex-end;"},{"lineNumber":15,"author":{"gitId":"cheehongw"},"content":"}"}],"authorContributionMap":{"cheehongw":15}},{"path":"src/app/shared/repo-change-form/repo-change-form.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"cheehongw"},"content":"\u003ch1 mat-dialog-title class\u003d\"change-repo-form-title\"\u003eChange repository\u003c/h1\u003e"},{"lineNumber":2,"author":{"gitId":"cheehongw"},"content":"\u003cdiv mat-dialog-content\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cform (ngSubmit)\u003d\"onYesClick()\"\u003e"},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":" \u003cmat-form-field appearance\u003d\"fill\"\u003e"},{"lineNumber":5,"author":{"gitId":"cheehongw"},"content":" \u003cmat-label\u003eRepository Location (Org/Repo)\u003c/mat-label\u003e"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cinput matInput [(ngModel)]\u003d\"this.repoName\" [formControl]\u003d\"repoChangeForm\" [matAutocomplete]\u003d\"auto\" /\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003cmat-autocomplete #auto\u003d\"matAutocomplete\"\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cmat-option *ngFor\u003d\"let suggestion of filteredSuggestions | async\" [value]\u003d\"suggestion\"\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" {{ suggestion }}"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c/mat-option\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003c/mat-autocomplete\u003e"},{"lineNumber":12,"author":{"gitId":"cheehongw"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/form\u003e"},{"lineNumber":14,"author":{"gitId":"cheehongw"},"content":"\u003c/div\u003e"},{"lineNumber":15,"author":{"gitId":"cheehongw"},"content":"\u003cdiv mat-dialog-actions\u003e"},{"lineNumber":16,"author":{"gitId":"cheehongw"},"content":" \u003cbutton mat-button (click)\u003d\"onNoClick()\" color\u003d\"warn\"\u003eCancel\u003c/button\u003e"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton mat-button (click)\u003d\"onYesClick()\" color\u003d\"primary\"\u003eChange Repo\u003c/button\u003e"},{"lineNumber":18,"author":{"gitId":"cheehongw"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"Eclipse-Dominator":2,"-":7,"cheehongw":9}},{"path":"src/app/shared/repo-change-form/repo-change-form.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormControl } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { RepoUrlCacheService } from \u0027../../core/services/repo-url-cache.service\u0027;"},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":"@Component({"},{"lineNumber":8,"author":{"gitId":"cheehongw"},"content":" selector: \u0027app-repo-change-form\u0027,"},{"lineNumber":9,"author":{"gitId":"cheehongw"},"content":" templateUrl: \u0027./repo-change-form.component.html\u0027,"},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":" styleUrls: [\u0027./repo-change-form.component.css\u0027]"},{"lineNumber":11,"author":{"gitId":"cheehongw"},"content":"})"},{"lineNumber":12,"author":{"gitId":"-"},"content":"export class RepoChangeFormComponent implements OnInit {"},{"lineNumber":13,"author":{"gitId":"Echomo-Xinyu"},"content":" public repoName: String;"},{"lineNumber":14,"author":{"gitId":"-"},"content":" filteredSuggestions: Observable\u003cstring[]\u003e;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" repoChangeForm \u003d new FormControl();"},{"lineNumber":16,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":18,"author":{"gitId":"-"},"content":" public dialogRef: MatDialogRef\u003cRepoChangeFormComponent\u003e,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private repoUrlCacheService: RepoUrlCacheService,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Inject(MAT_DIALOG_DATA) public data"},{"lineNumber":21,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":22,"author":{"gitId":"cheehongw"},"content":" this.repoName \u003d data.repoName;"},{"lineNumber":23,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":24,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.initRepoChangeForm();"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" private initRepoChangeForm() {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.filteredSuggestions \u003d this.repoUrlCacheService.getFilteredSuggestions(this.repoChangeForm);"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"cheehongw"},"content":" onYesClick(): void {"},{"lineNumber":34,"author":{"gitId":"cheehongw"},"content":" this.dialogRef.close(this.repoName);"},{"lineNumber":35,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":36,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":37,"author":{"gitId":"cheehongw"},"content":" onNoClick(): void {"},{"lineNumber":38,"author":{"gitId":"cheehongw"},"content":" this.dialogRef.close(false);"},{"lineNumber":39,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":40,"author":{"gitId":"cheehongw"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":2,"-":20,"cheehongw":18}},{"path":"tests/app/auth/confirm-login/confirm-login.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { async, ComponentFixture, TestBed } from \u0027@angular/core/testing\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ConfirmLoginComponent } from \u0027../../../../src/app/auth/confirm-login/confirm-login.component\u0027;"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Repo } from \u0027../../../../src/app/core/models/repo.model\u0027;"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { User, UserRole } from \u0027../../../../src/app/core/models/user.model\u0027;"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { AuthService } from \u0027../../../../src/app/core/services/auth.service\u0027;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ErrorHandlingService } from \u0027../../../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { GithubService } from \u0027../../../../src/app/core/services/github.service\u0027;"},{"lineNumber":10,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { GithubEventService } from \u0027../../../../src/app/core/services/githubevent.service\u0027;"},{"lineNumber":11,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoggingService } from \u0027../../../../src/app/core/services/logging.service\u0027;"},{"lineNumber":12,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { PhaseService } from \u0027../../../../src/app/core/services/phase.service\u0027;"},{"lineNumber":13,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { UserService } from \u0027../../../../src/app/core/services/user.service\u0027;"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"const mockUser: User \u003d {"},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loginId: \u0027Mock User\u0027,"},{"lineNumber":17,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" role: UserRole.Student"},{"lineNumber":18,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"};"},{"lineNumber":19,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"const getRepoWithValidName \u003d () \u003d\u003e new Repo(\u0027mock\u0027, \u0027repo\u0027);"},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"describe(\u0027ConfirmLoginComponent\u0027, () \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let authService: jasmine.SpyObj\u003cAuthService\u003e;"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let phaseService: jasmine.SpyObj\u003cPhaseService\u003e;"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let userService: jasmine.SpyObj\u003cUserService\u003e;"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let errorHandlingService: jasmine.SpyObj\u003cErrorHandlingService\u003e;"},{"lineNumber":27,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let githubEventService: jasmine.SpyObj\u003cGithubEventService\u003e;"},{"lineNumber":28,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let logger: jasmine.SpyObj\u003cLoggingService\u003e;"},{"lineNumber":29,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let router: jasmine.SpyObj\u003cRouter\u003e;"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let githubService: jasmine.SpyObj\u003cGithubService\u003e;"},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let component: ConfirmLoginComponent;"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let fixture: ComponentFixture\u003cConfirmLoginComponent\u003e;"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" beforeEach(async(() \u003d\u003e {"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" authService \u003d jasmine.createSpyObj\u003cAuthService\u003e(\u0027AuthService\u0027, [\u0027changeAuthState\u0027, \u0027setTitleWithPhaseDetail\u0027, \u0027startOAuthProcess\u0027]);"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" phaseService \u003d jasmine.createSpyObj\u003cPhaseService\u003e(\u0027PhaseService\u0027, [\u0027initializeCurrentRepository\u0027, \u0027currentRepo\u0027]);"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger \u003d jasmine.createSpyObj\u003cLoggingService\u003e(\u0027LoggingService\u0027, [\u0027info\u0027]);"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" userService \u003d jasmine.createSpyObj\u003cUserService\u003e(\u0027UserService\u0027, [\u0027createUserModel\u0027]);"},{"lineNumber":39,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" githubService \u003d jasmine.createSpyObj\u003cGithubService\u003e(\u0027GithubService\u0027, [\u0027isRepositoryPresent\u0027]);"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" githubEventService \u003d jasmine.createSpyObj\u003cGithubEventService\u003e(\u0027GithubEventService\u0027, [\u0027setLatestChangeEvent\u0027]);"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" router \u003d jasmine.createSpyObj\u003cRouter\u003e(\u0027Router\u0027, [\u0027navigateByUrl\u0027]);"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" errorHandlingService \u003d jasmine.createSpyObj\u003cErrorHandlingService\u003e(\u0027ErrorHandlingService\u0027, [\u0027handleError\u0027]);"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" TestBed.configureTestingModule({"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" providers: ["},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: AuthService, useValue: authService },"},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: PhaseService, useValue: phaseService },"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: LoggingService, useValue: logger },"},{"lineNumber":49,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: UserService, useValue: userService },"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: GithubService, useValue: githubService },"},{"lineNumber":51,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: GithubEventService, useValue: githubEventService },"},{"lineNumber":52,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: Router, useValue: router },"},{"lineNumber":53,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: ErrorHandlingService, useValue: errorHandlingService }"},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ],"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" declarations: [ConfirmLoginComponent]"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }).compileComponents();"},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":58,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" fixture \u003d TestBed.createComponent(ConfirmLoginComponent);"},{"lineNumber":59,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" component \u003d fixture.componentInstance;"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" fixture.detectChanges();"},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }));"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should create\u0027, () \u003d\u003e {"},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(component).toBeTruthy();"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should complete login process with valid repo\u0027, () \u003d\u003e {"},{"lineNumber":68,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" userService.createUserModel.and.returnValue(of(mockUser));"},{"lineNumber":69,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" phaseService.currentRepo \u003d getRepoWithValidName();"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" githubService.isRepositoryPresent.and.returnValue(of(true));"},{"lineNumber":71,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" component.completeLoginProcess();"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":74,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(authService.changeAuthState).toHaveBeenCalled();"},{"lineNumber":75,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(phaseService.initializeCurrentRepository).toHaveBeenCalled();"},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(logger.info).toHaveBeenCalled();"},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(userService.createUserModel).toHaveBeenCalled();"},{"lineNumber":78,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(githubService.isRepositoryPresent).toHaveBeenCalled();"},{"lineNumber":79,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(githubEventService.setLatestChangeEvent).toHaveBeenCalled();"},{"lineNumber":80,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(component.handleAuthSuccess).toHaveBeenCalledTimes(2);"},{"lineNumber":81,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":82,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":82}},{"path":"tests/app/core/models/session-model.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":3,"author":{"gitId":"-"},"content":" assertSessionDataIntegrity,"},{"lineNumber":4,"author":{"gitId":"-"},"content":" NO_ACCESSIBLE_PHASES,"},{"lineNumber":5,"author":{"gitId":"-"},"content":" NO_VALID_OPEN_PHASES,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" OPENED_PHASE_REPO_UNDEFINED,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" SESSION_DATA_MISSING_OPENPHASES_KEY,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" SESSION_DATA_UNAVAILABLE"},{"lineNumber":9,"author":{"gitId":"-"},"content":"} from \u0027../../../../src/app/core/models/session.model\u0027;"},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":"import { BUG_REPORTING_PHASE_SESSION_DATA } from \u0027../../../constants/session.constants\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"describe(\u0027Session Model\u0027, () \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" describe(\u0027assertSessionDataIntegrity()\u0027, () \u003d\u003e {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" it(\u0027should throw error on unavailable session\u0027, () \u003d\u003e {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" of(undefined)"},{"lineNumber":16,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":17,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":19,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(SESSION_DATA_UNAVAILABLE))"},{"lineNumber":20,"author":{"gitId":"-"},"content":" });"},{"lineNumber":21,"author":{"gitId":"-"},"content":" });"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" it(\u0027should throw error on session data with missing crucial values\u0027, () \u003d\u003e {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" of({ dummyKey: undefined })"},{"lineNumber":25,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":26,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":27,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":28,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(SESSION_DATA_MISSING_OPENPHASES_KEY))"},{"lineNumber":29,"author":{"gitId":"-"},"content":" });"},{"lineNumber":30,"author":{"gitId":"-"},"content":" });"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" it(\u0027should throw error on session with no open phases\u0027, () \u003d\u003e {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" of(NO_OPEN_PHASES_SESSION_DATA)"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":36,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":37,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(NO_ACCESSIBLE_PHASES))"},{"lineNumber":38,"author":{"gitId":"-"},"content":" });"},{"lineNumber":39,"author":{"gitId":"-"},"content":" });"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" it(\u0027should throw error on session data with invalid open phases\u0027, () \u003d\u003e {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" of({ ...BUG_REPORTING_PHASE_SESSION_DATA, openPhases: [\u0027unknownPhase\u0027] })"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":45,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":46,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(NO_VALID_OPEN_PHASES))"},{"lineNumber":47,"author":{"gitId":"-"},"content":" });"},{"lineNumber":48,"author":{"gitId":"-"},"content":" });"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" it(\u0027should throw error on session data with undefined repo for open phase\u0027, () \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" of({ ...BUG_REPORTING_PHASE_SESSION_DATA, phaseBugReporting: undefined })"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":54,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":55,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":56,"author":{"gitId":"-"},"content":" });"},{"lineNumber":57,"author":{"gitId":"-"},"content":" of({ ...BUG_REPORTING_PHASE_SESSION_DATA, phaseBugReporting: null })"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":60,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":61,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":62,"author":{"gitId":"-"},"content":" });"},{"lineNumber":63,"author":{"gitId":"-"},"content":" of({ ...BUG_REPORTING_PHASE_SESSION_DATA, phaseBugReporting: \u0027\u0027 })"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":66,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":67,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":68,"author":{"gitId":"-"},"content":" });"},{"lineNumber":69,"author":{"gitId":"-"},"content":" });"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" it(\u0027should not throw error if session data contains repo information of unopened phases\u0027, () \u003d\u003e {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" of(BUG_REPORTING_PHASE_SESSION_DATA)"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":75,"author":{"gitId":"-"},"content":" next: (el) \u003d\u003e expect(el).toEqual(BUG_REPORTING_PHASE_SESSION_DATA),"},{"lineNumber":76,"author":{"gitId":"-"},"content":" error: () \u003d\u003e fail()"},{"lineNumber":77,"author":{"gitId":"-"},"content":" });"},{"lineNumber":78,"author":{"gitId":"-"},"content":" });"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" it(\u0027should pass valid session data\u0027, () \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" of(BUG_REPORTING_PHASE_SESSION_DATA)"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .subscribe((el) \u003d\u003e expect(el).toEqual(BUG_REPORTING_PHASE_SESSION_DATA));"},{"lineNumber":84,"author":{"gitId":"-"},"content":" });"},{"lineNumber":85,"author":{"gitId":"-"},"content":" });"},{"lineNumber":86,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"-":85,"cheehongw":1}},{"path":"tests/app/issues-viewer/label-filter-bar/label-filter-bar.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Echomo-Xinyu"},"content":"import { ComponentFixture, TestBed, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LabelFilterBarComponent } from \u0027../../../../src/app/issues-viewer/label-filter-bar/label-filter-bar.component\u0027;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"// const dummyDataLabels: simplifiedLabel[] \u003d ["},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":"// {"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":"// name: \u0027dummy1\u0027,"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":"// color: \u0027#2A6478\u0027"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":"// },"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"// {"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":"// name: \u0027dummy2\u0027,"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"// color: \u0027#705335\u0027"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":"// },"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":"// {"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":"// name: \u0027dummy3\u0027,"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":"// color: \u0027#6D3F5B\u0027"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":"// },"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":"// {"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":"// name: \u0027dummy4\u0027,"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":"// color: \u0027#587246\u0027"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":"// },"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":"// {"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":"// name: \u0027dummy5\u0027,"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":"// color: \u0027#FF7514\u0027"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":"// },"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":"// {"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":"// name: \u0027dummy6\u0027,"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":"// color: \u0027#1D334A\u0027"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":"// }"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":"// ];"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":"describe(\u0027LabelFilterBarComponent\u0027, () \u003d\u003e {"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" let component: LabelFilterBarComponent;"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" let fixture: ComponentFixture\u003cLabelFilterBarComponent\u003e;"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":36,"author":{"gitId":"Echomo-Xinyu"},"content":" beforeEach("},{"lineNumber":37,"author":{"gitId":"Echomo-Xinyu"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" TestBed.configureTestingModule({"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" declarations: [LabelFilterBarComponent]"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" }).compileComponents();"},{"lineNumber":41,"author":{"gitId":"Echomo-Xinyu"},"content":" })"},{"lineNumber":42,"author":{"gitId":"Echomo-Xinyu"},"content":" );"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" fixture \u003d TestBed.createComponent(LabelFilterBarComponent);"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":" component \u003d fixture.componentInstance;"},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":" fixture.detectChanges();"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should create\u0027, () \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(component).toBeTruthy();"},{"lineNumber":52,"author":{"gitId":"Eclipse-Dominator"},"content":" console.log(component);"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":54,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027can filter for labels containing the search key\u0027, () \u003d\u003e {});"},{"lineNumber":56,"author":{"gitId":"Eclipse-Dominator"},"content":"});"}],"authorContributionMap":{"Echomo-Xinyu":5,"Eclipse-Dominator":51}},{"path":"tests/app/shared/issue-tables/issue-paginator.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { paginateData } from \u0027../../../../src/app/shared/issue-tables/issue-paginator\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { TEAM_4 } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":6,"author":{"gitId":"-"},"content":" ISSUE_WITH_ASSIGNEES,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY"},{"lineNumber":10,"author":{"gitId":"-"},"content":"} from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"describe(\u0027issue-paginator\u0027, () \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" describe(\u0027paginateData()\u0027, () \u003d\u003e {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" let dataSet_7: Issue[];"},{"lineNumber":15,"author":{"gitId":"-"},"content":" let paginator: MatPaginator;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" const dummyTeam \u003d TEAM_4;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" const mediumSeverityIssueWithResponse: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":18,"author":{"gitId":"-"},"content":" const mediumSeverityIssueWithAssigneee: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_ASSIGNEES, dummyTeam);"},{"lineNumber":19,"author":{"gitId":"-"},"content":" const lowSeverityFeatureFlawIssue: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY, dummyTeam);"},{"lineNumber":20,"author":{"gitId":"-"},"content":" const highSeverityDocumentationBugIssue: Issue \u003d Issue.createPhaseTeamResponseIssue("},{"lineNumber":21,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" dummyTeam"},{"lineNumber":23,"author":{"gitId":"-"},"content":" );"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" dataSet_7 \u003d ["},{"lineNumber":27,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":33,"author":{"gitId":"-"},"content":" highSeverityDocumentationBugIssue"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":35,"author":{"gitId":"-"},"content":" paginator \u003d { pageSize: 3 } as MatPaginator;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" });"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" it(\u0027should set the length of paginator to the length of data\u0027, () \u003d\u003e {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" paginateData(paginator, dataSet_7);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" expect(paginator.length).toEqual(7);"},{"lineNumber":41,"author":{"gitId":"-"},"content":" });"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" it(\u0027should return list of issues according to page index\u0027, () \u003d\u003e {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" paginator.pageIndex \u003d 0;"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Returns issues index 0 to 2"},{"lineNumber":47,"author":{"gitId":"-"},"content":" const returnedList \u003d paginateData(paginator, dataSet_7);"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expect(returnedList).toEqual([mediumSeverityIssueWithResponse, mediumSeverityIssueWithAssigneee, lowSeverityFeatureFlawIssue]);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" });"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" it(\u0027should return list of issues in the previous page if there are no issues on the current page\u0027, () \u003d\u003e {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" paginator.pageIndex \u003d 3;"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Returns issues index 6 on page 2"},{"lineNumber":55,"author":{"gitId":"-"},"content":" const returnedList \u003d paginateData(paginator, dataSet_7);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" expect(returnedList).toEqual([highSeverityDocumentationBugIssue]);"},{"lineNumber":57,"author":{"gitId":"-"},"content":" });"},{"lineNumber":58,"author":{"gitId":"-"},"content":" });"},{"lineNumber":59,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":58}},{"path":"tests/app/shared/issue-tables/issue-sorter.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { getSortedData } from \u0027../../../../src/app/shared/issue-tables/issue-sorter\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { TEAM_4 } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { ISSUE_PENDING_MODERATION, ISSUE_WITH_ASSIGNEES, ISSUE_WITH_EMPTY_DESCRIPTION } from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"describe(\u0027issuer-sorter\u0027, () \u003d\u003e {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" describe(\u0027getSortedData()\u0027, () \u003d\u003e {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" const dummyTeam \u003d TEAM_4;"},{"lineNumber":10,"author":{"gitId":"-"},"content":" const dummyIssue: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":11,"author":{"gitId":"-"},"content":" const otherDummyIssue: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_ASSIGNEES, dummyTeam);"},{"lineNumber":12,"author":{"gitId":"-"},"content":" const issuesList: Issue[] \u003d [dummyIssue, otherDummyIssue];"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":" const moderationIssue: Issue \u003d Issue.createPhaseModerationIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" const otherModerationIssue: Issue \u003d Issue.createPhaseModerationIssue(ISSUE_PENDING_MODERATION, dummyTeam);"},{"lineNumber":16,"author":{"gitId":"-"},"content":" const todoIssuesList: Issue[] \u003d [moderationIssue, otherModerationIssue];"},{"lineNumber":17,"author":{"gitId":"-"},"content":" const matSort: MatSort \u003d new MatSort();"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" it(\u0027sorts issues based on their assignees correctly\u0027, () \u003d\u003e {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027assignees\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" const sortedIssuesByAssigneesAsc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByAssigneesAsc, dummyIssue, otherDummyIssue);"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" const sortedIssuesByAssigneesDesc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByAssigneesDesc, otherDummyIssue, dummyIssue);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" });"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" it(\u0027sorts issues based on their string fields correctly\u0027, () \u003d\u003e {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027title\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" const sortedIssuesByTitleAsc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByTitleAsc, dummyIssue, otherDummyIssue);"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" const sortedIssuesByTitleDesc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByTitleDesc, otherDummyIssue, dummyIssue);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" });"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" it(\u0027sorts issues based on their integer fields correctly\u0027, () \u003d\u003e {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027id\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" const sortedIssuedByIdAsc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuedByIdAsc, otherDummyIssue, dummyIssue);"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" const sortedIssuedByIdDesc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuedByIdDesc, dummyIssue, otherDummyIssue);"},{"lineNumber":50,"author":{"gitId":"-"},"content":" });"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" it(\u0027sorts issues based on their todos left correctly\u0027, () \u003d\u003e {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027Todo Remaining\u0027;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":55,"author":{"gitId":"-"},"content":" const sortedIssuesByTodoAsc \u003d getSortedData(matSort, todoIssuesList);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByTodoAsc, otherModerationIssue, moderationIssue);"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" const sortedIssuesByTodoDesc \u003d getSortedData(matSort, todoIssuesList);"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByTodoDesc, moderationIssue, otherModerationIssue);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" });"},{"lineNumber":62,"author":{"gitId":"-"},"content":" });"},{"lineNumber":63,"author":{"gitId":"-"},"content":"});"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * This helper method helps to check if the sorted issues are in their"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * correct order based on the variable arguments provided."},{"lineNumber":68,"author":{"gitId":"-"},"content":" */"},{"lineNumber":69,"author":{"gitId":"-"},"content":"function assertOrder(sortedIssues: Issue[], ...expectedSortedIssues: Issue[]) {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c sortedIssues.length; i++) {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expect(sortedIssues[i].id).toBe(expectedSortedIssues[i].id);"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":72}},{"path":"tests/app/shared/issue-tables/search-filter.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Team } from \u0027../../../../src/app/core/models/team.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027../../../../src/app/shared/issue-tables/issue-tables-columns\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { applySearchFilter } from \u0027../../../../src/app/shared/issue-tables/search-filter\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { USER_ANUBHAV } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" DUPLICATED_ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" ISSUE_WITH_ASSIGNEES,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY"},{"lineNumber":13,"author":{"gitId":"-"},"content":"} from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"describe(\u0027search-filter\u0027, () \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" describe(\u0027applySearchFilter()\u0027, () \u003d\u003e {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" const dummyTeam: Team \u003d new Team({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" id: \u0027dummyId\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" teamMembers: []"},{"lineNumber":20,"author":{"gitId":"-"},"content":" });"},{"lineNumber":21,"author":{"gitId":"-"},"content":" let searchKey: string;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" const mediumSeverityIssueWithResponse: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse.responseTag \u003d \u0027Accepted\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" const mediumSeverityIssueWithAssigneee: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_ASSIGNEES, dummyTeam);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" const lowSeverityFeatureFlawIssue: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY, dummyTeam);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" const highSeverityDocumentationBugIssue: Issue \u003d Issue.createPhaseTeamResponseIssue("},{"lineNumber":27,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" dummyTeam"},{"lineNumber":29,"author":{"gitId":"-"},"content":" );"},{"lineNumber":30,"author":{"gitId":"-"},"content":" const duplicatedIssue: Issue \u003d Issue.createPhaseTeamResponseIssue(DUPLICATED_ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY, dummyTeam);"},{"lineNumber":31,"author":{"gitId":"-"},"content":" duplicatedIssue.duplicateOf \u003d highSeverityDocumentationBugIssue.id;"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" const issuesList: Issue[] \u003d ["},{"lineNumber":34,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" highSeverityDocumentationBugIssue"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":39,"author":{"gitId":"-"},"content":" const displayedColumns: string[] \u003d ["},{"lineNumber":40,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.ID,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.TITLE,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.TYPE,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.SEVERITY,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.RESPONSE,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.ASSIGNEE,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.DUPLICATED_ISSUES"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const issueService: IssueService \u003d new IssueService(null, null, null);"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(mediumSeverityIssueWithResponse);"},{"lineNumber":52,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(mediumSeverityIssueWithAssigneee);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(lowSeverityFeatureFlawIssue);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(highSeverityDocumentationBugIssue);"},{"lineNumber":55,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(duplicatedIssue);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" });"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":" it(\u0027can filter for issues which are assigned to a specific user\u0027, () \u003d\u003e {"},{"lineNumber":59,"author":{"gitId":"-"},"content":" searchKey \u003d USER_ANUBHAV.loginId;"},{"lineNumber":60,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithAssigneee]);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" });"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" it(\u0027can filter for an issue by the id of its duplicate issues\u0027, () \u003d\u003e {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" searchKey \u003d duplicatedIssue.id.toString();"},{"lineNumber":65,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([highSeverityDocumentationBugIssue]);"},{"lineNumber":66,"author":{"gitId":"-"},"content":" });"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" it(\u0027can filter for issues that contain the search key in any other column\u0027, () \u003d\u003e {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Search by id of issue"},{"lineNumber":70,"author":{"gitId":"-"},"content":" searchKey \u003d mediumSeverityIssueWithResponse.id.toString();"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithResponse]);"},{"lineNumber":72,"author":{"gitId":"-"},"content":""},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Search by title of issue"},{"lineNumber":74,"author":{"gitId":"-"},"content":" searchKey \u003d mediumSeverityIssueWithAssigneee.title;"},{"lineNumber":75,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithAssigneee]);"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":" // Search by type of issue"},{"lineNumber":78,"author":{"gitId":"-"},"content":" searchKey \u003d highSeverityDocumentationBugIssue.type;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([highSeverityDocumentationBugIssue]);"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Search by severity of issue"},{"lineNumber":82,"author":{"gitId":"-"},"content":" searchKey \u003d lowSeverityFeatureFlawIssue.severity;"},{"lineNumber":83,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([lowSeverityFeatureFlawIssue]);"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" // Search by response of issue"},{"lineNumber":86,"author":{"gitId":"-"},"content":" searchKey \u003d mediumSeverityIssueWithResponse.responseTag;"},{"lineNumber":87,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithResponse]);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" });"},{"lineNumber":89,"author":{"gitId":"-"},"content":" });"},{"lineNumber":90,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":89}},{"path":"tests/constants/label.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Label } from \u0027../../src/app/core/models/label.model\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { LabelService, LABEL_DEFINITIONS } from \u0027../../src/app/core/services/label.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"// Label name constants"},{"lineNumber":5,"author":{"gitId":"-"},"content":"export const SEVERITY_VERY_LOW \u003d \u0027Very Low\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"export const SEVERITY_LOW \u003d \u0027Low\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"export const SEVERITY_MEDIUM \u003d \u0027Medium\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"export const SEVERITY_HIGH \u003d \u0027High\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"export const TYPE_DOCUMENTATION_BUG \u003d \u0027DocumentationBug\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"export const TYPE_FUNCTIONALITY_BUG \u003d \u0027FunctionalityBug\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"export const TYPE_FEATURE_FLAW \u003d \u0027FeatureFlaw\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"export const RESPONSE_ACCEPTED \u003d \u0027Accepted\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"export const RESPONSE_REJECTED \u003d \u0027Rejected\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"export const RESPONSE_ISSUE_UNCLEAR \u003d \u0027IssueUnclear\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export const RESPONSE_CANNOT_REPRODUCE \u003d \u0027CannotReproduce\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"export const STATUS_DONE \u003d \u0027Done\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"export const STATUS_INCOMPLETE \u003d \u0027Incomplete\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"// Label category constants"},{"lineNumber":20,"author":{"gitId":"-"},"content":"export const SEVERITY \u003d \u0027severity\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"export const TYPE \u003d \u0027type\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"export const RESPONSE \u003d \u0027response\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"export const STATUS \u003d \u0027status\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"// Label color constants"},{"lineNumber":26,"author":{"gitId":"-"},"content":"export const COLOR_BLACK \u003d \u0027000000\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"export const COLOR_WHITE \u003d \u0027ffffff\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_VERY_LOW \u003d \u0027ffe0e0\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_LOW \u003d \u0027ffcccc\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_MEDIUM \u003d \u0027ff9999\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_HIGH \u003d \u0027ff6666\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"export const COLOR_TYPE_DOCUMENTATION_BUG \u003d \u0027d966ff\u0027;"},{"lineNumber":33,"author":{"gitId":"-"},"content":"export const COLOR_TYPE_FUNCTIONALITY_BUG \u003d \u00279900cc\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":"export const COLOR_RESPONSE_ACCEPTED \u003d \u002700802b\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":"export const COLOR_RESPONSE_REJECTED \u003d \u0027ff9900\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":"export const COLOR_RESPONSE_ISSUE_UNCLEAR \u003d \u0027ffcc80\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":"export const COLOR_RESPONSE_CANNOT_REPRODUCE \u003d \u0027ffebcc\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":"export const COLOR_STATUS_DONE \u003d \u0027a6a6a6\u0027;"},{"lineNumber":39,"author":{"gitId":"-"},"content":"export const COLOR_STATUS_INCOMPLETE \u003d \u0027000000\u0027;"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"export const CSS_BORDER_RADIUS_3PX \u003d \u00273px\u0027;"},{"lineNumber":42,"author":{"gitId":"-"},"content":"export const CSS_CURSOR_DEFAULT \u003d \u0027default\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":"export const CSS_PADDING_3PX \u003d \u00273px\u0027;"},{"lineNumber":44,"author":{"gitId":"-"},"content":"export const CSS_FONT_WEIGHT_410 \u003d \u0027410\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":"export const CSS_DISPLAY_INLINE_FLEX \u003d \u0027inline-flex\u0027;"},{"lineNumber":46,"author":{"gitId":"-"},"content":"export const CSS_DISPLAY_INLINE_BLOCK \u003d \u0027inline-block\u0027;"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":"// CSS style constants"},{"lineNumber":49,"author":{"gitId":"-"},"content":"export const DARK_BG_LIGHT_TEXT \u003d {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${COLOR_BLACK}`,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u0027border-radius\u0027: CSS_BORDER_RADIUS_3PX,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" cursor: CSS_CURSOR_DEFAULT,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" padding: CSS_PADDING_3PX,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" color: `#${COLOR_WHITE}`,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u0027font-weight\u0027: CSS_FONT_WEIGHT_410,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" display: CSS_DISPLAY_INLINE_FLEX"},{"lineNumber":57,"author":{"gitId":"-"},"content":"};"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":"export const LIGHT_BG_DARK_TEXT \u003d {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${COLOR_WHITE}`,"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u0027border-radius\u0027: CSS_BORDER_RADIUS_3PX,"},{"lineNumber":62,"author":{"gitId":"-"},"content":" cursor: CSS_CURSOR_DEFAULT,"},{"lineNumber":63,"author":{"gitId":"-"},"content":" padding: CSS_PADDING_3PX,"},{"lineNumber":64,"author":{"gitId":"-"},"content":" color: `#${COLOR_BLACK}`,"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0027font-weight\u0027: CSS_FONT_WEIGHT_410,"},{"lineNumber":66,"author":{"gitId":"-"},"content":" display: CSS_DISPLAY_INLINE_FLEX"},{"lineNumber":67,"author":{"gitId":"-"},"content":"};"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":"export const INLINE_BLOCK_TEXT \u003d {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${COLOR_WHITE}`,"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u0027border-radius\u0027: CSS_BORDER_RADIUS_3PX,"},{"lineNumber":72,"author":{"gitId":"-"},"content":" cursor: CSS_CURSOR_DEFAULT,"},{"lineNumber":73,"author":{"gitId":"-"},"content":" padding: CSS_PADDING_3PX,"},{"lineNumber":74,"author":{"gitId":"-"},"content":" color: `#${COLOR_BLACK}`,"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u0027font-weight\u0027: CSS_FONT_WEIGHT_410,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" display: CSS_DISPLAY_INLINE_BLOCK"},{"lineNumber":77,"author":{"gitId":"-"},"content":"};"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":"export const RESPONSE_REJECTED_LABEL \u003d new Label(RESPONSE, RESPONSE_REJECTED, COLOR_RESPONSE_REJECTED, LABEL_DEFINITIONS.responseRejected);"},{"lineNumber":80,"author":{"gitId":"-"},"content":"export const STATUS_DONE_LABEL \u003d new Label(STATUS, STATUS_DONE, COLOR_STATUS_DONE);"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":"export const TYPE_DOCUMENTATION_BUG_LABEL \u003d new Label("},{"lineNumber":83,"author":{"gitId":"-"},"content":" TYPE,"},{"lineNumber":84,"author":{"gitId":"-"},"content":" TYPE_DOCUMENTATION_BUG,"},{"lineNumber":85,"author":{"gitId":"-"},"content":" COLOR_TYPE_DOCUMENTATION_BUG,"},{"lineNumber":86,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.typeDocumentationBug"},{"lineNumber":87,"author":{"gitId":"-"},"content":");"},{"lineNumber":88,"author":{"gitId":"-"},"content":"export const TYPE_FUNCTIONALITY_BUG_LABEL \u003d new Label("},{"lineNumber":89,"author":{"gitId":"-"},"content":" TYPE,"},{"lineNumber":90,"author":{"gitId":"-"},"content":" TYPE_FUNCTIONALITY_BUG,"},{"lineNumber":91,"author":{"gitId":"-"},"content":" COLOR_TYPE_FUNCTIONALITY_BUG,"},{"lineNumber":92,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.typeFunctionalityBug"},{"lineNumber":93,"author":{"gitId":"-"},"content":");"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":"export const SEVERITY_HIGH_LABEL \u003d new Label(SEVERITY, SEVERITY_HIGH, COLOR_SEVERITY_HIGH, LABEL_DEFINITIONS.severityHigh);"},{"lineNumber":96,"author":{"gitId":"-"},"content":"export const SEVERITY_MEDIUM_LABEL \u003d new Label(SEVERITY, SEVERITY_MEDIUM, COLOR_SEVERITY_MEDIUM, LABEL_DEFINITIONS.severityMedium);"},{"lineNumber":97,"author":{"gitId":"-"},"content":"export const SEVERITY_LOW_LABEL \u003d new Label(SEVERITY, SEVERITY_LOW, COLOR_SEVERITY_LOW, LABEL_DEFINITIONS.severityLow);"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":"// Constant array of labels for team response phase and moderation phase to simulate Github response"},{"lineNumber":100,"author":{"gitId":"-"},"content":"export const SOME_TEAM_RESPONSE_PHASE_LABELS \u003d ["},{"lineNumber":101,"author":{"gitId":"-"},"content":" {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" color: COLOR_RESPONSE_ACCEPTED,"},{"lineNumber":103,"author":{"gitId":"-"},"content":" name: RESPONSE + \u0027.\u0027 + RESPONSE_ACCEPTED,"},{"lineNumber":104,"author":{"gitId":"-"},"content":" definition: LABEL_DEFINITIONS.responseAccepted"},{"lineNumber":105,"author":{"gitId":"-"},"content":" },"},{"lineNumber":106,"author":{"gitId":"-"},"content":" {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" color: COLOR_SEVERITY_LOW,"},{"lineNumber":108,"author":{"gitId":"-"},"content":" name: SEVERITY + \u0027.\u0027 + SEVERITY_LOW,"},{"lineNumber":109,"author":{"gitId":"-"},"content":" definition: LABEL_DEFINITIONS.severityLow"},{"lineNumber":110,"author":{"gitId":"-"},"content":" },"},{"lineNumber":111,"author":{"gitId":"-"},"content":" {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" color: COLOR_TYPE_FUNCTIONALITY_BUG,"},{"lineNumber":113,"author":{"gitId":"-"},"content":" name: TYPE + \u0027.\u0027 + TYPE_FUNCTIONALITY_BUG,"},{"lineNumber":114,"author":{"gitId":"-"},"content":" definition: LABEL_DEFINITIONS.typeFunctionalityBug"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":"];"},{"lineNumber":117,"author":{"gitId":"-"},"content":""},{"lineNumber":118,"author":{"gitId":"-"},"content":"// Constant array of labels for tester phase to simulate Github response"},{"lineNumber":119,"author":{"gitId":"-"},"content":"export const SOME_TESTER_PHASE_LABELS \u003d ["},{"lineNumber":120,"author":{"gitId":"-"},"content":" {"},{"lineNumber":121,"author":{"gitId":"-"},"content":" color: COLOR_SEVERITY_HIGH,"},{"lineNumber":122,"author":{"gitId":"-"},"content":" name: SEVERITY + \u0027.\u0027 + SEVERITY_HIGH"},{"lineNumber":123,"author":{"gitId":"-"},"content":" },"},{"lineNumber":124,"author":{"gitId":"-"},"content":" {"},{"lineNumber":125,"author":{"gitId":"-"},"content":" color: COLOR_TYPE_DOCUMENTATION_BUG,"},{"lineNumber":126,"author":{"gitId":"-"},"content":" name: TYPE + \u0027.\u0027 + TYPE_DOCUMENTATION_BUG"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }"},{"lineNumber":128,"author":{"gitId":"-"},"content":"];"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":"export const ALL_REQUIRED_LABELS_ARRAY: {}[] \u003d LabelService.getRequiredLabelsAsArray(true).map((label: Label) \u003d\u003e {"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return {"},{"lineNumber":132,"author":{"gitId":"-"},"content":" color: label.labelColor,"},{"lineNumber":133,"author":{"gitId":"-"},"content":" name: label.getFormattedName()"},{"lineNumber":134,"author":{"gitId":"-"},"content":" };"},{"lineNumber":135,"author":{"gitId":"-"},"content":"});"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":"// List of labels"},{"lineNumber":138,"author":{"gitId":"-"},"content":"export const SEVERITY_LABELS \u003d ["},{"lineNumber":139,"author":{"gitId":"-"},"content":" new Label(SEVERITY, SEVERITY_LOW, COLOR_SEVERITY_LOW, LABEL_DEFINITIONS.severityLow),"},{"lineNumber":140,"author":{"gitId":"-"},"content":" new Label(SEVERITY, SEVERITY_MEDIUM, COLOR_SEVERITY_MEDIUM, LABEL_DEFINITIONS.severityMedium),"},{"lineNumber":141,"author":{"gitId":"-"},"content":" new Label(SEVERITY, SEVERITY_HIGH, COLOR_SEVERITY_HIGH, LABEL_DEFINITIONS.undefined)"},{"lineNumber":142,"author":{"gitId":"-"},"content":"];"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":141}},{"path":"tests/services/label.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Label } from \u0027../../src/app/core/models/label.model\u0027;"},{"lineNumber":3,"author":{"gitId":"Echomo-Xinyu"},"content":"import { LabelService, LABEL_DEFINITIONS } from \u0027../../src/app/core/services/label.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import * as LabelConstant from \u0027../constants/label.constants\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"let labelService: LabelService;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"let labelList: Label[];"},{"lineNumber":8,"author":{"gitId":"-"},"content":"let githubService: any;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"describe(\u0027LabelService\u0027, () \u003d\u003e {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" githubService \u003d jasmine.createSpyObj(\u0027GithubService\u0027, [\u0027fetchAllLabels\u0027, \u0027createLabel\u0027]);"},{"lineNumber":13,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(githubService);"},{"lineNumber":14,"author":{"gitId":"-"},"content":" });"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":" describe(\u0027.syncLabels()\u0027, () \u003d\u003e {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" it(\u0027should create all required labels for team response phase if no required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of([]));"},{"lineNumber":19,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(true)).subscribe();"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.SEVERITY_LOW_LABEL);"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.RESPONSE_REJECTED_LABEL);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.STATUS_DONE_LABEL);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.TYPE_DOCUMENTATION_BUG_LABEL);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes(LabelService.getRequiredLabelsAsArray(true).length);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" });"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" it(\u0027should create all required labels for tester phase if no required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of([]));"},{"lineNumber":30,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(false)).subscribe();"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.SEVERITY_LOW_LABEL);"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.TYPE_DOCUMENTATION_BUG_LABEL);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes(LabelService.getRequiredLabelsAsArray(false).length);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" });"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" it(\u0027should create missing required labels for team response phase if some required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of(LabelConstant.SOME_TEAM_RESPONSE_PHASE_LABELS));"},{"lineNumber":39,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(true)).subscribe();"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertLabelNotCreated(githubService, LabelConstant.SEVERITY_LOW_LABEL);"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.RESPONSE_REJECTED_LABEL);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.STATUS_DONE_LABEL);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.TYPE_DOCUMENTATION_BUG_LABEL);"},{"lineNumber":45,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes("},{"lineNumber":46,"author":{"gitId":"-"},"content":" LabelService.getRequiredLabelsAsArray(true).length - LabelConstant.SOME_TEAM_RESPONSE_PHASE_LABELS.length"},{"lineNumber":47,"author":{"gitId":"-"},"content":" );"},{"lineNumber":48,"author":{"gitId":"-"},"content":" });"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" it(\u0027should create missing required labels for tester phase if some required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of(LabelConstant.SOME_TESTER_PHASE_LABELS));"},{"lineNumber":52,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(false)).subscribe();"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertLabelNotCreated(githubService, LabelConstant.SEVERITY_HIGH_LABEL);"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.TYPE_FUNCTIONALITY_BUG_LABEL);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes("},{"lineNumber":57,"author":{"gitId":"-"},"content":" LabelService.getRequiredLabelsAsArray(false).length - LabelConstant.SOME_TESTER_PHASE_LABELS.length"},{"lineNumber":58,"author":{"gitId":"-"},"content":" );"},{"lineNumber":59,"author":{"gitId":"-"},"content":" });"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" it(\u0027should not need to create any required labels if all required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of(LabelConstant.ALL_REQUIRED_LABELS_ARRAY));"},{"lineNumber":63,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(true)).subscribe();"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes(0);"},{"lineNumber":66,"author":{"gitId":"-"},"content":" });"},{"lineNumber":67,"author":{"gitId":"-"},"content":" });"},{"lineNumber":68,"author":{"gitId":"-"},"content":"});"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: parseLabelData()\u0027, () \u003d\u003e {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" beforeAll(() \u003d\u003e {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(null);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" labelList \u003d labelService.parseLabelData(LabelConstant.SOME_TEAM_RESPONSE_PHASE_LABELS);"},{"lineNumber":74,"author":{"gitId":"-"},"content":" });"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" afterAll(() \u003d\u003e {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" });"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" it(\u0027should be response.Accepted label\u0027, () \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expect(labelList[0].labelCategory).toBe(LabelConstant.RESPONSE);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" expect(labelList[0].labelValue).toBe(LabelConstant.RESPONSE_ACCEPTED);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" expect(labelList[0].labelColor).toBe(LabelConstant.COLOR_RESPONSE_ACCEPTED);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" });"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" it(\u0027should be severity.Low\u0027, () \u003d\u003e {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" expect(labelList[1].labelCategory).toBe(LabelConstant.SEVERITY);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" expect(labelList[1].labelValue).toBe(LabelConstant.SEVERITY_LOW);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" expect(labelList[1].labelColor).toBe(LabelConstant.COLOR_SEVERITY_LOW);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" expect(labelList[1].labelDefinition).toBe(LABEL_DEFINITIONS.severityLow);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" });"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" it(\u0027should be type.FunctionalityBug\u0027, () \u003d\u003e {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" expect(labelList[2].labelCategory).toBe(LabelConstant.TYPE);"},{"lineNumber":95,"author":{"gitId":"-"},"content":" expect(labelList[2].labelValue).toBe(LabelConstant.TYPE_FUNCTIONALITY_BUG);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" expect(labelList[2].labelColor).toBe(LabelConstant.COLOR_TYPE_FUNCTIONALITY_BUG);"},{"lineNumber":97,"author":{"gitId":"-"},"content":" expect(labelList[2].labelDefinition).toBe(LABEL_DEFINITIONS.typeFunctionalityBug);"},{"lineNumber":98,"author":{"gitId":"-"},"content":" });"},{"lineNumber":99,"author":{"gitId":"-"},"content":"});"},{"lineNumber":100,"author":{"gitId":"-"},"content":""},{"lineNumber":101,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: isDarkColor()\u0027, () \u003d\u003e {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(null);"},{"lineNumber":104,"author":{"gitId":"-"},"content":" });"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":108,"author":{"gitId":"-"},"content":" });"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":" it(\u0027should be true for dark color\u0027, () \u003d\u003e {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" expect(labelService.isDarkColor(LabelConstant.COLOR_BLACK)).toBeTruthy();"},{"lineNumber":112,"author":{"gitId":"-"},"content":" });"},{"lineNumber":113,"author":{"gitId":"-"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":" it(\u0027should be false for light color\u0027, () \u003d\u003e {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" expect(labelService.isDarkColor(LabelConstant.COLOR_WHITE)).toBeFalsy();"},{"lineNumber":116,"author":{"gitId":"-"},"content":" });"},{"lineNumber":117,"author":{"gitId":"-"},"content":"});"},{"lineNumber":118,"author":{"gitId":"-"},"content":""},{"lineNumber":119,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: setLabelStyle()\u0027, () \u003d\u003e {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":121,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(null);"},{"lineNumber":122,"author":{"gitId":"-"},"content":" });"},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":125,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":126,"author":{"gitId":"-"},"content":" });"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":" it(\u0027should be dark color background with light color text\u0027, () \u003d\u003e {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" expect(labelService.setLabelStyle(LabelConstant.COLOR_BLACK)).toEqual(LabelConstant.DARK_BG_LIGHT_TEXT);"},{"lineNumber":130,"author":{"gitId":"-"},"content":" });"},{"lineNumber":131,"author":{"gitId":"-"},"content":""},{"lineNumber":132,"author":{"gitId":"-"},"content":" it(\u0027should be light color background with dark color text\u0027, () \u003d\u003e {"},{"lineNumber":133,"author":{"gitId":"-"},"content":" expect(labelService.setLabelStyle(LabelConstant.COLOR_WHITE)).toEqual(LabelConstant.LIGHT_BG_DARK_TEXT);"},{"lineNumber":134,"author":{"gitId":"-"},"content":" });"},{"lineNumber":135,"author":{"gitId":"-"},"content":""},{"lineNumber":136,"author":{"gitId":"-"},"content":" it(\u0027should be light color background with dark color text\u0027, () \u003d\u003e {"},{"lineNumber":137,"author":{"gitId":"-"},"content":" expect(labelService.setLabelStyle(LabelConstant.COLOR_WHITE, \u0027inline-block\u0027)).toEqual(LabelConstant.INLINE_BLOCK_TEXT);"},{"lineNumber":138,"author":{"gitId":"-"},"content":" });"},{"lineNumber":139,"author":{"gitId":"-"},"content":"});"},{"lineNumber":140,"author":{"gitId":"-"},"content":""},{"lineNumber":141,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: getColorOfLabel()\u0027, () \u003d\u003e {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(null);"},{"lineNumber":144,"author":{"gitId":"-"},"content":" });"},{"lineNumber":145,"author":{"gitId":"-"},"content":""},{"lineNumber":146,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":147,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":148,"author":{"gitId":"-"},"content":" });"},{"lineNumber":149,"author":{"gitId":"-"},"content":""},{"lineNumber":150,"author":{"gitId":"-"},"content":" it(\u0027should be correct label color for Severity.Low\u0027, () \u003d\u003e {"},{"lineNumber":151,"author":{"gitId":"-"},"content":" expect(labelService.getColorOfLabel(LabelConstant.SEVERITY_LOW)).toEqual(LabelConstant.COLOR_SEVERITY_LOW);"},{"lineNumber":152,"author":{"gitId":"-"},"content":" });"},{"lineNumber":153,"author":{"gitId":"-"},"content":""},{"lineNumber":154,"author":{"gitId":"-"},"content":" it(\u0027should be white color for invalid inputs\u0027, () \u003d\u003e {"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expect(labelService.getColorOfLabel(null)).toEqual(LabelConstant.COLOR_WHITE.toLowerCase());"},{"lineNumber":156,"author":{"gitId":"-"},"content":" });"},{"lineNumber":157,"author":{"gitId":"-"},"content":"});"},{"lineNumber":158,"author":{"gitId":"-"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: getLabelDefinition()\u0027, () \u003d\u003e {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":161,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(null);"},{"lineNumber":162,"author":{"gitId":"-"},"content":" });"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":166,"author":{"gitId":"-"},"content":" });"},{"lineNumber":167,"author":{"gitId":"-"},"content":""},{"lineNumber":168,"author":{"gitId":"-"},"content":" it(\u0027should return the correct label definition for type.FunctionalityBug\u0027, () \u003d\u003e {"},{"lineNumber":169,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.TYPE_FUNCTIONALITY_BUG, LabelConstant.TYPE)).toEqual("},{"lineNumber":170,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.typeFunctionalityBug"},{"lineNumber":171,"author":{"gitId":"-"},"content":" );"},{"lineNumber":172,"author":{"gitId":"-"},"content":" });"},{"lineNumber":173,"author":{"gitId":"-"},"content":""},{"lineNumber":174,"author":{"gitId":"-"},"content":" it(\u0027should return the correct label definition for severity.Medium\u0027, () \u003d\u003e {"},{"lineNumber":175,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.SEVERITY_MEDIUM, LabelConstant.SEVERITY)).toEqual("},{"lineNumber":176,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.severityMedium"},{"lineNumber":177,"author":{"gitId":"-"},"content":" );"},{"lineNumber":178,"author":{"gitId":"-"},"content":" });"},{"lineNumber":179,"author":{"gitId":"-"},"content":""},{"lineNumber":180,"author":{"gitId":"-"},"content":" it(\u0027should return the correct label definition for response.Rejected\u0027, () \u003d\u003e {"},{"lineNumber":181,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.RESPONSE_REJECTED, LabelConstant.RESPONSE)).toEqual("},{"lineNumber":182,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.responseRejected"},{"lineNumber":183,"author":{"gitId":"-"},"content":" );"},{"lineNumber":184,"author":{"gitId":"-"},"content":" });"},{"lineNumber":185,"author":{"gitId":"-"},"content":""},{"lineNumber":186,"author":{"gitId":"-"},"content":" it(\u0027should return null for label with no definition\u0027, () \u003d\u003e {"},{"lineNumber":187,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.STATUS_DONE, LabelConstant.STATUS)).toEqual(LABEL_DEFINITIONS.undefined);"},{"lineNumber":188,"author":{"gitId":"-"},"content":" });"},{"lineNumber":189,"author":{"gitId":"-"},"content":""},{"lineNumber":190,"author":{"gitId":"-"},"content":" it(\u0027should return null for invalid inputs\u0027, () \u003d\u003e {"},{"lineNumber":191,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(null, null)).toEqual(LABEL_DEFINITIONS.undefined);"},{"lineNumber":192,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(null, LabelConstant.SEVERITY)).toEqual(LABEL_DEFINITIONS.undefined);"},{"lineNumber":193,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.SEVERITY_MEDIUM, null)).toEqual(LABEL_DEFINITIONS.undefined);"},{"lineNumber":194,"author":{"gitId":"-"},"content":" });"},{"lineNumber":195,"author":{"gitId":"-"},"content":"});"},{"lineNumber":196,"author":{"gitId":"-"},"content":""},{"lineNumber":197,"author":{"gitId":"-"},"content":"function assertLabelCreated(githubService: any, label: Label) {"},{"lineNumber":198,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledWith(label.getFormattedName(), label.labelColor);"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}"},{"lineNumber":200,"author":{"gitId":"-"},"content":""},{"lineNumber":201,"author":{"gitId":"-"},"content":"function assertLabelNotCreated(githubService: any, label: Label) {"},{"lineNumber":202,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).not.toHaveBeenCalledWith(label.getFormattedName(), label.labelColor);"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":202}},{"path":"tests/services/logging.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../src/app/core/services/logging.service\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MockLocalStorage } from \u0027../helper/mock.local.storage\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":"let logger: LoggingService;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"let headerLog: string;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"let sessionSeparator: string;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"const mockDate \u003d new Date(2021, 6, 27);"},{"lineNumber":8,"author":{"gitId":"-"},"content":"const infoLogMessage \u003d \u0027Info log message\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"const mockLocalStorageFunctionCalls \u003d (mockLocalStorage: MockLocalStorage) \u003d\u003e {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" spyOn(localStorage, \u0027getItem\u0027).and.callFake(mockLocalStorage.getItem.bind(mockLocalStorage));"},{"lineNumber":12,"author":{"gitId":"-"},"content":" spyOn(localStorage, \u0027setItem\u0027).and.callFake(mockLocalStorage.setItem.bind(mockLocalStorage));"},{"lineNumber":13,"author":{"gitId":"-"},"content":" spyOn(localStorage, \u0027removeItem\u0027).and.callFake(mockLocalStorage.removeItem.bind(mockLocalStorage));"},{"lineNumber":14,"author":{"gitId":"-"},"content":" spyOn(localStorage, \u0027clear\u0027).and.callFake(mockLocalStorage.clear.bind(mockLocalStorage));"},{"lineNumber":15,"author":{"gitId":"-"},"content":"};"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"const mockDates \u003d () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" jasmine.clock().install();"},{"lineNumber":19,"author":{"gitId":"-"},"content":" jasmine.clock().mockDate(mockDate);"},{"lineNumber":20,"author":{"gitId":"-"},"content":"};"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":"const initializeLoggingService \u003d () \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger \u003d new LoggingService();"},{"lineNumber":24,"author":{"gitId":"cheehongw"},"content":" headerLog \u003d `${logger.LOG_START_HEADER}\\n${mockDate.toLocaleString()}`;"},{"lineNumber":25,"author":{"gitId":"cheehongw"},"content":" sessionSeparator \u003d logger.SESSION_LOG_SEPARATOR;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"};"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"describe(\u0027LoggingService\u0027, () \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" beforeAll(() \u003d\u003e {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" const mockLocalStorage \u003d new MockLocalStorage();"},{"lineNumber":31,"author":{"gitId":"-"},"content":" mockLocalStorageFunctionCalls(mockLocalStorage);"},{"lineNumber":32,"author":{"gitId":"-"},"content":" mockDates();"},{"lineNumber":33,"author":{"gitId":"-"},"content":" initializeLoggingService();"},{"lineNumber":34,"author":{"gitId":"-"},"content":" });"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":37,"author":{"gitId":"cheehongw"},"content":" logger.reset();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" localStorage.clear();"},{"lineNumber":39,"author":{"gitId":"-"},"content":" });"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" afterAll(() \u003d\u003e {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" jasmine.clock().uninstall();"},{"lineNumber":43,"author":{"gitId":"-"},"content":" });"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" describe(\u0027.startSession()\u0027, () \u003d\u003e {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" it(\u0027should successfully initialize logging session\u0027, () \u003d\u003e {"},{"lineNumber":47,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":48,"author":{"gitId":"cheehongw"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":49,"author":{"gitId":"-"},"content":" const expectedLog \u003d headerLog;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":51,"author":{"gitId":"-"},"content":" });"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" it(\u0027should successfully reinitialize logging session\u0027, () \u003d\u003e {"},{"lineNumber":54,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":55,"author":{"gitId":"cheehongw"},"content":" logger.reset();"},{"lineNumber":56,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":57,"author":{"gitId":"cheehongw"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":58,"author":{"gitId":"-"},"content":" const expectedLog \u003d `${headerLog}${sessionSeparator}${headerLog}`;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":60,"author":{"gitId":"-"},"content":" });"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" it(\u0027should successfully reinitialize logging session when limit reached\u0027, () \u003d\u003e {"},{"lineNumber":63,"author":{"gitId":"cheehongw"},"content":" Array(logger.LOG_COUNT_LIMIT)"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .fill(0)"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .forEach(() \u003d\u003e {"},{"lineNumber":66,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":67,"author":{"gitId":"cheehongw"},"content":" logger.reset();"},{"lineNumber":68,"author":{"gitId":"-"},"content":" });"},{"lineNumber":69,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":70,"author":{"gitId":"cheehongw"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":71,"author":{"gitId":"cheehongw"},"content":" const expectedLog \u003d Array(logger.LOG_COUNT_LIMIT)"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .fill(\u0027\u0027)"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .map((_) \u003d\u003e headerLog)"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .join(sessionSeparator);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":76,"author":{"gitId":"-"},"content":" });"},{"lineNumber":77,"author":{"gitId":"-"},"content":" });"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" describe(\u0027.reset()\u0027, () \u003d\u003e {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" it(\u0027should do nothing if no session is ongoing\u0027, () \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"cheehongw"},"content":" logger.reset();"},{"lineNumber":82,"author":{"gitId":"cheehongw"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":83,"author":{"gitId":"-"},"content":" expect(actualLog).toBeNull();"},{"lineNumber":84,"author":{"gitId":"-"},"content":" });"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" it(\u0027should not tamper with existing log histories\u0027, () \u003d\u003e {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" let expectedLog \u003d headerLog;"},{"lineNumber":88,"author":{"gitId":"cheehongw"},"content":" for (let i \u003d 0; i \u003c logger.LOG_COUNT_LIMIT + 1; i +\u003d 1) {"},{"lineNumber":89,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":90,"author":{"gitId":"cheehongw"},"content":" logger.reset();"},{"lineNumber":91,"author":{"gitId":"cheehongw"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":93,"author":{"gitId":"cheehongw"},"content":" if (i \u003c logger.LOG_COUNT_LIMIT - 1) {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" expectedLog +\u003d `${sessionSeparator}${headerLog}`;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":" });"},{"lineNumber":98,"author":{"gitId":"-"},"content":" });"},{"lineNumber":99,"author":{"gitId":"-"},"content":""},{"lineNumber":100,"author":{"gitId":"-"},"content":" describe(\u0027adding logs\u0027, () \u003d\u003e {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" it(\u0027should successfully add info logs\u0027, () \u003d\u003e {"},{"lineNumber":102,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":103,"author":{"gitId":"cheehongw"},"content":" const initialLog \u003d logger.getCachedLog();"},{"lineNumber":104,"author":{"gitId":"cheehongw"},"content":" logger.info(infoLogMessage);"},{"lineNumber":105,"author":{"gitId":"cheehongw"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":106,"author":{"gitId":"-"},"content":" const expectedLog \u003d `${initialLog}\\n${infoLogMessage}`;"},{"lineNumber":107,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" });"},{"lineNumber":109,"author":{"gitId":"-"},"content":" });"},{"lineNumber":110,"author":{"gitId":"-"},"content":""},{"lineNumber":111,"author":{"gitId":"-"},"content":" describe(\u0027updating and trimming logs from sessions\u0027, () \u003d\u003e {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" it(\u0027should trim oldest log if number of sessions exceed session limit\u0027, () \u003d\u003e {"},{"lineNumber":113,"author":{"gitId":"cheehongw"},"content":" Array(logger.LOG_COUNT_LIMIT + 1)"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .fill(0)"},{"lineNumber":115,"author":{"gitId":"-"},"content":" .forEach(() \u003d\u003e {"},{"lineNumber":116,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":117,"author":{"gitId":"cheehongw"},"content":" logger.info(infoLogMessage);"},{"lineNumber":118,"author":{"gitId":"cheehongw"},"content":" logger.reset();"},{"lineNumber":119,"author":{"gitId":"-"},"content":" });"},{"lineNumber":120,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":121,"author":{"gitId":"cheehongw"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":122,"author":{"gitId":"cheehongw"},"content":" const expectedLog \u003d Array(logger.LOG_COUNT_LIMIT)"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .fill(\u0027\u0027)"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .map((_) \u003d\u003e headerLog)"},{"lineNumber":125,"author":{"gitId":"-"},"content":" .join(`\\n${infoLogMessage}${sessionSeparator}`);"},{"lineNumber":126,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":127,"author":{"gitId":"-"},"content":" });"},{"lineNumber":128,"author":{"gitId":"-"},"content":" });"},{"lineNumber":129,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":94,"cheehongw":34}},{"path":"tests/services/profile.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Profile } from \u0027../../src/app/core/models/profile.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../src/app/core/services/github.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { ProfileService } from \u0027../../src/app/core/services/profile.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"let githubService: GithubService;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"let profileService: ProfileService;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"const EMPTY_PROFILES \u003d [];"},{"lineNumber":9,"author":{"gitId":"-"},"content":"const VALID_PROFILES \u003d ["},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cProfile\u003e{"},{"lineNumber":11,"author":{"gitId":"-"},"content":" profileName: \u0027CATcher\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" repoName: \u0027CATcher-org/public_data\u0027"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }"},{"lineNumber":14,"author":{"gitId":"-"},"content":"];"},{"lineNumber":15,"author":{"gitId":"-"},"content":"const INVALID_PROFILES \u003d ["},{"lineNumber":16,"author":{"gitId":"-"},"content":" {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" profileName: \u0027CATcher\u0027"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }"},{"lineNumber":19,"author":{"gitId":"-"},"content":"];"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"describe(\u0027ProfileService\u0027, () \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" githubService \u003d new GithubService(null, null, null);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" profileService \u003d new ProfileService(githubService);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" });"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" describe(\u0027.fetchExternalProfiles()\u0027, () \u003d\u003e {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" it(\u0027should return an empty array if no profiles are given\u0027, () \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" spyOn(window, \u0027fetch\u0027).and.returnValue(generateProfilesPromise(EMPTY_PROFILES));"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return profileService.fetchExternalProfiles().then((profiles) \u003d\u003e expect(profiles).toEqual(EMPTY_PROFILES));"},{"lineNumber":31,"author":{"gitId":"-"},"content":" });"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" it(\u0027should return the set of profiles if a set of valid profiles is given\u0027, () \u003d\u003e {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" spyOn(window, \u0027fetch\u0027).and.returnValue(generateProfilesPromise(VALID_PROFILES));"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return profileService.fetchExternalProfiles().then((profiles) \u003d\u003e expect(profiles).toEqual(VALID_PROFILES));"},{"lineNumber":36,"author":{"gitId":"-"},"content":" });"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" it(\u0027should throw an error if a set of invalid profiles is given\u0027, () \u003d\u003e {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" spyOn(window, \u0027fetch\u0027).and.returnValue(generateProfilesPromise(INVALID_PROFILES));"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return profileService"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .fetchExternalProfiles()"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .then(() \u003d\u003e fail())"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .catch((error: Error) \u003d\u003e expect(error.message).toEqual(\u0027profiles.json is malformed\u0027));"},{"lineNumber":44,"author":{"gitId":"-"},"content":" });"},{"lineNumber":45,"author":{"gitId":"-"},"content":" });"},{"lineNumber":46,"author":{"gitId":"-"},"content":"});"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":"function generateProfilesPromise(profiles: any[]): Promise\u003cResponse\u003e {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" const mockResponse: Response \u003d { json: () \u003d\u003e Promise.resolve({ profiles: profiles }) } as Response;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return Promise.resolve(mockResponse);"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":50}}] +[{"path":"src/app/activity-dashboard/event-tables/GithubEventDataTable.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { DataSource } from \u0027@angular/cdk/table\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":3,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import * as moment from \u0027moment\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { BehaviorSubject, merge, Observable, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { flatMap, map } from \u0027rxjs/operators\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubEvent } from \u0027../../core/models/github/github-event.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { EventWeek } from \u0027../event-week.model\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { paginateData } from \u0027./event-paginator\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Adapted from IssuesDataTable for Events."},{"lineNumber":16,"author":{"gitId":"-"},"content":" */"},{"lineNumber":17,"author":{"gitId":"-"},"content":"export class GithubEventDataTable extends DataSource\u003cEventWeek\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private startDate \u003d new BehaviorSubject(\u0027\u0027);"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private endDate \u003d new BehaviorSubject(\u0027\u0027);"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private eventsSubject \u003d new BehaviorSubject\u003cEventWeek[]\u003e([]);"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private eventSubscription: Subscription;"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" public isLoading$ \u003d this.githubEventService.isLoading.asObservable();"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":26,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private logger: LoggingService,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private sort: MatSort,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private paginator: MatPaginator,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private actor?: GithubUser,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private defaultFilter?: (event: GithubEvent) \u003d\u003e boolean"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" super();"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" connect(): Observable\u003cEventWeek[]\u003e {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return this.eventsSubject.asObservable();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" disconnect() {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.startDate.complete();"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.endDate.complete();"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.eventsSubject.complete();"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.eventSubscription.unsubscribe();"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" /** Group GithubEvents[] week by week. Needs refactoring. */"},{"lineNumber":48,"author":{"gitId":"-"},"content":" groupByWeeks(githubEvents: GithubEvent[]): EventWeek[] {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" const endDate \u003d this.startDate.getValue() \u003d\u003d\u003d \u0027\u0027 ? moment() : moment(this.endDate.getValue());"},{"lineNumber":50,"author":{"gitId":"-"},"content":" const startDate \u003d"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.startDate.getValue() \u003d\u003d\u003d \u0027\u0027 ? endDate.clone().subtract(1, \u0027month\u0027).startOf(\u0027day\u0027) : moment(this.startDate.getValue());"},{"lineNumber":52,"author":{"gitId":"-"},"content":" const loopDate \u003d moment(startDate).day(\u0027Sunday\u0027);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" const eventWeeks \u003d [];"},{"lineNumber":54,"author":{"gitId":"-"},"content":" let eventsInAWeek \u003d [];"},{"lineNumber":55,"author":{"gitId":"-"},"content":" let weekNum \u003d 1;"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" githubEvents.forEach((githubEvent) \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" weekNum++;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" const eventDate \u003d moment(githubEvent.created_at);"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (loopDate.isAfter(eventDate)) {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // event in earlier week"},{"lineNumber":62,"author":{"gitId":"-"},"content":" } else if (loopDate.clone().add(7, \u0027days\u0027).isAfter(eventDate) \u0026\u0026 loopDate.isBefore(eventDate)) {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // event in this week"},{"lineNumber":64,"author":{"gitId":"-"},"content":" eventsInAWeek.push(githubEvent);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // event in later week"},{"lineNumber":67,"author":{"gitId":"-"},"content":" eventWeeks.push(EventWeek.of(loopDate.format(\u0027ll\u0027), eventsInAWeek)); // push previous week"},{"lineNumber":68,"author":{"gitId":"-"},"content":" eventsInAWeek \u003d [];"},{"lineNumber":69,"author":{"gitId":"-"},"content":" loopDate.add(7, \u0027days\u0027);"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Empty weeks if any"},{"lineNumber":72,"author":{"gitId":"-"},"content":" while (loopDate.clone().add(7, \u0027days\u0027).isBefore(eventDate) \u0026\u0026 loopDate.clone().add(7, \u0027days\u0027).isBefore(endDate)) {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" eventWeeks.push(EventWeek.of(loopDate.format(\u0027ll\u0027), []));"},{"lineNumber":74,"author":{"gitId":"-"},"content":" loopDate.add(7, \u0027days\u0027);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":" console.assert(loopDate.clone().add(7, \u0027days\u0027).isAfter(eventDate) \u0026\u0026 loopDate.isBefore(eventDate));"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (eventDate.isBefore(endDate)) {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" eventsInAWeek.push(githubEvent);"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }"},{"lineNumber":83,"author":{"gitId":"-"},"content":" });"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" eventWeeks.push(EventWeek.of(loopDate.format(\u0027ll\u0027), eventsInAWeek)); // push final week"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" return eventWeeks;"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" loadEvents() {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // If no pagination and sorting"},{"lineNumber":92,"author":{"gitId":"-"},"content":" let sortChange;"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (this.sort !\u003d\u003d undefined) {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" sortChange \u003d this.sort.sortChange;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" let page;"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (this.paginator !\u003d\u003d undefined) {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" page \u003d this.paginator.page;"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" const displayDataChanges \u003d [page, sortChange, this.startDate, this.endDate].filter((x) \u003d\u003e x !\u003d\u003d undefined);"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.githubEventService.pollEvents();"},{"lineNumber":105,"author":{"gitId":"cheehongw"},"content":" this.githubEventService.events$.subscribe((x) \u003d\u003e this.logger.debug(\u0027GithubEventDataTable: \u0027, x));"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.eventSubscription \u003d this.githubEventService.events$"},{"lineNumber":107,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":108,"author":{"gitId":"-"},"content":" flatMap(() \u003d\u003e {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // merge creates an observable from values that changes display"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return merge(...displayDataChanges).pipe("},{"lineNumber":111,"author":{"gitId":"-"},"content":" // maps each change in display value to new event ordering or filtering"},{"lineNumber":112,"author":{"gitId":"-"},"content":" map(() \u003d\u003e {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" let data \u003d \u003cGithubEvent[]\u003eObject.values(this.githubEventService.events$.getValue()).reverse();"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (this.defaultFilter) {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" data \u003d data.filter(this.defaultFilter);"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // Filter by actor of event"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (this.actor) {"},{"lineNumber":119,"author":{"gitId":"-"},"content":" data \u003d data.filter((githubEvent) \u003d\u003e {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!githubEvent.actor) {"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":122,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return githubEvent.actor.login \u003d\u003d\u003d this.actor.login;"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }"},{"lineNumber":125,"author":{"gitId":"-"},"content":" });"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":" let weekData \u003d this.groupByWeeks(data);"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (this.paginator !\u003d\u003d undefined) {"},{"lineNumber":131,"author":{"gitId":"-"},"content":" weekData \u003d paginateData(this.paginator, weekData);"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return weekData;"},{"lineNumber":134,"author":{"gitId":"-"},"content":" })"},{"lineNumber":135,"author":{"gitId":"-"},"content":" );"},{"lineNumber":136,"author":{"gitId":"-"},"content":" })"},{"lineNumber":137,"author":{"gitId":"-"},"content":" )"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .subscribe((data) \u003d\u003e {"},{"lineNumber":139,"author":{"gitId":"-"},"content":" this.eventsSubject.next(data);"},{"lineNumber":140,"author":{"gitId":"-"},"content":" });"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }"},{"lineNumber":142,"author":{"gitId":"-"},"content":""},{"lineNumber":143,"author":{"gitId":"-"},"content":" /*"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Start and end date getters and setters."},{"lineNumber":145,"author":{"gitId":"-"},"content":" */"},{"lineNumber":146,"author":{"gitId":"-"},"content":" get start(): string {"},{"lineNumber":147,"author":{"gitId":"-"},"content":" return this.startDate.value;"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }"},{"lineNumber":149,"author":{"gitId":"-"},"content":""},{"lineNumber":150,"author":{"gitId":"-"},"content":" set start(date: string) {"},{"lineNumber":151,"author":{"gitId":"-"},"content":" this.startDate.next(date);"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }"},{"lineNumber":153,"author":{"gitId":"-"},"content":""},{"lineNumber":154,"author":{"gitId":"-"},"content":" get end(): string {"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return this.endDate.value;"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }"},{"lineNumber":157,"author":{"gitId":"-"},"content":""},{"lineNumber":158,"author":{"gitId":"-"},"content":" set end(date: string) {"},{"lineNumber":159,"author":{"gitId":"-"},"content":" this.endDate.next(date);"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }"},{"lineNumber":161,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":2,"-":158,"cheehongw":1}},{"path":"src/app/activity-dashboard/event-tables/event-paginator.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { EventWeek } from \u0027../event-week.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"export function paginateData(paginator: MatPaginator, data: EventWeek[]): EventWeek[] {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" paginator.length \u003d data.length;"},{"lineNumber":6,"author":{"gitId":"-"},"content":" let result \u003d getDataForPage(paginator.pageIndex, paginator.pageSize, data);"},{"lineNumber":7,"author":{"gitId":"-"},"content":" if (result.length \u003d\u003d\u003d 0) {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" paginator.pageIndex -\u003d 1;"},{"lineNumber":9,"author":{"gitId":"-"},"content":" result \u003d getDataForPage(paginator.pageIndex, paginator.pageSize, data);"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }"},{"lineNumber":11,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"function getDataForPage(pageIndex: number, pageSize: number, data: EventWeek[]): EventWeek[] {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" const startIndex \u003d pageIndex * pageSize;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return data.splice(startIndex, pageSize);"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":16}},{"path":"src/app/activity-dashboard/event-tables/event-tables.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { animate, state, style, transition, trigger } from \u0027@angular/animations\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, Input, OnInit, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":4,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { EventWeek } from \u0027../event-week.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { GithubEventDataTable } from \u0027./GithubEventDataTable\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"export enum ACTION_BUTTONS {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" VIEW_IN_WEB,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" COLLAPSE"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":17,"author":{"gitId":"-"},"content":" selector: \u0027app-event-tables\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" templateUrl: \u0027./event-tables.component.html\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./event-tables.component.css\u0027],"},{"lineNumber":20,"author":{"gitId":"-"},"content":" animations: ["},{"lineNumber":21,"author":{"gitId":"-"},"content":" trigger(\u0027detailExpand\u0027, ["},{"lineNumber":22,"author":{"gitId":"-"},"content":" state(\u0027collapsed\u0027, style({ height: \u00270px\u0027, minHeight: \u00270\u0027 })),"},{"lineNumber":23,"author":{"gitId":"-"},"content":" state(\u0027expanded\u0027, style({ height: \u0027*\u0027 })),"},{"lineNumber":24,"author":{"gitId":"-"},"content":" transition(\u0027expanded \u003c\u003d\u003e collapsed\u0027, animate(\u0027225ms cubic-bezier(0.4, 0.0, 0.2, 1)\u0027))"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ])"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":27,"author":{"gitId":"-"},"content":"})"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Angular Table Expandable Rows"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * ref: https://material.angular.io/components/table/examples#table-expandable-rows"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */"},{"lineNumber":33,"author":{"gitId":"-"},"content":"export class EventTablesComponent implements OnInit, AfterViewInit {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Input() columnsToDisplay: string[];"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Input() expandedColumnsToDisplay: string[];"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Input() actions: ACTION_BUTTONS[];"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Input() actor?: GithubUser \u003d undefined;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Input() filters?: any \u003d undefined;"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" @ViewChild(MatSort, { static: true }) sort: MatSort;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" githubEvents: GithubEventDataTable;"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" public readonly action_buttons \u003d ACTION_BUTTONS;"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" /** The expanded row */"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expandedElement: EventWeek | null;"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"cheehongw"},"content":" constructor(public githubEventService: GithubEventService, private logger: LoggingService) {}"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" this.githubEvents \u003d new GithubEventDataTable(this.githubEventService, this.logger, this.sort, this.paginator, this.actor, this.filters);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.githubEvents.loadEvents();"},{"lineNumber":59,"author":{"gitId":"-"},"content":" });"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" reload() {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.githubEvents.loadEvents();"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Formats the title text to account for those that contain long words."},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param title - Title of Event that is to be displayed in the Table Row."},{"lineNumber":69,"author":{"gitId":"-"},"content":" */"},{"lineNumber":70,"author":{"gitId":"-"},"content":" fitTitleText(title: string): string {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Arbitrary Length of Characters beyond which an overflow occurs."},{"lineNumber":72,"author":{"gitId":"-"},"content":" const MAX_WORD_LENGTH \u003d 43;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" const SPLITTER_TEXT \u003d \u0027 \u0027;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" const ELLIPSES \u003d \u0027...\u0027;"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" return title"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .split(SPLITTER_TEXT)"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .map((word) \u003d\u003e {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (word.length \u003e MAX_WORD_LENGTH) {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return word.substring(0, MAX_WORD_LENGTH - 5).concat(ELLIPSES);"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return word;"},{"lineNumber":83,"author":{"gitId":"-"},"content":" })"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .join(SPLITTER_TEXT);"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" /** Not implemented yet. */"},{"lineNumber":88,"author":{"gitId":"-"},"content":" viewEventInBrowser(id: number, event: Event) {"},{"lineNumber":89,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`EventTablesComponent: Opening Event ${id} on Github`);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // window.open(\u0027https://github.com/\u0027, \u0027_blank\u0027);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" /** Show individual GithubEvents of EventWeek. */"},{"lineNumber":94,"author":{"gitId":"-"},"content":" showExpandedDetails(element: EventWeek) {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (element.events.length \u003e 0) {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.expandedElement \u003d this.expandedElement \u003d\u003d\u003d element ? null : element;"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":""},{"lineNumber":100,"author":{"gitId":"-"},"content":" /** Returns color string of cell. Shade darkens with magnitude of number. */"},{"lineNumber":101,"author":{"gitId":"-"},"content":" colorCell(count: number) {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (count \u003d\u003d\u003d 0) {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return \u0027white\u0027;"},{"lineNumber":104,"author":{"gitId":"-"},"content":" } else if (count \u003e 0 \u0026\u0026 count \u003c\u003d 5) {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return \u0027pale-green\u0027;"},{"lineNumber":106,"author":{"gitId":"-"},"content":" } else if (count \u003e 6) {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return \u0027green\u0027;"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":2,"Eclipse-Dominator":1,"-":105,"cheehongw":2}},{"path":"src/app/app.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../environments/environment\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027./core/services/error-handling.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./core/services/logging.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":7,"author":{"gitId":"-"},"content":" selector: \u0027app-root\u0027,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" templateUrl: \u0027./app.component.html\u0027,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./app.component.css\u0027]"},{"lineNumber":10,"author":{"gitId":"-"},"content":"})"},{"lineNumber":11,"author":{"gitId":"-"},"content":"export class AppComponent implements AfterViewInit {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" NOT_CONNECTED_ERROR: Error \u003d new Error(\u0027You are not connected to the internet.\u0027);"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor(logger: LoggingService, public errorHandlingService: ErrorHandlingService) {"},{"lineNumber":15,"author":{"gitId":"cheehongw"},"content":" logger.info(\u0027AppComponent: AppConfig\u0027, AppConfig);"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"cheehongw"},"content":" logger.info(\u0027AppComponent: Mode web\u0027);"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" ngAfterViewInit() {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" this.addListenerForNetworkOffline();"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * This listener checks if WATcher has a connection to a network, and will show an error snackbar if it does not."},{"lineNumber":26,"author":{"gitId":"-"},"content":" */"},{"lineNumber":27,"author":{"gitId":"-"},"content":" addListenerForNetworkOffline() {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" window.addEventListener("},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u0027offline\u0027,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" (event) \u003d\u003e {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(this.NOT_CONNECTED_ERROR);"},{"lineNumber":32,"author":{"gitId":"-"},"content":" },"},{"lineNumber":33,"author":{"gitId":"-"},"content":" false"},{"lineNumber":34,"author":{"gitId":"-"},"content":" );"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":33,"cheehongw":2}},{"path":"src/app/app.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpClientModule } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ErrorHandler, NgModule, NgZone } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { BrowserModule, Title } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { BrowserAnimationsModule } from \u0027@angular/platform-browser/animations\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Apollo, ApolloModule } from \u0027apollo-angular\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { HttpLink, HttpLinkModule } from \u0027apollo-angular-link-http\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { InMemoryCache, IntrospectionFragmentMatcher } from \u0027apollo-cache-inmemory\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ApolloLink } from \u0027apollo-link\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { setContext } from \u0027apollo-link-context\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import \u0027reflect-metadata\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import graphqlTypes from \u0027../../graphql/graphql-types\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import \u0027../polyfills\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { ActivityDashboardModule } from \u0027./activity-dashboard/activity-dashboard.module\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { AppRoutingModule } from \u0027./app-routing.module\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { AppComponent } from \u0027./app.component\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { AuthModule } from \u0027./auth/auth.module\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { UserConfirmationComponent } from \u0027./core/guards/user-confirmation/user-confirmation.component\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027./core/services/auth.service\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027./core/services/error-handling.service\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import { AuthServiceFactory } from \u0027./core/services/factories/factory.auth.service\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import { GithubServiceFactory } from \u0027./core/services/factories/factory.github.service\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import { IssueServiceFactory } from \u0027./core/services/factories/factory.issue.service\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./core/services/github.service\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027./core/services/githubevent.service\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027./core/services/issue.service\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027./core/services/label.service\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./core/services/logging.service\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027./core/services/phase.service\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import { SessionFixConfirmationComponent } from \u0027./core/services/session-fix-confirmation/session-fix-confirmation.component\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./core/services/user.service\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import { IssuesViewerModule } from \u0027./issues-viewer/issues-viewer.module\u0027;"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import { LabelDefinitionPopupComponent } from \u0027./shared/label-definition-popup/label-definition-popup.component\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import { HeaderComponent } from \u0027./shared/layout\u0027;"},{"lineNumber":35,"author":{"gitId":"cheehongw"},"content":"import { RepoChangeFormComponent } from \u0027./shared/repo-change-form/repo-change-form.component\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027./shared/shared.module\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" declarations: ["},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" AppComponent,"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" HeaderComponent,"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" UserConfirmationComponent,"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" LabelDefinitionPopupComponent,"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":" RepoChangeFormComponent,"},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" SessionFixConfirmationComponent"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":" ],"},{"lineNumber":47,"author":{"gitId":"-"},"content":" imports: ["},{"lineNumber":48,"author":{"gitId":"-"},"content":" BrowserModule,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" BrowserAnimationsModule,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" AuthModule,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" IssuesViewerModule,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ActivityDashboardModule,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" SharedModule,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" HttpClientModule,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" AppRoutingModule,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" ApolloModule,"},{"lineNumber":57,"author":{"gitId":"-"},"content":" HttpLinkModule"},{"lineNumber":58,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":59,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":60,"author":{"gitId":"-"},"content":" {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" provide: GithubService,"},{"lineNumber":62,"author":{"gitId":"-"},"content":" useFactory: GithubServiceFactory,"},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" deps: [ErrorHandlingService, Apollo, LoggingService]"},{"lineNumber":64,"author":{"gitId":"-"},"content":" },"},{"lineNumber":65,"author":{"gitId":"-"},"content":" {"},{"lineNumber":66,"author":{"gitId":"-"},"content":" provide: AuthService,"},{"lineNumber":67,"author":{"gitId":"-"},"content":" useFactory: AuthServiceFactory,"},{"lineNumber":68,"author":{"gitId":"-"},"content":" deps: ["},{"lineNumber":69,"author":{"gitId":"-"},"content":" Router,"},{"lineNumber":70,"author":{"gitId":"-"},"content":" NgZone,"},{"lineNumber":71,"author":{"gitId":"-"},"content":" GithubService,"},{"lineNumber":72,"author":{"gitId":"-"},"content":" UserService,"},{"lineNumber":73,"author":{"gitId":"-"},"content":" IssueService,"},{"lineNumber":74,"author":{"gitId":"-"},"content":" LabelService,"},{"lineNumber":75,"author":{"gitId":"-"},"content":" PhaseService,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" GithubEventService,"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Title,"},{"lineNumber":78,"author":{"gitId":"-"},"content":" LoggingService]"},{"lineNumber":79,"author":{"gitId":"-"},"content":" },"},{"lineNumber":80,"author":{"gitId":"-"},"content":" {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" provide: IssueService,"},{"lineNumber":82,"author":{"gitId":"-"},"content":" useFactory: IssueServiceFactory,"},{"lineNumber":83,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" deps: [GithubService, UserService, PhaseService]"},{"lineNumber":84,"author":{"gitId":"-"},"content":" },"},{"lineNumber":85,"author":{"gitId":"-"},"content":" {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" provide: ErrorHandler,"},{"lineNumber":87,"author":{"gitId":"-"},"content":" useClass: ErrorHandlingService"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":90,"author":{"gitId":"Echomo-Xinyu"},"content":" bootstrap: [AppComponent]"},{"lineNumber":91,"author":{"gitId":"-"},"content":"})"},{"lineNumber":92,"author":{"gitId":"-"},"content":"export class AppModule {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" constructor(private apollo: Apollo, private httpLink: HttpLink, private authService: AuthService, private logger: LoggingService) {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" const URI \u003d \u0027https://api.github.com/graphql\u0027;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" const log \u003d new ApolloLink((operation, forward) \u003d\u003e {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" operation.setContext({ start: performance.now() });"},{"lineNumber":97,"author":{"gitId":"cheehongw"},"content":" this.logger.info(\u0027AppModule: GraphQL request\u0027, operation.getContext());"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return forward(operation).map((result) \u003d\u003e {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" const time \u003d performance.now() - operation.getContext().start;"},{"lineNumber":100,"author":{"gitId":"cheehongw"},"content":" this.logger.info(\u0027AppModule: GraphQL response\u0027, operation.getContext(), `in ${Math.round(time)}ms`);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" const repo \u003d operation.getContext().response.body.data.repository;"},{"lineNumber":102,"author":{"gitId":"-"},"content":" const item \u003d Object.keys(repo)[0];"},{"lineNumber":103,"author":{"gitId":"cheehongw"},"content":" this.logger.debug(\u0027AppModule: GraphQL response body\u0027, item, repo[item].edges.length, repo[item].edges);"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":105,"author":{"gitId":"-"},"content":" });"},{"lineNumber":106,"author":{"gitId":"-"},"content":" });"},{"lineNumber":107,"author":{"gitId":"-"},"content":" const basic \u003d setContext(() \u003d\u003e {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return { headers: { Accept: \u0027charset\u003dutf-8\u0027 } };"},{"lineNumber":109,"author":{"gitId":"-"},"content":" });"},{"lineNumber":110,"author":{"gitId":"-"},"content":" const auth \u003d setContext(() \u003d\u003e {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return { headers: { Authorization: `Token ${this.authService.accessToken.getValue()}` } };"},{"lineNumber":112,"author":{"gitId":"-"},"content":" });"},{"lineNumber":113,"author":{"gitId":"-"},"content":" const link \u003d ApolloLink.from([log, basic, auth, this.httpLink.create({ uri: URI })]);"},{"lineNumber":114,"author":{"gitId":"-"},"content":" const fragmentMatcher \u003d new IntrospectionFragmentMatcher({"},{"lineNumber":115,"author":{"gitId":"-"},"content":" introspectionQueryResultData: graphqlTypes"},{"lineNumber":116,"author":{"gitId":"-"},"content":" });"},{"lineNumber":117,"author":{"gitId":"-"},"content":" const cache \u003d new InMemoryCache({ fragmentMatcher });"},{"lineNumber":118,"author":{"gitId":"-"},"content":" this.apollo.create({"},{"lineNumber":119,"author":{"gitId":"-"},"content":" link: link,"},{"lineNumber":120,"author":{"gitId":"-"},"content":" cache: cache"},{"lineNumber":121,"author":{"gitId":"-"},"content":" });"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":8,"Echomo-Xinyu":1,"vigneshsankariyer1234567890":2,"-":108,"cheehongw":4}},{"path":"src/app/auth/auth.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, NgZone, OnDestroy, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ActivatedRoute, Router } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Observable, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { filter, flatMap, map } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../environments/environment\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../core/models/github-user.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { ApplicationService } from \u0027../core/services/application.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { AuthService, AuthState } from \u0027../core/services/auth.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../core/services/error-handling.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../core/services/logging.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../core/services/phase.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../core/services/user.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"const APPLICATION_VERSION_OUTDATED_ERROR \u003d \u0027Please update to the latest version of WATcher.\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":17,"author":{"gitId":"-"},"content":" selector: \u0027app-auth\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" templateUrl: \u0027./auth.component.html\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./auth.component.css\u0027]"},{"lineNumber":20,"author":{"gitId":"-"},"content":"})"},{"lineNumber":21,"author":{"gitId":"-"},"content":"export class AuthComponent implements OnInit, OnDestroy {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" authState: AuthState;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" accessTokenSubscription: Subscription;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" authStateSubscription: Subscription;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" currentUserName: string;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" urlEncodedSessionName: string;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" urlEncodedRepo: string;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" sessionInformation: string;"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":31,"author":{"gitId":"-"},"content":" public appService: ApplicationService,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private authService: AuthService,"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private ngZone: NgZone,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private activatedRoute: ActivatedRoute,"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private logger: LoggingService"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ) {}"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.logger.startSession();"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" const oauthCode \u003d this.activatedRoute.snapshot.queryParamMap.get(\u0027code\u0027);"},{"lineNumber":46,"author":{"gitId":"-"},"content":" const state \u003d this.activatedRoute.snapshot.queryParamMap.get(\u0027state\u0027);"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (this.authService.isAuthenticated()) {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.router.navigate([this.phaseService.currentPhase]);"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.initAccessTokenSubscription();"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.initAuthStateSubscription();"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.createProfileFromUrlQueryParams();"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.getRepoFromUrlQueryParams();"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (oauthCode) {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // runs upon receiving oauthCode from the redirect"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // this.restoreOrgDetailsFromLocalStorage();"},{"lineNumber":60,"author":{"gitId":"cheehongw"},"content":" this.logger.info(\u0027AuthComponent: Obtained authorisation code from Github\u0027);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.fetchAccessToken(oauthCode, state);"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Will fetch the access token from GitHub."},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param oauthCode - The authorisation code obtained from GitHub."},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param state - The state returned from GitHub."},{"lineNumber":69,"author":{"gitId":"-"},"content":" */"},{"lineNumber":70,"author":{"gitId":"-"},"content":" fetchAccessToken(oauthCode: string, state: string) {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!this.authService.isReturnedStateSame(state)) {"},{"lineNumber":72,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`AuthComponent: Received incorrect state ${state}, continue waiting for correct state`);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`AuthComponent: Retrieving access token from Github`);"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" const accessTokenUrl \u003d `${AppConfig.accessTokenUrl}/${oauthCode}/client_id/${AppConfig.clientId}`;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" fetch(accessTokenUrl)"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .then((res) \u003d\u003e res.json())"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .then((data) \u003d\u003e {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (data.error) {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new Error(data.error);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.authService.storeOAuthAccessToken(data.token);"},{"lineNumber":86,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`AuthComponent: Sucessfully obtained access token`);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" })"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .catch((err) \u003d\u003e {"},{"lineNumber":89,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`AuthComponent: Error in data fetched from access token URL: ${err}`);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(err);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" });"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" ngOnDestroy() {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (this.authStateSubscription) {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" this.authStateSubscription.unsubscribe();"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (this.accessTokenSubscription) {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" this.accessTokenSubscription.unsubscribe();"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Checks whether the current version of WATcher is outdated."},{"lineNumber":106,"author":{"gitId":"-"},"content":" */"},{"lineNumber":107,"author":{"gitId":"-"},"content":" checkAppIsOutdated(): Observable\u003cany\u003e {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return this.appService.isApplicationOutdated().pipe("},{"lineNumber":109,"author":{"gitId":"-"},"content":" map((isOutdated: boolean) \u003d\u003e {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (isOutdated) {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new Error(APPLICATION_VERSION_OUTDATED_ERROR);"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }"},{"lineNumber":113,"author":{"gitId":"-"},"content":" })"},{"lineNumber":114,"author":{"gitId":"-"},"content":" );"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":" updateSession(sessionEvent: string) {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" this.sessionInformation \u003d sessionEvent;"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" goToSessionSelect() {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }"},{"lineNumber":124,"author":{"gitId":"-"},"content":""},{"lineNumber":125,"author":{"gitId":"-"},"content":" isUserNotAuthenticated(): boolean {"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.NotAuthenticated;"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }"},{"lineNumber":128,"author":{"gitId":"-"},"content":""},{"lineNumber":129,"author":{"gitId":"-"},"content":" isUserAuthenticating(): boolean {"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.AwaitingAuthentication;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }"},{"lineNumber":132,"author":{"gitId":"-"},"content":""},{"lineNumber":133,"author":{"gitId":"-"},"content":" isAwaitingOAuthUserConfirm(): boolean {"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.ConfirmOAuthUser;"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":" get currentSessionOrg(): string {"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!this.sessionInformation) {"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // Retrieve org details of session information from local storage"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return window.localStorage.getItem(\u0027org\u0027);"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return this.getOrgDetails(this.sessionInformation);"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }"},{"lineNumber":144,"author":{"gitId":"-"},"content":""},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Extracts the Organization Details from the input sessionInformation."},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param sessionInformation - string in the format of \u0027orgName/dataRepo\u0027"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private getOrgDetails(sessionInformation: string) {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return sessionInformation.split(\u0027/\u0027)[0];"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" private initAuthStateSubscription() {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" this.authStateSubscription \u003d this.authService.currentAuthState.subscribe((state) \u003d\u003e {"},{"lineNumber":155,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e {"},{"lineNumber":156,"author":{"gitId":"-"},"content":" this.authState \u003d state;"},{"lineNumber":157,"author":{"gitId":"-"},"content":" });"},{"lineNumber":158,"author":{"gitId":"-"},"content":" });"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }"},{"lineNumber":160,"author":{"gitId":"-"},"content":""},{"lineNumber":161,"author":{"gitId":"-"},"content":" private initAccessTokenSubscription() {"},{"lineNumber":162,"author":{"gitId":"-"},"content":" this.accessTokenSubscription \u003d this.authService.accessToken"},{"lineNumber":163,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":164,"author":{"gitId":"-"},"content":" filter((token: string) \u003d\u003e !!token),"},{"lineNumber":165,"author":{"gitId":"-"},"content":" flatMap(() \u003d\u003e this.userService.getAuthenticatedUser())"},{"lineNumber":166,"author":{"gitId":"-"},"content":" )"},{"lineNumber":167,"author":{"gitId":"-"},"content":" .subscribe((user: GithubUser) \u003d\u003e {"},{"lineNumber":168,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e {"},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.currentUserName \u003d user.login;"},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.ConfirmOAuthUser);"},{"lineNumber":171,"author":{"gitId":"-"},"content":" });"},{"lineNumber":172,"author":{"gitId":"-"},"content":" });"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }"},{"lineNumber":174,"author":{"gitId":"-"},"content":""},{"lineNumber":175,"author":{"gitId":"-"},"content":" private createProfileFromUrlQueryParams() {"},{"lineNumber":176,"author":{"gitId":"-"},"content":" const urlParams \u003d this.activatedRoute.snapshot.queryParamMap;"},{"lineNumber":177,"author":{"gitId":"-"},"content":" if (urlParams.has(\u0027session\u0027)) {"},{"lineNumber":178,"author":{"gitId":"-"},"content":" this.urlEncodedSessionName \u003d urlParams.get(\u0027session\u0027);"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }"},{"lineNumber":181,"author":{"gitId":"-"},"content":""},{"lineNumber":182,"author":{"gitId":"-"},"content":" private getRepoFromUrlQueryParams() {"},{"lineNumber":183,"author":{"gitId":"-"},"content":" const urlParams \u003d this.activatedRoute.snapshot.queryParamMap;"},{"lineNumber":184,"author":{"gitId":"-"},"content":" if (urlParams.has(\u0027repo\u0027)) {"},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.urlEncodedRepo \u003d urlParams.get(\u0027repo\u0027);"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":182,"cheehongw":5}},{"path":"src/app/auth/auth.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { CommonModule } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../shared/shared.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { AuthRoutingModule } from \u0027./auth-routing.module\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { AuthComponent } from \u0027./auth.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ConfirmLoginComponent } from \u0027./confirm-login/confirm-login.component\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { JsonParseErrorDialogComponent } from \u0027./profiles/json-parse-error-dialog/json-parse-error-dialog.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ProfilesComponent } from \u0027./profiles/profiles.component\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { SessionSelectionComponent } from \u0027./session-selection/session-selection.component\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":12,"author":{"gitId":"-"},"content":" imports: [AuthRoutingModule, SharedModule, CommonModule],"},{"lineNumber":13,"author":{"gitId":"Echomo-Xinyu"},"content":" declarations: [AuthComponent, ProfilesComponent, JsonParseErrorDialogComponent, ConfirmLoginComponent, SessionSelectionComponent]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class AuthModule {}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":14}},{"path":"src/app/auth/confirm-login/confirm-login.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cbutton mat-stroked-button class\u003d\"sign-in-button\" color\u003d\"primary\" (click)\u003d\"this.completeLoginProcess()\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"logo\"\u003e \u003cimg class\u003d\"github-logo\" src\u003d\"./assets/images/github-logo.png\" alt\u003d\"github-logo\" /\u003e \u003c/span\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cspan\u003e Continue as {{ this.username }} \u003c/span\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"\u003cdiv class\u003d\"mat-body-1\" style\u003d\"margin-top: 20px\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" To change account, please sign into the desired account from the"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003ca href\u003d\"https://github.com/\" (click)\u003d\"onGithubWebsiteClicked()\"\u003eofficial Github website\u003c/a\u003e."},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":8}},{"path":"src/app/auth/confirm-login/confirm-login.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Input, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Observable, of } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../core/models/phase.model\u0027;"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Repo } from \u0027../../core/models/repo.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { AuthService, AuthState } from \u0027../../core/services/auth.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { GithubService } from \u0027../../core/services/github.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../core/services/user.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":16,"author":{"gitId":"-"},"content":" selector: \u0027app-auth-confirm-login\u0027,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" templateUrl: \u0027./confirm-login.component.html\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./confirm-login.component.css\u0027]"},{"lineNumber":19,"author":{"gitId":"-"},"content":"})"},{"lineNumber":20,"author":{"gitId":"-"},"content":"export class ConfirmLoginComponent implements OnInit {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Input() username: string;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Input() currentSessionOrg: string;"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":25,"author":{"gitId":"-"},"content":" private authService: AuthService,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private logger: LoggingService,"},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private router: Router,"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public githubService: GithubService"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" onGithubWebsiteClicked() {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" window.open(\u0027https://github.com/\u0027, \u0027_blank\u0027);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" window.location.reload();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" logIntoAnotherAccount() {"},{"lineNumber":43,"author":{"gitId":"cheehongw"},"content":" this.logger.info(\u0027ConfirmLoginComponent: Logging into another account\u0027);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.authService.startOAuthProcess();"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Handles the clean up required after authentication and setting up of user data is completed."},{"lineNumber":49,"author":{"gitId":"-"},"content":" */"},{"lineNumber":50,"author":{"gitId":"-"},"content":" handleAuthSuccess() {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.authService.setTitleWithPhaseDetail();"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.router.navigateByUrl(Phase.issuesViewer);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.Authenticated);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Will complete the process of logging in the given user."},{"lineNumber":58,"author":{"gitId":"-"},"content":" */"},{"lineNumber":59,"author":{"gitId":"-"},"content":" completeLoginProcess(): void {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.phaseService.initializeCurrentRepository();"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`ConfirmLoginComponent: Current repo is ${this.phaseService.currentRepo}`);"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.userService"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .createUserModel(this.username)"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" .pipe("},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap(() \u003d\u003e {"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const currentRepo \u003d this.phaseService.currentRepo;"},{"lineNumber":68,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (Repo.isInvalidRepoName(currentRepo)) {"},{"lineNumber":69,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return of(false);"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":71,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this.githubService.isRepositoryPresent(currentRepo.owner, currentRepo.name);"},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }),"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" mergeMap((isValidRepository) \u003d\u003e {"},{"lineNumber":74,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (!isValidRepository) {"},{"lineNumber":75,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return new Observable();"},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this.githubEventService.setLatestChangeEvent();"},{"lineNumber":78,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" })"},{"lineNumber":79,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" )"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":81,"author":{"gitId":"-"},"content":" () \u003d\u003e {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.handleAuthSuccess();"},{"lineNumber":83,"author":{"gitId":"-"},"content":" },"},{"lineNumber":84,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":87,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`ConfirmLoginComponent: Completion of login process failed with an error: ${error}`);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":" );"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.handleAuthSuccess();"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":22,"-":68,"cheehongw":2}},{"path":"src/app/auth/profiles/json-parse-error-dialog/json-parse-error-dialog.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDialogRef } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { ProfilesComponent } from \u0027../profiles.component\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * This Component is responsible for informing the user if there"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * are errors in the profiles.json file that is available to the app."},{"lineNumber":8,"author":{"gitId":"-"},"content":" */"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-json-parse-error-dialog\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./json-parse-error-dialog.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./json-parse-error-dialog.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class JsonParseErrorDialogComponent implements OnInit {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" constructor(public dialogRef: MatDialogRef\u003cProfilesComponent\u003e) {}"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Closes the Dialog"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */"},{"lineNumber":23,"author":{"gitId":"-"},"content":" onClick(): void {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" this.dialogRef.close();"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":25}},{"path":"src/app/auth/profiles/profiles.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { animate, state, style, transition, trigger } from \u0027@angular/animations\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Component, EventEmitter, Input, OnInit, Output } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { isValidProfile, Profile } from \u0027../../core/models/profile.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { MALFORMED_PROFILES_ERROR, ProfileService } from \u0027../../core/services/profile.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { JsonParseErrorDialogComponent } from \u0027./json-parse-error-dialog/json-parse-error-dialog.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":10,"author":{"gitId":"-"},"content":" selector: \u0027app-profiles\u0027,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" templateUrl: \u0027./profiles.component.html\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./profiles.component.css\u0027],"},{"lineNumber":13,"author":{"gitId":"-"},"content":" animations: ["},{"lineNumber":14,"author":{"gitId":"-"},"content":" // animation triggers go here"},{"lineNumber":15,"author":{"gitId":"-"},"content":" trigger(\u0027triggerFileInput\u0027, ["},{"lineNumber":16,"author":{"gitId":"-"},"content":" state(\u0027normal\u0027, style({})),"},{"lineNumber":17,"author":{"gitId":"-"},"content":" state("},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u0027pressed\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" style({"},{"lineNumber":20,"author":{"gitId":"-"},"content":" color: \u0027orange\u0027"},{"lineNumber":21,"author":{"gitId":"-"},"content":" })"},{"lineNumber":22,"author":{"gitId":"-"},"content":" ),"},{"lineNumber":23,"author":{"gitId":"-"},"content":" transition(\u0027normal \u003d\u003e pressed\u0027, [animate(\u00270.25s ease\u0027)]),"},{"lineNumber":24,"author":{"gitId":"-"},"content":" transition(\u0027pressed \u003d\u003e normal\u0027, [animate(\u00270.25s ease\u0027)])"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ])"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":27,"author":{"gitId":"-"},"content":"})"},{"lineNumber":28,"author":{"gitId":"-"},"content":"export class ProfilesComponent implements OnInit {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private readonly ANIMATION_DURATION: number \u003d 250;"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" profiles: Profile[] \u003d []; // List of profiles taken from profiles.json"},{"lineNumber":32,"author":{"gitId":"-"},"content":" blankProfile: Profile \u003d { profileName: \u0027\u0027, repoName: \u0027\u0027 }; // A blank profile to reset values"},{"lineNumber":33,"author":{"gitId":"-"},"content":" animationActivated \u003d false; // Assists color change animations."},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" selectedProfile: Profile \u003d this.blankProfile;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Input() urlEncodedSessionName: string;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Output() selectedProfileEmitter: EventEmitter\u003cProfile\u003e \u003d new EventEmitter\u003cProfile\u003e();"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" profilesData \u003d {"},{"lineNumber":40,"author":{"gitId":"-"},"content":" isDirectoryMessageVisible: false,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" fileName: null,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" fileDirectory: null"},{"lineNumber":43,"author":{"gitId":"-"},"content":" };"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" constructor(public errorDialog: MatDialog, public profileService: ProfileService, public errorHandlingService: ErrorHandlingService) {}"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.initProfiles();"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Activates the button selection animation and opens the file selector."},{"lineNumber":53,"author":{"gitId":"-"},"content":" * @param fileInput - OS default file selector."},{"lineNumber":54,"author":{"gitId":"-"},"content":" */"},{"lineNumber":55,"author":{"gitId":"-"},"content":" fileSelectorInitiation(fileInput: HTMLInputElement): void {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.animationActivated \u003d true;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.animationActivated \u003d false;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" fileInput.click();"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }, this.ANIMATION_DURATION);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Reads the user selected file"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */"},{"lineNumber":66,"author":{"gitId":"-"},"content":" fileSelected(event: Event): void {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" const target \u003d event.target as HTMLInputElement;"},{"lineNumber":68,"author":{"gitId":"-"},"content":" const file \u003d target.files[0];"},{"lineNumber":69,"author":{"gitId":"-"},"content":" const reader \u003d new FileReader();"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" reader.onload \u003d () \u003d\u003e {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!(reader.result instanceof ArrayBuffer)) {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" try {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" const { profiles } \u003d JSON.parse(reader.result);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.profileService.validateProfiles(profiles);"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.profiles \u003d profiles.concat(this.profiles).filter((p) \u003d\u003e !!p);"},{"lineNumber":77,"author":{"gitId":"-"},"content":" target.value \u003d \u0027\u0027;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" } catch (e) {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.openErrorDialog();"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"-"},"content":" };"},{"lineNumber":83,"author":{"gitId":"-"},"content":" reader.readAsText(file);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Processes available Profiles information from the external repository."},{"lineNumber":88,"author":{"gitId":"-"},"content":" */"},{"lineNumber":89,"author":{"gitId":"-"},"content":" initProfiles(): void {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.profileService"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .fetchExternalProfiles()"},{"lineNumber":92,"author":{"gitId":"-"},"content":" .then((externalProfiles) \u003d\u003e {"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.profiles \u003d this.profiles.concat(externalProfiles).filter((p) \u003d\u003e !!p);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" })"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .then(() \u003d\u003e this.setUrlEncodedProfile(this.profiles))"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .catch((e) \u003d\u003e {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (e \u003d\u003d\u003d MALFORMED_PROFILES_ERROR) {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.openErrorDialog();"},{"lineNumber":99,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(e);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":" });"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Makes Error dialog visible to the user."},{"lineNumber":107,"author":{"gitId":"-"},"content":" */"},{"lineNumber":108,"author":{"gitId":"-"},"content":" openErrorDialog(): void {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.errorDialog.open(JsonParseErrorDialogComponent);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Sends the selected profile information to listening component."},{"lineNumber":114,"author":{"gitId":"-"},"content":" * @param profile - Profile selected by user."},{"lineNumber":115,"author":{"gitId":"-"},"content":" */"},{"lineNumber":116,"author":{"gitId":"-"},"content":" selectProfile(profile: Profile): void {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (profile \u003d\u003d\u003d this.blankProfile || isValidProfile(profile)) {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" this.selectedProfileEmitter.emit(profile);"},{"lineNumber":119,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" this.openErrorDialog();"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }"},{"lineNumber":123,"author":{"gitId":"-"},"content":" setUrlEncodedProfile(validProfiles: Profile[]) {"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (!this.urlEncodedSessionName) {"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":" const profile \u003d validProfiles.find((profile) \u003d\u003e profile.profileName \u003d\u003d\u003d this.urlEncodedSessionName);"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (profile) {"},{"lineNumber":130,"author":{"gitId":"-"},"content":" this.selectedProfile.profileName \u003d this.urlEncodedSessionName;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" this.selectProfile(profile);"},{"lineNumber":132,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":133,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(new Error(\u0027Invalid URL provided session\u0027));"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":135}},{"path":"src/app/auth/session-selection/session-selection.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cmat-card class\u003d\"login-card\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cmat-card-header style\u003d\"margin-bottom: 20px\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-card-title class\u003d\"login-title\"\u003e Repository URL \u003c/mat-card-title\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003c/mat-card-header\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cform [formGroup]\u003d\"repoForm\" (ngSubmit)\u003d\"setupSession()\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003cmat-card-content\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cmat-form-field class\u003d\"login-field\"\u003e"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cinput matInput placeholder\u003d\"Repository Location (Org/Repo)\" formControlName\u003d\"repo\" required [matAutocomplete]\u003d\"auto\" /\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cmat-autocomplete #auto\u003d\"matAutocomplete\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmat-option *ngFor\u003d\"let suggestion of filteredSuggestions | async\" [value]\u003d\"suggestion\"\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" {{ suggestion }}"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/mat-option\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/mat-autocomplete\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cmat-card-actions\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *ngIf\u003d\"!isSettingUpSession\""},{"lineNumber":20,"author":{"gitId":"-"},"content":" class\u003d\"sign-in-button\""},{"lineNumber":21,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":22,"author":{"gitId":"-"},"content":" [disabled]\u003d\"repoForm.invalid || isSettingUpSession\""},{"lineNumber":23,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":24,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cdiv\u003eSubmit\u003c/div\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"isSettingUpSession\" class\u003d\"spinner-centralize\"\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cmat-spinner [diameter]\u003d\"47\"\u003e\u003c/mat-spinner\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/mat-card-actions\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/mat-card-content\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/form\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c!-- \u003c/mat-tab\u003e --\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c!-- \u003c/mat-tab-group\u003e --\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003c/mat-card\u003e"}],"authorContributionMap":{"Eclipse-Dominator":1,"-":35}},{"path":"src/app/auth/session-selection/session-selection.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, EventEmitter, Input, OnInit, Output } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormBuilder, FormGroup, Validators } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Profile } from \u0027../../core/models/profile.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { AuthService, AuthState } from \u0027../../core/services/auth.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { RepoUrlCacheService } from \u0027../../core/services/repo-url-cache.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-session-selection\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./session-selection.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./session-selection.component.css\u0027, \u0027../auth.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class SessionSelectionComponent implements OnInit {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // isSettingUpSession is used to indicate whether WATcher is in the midst of setting up the session."},{"lineNumber":17,"author":{"gitId":"-"},"content":" isSettingUpSession: boolean;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" profileForm: FormGroup;"},{"lineNumber":19,"author":{"gitId":"-"},"content":" repoForm: FormGroup;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" filteredSuggestions: Observable\u003cstring[]\u003e;"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Input() urlEncodedSessionName: string;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Input() urlEncodedRepo: string;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Output() sessionEmitter: EventEmitter\u003cstring\u003e \u003d new EventEmitter\u003cstring\u003e();"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":28,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private logger: LoggingService,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private authService: AuthService,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private repoUrlCacheService: RepoUrlCacheService,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.isSettingUpSession \u003d false;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.initProfileForm();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.initRepoForm();"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.autofillRepo();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Fills the login form with data from the given Profile."},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @param profile - Profile selected by the user."},{"lineNumber":45,"author":{"gitId":"-"},"content":" */"},{"lineNumber":46,"author":{"gitId":"-"},"content":" onProfileSelect(profile: Profile): void {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.profileForm.get(\u0027session\u0027).setValue(profile.repoName);"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.sessionEmitter.emit(profile.repoName);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" setupSession() {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (this.repoForm.invalid) {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.isSettingUpSession \u003d true;"},{"lineNumber":56,"author":{"gitId":"-"},"content":" const repoInformation: string \u003d this.repoForm.get(\u0027repo\u0027).value;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" const repoOrg: string \u003d this.getOrgDetails(repoInformation);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" const repoName: string \u003d this.getDataRepoDetails(repoInformation);"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Persist repo information in local browser storage"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * To retrieve after authentication redirects back to WATcher"},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" *"},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" * Since localStorage::setItem with an undefined value can result in"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" * the subsequent value being stored as a string being \u0027undefined\u0027, check"},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" * if undefined before storing it. Let\u0027s reset the items before setting them."},{"lineNumber":67,"author":{"gitId":"-"},"content":" */"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.localStorage.removeItem(\u0027org\u0027);"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.localStorage.removeItem(\u0027dataRepo\u0027);"},{"lineNumber":71,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (repoOrg \u0026\u0026 repoName) {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" window.localStorage.setItem(\u0027org\u0027, repoOrg);"},{"lineNumber":74,"author":{"gitId":"-"},"content":" window.localStorage.setItem(\u0027dataRepo\u0027, repoName);"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.repoUrlCacheService.cache(repoInformation);"},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`SessionSelectionComponent: Selected Repository: ${repoInformation}`);"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.authService.startOAuthProcess();"},{"lineNumber":83,"author":{"gitId":"-"},"content":" } catch (error) {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.isSettingUpSession \u003d false;"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Extracts the Organization Details from the input sessionInformation."},{"lineNumber":92,"author":{"gitId":"-"},"content":" * @param sessionInformation - string in the format of \u0027orgName/dataRepo\u0027"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private getOrgDetails(sessionInformation: string) {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return sessionInformation.split(\u0027/\u0027)[0];"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Extracts the Data Repository Details from the input sessionInformation."},{"lineNumber":100,"author":{"gitId":"-"},"content":" * @param sessionInformation - string in the format of \u0027orgName/dataRepo\u0027"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private getDataRepoDetails(sessionInformation: string) {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return sessionInformation.split(\u0027/\u0027)[1];"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" private initProfileForm() {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" this.profileForm \u003d this.formBuilder.group({"},{"lineNumber":108,"author":{"gitId":"-"},"content":" session: [\u0027\u0027, Validators.required]"},{"lineNumber":109,"author":{"gitId":"-"},"content":" });"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":" private initRepoForm() {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.repoForm \u003d this.formBuilder.group({"},{"lineNumber":114,"author":{"gitId":"-"},"content":" repo: [\u0027\u0027, Validators.required]"},{"lineNumber":115,"author":{"gitId":"-"},"content":" });"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":" this.filteredSuggestions \u003d this.repoUrlCacheService.getFilteredSuggestions(this.repoForm.get(\u0027repo\u0027));"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }"},{"lineNumber":119,"author":{"gitId":"-"},"content":""},{"lineNumber":120,"author":{"gitId":"-"},"content":" private autofillRepo() {"},{"lineNumber":121,"author":{"gitId":"-"},"content":" this.repoForm.get(\u0027repo\u0027).setValue(this.urlEncodedRepo);"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":9,"-":113,"cheehongw":1}},{"path":"src/app/core/guards/user-confirmation/user-confirmation.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { CanDeactivateIssueGuard } from \u0027../can-deactivate-issue-guard.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * The UserConfirmationComponent is responsible for rendering the UserDialog"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * to verify if certain changes made to relevant inputs are to be discarded."},{"lineNumber":8,"author":{"gitId":"-"},"content":" */"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-user-confirmation\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./user-confirmation.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./user-confirmation.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class UserConfirmationComponent implements OnInit {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // Injection of a reference to Dialog from the Service that it is to be"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // displayed in."},{"lineNumber":18,"author":{"gitId":"-"},"content":" constructor(public dialogRef: MatDialogRef\u003cCanDeactivateIssueGuard\u003e, @Inject(MAT_DIALOG_DATA) public data) {}"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Closes the dialog."},{"lineNumber":24,"author":{"gitId":"-"},"content":" */"},{"lineNumber":25,"author":{"gitId":"-"},"content":" onNoClick(): void {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.dialogRef.close(false);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":27}},{"path":"src/app/core/models/issue.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import * as moment from \u0027moment\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { GithubComment } from \u0027./github/github-comment.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027./github/github-issue.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027./github/github-label.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { HiddenData } from \u0027./hidden-data.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Milestone } from \u0027./milestone.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"export class Issue {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" /** Basic Fields */"},{"lineNumber":10,"author":{"gitId":"-"},"content":" readonly globalId: string;"},{"lineNumber":11,"author":{"gitId":"-"},"content":" readonly id: number;"},{"lineNumber":12,"author":{"gitId":"-"},"content":" readonly created_at: string;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" readonly githubIssue: GithubIssue;"},{"lineNumber":14,"author":{"gitId":"-"},"content":" githubComments: GithubComment[];"},{"lineNumber":15,"author":{"gitId":"-"},"content":" title: string;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" description: string;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" hiddenDataInDescription: HiddenData;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" updated_at: string;"},{"lineNumber":19,"author":{"gitId":"-"},"content":" closed_at: string;"},{"lineNumber":20,"author":{"gitId":"Echomo-Xinyu"},"content":" milestone: Milestone;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" state: string;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" issueOrPr: string;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" author: string;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" /** Depending on the phase, assignees attribute can be derived from Github\u0027s assignee feature OR from the Github\u0027s issue description */"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assignees?: string[];"},{"lineNumber":27,"author":{"gitId":"-"},"content":" labels?: string[];"},{"lineNumber":28,"author":{"gitId":"-"},"content":" githubLabels?: GithubLabel[];"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Formats the text to create space at the end of the user input to prevent any issues with"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * the markdown interpretation."},{"lineNumber":33,"author":{"gitId":"-"},"content":" *"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Brought over from comment-editor.component.ts"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */"},{"lineNumber":36,"author":{"gitId":"-"},"content":" static formatText(text: string): string {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (text \u003d\u003d\u003d null) {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return null;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (text \u003d\u003d\u003d undefined) {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return undefined;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" const newLinesRegex \u003d /[\\n\\r]/gi;"},{"lineNumber":46,"author":{"gitId":"-"},"content":" const textSplitArray \u003d text.split(newLinesRegex);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (textSplitArray.filter((split) \u003d\u003e split.trim() !\u003d\u003d \u0027\u0027).length \u003e 0) {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return `${text}\\n\\n`;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return text;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Processes and cleans a raw issue description obtained from user input."},{"lineNumber":56,"author":{"gitId":"-"},"content":" */"},{"lineNumber":57,"author":{"gitId":"-"},"content":" static updateDescription(description: string): string {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" const defaultString \u003d \u0027No details provided by bug reporter.\u0027;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return Issue.orDefaultString(Issue.formatText(description), defaultString);"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Given two strings, returns the first if it is not an empty string or a false value such as null/undefined."},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns the second string if the first is an empty string."},{"lineNumber":65,"author":{"gitId":"-"},"content":" */"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private static orDefaultString(stringA: string, def: string): string {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (!stringA) {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return def;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return stringA.length !\u003d\u003d 0 ? stringA : def;"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }"},{"lineNumber":72,"author":{"gitId":"-"},"content":""},{"lineNumber":73,"author":{"gitId":"-"},"content":" protected constructor(githubIssue: GithubIssue) {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /** Basic Fields */"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.globalId \u003d githubIssue.id;"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.id \u003d +githubIssue.number;"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.created_at \u003d moment(githubIssue.created_at).format(\u0027lll\u0027);"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.updated_at \u003d moment(githubIssue.updated_at).format(\u0027lll\u0027);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.closed_at \u003d moment(githubIssue.closed_at).format(\u0027lll\u0027);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.title \u003d githubIssue.title;"},{"lineNumber":81,"author":{"gitId":"-"},"content":" this.hiddenDataInDescription \u003d new HiddenData(githubIssue.body);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.description \u003d Issue.updateDescription(this.hiddenDataInDescription.originalStringWithoutHiddenData);"},{"lineNumber":83,"author":{"gitId":"Echomo-Xinyu"},"content":" // githubIssue without milestone will be set to default milestone"},{"lineNumber":84,"author":{"gitId":"Echomo-Xinyu"},"content":" this.milestone \u003d githubIssue.milestone ? new Milestone(githubIssue.milestone) : Milestone.DefaultMilestone;"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.state \u003d githubIssue.state;"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.issueOrPr \u003d githubIssue.issueOrPr;"},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.author \u003d githubIssue.user.login;"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // this.githubIssue \u003d githubIssue;"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.assignees \u003d githubIssue.assignees.map((assignee) \u003d\u003e assignee.login);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" this.githubLabels \u003d githubIssue.labels;"},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.labels \u003d githubIssue.labels.map((label) \u003d\u003e label.name);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static createPhaseBugReportingIssue(githubIssue: GithubIssue): Issue {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Issue(githubIssue);"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" createGithubIssueDescription(): string {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return `${this.description}\\n${this.hiddenDataInDescription.toString()}`;"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":"export interface Issues {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" [id: number]: Issue;"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":"export const IssuesFilter \u003d {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" issuesViewer: {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Student: \u0027NO_FILTER\u0027,"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Tutor: \u0027NO_FILTER\u0027,"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Admin: \u0027NO_FILTER\u0027"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }"},{"lineNumber":114,"author":{"gitId":"-"},"content":"};"}],"authorContributionMap":{"Echomo-Xinyu":3,"-":111}},{"path":"src/app/core/models/milestone.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":2,"author":{"gitId":"-"},"content":" * Represents a milestone and its attributes fetched from Github."},{"lineNumber":3,"author":{"gitId":"-"},"content":" */"},{"lineNumber":4,"author":{"gitId":"-"},"content":"export class Milestone {"},{"lineNumber":5,"author":{"gitId":"Echomo-Xinyu"},"content":" static DefaultMilestone: Milestone \u003d new Milestone({ number: \u0027untracked\u0027, title: \u0027Without a milestone\u0027, state: null });"},{"lineNumber":6,"author":{"gitId":"-"},"content":" readonly number: string; // equivalent to the id of an issue e.g. milestone #1"},{"lineNumber":7,"author":{"gitId":"-"},"content":" title: string;"},{"lineNumber":8,"author":{"gitId":"-"},"content":" state: string;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":" constructor(milestone: { number: string; title: string; state: string }) {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" this.number \u003d milestone.number;"},{"lineNumber":12,"author":{"gitId":"-"},"content":" this.title \u003d milestone.title;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" this.state \u003d milestone.state;"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":" public equals(milestone: Milestone) {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return this.number \u003d\u003d\u003d milestone.number;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":18}},{"path":"src/app/core/models/repo.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":2,"author":{"gitId":"-"},"content":" * Represents a repository."},{"lineNumber":3,"author":{"gitId":"-"},"content":" * Repository url is owner/name."},{"lineNumber":4,"author":{"gitId":"-"},"content":" */"},{"lineNumber":5,"author":{"gitId":"-"},"content":"export class Repo {"},{"lineNumber":6,"author":{"gitId":"-"},"content":" owner: string;"},{"lineNumber":7,"author":{"gitId":"-"},"content":" name: string;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":" /** Creates a new Repo from owner and name strings. */"},{"lineNumber":10,"author":{"gitId":"-"},"content":" constructor(owner: string, name: string) {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" this.owner \u003d owner;"},{"lineNumber":12,"author":{"gitId":"-"},"content":" this.name \u003d name;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** Creates a new Repo from one repository url. */"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static of(repoUrl: string) {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" const repoUrlSplit \u003d repoUrl.split(\u0027/\u0027);"},{"lineNumber":18,"author":{"gitId":"-"},"content":" if (repoUrlSplit.length !\u003d\u003d 2) {"},{"lineNumber":19,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" throw new Error(\u0027Invalid repository name. Please provide repository name in the format Org/Repository Name.\u0027);"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new Repo(repoUrlSplit[0], repoUrlSplit[1]);"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public static ofEmptyRepo() {"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return EMPTY_REPO;"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":27,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":28,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public static isInvalidRepoName(repo: unknown) {"},{"lineNumber":29,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (repo instanceof Repo) {"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const otherRepo \u003d repo as Repo;"},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return otherRepo.equals(EMPTY_REPO);"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return false;"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" /** String representation of a Repo. */"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public toString(): string {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return this.owner + \u0027/\u0027 + this.name;"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" public equals(otherRepo: unknown): boolean {"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (otherRepo instanceof Repo) {"},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return otherRepo.name \u003d\u003d\u003d this.name \u0026\u0026 otherRepo.owner \u003d\u003d\u003d this.owner;"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return false;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":51,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"const EMPTY_REPO \u003d new Repo(\u0027\u0027, \u0027\u0027);"}],"authorContributionMap":{"vigneshsankariyer1234567890":23,"-":28}},{"path":"src/app/core/services/auth.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgZone } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Title } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { BehaviorSubject } from \u0027rxjs\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { generateSessionId } from \u0027../../shared/lib/session\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { uuid } from \u0027../../shared/lib/uuid\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027./githubevent.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027./issue.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027./label.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027./phase.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./user.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"export enum AuthState {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u0027NotAuthenticated\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u0027AwaitingAuthentication\u0027,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u0027ConfirmOAuthUser\u0027,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u0027Authenticated\u0027"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":25,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":26,"author":{"gitId":"-"},"content":"})"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Responsible for initiating the authentication process and querying or"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * updating the application state with regards to authentication."},{"lineNumber":31,"author":{"gitId":"-"},"content":" */"},{"lineNumber":32,"author":{"gitId":"-"},"content":"export class AuthService {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" authStateSource \u003d new BehaviorSubject(AuthState.NotAuthenticated);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" currentAuthState \u003d this.authStateSource.asObservable();"},{"lineNumber":35,"author":{"gitId":"-"},"content":" accessToken \u003d new BehaviorSubject(undefined);"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private state: string;"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" ENABLE_POPUP_MESSAGE \u003d \u0027Please enable pop-ups in your browser\u0027;"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":41,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private ngZone: NgZone,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private labelService: LabelService,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private titleService: Title,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private logger: LoggingService"},{"lineNumber":51,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Will store the OAuth token."},{"lineNumber":55,"author":{"gitId":"-"},"content":" */"},{"lineNumber":56,"author":{"gitId":"-"},"content":" storeOAuthAccessToken(token: string) {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.githubService.storeOAuthAccessToken(token);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.accessToken.next(token);"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" reset(): void {"},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":" this.logger.info(\u0027AuthService: Clearing access token and setting AuthState to NotAuthenticated.\u0027);"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.accessToken.next(undefined);"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e this.router.navigate([\u0027\u0027]));"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" logOut(): void {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.githubService.reset();"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.userService.reset();"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.issueService.reset(true);"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.labelService.reset();"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.phaseService.reset();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.githubEventService.reset();"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.logger.reset();"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.setLandingPageTitle();"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.issueService.setIssueTeamFilter(\u0027All Teams\u0027);"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.reset();"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" setTitleWithPhaseDetail(): void {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" const appSetting \u003d require(\u0027../../../../package.json\u0027);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" const title \u003d `${appSetting.name} ${appSetting.version} - ${this.phaseService.getCurrentRepositoryURL()}`;"},{"lineNumber":84,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`AuthService: Setting Title as ${title}`);"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.titleService.setTitle(title);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":""},{"lineNumber":88,"author":{"gitId":"-"},"content":" setLandingPageTitle(): void {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" const appSetting \u003d require(\u0027../../../../package.json\u0027);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" const title \u003d `${appSetting.name} ${appSetting.version}`;"},{"lineNumber":91,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`AuthService: Setting Title as ${title}`);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.titleService.setTitle(title);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" isAuthenticated(): boolean {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return this.authStateSource.getValue() \u003d\u003d\u003d AuthState.Authenticated;"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" changeAuthState(newAuthState: AuthState) {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (newAuthState \u003d\u003d\u003d AuthState.Authenticated) {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" const sessionId \u003d generateSessionId();"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.issueService.setSessionId(sessionId);"},{"lineNumber":103,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`AuthService: Successfully authenticated with session: ${sessionId}`);"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.authStateSource.next(newAuthState);"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Generates and assigns an unguessable random \u0027state\u0027 string to pass to Github for protection against cross-site request forgery attacks"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */"},{"lineNumber":111,"author":{"gitId":"-"},"content":" generateStateString() {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.state \u003d uuid();"},{"lineNumber":113,"author":{"gitId":"-"},"content":" sessionStorage.setItem(\u0027state\u0027, this.state);"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }"},{"lineNumber":115,"author":{"gitId":"-"},"content":""},{"lineNumber":116,"author":{"gitId":"-"},"content":" isReturnedStateSame(returnedState: string): boolean {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" const state \u003d sessionStorage.getItem(\u0027state\u0027);"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return returnedState \u003d\u003d\u003d state;"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Will start the Github OAuth web flow process."},{"lineNumber":123,"author":{"gitId":"-"},"content":" */"},{"lineNumber":124,"author":{"gitId":"-"},"content":" startOAuthProcess() {"},{"lineNumber":125,"author":{"gitId":"cheehongw"},"content":" this.logger.info(\u0027AuthService: Starting authentication\u0027);"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // Available OAuth scopes https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps#available-scopes"},{"lineNumber":127,"author":{"gitId":"-"},"content":" const githubRepoPermission \u003d \u0027repo\u0027;"},{"lineNumber":128,"author":{"gitId":"-"},"content":" this.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":" this.generateStateString();"},{"lineNumber":131,"author":{"gitId":"-"},"content":" this.redirectToOAuthPage("},{"lineNumber":132,"author":{"gitId":"-"},"content":" encodeURI("},{"lineNumber":133,"author":{"gitId":"-"},"content":" `${AppConfig.githubUrl}/login/oauth/authorize?client_id\u003d${AppConfig.clientId}\u0026scope\u003d${githubRepoPermission},read:user\u0026state\u003d${this.state}`"},{"lineNumber":134,"author":{"gitId":"-"},"content":" )"},{"lineNumber":135,"author":{"gitId":"-"},"content":" );"},{"lineNumber":136,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`AuthService: Redirecting for Github authentication`);"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Will redirect to GitHub OAuth page"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private redirectToOAuthPage(url: string): void {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (url \u003d\u003d null) {"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }"},{"lineNumber":146,"author":{"gitId":"-"},"content":" window.location.href \u003d url;"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":1,"-":142,"cheehongw":5}},{"path":"src/app/core/services/dialog.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { LabelDefinitionPopupComponent } from \u0027../../shared/label-definition-popup/label-definition-popup.component\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { RepoChangeFormComponent } from \u0027../../shared/repo-change-form/repo-change-form.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { UserConfirmationComponent } from \u0027../guards/user-confirmation/user-confirmation.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":8,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":9,"author":{"gitId":"-"},"content":"})"},{"lineNumber":10,"author":{"gitId":"-"},"content":"export class DialogService {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" constructor(private dialog: MatDialog) {}"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":" openUserConfirmationModal(messages: string[], yesButtonMessage: string, noButtonMessage: string) {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" return this.dialog.open(UserConfirmationComponent, {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" data: {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" messages: messages,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" yesMessage: yesButtonMessage,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" noMessage: noButtonMessage"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }"},{"lineNumber":20,"author":{"gitId":"-"},"content":" });"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" openLabelDefinitionDialog(labelName: String, labelDefinition: String) {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return this.dialog.open(LabelDefinitionPopupComponent, {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" data: {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" header: labelName,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" body: labelDefinition"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }"},{"lineNumber":29,"author":{"gitId":"-"},"content":" });"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }"},{"lineNumber":31,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":32,"author":{"gitId":"cheehongw"},"content":" openChangeRepoDialog(repoName: String) {"},{"lineNumber":33,"author":{"gitId":"cheehongw"},"content":" return this.dialog.open(RepoChangeFormComponent, {"},{"lineNumber":34,"author":{"gitId":"cheehongw"},"content":" data: {"},{"lineNumber":35,"author":{"gitId":"cheehongw"},"content":" repoName: repoName"},{"lineNumber":36,"author":{"gitId":"cheehongw"},"content":" },"},{"lineNumber":37,"author":{"gitId":"cheehongw"},"content":" height: \u0027auto\u0027,"},{"lineNumber":38,"author":{"gitId":"cheehongw"},"content":" width: \u002740%\u0027"},{"lineNumber":39,"author":{"gitId":"cheehongw"},"content":" });"},{"lineNumber":40,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"vigneshsankariyer1234567890":1,"-":29,"cheehongw":10}},{"path":"src/app/core/services/error-handling.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpErrorResponse } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ErrorHandler, Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSnackBar } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { RequestError } from \u0027@octokit/request-error\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { FormErrorComponent } from \u0027../../shared/error-toasters/form-error/form-error.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GeneralMessageErrorComponent } from \u0027../../shared/error-toasters/general-message-error/general-message-error.component\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"export const ERRORCODE_NOT_FOUND \u003d 404;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"const FILTERABLE \u003d [\u0027node_modules\u0027];"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":14,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":15,"author":{"gitId":"-"},"content":"})"},{"lineNumber":16,"author":{"gitId":"-"},"content":"export class ErrorHandlingService implements ErrorHandler {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" constructor(private snackBar: MatSnackBar, private logger: LoggingService) {}"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" handleError(error: HttpErrorResponse | Error | RequestError, actionCallback?: () \u003d\u003e void) {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.logger.error(error);"},{"lineNumber":21,"author":{"gitId":"-"},"content":" if (error instanceof Error) {"},{"lineNumber":22,"author":{"gitId":"cheehongw"},"content":" this.logger.debug(\u0027ErrorHandlingService: \u0027, this.cleanStack(error.stack));"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }"},{"lineNumber":24,"author":{"gitId":"-"},"content":" if (error instanceof HttpErrorResponse) {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.handleHttpError(error, actionCallback);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" } else if (error.constructor.name \u003d\u003d\u003d \u0027RequestError\u0027) {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.handleHttpError(error as RequestError, actionCallback);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.handleGeneralError(error.message || JSON.stringify(error));"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" private cleanStack(stacktrace: string): string {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return stacktrace"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .split(\u0027\\n\u0027)"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .filter((line) \u003d\u003e !FILTERABLE.some((word) \u003d\u003e line.includes(word))) // exclude lines that contain words in FILTERABLE"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .join(\u0027\\n\u0027);"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" // Ref: https://developer.github.com/v3/#client-errors"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private handleHttpError(error: HttpErrorResponse | RequestError, actionCallback?: () \u003d\u003e void): void {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Angular treats 304 Not Modified as an error, we will ignore it."},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (error.status \u003d\u003d\u003d 304) {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!navigator.onLine) {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.handleGeneralError(\u0027No Internet Connection\u0027);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" switch (error.status) {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" case 500: // Internal Server Error."},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(GeneralMessageErrorComponent, { data: error });"},{"lineNumber":55,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":56,"author":{"gitId":"-"},"content":" case 422: // Form errors"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(FormErrorComponent, { data: error });"},{"lineNumber":58,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" case 400: // Bad request"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case 401: // Unauthorized"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case 404: // Not found"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(GeneralMessageErrorComponent, { data: error });"},{"lineNumber":63,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":64,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(GeneralMessageErrorComponent, { data: error });"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":" private handleGeneralError(error: string): void {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.snackBar.openFromComponent(GeneralMessageErrorComponent, { data: { message: error } });"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":71,"cheehongw":1}},{"path":"src/app/core/services/factories/factory.github.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Apollo } from \u0027apollo-angular\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"// import { AppConfig } from \u0027../../../../environments/environment\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../error-handling.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../github.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../logging.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"// import { MockGithubService } from \u0027../mocks/mock.github.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"export function GithubServiceFactory(handling: ErrorHandlingService, apollo: Apollo, logger: LoggingService) {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" // TODO: Write Mocks"},{"lineNumber":10,"author":{"gitId":"-"},"content":" // if (AppConfig.test) {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" // return new MockGithubService();"},{"lineNumber":12,"author":{"gitId":"-"},"content":" // }"},{"lineNumber":13,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return new GithubService(handling, apollo, logger);"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":12}},{"path":"src/app/core/services/factories/factory.issue.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"// import { AppConfig } from \u0027../../../../environments/environment\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../github.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../issue.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"// import { MockIssueService } from \u0027../mocks/mock.issue.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../phase.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../user.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"export function IssueServiceFactory(githubService: GithubService, userService: UserService, phaseService: PhaseService) {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" // TODO: Write Mocks"},{"lineNumber":10,"author":{"gitId":"-"},"content":" // if (AppConfig.test) {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" // return new MockIssueService(githubService, phaseService, dataService);"},{"lineNumber":12,"author":{"gitId":"-"},"content":" // }"},{"lineNumber":13,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return new IssueService(githubService, userService, phaseService);"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":12}},{"path":"src/app/core/services/github.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpErrorResponse } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Apollo, QueryRef } from \u0027apollo-angular\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { ApolloQueryResult } from \u0027apollo-client\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { DocumentNode } from \u0027graphql\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { BehaviorSubject, forkJoin, from, merge, Observable, of, throwError } from \u0027rxjs\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { catchError, filter, flatMap, map, throwIfEmpty } from \u0027rxjs/operators\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" FetchIssue,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" FetchIssueQuery,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" FetchIssues,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" FetchIssuesQuery,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" FetchPullRequests,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" FetchPullRequestsQuery"},{"lineNumber":15,"author":{"gitId":"-"},"content":"} from \u0027../../../../graphql/graphql-types\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { getNumberOfPages } from \u0027../../shared/lib/github-paginator-parser\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../models/github-user.model\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import { IssueLastModifiedManagerModel } from \u0027../models/github/cache-manager/issue-last-modified-manager.model\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import { IssuesCacheManager } from \u0027../models/github/cache-manager/issues-cache-manager.model\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import { GithubEvent } from \u0027../models/github/github-event.model\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import { GithubGraphqlIssue } from \u0027../models/github/github-graphql.issue\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import { GithubGraphqlIssueOrPr } from \u0027../models/github/github-graphql.issue-or-pr\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import RestGithubIssueFilter from \u0027../models/github/github-issue-filter.model\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027../models/github/github-issue.model\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import { GithubResponse } from \u0027../models/github/github-response.model\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import { GithubRelease } from \u0027../models/github/github.release\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import { SessionData } from \u0027../models/session.model\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import { ERRORCODE_NOT_FOUND, ErrorHandlingService } from \u0027./error-handling.service\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":"const { Octokit } \u003d require(\u0027@octokit/rest\u0027);"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":"const WATCHER_ORG \u003d \u0027WATcher-org\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":"const WATCHER_REPO \u003d \u0027WATcher\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":"const UNABLE_TO_OPEN_IN_BROWSER \u003d \u0027Unable to open this issue in Browser\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"/** Owner of Repository to watch */"},{"lineNumber":39,"author":{"gitId":"-"},"content":"let ORG_NAME \u003d \u0027\u0027; // repoOrg"},{"lineNumber":40,"author":{"gitId":"-"},"content":"/** Name of Repository to watch */"},{"lineNumber":41,"author":{"gitId":"-"},"content":"let REPO \u003d \u0027\u0027; // repoName"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":"/** Owner of Settings repository, currently not used */"},{"lineNumber":44,"author":{"gitId":"-"},"content":"let MOD_ORG \u003d \u0027\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":"/** Name of Settings repository, currently not used */"},{"lineNumber":46,"author":{"gitId":"-"},"content":"let DATA_REPO \u003d \u0027\u0027;"},{"lineNumber":47,"author":{"gitId":"-"},"content":"const MAX_ITEMS_PER_PAGE \u003d 100;"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":"let octokit \u003d new Octokit();"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":52,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":53,"author":{"gitId":"-"},"content":"})"},{"lineNumber":54,"author":{"gitId":"-"},"content":""},{"lineNumber":55,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Responsible for communicating with GitHub to create, update, read and delete"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * features related to Github using GitHub API Requests."},{"lineNumber":58,"author":{"gitId":"-"},"content":" * For example, issues, issue labels and repositories."},{"lineNumber":59,"author":{"gitId":"-"},"content":" */"},{"lineNumber":60,"author":{"gitId":"-"},"content":"export class GithubService {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private static readonly IF_NONE_MATCH_EMPTY \u003d { \u0027If-None-Match\u0027: \u0027\u0027 };"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" private issuesCacheManager \u003d new IssuesCacheManager();"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private issuesLastModifiedManager \u003d new IssueLastModifiedManagerModel();"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private issueQueryRefs \u003d new Map\u003cnumber, QueryRef\u003cFetchIssueQuery\u003e\u003e();"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor(private errorHandlingService: ErrorHandlingService, private apollo: Apollo, private logger: LoggingService) {}"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" storeOAuthAccessToken(accessToken: string) {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" octokit \u003d new Octokit({"},{"lineNumber":71,"author":{"gitId":"-"},"content":" auth() {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return `Token ${accessToken}`;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" },"},{"lineNumber":74,"author":{"gitId":"-"},"content":" log: {"},{"lineNumber":75,"author":{"gitId":"cheehongw"},"content":" debug: (message, ...otherInfo) \u003d\u003e this.logger.debug(\u0027GithubService: \u0027 + message, ...otherInfo),"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // Do not log info for HTTP response 304 due to repeated polling"},{"lineNumber":77,"author":{"gitId":"Eclipse-Dominator"},"content":" info: (message, ...otherInfo) \u003d\u003e"},{"lineNumber":78,"author":{"gitId":"Eclipse-Dominator"},"content":" /304 in \\d+ms$/.test(message) ? undefined : this.logger.info(\u0027GithubService: \u0027 + message, ...otherInfo),"},{"lineNumber":79,"author":{"gitId":"cheehongw"},"content":" warn: (message, ...otherInfo) \u003d\u003e this.logger.warn(\u0027GithubService: \u0027 + message, ...otherInfo),"},{"lineNumber":80,"author":{"gitId":"cheehongw"},"content":" error: (message, ...otherInfo) \u003d\u003e this.logger.error(\u0027GithubService: \u0027 + message, ...otherInfo)"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"-"},"content":" });"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Sets settings repository. Not used."},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @param orgName WATcher organisation"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @param dataRepo WATcher repository"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */"},{"lineNumber":90,"author":{"gitId":"-"},"content":" storeOrganizationDetails(orgName: string, dataRepo: string) {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" MOD_ORG \u003d orgName;"},{"lineNumber":92,"author":{"gitId":"-"},"content":" DATA_REPO \u003d dataRepo;"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Sets repository to watch. This repository is used for fetching from Github."},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @param phaseRepoOwner Repository owner"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @param repoName Repository name"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */"},{"lineNumber":100,"author":{"gitId":"-"},"content":" storePhaseDetails(phaseRepoOwner: string, repoName: string) {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" REPO \u003d repoName;"},{"lineNumber":102,"author":{"gitId":"-"},"content":" ORG_NAME \u003d phaseRepoOwner;"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Fetches an array of filtered GitHubIssues using GraphQL query."},{"lineNumber":107,"author":{"gitId":"-"},"content":" * In WATcher, this includes pull requests."},{"lineNumber":108,"author":{"gitId":"-"},"content":" *"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @param issuesFilter - The issue filter."},{"lineNumber":110,"author":{"gitId":"-"},"content":" * @returns An observable array of filtered GithubIssues"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */"},{"lineNumber":112,"author":{"gitId":"-"},"content":" fetchIssuesGraphql(issuesFilter: RestGithubIssueFilter): Observable\u003cArray\u003cGithubIssue\u003e\u003e {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" const graphqlFilter \u003d issuesFilter.convertToGraphqlFilter();"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /*"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Github Issues consists of issues and pull requests in WATcher."},{"lineNumber":116,"author":{"gitId":"-"},"content":" */"},{"lineNumber":117,"author":{"gitId":"-"},"content":" const issueObs \u003d this.toFetchIssues(issuesFilter).pipe("},{"lineNumber":118,"author":{"gitId":"-"},"content":" filter((toFetch) \u003d\u003e toFetch),"},{"lineNumber":119,"author":{"gitId":"-"},"content":" flatMap(() \u003d\u003e {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return this.fetchGraphqlList\u003cFetchIssuesQuery, GithubGraphqlIssueOrPr\u003e("},{"lineNumber":121,"author":{"gitId":"-"},"content":" FetchIssues,"},{"lineNumber":122,"author":{"gitId":"-"},"content":" { owner: ORG_NAME, name: REPO, filter: graphqlFilter },"},{"lineNumber":123,"author":{"gitId":"-"},"content":" (result) \u003d\u003e result.data.repository.issues.edges,"},{"lineNumber":124,"author":{"gitId":"-"},"content":" GithubGraphqlIssueOrPr"},{"lineNumber":125,"author":{"gitId":"-"},"content":" );"},{"lineNumber":126,"author":{"gitId":"-"},"content":" })"},{"lineNumber":127,"author":{"gitId":"-"},"content":" );"},{"lineNumber":128,"author":{"gitId":"-"},"content":" const prObs \u003d this.toFetchIssues(issuesFilter).pipe("},{"lineNumber":129,"author":{"gitId":"-"},"content":" filter((toFetch) \u003d\u003e toFetch),"},{"lineNumber":130,"author":{"gitId":"-"},"content":" flatMap(() \u003d\u003e {"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return this.fetchGraphqlList\u003cFetchPullRequestsQuery, GithubGraphqlIssueOrPr\u003e("},{"lineNumber":132,"author":{"gitId":"-"},"content":" FetchPullRequests,"},{"lineNumber":133,"author":{"gitId":"-"},"content":" { owner: ORG_NAME, name: REPO },"},{"lineNumber":134,"author":{"gitId":"-"},"content":" (result) \u003d\u003e result.data.repository.pullRequests.edges,"},{"lineNumber":135,"author":{"gitId":"-"},"content":" GithubGraphqlIssueOrPr"},{"lineNumber":136,"author":{"gitId":"-"},"content":" );"},{"lineNumber":137,"author":{"gitId":"-"},"content":" })"},{"lineNumber":138,"author":{"gitId":"-"},"content":" );"},{"lineNumber":139,"author":{"gitId":"-"},"content":""},{"lineNumber":140,"author":{"gitId":"-"},"content":" // Concatenate both streams together."},{"lineNumber":141,"author":{"gitId":"-"},"content":" return merge(issueObs, prObs);"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }"},{"lineNumber":143,"author":{"gitId":"-"},"content":""},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Checks if there are pages of filtered issues that are not cached in the cache model,"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * and updates the model to cache these new pages."},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param filter - The issue filter."},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @returns Observable\u003cboolean\u003e that returns true if there are pages that do not exist in the cache model."},{"lineNumber":149,"author":{"gitId":"-"},"content":" */"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private toFetchIssues(filter: RestGithubIssueFilter): Observable\u003cboolean\u003e {"},{"lineNumber":151,"author":{"gitId":"-"},"content":" let responseInFirstPage: GithubResponse\u003cGithubIssue[]\u003e;"},{"lineNumber":152,"author":{"gitId":"-"},"content":" return this.getIssuesAPICall(filter, 1).pipe("},{"lineNumber":153,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue[]\u003e) \u003d\u003e {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" responseInFirstPage \u003d response;"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return getNumberOfPages(response);"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":157,"author":{"gitId":"-"},"content":" flatMap((numOfPages: number) \u003d\u003e {"},{"lineNumber":158,"author":{"gitId":"-"},"content":" const apiCalls: Observable\u003cGithubResponse\u003cGithubIssue[]\u003e\u003e[] \u003d [];"},{"lineNumber":159,"author":{"gitId":"-"},"content":" for (let i \u003d 2; i \u003c\u003d numOfPages; i++) {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" apiCalls.push(this.getIssuesAPICall(filter, i));"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return apiCalls.length \u003d\u003d\u003d 0 ? of([]) : forkJoin(apiCalls);"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":164,"author":{"gitId":"-"},"content":" map((resultArray: GithubResponse\u003cGithubIssue[]\u003e[]) \u003d\u003e {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" const responses \u003d [responseInFirstPage, ...resultArray];"},{"lineNumber":166,"author":{"gitId":"-"},"content":" const isCached \u003d responses.reduce((result, response) \u003d\u003e {"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return result \u0026\u0026 response.isCached;"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }, true);"},{"lineNumber":169,"author":{"gitId":"-"},"content":" responses.forEach((resp, index) \u003d\u003e this.issuesCacheManager.set(index + 1, resp));"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return !isCached;"},{"lineNumber":171,"author":{"gitId":"-"},"content":" })"},{"lineNumber":172,"author":{"gitId":"-"},"content":" );"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }"},{"lineNumber":174,"author":{"gitId":"-"},"content":""},{"lineNumber":175,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Checks if the specified repository exists."},{"lineNumber":177,"author":{"gitId":"-"},"content":" * @param owner - Owner of Specified Repository."},{"lineNumber":178,"author":{"gitId":"-"},"content":" * @param repo - Name of Repository."},{"lineNumber":179,"author":{"gitId":"-"},"content":" */"},{"lineNumber":180,"author":{"gitId":"-"},"content":" isRepositoryPresent(owner: string, repo: string): Observable\u003cboolean\u003e {"},{"lineNumber":181,"author":{"gitId":"-"},"content":" return from(octokit.repos.get({ owner: owner, repo: repo, headers: GithubService.IF_NONE_MATCH_EMPTY })).pipe("},{"lineNumber":182,"author":{"gitId":"-"},"content":" map((rawData: { status: number }) \u003d\u003e {"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return rawData.status !\u003d\u003d ERRORCODE_NOT_FOUND;"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":185,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return of(false);"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":188,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch repository data.\u0027))"},{"lineNumber":189,"author":{"gitId":"-"},"content":" );"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }"},{"lineNumber":191,"author":{"gitId":"-"},"content":""},{"lineNumber":192,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":193,"author":{"gitId":"-"},"content":" * Fetches information about an issue using GraphQL."},{"lineNumber":194,"author":{"gitId":"-"},"content":" *"},{"lineNumber":195,"author":{"gitId":"-"},"content":" * If the issue is not modified, return a `304 - Not Modified` response."},{"lineNumber":196,"author":{"gitId":"-"},"content":" *"},{"lineNumber":197,"author":{"gitId":"-"},"content":" * @param id - The issue id."},{"lineNumber":198,"author":{"gitId":"-"},"content":" * @returns Observable\u003cGithubGraphqlIssue\u003e that represents the response object."},{"lineNumber":199,"author":{"gitId":"-"},"content":" */"},{"lineNumber":200,"author":{"gitId":"-"},"content":" fetchIssueGraphql(id: number): Observable\u003cGithubGraphqlIssue\u003e {"},{"lineNumber":201,"author":{"gitId":"-"},"content":" if (this.issueQueryRefs.get(id) \u003d\u003d\u003d undefined) {"},{"lineNumber":202,"author":{"gitId":"-"},"content":" const newQueryRef \u003d this.apollo.watchQuery\u003cFetchIssueQuery\u003e({"},{"lineNumber":203,"author":{"gitId":"-"},"content":" query: FetchIssue,"},{"lineNumber":204,"author":{"gitId":"-"},"content":" variables: {"},{"lineNumber":205,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":206,"author":{"gitId":"-"},"content":" name: REPO,"},{"lineNumber":207,"author":{"gitId":"-"},"content":" issueId: id"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }"},{"lineNumber":209,"author":{"gitId":"-"},"content":" });"},{"lineNumber":210,"author":{"gitId":"-"},"content":" this.issueQueryRefs.set(id, newQueryRef);"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }"},{"lineNumber":212,"author":{"gitId":"-"},"content":""},{"lineNumber":213,"author":{"gitId":"-"},"content":" const queryRef \u003d this.issueQueryRefs.get(id);"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return this.toFetchIssue(id).pipe("},{"lineNumber":215,"author":{"gitId":"-"},"content":" filter((toFetch) \u003d\u003e toFetch),"},{"lineNumber":216,"author":{"gitId":"-"},"content":" flatMap(() \u003d\u003e from(queryRef.refetch())),"},{"lineNumber":217,"author":{"gitId":"-"},"content":" map((value: ApolloQueryResult\u003cFetchIssueQuery\u003e) \u003d\u003e {"},{"lineNumber":218,"author":{"gitId":"-"},"content":" return new GithubGraphqlIssue(value.data.repository.issue);"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":220,"author":{"gitId":"-"},"content":" throwIfEmpty(() \u003d\u003e new HttpErrorResponse({ status: 304 }))"},{"lineNumber":221,"author":{"gitId":"-"},"content":" );"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }"},{"lineNumber":223,"author":{"gitId":"-"},"content":""},{"lineNumber":224,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Checks if the issue has been modified since the last query, and"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * updates the model to reflect the last modified time."},{"lineNumber":227,"author":{"gitId":"-"},"content":" *"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * @param id - The issue id."},{"lineNumber":229,"author":{"gitId":"-"},"content":" * @returns Observable\u003cboolean\u003e that returns true if the issue has been modified."},{"lineNumber":230,"author":{"gitId":"-"},"content":" */"},{"lineNumber":231,"author":{"gitId":"-"},"content":" toFetchIssue(id: number): Observable\u003cboolean\u003e {"},{"lineNumber":232,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":233,"author":{"gitId":"-"},"content":" octokit.issues.get({"},{"lineNumber":234,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":235,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":236,"author":{"gitId":"-"},"content":" issue_number: id,"},{"lineNumber":237,"author":{"gitId":"-"},"content":" headers: { \u0027If-Modified-Since\u0027: this.issuesLastModifiedManager.get(id) }"},{"lineNumber":238,"author":{"gitId":"-"},"content":" })"},{"lineNumber":239,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":240,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":241,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.set(id, response.headers[\u0027last-modified\u0027]);"},{"lineNumber":242,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":244,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch issue.\u0027))"},{"lineNumber":245,"author":{"gitId":"-"},"content":" );"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }"},{"lineNumber":247,"author":{"gitId":"-"},"content":""},{"lineNumber":248,"author":{"gitId":"-"},"content":" fetchAllMilestones(): Observable\u003cArray\u003c{}\u003e\u003e {"},{"lineNumber":249,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":250,"author":{"gitId":"-"},"content":" octokit.issues.listMilestonesForRepo({"},{"lineNumber":251,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":252,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":253,"author":{"gitId":"-"},"content":" state: \u0027all\u0027,"},{"lineNumber":254,"author":{"gitId":"-"},"content":" per_page: MAX_ITEMS_PER_PAGE,"},{"lineNumber":255,"author":{"gitId":"-"},"content":" headers: GithubService.IF_NONE_MATCH_EMPTY"},{"lineNumber":256,"author":{"gitId":"-"},"content":" })"},{"lineNumber":257,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":258,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":259,"author":{"gitId":"-"},"content":" return response[\u0027data\u0027];"},{"lineNumber":260,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":261,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch milestones.\u0027))"},{"lineNumber":262,"author":{"gitId":"-"},"content":" );"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }"},{"lineNumber":264,"author":{"gitId":"-"},"content":""},{"lineNumber":265,"author":{"gitId":"-"},"content":" fetchAllLabels(): Observable\u003cArray\u003c{}\u003e\u003e {"},{"lineNumber":266,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":267,"author":{"gitId":"-"},"content":" octokit.issues.listLabelsForRepo({"},{"lineNumber":268,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":269,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":270,"author":{"gitId":"-"},"content":" per_page: MAX_ITEMS_PER_PAGE,"},{"lineNumber":271,"author":{"gitId":"-"},"content":" headers: GithubService.IF_NONE_MATCH_EMPTY"},{"lineNumber":272,"author":{"gitId":"-"},"content":" })"},{"lineNumber":273,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":274,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":275,"author":{"gitId":"-"},"content":" return response[\u0027data\u0027];"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":277,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch labels.\u0027))"},{"lineNumber":278,"author":{"gitId":"-"},"content":" );"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }"},{"lineNumber":280,"author":{"gitId":"-"},"content":""},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Checks if the given list of users are allowed to be assigned to an issue."},{"lineNumber":283,"author":{"gitId":"-"},"content":" * @param assignees - GitHub usernames to be checked"},{"lineNumber":284,"author":{"gitId":"-"},"content":" */"},{"lineNumber":285,"author":{"gitId":"-"},"content":" areUsersAssignable(assignees: string[]): Observable\u003cvoid\u003e {"},{"lineNumber":286,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":287,"author":{"gitId":"-"},"content":" octokit.issues.listAssignees({"},{"lineNumber":288,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":289,"author":{"gitId":"-"},"content":" repo: REPO"},{"lineNumber":290,"author":{"gitId":"-"},"content":" })"},{"lineNumber":291,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":292,"author":{"gitId":"-"},"content":" map(({ data }: { data: { login: string }[] }) \u003d\u003e data.map(({ login }) \u003d\u003e login)),"},{"lineNumber":293,"author":{"gitId":"-"},"content":" map((assignables: string[]) \u003d\u003e"},{"lineNumber":294,"author":{"gitId":"-"},"content":" assignees.forEach((assignee) \u003d\u003e {"},{"lineNumber":295,"author":{"gitId":"-"},"content":" if (!assignables.includes(assignee)) {"},{"lineNumber":296,"author":{"gitId":"-"},"content":" throw new Error(`Cannot assign ${assignee} to the issue. Please check if ${assignee} is authorized.`);"},{"lineNumber":297,"author":{"gitId":"-"},"content":" }"},{"lineNumber":298,"author":{"gitId":"-"},"content":" })"},{"lineNumber":299,"author":{"gitId":"-"},"content":" )"},{"lineNumber":300,"author":{"gitId":"-"},"content":" );"},{"lineNumber":301,"author":{"gitId":"-"},"content":" }"},{"lineNumber":302,"author":{"gitId":"-"},"content":""},{"lineNumber":303,"author":{"gitId":"-"},"content":" getUsersAssignable(): Observable\u003cGithubUser[]\u003e {"},{"lineNumber":304,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":305,"author":{"gitId":"-"},"content":" octokit.issues.listAssignees({"},{"lineNumber":306,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":307,"author":{"gitId":"-"},"content":" repo: REPO"},{"lineNumber":308,"author":{"gitId":"-"},"content":" })"},{"lineNumber":309,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":310,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":311,"author":{"gitId":"-"},"content":" return response[\u0027data\u0027];"},{"lineNumber":312,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":313,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch assignable users for repository\u0027))"},{"lineNumber":314,"author":{"gitId":"-"},"content":" );"},{"lineNumber":315,"author":{"gitId":"-"},"content":" }"},{"lineNumber":316,"author":{"gitId":"-"},"content":""},{"lineNumber":317,"author":{"gitId":"-"},"content":" fetchEventsForRepo(): Observable\u003cany[]\u003e {"},{"lineNumber":318,"author":{"gitId":"-"},"content":" return from(octokit.issues.listEventsForRepo({ owner: ORG_NAME, repo: REPO, headers: GithubService.IF_NONE_MATCH_EMPTY })).pipe("},{"lineNumber":319,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":320,"author":{"gitId":"-"},"content":" return response[\u0027data\u0027];"},{"lineNumber":321,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":322,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch issue events for repository\u0027))"},{"lineNumber":323,"author":{"gitId":"-"},"content":" );"},{"lineNumber":324,"author":{"gitId":"-"},"content":" }"},{"lineNumber":325,"author":{"gitId":"-"},"content":""},{"lineNumber":326,"author":{"gitId":"-"},"content":" fetchEventsForRepoCall(pageNumber: number): Observable\u003cGithubResponse\u003cany[]\u003e\u003e {"},{"lineNumber":327,"author":{"gitId":"-"},"content":" return \u003cObservable\u003cGithubResponse\u003cany[]\u003e\u003e\u003efrom("},{"lineNumber":328,"author":{"gitId":"-"},"content":" octokit.activity.listRepoEvents({"},{"lineNumber":329,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":330,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":331,"author":{"gitId":"-"},"content":" page: pageNumber"},{"lineNumber":332,"author":{"gitId":"-"},"content":" })"},{"lineNumber":333,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ).pipe(catchError((err) \u003d\u003e throwError(\u0027Failed to fetch activity events for repository\u0027)));"},{"lineNumber":334,"author":{"gitId":"-"},"content":" }"},{"lineNumber":335,"author":{"gitId":"-"},"content":""},{"lineNumber":336,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":337,"author":{"gitId":"-"},"content":" * Fetches all events of current repository for Activity Dashboard."},{"lineNumber":338,"author":{"gitId":"-"},"content":" * Adapted from getIssueApiCalls()."},{"lineNumber":339,"author":{"gitId":"-"},"content":" *"},{"lineNumber":340,"author":{"gitId":"-"},"content":" * @returns GithubEvents observable"},{"lineNumber":341,"author":{"gitId":"-"},"content":" */"},{"lineNumber":342,"author":{"gitId":"-"},"content":" fetchAllEventsForRepo(): Observable\u003cGithubEvent[]\u003e {"},{"lineNumber":343,"author":{"gitId":"-"},"content":" let responseInFirstPage: GithubResponse\u003cGithubEvent[]\u003e;"},{"lineNumber":344,"author":{"gitId":"-"},"content":" return this.fetchEventsForRepoCall(1).pipe("},{"lineNumber":345,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubEvent[]\u003e) \u003d\u003e {"},{"lineNumber":346,"author":{"gitId":"-"},"content":" responseInFirstPage \u003d response;"},{"lineNumber":347,"author":{"gitId":"-"},"content":" return getNumberOfPages(response);"},{"lineNumber":348,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":349,"author":{"gitId":"-"},"content":" flatMap((numOfPages: number) \u003d\u003e {"},{"lineNumber":350,"author":{"gitId":"-"},"content":" const apiCalls: Observable\u003cGithubResponse\u003cGithubEvent[]\u003e\u003e[] \u003d [];"},{"lineNumber":351,"author":{"gitId":"-"},"content":" for (let i \u003d 1; i \u003c\u003d numOfPages; i++) {"},{"lineNumber":352,"author":{"gitId":"-"},"content":" apiCalls.push(this.fetchEventsForRepoCall(i));"},{"lineNumber":353,"author":{"gitId":"-"},"content":" }"},{"lineNumber":354,"author":{"gitId":"-"},"content":" return apiCalls.length \u003d\u003d\u003d 0 ? of([]) : forkJoin(apiCalls);"},{"lineNumber":355,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":356,"author":{"gitId":"-"},"content":" map((responseArray) \u003d\u003e responseArray.map((x) \u003d\u003e x[\u0027data\u0027]))"},{"lineNumber":357,"author":{"gitId":"-"},"content":" );"},{"lineNumber":358,"author":{"gitId":"-"},"content":" }"},{"lineNumber":359,"author":{"gitId":"-"},"content":""},{"lineNumber":360,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":361,"author":{"gitId":"-"},"content":" * Not in use. Fetches data csv file from Organization repository."},{"lineNumber":362,"author":{"gitId":"-"},"content":" */"},{"lineNumber":363,"author":{"gitId":"-"},"content":" fetchDataFile(): Observable\u003c{}\u003e {"},{"lineNumber":364,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":365,"author":{"gitId":"-"},"content":" octokit.repos.getContents({ owner: MOD_ORG, repo: DATA_REPO, path: \u0027data.csv\u0027, headers: GithubService.IF_NONE_MATCH_EMPTY })"},{"lineNumber":366,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":367,"author":{"gitId":"-"},"content":" map((rawData) \u003d\u003e {"},{"lineNumber":368,"author":{"gitId":"-"},"content":" return { data: atob(rawData[\u0027data\u0027][\u0027content\u0027]) };"},{"lineNumber":369,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":370,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch data file.\u0027))"},{"lineNumber":371,"author":{"gitId":"-"},"content":" );"},{"lineNumber":372,"author":{"gitId":"-"},"content":" }"},{"lineNumber":373,"author":{"gitId":"-"},"content":""},{"lineNumber":374,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":375,"author":{"gitId":"-"},"content":" * Gets information of latest release of WATcher."},{"lineNumber":376,"author":{"gitId":"-"},"content":" * @returns GithubRelease observable"},{"lineNumber":377,"author":{"gitId":"-"},"content":" */"},{"lineNumber":378,"author":{"gitId":"-"},"content":" fetchLatestRelease(): Observable\u003cGithubRelease\u003e {"},{"lineNumber":379,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":380,"author":{"gitId":"-"},"content":" octokit.repos.getLatestRelease({ owner: WATCHER_ORG, repo: WATCHER_REPO, headers: GithubService.IF_NONE_MATCH_EMPTY })"},{"lineNumber":381,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":382,"author":{"gitId":"-"},"content":" map((res) \u003d\u003e res[\u0027data\u0027]),"},{"lineNumber":383,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch latest release.\u0027))"},{"lineNumber":384,"author":{"gitId":"-"},"content":" );"},{"lineNumber":385,"author":{"gitId":"-"},"content":" }"},{"lineNumber":386,"author":{"gitId":"-"},"content":""},{"lineNumber":387,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":388,"author":{"gitId":"-"},"content":" * Fetches the data file that is regulates session information."},{"lineNumber":389,"author":{"gitId":"-"},"content":" * @return Observable\u003cSessionData\u003e representing session information."},{"lineNumber":390,"author":{"gitId":"-"},"content":" */"},{"lineNumber":391,"author":{"gitId":"-"},"content":" fetchSettingsFile(): Observable\u003cSessionData\u003e {"},{"lineNumber":392,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":393,"author":{"gitId":"-"},"content":" octokit.repos.getContents({ owner: MOD_ORG, repo: DATA_REPO, path: \u0027settings.json\u0027, headers: GithubService.IF_NONE_MATCH_EMPTY })"},{"lineNumber":394,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":395,"author":{"gitId":"-"},"content":" map((rawData) \u003d\u003e JSON.parse(atob(rawData[\u0027data\u0027][\u0027content\u0027]))),"},{"lineNumber":396,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch settings file.\u0027))"},{"lineNumber":397,"author":{"gitId":"-"},"content":" );"},{"lineNumber":398,"author":{"gitId":"-"},"content":" }"},{"lineNumber":399,"author":{"gitId":"-"},"content":""},{"lineNumber":400,"author":{"gitId":"-"},"content":" fetchAuthenticatedUser(): Observable\u003cGithubUser\u003e {"},{"lineNumber":401,"author":{"gitId":"-"},"content":" return from(octokit.users.getAuthenticated()).pipe("},{"lineNumber":402,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":403,"author":{"gitId":"-"},"content":" return response[\u0027data\u0027];"},{"lineNumber":404,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":405,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch authenticated user.\u0027))"},{"lineNumber":406,"author":{"gitId":"-"},"content":" );"},{"lineNumber":407,"author":{"gitId":"-"},"content":" }"},{"lineNumber":408,"author":{"gitId":"-"},"content":""},{"lineNumber":409,"author":{"gitId":"-"},"content":" getRepoURL(): string {"},{"lineNumber":410,"author":{"gitId":"-"},"content":" return ORG_NAME.concat(\u0027/\u0027).concat(REPO);"},{"lineNumber":411,"author":{"gitId":"-"},"content":" }"},{"lineNumber":412,"author":{"gitId":"-"},"content":""},{"lineNumber":413,"author":{"gitId":"-"},"content":" viewIssueInBrowser(id: number, event: Event) {"},{"lineNumber":414,"author":{"gitId":"-"},"content":" if (id) {"},{"lineNumber":415,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.open(\u0027https://github.com/\u0027.concat(this.getRepoURL()).concat(\u0027/issues/\u0027).concat(String(id)));"},{"lineNumber":416,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":417,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(new Error(UNABLE_TO_OPEN_IN_BROWSER));"},{"lineNumber":418,"author":{"gitId":"-"},"content":" }"},{"lineNumber":419,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":420,"author":{"gitId":"-"},"content":" }"},{"lineNumber":421,"author":{"gitId":"-"},"content":""},{"lineNumber":422,"author":{"gitId":"-"},"content":" reset(): void {"},{"lineNumber":423,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`GithubService: Resetting issues cache`);"},{"lineNumber":424,"author":{"gitId":"-"},"content":" this.issuesCacheManager.clear();"},{"lineNumber":425,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.clear();"},{"lineNumber":426,"author":{"gitId":"-"},"content":" this.issueQueryRefs.clear();"},{"lineNumber":427,"author":{"gitId":"-"},"content":" }"},{"lineNumber":428,"author":{"gitId":"-"},"content":""},{"lineNumber":429,"author":{"gitId":"-"},"content":" getProfilesData(): Promise\u003cResponse\u003e {"},{"lineNumber":430,"author":{"gitId":"-"},"content":" return fetch(AppConfig.clientDataUrl);"},{"lineNumber":431,"author":{"gitId":"-"},"content":" }"},{"lineNumber":432,"author":{"gitId":"-"},"content":""},{"lineNumber":433,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":434,"author":{"gitId":"-"},"content":" * Performs an API call to fetch a page of filtered issues with a given pageNumber."},{"lineNumber":435,"author":{"gitId":"-"},"content":" *"},{"lineNumber":436,"author":{"gitId":"-"},"content":" * The request is sent with the ETag of the latest cached HTTP response."},{"lineNumber":437,"author":{"gitId":"-"},"content":" * If page requested has the same ETag, or the request results in an error,"},{"lineNumber":438,"author":{"gitId":"-"},"content":" * then the cached page is returned instead."},{"lineNumber":439,"author":{"gitId":"-"},"content":" *"},{"lineNumber":440,"author":{"gitId":"-"},"content":" * @param filter - The issue filter"},{"lineNumber":441,"author":{"gitId":"-"},"content":" * @param pageNumber - The page to be fetched"},{"lineNumber":442,"author":{"gitId":"-"},"content":" * @returns An observable representing the response containing a single page of filtered issues"},{"lineNumber":443,"author":{"gitId":"-"},"content":" */"},{"lineNumber":444,"author":{"gitId":"-"},"content":" private getIssuesAPICall(filter: RestGithubIssueFilter, pageNumber: number): Observable\u003cGithubResponse\u003cGithubIssue[]\u003e\u003e {"},{"lineNumber":445,"author":{"gitId":"-"},"content":" const apiCall: Promise\u003cGithubResponse\u003cGithubIssue[]\u003e\u003e \u003d octokit.issues.listForRepo({"},{"lineNumber":446,"author":{"gitId":"-"},"content":" ...filter,"},{"lineNumber":447,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":448,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":449,"author":{"gitId":"-"},"content":" sort: \u0027created\u0027,"},{"lineNumber":450,"author":{"gitId":"-"},"content":" direction: \u0027desc\u0027,"},{"lineNumber":451,"author":{"gitId":"-"},"content":" per_page: 100,"},{"lineNumber":452,"author":{"gitId":"-"},"content":" page: pageNumber,"},{"lineNumber":453,"author":{"gitId":"-"},"content":" headers: { \u0027If-None-Match\u0027: this.issuesCacheManager.getEtagFor(pageNumber) },"},{"lineNumber":454,"author":{"gitId":"-"},"content":" state: \u0027all\u0027"},{"lineNumber":455,"author":{"gitId":"-"},"content":" });"},{"lineNumber":456,"author":{"gitId":"Eclipse-Dominator"},"content":" const apiCall$ \u003d from("},{"lineNumber":457,"author":{"gitId":"Eclipse-Dominator"},"content":" apiCall.catch((err) \u003d\u003e {"},{"lineNumber":458,"author":{"gitId":"cheehongw"},"content":" return this.issuesCacheManager.get(pageNumber);"},{"lineNumber":459,"author":{"gitId":"Eclipse-Dominator"},"content":" })"},{"lineNumber":460,"author":{"gitId":"Eclipse-Dominator"},"content":" );"},{"lineNumber":461,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":462,"author":{"gitId":"-"},"content":" return apiCall$.pipe("},{"lineNumber":463,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":464,"author":{"gitId":"cheehongw"},"content":" // catchError does not appear to catch an error on an observable created from a promise..."},{"lineNumber":465,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`GithubService: Error caught in getIssuesAPICall`);"},{"lineNumber":466,"author":{"gitId":"-"},"content":" return of(this.issuesCacheManager.get(pageNumber));"},{"lineNumber":467,"author":{"gitId":"-"},"content":" })"},{"lineNumber":468,"author":{"gitId":"-"},"content":" );"},{"lineNumber":469,"author":{"gitId":"-"},"content":" }"},{"lineNumber":470,"author":{"gitId":"-"},"content":""},{"lineNumber":471,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":472,"author":{"gitId":"-"},"content":" * Fetches a list of items using a GraphQL query that queries for paginated data."},{"lineNumber":473,"author":{"gitId":"-"},"content":" *"},{"lineNumber":474,"author":{"gitId":"-"},"content":" * @param query - The GraphQL query that queries for paginated data."},{"lineNumber":475,"author":{"gitId":"-"},"content":" * @param variables - Additional variables for the GraphQL query."},{"lineNumber":476,"author":{"gitId":"-"},"content":" * @callback pluckEdges A function that returns a list of edges in a ApolloQueryResult."},{"lineNumber":477,"author":{"gitId":"-"},"content":" * @callback Model Constructor for the item model."},{"lineNumber":478,"author":{"gitId":"-"},"content":" * @returns A list of items from the query."},{"lineNumber":479,"author":{"gitId":"-"},"content":" */"},{"lineNumber":480,"author":{"gitId":"-"},"content":" private fetchGraphqlList\u003cT, M\u003e("},{"lineNumber":481,"author":{"gitId":"-"},"content":" query: DocumentNode,"},{"lineNumber":482,"author":{"gitId":"-"},"content":" variables: {},"},{"lineNumber":483,"author":{"gitId":"-"},"content":" pluckEdges: (results: ApolloQueryResult\u003cT\u003e) \u003d\u003e Array\u003cany\u003e,"},{"lineNumber":484,"author":{"gitId":"-"},"content":" Model: new (data) \u003d\u003e M"},{"lineNumber":485,"author":{"gitId":"-"},"content":" ): Observable\u003cArray\u003cM\u003e\u003e {"},{"lineNumber":486,"author":{"gitId":"-"},"content":" return this.withPagination\u003cT\u003e(pluckEdges, query, variables, false).pipe("},{"lineNumber":487,"author":{"gitId":"-"},"content":" map((results: ApolloQueryResult\u003cT\u003e[]) \u003d\u003e {"},{"lineNumber":488,"author":{"gitId":"-"},"content":" const issues \u003d results.reduce((accumulated, current) \u003d\u003e accumulated.concat(pluckEdges(current)), []);"},{"lineNumber":489,"author":{"gitId":"-"},"content":" return issues.map((issue) \u003d\u003e new Model(issue.node));"},{"lineNumber":490,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":491,"author":{"gitId":"-"},"content":" throwIfEmpty(() \u003d\u003e {"},{"lineNumber":492,"author":{"gitId":"-"},"content":" return new HttpErrorResponse({ status: 304 });"},{"lineNumber":493,"author":{"gitId":"-"},"content":" })"},{"lineNumber":494,"author":{"gitId":"-"},"content":" );"},{"lineNumber":495,"author":{"gitId":"-"},"content":" }"},{"lineNumber":496,"author":{"gitId":"-"},"content":""},{"lineNumber":497,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":498,"author":{"gitId":"-"},"content":" * Returns an observable that will continually emit the currently accumulated results, until a page that has less"},{"lineNumber":499,"author":{"gitId":"-"},"content":" * than 100 items is found, after which it performs a final emit with the full results array, and completes."},{"lineNumber":500,"author":{"gitId":"-"},"content":" *"},{"lineNumber":501,"author":{"gitId":"-"},"content":" * If `shouldAccumulate` is false, the observable will emit only the latest result, it will still complete on the"},{"lineNumber":502,"author":{"gitId":"-"},"content":" * same condition."},{"lineNumber":503,"author":{"gitId":"-"},"content":" *"},{"lineNumber":504,"author":{"gitId":"-"},"content":" * @callback pluckEdges - A function that returns a list of edges in a ApolloQueryResult."},{"lineNumber":505,"author":{"gitId":"-"},"content":" * @params query - The query to be performed."},{"lineNumber":506,"author":{"gitId":"-"},"content":" * @params variables - The variables for the query."},{"lineNumber":507,"author":{"gitId":"-"},"content":" * @params shouldAccumulate - Whether the observable should accumulate the results."},{"lineNumber":508,"author":{"gitId":"-"},"content":" * @returns an observable"},{"lineNumber":509,"author":{"gitId":"-"},"content":" */"},{"lineNumber":510,"author":{"gitId":"-"},"content":" private withPagination\u003cT\u003e("},{"lineNumber":511,"author":{"gitId":"-"},"content":" pluckEdges: (results: ApolloQueryResult\u003cT\u003e) \u003d\u003e Array\u003cany\u003e,"},{"lineNumber":512,"author":{"gitId":"-"},"content":" query: DocumentNode,"},{"lineNumber":513,"author":{"gitId":"-"},"content":" variables: { [key: string]: any } \u003d {},"},{"lineNumber":514,"author":{"gitId":"-"},"content":" shouldAccumulate: boolean \u003d true"},{"lineNumber":515,"author":{"gitId":"-"},"content":" ): Observable\u003cApolloQueryResult\u003cT\u003e[]\u003e {"},{"lineNumber":516,"author":{"gitId":"-"},"content":" const maxResultsCount \u003d 100;"},{"lineNumber":517,"author":{"gitId":"-"},"content":" const apollo \u003d this.apollo;"},{"lineNumber":518,"author":{"gitId":"-"},"content":""},{"lineNumber":519,"author":{"gitId":"-"},"content":" let accumulatedResults: ApolloQueryResult\u003cT\u003e[] \u003d [];"},{"lineNumber":520,"author":{"gitId":"-"},"content":" const behaviorSubject: BehaviorSubject\u003cApolloQueryResult\u003cT\u003e[]\u003e \u003d new BehaviorSubject(accumulatedResults);"},{"lineNumber":521,"author":{"gitId":"-"},"content":""},{"lineNumber":522,"author":{"gitId":"-"},"content":" async function queryWith(cursor: string): Promise\u003cvoid\u003e {"},{"lineNumber":523,"author":{"gitId":"-"},"content":" const graphqlQuery \u003d apollo.watchQuery\u003cT\u003e({ query, variables: { ...variables, cursor } });"},{"lineNumber":524,"author":{"gitId":"-"},"content":""},{"lineNumber":525,"author":{"gitId":"-"},"content":" await graphqlQuery.refetch().then(async (results: ApolloQueryResult\u003cT\u003e) \u003d\u003e {"},{"lineNumber":526,"author":{"gitId":"-"},"content":" const intermediate \u003d Array.isArray(results) ? results : [results];"},{"lineNumber":527,"author":{"gitId":"-"},"content":" const edges \u003d pluckEdges(results);"},{"lineNumber":528,"author":{"gitId":"-"},"content":" const nextCursor \u003d edges.length \u003d\u003d\u003d 0 ? null : edges[edges.length - 1].cursor;"},{"lineNumber":529,"author":{"gitId":"-"},"content":""},{"lineNumber":530,"author":{"gitId":"-"},"content":" if (shouldAccumulate) {"},{"lineNumber":531,"author":{"gitId":"-"},"content":" accumulatedResults \u003d accumulatedResults.concat(intermediate);"},{"lineNumber":532,"author":{"gitId":"-"},"content":" behaviorSubject.next(accumulatedResults);"},{"lineNumber":533,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":534,"author":{"gitId":"-"},"content":" behaviorSubject.next(intermediate);"},{"lineNumber":535,"author":{"gitId":"-"},"content":" }"},{"lineNumber":536,"author":{"gitId":"-"},"content":" if (edges.length \u003c maxResultsCount || !nextCursor) {"},{"lineNumber":537,"author":{"gitId":"-"},"content":" // No more queries to perform."},{"lineNumber":538,"author":{"gitId":"-"},"content":" behaviorSubject.complete();"},{"lineNumber":539,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":540,"author":{"gitId":"-"},"content":" }"},{"lineNumber":541,"author":{"gitId":"-"},"content":""},{"lineNumber":542,"author":{"gitId":"-"},"content":" // Use a chain of await to ensure that all recursive queries are completed before `complete` is called."},{"lineNumber":543,"author":{"gitId":"-"},"content":" await queryWith(nextCursor);"},{"lineNumber":544,"author":{"gitId":"-"},"content":" });"},{"lineNumber":545,"author":{"gitId":"-"},"content":" }"},{"lineNumber":546,"author":{"gitId":"-"},"content":""},{"lineNumber":547,"author":{"gitId":"-"},"content":" queryWith(null);"},{"lineNumber":548,"author":{"gitId":"-"},"content":""},{"lineNumber":549,"author":{"gitId":"-"},"content":" return behaviorSubject.asObservable();"},{"lineNumber":550,"author":{"gitId":"-"},"content":" }"},{"lineNumber":551,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":6,"vigneshsankariyer1234567890":6,"-":531,"cheehongw":8}},{"path":"src/app/core/services/issue.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { BehaviorSubject, EMPTY, Observable, of, Subscription, timer } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { catchError, exhaustMap, finalize, map } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import RestGithubIssueFilter from \u0027../models/github/github-issue-filter.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027../models/github/github-issue.model\u0027;"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Issue, Issues, IssuesFilter } from \u0027../models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../models/phase.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027./phase.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./user.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":13,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Responsible for creating and updating issues, and periodically fetching issues"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * using GitHub."},{"lineNumber":19,"author":{"gitId":"-"},"content":" */"},{"lineNumber":20,"author":{"gitId":"-"},"content":"export class IssueService {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" static readonly POLL_INTERVAL \u003d 5000; // 5 seconds"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" issues: Issues;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" issues$: BehaviorSubject\u003cIssue[]\u003e;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" private sessionId: string;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private issueTeamFilter \u003d \u0027All Teams\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private issuesPollSubscription: Subscription;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /** Whether the IssueService is downloading the data from Github*/"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public isLoading \u003d new BehaviorSubject\u003cboolean\u003e(false);"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor(private githubService: GithubService, private userService: UserService, private phaseService: PhaseService) {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.issues$ \u003d new BehaviorSubject(new Array\u003cIssue\u003e());"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" startPollIssues() {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (this.issuesPollSubscription \u003d\u003d\u003d undefined) {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (this.issues$.getValue().length \u003d\u003d\u003d 0) {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.isLoading.next(true);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.issuesPollSubscription \u003d timer(0, IssueService.POLL_INTERVAL)"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":44,"author":{"gitId":"-"},"content":" exhaustMap(() \u003d\u003e {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return this.reloadAllIssues().pipe("},{"lineNumber":46,"author":{"gitId":"-"},"content":" catchError(() \u003d\u003e {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return EMPTY;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":49,"author":{"gitId":"-"},"content":" finalize(() \u003d\u003e this.isLoading.next(false))"},{"lineNumber":50,"author":{"gitId":"-"},"content":" );"},{"lineNumber":51,"author":{"gitId":"-"},"content":" })"},{"lineNumber":52,"author":{"gitId":"-"},"content":" )"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .subscribe();"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" stopPollIssues() {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (this.issuesPollSubscription) {"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.issuesPollSubscription.unsubscribe();"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.issuesPollSubscription \u003d undefined;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }"},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"-"},"content":" reloadAllIssues() {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this.initializeData();"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" getIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (this.issues \u003d\u003d\u003d undefined) {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return this.getLatestIssue(id);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return of(this.issues[id]);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" getLatestIssue(id: number): Observable\u003cIssue\u003e {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this.githubService.fetchIssueGraphql(id).pipe("},{"lineNumber":78,"author":{"gitId":"-"},"content":" map((response: GithubIssue) \u003d\u003e {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.createAndSaveIssueModel(response);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return this.issues[id];"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":82,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return of(this.issues[id]);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" })"},{"lineNumber":85,"author":{"gitId":"-"},"content":" );"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":""},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * This function will update the issue\u0027s state of the application. This function needs to be called whenever a issue is deleted."},{"lineNumber":90,"author":{"gitId":"-"},"content":" */"},{"lineNumber":91,"author":{"gitId":"-"},"content":" deleteFromLocalStore(issueToDelete: Issue) {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" const { [issueToDelete.id]: issueToRemove, ...withoutIssueToRemove } \u003d this.issues;"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.issues \u003d withoutIssueToRemove;"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.issues$.next(Object.values(this.issues));"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * This function will update the issue\u0027s state of the application. This function needs to be called whenever a issue is added/updated."},{"lineNumber":99,"author":{"gitId":"-"},"content":" */"},{"lineNumber":100,"author":{"gitId":"-"},"content":" updateLocalStore(issueToUpdate: Issue) {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.issues \u003d {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" ...this.issues,"},{"lineNumber":103,"author":{"gitId":"-"},"content":" [issueToUpdate.id]: issueToUpdate"},{"lineNumber":104,"author":{"gitId":"-"},"content":" };"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.issues$.next(Object.values(this.issues));"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" reset(resetSessionId: boolean) {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (resetSessionId) {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.sessionId \u003d undefined;"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }"},{"lineNumber":112,"author":{"gitId":"-"},"content":""},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.issues \u003d undefined;"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.issues$.next(new Array\u003cIssue\u003e());"},{"lineNumber":115,"author":{"gitId":"-"},"content":""},{"lineNumber":116,"author":{"gitId":"-"},"content":" this.stopPollIssues();"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }"},{"lineNumber":118,"author":{"gitId":"-"},"content":""},{"lineNumber":119,"author":{"gitId":"-"},"content":" private initializeData(): Observable\u003cIssue[]\u003e {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" let issuesAPICallsByFilter: Observable\u003cArray\u003cGithubIssue\u003e\u003e;"},{"lineNumber":121,"author":{"gitId":"-"},"content":""},{"lineNumber":122,"author":{"gitId":"-"},"content":" switch (IssuesFilter[this.phaseService.currentPhase][this.userService.currentUser.role]) {"},{"lineNumber":123,"author":{"gitId":"-"},"content":" case \u0027FILTER_BY_CREATOR\u0027:"},{"lineNumber":124,"author":{"gitId":"-"},"content":" issuesAPICallsByFilter \u003d this.githubService.fetchIssuesGraphql("},{"lineNumber":125,"author":{"gitId":"-"},"content":" new RestGithubIssueFilter({ creator: this.userService.currentUser.loginId })"},{"lineNumber":126,"author":{"gitId":"-"},"content":" );"},{"lineNumber":127,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":128,"author":{"gitId":"-"},"content":" case \u0027NO_FILTER\u0027:"},{"lineNumber":129,"author":{"gitId":"-"},"content":" issuesAPICallsByFilter \u003d this.githubService.fetchIssuesGraphql(new RestGithubIssueFilter({}));"},{"lineNumber":130,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":131,"author":{"gitId":"-"},"content":" case \u0027NO_ACCESS\u0027:"},{"lineNumber":132,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return of([]);"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }"},{"lineNumber":135,"author":{"gitId":"-"},"content":""},{"lineNumber":136,"author":{"gitId":"-"},"content":" const fetchedIssueIds: number[] \u003d [];"},{"lineNumber":137,"author":{"gitId":"-"},"content":""},{"lineNumber":138,"author":{"gitId":"-"},"content":" return issuesAPICallsByFilter.pipe("},{"lineNumber":139,"author":{"gitId":"-"},"content":" map((issuesByFilter: []) \u003d\u003e {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // Take each issue and put it in next in issues$"},{"lineNumber":141,"author":{"gitId":"-"},"content":" for (const issue of issuesByFilter) {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" fetchedIssueIds.push(this.createIssueModel(issue).id);"},{"lineNumber":143,"author":{"gitId":"-"},"content":" this.createAndSaveIssueModel(issue);"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }"},{"lineNumber":145,"author":{"gitId":"-"},"content":""},{"lineNumber":146,"author":{"gitId":"-"},"content":" const outdatedIssueIds: number[] \u003d this.getOutdatedIssueIds(fetchedIssueIds);"},{"lineNumber":147,"author":{"gitId":"-"},"content":" this.deleteIssuesFromLocalStore(outdatedIssueIds);"},{"lineNumber":148,"author":{"gitId":"-"},"content":""},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (this.issues \u003d\u003d\u003d undefined) {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return [];"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":" return Object.values(this.issues);"},{"lineNumber":153,"author":{"gitId":"-"},"content":" })"},{"lineNumber":154,"author":{"gitId":"-"},"content":" );"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }"},{"lineNumber":156,"author":{"gitId":"-"},"content":""},{"lineNumber":157,"author":{"gitId":"-"},"content":" private createAndSaveIssueModel(githubIssue: GithubIssue): boolean {"},{"lineNumber":158,"author":{"gitId":"-"},"content":" const issue \u003d this.createIssueModel(githubIssue);"},{"lineNumber":159,"author":{"gitId":"-"},"content":" this.updateLocalStore(issue);"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }"},{"lineNumber":162,"author":{"gitId":"-"},"content":""},{"lineNumber":163,"author":{"gitId":"-"},"content":" private deleteIssuesFromLocalStore(ids: number[]): void {"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ids.forEach((id: number) \u003d\u003e {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" this.getIssue(id).subscribe((issue) \u003d\u003e this.deleteFromLocalStore(issue));"},{"lineNumber":166,"author":{"gitId":"-"},"content":" });"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }"},{"lineNumber":168,"author":{"gitId":"-"},"content":""},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * Returns an array of outdated issue ids by comparing the ids of the recently"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * fetched issues with the current issue ids in the local store"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */"},{"lineNumber":173,"author":{"gitId":"-"},"content":" private getOutdatedIssueIds(fetchedIssueIds: number[]): number[] {"},{"lineNumber":174,"author":{"gitId":"-"},"content":" /*"},{"lineNumber":175,"author":{"gitId":"-"},"content":" Ignore for first fetch or ignore if there is no fetch result"},{"lineNumber":176,"author":{"gitId":"-"},"content":""},{"lineNumber":177,"author":{"gitId":"-"},"content":" We also have to ignore for no fetch result as the cache might return a"},{"lineNumber":178,"author":{"gitId":"-"},"content":" 304 reponse with no differences in issues, resulting in the fetchIssueIds"},{"lineNumber":179,"author":{"gitId":"-"},"content":" to be empty"},{"lineNumber":180,"author":{"gitId":"-"},"content":" */"},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (this.issues \u003d\u003d\u003d undefined || !fetchedIssueIds.length) {"},{"lineNumber":182,"author":{"gitId":"-"},"content":" return [];"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }"},{"lineNumber":184,"author":{"gitId":"-"},"content":""},{"lineNumber":185,"author":{"gitId":"-"},"content":" const fetchedIssueIdsSet \u003d new Set\u003cnumber\u003e(fetchedIssueIds);"},{"lineNumber":186,"author":{"gitId":"-"},"content":""},{"lineNumber":187,"author":{"gitId":"-"},"content":" const result \u003d Object.keys(this.issues)"},{"lineNumber":188,"author":{"gitId":"-"},"content":" .map((x) \u003d\u003e +x)"},{"lineNumber":189,"author":{"gitId":"-"},"content":" .filter((issueId) \u003d\u003e !fetchedIssueIdsSet.has(issueId));"},{"lineNumber":190,"author":{"gitId":"-"},"content":""},{"lineNumber":191,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }"},{"lineNumber":193,"author":{"gitId":"-"},"content":""},{"lineNumber":194,"author":{"gitId":"-"},"content":" private createIssueModel(githubIssue: GithubIssue): Issue {"},{"lineNumber":195,"author":{"gitId":"-"},"content":" switch (this.phaseService.currentPhase) {"},{"lineNumber":196,"author":{"gitId":"-"},"content":" case Phase.issuesViewer:"},{"lineNumber":197,"author":{"gitId":"-"},"content":" return Issue.createPhaseBugReportingIssue(githubIssue);"},{"lineNumber":198,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }"},{"lineNumber":202,"author":{"gitId":"-"},"content":""},{"lineNumber":203,"author":{"gitId":"-"},"content":" setIssueTeamFilter(filterValue: string) {"},{"lineNumber":204,"author":{"gitId":"-"},"content":" if (filterValue) {"},{"lineNumber":205,"author":{"gitId":"-"},"content":" this.issueTeamFilter \u003d filterValue;"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }"},{"lineNumber":208,"author":{"gitId":"-"},"content":""},{"lineNumber":209,"author":{"gitId":"-"},"content":" setSessionId(sessionId: string) {"},{"lineNumber":210,"author":{"gitId":"-"},"content":" this.sessionId \u003d sessionId;"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }"},{"lineNumber":212,"author":{"gitId":"-"},"content":""},{"lineNumber":213,"author":{"gitId":"-"},"content":" getIssueTeamFilter(): string {"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return this.issueTeamFilter;"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }"},{"lineNumber":216,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":1,"vigneshsankariyer1234567890":1,"-":214}},{"path":"src/app/core/services/label.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { BehaviorSubject, EMPTY, Observable, of, Subscription, timer } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { catchError, exhaustMap, finalize, map } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Label, SimpleLabel } from \u0027../models/label.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"/* The threshold to decide if color is dark or light."},{"lineNumber":8,"author":{"gitId":"-"},"content":"A higher threshold value will result in more colors determined to be \"dark\"."},{"lineNumber":9,"author":{"gitId":"-"},"content":"W3C recommendation is 0.179, but 0.184 is chosen so that some colors (like bright red)"},{"lineNumber":10,"author":{"gitId":"-"},"content":"are considered dark (Github too consider them dark) */"},{"lineNumber":11,"author":{"gitId":"-"},"content":"const COLOR_DARKNESS_THRESHOLD \u003d 0.184;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"const COLOR_BLACK \u003d \u0027000000\u0027; // Dark color for text with light background"},{"lineNumber":14,"author":{"gitId":"-"},"content":"const COLOR_WHITE \u003d \u0027ffffff\u0027; // Light color for text with dark background"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":17,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":18,"author":{"gitId":"-"},"content":"})"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Responsible for retrieval and parsing of label data"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * from the GitHub repository for the WATcher application."},{"lineNumber":23,"author":{"gitId":"-"},"content":" */"},{"lineNumber":24,"author":{"gitId":"-"},"content":"export class LabelService {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" static readonly POLL_INTERVAL \u003d 5000; // 5 seconds"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" labels: Label[];"},{"lineNumber":28,"author":{"gitId":"-"},"content":" simpleLabels: SimpleLabel[];"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" private labelsPollSubscription: Subscription;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private labelsSubject \u003d new BehaviorSubject\u003cSimpleLabel[]\u003e([]);"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService) {}"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" startPollLabels() {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (this.labelsPollSubscription) {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.labelsPollSubscription \u003d timer(0, LabelService.POLL_INTERVAL)"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":41,"author":{"gitId":"-"},"content":" exhaustMap(() \u003d\u003e {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return this.fetchLabels().pipe("},{"lineNumber":43,"author":{"gitId":"-"},"content":" catchError(() \u003d\u003e {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return EMPTY;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" })"},{"lineNumber":46,"author":{"gitId":"-"},"content":" );"},{"lineNumber":47,"author":{"gitId":"-"},"content":" })"},{"lineNumber":48,"author":{"gitId":"-"},"content":" )"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .subscribe(() \u003d\u003e {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.labelsSubject.next(this.simpleLabels);"},{"lineNumber":51,"author":{"gitId":"-"},"content":" });"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" stopPollLabels() {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (this.labelsPollSubscription) {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.labelsPollSubscription.unsubscribe();"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.labelsPollSubscription \u003d undefined;"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" connect(): Observable\u003cSimpleLabel[]\u003e {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this.labelsSubject.asObservable();"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Fetch labels from Github."},{"lineNumber":67,"author":{"gitId":"-"},"content":" */"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public fetchLabels(): Observable\u003cany\u003e {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this.githubService.fetchAllLabels().pipe("},{"lineNumber":70,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.labels \u003d this.parseLabelData(response);"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.simpleLabels \u003d this.labels;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.labelsSubject.next(this.simpleLabels);"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return response;"},{"lineNumber":75,"author":{"gitId":"-"},"content":" })"},{"lineNumber":76,"author":{"gitId":"-"},"content":" );"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Parses label information and returns an array of Label objects."},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param labels - Label Information from API."},{"lineNumber":82,"author":{"gitId":"-"},"content":" */"},{"lineNumber":83,"author":{"gitId":"-"},"content":" parseLabelData(labels: Array\u003cany\u003e): Label[] {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" const labelData: Label[] \u003d [];"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" for (const label of labels) {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" labelData.push(new Label(label));"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return labelData;"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Returns true if the given color is considered \"dark\""},{"lineNumber":94,"author":{"gitId":"-"},"content":" * The color is considered \"dark\" if its luminance is less than COLOR_DARKNESS_THRESHOLD"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @param inputColor: the color"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */"},{"lineNumber":97,"author":{"gitId":"-"},"content":" isDarkColor(inputColor: string): boolean {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" const COLOR \u003d inputColor.charAt(0) \u003d\u003d\u003d \u0027#\u0027 ? inputColor.substring(1, 7) : inputColor;"},{"lineNumber":99,"author":{"gitId":"-"},"content":" const R \u003d parseInt(COLOR.substring(0, 2), 16);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" const G \u003d parseInt(COLOR.substring(2, 4), 16);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" const B \u003d parseInt(COLOR.substring(4, 6), 16);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" const RGB \u003d [R / 255, G / 255, B / 255];"},{"lineNumber":103,"author":{"gitId":"-"},"content":" const LINEAR_RGB \u003d RGB.map((col) \u003d\u003e {"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (col \u003c\u003d 0.03928) {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return col / 12.92;"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return Math.pow((col + 0.055) / 1.055, 2.4);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" });"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // Calculate the luminance of the color"},{"lineNumber":110,"author":{"gitId":"-"},"content":" const LUMINANCE \u003d 0.2126 * LINEAR_RGB[0] + 0.7152 * LINEAR_RGB[1] + 0.0722 * LINEAR_RGB[2];"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // The color is \"dark\" if the luminance is lower than the threshold"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return LUMINANCE \u003c COLOR_DARKNESS_THRESHOLD;"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":116,"author":{"gitId":"Eclipse-Dominator"},"content":" * Returns a css style for the background and text color of the label"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * @param color: the color of the label"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @return the style with background-color in rgb"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * @throws exception if input is an invalid color code"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */"},{"lineNumber":121,"author":{"gitId":"Eclipse-Dominator"},"content":" setLabelStyle(color: string) {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" let textColor: string;"},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"-"},"content":" textColor \u003d this.isDarkColor(color) ? COLOR_WHITE : COLOR_BLACK;"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":" const styles \u003d {"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${color}`,"},{"lineNumber":128,"author":{"gitId":"Eclipse-Dominator"},"content":" color: `#${textColor}`"},{"lineNumber":129,"author":{"gitId":"-"},"content":" };"},{"lineNumber":130,"author":{"gitId":"-"},"content":""},{"lineNumber":131,"author":{"gitId":"-"},"content":" return styles;"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }"},{"lineNumber":133,"author":{"gitId":"-"},"content":""},{"lineNumber":134,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":135,"author":{"gitId":"-"},"content":" this.labels \u003d undefined;"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.simpleLabels \u003d undefined;"},{"lineNumber":137,"author":{"gitId":"-"},"content":" this.stopPollLabels();"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":3,"-":136}},{"path":"src/app/core/services/logging.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { downloadAsTextFile } from \u0027../../shared/lib/file-download\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":6,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":7,"author":{"gitId":"-"},"content":"})"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Responsible for logging events and errors while the application is"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * running to ease debugging for WATcher developers and maintainers."},{"lineNumber":12,"author":{"gitId":"-"},"content":" */"},{"lineNumber":13,"author":{"gitId":"-"},"content":"export class LoggingService {"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private logger: Console;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private isInSession \u003d false;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private readonly LOG_KEY \u003d \u0027WATcher-Log\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private readonly LOG_FILE_NAME \u003d \u0027WATcher-log.txt\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public readonly LOG_START_HEADER \u003d `\u003d\u003d\u003d\u003d\u003d\u003d New WATcher v${AppConfig.version} Session Log \u003d\u003d\u003d\u003d\u003d\u003d`;"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public readonly LOG_COUNT_LIMIT \u003d 4;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public readonly SESSION_LOG_SEPARATOR \u003d \u0027\\n\u0027.repeat(2); // More new-lines added for clarity."},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" constructor() {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" this.logger \u003d console;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" this.startSession();"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.isInSession \u003d false;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Configures loggging Session if Logging Service is not"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * in session."},{"lineNumber":34,"author":{"gitId":"-"},"content":" */"},{"lineNumber":35,"author":{"gitId":"-"},"content":" startSession() {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // Prevents the OAuth Pop-up window from being able to"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // start a session."},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (window.opener \u0026\u0026 window.opener !\u003d\u003d window) {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (!this.isInSession) {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.isInSession \u003d true;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.initializeLogCache();"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" private initializeLogCache() {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.setCachedLog(this.getTrimmedLogCache(this.getCachedLog(), this.LOG_COUNT_LIMIT));"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Trims the existing Log in the browser\u0027s cache to a select number"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * of Sessions if necessary."},{"lineNumber":54,"author":{"gitId":"-"},"content":" * @param sessionCount The number of Session Logs to preserve in the cache"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private getTrimmedLogCache(currentLog: string, sessionCount: number): string {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" const currentDateTime \u003d new Date().toLocaleString();"},{"lineNumber":58,"author":{"gitId":"-"},"content":" const logHeaderWithDateTime \u003d `${this.LOG_START_HEADER}\\n${currentDateTime}`;"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Check if Trimming is Necessary"},{"lineNumber":61,"author":{"gitId":"-"},"content":" const numberOfSessions: number \u003d"},{"lineNumber":62,"author":{"gitId":"-"},"content":" currentLog \u003d\u003d null"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ? 0"},{"lineNumber":64,"author":{"gitId":"-"},"content":" : currentLog.split(\u0027\\n\u0027).filter((currentLogLine: string) \u003d\u003e currentLogLine.includes(this.LOG_START_HEADER)).length;"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (numberOfSessions \u003d\u003d\u003d 0) {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return logHeaderWithDateTime;"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (numberOfSessions \u003c sessionCount) {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return `${currentLog}${this.SESSION_LOG_SEPARATOR}${logHeaderWithDateTime}`;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" const separatedSessionLogs: string[] \u003d currentLog"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .split(`${this.LOG_START_HEADER}`)"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .filter((line: string) \u003d\u003e !!line)"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .map((line: string) \u003d\u003e `${this.LOG_START_HEADER}\\n${line.trim()}`);"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" separatedSessionLogs.splice(0, separatedSessionLogs.length - sessionCount + 1);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" separatedSessionLogs.push(`${logHeaderWithDateTime}`);"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":" return separatedSessionLogs.join(this.SESSION_LOG_SEPARATOR);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" getCachedLog(): string {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return localStorage.getItem(this.LOG_KEY);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" private setCachedLog(updatedLog: string): void {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" localStorage.setItem(this.LOG_KEY, updatedLog);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" private updateLog(...updatedLog: any[]): void {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.setCachedLog(`${this.getCachedLog()}\\n${updatedLog.toString()}`);"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" exportLogFile() {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" const log: string \u003d this.getCachedLog();"},{"lineNumber":99,"author":{"gitId":"-"},"content":" downloadAsTextFile(this.LOG_FILE_NAME, log);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" info(...params: any[]) {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" this.updateLog(params);"},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.logger.info(params);"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }"},{"lineNumber":106,"author":{"gitId":"-"},"content":""},{"lineNumber":107,"author":{"gitId":"-"},"content":" error(...params: any[]) {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" this.updateLog(params);"},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.logger.error(params);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":" warn(...params: any[]) {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.updateLog(params);"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.logger.warn(params);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":" debug(...params: any[]) {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (AppConfig.production) {"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // Log file will not be updated to keep log messages short"},{"lineNumber":122,"author":{"gitId":"-"},"content":" this.logger.debug(params);"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":2,"-":122}},{"path":"src/app/core/services/milestone.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { map } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Milestone } from \u0027../models/milestone.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":8,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":9,"author":{"gitId":"-"},"content":"})"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Responsible for retrieval and parsing and syncing of milestone data"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * from the GitHub repository for the WATcher application."},{"lineNumber":14,"author":{"gitId":"-"},"content":" */"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class MilestoneService {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" milestones: Milestone[];"},{"lineNumber":17,"author":{"gitId":"-"},"content":" hasNoMilestones: boolean;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService) {}"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Fetch all milestones from github."},{"lineNumber":23,"author":{"gitId":"-"},"content":" */"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public fetchMilestones(): Observable\u003cany\u003e {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return this.githubService.fetchAllMilestones().pipe("},{"lineNumber":26,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.milestones \u003d this.parseMilestoneData(response);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.hasNoMilestones \u003d response.length \u003d\u003d\u003d 0;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return response;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" })"},{"lineNumber":31,"author":{"gitId":"-"},"content":" );"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses milestone information and returns an array of Milestone objects."},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param milestones - Milestone Information from API."},{"lineNumber":37,"author":{"gitId":"-"},"content":" */"},{"lineNumber":38,"author":{"gitId":"-"},"content":" parseMilestoneData(milestones: Array\u003cany\u003e): Milestone[] {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" const milestoneData: Milestone[] \u003d [];"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" for (const milestone of milestones) {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" milestoneData.push(new Milestone(milestone));"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"Echomo-Xinyu"},"content":" milestoneData.sort((a: Milestone, b: Milestone) \u003d\u003e a.title.localeCompare(b.title));"},{"lineNumber":45,"author":{"gitId":"Echomo-Xinyu"},"content":""},{"lineNumber":46,"author":{"gitId":"Echomo-Xinyu"},"content":" // add default milestone for untracked issues/PRs at the end"},{"lineNumber":47,"author":{"gitId":"Echomo-Xinyu"},"content":" milestoneData.push(Milestone.DefaultMilestone);"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return milestoneData;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":4,"-":46}},{"path":"src/app/core/services/phase.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { BehaviorSubject, Observable, Subject } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../models/phase.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Repo } from \u0027../models/repo.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { SessionData } from \u0027../models/session.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { RepoUrlCacheService } from \u0027./repo-url-cache.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"export const SESSION_AVALIABILITY_FIX_FAILED \u003d \u0027Session Availability Fix failed.\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The title of each phase that appears in the header bar."},{"lineNumber":14,"author":{"gitId":"-"},"content":" */"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export const PhaseDescription \u003d {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" [Phase.issuesViewer]: \u0027Issues Dashboard\u0027,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" [Phase.activityDashboard]: \u0027Activity Dashboard\u0027"},{"lineNumber":18,"author":{"gitId":"-"},"content":"};"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * All data of the session."},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Add accessible phases here."},{"lineNumber":23,"author":{"gitId":"-"},"content":" */"},{"lineNumber":24,"author":{"gitId":"-"},"content":"export const STARTING_SESSION_DATA: SessionData \u003d {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" sessionRepo: ["},{"lineNumber":26,"author":{"gitId":"-"},"content":" { phase: Phase.issuesViewer, repos: [] }"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // { phase: Phase.activityDashboard, repos: [] }"},{"lineNumber":28,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":29,"author":{"gitId":"-"},"content":"};"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":"export const STARTING_PHASE \u003d Phase.issuesViewer;"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":34,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":35,"author":{"gitId":"-"},"content":"})"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Responsible for managing the current selected feature of WATcher as well as the"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * current session data and repository details related to the session."},{"lineNumber":40,"author":{"gitId":"-"},"content":" *"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * A phase is terminology from CATcher, in WATcher it refers to a feature of WATcher."},{"lineNumber":42,"author":{"gitId":"-"},"content":" */"},{"lineNumber":43,"author":{"gitId":"-"},"content":"export class PhaseService {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public currentPhase: Phase \u003d STARTING_PHASE;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public currentRepo: Repo; // current or main repository of current phase"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public otherRepos: Repo[]; // more repositories relevant to this phase"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"cheehongw"},"content":" /**"},{"lineNumber":49,"author":{"gitId":"cheehongw"},"content":" * Expose an observable to track changes to currentRepo"},{"lineNumber":50,"author":{"gitId":"cheehongw"},"content":" *"},{"lineNumber":51,"author":{"gitId":"cheehongw"},"content":" * TODO - replace all references to currentRepo to have"},{"lineNumber":52,"author":{"gitId":"cheehongw"},"content":" * dependencies subscribe to this observable?"},{"lineNumber":53,"author":{"gitId":"cheehongw"},"content":" */"},{"lineNumber":54,"author":{"gitId":"cheehongw"},"content":" public repoChanged$: Subject\u003cRepo | null\u003e \u003d new Subject();"},{"lineNumber":55,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" /** Whether the PhaseService is changing the repository */"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public isChangingRepo \u003d new BehaviorSubject\u003cboolean\u003e(false);"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":" public sessionData \u003d STARTING_SESSION_DATA; // stores session data for the session"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService, private repoUrlCacheService: RepoUrlCacheService, public logger: LoggingService) {}"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Sets the current main repository and additional repos if any."},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Updates session data in Phase Service and local storage."},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Updates Github Service with current repository."},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param repo Main current repository"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param repos Additional repositories"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */"},{"lineNumber":70,"author":{"gitId":"-"},"content":" setRepository(repo: Repo, repos?: Repo[]): void {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.currentRepo \u003d repo;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.otherRepos \u003d repos ? repos : [];"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.sessionData.sessionRepo.find((x) \u003d\u003e x.phase \u003d\u003d\u003d this.currentPhase).repos \u003d this.getRepository();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.githubService.storePhaseDetails(this.currentRepo.owner, this.currentRepo.name);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" localStorage.setItem(\u0027sessionData\u0027, JSON.stringify(this.sessionData));"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Changes current respository to a new repository."},{"lineNumber":80,"author":{"gitId":"-"},"content":" * @param repo New current repository"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */"},{"lineNumber":82,"author":{"gitId":"-"},"content":" private changeCurrentRepository(repo: Repo): void {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.logger.info(`PhaseService: Changing current repository to \u0027${repo}\u0027`);"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (this.currentPhase \u003d\u003d\u003d Phase.issuesViewer) {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /** Adds past repositories to phase */"},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.otherRepos.push(this.currentRepo);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":" this.setRepository(repo, this.otherRepos);"},{"lineNumber":90,"author":{"gitId":"-"},"content":""},{"lineNumber":91,"author":{"gitId":"-"},"content":" this.repoUrlCacheService.cache(repo.toString());"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"cheehongw"},"content":" this.repoChanged$.next(repo);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }"},{"lineNumber":95,"author":{"gitId":"-"},"content":""},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Change repository if a valid repository is provided"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @param repo New repository"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */"},{"lineNumber":100,"author":{"gitId":"-"},"content":" async changeRepositoryIfValid(repo: Repo) {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.isChangingRepo.next(true);"},{"lineNumber":102,"author":{"gitId":"-"},"content":""},{"lineNumber":103,"author":{"gitId":"-"},"content":" const isValidRepository \u003d await this.githubService.isRepositoryPresent(repo.owner, repo.name).toPromise();"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!isValidRepository) {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.isChangingRepo.next(false);"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new Error(\u0027Invalid repository name. Please check your organisation and repository name.\u0027);"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.changeCurrentRepository(repo);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.isChangingRepo.next(false);"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }"},{"lineNumber":112,"author":{"gitId":"-"},"content":""},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Returns the full repository array of the current feature."},{"lineNumber":115,"author":{"gitId":"-"},"content":" */"},{"lineNumber":116,"author":{"gitId":"-"},"content":" getRepository(): Repo[] {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return [this.currentRepo].concat(this.otherRepos);"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }"},{"lineNumber":119,"author":{"gitId":"-"},"content":""},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Retrieves the repository url from local storage and sets to current repository."},{"lineNumber":122,"author":{"gitId":"-"},"content":" */"},{"lineNumber":123,"author":{"gitId":"-"},"content":" initializeCurrentRepository() {"},{"lineNumber":124,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const org \u003d window.localStorage.getItem(\u0027org\u0027);"},{"lineNumber":125,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const repoName \u003d window.localStorage.getItem(\u0027dataRepo\u0027);"},{"lineNumber":126,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`Phase Service: received initial org (${org}) and initial name (${repoName})`);"},{"lineNumber":127,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let repo: Repo;"},{"lineNumber":128,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (!org || !repoName) {"},{"lineNumber":129,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" repo \u003d Repo.ofEmptyRepo();"},{"lineNumber":130,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" } else {"},{"lineNumber":131,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" repo \u003d new Repo(org, repoName);"},{"lineNumber":132,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":133,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`PhaseService: Repo is ${repo}`);"},{"lineNumber":134,"author":{"gitId":"-"},"content":" this.setRepository(repo);"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Checks if the necessary repository is available. TODO: Future to use to verify setRepository."},{"lineNumber":139,"author":{"gitId":"-"},"content":" */"},{"lineNumber":140,"author":{"gitId":"-"},"content":" verifySessionAvailability(): Observable\u003cboolean\u003e {"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return this.githubService.isRepositoryPresent(this.currentRepo.owner, this.currentRepo.name);"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }"},{"lineNumber":143,"author":{"gitId":"-"},"content":""},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Changes phase and updates Phase Service\u0027s properties."},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param phase New phase"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */"},{"lineNumber":148,"author":{"gitId":"-"},"content":" changePhase(phase: Phase) {"},{"lineNumber":149,"author":{"gitId":"-"},"content":" this.currentPhase \u003d phase;"},{"lineNumber":150,"author":{"gitId":"-"},"content":""},{"lineNumber":151,"author":{"gitId":"-"},"content":" // For now, assumes repository stays the same"},{"lineNumber":152,"author":{"gitId":"-"},"content":" this.githubService.storePhaseDetails(this.currentRepo.owner, this.currentRepo.name);"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }"},{"lineNumber":154,"author":{"gitId":"-"},"content":""},{"lineNumber":155,"author":{"gitId":"-"},"content":" public getCurrentRepositoryURL() {"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return this.currentRepo.owner.concat(\u0027/\u0027).concat(this.currentRepo.name);"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }"},{"lineNumber":158,"author":{"gitId":"-"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" this.currentPhase \u003d STARTING_PHASE;"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }"},{"lineNumber":162,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":10,"-":143,"cheehongw":9}},{"path":"src/app/core/services/session-fix-confirmation/session-fix-confirmation.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"export interface RepositoryData {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" user: string;"},{"lineNumber":6,"author":{"gitId":"-"},"content":" repoName: string;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":10,"author":{"gitId":"-"},"content":" selector: \u0027app-session-fix-confirmation\u0027,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" templateUrl: \u0027./session-fix-confirmation.component.html\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./session-fix-confirmation.component.css\u0027]"},{"lineNumber":13,"author":{"gitId":"-"},"content":"})"},{"lineNumber":14,"author":{"gitId":"-"},"content":"export class SessionFixConfirmationComponent implements OnInit {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" constructor(public dialogRef: MatDialogRef\u003cSessionFixConfirmationComponent\u003e, @Inject(MAT_DIALOG_DATA) public data: RepositoryData) {}"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":17}},{"path":"src/app/core/services/user.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { map } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../models/github-user.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { User, UserRole } from \u0027../models/user.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":10,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":11,"author":{"gitId":"-"},"content":"})"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Responsible for creation of users and teams within the WATcher application."},{"lineNumber":15,"author":{"gitId":"-"},"content":" */"},{"lineNumber":16,"author":{"gitId":"-"},"content":"export class UserService {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public currentUser: User;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"cheehongw"},"content":" constructor(private githubService: GithubService, private logger: LoggingService) {}"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Get the authenticated user if it exist."},{"lineNumber":23,"author":{"gitId":"-"},"content":" */"},{"lineNumber":24,"author":{"gitId":"-"},"content":" getAuthenticatedUser(): Observable\u003cGithubUser\u003e {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return this.githubService.fetchAuthenticatedUser().pipe("},{"lineNumber":26,"author":{"gitId":"-"},"content":" map((data: GithubUser) \u003d\u003e {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return data;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" })"},{"lineNumber":29,"author":{"gitId":"-"},"content":" );"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" createUserModel(userLoginId: string): Observable\u003cUser\u003e {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.currentUser \u003d \u003cUser\u003e{ loginId: userLoginId, role: UserRole.Student };"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // to refactor"},{"lineNumber":35,"author":{"gitId":"-"},"content":" const o \u003d new Observable\u003cUser\u003e((s) \u003d\u003e {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" s.next(this.currentUser);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" s.complete();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" });"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return o;"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" this.logger.info(\u0027UserService: Clearing current user\u0027);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.currentUser \u003d undefined;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":1,"-":43,"cheehongw":2}},{"path":"src/app/issues-viewer/card-view/card-view.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"card-column\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"column-header\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-card\u003e"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cmat-card-header [ngStyle]\u003d\"{ height: \u002740px\u0027 }\"\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cdiv"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mat-card-avatar"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" *ngIf\u003d\"this.assignee\""},{"lineNumber":8,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"{"},{"lineNumber":9,"author":{"gitId":"-"},"content":" background: \u0027url(\u0027 + this.assignee.avatar_url + \u0027)\u0027,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u0027background-size\u0027: \u002740px\u0027"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }\""},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003e\u003c/div\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmat-card-title\u003e"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" {{ this.assignee !\u003d\u003d undefined ? this.assignee.login : \u0027Unassigned Issues\u0027 }}"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/mat-card-title\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row-count\"\u003e{{ this.issues.count }}\u003c/div\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/mat-card-header\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/mat-card\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"scrollable-container-wrapper\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"scrollable-container\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"issue-pr-cards\" *ngFor\u003d\"let issue of this.issues$ | async; index as i\"\u003e"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003capp-issue-pr-card [issue]\u003d\"issue\" [dropdownFilter]\u003d\"issues.dropdownFilter\"\u003e\u003c/app-issue-pr-card\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cmat-card class\u003d\"loading-spinner\" *ngIf\u003d\"this.issues.isLoading$ | async\"\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cmat-progress-spinner color\u003d\"primary\" mode\u003d\"indeterminate\" diameter\u003d\"50\" strokeWidth\u003d\"5\"\u003e\u003c/mat-progress-spinner\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/mat-card\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cmat-paginator [pageSize]\u003d\"20\" [pageSizeOptions]\u003d\"[10, 20, 50]\"\u003e\u003c/mat-paginator\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"Eclipse-Dominator":1,"vigneshsankariyer1234567890":3,"-":28}},{"path":"src/app/issues-viewer/card-view/card-view.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, Input, OnDestroy, OnInit, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":3,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":"import { FilterableComponent, FilterableSource } from \u0027../../shared/issue-tables/filterableTypes\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { IssuesDataTable } from \u0027../../shared/issue-tables/IssuesDataTable\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":12,"author":{"gitId":"-"},"content":" selector: \u0027app-card-view\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" templateUrl: \u0027./card-view.component.html\u0027,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./card-view.component.css\u0027]"},{"lineNumber":15,"author":{"gitId":"-"},"content":"})"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Displays issues as Cards."},{"lineNumber":19,"author":{"gitId":"-"},"content":" */"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":"export class CardViewComponent implements OnInit, AfterViewInit, OnDestroy, FilterableComponent {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Input() headers: string[];"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Input() assignee?: GithubUser \u003d undefined;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Input() filters?: any \u003d undefined;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Input() sort?: MatSort \u003d undefined;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" issues: IssuesDataTable;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" issues$: Observable\u003cIssue[]\u003e;"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" constructor(public issueService: IssueService) {}"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.issues \u003d new IssuesDataTable(this.issueService, this.sort, this.paginator, this.headers, this.assignee, this.filters);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.issues.loadIssues();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.issues$ \u003d this.issues.connect();"},{"lineNumber":41,"author":{"gitId":"-"},"content":" });"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.issues.disconnect();"},{"lineNumber":47,"author":{"gitId":"-"},"content":" });"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":" retrieveFilterable(): FilterableSource {"},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" return this.issues;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":2,"Eclipse-Dominator":5,"-":46}},{"path":"src/app/issues-viewer/issues-viewer.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".issue-table {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" width: 25%;"},{"lineNumber":3,"author":{"gitId":"-"},"content":" min-width: 200px;"},{"lineNumber":4,"author":{"gitId":"-"},"content":" max-width: 400px;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":".dropdown-filters .mat-form-field {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" margin: 8px;"},{"lineNumber":9,"author":{"gitId":"-"},"content":" font-size: 14px;"},{"lineNumber":10,"author":{"gitId":"-"},"content":" max-width: 20%;"},{"lineNumber":11,"author":{"gitId":"-"},"content":" width: 25%; /* depends on number of filters*/"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":".search-bar {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" width: 90%;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":".dropdown-filters {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":".label-filter-grid-tile {"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 100%;"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":".submit-button {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" margin-left: 8px;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":".switch-repo-tile {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" background-color: lightblue;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":".wrapper {"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" display: flex;"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" overflow-x: auto;"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" /* white-space: nowrap; */"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"}"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":".loading-spinner {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" display: flex;"},{"lineNumber":42,"author":{"gitId":"-"},"content":" justify-content: center;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" align-items: center;"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":1,"vigneshsankariyer1234567890":6,"-":37}},{"path":"src/app/issues-viewer/issues-viewer.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv\u003e"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cdiv class\u003d\"loading-spinner\" *ngIf\u003d\"this.phaseService.isChangingRepo | async; else elseBlock\"\u003e"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-progress-spinner color\u003d\"primary\" mode\u003d\"indeterminate\" diameter\u003d\"50\" strokeWidth\u003d\"5\"\u003e \u003c/mat-progress-spinner\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cng-template #elseBlock\u003e"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003capp-filter-bar [views$]\u003d\"views\" #filterbar\u003e\u003c/app-filter-bar\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" \u003cdiv class\u003d\"wrapper\"\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003capp-card-view"},{"lineNumber":11,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let assignee of assignees\""},{"lineNumber":12,"author":{"gitId":"-"},"content":" class\u003d\"issue-table\""},{"lineNumber":13,"author":{"gitId":"-"},"content":" [assignee]\u003d\"assignee\""},{"lineNumber":14,"author":{"gitId":"-"},"content":" [headers]\u003d\"this.displayedColumns\""},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" [sort]\u003d\"filterbar.matSort\""},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003e\u003c/app-card-view\u003e"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003capp-card-view class\u003d\"issue-table\" [headers]\u003d\"this.displayedColumns\" [sort]\u003d\"filterbar.matSort\"\u003e\u003c/app-card-view\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/ng-template\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"Eclipse-Dominator":5,"vigneshsankariyer1234567890":1,"-":14}},{"path":"src/app/issues-viewer/issues-viewer.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { BehaviorSubject, of, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../core/models/github-user.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Repo } from \u0027../core/models/repo.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../core/services/github.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../core/services/issue.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../core/services/label.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { MilestoneService } from \u0027../core/services/milestone.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../core/services/phase.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027../shared/issue-tables/issue-tables-columns\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { CardViewComponent } from \u0027./card-view/card-view.component\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":14,"author":{"gitId":"-"},"content":" selector: \u0027app-issues-viewer\u0027,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" templateUrl: \u0027./issues-viewer.component.html\u0027,"},{"lineNumber":16,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./issues-viewer.component.css\u0027]"},{"lineNumber":17,"author":{"gitId":"-"},"content":"})"},{"lineNumber":18,"author":{"gitId":"-"},"content":"export class IssuesViewerComponent implements OnInit, AfterViewInit, OnDestroy {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" readonly displayedColumns \u003d [TABLE_COLUMNS.ID, TABLE_COLUMNS.TITLE, TABLE_COLUMNS.ASSIGNEE, TABLE_COLUMNS.LABEL];"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"cheehongw"},"content":" /** Observes for any change in repo*/"},{"lineNumber":22,"author":{"gitId":"cheehongw"},"content":" repoChangeSubscription: Subscription;"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Observes for any change in the cardviews */"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" viewChange: Subscription;"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" /** Users to show as columns */"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assignees: GithubUser[];"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" @ViewChildren(CardViewComponent) cardViews: QueryList\u003cCardViewComponent\u003e;"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" views \u003d new BehaviorSubject\u003cQueryList\u003cCardViewComponent\u003e\u003e(undefined);"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":35,"author":{"gitId":"-"},"content":" public phaseService: PhaseService,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public githubService: GithubService,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public issueService: IssueService,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public labelService: LabelService,"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" public milestoneService: MilestoneService"},{"lineNumber":40,"author":{"gitId":"cheehongw"},"content":" ) {"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" this.repoChangeSubscription \u003d this.phaseService.repoChanged$.subscribe((newRepo) \u003d\u003e {"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" this.issueService.reset(false);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.labelService.reset();"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":" this.initialize();"},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":46,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.initialize();"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" this.viewChange \u003d this.cardViews.changes.subscribe((x) \u003d\u003e this.views.next(x));"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":57,"author":{"gitId":"cheehongw"},"content":" this.repoChangeSubscription.unsubscribe();"},{"lineNumber":58,"author":{"gitId":"Eclipse-Dominator"},"content":" this.viewChange.unsubscribe();"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Fetch and initialize all information from repository to populate Issue Dashboard."},{"lineNumber":63,"author":{"gitId":"-"},"content":" */"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private initialize() {"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.checkIfValidRepository().subscribe((isValidRepository) \u003d\u003e {"},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (!isValidRepository) {"},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" throw new Error(\u0027Invalid repository name. Please provide repository name in the format Org/Repository.\u0027);"},{"lineNumber":68,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":69,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Fetch assignees"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.assignees \u003d [];"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.githubService.getUsersAssignable().subscribe((x) \u003d\u003e (this.assignees \u003d x));"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" // Fetch issues"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.issueService.reloadAllIssues();"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }"},{"lineNumber":79,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":80,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" /**"},{"lineNumber":81,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" * Checks if our current repository available on phase service is indeed a valid repository"},{"lineNumber":82,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" */"},{"lineNumber":83,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" private checkIfValidRepository() {"},{"lineNumber":84,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const currentRepo \u003d this.phaseService.currentRepo;"},{"lineNumber":85,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":86,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (Repo.isInvalidRepoName(currentRepo)) {"},{"lineNumber":87,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return of(false);"},{"lineNumber":88,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return this.githubService.isRepositoryPresent(currentRepo.owner, currentRepo.name);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":10,"vigneshsankariyer1234567890":18,"-":59,"cheehongw":5}},{"path":"src/app/issues-viewer/issues-viewer.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { FilterBarModule } from \u0027../shared/filter-bar/filter-bar.module\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { IssuesPrCardModule } from \u0027../shared/issue-pr-card/issue-pr-card.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../shared/shared.module\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { CardViewComponent } from \u0027./card-view/card-view.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { IssuesViewerRoutingModule } from \u0027./issues-viewer-routing.module\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssuesViewerComponent } from \u0027./issues-viewer.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" imports: [FilterBarModule, IssuesViewerRoutingModule, IssuesPrCardModule, SharedModule],"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" declarations: [IssuesViewerComponent, CardViewComponent],"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" exports: [IssuesViewerComponent, CardViewComponent]"},{"lineNumber":13,"author":{"gitId":"-"},"content":"})"},{"lineNumber":14,"author":{"gitId":"-"},"content":"export class IssuesViewerModule {}"}],"authorContributionMap":{"Eclipse-Dominator":5,"-":9}},{"path":"src/app/shared/error-toasters/error-toaster.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { CommonModule } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MaterialModule } from \u0027../material.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { FormErrorComponent } from \u0027./form-error/form-error.component\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GeneralMessageErrorComponent } from \u0027./general-message-error/general-message-error.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { InvalidCredentialsErrorComponent } from \u0027./invalid-credentials-error/invalid-credentials-error.component\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { ToasterComponent } from \u0027./toaster/toaster.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":10,"author":{"gitId":"-"},"content":" imports: [CommonModule, MaterialModule],"},{"lineNumber":11,"author":{"gitId":"-"},"content":" declarations: [GeneralMessageErrorComponent, FormErrorComponent, InvalidCredentialsErrorComponent, ToasterComponent],"},{"lineNumber":12,"author":{"gitId":"Echomo-Xinyu"},"content":" exports: [GeneralMessageErrorComponent, FormErrorComponent, InvalidCredentialsErrorComponent]"},{"lineNumber":13,"author":{"gitId":"-"},"content":"})"},{"lineNumber":14,"author":{"gitId":"-"},"content":"export class ErrorToasterModule {}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":13}},{"path":"src/app/shared/error-toasters/form-error/form-error.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MAT_SNACK_BAR_DATA } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"-"},"content":" selector: \u0027app-form-error\u0027,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" templateUrl: \u0027./form-error.component.html\u0027"},{"lineNumber":7,"author":{"gitId":"-"},"content":"})"},{"lineNumber":8,"author":{"gitId":"-"},"content":"export class FormErrorComponent {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) {}"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":9}},{"path":"src/app/shared/error-toasters/general-message-error/general-message-error.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MAT_SNACK_BAR_DATA } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"-"},"content":" selector: \u0027app-general-message-error\u0027,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" templateUrl: \u0027./general-message-error.component.html\u0027"},{"lineNumber":7,"author":{"gitId":"-"},"content":"})"},{"lineNumber":8,"author":{"gitId":"-"},"content":"export class GeneralMessageErrorComponent {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) {}"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":9}},{"path":"src/app/shared/error-toasters/invalid-credentials-error/invalid-credentials-error.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSnackBarRef, MAT_SNACK_BAR_DATA } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"-"},"content":" selector: \u0027app-form-error\u0027,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" templateUrl: \u0027./invalid-credentials-error.component.html\u0027"},{"lineNumber":7,"author":{"gitId":"-"},"content":"})"},{"lineNumber":8,"author":{"gitId":"-"},"content":"export class InvalidCredentialsErrorComponent {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" constructor(public snackBarRef: MatSnackBarRef\u003cInvalidCredentialsErrorComponent\u003e, @Inject(MAT_SNACK_BAR_DATA) public data: any) {}"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":9}},{"path":"src/app/shared/error-toasters/toaster/toaster.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSnackBarRef } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"-"},"content":" selector: \u0027app-toaster\u0027,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" templateUrl: \u0027./toaster.component.html\u0027,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./toaster.component.css\u0027]"},{"lineNumber":8,"author":{"gitId":"-"},"content":"})"},{"lineNumber":9,"author":{"gitId":"-"},"content":"export class ToasterComponent implements OnInit {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" constructor(public snackBarRef: MatSnackBarRef\u003cToasterComponent\u003e) {}"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":12}},{"path":"src/app/shared/filter-bar/filter-bar.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":".dropdown-filters .mat-form-field {"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 8px;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 14px;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" max-width: 20%;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 25%; /* depends on number of filters*/"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":".search-bar {"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 90%;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":".dropdown-filters {"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 100%;"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":".label-filter-grid-tile {"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 100%;"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":".submit-button {"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-left: 8px;"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":22}},{"path":"src/app/shared/filter-bar/filter-bar.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003cmat-grid-list cols\u003d\"7\" rowHeight\u003d\"80px\"\u003e"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-grid-tile colspan\u003d\"3\"\u003e"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-form-field class\u003d\"search-bar\"\u003e"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cinput matInput (keyup)\u003d\"applyFilter($event.target.value)\" placeholder\u003d\"Search\" /\u003e"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-grid-tile colspan\u003d\"3\"\u003e"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cdiv class\u003d\"dropdown-filters\"\u003e"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-form-field appearance\u003d\"standard\"\u003e"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-label\u003eStatus\u003c/mat-label\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cmat-select [(value)]\u003d\"this.dropdownFilter.status\" (selectionChange)\u003d\"updateTypePairing(); applyDropdownFilter()\"\u003e"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"all\"\u003eAll\u003c/mat-option\u003e"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"open\"\u003eOpen\u003c/mat-option\u003e"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"closed\"\u003eClosed\u003c/mat-option\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"merged\" *ngIf\u003d\"isNotFilterIssue()\"\u003eMerged\u003c/mat-option\u003e"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-select\u003e"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-form-field appearance\u003d\"standard\"\u003e"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-label\u003eType\u003c/mat-label\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cmat-select [(value)]\u003d\"this.dropdownFilter.type\" (selectionChange)\u003d\"updateStatusPairing(); applyDropdownFilter()\"\u003e"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"all\"\u003eAll\u003c/mat-option\u003e"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"issue\"\u003eIssue\u003c/mat-option\u003e"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"pullrequest\"\u003ePull Request\u003c/mat-option\u003e"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-select\u003e"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-form-field appearance\u003d\"standard\" matSort [matSortDisableClear]\u003d\"true\"\u003e"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-label\u003eSort\u003c/mat-label\u003e"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-select [(value)]\u003d\"this.dropdownFilter.sort\" (selectionChange)\u003d\"applyDropdownFilter()\"\u003e"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"id\"\u003e"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cspan mat-sort-header\u003d\"id\"\u003eID\u003c/span\u003e"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-option\u003e"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"title\"\u003e"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cspan mat-sort-header\u003d\"title\"\u003eTitle\u003c/span\u003e"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-option\u003e"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option value\u003d\"date\"\u003e"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cspan mat-sort-header\u003d\"date\"\u003eDate Updated\u003c/span\u003e"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-option\u003e"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-select\u003e"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-form-field appearance\u003d\"standard\"\u003e"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-label\u003eMilestone\u003c/mat-label\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cmat-select"},{"lineNumber":44,"author":{"gitId":"-"},"content":" #milestoneSelectorRef"},{"lineNumber":45,"author":{"gitId":"-"},"content":" [(value)]\u003d\"this.dropdownFilter.milestones\""},{"lineNumber":46,"author":{"gitId":"-"},"content":" (selectionChange)\u003d\"applyDropdownFilter()\""},{"lineNumber":47,"author":{"gitId":"-"},"content":" [disabled]\u003d\"this.milestoneService.hasNoMilestones\""},{"lineNumber":48,"author":{"gitId":"-"},"content":" multiple"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cmat-select-trigger *ngIf\u003d\"this.milestoneService.hasNoMilestones\"\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cspan\u003eNo Milestones\u003c/span\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/mat-select-trigger\u003e"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-option *ngFor\u003d\"let milestone of this.milestoneService.milestones\" [value]\u003d\"milestone.number\"\u003e"},{"lineNumber":54,"author":{"gitId":"Eclipse-Dominator"},"content":" {{ milestone.title }}"},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-option\u003e"},{"lineNumber":56,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-select\u003e"},{"lineNumber":57,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":58,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/div\u003e"},{"lineNumber":59,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":60,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":61,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-grid-tile class\u003d\"label-filter-grid-tile\" colspan\u003d\"1\"\u003e"},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003capp-label-filter-bar [selectedLabels]\u003d\"this.labelFilter$\" [hiddenLabels]\u003d\"this.hiddenLabels$\"\u003e\u003c/app-label-filter-bar\u003e"},{"lineNumber":63,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":64,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003c/mat-grid-list\u003e"}],"authorContributionMap":{"Eclipse-Dominator":51,"-":13}},{"path":"src/app/shared/filter-bar/filter-bar.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { AfterViewInit, Component, Input, OnDestroy, OnInit, QueryList, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { MatSelect } from \u0027@angular/material/select\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"import { BehaviorSubject, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":"import { MilestoneService } from \u0027../../core/services/milestone.service\u0027;"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":"import { PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":"import { DEFAULT_DROPDOWN_FILTER, DropdownFilter } from \u0027../issue-tables/dropdownfilter\u0027;"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":"import { FilterableComponent } from \u0027../issue-tables/filterableTypes\u0027;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LabelFilterBarComponent } from \u0027./label-filter-bar/label-filter-bar.component\u0027;"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"/**"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" * This component is abstracted out filterbar used by both detailed-viewer page"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" * and Issues-viewer"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":"@Component({"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" selector: \u0027app-filter-bar\u0027,"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" templateUrl: \u0027./filter-bar.component.html\u0027,"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" styleUrls: [\u0027./filter-bar.component.css\u0027]"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":"})"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":"export class FilterBarComponent implements OnInit, AfterViewInit, OnDestroy {"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() views$: BehaviorSubject\u003cQueryList\u003cFilterableComponent\u003e\u003e;"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" repoChangeSubscription: Subscription;"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Selected dropdown filter value */"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" dropdownFilter: DropdownFilter \u003d DEFAULT_DROPDOWN_FILTER;"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Selected label filters, instance passed into LabelChipBar to populate */"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" labelFilter$ \u003d new BehaviorSubject\u003cstring[]\u003e([]);"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" labelFilterSubscription: Subscription;"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Selected label to hide */"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" hiddenLabels$ \u003d new BehaviorSubject\u003cSet\u003cstring\u003e\u003e(new Set());"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":" hiddenLabelSubscription: Subscription;"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Milestone subscription */"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" milestoneSubscription: Subscription;"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" /** One MatSort controls all IssueDataTables */"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" @ViewChild(MatSort, { static: true }) matSort: MatSort;"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" @ViewChild(LabelFilterBarComponent, { static: true }) labelFilterBar: LabelFilterBarComponent;"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" @ViewChild(\u0027milestoneSelectorRef\u0027, { static: false }) milestoneSelectorRef: MatSelect;"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":" constructor(public milestoneService: MilestoneService, private phaseService: PhaseService, private logger: LoggingService) {"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" this.repoChangeSubscription \u003d this.phaseService.repoChanged$.subscribe((newRepo) \u003d\u003e this.initialize());"},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" ngOnInit() {"},{"lineNumber":52,"author":{"gitId":"Eclipse-Dominator"},"content":" this.initialize();"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":54,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":" ngAfterViewInit(): void {"},{"lineNumber":56,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Apply dropdown filter when LabelChipBar populates with label filters */"},{"lineNumber":57,"author":{"gitId":"Eclipse-Dominator"},"content":" this.labelFilterSubscription \u003d this.labelFilter$.subscribe((labels) \u003d\u003e {"},{"lineNumber":58,"author":{"gitId":"Eclipse-Dominator"},"content":" this.dropdownFilter.labels \u003d labels;"},{"lineNumber":59,"author":{"gitId":"Eclipse-Dominator"},"content":" this.applyDropdownFilter();"},{"lineNumber":60,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":61,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":" this.hiddenLabelSubscription \u003d this.hiddenLabels$.subscribe((labels) \u003d\u003e {"},{"lineNumber":63,"author":{"gitId":"Eclipse-Dominator"},"content":" this.dropdownFilter.hiddenLabels \u003d labels;"},{"lineNumber":64,"author":{"gitId":"Eclipse-Dominator"},"content":" this.applyDropdownFilter();"},{"lineNumber":65,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":66,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":67,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":68,"author":{"gitId":"Eclipse-Dominator"},"content":" ngOnDestroy(): void {"},{"lineNumber":69,"author":{"gitId":"Eclipse-Dominator"},"content":" this.labelFilterSubscription?.unsubscribe();"},{"lineNumber":70,"author":{"gitId":"Eclipse-Dominator"},"content":" this.hiddenLabelSubscription?.unsubscribe();"},{"lineNumber":71,"author":{"gitId":"Eclipse-Dominator"},"content":" this.milestoneSubscription.unsubscribe();"},{"lineNumber":72,"author":{"gitId":"Eclipse-Dominator"},"content":" this.repoChangeSubscription.unsubscribe();"},{"lineNumber":73,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":74,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":75,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":76,"author":{"gitId":"Eclipse-Dominator"},"content":" * Signals to IssuesDataTable that a change has occurred in filter."},{"lineNumber":77,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param filterValue"},{"lineNumber":78,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":79,"author":{"gitId":"Eclipse-Dominator"},"content":" applyFilter(filterValue: string) {"},{"lineNumber":80,"author":{"gitId":"Eclipse-Dominator"},"content":" this.views$?.value?.forEach((v) \u003d\u003e (v.retrieveFilterable().filter \u003d filterValue));"},{"lineNumber":81,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":82,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Changes type to a valid, default value when an incompatible combination of type and status is encountered."},{"lineNumber":85,"author":{"gitId":"-"},"content":" */"},{"lineNumber":86,"author":{"gitId":"-"},"content":" updateTypePairing() {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (this.dropdownFilter.status \u003d\u003d\u003d \u0027merged\u0027) {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.dropdownFilter.type \u003d \u0027pullrequest\u0027;"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Changes status to a valid, default value when an incompatible combination of type and status is encountered."},{"lineNumber":94,"author":{"gitId":"-"},"content":" */"},{"lineNumber":95,"author":{"gitId":"-"},"content":" updateStatusPairing() {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (this.dropdownFilter.status \u003d\u003d\u003d \u0027merged\u0027 \u0026\u0026 this.dropdownFilter.type \u003d\u003d\u003d \u0027issue\u0027) {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" this.dropdownFilter.status \u003d \u0027all\u0027;"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }"},{"lineNumber":100,"author":{"gitId":"-"},"content":""},{"lineNumber":101,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":102,"author":{"gitId":"Eclipse-Dominator"},"content":" * Signals to IssuesDataTable that a change has occurred in dropdown filter."},{"lineNumber":103,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":104,"author":{"gitId":"Eclipse-Dominator"},"content":" applyDropdownFilter() {"},{"lineNumber":105,"author":{"gitId":"Eclipse-Dominator"},"content":" this.views$?.value?.forEach((v) \u003d\u003e (v.retrieveFilterable().dropdownFilter \u003d this.dropdownFilter));"},{"lineNumber":106,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":107,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Checks if program is filtering by type issue."},{"lineNumber":110,"author":{"gitId":"-"},"content":" */"},{"lineNumber":111,"author":{"gitId":"-"},"content":" isNotFilterIssue() {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return this.dropdownFilter.type !\u003d\u003d \u0027issue\u0027;"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":116,"author":{"gitId":"Eclipse-Dominator"},"content":" * Fetch and initialize all information from repository to populate Issue Dashboard."},{"lineNumber":117,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":118,"author":{"gitId":"Eclipse-Dominator"},"content":" private initialize() {"},{"lineNumber":119,"author":{"gitId":"Eclipse-Dominator"},"content":" // Fetch milestones and update dropdown filter"},{"lineNumber":120,"author":{"gitId":"Eclipse-Dominator"},"content":" this.milestoneSubscription \u003d this.milestoneService.fetchMilestones().subscribe("},{"lineNumber":121,"author":{"gitId":"Eclipse-Dominator"},"content":" (response) \u003d\u003e {"},{"lineNumber":122,"author":{"gitId":"Eclipse-Dominator"},"content":" this.logger.debug(\u0027IssuesViewerComponent: Fetched milestones from Github\u0027);"},{"lineNumber":123,"author":{"gitId":"Eclipse-Dominator"},"content":" this.milestoneService.milestones.forEach((milestone) \u003d\u003e this.dropdownFilter.milestones.push(milestone.number));"},{"lineNumber":124,"author":{"gitId":"Eclipse-Dominator"},"content":" },"},{"lineNumber":125,"author":{"gitId":"Eclipse-Dominator"},"content":" (err) \u003d\u003e {},"},{"lineNumber":126,"author":{"gitId":"Eclipse-Dominator"},"content":" () \u003d\u003e {}"},{"lineNumber":127,"author":{"gitId":"Eclipse-Dominator"},"content":" );"},{"lineNumber":128,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":129,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":104,"-":25}},{"path":"src/app/shared/filter-bar/filter-bar.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { SharedModule } from \u0027../shared.module\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { FilterBarComponent } from \u0027./filter-bar.component\u0027;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LabelFilterBarComponent } from \u0027./label-filter-bar/label-filter-bar.component\u0027;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":"@NgModule({"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" imports: [SharedModule],"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" declarations: [FilterBarComponent, LabelFilterBarComponent],"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" exports: [FilterBarComponent]"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"})"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":"export class FilterBarModule {}"}],"authorContributionMap":{"Eclipse-Dominator":11}},{"path":"src/app/shared/filter-bar/label-filter-bar/label-filter-bar.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"::ng-deep.mat-menu-content:not(:empty) {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" /* Override mat-menu-content\u0027s non-empty default CSS. */"},{"lineNumber":3,"author":{"gitId":"-"},"content":" padding-top: 0px !important;"},{"lineNumber":4,"author":{"gitId":"-"},"content":" padding-bottom: 0px !important;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"::ng-deep.mat-menu-panel {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Override mat-menu-panel\u0027s default CSS. */"},{"lineNumber":9,"author":{"gitId":"-"},"content":" width: 280px;"},{"lineNumber":10,"author":{"gitId":"-"},"content":" max-width: none !important;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":".popup-container {"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" flex-direction: column;"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":".popupmenu {"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" width: max-content;"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":".scroll-container {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" max-height: 400px;"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 100%;"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" overflow-y: auto;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" position: relative;"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" -ms-overflow-style: none; /* IE and Edge */"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" scrollbar-width: none; /* Firefox */"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":"/* Ref: https://css-scroll-shadows.vercel.app */"},{"lineNumber":31,"author":{"gitId":"-"},"content":".scroll-container::before {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" pointer-events: none;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" content: \u0027\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":" position: absolute;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" z-index: 2;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" height: 7px;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" display: block;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" background-image: linear-gradient(to bottom, white 66%, transparent);"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":".scroll-container::after {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" pointer-events: none;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" content: \u0027\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" position: sticky;"},{"lineNumber":46,"author":{"gitId":"-"},"content":" z-index: 2;"},{"lineNumber":47,"author":{"gitId":"-"},"content":" top: 100%;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" height: 7px;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" display: block;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" background-image: linear-gradient(to top, white 66%, transparent);"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":".scroll-container-wrapper {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" position: relative;"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":".scroll-container-wrapper::before {"},{"lineNumber":59,"author":{"gitId":"-"},"content":" pointer-events: none;"},{"lineNumber":60,"author":{"gitId":"-"},"content":" content: \u0027\u0027;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" position: absolute;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" z-index: 1;"},{"lineNumber":63,"author":{"gitId":"-"},"content":" top: 0;"},{"lineNumber":64,"author":{"gitId":"-"},"content":" left: 0;"},{"lineNumber":65,"author":{"gitId":"-"},"content":" right: 0;"},{"lineNumber":66,"author":{"gitId":"-"},"content":" height: 5px;"},{"lineNumber":67,"author":{"gitId":"-"},"content":" background-image: radial-gradient(farthest-side at 50% 0, rgba(0, 0, 0, 0.7), transparent);"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":".scroll-container-wrapper::after {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" pointer-events: none;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" content: \u0027\u0027;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" position: absolute;"},{"lineNumber":74,"author":{"gitId":"-"},"content":" z-index: 1;"},{"lineNumber":75,"author":{"gitId":"-"},"content":" bottom: 0;"},{"lineNumber":76,"author":{"gitId":"-"},"content":" left: 0;"},{"lineNumber":77,"author":{"gitId":"-"},"content":" right: 0;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" height: 5px;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" background-image: radial-gradient(farthest-side at 50% 100%, rgba(0, 0, 0, 0.7), transparent);"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":".scroll-container::-webkit-scrollbar {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" display: none; /* Hide scrollbar for Chrome, Safari and Opera */"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"Eclipse-Dominator"},"content":".flexbox-container {"},{"lineNumber":87,"author":{"gitId":"Eclipse-Dominator"},"content":" display: flex;"},{"lineNumber":88,"author":{"gitId":"Eclipse-Dominator"},"content":" flex-direction: row;"},{"lineNumber":89,"author":{"gitId":"Eclipse-Dominator"},"content":" justify-content: flex-start;"},{"lineNumber":90,"author":{"gitId":"Eclipse-Dominator"},"content":" align-items: center;"},{"lineNumber":91,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":92,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":93,"author":{"gitId":"Eclipse-Dominator"},"content":".input-field {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" width: calc(100% - (2 * 15px)); /* To account for left and right padding. */"},{"lineNumber":95,"author":{"gitId":"-"},"content":" padding: 0 15px;"},{"lineNumber":96,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":97,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":98,"author":{"gitId":"Eclipse-Dominator"},"content":".list-option {"},{"lineNumber":99,"author":{"gitId":"Eclipse-Dominator"},"content":" width: 100%;"},{"lineNumber":100,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":101,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":102,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-chip {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" height: auto;"},{"lineNumber":104,"author":{"gitId":"-"},"content":" padding: 5.5px 7px;"},{"lineNumber":105,"author":{"gitId":"-"},"content":" line-height: 1.1em;"},{"lineNumber":106,"author":{"gitId":"Eclipse-Dominator"},"content":" position: inherit;"},{"lineNumber":107,"author":{"gitId":"Eclipse-Dominator"},"content":" border-radius: 6px;"},{"lineNumber":108,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 12px;"},{"lineNumber":109,"author":{"gitId":"Eclipse-Dominator"},"content":" min-height: 16px;"},{"lineNumber":110,"author":{"gitId":"-"},"content":" max-height: 42px;"},{"lineNumber":111,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 0px;"},{"lineNumber":112,"author":{"gitId":"Eclipse-Dominator"},"content":" top: 50%;"},{"lineNumber":113,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":114,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":115,"author":{"gitId":"Echomo-Xinyu"},"content":".mat-stroked-button {"},{"lineNumber":116,"author":{"gitId":"Echomo-Xinyu"},"content":" font-weight: normal;"},{"lineNumber":117,"author":{"gitId":"Echomo-Xinyu"},"content":"}"},{"lineNumber":118,"author":{"gitId":"Echomo-Xinyu"},"content":""},{"lineNumber":119,"author":{"gitId":"Eclipse-Dominator"},"content":".hidden {"},{"lineNumber":120,"author":{"gitId":"Eclipse-Dominator"},"content":" display: none !important;"},{"lineNumber":121,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":122,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":123,"author":{"gitId":"Eclipse-Dominator"},"content":"mat-list-option {"},{"lineNumber":124,"author":{"gitId":"Eclipse-Dominator"},"content":" width: max-content;"},{"lineNumber":125,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":126,"author":{"gitId":"-"},"content":""},{"lineNumber":127,"author":{"gitId":"-"},"content":".no-labels {"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /* Chosen to look similar to button above. */"},{"lineNumber":129,"author":{"gitId":"-"},"content":" padding: 0 16px;"},{"lineNumber":130,"author":{"gitId":"-"},"content":" font-size: 14px;"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":45,"Echomo-Xinyu":4,"-":82}},{"path":"src/app/shared/filter-bar/label-filter-bar/label-filter-bar.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"Echomo-Xinyu"},"content":"\u003cbutton mat-stroked-button *ngIf\u003d\"loaded\" [matMenuTriggerFor]\u003d\"menu\"\u003e"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":" {{ selectedLabelNames.length \u003d\u003d 0 ? \u0027All\u0027 : selectedLabelNames.length }} Selected | {{ hiddenLabelNames?.size || 0 }} Hidden â–¾"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003c/button\u003e"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":5,"author":{"gitId":"Echomo-Xinyu"},"content":"\u003cbutton mat-stroked-button disabled *ngIf\u003d\"!loaded\" color\u003d\"accent\"\u003e"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-progress-bar mode\u003d\"query\"\u003e\u003c/mat-progress-bar\u003e"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003c/button\u003e"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003cmat-menu #menu\u003d\"matMenu\" class\u003d\"popupmenu\"\u003e"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cdiv (click)\u003d\"$event.stopPropagation()\" class\u003d\"popup-container\"\u003e"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-form-field appearance\u003d\"standard\" class\u003d\"input-field\"\u003e"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-label\u003eLabels\u003c/mat-label\u003e"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cinput #input matInput placeholder\u003d\"Find labels\" /\u003e"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cbutton mat-button (click)\u003d\"removeAllSelection()\"\u003eRemove all\u003c/button\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"!hasLabels(input.value)\" class\u003d\"no-labels\"\u003eNo Labels Found!\u003c/div\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"scroll-container-wrapper\"\u003e"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cdiv class\u003d\"scroll-container\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmat-selection-list [(ngModel)]\u003d\"selectedLabelNames\" (selectionChange)\u003d\"updateSelection()\"\u003e"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-list-option"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" #option"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let label of this.labels$ | async;\""},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" [value]\u003d\"label.name\""},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" [selected]\u003d\"selectedLabelNames.includes(label.name)\""},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" class\u003d\"list-option\""},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":" [class.hidden]\u003d\"filter(input.value, label.name)\""},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003e"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cdiv class\u003d\"flexbox-container\"\u003e"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton mat-icon-button *ngIf\u003d\"!hiddenLabelNames.has(label.name)\" (click)\u003d\"hide(label.name); $event.stopPropagation()\"\u003e"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-icon\u003evisibility\u003c/mat-icon\u003e"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/button\u003e"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton mat-icon-button *ngIf\u003d\"hiddenLabelNames.has(label.name)\" (click)\u003d\"show(label.name); $event.stopPropagation()\"\u003e"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-icon\u003evisibility_off\u003c/mat-icon\u003e"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/button\u003e"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-chip"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" [ngStyle]\u003d\"labelService.setLabelStyle(label.color)\""},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" [disabled]\u003d\"hiddenLabelNames.has(label.name)\""},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" (click)\u003d\"simulateClick(option); $event.stopPropagation()\""},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" {{ label.formattedName }}"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-chip\u003e"},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/div\u003e"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-list-option\u003e"},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-selection-list\u003e"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/div\u003e"},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/div\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003c/mat-menu\u003e"}],"authorContributionMap":{"Echomo-Xinyu":3,"Eclipse-Dominator":39,"-":9}},{"path":"src/app/shared/filter-bar/label-filter-bar/label-filter-bar.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, Input, OnDestroy, OnInit, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatListOption, MatSelectionList } from \u0027@angular/material/list\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { BehaviorSubject, Observable, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { SimpleLabel } from \u0027../../../core/models/label.model\u0027;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LabelService } from \u0027../../../core/services/label.service\u0027;"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LoggingService } from \u0027../../../core/services/logging.service\u0027;"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":"@Component({"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" selector: \u0027app-label-filter-bar\u0027,"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" templateUrl: \u0027./label-filter-bar.component.html\u0027,"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" styleUrls: [\u0027./label-filter-bar.component.css\u0027]"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"})"},{"lineNumber":13,"author":{"gitId":"-"},"content":"export class LabelFilterBarComponent implements OnInit, AfterViewInit, OnDestroy {"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() selectedLabels: BehaviorSubject\u003cstring[]\u003e;"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() hiddenLabels: BehaviorSubject\u003cSet\u003cstring\u003e\u003e;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @ViewChild(MatSelectionList) matSelectionList;"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":" labels$: Observable\u003cSimpleLabel[]\u003e;"},{"lineNumber":19,"author":{"gitId":"-"},"content":" allLabels: SimpleLabel[];"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" selectedLabelNames: string[] \u003d [];"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":" hiddenLabelNames: Set\u003cstring\u003e \u003d new Set();"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" loaded \u003d false;"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" labelSubscription: Subscription;"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" constructor(private labelService: LabelService, private logger: LoggingService) {}"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" ngOnInit() {"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":" this.loaded \u003d false;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" this.load();"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.labels$ \u003d this.labelService.connect();"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.labels$.subscribe((labels) \u003d\u003e {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.allLabels \u003d labels;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" });"},{"lineNumber":39,"author":{"gitId":"-"},"content":" });"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" ngOnDestroy(): void {"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" this.labelSubscription?.unsubscribe();"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":" hide(label: string): void {"},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.hiddenLabelNames.has(label)) {"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" return;"},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" this.hiddenLabelNames.add(label);"},{"lineNumber":52,"author":{"gitId":"Eclipse-Dominator"},"content":" this.hiddenLabels.next(this.hiddenLabelNames);"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":54,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Show labels that were hidden */"},{"lineNumber":56,"author":{"gitId":"Eclipse-Dominator"},"content":" show(label: string): void {"},{"lineNumber":57,"author":{"gitId":"Eclipse-Dominator"},"content":" if (!this.hiddenLabelNames.has(label)) {"},{"lineNumber":58,"author":{"gitId":"Eclipse-Dominator"},"content":" return;"},{"lineNumber":59,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":60,"author":{"gitId":"Eclipse-Dominator"},"content":" this.hiddenLabelNames.delete(label);"},{"lineNumber":61,"author":{"gitId":"Eclipse-Dominator"},"content":" this.hiddenLabels.next(this.hiddenLabelNames);"},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":63,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":64,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":65,"author":{"gitId":"Eclipse-Dominator"},"content":" * chip as of the current project version consumes click events"},{"lineNumber":66,"author":{"gitId":"Eclipse-Dominator"},"content":" * this method is used as an workaround the issue."},{"lineNumber":67,"author":{"gitId":"Eclipse-Dominator"},"content":" * https://github.com/angular/components/issues/19759"},{"lineNumber":68,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":69,"author":{"gitId":"Eclipse-Dominator"},"content":" simulateClick(el: MatListOption): void {"},{"lineNumber":70,"author":{"gitId":"Eclipse-Dominator"},"content":" if (el.disabled) {"},{"lineNumber":71,"author":{"gitId":"Eclipse-Dominator"},"content":" return;"},{"lineNumber":72,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":73,"author":{"gitId":"Eclipse-Dominator"},"content":" el.toggle();"},{"lineNumber":74,"author":{"gitId":"Eclipse-Dominator"},"content":" this.selectedLabels.next(this.selectedLabelNames);"},{"lineNumber":75,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":76,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":77,"author":{"gitId":"Eclipse-Dominator"},"content":" /** loads in the labels in the repository */"},{"lineNumber":78,"author":{"gitId":"Eclipse-Dominator"},"content":" public load() {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.labelService.startPollLabels();"},{"lineNumber":80,"author":{"gitId":"Eclipse-Dominator"},"content":" this.labelSubscription \u003d this.labelService.fetchLabels().subscribe("},{"lineNumber":81,"author":{"gitId":"Eclipse-Dominator"},"content":" (response) \u003d\u003e {"},{"lineNumber":82,"author":{"gitId":"Eclipse-Dominator"},"content":" this.logger.debug(\u0027LabelFilterBarComponent: Fetched labels from Github\u0027);"},{"lineNumber":83,"author":{"gitId":"Eclipse-Dominator"},"content":" },"},{"lineNumber":84,"author":{"gitId":"Eclipse-Dominator"},"content":" (err) \u003d\u003e {},"},{"lineNumber":85,"author":{"gitId":"Eclipse-Dominator"},"content":" () \u003d\u003e {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.loaded \u003d true;"},{"lineNumber":87,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":88,"author":{"gitId":"Eclipse-Dominator"},"content":" );"},{"lineNumber":89,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":90,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":91,"author":{"gitId":"Eclipse-Dominator"},"content":" filter(filter: string, target: string): boolean {"},{"lineNumber":92,"author":{"gitId":"Eclipse-Dominator"},"content":" return !target.toLowerCase().includes(filter.toLowerCase());"},{"lineNumber":93,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" hasLabels(filter: string): boolean {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (this.allLabels \u003d\u003d\u003d undefined || this.allLabels.length \u003d\u003d\u003d 0) {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this.allLabels.some((label) \u003d\u003e !this.filter(filter, label.formattedName));"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" updateSelection(): void {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" this.selectedLabels.next(this.selectedLabelNames);"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" removeAllSelection(): void {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" this.matSelectionList.deselectAll();"},{"lineNumber":108,"author":{"gitId":"-"},"content":" this.updateSelection();"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }"},{"lineNumber":110,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":75,"-":35}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-header/issue-pr-card-header.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"span.octicon {"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-right: 8px;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" display: inline-flex;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-card-title {"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" display: flex;"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" align-items: center;"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 12px;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" text-align: left;"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" overflow: auto;"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":".column-header .mat-card-title {"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 14px;"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-card-header {"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" display: flex;"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" align-items: center;"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":" justify-content: center;"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":":host ::ng-deep .mat-card-header-text {"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 2px;"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":26}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-header/issue-pr-card-header.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003cmat-card-header\u003e"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-card-title\u003e"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cspan class\u003d\"octicon\" [octicon]\u003d\"getOcticon()\" [color]\u003d\"getIssueOpenOrCloseColor()\"\u003e\u003c/span\u003e"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" #{{ issue.id }}: {{ fitTitleText() }}"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-card-title\u003e"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003c/mat-card-header\u003e"}],"authorContributionMap":{"Eclipse-Dominator":6}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-header/issue-pr-card-header.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Component, Input } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Issue } from \u0027../../../core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" selector: \u0027app-issue-pr-card-header\u0027,"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" templateUrl: \u0027./issue-pr-card-header.component.html\u0027,"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" styleUrls: [\u0027./issue-pr-card-header.component.css\u0027]"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":"})"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":"export class IssuePrCardHeaderComponent {"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() issue: Issue;"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" constructor() {}"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" * Returns corresponding Github icon identifier for issue to display."},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":" * @returns string to create icon"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":" getOcticon() {"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" const type \u003d this.issue.issueOrPr;"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" const state \u003d this.issue.state;"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" switch (true) {"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" case type \u003d\u003d\u003d \u0027Issue\u0027 \u0026\u0026 state \u003d\u003d\u003d \u0027OPEN\u0027: {"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027issue-opened\u0027;"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" case type \u003d\u003d\u003d \u0027Issue\u0027 \u0026\u0026 state \u003d\u003d\u003d \u0027CLOSED\u0027: {"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027issue-closed\u0027;"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":" case type \u003d\u003d\u003d \u0027PullRequest\u0027 \u0026\u0026 state \u003d\u003d\u003d \u0027OPEN\u0027: {"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027git-pull-request\u0027;"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" case type \u003d\u003d\u003d \u0027PullRequest\u0027 \u0026\u0026 state \u003d\u003d\u003d \u0027CLOSED\u0027: {"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027git-pull-request-closed\u0027;"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":" case type \u003d\u003d\u003d \u0027PullRequest\u0027 \u0026\u0026 state \u003d\u003d\u003d \u0027MERGED\u0027: {"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027git-merge\u0027;"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" default: {"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027circle\u0027; // unknown type and state"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Returns status color for issue */"},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" getIssueOpenOrCloseColor() {"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.issue.state \u003d\u003d\u003d \u0027OPEN\u0027) {"},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027green\u0027;"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" } else if (this.issue.issueOrPr \u003d\u003d\u003d \u0027PullRequest\u0027 \u0026\u0026 this.issue.state \u003d\u003d\u003d \u0027CLOSED\u0027) {"},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027red\u0027;"},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":" } else {"},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027purple\u0027;"},{"lineNumber":52,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":54,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":56,"author":{"gitId":"Eclipse-Dominator"},"content":" * Formats the title text to account for those that contain long words."},{"lineNumber":57,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param title - Title of Issue that is to be displayed in the Table Row."},{"lineNumber":58,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":59,"author":{"gitId":"Eclipse-Dominator"},"content":" fitTitleText(): string {"},{"lineNumber":60,"author":{"gitId":"Eclipse-Dominator"},"content":" // Arbitrary Length of Characters beyond which an overflow occurs."},{"lineNumber":61,"author":{"gitId":"Eclipse-Dominator"},"content":" const MAX_WORD_LENGTH \u003d 43;"},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":" const SPLITTER_TEXT \u003d \u0027 \u0027;"},{"lineNumber":63,"author":{"gitId":"Eclipse-Dominator"},"content":" const ELLIPSES \u003d \u0027...\u0027;"},{"lineNumber":64,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":65,"author":{"gitId":"Eclipse-Dominator"},"content":" return this.issue.title"},{"lineNumber":66,"author":{"gitId":"Eclipse-Dominator"},"content":" .split(SPLITTER_TEXT)"},{"lineNumber":67,"author":{"gitId":"Eclipse-Dominator"},"content":" .map((word) \u003d\u003e {"},{"lineNumber":68,"author":{"gitId":"Eclipse-Dominator"},"content":" if (word.length \u003e MAX_WORD_LENGTH) {"},{"lineNumber":69,"author":{"gitId":"Eclipse-Dominator"},"content":" return word.substring(0, MAX_WORD_LENGTH - 5).concat(ELLIPSES);"},{"lineNumber":70,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":71,"author":{"gitId":"Eclipse-Dominator"},"content":" return word;"},{"lineNumber":72,"author":{"gitId":"Eclipse-Dominator"},"content":" })"},{"lineNumber":73,"author":{"gitId":"Eclipse-Dominator"},"content":" .join(SPLITTER_TEXT);"},{"lineNumber":74,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":75,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":75}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-labels/issue-pr-card-labels.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-chip {"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" border-radius: 6px;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 10px;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" padding: 11px 7px;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" min-height: 16px;"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 2px;"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":":host ::ng-deep .mat-chip-list-wrapper .mat-standard-chip,"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-chip-list-wrapper input.mat-input-element {"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 2px;"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-chip-list {"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 0;"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":16}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-labels/issue-pr-card-labels.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003cmat-chip-list aria-label\u003d\"Labels\"\u003e"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cng-container *ngFor\u003d\"let label of labels\"\u003e"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-chip *ngIf\u003d\"!labelSet?.has(label.name)\" [ngStyle]\u003d\"labelService.setLabelStyle(label.color)\" selected\u003e"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" {{ label.name }}"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-chip\u003e"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/ng-container\u003e"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003c/mat-chip-list\u003e"}],"authorContributionMap":{"Eclipse-Dominator":7}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-labels/issue-pr-card-labels.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Component, Input } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Label } from \u0027../../../core/models/label.model\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LabelService } from \u0027../../../core/services/label.service\u0027;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"@Component({"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" selector: \u0027app-issue-pr-card-labels\u0027,"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" templateUrl: \u0027./issue-pr-card-labels.component.html\u0027,"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" styleUrls: [\u0027./issue-pr-card-labels.component.css\u0027]"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":"})"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"export class IssuePrCardLabelsComponent {"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() labels: Label[];"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() labelSet: Set\u003cLabel\u003e;"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" constructor(public labelService: LabelService) {}"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":14}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-milestone/issue-pr-card-milestone.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"span.octicon-milestone {"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-right: 4px;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" display: inline-flex;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":".milestone {"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" display: inline-flex;"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-right: 8px;"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-bottom: 0px;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" margin-top: 0px;"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" align-items: center;"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":12}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-milestone/issue-pr-card-milestone.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003cdiv *ngIf\u003d\"milestone.state\" class\u003d\"milestone\"\u003e"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cspan class\u003d\"octicon-milestone\" octicon\u003d\"milestone\" color\u003d\"grey\" size\u003d\"8\"\u003e \u003c/span\u003e"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" {{ milestone.title }}"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"Eclipse-Dominator":4}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-milestone/issue-pr-card-milestone.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Component, Input } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Milestone } from \u0027../../../core/models/milestone.model\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" selector: \u0027app-issue-pr-card-milestone\u0027,"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" templateUrl: \u0027./issue-pr-card-milestone.component.html\u0027,"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" styleUrls: [\u0027./issue-pr-card-milestone.component.css\u0027]"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":"})"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":"export class IssuePrCardMilestoneComponent {"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() milestone: Milestone;"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" constructor() {}"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":13}},{"path":"src/app/shared/issue-pr-card/issue-pr-card.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":".card {"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 8px 0px 8px 0px;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-card {"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" padding: 10px;"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":".column-header {"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" justify-content: center;"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 0;"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":".border-green {"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" border-left: 2.4px solid green;"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":".border-purple {"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" border-left: 2.4px solid purple;"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":".border-red {"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" border-left: 2.4px solid red;"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-card-content {"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" display: flex;"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" align-items: center;"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 11px;"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" text-align: left;"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 0px;"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" padding: 0px;"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":".mat-card-subtitle {"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" display: flex;"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" align-items: center;"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" font-size: 11px;"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" text-align: left;"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" overflow: auto;"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" margin: 6px 0;"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":42}},{"path":"src/app/shared/issue-pr-card/issue-pr-card.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003cmat-card class\u003d\"card\" [ngClass]\u003d\"getIssueOpenOrCloseColorCSSClass()\"\u003e"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003ca class\u003d\"no-underline link-grey-dark\" (click)\u003d\"viewIssueInBrowser($event)\"\u003e"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cspan [matTooltip]\u003d\"this.issue.updated_at\"\u003e"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003capp-issue-pr-card-header [issue]\u003d\"issue\"\u003e\u003c/app-issue-pr-card-header\u003e"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cmat-card-content\u003e"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003capp-issue-pr-card-milestone [milestone]\u003d\"issue.milestone\"\u003e\u003c/app-issue-pr-card-milestone\u003e"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003capp-issue-pr-card-labels [labels]\u003d\"issue.githubLabels\" [labelSet]\u003d\"dropdownFilter?.hiddenLabels\"\u003e\u003c/app-issue-pr-card-labels\u003e"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/mat-card-content\u003e"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/span\u003e"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003c/a\u003e"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":"\u003c/mat-card\u003e"}],"authorContributionMap":{"Eclipse-Dominator":11}},{"path":"src/app/shared/issue-pr-card/issue-pr-card.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Component, Input } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { GithubService } from \u0027../../core/services/github.service\u0027;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LabelService } from \u0027../../core/services/label.service\u0027;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":"import { DropdownFilter } from \u0027../issue-tables/dropdownfilter\u0027;"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":"@Component({"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" selector: \u0027app-issue-pr-card\u0027,"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" templateUrl: \u0027./issue-pr-card.component.html\u0027,"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" styleUrls: [\u0027./issue-pr-card.component.css\u0027]"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"})"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":"export class IssuePrCardComponent {"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() issue: Issue;"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" @Input() dropdownFilter?: DropdownFilter;"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" constructor(private logger: LoggingService, private githubService: GithubService, public labelService: LabelService) {}"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Opens issue in new window */"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" viewIssueInBrowser(event: Event) {"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":" this.logger.info(`CardViewComponent: Opening Issue ${this.issue.id} on Github`);"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" this.githubService.viewIssueInBrowser(this.issue.id, event);"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" /** Returns CSS class for border color */"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":" getIssueOpenOrCloseColorCSSClass() {"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" if (this.issue.state \u003d\u003d\u003d \u0027OPEN\u0027) {"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027border-green\u0027;"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":" } else if (this.issue.issueOrPr \u003d\u003d\u003d \u0027PullRequest\u0027 \u0026\u0026 this.issue.state \u003d\u003d\u003d \u0027CLOSED\u0027) {"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027border-red\u0027;"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" } else {"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" return \u0027border-purple\u0027;"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" /**"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" * Truncates description to fit in card content."},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" * @param description - Description of Issue that is to be displayed."},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" fitDescriptionText(): string {"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" // Arbitrary Length of Characters beyond which an overflow occurs."},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" const MAX_CHARACTER_LENGTH \u003d 72;"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" const ELLIPSES \u003d \u0027...\u0027;"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" return this.issue.description.slice(0, MAX_CHARACTER_LENGTH) + ELLIPSES;"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":47}},{"path":"src/app/shared/issue-pr-card/issue-pr-card.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":"import { SharedModule } from \u0027../shared.module\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { IssuePrCardHeaderComponent } from \u0027./issue-pr-card-header/issue-pr-card-header.component\u0027;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":"import { IssuePrCardLabelsComponent } from \u0027./issue-pr-card-labels/issue-pr-card-labels.component\u0027;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"import { IssuePrCardMilestoneComponent } from \u0027./issue-pr-card-milestone/issue-pr-card-milestone.component\u0027;"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { IssuePrCardComponent } from \u0027./issue-pr-card.component\u0027;"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":"@NgModule({"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" imports: [SharedModule],"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" declarations: [IssuePrCardComponent, IssuePrCardHeaderComponent, IssuePrCardMilestoneComponent, IssuePrCardLabelsComponent],"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" exports: [IssuePrCardComponent]"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"})"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":"export class IssuesPrCardModule {}"}],"authorContributionMap":{"Eclipse-Dominator":12,"vigneshsankariyer1234567890":1}},{"path":"src/app/shared/issue-tables/IssuesDataTable.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { DataSource } from \u0027@angular/cdk/table\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":3,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { BehaviorSubject, merge, Observable, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"import { map } from \u0027rxjs/operators\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":"import { applyDropdownFilter, DEFAULT_DROPDOWN_FILTER, DropdownFilter } from \u0027./dropdownfilter\u0027;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"import { FilterableSource } from \u0027./filterableTypes\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { paginateData } from \u0027./issue-paginator\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { getSortedData } from \u0027./issue-sorter\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { applySearchFilter } from \u0027./search-filter\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":"export class IssuesDataTable extends DataSource\u003cIssue\u003e implements FilterableSource {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public count \u003d 0;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private filterChange \u003d new BehaviorSubject(\u0027\u0027);"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private dropdownFilterChange \u003d new BehaviorSubject(DEFAULT_DROPDOWN_FILTER);"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private teamFilterChange \u003d new BehaviorSubject(\u0027\u0027);"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private issuesSubject \u003d new BehaviorSubject\u003cIssue[]\u003e([]);"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private issueSubscription: Subscription;"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" public isLoading$ \u003d this.issueService.isLoading.asObservable();"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":26,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private sort: MatSort,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private paginator: MatPaginator,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private displayedColumn: string[],"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private assignee?: GithubUser,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private defaultFilter?: (issue: Issue) \u003d\u003e boolean"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" super();"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" connect(): Observable\u003cIssue[]\u003e {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return this.issuesSubject.asObservable();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" disconnect() {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.dropdownFilterChange.complete();"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.filterChange.complete();"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.teamFilterChange.complete();"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.issuesSubject.complete();"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.issueSubscription.unsubscribe();"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.issueService.stopPollIssues();"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" loadIssues() {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // If no pagination and sorting"},{"lineNumber":51,"author":{"gitId":"-"},"content":" let sortChange;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (this.sort !\u003d\u003d undefined) {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" sortChange \u003d this.sort.sortChange;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" let page;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (this.paginator !\u003d\u003d undefined) {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" page \u003d this.paginator.page;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"Eclipse-Dominator"},"content":" const displayDataChanges \u003d [this.issueService.issues$, page, sortChange, this.filterChange, this.dropdownFilterChange].filter("},{"lineNumber":62,"author":{"gitId":"Eclipse-Dominator"},"content":" (x) \u003d\u003e x !\u003d\u003d undefined"},{"lineNumber":63,"author":{"gitId":"Eclipse-Dominator"},"content":" );"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.issueService.startPollIssues();"},{"lineNumber":66,"author":{"gitId":"Eclipse-Dominator"},"content":" this.issueSubscription \u003d merge(...displayDataChanges)"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":68,"author":{"gitId":"-"},"content":" // maps each change in display value to new issue ordering or filtering"},{"lineNumber":69,"author":{"gitId":"-"},"content":" map(() \u003d\u003e {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" let data \u003d \u003cIssue[]\u003eObject.values(this.issueService.issues$.getValue()).reverse();"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (this.defaultFilter) {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" data \u003d data.filter(this.defaultFilter);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Filter by assignee of issue"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (this.assignee) {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" data \u003d data.filter((issue) \u003d\u003e {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (issue.issueOrPr \u003d\u003d\u003d \u0027PullRequest\u0027) {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return issue.author \u003d\u003d\u003d this.assignee.login;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" } else if (!issue.assignees) {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":81,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return issue.assignees.includes(this.assignee.login);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }"},{"lineNumber":84,"author":{"gitId":"-"},"content":" });"},{"lineNumber":85,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" } else {"},{"lineNumber":86,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" data \u003d data.filter((issue) \u003d\u003e {"},{"lineNumber":87,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return issue.issueOrPr !\u003d\u003d \u0027PullRequest\u0027 \u0026\u0026 issue.assignees.length \u003d\u003d\u003d 0;"},{"lineNumber":88,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // Dropdown Filters"},{"lineNumber":91,"author":{"gitId":"Eclipse-Dominator"},"content":" data \u003d data.filter(applyDropdownFilter(this.dropdownFilter));"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (this.sort !\u003d\u003d undefined) {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" data \u003d getSortedData(this.sort, data);"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":" data \u003d applySearchFilter(this.filter, this.displayedColumn, this.issueService, data);"},{"lineNumber":97,"author":{"gitId":"-"},"content":" this.count \u003d data.length;"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (this.paginator !\u003d\u003d undefined) {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" data \u003d paginateData(this.paginator, data);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return data;"},{"lineNumber":103,"author":{"gitId":"-"},"content":" })"},{"lineNumber":104,"author":{"gitId":"-"},"content":" )"},{"lineNumber":105,"author":{"gitId":"-"},"content":" .subscribe((issues) \u003d\u003e {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.issuesSubject.next(issues);"},{"lineNumber":107,"author":{"gitId":"-"},"content":" });"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":" get filter(): string {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return this.filterChange.value;"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }"},{"lineNumber":113,"author":{"gitId":"-"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":" set filter(filter: string) {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.filterChange.next(filter);"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }"},{"lineNumber":117,"author":{"gitId":"-"},"content":""},{"lineNumber":118,"author":{"gitId":"-"},"content":" get dropdownFilter(): DropdownFilter {"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return this.dropdownFilterChange.value;"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }"},{"lineNumber":121,"author":{"gitId":"-"},"content":""},{"lineNumber":122,"author":{"gitId":"-"},"content":" set dropdownFilter(filter: DropdownFilter) {"},{"lineNumber":123,"author":{"gitId":"-"},"content":" this.dropdownFilterChange.next(filter);"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":2,"Eclipse-Dominator":9,"vigneshsankariyer1234567890":4,"-":110}},{"path":"src/app/shared/issue-tables/dropdownfilter.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"export type DropdownFilter \u003d {"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" status: string;"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" type: string;"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" sort: string;"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":" labels: string[];"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" milestones: string[];"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" hiddenLabels?: Set\u003cstring\u003e;"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"};"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"export const DEFAULT_DROPDOWN_FILTER \u003d \u003cDropdownFilter\u003e{"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":" status: \u0027all\u0027,"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" type: \u0027all\u0027,"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" sort: \u0027id\u0027,"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":" labels: [],"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" milestones: []"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":"};"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":"/**"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":" * This module serves to improve separation of concerns in IssuesDataTable.ts and IssueList.ts module by containing the logic for"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" * applying dropdownFilter to the issues data table in this module."},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":" * This module exports a single function applyDropDownFilter which is called by IssueList."},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":" * This functions returns a function to check if a issue matches a dropdownfilter"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":"export function applyDropdownFilter(dropdownFilter: DropdownFilter): (a: Issue) \u003d\u003e boolean {"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":" return (issue) \u003d\u003e {"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":" let ret \u003d true;"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":" if (dropdownFilter.status \u003d\u003d\u003d \u0027open\u0027) {"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":" ret \u003d ret \u0026\u0026 issue.state \u003d\u003d\u003d \u0027OPEN\u0027;"},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":" } else if (dropdownFilter.status \u003d\u003d\u003d \u0027closed\u0027) {"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" // there is apparently also a status called \u0027all\u0027 based on github api"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" ret \u003d ret \u0026\u0026 issue.state \u003d\u003d\u003d \u0027CLOSED\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" } else if (dropdownFilter.status \u003d\u003d\u003d \u0027merged\u0027) {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ret \u003d ret \u0026\u0026 issue.state \u003d\u003d\u003d \u0027MERGED\u0027;"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" if (dropdownFilter.type \u003d\u003d\u003d \u0027issue\u0027) {"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" ret \u003d ret \u0026\u0026 issue.issueOrPr \u003d\u003d\u003d \u0027Issue\u0027;"},{"lineNumber":41,"author":{"gitId":"Eclipse-Dominator"},"content":" } else if (dropdownFilter.type \u003d\u003d\u003d \u0027pullrequest\u0027) {"},{"lineNumber":42,"author":{"gitId":"Eclipse-Dominator"},"content":" ret \u003d ret \u0026\u0026 issue.issueOrPr \u003d\u003d\u003d \u0027PullRequest\u0027;"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" ret \u003d ret \u0026\u0026 dropdownFilter.milestones.some((milestone) \u003d\u003e issue.milestone.number \u003d\u003d\u003d milestone);"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":" return ret \u0026\u0026 dropdownFilter.labels.every((label) \u003d\u003e issue.labels.includes(label));"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" };"},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":47,"-":2}},{"path":"src/app/shared/issue-tables/filterableTypes.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Eclipse-Dominator"},"content":"import { DropdownFilter } from \u0027./dropdownfilter\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"/**"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":" * This module aims to abstract out classes that can be filtered"},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":"/**"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" * FilterableSource is an interface that contains a source that can be filtered"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" * by a string filter or dropdownFilter."},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" * The source should set filter and dropdownFilter as a getter and setter"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":" * and applies the filter when these variables are changed."},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":"export interface FilterableSource {"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":" filter: string;"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" dropdownFilter: DropdownFilter;"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":"/**"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":" * FilterComponent is a component that contains a FilterableSource"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":" */"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":"export interface FilterableComponent {"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":" retrieveFilterable: () \u003d\u003e FilterableSource;"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":23}},{"path":"src/app/shared/issue-tables/issue-paginator.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"export function paginateData(paginator: MatPaginator, data: Issue[]): Issue[] {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" paginator.length \u003d data.length;"},{"lineNumber":6,"author":{"gitId":"-"},"content":" let result \u003d getDataForPage(paginator.pageIndex, paginator.pageSize, data);"},{"lineNumber":7,"author":{"gitId":"-"},"content":" if (result.length \u003d\u003d\u003d 0) {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" paginator.pageIndex -\u003d 1;"},{"lineNumber":9,"author":{"gitId":"-"},"content":" result \u003d getDataForPage(paginator.pageIndex, paginator.pageSize, data);"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }"},{"lineNumber":11,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"function getDataForPage(pageIndex: number, pageSize: number, data: Issue[]): Issue[] {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" const startIndex \u003d pageIndex * pageSize;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return data.splice(startIndex, pageSize);"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":16}},{"path":"src/app/shared/issue-tables/issue-sorter.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import * as moment from \u0027moment\u0027;"},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"export function getSortedData(sort: MatSort, data: Issue[]): Issue[] {"},{"lineNumber":6,"author":{"gitId":"-"},"content":" if (!sort.active) {"},{"lineNumber":7,"author":{"gitId":"-"},"content":" return data;"},{"lineNumber":8,"author":{"gitId":"-"},"content":" }"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":" const direction: number \u003d sort.direction \u003d\u003d\u003d \u0027asc\u0027 ? 1 : -1;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":" return data.sort((a, b) \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" switch (sort.active) {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" case \u0027assignees\u0027:"},{"lineNumber":15,"author":{"gitId":"-"},"content":" return direction * compareByStringValue(a.assignees.join(\u0027, \u0027), b.assignees.join(\u0027, \u0027));"},{"lineNumber":16,"author":{"gitId":"-"},"content":" case \u0027id\u0027:"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return direction * compareByIntegerValue(a.id, b.id);"},{"lineNumber":18,"author":{"gitId":"-"},"content":" case \u0027date\u0027:"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return direction * compareByDateValue(a.updated_at, b.updated_at);"},{"lineNumber":20,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // title, responseTag are string values"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return direction * compareByStringValue(a[sort.active], b[sort.active]);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }"},{"lineNumber":24,"author":{"gitId":"-"},"content":" });"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":"function compareByStringValue(valueA: string, valueB: string): number {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" const orderA \u003d String(valueA || \u0027\u0027).toUpperCase();"},{"lineNumber":29,"author":{"gitId":"-"},"content":" const orderB \u003d String(valueB || \u0027\u0027).toUpperCase();"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return orderA \u003c orderB ? -1 : 1;"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":"function compareByIntegerValue(valueA: number, valueB: number): number {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return valueA \u003c valueB ? -1 : 1;"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":"function compareByDateValue(valueA: string, valueB: string): number {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return moment(valueA).isBefore(valueB) ? -1 : 1;"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"Eclipse-Dominator":1,"-":37}},{"path":"src/app/shared/issue-tables/search-filter.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027./issue-tables-columns\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * This module serves to improve separation of concerns in IssuesDataTable.ts module by containing the logic for"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * applying search filter to the issues data table in this module."},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":" * This module exports a 2 function applySearchFilter and searchFilter"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":" * SearchFilter returns a function to test if an Issue matches"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":" * applySearchFilter applies searchfilter to a list of issues."},{"lineNumber":11,"author":{"gitId":"-"},"content":" */"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":"export function searchFilter(filter: string, displayedColumn: string[]): (a: Issue) \u003d\u003e boolean {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" const searchKey \u003d filter.toLowerCase();"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":" return (issue: Issue) \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" for (const column of displayedColumn) {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" switch (column) {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" case TABLE_COLUMNS.LABEL:"},{"lineNumber":19,"author":{"gitId":"-"},"content":" if (matchesLabel(issue.labels, searchKey)) {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }"},{"lineNumber":22,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" case TABLE_COLUMNS.ASSIGNEE:"},{"lineNumber":24,"author":{"gitId":"-"},"content":" if (matchesAssignee(issue.assignees, searchKey)) {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }"},{"lineNumber":27,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":29,"author":{"gitId":"-"},"content":" if (matchesOtherColumns(issue, column, searchKey)) {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }"},{"lineNumber":32,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":36,"author":{"gitId":"Eclipse-Dominator"},"content":" };"},{"lineNumber":37,"author":{"gitId":"Eclipse-Dominator"},"content":"}"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":"export function applySearchFilter(filter: string, displayedColumn: string[], issueService: IssueService, data: Issue[]): Issue[] {"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" const result \u003d data.slice().filter(searchFilter(filter, displayedColumn));"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":"function containsSearchKey(item: string, searchKey: string): boolean {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return item.indexOf(searchKey) !\u003d\u003d -1;"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":"function matchesAssignee(assignees: string[], searchKey: string): boolean {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" for (const assignee of assignees) {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" const lowerCaseAssignee \u003d assignee.toLowerCase();"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (containsSearchKey(lowerCaseAssignee, searchKey)) {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":"function matchesLabel(labels: string[], searchKey: string): boolean {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" for (const label of labels) {"},{"lineNumber":59,"author":{"gitId":"-"},"content":" const lowerCaseLabel \u003d label.toLowerCase();"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (containsSearchKey(lowerCaseLabel, searchKey)) {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":"function matchesOtherColumns(issue: Issue, column: string, searchKey: string): boolean {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" const searchStr \u003d String(issue[column]).toLowerCase();"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return containsSearchKey(searchStr, searchKey);"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":11,"-":58}},{"path":"src/app/shared/label-definition-popup/label-definition-popup.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { DomSanitizer } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * The LabelDefinitionPopupComponent is responsible for rendering the UserDialog"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * to show the definition of the corresponding label."},{"lineNumber":8,"author":{"gitId":"-"},"content":" */"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-label-definition-popup\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./label-definition-popup.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./label-definition-popup.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class LabelDefinitionPopupComponent {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" labelName: string;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" labelDefinitionHtmlTemplate;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // Injection of a reference to Dialog from the Service that it is to be"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // displayed in."},{"lineNumber":20,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":21,"author":{"gitId":"-"},"content":" public dialogRef: MatDialogRef\u003cLabelDefinitionPopupComponent\u003e,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Inject(MAT_DIALOG_DATA) public data,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private _sanitizer: DomSanitizer"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.labelName \u003d data.header;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // since we only display HTML fetched from our own source, we can safely bypass the sanitization of HTML"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.labelDefinitionHtmlTemplate \u003d _sanitizer.bypassSecurityTrustHtml(data.body);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Closes the dialog."},{"lineNumber":32,"author":{"gitId":"-"},"content":" */"},{"lineNumber":33,"author":{"gitId":"-"},"content":" onNoClick(): void {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.dialogRef.close(false);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":35}},{"path":"src/app/shared/layout/header.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cmat-toolbar color\u003d\"primary\" style\u003d\"position: sticky; position: -webkit-sticky; top: 0; z-index: 1000\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":3,"author":{"gitId":"-"},"content":" *ngIf\u003d\"isBackButtonShown()\""},{"lineNumber":4,"author":{"gitId":"-"},"content":" mat-icon-button"},{"lineNumber":5,"author":{"gitId":"-"},"content":" class\u003d\"mat-toolbar mat-primary back-button\""},{"lineNumber":6,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.9)\""},{"lineNumber":7,"author":{"gitId":"-"},"content":" (click)\u003d\"goBack()\""},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003earrow_back_ios\u003c/mat-icon\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003ca class\u003d\"mat-toolbar mat-primary\" style\u003d\"text-decoration: none\" [routerLink]\u003d\"phaseService.currentPhase\""},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003eWATcher v{{ this.getVersion() }}\u003c/a"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"phase-descriptor\" *ngIf\u003d\"auth.isAuthenticated()\" style\u003d\"margin-left: 10px\"\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" ({{ this.getPhaseDescription(phaseService.currentPhase) }})"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 this.phaseService.sessionData.sessionRepo.length \u003e 1\"\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cbutton mat-button [matMenuTriggerFor]\u003d\"menu\"\u003e\u003cmat-icon style\u003d\"color: white\"\u003eexpand_more\u003c/mat-icon\u003e\u003c/button\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cmat-menu #menu\u003d\"matMenu\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":22,"author":{"gitId":"-"},"content":" mat-menu-item"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let sessionRepo of this.phaseService.sessionData.sessionRepo\""},{"lineNumber":24,"author":{"gitId":"-"},"content":" (click)\u003d\"this.routeToSelectedPhase(sessionRepo.phase)\""},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cspan\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cmat-icon [ngStyle]\u003d\"{ color: \u0027green\u0027, visibility: this.phaseService.currentPhase \u003d\u003d\u003d sessionRepo.phase ? \u0027visible\u0027 : \u0027hidden\u0027 }\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003edone\u003c/mat-icon"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" {{ this.getPhaseDescription(sessionRepo.phase) }}"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/mat-menu\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"cheehongw"},"content":" \u003c!-- everything else --\u003e"},{"lineNumber":37,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"flex: 1 1 auto\"\u003e\u003c/span\u003e"},{"lineNumber":39,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":40,"author":{"gitId":"cheehongw"},"content":" \u003cdiv *ngIf\u003d\"auth.isAuthenticated()\"\u003e"},{"lineNumber":41,"author":{"gitId":"cheehongw"},"content":" \u003cspan id\u003d\"phase-descriptor\" style\u003d\"margin-left: 10px\"\u003e"},{"lineNumber":42,"author":{"gitId":"cheehongw"},"content":" {{ this.currentRepo }}"},{"lineNumber":43,"author":{"gitId":"cheehongw"},"content":" \u003c/span\u003e"},{"lineNumber":44,"author":{"gitId":"cheehongw"},"content":" \u003cbutton mat-button matTooltip\u003d\"Change Repository\" (click)\u003d\"this.openChangeRepoDialog()\"\u003e"},{"lineNumber":45,"author":{"gitId":"cheehongw"},"content":" \u003cmat-icon\u003eedit\u003c/mat-icon\u003e"},{"lineNumber":46,"author":{"gitId":"cheehongw"},"content":" \u003c/button\u003e"},{"lineNumber":47,"author":{"gitId":"cheehongw"},"content":" \u003c/div\u003e"},{"lineNumber":48,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"flex: 1 1 auto\"\u003e\u003c/span\u003e"},{"lineNumber":50,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cbutton mat-button matTooltip\u003d\"Download WATcher Log\" (click)\u003d\"this.exportLogFile()\"\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003ereceipt\u003c/mat-icon\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cbutton mat-button matTooltip\u003d\"Give feedback about WATcher\" (click)\u003d\"openIssueTracker()\"\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003email\u003c/mat-icon\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":59,"author":{"gitId":"-"},"content":" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 isOpenUrlButtonShown()\""},{"lineNumber":60,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":61,"author":{"gitId":"-"},"content":" matTooltip\u003d\"View current page on GitHub\""},{"lineNumber":62,"author":{"gitId":"-"},"content":" (click)\u003d\"viewBrowser()\""},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eopen_in_new\u003c/mat-icon\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"sync-spinner\" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 (this.isLoading$ | async); else notLoading\"\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003cmat-spinner class\u003d\"white-spinner\" [diameter]\u003d\"20\"\u003e\u003c/mat-spinner\u003e"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u003cng-template #notLoading\u003e"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":73,"author":{"gitId":"-"},"content":" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 isReloadButtonShown() \u0026\u0026 !this.isReloadButtonDisabled\""},{"lineNumber":74,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":75,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Synchronize with Github data\""},{"lineNumber":76,"author":{"gitId":"-"},"content":" (click)\u003d\"reload()\""},{"lineNumber":77,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Sync"},{"lineNumber":79,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003erefresh\u003c/mat-icon\u003e"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"sync-spinner\" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 isReloadButtonShown() \u0026\u0026 this.isReloadButtonDisabled\"\u003e"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"font-size: 14px; margin-right: 7px\"\u003eSync\u003c/span\u003e"},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u003cmat-spinner class\u003d\"white-spinner\" [diameter]\u003d\"20\"\u003e\u003c/mat-spinner\u003e"},{"lineNumber":84,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":" \u003c/ng-template\u003e"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003cbutton *ngIf\u003d\"auth.isAuthenticated()\" mat-button matTooltip\u003d\"Log out\" (click)\u003d\"openLogOutDialog(); $event.stopPropagation()\"\u003e"},{"lineNumber":88,"author":{"gitId":"-"},"content":" ({{ userService.currentUser.loginId }})"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cmat-icon style\u003d\"margin-left: 2px\"\u003eexit_to_app\u003c/mat-icon\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003c/mat-toolbar\u003e"}],"authorContributionMap":{"-":78,"cheehongw":13}},{"path":"src/app/shared/layout/header.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Location } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Component, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Router, RoutesRecognized } from \u0027@angular/router\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { filter, pairwise, switchMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../core/models/phase.model\u0027;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Repo } from \u0027../../core/models/repo.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027../../core/services/auth.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../core/services/dialog.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../core/services/github.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../core/services/label.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { PhaseDescription, PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../core/services/user.service\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"const ISSUE_TRACKER_URL \u003d \u0027https://github.com/CATcher-org/WATcher/issues\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":23,"author":{"gitId":"-"},"content":" selector: \u0027app-layout-header\u0027,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" templateUrl: \u0027./header.component.html\u0027"},{"lineNumber":25,"author":{"gitId":"-"},"content":"})"},{"lineNumber":26,"author":{"gitId":"-"},"content":"export class HeaderComponent implements OnInit {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private prevUrl;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" isReloadButtonDisabled \u003d false;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ISSUE_FILTER \u003d \u0027/issues?q\u003dis:issue+is:all\u0027; // the filtered list must be an issue and must be open"},{"lineNumber":30,"author":{"gitId":"-"},"content":" TUTORIAL_LABEL \u003d \u0027+label:tutorial.\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" TEAM_LABEL \u003d \u0027+label:team.\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" EXCLUDE_DUPLICATE \u003d \u0027+-label:duplicate\u0027; // exclude duplicate issues"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" public isLoading$: Observable\u003cboolean\u003e;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" // Messages for the modal popup window upon logging out"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private readonly logOutDialogMessages \u003d [\u0027Do you wish to log out?\u0027];"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private readonly yesButtonDialogMessage \u003d \u0027Yes, I wish to log out\u0027;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private readonly noButtonDialogMessage \u003d \"No, I don\u0027t wish to log out\";"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"cheehongw"},"content":" /** Model for the displayed repository name */"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" currentRepo \u003d \u0027\u0027;"},{"lineNumber":43,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":45,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public auth: AuthService,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public phaseService: PhaseService,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public userService: UserService,"},{"lineNumber":49,"author":{"gitId":"cheehongw"},"content":" public logger: LoggingService,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private location: Location,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private labelService: LabelService,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private dialogService: DialogService"},{"lineNumber":57,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" router.events"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":60,"author":{"gitId":"-"},"content":" filter((e: any) \u003d\u003e e instanceof RoutesRecognized),"},{"lineNumber":61,"author":{"gitId":"-"},"content":" pairwise()"},{"lineNumber":62,"author":{"gitId":"-"},"content":" )"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .subscribe((e) \u003d\u003e {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.prevUrl \u003d e[0].urlAfterRedirects;"},{"lineNumber":65,"author":{"gitId":"-"},"content":" });"},{"lineNumber":66,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":67,"author":{"gitId":"Eclipse-Dominator"},"content":" this.auth.currentAuthState.subscribe((authState) \u003d\u003e {"},{"lineNumber":68,"author":{"gitId":"cheehongw"},"content":" if (auth.isAuthenticated()) {"},{"lineNumber":69,"author":{"gitId":"cheehongw"},"content":" this.initializeRepoNameInTitle();"},{"lineNumber":70,"author":{"gitId":"Eclipse-Dominator"},"content":" }"},{"lineNumber":71,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":72,"author":{"gitId":"-"},"content":""},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.isLoading$ \u003d this.issueService.isLoading.asObservable();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Replaces and resets the current phase data and routes the app to the"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * newly selected phase."},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param openPhase - Open Phase that is selected by the user."},{"lineNumber":82,"author":{"gitId":"-"},"content":" */"},{"lineNumber":83,"author":{"gitId":"-"},"content":" routeToSelectedPhase(openPhase: string): void {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // Do nothing if the selected phase is the current phase."},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (this.phaseService.currentPhase \u003d\u003d\u003d Phase[openPhase]) {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" // Replace Current Phase Data."},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.phaseService.changePhase(Phase[openPhase]);"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Remove current phase issues and load selected phase issues."},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.githubService.reset();"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.issueService.reset(false);"},{"lineNumber":95,"author":{"gitId":"-"},"content":" this.labelService.reset();"},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.reload();"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" // Route app to new phase."},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.router.navigateByUrl(this.phaseService.currentPhase);"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" isBackButtonShown(): boolean {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return `/${this.phaseService.currentPhase}` !\u003d\u003d this.router.url \u0026\u0026 this.router.url !\u003d\u003d \u0027/\u0027 \u0026\u0026 !this.router.url.startsWith(\u0027/?code\u0027);"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" isReloadButtonShown(): boolean {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return this.router.url !\u003d\u003d \u0027/phaseBugReporting/issues/new\u0027;"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":" isOpenUrlButtonShown(): boolean {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return this.phaseService.currentPhase \u003d\u003d\u003d Phase.issuesViewer || this.phaseService.currentPhase \u003d\u003d\u003d Phase.activityDashboard;"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }"},{"lineNumber":113,"author":{"gitId":"-"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":" getVersion(): string {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return AppConfig.version;"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }"},{"lineNumber":117,"author":{"gitId":"-"},"content":""},{"lineNumber":118,"author":{"gitId":"-"},"content":" getPhaseDescription(openPhase: string): string {"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return PhaseDescription[openPhase];"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }"},{"lineNumber":121,"author":{"gitId":"-"},"content":""},{"lineNumber":122,"author":{"gitId":"-"},"content":" goBack() {"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (this.prevUrl \u003d\u003d\u003d `/${this.phaseService.currentPhase}/issues/new`) {"},{"lineNumber":124,"author":{"gitId":"-"},"content":" this.router.navigateByUrl(this.phaseService.currentPhase);"},{"lineNumber":125,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":126,"author":{"gitId":"-"},"content":" this.location.back();"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":" viewBrowser() {"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (this.phaseService.currentPhase \u003d\u003d\u003d Phase.activityDashboard) {"},{"lineNumber":132,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.open(`https://github.com/${this.phaseService.currentRepo.owner}/${this.phaseService.currentRepo.name}/pulse`);"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }"},{"lineNumber":135,"author":{"gitId":"-"},"content":""},{"lineNumber":136,"author":{"gitId":"-"},"content":" const routerUrl \u003d this.router.url.substring(1); // remove the first \u0027/\u0027 from string"},{"lineNumber":137,"author":{"gitId":"-"},"content":" const issueUrlIndex \u003d routerUrl.indexOf(\u0027/\u0027); // find the index of second \u0027/\u0027"},{"lineNumber":138,"author":{"gitId":"-"},"content":" let issueUrl: string;"},{"lineNumber":139,"author":{"gitId":"-"},"content":""},{"lineNumber":140,"author":{"gitId":"-"},"content":" // If can\u0027t find the index of second \u0027/\u0027, then router is at the /issues (table list) page"},{"lineNumber":141,"author":{"gitId":"-"},"content":" if (issueUrlIndex \u003c 0) {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // Apply filters to the issueUrl"},{"lineNumber":143,"author":{"gitId":"-"},"content":" issueUrl \u003d this.ISSUE_FILTER;"},{"lineNumber":144,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // issueUrl will be from the second \u0027/\u0027"},{"lineNumber":146,"author":{"gitId":"-"},"content":" issueUrl \u003d routerUrl.substring(issueUrlIndex);"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // Open the url in user\u0027s preferred browser"},{"lineNumber":149,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.open(\u0027https://github.com/\u0027.concat(this.githubService.getRepoURL()).concat(issueUrl));"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }"},{"lineNumber":151,"author":{"gitId":"-"},"content":""},{"lineNumber":152,"author":{"gitId":"-"},"content":" openIssueTracker() {"},{"lineNumber":153,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" window.open(ISSUE_TRACKER_URL);"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }"},{"lineNumber":155,"author":{"gitId":"-"},"content":""},{"lineNumber":156,"author":{"gitId":"-"},"content":" reload() {"},{"lineNumber":157,"author":{"gitId":"-"},"content":" this.isReloadButtonDisabled \u003d true;"},{"lineNumber":158,"author":{"gitId":"-"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":" this.githubEventService.reloadPage().subscribe("},{"lineNumber":160,"author":{"gitId":"-"},"content":" (success) \u003d\u003e success,"},{"lineNumber":161,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":162,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error, () \u003d\u003e this.githubEventService.reloadPage());"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }"},{"lineNumber":164,"author":{"gitId":"-"},"content":" );"},{"lineNumber":165,"author":{"gitId":"-"},"content":""},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.labelService.fetchLabels().subscribe("},{"lineNumber":167,"author":{"gitId":"-"},"content":" (success) \u003d\u003e success,"},{"lineNumber":168,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error, () \u003d\u003e this.labelService.fetchLabels());"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }"},{"lineNumber":171,"author":{"gitId":"-"},"content":" );"},{"lineNumber":172,"author":{"gitId":"-"},"content":""},{"lineNumber":173,"author":{"gitId":"-"},"content":" // Prevent user from spamming the reload button"},{"lineNumber":174,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.isReloadButtonDisabled \u003d false;"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }, 3000);"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }"},{"lineNumber":178,"author":{"gitId":"-"},"content":""},{"lineNumber":179,"author":{"gitId":"-"},"content":" logOut() {"},{"lineNumber":180,"author":{"gitId":"-"},"content":" this.auth.logOut();"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }"},{"lineNumber":182,"author":{"gitId":"-"},"content":""},{"lineNumber":183,"author":{"gitId":"-"},"content":" openLogOutDialog() {"},{"lineNumber":184,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openUserConfirmationModal("},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.logOutDialogMessages,"},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.yesButtonDialogMessage,"},{"lineNumber":187,"author":{"gitId":"-"},"content":" this.noButtonDialogMessage"},{"lineNumber":188,"author":{"gitId":"-"},"content":" );"},{"lineNumber":189,"author":{"gitId":"-"},"content":""},{"lineNumber":190,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (res) {"},{"lineNumber":192,"author":{"gitId":"cheehongw"},"content":" this.logger.info(`HeaderComponent: Logging out from ${this.userService.currentUser.loginId}`);"},{"lineNumber":193,"author":{"gitId":"-"},"content":" this.logOut();"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }"},{"lineNumber":195,"author":{"gitId":"-"},"content":" });"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }"},{"lineNumber":197,"author":{"gitId":"-"},"content":""},{"lineNumber":198,"author":{"gitId":"-"},"content":" exportLogFile() {"},{"lineNumber":199,"author":{"gitId":"cheehongw"},"content":" this.logger.exportLogFile();"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }"},{"lineNumber":201,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":202,"author":{"gitId":"cheehongw"},"content":" initializeRepoNameInTitle() {"},{"lineNumber":203,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" if (Repo.isInvalidRepoName(this.phaseService.currentRepo)) {"},{"lineNumber":204,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" return;"},{"lineNumber":205,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }"},{"lineNumber":206,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const currentRepoString \u003d this.phaseService.currentRepo.toString();"},{"lineNumber":207,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.logger.info(`HeaderComponent: initializing current repository name as ${currentRepoString}`);"},{"lineNumber":208,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.currentRepo \u003d currentRepoString;"},{"lineNumber":209,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":210,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":211,"author":{"gitId":"cheehongw"},"content":" /**"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Change repository viewed on Issue Dashboard, if a valid repository is provided."},{"lineNumber":213,"author":{"gitId":"cheehongw"},"content":" */"},{"lineNumber":214,"author":{"gitId":"-"},"content":" changeRepositoryIfValid(repo: Repo, newRepoString: string) {"},{"lineNumber":215,"author":{"gitId":"Eclipse-Dominator"},"content":" this.phaseService"},{"lineNumber":216,"author":{"gitId":"Eclipse-Dominator"},"content":" .changeRepositoryIfValid(repo)"},{"lineNumber":217,"author":{"gitId":"-"},"content":" .then(() \u003d\u003e {"},{"lineNumber":218,"author":{"gitId":"-"},"content":" this.auth.setTitleWithPhaseDetail();"},{"lineNumber":219,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" this.currentRepo \u003d newRepoString;"},{"lineNumber":220,"author":{"gitId":"-"},"content":" })"},{"lineNumber":221,"author":{"gitId":"-"},"content":" .catch((error) \u003d\u003e this.errorHandlingService.handleError(error));"},{"lineNumber":222,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":223,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":224,"author":{"gitId":"cheehongw"},"content":" openChangeRepoDialog() {"},{"lineNumber":225,"author":{"gitId":"cheehongw"},"content":" const dialogRef \u003d this.dialogService.openChangeRepoDialog(this.currentRepo);"},{"lineNumber":226,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":227,"author":{"gitId":"Eclipse-Dominator"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":228,"author":{"gitId":"cheehongw"},"content":" if (!res) {"},{"lineNumber":229,"author":{"gitId":"cheehongw"},"content":" return;"},{"lineNumber":230,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":231,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const newRepo \u003d Repo.of(res);"},{"lineNumber":232,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":233,"author":{"gitId":"-"},"content":" this.changeRepositoryIfValid(newRepo, res);"},{"lineNumber":234,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Eclipse-Dominator":7,"vigneshsankariyer1234567890":13,"-":193,"cheehongw":23}},{"path":"src/app/shared/material.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { DragDropModule } from \u0027@angular/cdk/drag-drop\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ScrollingModule } from \u0027@angular/cdk/scrolling\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { CdkTableModule } from \u0027@angular/cdk/table\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { CdkTreeModule } from \u0027@angular/cdk/tree\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatAutocompleteModule } from \u0027@angular/material/autocomplete\u0027;"},{"lineNumber":8,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatBadgeModule } from \u0027@angular/material/badge\u0027;"},{"lineNumber":9,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatBottomSheetModule } from \u0027@angular/material/bottom-sheet\u0027;"},{"lineNumber":10,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatButtonModule } from \u0027@angular/material/button\u0027;"},{"lineNumber":11,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatButtonToggleModule } from \u0027@angular/material/button-toggle\u0027;"},{"lineNumber":12,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatCardModule } from \u0027@angular/material/card\u0027;"},{"lineNumber":13,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatCheckboxModule } from \u0027@angular/material/checkbox\u0027;"},{"lineNumber":14,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatChipsModule } from \u0027@angular/material/chips\u0027;"},{"lineNumber":15,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatNativeDateModule, MatRippleModule } from \u0027@angular/material/core\u0027;"},{"lineNumber":16,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDatepickerModule } from \u0027@angular/material/datepicker\u0027;"},{"lineNumber":17,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDialogModule } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":18,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDividerModule } from \u0027@angular/material/divider\u0027;"},{"lineNumber":19,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatExpansionModule } from \u0027@angular/material/expansion\u0027;"},{"lineNumber":20,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatGridListModule } from \u0027@angular/material/grid-list\u0027;"},{"lineNumber":21,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatIconModule } from \u0027@angular/material/icon\u0027;"},{"lineNumber":22,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatInputModule } from \u0027@angular/material/input\u0027;"},{"lineNumber":23,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatListModule } from \u0027@angular/material/list\u0027;"},{"lineNumber":24,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatMenuModule } from \u0027@angular/material/menu\u0027;"},{"lineNumber":25,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatPaginatorModule } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":26,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatProgressBarModule } from \u0027@angular/material/progress-bar\u0027;"},{"lineNumber":27,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatProgressSpinnerModule } from \u0027@angular/material/progress-spinner\u0027;"},{"lineNumber":28,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatRadioModule } from \u0027@angular/material/radio\u0027;"},{"lineNumber":29,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSelectModule } from \u0027@angular/material/select\u0027;"},{"lineNumber":30,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSidenavModule } from \u0027@angular/material/sidenav\u0027;"},{"lineNumber":31,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSlideToggleModule } from \u0027@angular/material/slide-toggle\u0027;"},{"lineNumber":32,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSliderModule } from \u0027@angular/material/slider\u0027;"},{"lineNumber":33,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSnackBarModule } from \u0027@angular/material/snack-bar\u0027;"},{"lineNumber":34,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSortModule } from \u0027@angular/material/sort\u0027;"},{"lineNumber":35,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatStepperModule } from \u0027@angular/material/stepper\u0027;"},{"lineNumber":36,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatTableModule } from \u0027@angular/material/table\u0027;"},{"lineNumber":37,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatTabsModule } from \u0027@angular/material/tabs\u0027;"},{"lineNumber":38,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatToolbarModule } from \u0027@angular/material/toolbar\u0027;"},{"lineNumber":39,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatTooltipModule } from \u0027@angular/material/tooltip\u0027;"},{"lineNumber":40,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatTreeModule } from \u0027@angular/material/tree\u0027;"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exports: ["},{"lineNumber":44,"author":{"gitId":"-"},"content":" CdkTableModule,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" CdkTreeModule,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" DragDropModule,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" MatAutocompleteModule,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" MatBadgeModule,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" MatBottomSheetModule,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" MatButtonModule,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" MatButtonToggleModule,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" MatCardModule,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" MatCheckboxModule,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" MatChipsModule,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" MatStepperModule,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" MatDatepickerModule,"},{"lineNumber":57,"author":{"gitId":"-"},"content":" MatDialogModule,"},{"lineNumber":58,"author":{"gitId":"-"},"content":" MatDividerModule,"},{"lineNumber":59,"author":{"gitId":"-"},"content":" MatExpansionModule,"},{"lineNumber":60,"author":{"gitId":"-"},"content":" MatGridListModule,"},{"lineNumber":61,"author":{"gitId":"-"},"content":" MatIconModule,"},{"lineNumber":62,"author":{"gitId":"-"},"content":" MatInputModule,"},{"lineNumber":63,"author":{"gitId":"-"},"content":" MatListModule,"},{"lineNumber":64,"author":{"gitId":"-"},"content":" MatMenuModule,"},{"lineNumber":65,"author":{"gitId":"-"},"content":" MatNativeDateModule,"},{"lineNumber":66,"author":{"gitId":"-"},"content":" MatPaginatorModule,"},{"lineNumber":67,"author":{"gitId":"-"},"content":" MatProgressBarModule,"},{"lineNumber":68,"author":{"gitId":"-"},"content":" MatProgressSpinnerModule,"},{"lineNumber":69,"author":{"gitId":"-"},"content":" MatRadioModule,"},{"lineNumber":70,"author":{"gitId":"-"},"content":" MatRippleModule,"},{"lineNumber":71,"author":{"gitId":"-"},"content":" MatSelectModule,"},{"lineNumber":72,"author":{"gitId":"-"},"content":" MatSidenavModule,"},{"lineNumber":73,"author":{"gitId":"-"},"content":" MatSliderModule,"},{"lineNumber":74,"author":{"gitId":"-"},"content":" MatSlideToggleModule,"},{"lineNumber":75,"author":{"gitId":"-"},"content":" MatSnackBarModule,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" MatSortModule,"},{"lineNumber":77,"author":{"gitId":"-"},"content":" MatTableModule,"},{"lineNumber":78,"author":{"gitId":"-"},"content":" MatTabsModule,"},{"lineNumber":79,"author":{"gitId":"-"},"content":" MatToolbarModule,"},{"lineNumber":80,"author":{"gitId":"-"},"content":" MatTooltipModule,"},{"lineNumber":81,"author":{"gitId":"-"},"content":" MatTreeModule,"},{"lineNumber":82,"author":{"gitId":"-"},"content":" ScrollingModule"},{"lineNumber":83,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":84,"author":{"gitId":"-"},"content":"})"},{"lineNumber":85,"author":{"gitId":"-"},"content":"export class MaterialModule {}"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":"/** Copyright 2018 Google Inc. All Rights Reserved."},{"lineNumber":88,"author":{"gitId":"-"},"content":" Use of this source code is governed by an MIT-style license that"},{"lineNumber":89,"author":{"gitId":"-"},"content":" can be found in the LICENSE file at http://angular.io/license */"}],"authorContributionMap":{"Echomo-Xinyu":34,"-":55}},{"path":"src/app/shared/repo-change-form/repo-change-form.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"cheehongw"},"content":".change-repo-form-title {"},{"lineNumber":2,"author":{"gitId":"cheehongw"},"content":" width: 100%;"},{"lineNumber":3,"author":{"gitId":"cheehongw"},"content":"}"},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":5,"author":{"gitId":"cheehongw"},"content":".mat-dialog-content {"},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":" width: 100%;"},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":"}"},{"lineNumber":8,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":9,"author":{"gitId":"cheehongw"},"content":".mat-form-field {"},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":" width: 100%;"},{"lineNumber":11,"author":{"gitId":"cheehongw"},"content":"}"},{"lineNumber":12,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":13,"author":{"gitId":"cheehongw"},"content":".mat-dialog-actions {"},{"lineNumber":14,"author":{"gitId":"cheehongw"},"content":" justify-content: flex-end;"},{"lineNumber":15,"author":{"gitId":"cheehongw"},"content":"}"}],"authorContributionMap":{"cheehongw":15}},{"path":"src/app/shared/repo-change-form/repo-change-form.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"cheehongw"},"content":"\u003ch1 mat-dialog-title class\u003d\"change-repo-form-title\"\u003eChange repository\u003c/h1\u003e"},{"lineNumber":2,"author":{"gitId":"cheehongw"},"content":"\u003cdiv mat-dialog-content\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cform (ngSubmit)\u003d\"onYesClick()\"\u003e"},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":" \u003cmat-form-field appearance\u003d\"fill\"\u003e"},{"lineNumber":5,"author":{"gitId":"cheehongw"},"content":" \u003cmat-label\u003eRepository Location (Org/Repo)\u003c/mat-label\u003e"},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cinput matInput [(ngModel)]\u003d\"this.repoName\" [formControl]\u003d\"repoChangeForm\" [matAutocomplete]\u003d\"auto\" /\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003cmat-autocomplete #auto\u003d\"matAutocomplete\"\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cmat-option *ngFor\u003d\"let suggestion of filteredSuggestions | async\" [value]\u003d\"suggestion\"\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" {{ suggestion }}"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c/mat-option\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003c/mat-autocomplete\u003e"},{"lineNumber":12,"author":{"gitId":"cheehongw"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/form\u003e"},{"lineNumber":14,"author":{"gitId":"cheehongw"},"content":"\u003c/div\u003e"},{"lineNumber":15,"author":{"gitId":"cheehongw"},"content":"\u003cdiv mat-dialog-actions\u003e"},{"lineNumber":16,"author":{"gitId":"cheehongw"},"content":" \u003cbutton mat-button (click)\u003d\"onNoClick()\" color\u003d\"warn\"\u003eCancel\u003c/button\u003e"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":" \u003cbutton mat-button (click)\u003d\"onYesClick()\" color\u003d\"primary\"\u003eChange Repo\u003c/button\u003e"},{"lineNumber":18,"author":{"gitId":"cheehongw"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"Eclipse-Dominator":2,"-":7,"cheehongw":9}},{"path":"src/app/shared/repo-change-form/repo-change-form.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Inject, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FormControl } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatDialogRef, MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { RepoUrlCacheService } from \u0027../../core/services/repo-url-cache.service\u0027;"},{"lineNumber":6,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":7,"author":{"gitId":"cheehongw"},"content":"@Component({"},{"lineNumber":8,"author":{"gitId":"cheehongw"},"content":" selector: \u0027app-repo-change-form\u0027,"},{"lineNumber":9,"author":{"gitId":"cheehongw"},"content":" templateUrl: \u0027./repo-change-form.component.html\u0027,"},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":" styleUrls: [\u0027./repo-change-form.component.css\u0027]"},{"lineNumber":11,"author":{"gitId":"cheehongw"},"content":"})"},{"lineNumber":12,"author":{"gitId":"-"},"content":"export class RepoChangeFormComponent implements OnInit {"},{"lineNumber":13,"author":{"gitId":"Echomo-Xinyu"},"content":" public repoName: String;"},{"lineNumber":14,"author":{"gitId":"-"},"content":" filteredSuggestions: Observable\u003cstring[]\u003e;"},{"lineNumber":15,"author":{"gitId":"-"},"content":" repoChangeForm \u003d new FormControl();"},{"lineNumber":16,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":18,"author":{"gitId":"-"},"content":" public dialogRef: MatDialogRef\u003cRepoChangeFormComponent\u003e,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private repoUrlCacheService: RepoUrlCacheService,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Inject(MAT_DIALOG_DATA) public data"},{"lineNumber":21,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":22,"author":{"gitId":"cheehongw"},"content":" this.repoName \u003d data.repoName;"},{"lineNumber":23,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":24,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.initRepoChangeForm();"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" private initRepoChangeForm() {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.filteredSuggestions \u003d this.repoUrlCacheService.getFilteredSuggestions(this.repoChangeForm);"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"cheehongw"},"content":" onYesClick(): void {"},{"lineNumber":34,"author":{"gitId":"cheehongw"},"content":" this.dialogRef.close(this.repoName);"},{"lineNumber":35,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":36,"author":{"gitId":"cheehongw"},"content":""},{"lineNumber":37,"author":{"gitId":"cheehongw"},"content":" onNoClick(): void {"},{"lineNumber":38,"author":{"gitId":"cheehongw"},"content":" this.dialogRef.close(false);"},{"lineNumber":39,"author":{"gitId":"cheehongw"},"content":" }"},{"lineNumber":40,"author":{"gitId":"cheehongw"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":2,"-":20,"cheehongw":18}},{"path":"tests/app/auth/confirm-login/confirm-login.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { async, ComponentFixture, TestBed } from \u0027@angular/core/testing\u0027;"},{"lineNumber":2,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ConfirmLoginComponent } from \u0027../../../../src/app/auth/confirm-login/confirm-login.component\u0027;"},{"lineNumber":5,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { Repo } from \u0027../../../../src/app/core/models/repo.model\u0027;"},{"lineNumber":6,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { User, UserRole } from \u0027../../../../src/app/core/models/user.model\u0027;"},{"lineNumber":7,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { AuthService } from \u0027../../../../src/app/core/services/auth.service\u0027;"},{"lineNumber":8,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { ErrorHandlingService } from \u0027../../../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":9,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { GithubService } from \u0027../../../../src/app/core/services/github.service\u0027;"},{"lineNumber":10,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { GithubEventService } from \u0027../../../../src/app/core/services/githubevent.service\u0027;"},{"lineNumber":11,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { LoggingService } from \u0027../../../../src/app/core/services/logging.service\u0027;"},{"lineNumber":12,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { PhaseService } from \u0027../../../../src/app/core/services/phase.service\u0027;"},{"lineNumber":13,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"import { UserService } from \u0027../../../../src/app/core/services/user.service\u0027;"},{"lineNumber":14,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":15,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"const mockUser: User \u003d {"},{"lineNumber":16,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" loginId: \u0027Mock User\u0027,"},{"lineNumber":17,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" role: UserRole.Student"},{"lineNumber":18,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"};"},{"lineNumber":19,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":20,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"const getRepoWithValidName \u003d () \u003d\u003e new Repo(\u0027mock\u0027, \u0027repo\u0027);"},{"lineNumber":21,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":22,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"describe(\u0027ConfirmLoginComponent\u0027, () \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let authService: jasmine.SpyObj\u003cAuthService\u003e;"},{"lineNumber":24,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let phaseService: jasmine.SpyObj\u003cPhaseService\u003e;"},{"lineNumber":25,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let userService: jasmine.SpyObj\u003cUserService\u003e;"},{"lineNumber":26,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let errorHandlingService: jasmine.SpyObj\u003cErrorHandlingService\u003e;"},{"lineNumber":27,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let githubEventService: jasmine.SpyObj\u003cGithubEventService\u003e;"},{"lineNumber":28,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let logger: jasmine.SpyObj\u003cLoggingService\u003e;"},{"lineNumber":29,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let router: jasmine.SpyObj\u003cRouter\u003e;"},{"lineNumber":30,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let githubService: jasmine.SpyObj\u003cGithubService\u003e;"},{"lineNumber":31,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let component: ConfirmLoginComponent;"},{"lineNumber":32,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" let fixture: ComponentFixture\u003cConfirmLoginComponent\u003e;"},{"lineNumber":33,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":34,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" beforeEach(async(() \u003d\u003e {"},{"lineNumber":35,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" authService \u003d jasmine.createSpyObj\u003cAuthService\u003e(\u0027AuthService\u0027, [\u0027changeAuthState\u0027, \u0027setTitleWithPhaseDetail\u0027, \u0027startOAuthProcess\u0027]);"},{"lineNumber":36,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" phaseService \u003d jasmine.createSpyObj\u003cPhaseService\u003e(\u0027PhaseService\u0027, [\u0027initializeCurrentRepository\u0027, \u0027currentRepo\u0027]);"},{"lineNumber":37,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger \u003d jasmine.createSpyObj\u003cLoggingService\u003e(\u0027LoggingService\u0027, [\u0027info\u0027]);"},{"lineNumber":38,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" userService \u003d jasmine.createSpyObj\u003cUserService\u003e(\u0027UserService\u0027, [\u0027createUserModel\u0027]);"},{"lineNumber":39,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" githubService \u003d jasmine.createSpyObj\u003cGithubService\u003e(\u0027GithubService\u0027, [\u0027isRepositoryPresent\u0027]);"},{"lineNumber":40,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" githubEventService \u003d jasmine.createSpyObj\u003cGithubEventService\u003e(\u0027GithubEventService\u0027, [\u0027setLatestChangeEvent\u0027]);"},{"lineNumber":41,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" router \u003d jasmine.createSpyObj\u003cRouter\u003e(\u0027Router\u0027, [\u0027navigateByUrl\u0027]);"},{"lineNumber":42,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" errorHandlingService \u003d jasmine.createSpyObj\u003cErrorHandlingService\u003e(\u0027ErrorHandlingService\u0027, [\u0027handleError\u0027]);"},{"lineNumber":43,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":44,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" TestBed.configureTestingModule({"},{"lineNumber":45,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" providers: ["},{"lineNumber":46,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: AuthService, useValue: authService },"},{"lineNumber":47,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: PhaseService, useValue: phaseService },"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: LoggingService, useValue: logger },"},{"lineNumber":49,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: UserService, useValue: userService },"},{"lineNumber":50,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: GithubService, useValue: githubService },"},{"lineNumber":51,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: GithubEventService, useValue: githubEventService },"},{"lineNumber":52,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: Router, useValue: router },"},{"lineNumber":53,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" { provide: ErrorHandlingService, useValue: errorHandlingService }"},{"lineNumber":54,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" ],"},{"lineNumber":55,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" declarations: [ConfirmLoginComponent]"},{"lineNumber":56,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }).compileComponents();"},{"lineNumber":57,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":58,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" fixture \u003d TestBed.createComponent(ConfirmLoginComponent);"},{"lineNumber":59,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" component \u003d fixture.componentInstance;"},{"lineNumber":60,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" fixture.detectChanges();"},{"lineNumber":61,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" }));"},{"lineNumber":62,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":63,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should create\u0027, () \u003d\u003e {"},{"lineNumber":64,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(component).toBeTruthy();"},{"lineNumber":65,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":66,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":67,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" it(\u0027should complete login process with valid repo\u0027, () \u003d\u003e {"},{"lineNumber":68,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" userService.createUserModel.and.returnValue(of(mockUser));"},{"lineNumber":69,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" phaseService.currentRepo \u003d getRepoWithValidName();"},{"lineNumber":70,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" githubService.isRepositoryPresent.and.returnValue(of(true));"},{"lineNumber":71,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":72,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" component.completeLoginProcess();"},{"lineNumber":73,"author":{"gitId":"vigneshsankariyer1234567890"},"content":""},{"lineNumber":74,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(authService.changeAuthState).toHaveBeenCalled();"},{"lineNumber":75,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(phaseService.initializeCurrentRepository).toHaveBeenCalled();"},{"lineNumber":76,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(logger.info).toHaveBeenCalled();"},{"lineNumber":77,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(userService.createUserModel).toHaveBeenCalled();"},{"lineNumber":78,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(githubService.isRepositoryPresent).toHaveBeenCalled();"},{"lineNumber":79,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(githubEventService.setLatestChangeEvent).toHaveBeenCalled();"},{"lineNumber":80,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" expect(component.handleAuthSuccess).toHaveBeenCalledTimes(2);"},{"lineNumber":81,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" });"},{"lineNumber":82,"author":{"gitId":"vigneshsankariyer1234567890"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":82}},{"path":"tests/app/core/models/session-model.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":3,"author":{"gitId":"-"},"content":" assertSessionDataIntegrity,"},{"lineNumber":4,"author":{"gitId":"-"},"content":" NO_ACCESSIBLE_PHASES,"},{"lineNumber":5,"author":{"gitId":"-"},"content":" NO_VALID_OPEN_PHASES,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" OPENED_PHASE_REPO_UNDEFINED,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" SESSION_DATA_MISSING_OPENPHASES_KEY,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" SESSION_DATA_UNAVAILABLE"},{"lineNumber":9,"author":{"gitId":"-"},"content":"} from \u0027../../../../src/app/core/models/session.model\u0027;"},{"lineNumber":10,"author":{"gitId":"cheehongw"},"content":"import { BUG_REPORTING_PHASE_SESSION_DATA } from \u0027../../../constants/session.constants\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"describe(\u0027Session Model\u0027, () \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" describe(\u0027assertSessionDataIntegrity()\u0027, () \u003d\u003e {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" it(\u0027should throw error on unavailable session\u0027, () \u003d\u003e {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" of(undefined)"},{"lineNumber":16,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":17,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":19,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(SESSION_DATA_UNAVAILABLE))"},{"lineNumber":20,"author":{"gitId":"-"},"content":" });"},{"lineNumber":21,"author":{"gitId":"-"},"content":" });"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" it(\u0027should throw error on session data with missing crucial values\u0027, () \u003d\u003e {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" of({ dummyKey: undefined })"},{"lineNumber":25,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":26,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":27,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":28,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(SESSION_DATA_MISSING_OPENPHASES_KEY))"},{"lineNumber":29,"author":{"gitId":"-"},"content":" });"},{"lineNumber":30,"author":{"gitId":"-"},"content":" });"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" it(\u0027should throw error on session with no open phases\u0027, () \u003d\u003e {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" of(NO_OPEN_PHASES_SESSION_DATA)"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":36,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":37,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(NO_ACCESSIBLE_PHASES))"},{"lineNumber":38,"author":{"gitId":"-"},"content":" });"},{"lineNumber":39,"author":{"gitId":"-"},"content":" });"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" it(\u0027should throw error on session data with invalid open phases\u0027, () \u003d\u003e {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" of({ ...BUG_REPORTING_PHASE_SESSION_DATA, openPhases: [\u0027unknownPhase\u0027] })"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":45,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":46,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(NO_VALID_OPEN_PHASES))"},{"lineNumber":47,"author":{"gitId":"-"},"content":" });"},{"lineNumber":48,"author":{"gitId":"-"},"content":" });"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" it(\u0027should throw error on session data with undefined repo for open phase\u0027, () \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" of({ ...BUG_REPORTING_PHASE_SESSION_DATA, phaseBugReporting: undefined })"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":54,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":55,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":56,"author":{"gitId":"-"},"content":" });"},{"lineNumber":57,"author":{"gitId":"-"},"content":" of({ ...BUG_REPORTING_PHASE_SESSION_DATA, phaseBugReporting: null })"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":60,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":61,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":62,"author":{"gitId":"-"},"content":" });"},{"lineNumber":63,"author":{"gitId":"-"},"content":" of({ ...BUG_REPORTING_PHASE_SESSION_DATA, phaseBugReporting: \u0027\u0027 })"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":66,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":67,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":68,"author":{"gitId":"-"},"content":" });"},{"lineNumber":69,"author":{"gitId":"-"},"content":" });"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" it(\u0027should not throw error if session data contains repo information of unopened phases\u0027, () \u003d\u003e {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" of(BUG_REPORTING_PHASE_SESSION_DATA)"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":75,"author":{"gitId":"-"},"content":" next: (el) \u003d\u003e expect(el).toEqual(BUG_REPORTING_PHASE_SESSION_DATA),"},{"lineNumber":76,"author":{"gitId":"-"},"content":" error: () \u003d\u003e fail()"},{"lineNumber":77,"author":{"gitId":"-"},"content":" });"},{"lineNumber":78,"author":{"gitId":"-"},"content":" });"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" it(\u0027should pass valid session data\u0027, () \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" of(BUG_REPORTING_PHASE_SESSION_DATA)"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .subscribe((el) \u003d\u003e expect(el).toEqual(BUG_REPORTING_PHASE_SESSION_DATA));"},{"lineNumber":84,"author":{"gitId":"-"},"content":" });"},{"lineNumber":85,"author":{"gitId":"-"},"content":" });"},{"lineNumber":86,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"-":85,"cheehongw":1}},{"path":"tests/app/issues-viewer/label-filter-bar/label-filter-bar.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Echomo-Xinyu"},"content":"import { ComponentFixture, TestBed, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":2,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":3,"author":{"gitId":"Eclipse-Dominator"},"content":"import { LabelFilterBarComponent } from \u0027../../../../src/app/issues-viewer/label-filter-bar/label-filter-bar.component\u0027;"},{"lineNumber":4,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":5,"author":{"gitId":"Eclipse-Dominator"},"content":"// const dummyDataLabels: simplifiedLabel[] \u003d ["},{"lineNumber":6,"author":{"gitId":"Eclipse-Dominator"},"content":"// {"},{"lineNumber":7,"author":{"gitId":"Eclipse-Dominator"},"content":"// name: \u0027dummy1\u0027,"},{"lineNumber":8,"author":{"gitId":"Eclipse-Dominator"},"content":"// color: \u0027#2A6478\u0027"},{"lineNumber":9,"author":{"gitId":"Eclipse-Dominator"},"content":"// },"},{"lineNumber":10,"author":{"gitId":"Eclipse-Dominator"},"content":"// {"},{"lineNumber":11,"author":{"gitId":"Eclipse-Dominator"},"content":"// name: \u0027dummy2\u0027,"},{"lineNumber":12,"author":{"gitId":"Eclipse-Dominator"},"content":"// color: \u0027#705335\u0027"},{"lineNumber":13,"author":{"gitId":"Eclipse-Dominator"},"content":"// },"},{"lineNumber":14,"author":{"gitId":"Eclipse-Dominator"},"content":"// {"},{"lineNumber":15,"author":{"gitId":"Eclipse-Dominator"},"content":"// name: \u0027dummy3\u0027,"},{"lineNumber":16,"author":{"gitId":"Eclipse-Dominator"},"content":"// color: \u0027#6D3F5B\u0027"},{"lineNumber":17,"author":{"gitId":"Eclipse-Dominator"},"content":"// },"},{"lineNumber":18,"author":{"gitId":"Eclipse-Dominator"},"content":"// {"},{"lineNumber":19,"author":{"gitId":"Eclipse-Dominator"},"content":"// name: \u0027dummy4\u0027,"},{"lineNumber":20,"author":{"gitId":"Eclipse-Dominator"},"content":"// color: \u0027#587246\u0027"},{"lineNumber":21,"author":{"gitId":"Eclipse-Dominator"},"content":"// },"},{"lineNumber":22,"author":{"gitId":"Eclipse-Dominator"},"content":"// {"},{"lineNumber":23,"author":{"gitId":"Eclipse-Dominator"},"content":"// name: \u0027dummy5\u0027,"},{"lineNumber":24,"author":{"gitId":"Eclipse-Dominator"},"content":"// color: \u0027#FF7514\u0027"},{"lineNumber":25,"author":{"gitId":"Eclipse-Dominator"},"content":"// },"},{"lineNumber":26,"author":{"gitId":"Eclipse-Dominator"},"content":"// {"},{"lineNumber":27,"author":{"gitId":"Eclipse-Dominator"},"content":"// name: \u0027dummy6\u0027,"},{"lineNumber":28,"author":{"gitId":"Eclipse-Dominator"},"content":"// color: \u0027#1D334A\u0027"},{"lineNumber":29,"author":{"gitId":"Eclipse-Dominator"},"content":"// }"},{"lineNumber":30,"author":{"gitId":"Eclipse-Dominator"},"content":"// ];"},{"lineNumber":31,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":32,"author":{"gitId":"Eclipse-Dominator"},"content":"describe(\u0027LabelFilterBarComponent\u0027, () \u003d\u003e {"},{"lineNumber":33,"author":{"gitId":"Eclipse-Dominator"},"content":" let component: LabelFilterBarComponent;"},{"lineNumber":34,"author":{"gitId":"Eclipse-Dominator"},"content":" let fixture: ComponentFixture\u003cLabelFilterBarComponent\u003e;"},{"lineNumber":35,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":36,"author":{"gitId":"Echomo-Xinyu"},"content":" beforeEach("},{"lineNumber":37,"author":{"gitId":"Echomo-Xinyu"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":38,"author":{"gitId":"Eclipse-Dominator"},"content":" TestBed.configureTestingModule({"},{"lineNumber":39,"author":{"gitId":"Eclipse-Dominator"},"content":" declarations: [LabelFilterBarComponent]"},{"lineNumber":40,"author":{"gitId":"Eclipse-Dominator"},"content":" }).compileComponents();"},{"lineNumber":41,"author":{"gitId":"Echomo-Xinyu"},"content":" })"},{"lineNumber":42,"author":{"gitId":"Echomo-Xinyu"},"content":" );"},{"lineNumber":43,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":44,"author":{"gitId":"Eclipse-Dominator"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":45,"author":{"gitId":"Eclipse-Dominator"},"content":" fixture \u003d TestBed.createComponent(LabelFilterBarComponent);"},{"lineNumber":46,"author":{"gitId":"Eclipse-Dominator"},"content":" component \u003d fixture.componentInstance;"},{"lineNumber":47,"author":{"gitId":"Eclipse-Dominator"},"content":" fixture.detectChanges();"},{"lineNumber":48,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":49,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":50,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027should create\u0027, () \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"Eclipse-Dominator"},"content":" expect(component).toBeTruthy();"},{"lineNumber":52,"author":{"gitId":"Eclipse-Dominator"},"content":" console.log(component);"},{"lineNumber":53,"author":{"gitId":"Eclipse-Dominator"},"content":" });"},{"lineNumber":54,"author":{"gitId":"Eclipse-Dominator"},"content":""},{"lineNumber":55,"author":{"gitId":"Eclipse-Dominator"},"content":" it(\u0027can filter for labels containing the search key\u0027, () \u003d\u003e {});"},{"lineNumber":56,"author":{"gitId":"Eclipse-Dominator"},"content":"});"}],"authorContributionMap":{"Echomo-Xinyu":5,"Eclipse-Dominator":51}},{"path":"tests/app/shared/issue-tables/issue-paginator.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { paginateData } from \u0027../../../../src/app/shared/issue-tables/issue-paginator\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { TEAM_4 } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":6,"author":{"gitId":"-"},"content":" ISSUE_WITH_ASSIGNEES,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY"},{"lineNumber":10,"author":{"gitId":"-"},"content":"} from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"describe(\u0027issue-paginator\u0027, () \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" describe(\u0027paginateData()\u0027, () \u003d\u003e {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" let dataSet_7: Issue[];"},{"lineNumber":15,"author":{"gitId":"-"},"content":" let paginator: MatPaginator;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" const dummyTeam \u003d TEAM_4;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" const mediumSeverityIssueWithResponse: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":18,"author":{"gitId":"-"},"content":" const mediumSeverityIssueWithAssigneee: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_ASSIGNEES, dummyTeam);"},{"lineNumber":19,"author":{"gitId":"-"},"content":" const lowSeverityFeatureFlawIssue: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY, dummyTeam);"},{"lineNumber":20,"author":{"gitId":"-"},"content":" const highSeverityDocumentationBugIssue: Issue \u003d Issue.createPhaseTeamResponseIssue("},{"lineNumber":21,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" dummyTeam"},{"lineNumber":23,"author":{"gitId":"-"},"content":" );"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" dataSet_7 \u003d ["},{"lineNumber":27,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":30,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":31,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":33,"author":{"gitId":"-"},"content":" highSeverityDocumentationBugIssue"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":35,"author":{"gitId":"-"},"content":" paginator \u003d { pageSize: 3 } as MatPaginator;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" });"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" it(\u0027should set the length of paginator to the length of data\u0027, () \u003d\u003e {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" paginateData(paginator, dataSet_7);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" expect(paginator.length).toEqual(7);"},{"lineNumber":41,"author":{"gitId":"-"},"content":" });"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" it(\u0027should return list of issues according to page index\u0027, () \u003d\u003e {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" paginator.pageIndex \u003d 0;"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Returns issues index 0 to 2"},{"lineNumber":47,"author":{"gitId":"-"},"content":" const returnedList \u003d paginateData(paginator, dataSet_7);"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expect(returnedList).toEqual([mediumSeverityIssueWithResponse, mediumSeverityIssueWithAssigneee, lowSeverityFeatureFlawIssue]);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" });"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" it(\u0027should return list of issues in the previous page if there are no issues on the current page\u0027, () \u003d\u003e {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" paginator.pageIndex \u003d 3;"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Returns issues index 6 on page 2"},{"lineNumber":55,"author":{"gitId":"-"},"content":" const returnedList \u003d paginateData(paginator, dataSet_7);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" expect(returnedList).toEqual([highSeverityDocumentationBugIssue]);"},{"lineNumber":57,"author":{"gitId":"-"},"content":" });"},{"lineNumber":58,"author":{"gitId":"-"},"content":" });"},{"lineNumber":59,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":58}},{"path":"tests/app/shared/issue-tables/issue-sorter.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Echomo-Xinyu"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { getSortedData } from \u0027../../../../src/app/shared/issue-tables/issue-sorter\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { TEAM_4 } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { ISSUE_PENDING_MODERATION, ISSUE_WITH_ASSIGNEES, ISSUE_WITH_EMPTY_DESCRIPTION } from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"describe(\u0027issuer-sorter\u0027, () \u003d\u003e {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" describe(\u0027getSortedData()\u0027, () \u003d\u003e {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" const dummyTeam \u003d TEAM_4;"},{"lineNumber":10,"author":{"gitId":"-"},"content":" const dummyIssue: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":11,"author":{"gitId":"-"},"content":" const otherDummyIssue: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_ASSIGNEES, dummyTeam);"},{"lineNumber":12,"author":{"gitId":"-"},"content":" const issuesList: Issue[] \u003d [dummyIssue, otherDummyIssue];"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":" const moderationIssue: Issue \u003d Issue.createPhaseModerationIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" const otherModerationIssue: Issue \u003d Issue.createPhaseModerationIssue(ISSUE_PENDING_MODERATION, dummyTeam);"},{"lineNumber":16,"author":{"gitId":"-"},"content":" const todoIssuesList: Issue[] \u003d [moderationIssue, otherModerationIssue];"},{"lineNumber":17,"author":{"gitId":"-"},"content":" const matSort: MatSort \u003d new MatSort();"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" it(\u0027sorts issues based on their assignees correctly\u0027, () \u003d\u003e {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027assignees\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" const sortedIssuesByAssigneesAsc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByAssigneesAsc, dummyIssue, otherDummyIssue);"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" const sortedIssuesByAssigneesDesc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByAssigneesDesc, otherDummyIssue, dummyIssue);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" });"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" it(\u0027sorts issues based on their string fields correctly\u0027, () \u003d\u003e {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027title\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" const sortedIssuesByTitleAsc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByTitleAsc, dummyIssue, otherDummyIssue);"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" const sortedIssuesByTitleDesc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByTitleDesc, otherDummyIssue, dummyIssue);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" });"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" it(\u0027sorts issues based on their integer fields correctly\u0027, () \u003d\u003e {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027id\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" const sortedIssuedByIdAsc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuedByIdAsc, otherDummyIssue, dummyIssue);"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" const sortedIssuedByIdDesc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuedByIdDesc, dummyIssue, otherDummyIssue);"},{"lineNumber":50,"author":{"gitId":"-"},"content":" });"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" it(\u0027sorts issues based on their todos left correctly\u0027, () \u003d\u003e {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027Todo Remaining\u0027;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":55,"author":{"gitId":"-"},"content":" const sortedIssuesByTodoAsc \u003d getSortedData(matSort, todoIssuesList);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByTodoAsc, otherModerationIssue, moderationIssue);"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" const sortedIssuesByTodoDesc \u003d getSortedData(matSort, todoIssuesList);"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByTodoDesc, moderationIssue, otherModerationIssue);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" });"},{"lineNumber":62,"author":{"gitId":"-"},"content":" });"},{"lineNumber":63,"author":{"gitId":"-"},"content":"});"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * This helper method helps to check if the sorted issues are in their"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * correct order based on the variable arguments provided."},{"lineNumber":68,"author":{"gitId":"-"},"content":" */"},{"lineNumber":69,"author":{"gitId":"-"},"content":"function assertOrder(sortedIssues: Issue[], ...expectedSortedIssues: Issue[]) {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c sortedIssues.length; i++) {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expect(sortedIssues[i].id).toBe(expectedSortedIssues[i].id);"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":72}},{"path":"tests/app/shared/issue-tables/search-filter.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Team } from \u0027../../../../src/app/core/models/team.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027../../../../src/app/shared/issue-tables/issue-tables-columns\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { applySearchFilter } from \u0027../../../../src/app/shared/issue-tables/search-filter\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { USER_ANUBHAV } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" DUPLICATED_ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" ISSUE_WITH_ASSIGNEES,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY"},{"lineNumber":13,"author":{"gitId":"-"},"content":"} from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"describe(\u0027search-filter\u0027, () \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" describe(\u0027applySearchFilter()\u0027, () \u003d\u003e {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" const dummyTeam: Team \u003d new Team({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" id: \u0027dummyId\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" teamMembers: []"},{"lineNumber":20,"author":{"gitId":"-"},"content":" });"},{"lineNumber":21,"author":{"gitId":"-"},"content":" let searchKey: string;"},{"lineNumber":22,"author":{"gitId":"-"},"content":" const mediumSeverityIssueWithResponse: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION, dummyTeam);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse.responseTag \u003d \u0027Accepted\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" const mediumSeverityIssueWithAssigneee: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_ASSIGNEES, dummyTeam);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" const lowSeverityFeatureFlawIssue: Issue \u003d Issue.createPhaseTeamResponseIssue(ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY, dummyTeam);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" const highSeverityDocumentationBugIssue: Issue \u003d Issue.createPhaseTeamResponseIssue("},{"lineNumber":27,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" dummyTeam"},{"lineNumber":29,"author":{"gitId":"-"},"content":" );"},{"lineNumber":30,"author":{"gitId":"-"},"content":" const duplicatedIssue: Issue \u003d Issue.createPhaseTeamResponseIssue(DUPLICATED_ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY, dummyTeam);"},{"lineNumber":31,"author":{"gitId":"-"},"content":" duplicatedIssue.duplicateOf \u003d highSeverityDocumentationBugIssue.id;"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" const issuesList: Issue[] \u003d ["},{"lineNumber":34,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" highSeverityDocumentationBugIssue"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":39,"author":{"gitId":"-"},"content":" const displayedColumns: string[] \u003d ["},{"lineNumber":40,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.ID,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.TITLE,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.TYPE,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.SEVERITY,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.RESPONSE,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.ASSIGNEE,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" TABLE_COLUMNS.DUPLICATED_ISSUES"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":48,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" const issueService: IssueService \u003d new IssueService(null, null, null);"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(mediumSeverityIssueWithResponse);"},{"lineNumber":52,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(mediumSeverityIssueWithAssigneee);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(lowSeverityFeatureFlawIssue);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(highSeverityDocumentationBugIssue);"},{"lineNumber":55,"author":{"gitId":"-"},"content":" issueService.updateLocalStore(duplicatedIssue);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" });"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":" it(\u0027can filter for issues which are assigned to a specific user\u0027, () \u003d\u003e {"},{"lineNumber":59,"author":{"gitId":"-"},"content":" searchKey \u003d USER_ANUBHAV.loginId;"},{"lineNumber":60,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithAssigneee]);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" });"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" it(\u0027can filter for an issue by the id of its duplicate issues\u0027, () \u003d\u003e {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" searchKey \u003d duplicatedIssue.id.toString();"},{"lineNumber":65,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([highSeverityDocumentationBugIssue]);"},{"lineNumber":66,"author":{"gitId":"-"},"content":" });"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" it(\u0027can filter for issues that contain the search key in any other column\u0027, () \u003d\u003e {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Search by id of issue"},{"lineNumber":70,"author":{"gitId":"-"},"content":" searchKey \u003d mediumSeverityIssueWithResponse.id.toString();"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithResponse]);"},{"lineNumber":72,"author":{"gitId":"-"},"content":""},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Search by title of issue"},{"lineNumber":74,"author":{"gitId":"-"},"content":" searchKey \u003d mediumSeverityIssueWithAssigneee.title;"},{"lineNumber":75,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithAssigneee]);"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":" // Search by type of issue"},{"lineNumber":78,"author":{"gitId":"-"},"content":" searchKey \u003d highSeverityDocumentationBugIssue.type;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([highSeverityDocumentationBugIssue]);"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Search by severity of issue"},{"lineNumber":82,"author":{"gitId":"-"},"content":" searchKey \u003d lowSeverityFeatureFlawIssue.severity;"},{"lineNumber":83,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([lowSeverityFeatureFlawIssue]);"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" // Search by response of issue"},{"lineNumber":86,"author":{"gitId":"-"},"content":" searchKey \u003d mediumSeverityIssueWithResponse.responseTag;"},{"lineNumber":87,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithResponse]);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" });"},{"lineNumber":89,"author":{"gitId":"-"},"content":" });"},{"lineNumber":90,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":89}},{"path":"tests/constants/label.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Label } from \u0027../../src/app/core/models/label.model\u0027;"},{"lineNumber":2,"author":{"gitId":"Echomo-Xinyu"},"content":"import { LabelService, LABEL_DEFINITIONS } from \u0027../../src/app/core/services/label.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"// Label name constants"},{"lineNumber":5,"author":{"gitId":"-"},"content":"export const SEVERITY_VERY_LOW \u003d \u0027Very Low\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"export const SEVERITY_LOW \u003d \u0027Low\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"export const SEVERITY_MEDIUM \u003d \u0027Medium\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"export const SEVERITY_HIGH \u003d \u0027High\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"export const TYPE_DOCUMENTATION_BUG \u003d \u0027DocumentationBug\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"export const TYPE_FUNCTIONALITY_BUG \u003d \u0027FunctionalityBug\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"export const TYPE_FEATURE_FLAW \u003d \u0027FeatureFlaw\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"export const RESPONSE_ACCEPTED \u003d \u0027Accepted\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"export const RESPONSE_REJECTED \u003d \u0027Rejected\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"export const RESPONSE_ISSUE_UNCLEAR \u003d \u0027IssueUnclear\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export const RESPONSE_CANNOT_REPRODUCE \u003d \u0027CannotReproduce\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"export const STATUS_DONE \u003d \u0027Done\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"export const STATUS_INCOMPLETE \u003d \u0027Incomplete\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"// Label category constants"},{"lineNumber":20,"author":{"gitId":"-"},"content":"export const SEVERITY \u003d \u0027severity\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"export const TYPE \u003d \u0027type\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"export const RESPONSE \u003d \u0027response\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"export const STATUS \u003d \u0027status\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"// Label color constants"},{"lineNumber":26,"author":{"gitId":"-"},"content":"export const COLOR_BLACK \u003d \u0027000000\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"export const COLOR_WHITE \u003d \u0027ffffff\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_VERY_LOW \u003d \u0027ffe0e0\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_LOW \u003d \u0027ffcccc\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_MEDIUM \u003d \u0027ff9999\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_HIGH \u003d \u0027ff6666\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"export const COLOR_TYPE_DOCUMENTATION_BUG \u003d \u0027d966ff\u0027;"},{"lineNumber":33,"author":{"gitId":"-"},"content":"export const COLOR_TYPE_FUNCTIONALITY_BUG \u003d \u00279900cc\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":"export const COLOR_RESPONSE_ACCEPTED \u003d \u002700802b\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":"export const COLOR_RESPONSE_REJECTED \u003d \u0027ff9900\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":"export const COLOR_RESPONSE_ISSUE_UNCLEAR \u003d \u0027ffcc80\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":"export const COLOR_RESPONSE_CANNOT_REPRODUCE \u003d \u0027ffebcc\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":"export const COLOR_STATUS_DONE \u003d \u0027a6a6a6\u0027;"},{"lineNumber":39,"author":{"gitId":"-"},"content":"export const COLOR_STATUS_INCOMPLETE \u003d \u0027000000\u0027;"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"export const CSS_BORDER_RADIUS_3PX \u003d \u00273px\u0027;"},{"lineNumber":42,"author":{"gitId":"-"},"content":"export const CSS_CURSOR_DEFAULT \u003d \u0027default\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":"export const CSS_PADDING_3PX \u003d \u00273px\u0027;"},{"lineNumber":44,"author":{"gitId":"-"},"content":"export const CSS_FONT_WEIGHT_410 \u003d \u0027410\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":"export const CSS_DISPLAY_INLINE_FLEX \u003d \u0027inline-flex\u0027;"},{"lineNumber":46,"author":{"gitId":"-"},"content":"export const CSS_DISPLAY_INLINE_BLOCK \u003d \u0027inline-block\u0027;"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":"// CSS style constants"},{"lineNumber":49,"author":{"gitId":"-"},"content":"export const DARK_BG_LIGHT_TEXT \u003d {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${COLOR_BLACK}`,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u0027border-radius\u0027: CSS_BORDER_RADIUS_3PX,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" cursor: CSS_CURSOR_DEFAULT,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" padding: CSS_PADDING_3PX,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" color: `#${COLOR_WHITE}`,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u0027font-weight\u0027: CSS_FONT_WEIGHT_410,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" display: CSS_DISPLAY_INLINE_FLEX"},{"lineNumber":57,"author":{"gitId":"-"},"content":"};"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":"export const LIGHT_BG_DARK_TEXT \u003d {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${COLOR_WHITE}`,"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u0027border-radius\u0027: CSS_BORDER_RADIUS_3PX,"},{"lineNumber":62,"author":{"gitId":"-"},"content":" cursor: CSS_CURSOR_DEFAULT,"},{"lineNumber":63,"author":{"gitId":"-"},"content":" padding: CSS_PADDING_3PX,"},{"lineNumber":64,"author":{"gitId":"-"},"content":" color: `#${COLOR_BLACK}`,"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0027font-weight\u0027: CSS_FONT_WEIGHT_410,"},{"lineNumber":66,"author":{"gitId":"-"},"content":" display: CSS_DISPLAY_INLINE_FLEX"},{"lineNumber":67,"author":{"gitId":"-"},"content":"};"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":"export const INLINE_BLOCK_TEXT \u003d {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${COLOR_WHITE}`,"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u0027border-radius\u0027: CSS_BORDER_RADIUS_3PX,"},{"lineNumber":72,"author":{"gitId":"-"},"content":" cursor: CSS_CURSOR_DEFAULT,"},{"lineNumber":73,"author":{"gitId":"-"},"content":" padding: CSS_PADDING_3PX,"},{"lineNumber":74,"author":{"gitId":"-"},"content":" color: `#${COLOR_BLACK}`,"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u0027font-weight\u0027: CSS_FONT_WEIGHT_410,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" display: CSS_DISPLAY_INLINE_BLOCK"},{"lineNumber":77,"author":{"gitId":"-"},"content":"};"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":"export const RESPONSE_REJECTED_LABEL \u003d new Label(RESPONSE, RESPONSE_REJECTED, COLOR_RESPONSE_REJECTED, LABEL_DEFINITIONS.responseRejected);"},{"lineNumber":80,"author":{"gitId":"-"},"content":"export const STATUS_DONE_LABEL \u003d new Label(STATUS, STATUS_DONE, COLOR_STATUS_DONE);"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":"export const TYPE_DOCUMENTATION_BUG_LABEL \u003d new Label("},{"lineNumber":83,"author":{"gitId":"-"},"content":" TYPE,"},{"lineNumber":84,"author":{"gitId":"-"},"content":" TYPE_DOCUMENTATION_BUG,"},{"lineNumber":85,"author":{"gitId":"-"},"content":" COLOR_TYPE_DOCUMENTATION_BUG,"},{"lineNumber":86,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.typeDocumentationBug"},{"lineNumber":87,"author":{"gitId":"-"},"content":");"},{"lineNumber":88,"author":{"gitId":"-"},"content":"export const TYPE_FUNCTIONALITY_BUG_LABEL \u003d new Label("},{"lineNumber":89,"author":{"gitId":"-"},"content":" TYPE,"},{"lineNumber":90,"author":{"gitId":"-"},"content":" TYPE_FUNCTIONALITY_BUG,"},{"lineNumber":91,"author":{"gitId":"-"},"content":" COLOR_TYPE_FUNCTIONALITY_BUG,"},{"lineNumber":92,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.typeFunctionalityBug"},{"lineNumber":93,"author":{"gitId":"-"},"content":");"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":"export const SEVERITY_HIGH_LABEL \u003d new Label(SEVERITY, SEVERITY_HIGH, COLOR_SEVERITY_HIGH, LABEL_DEFINITIONS.severityHigh);"},{"lineNumber":96,"author":{"gitId":"-"},"content":"export const SEVERITY_MEDIUM_LABEL \u003d new Label(SEVERITY, SEVERITY_MEDIUM, COLOR_SEVERITY_MEDIUM, LABEL_DEFINITIONS.severityMedium);"},{"lineNumber":97,"author":{"gitId":"-"},"content":"export const SEVERITY_LOW_LABEL \u003d new Label(SEVERITY, SEVERITY_LOW, COLOR_SEVERITY_LOW, LABEL_DEFINITIONS.severityLow);"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":"// Constant array of labels for team response phase and moderation phase to simulate Github response"},{"lineNumber":100,"author":{"gitId":"-"},"content":"export const SOME_TEAM_RESPONSE_PHASE_LABELS \u003d ["},{"lineNumber":101,"author":{"gitId":"-"},"content":" {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" color: COLOR_RESPONSE_ACCEPTED,"},{"lineNumber":103,"author":{"gitId":"-"},"content":" name: RESPONSE + \u0027.\u0027 + RESPONSE_ACCEPTED,"},{"lineNumber":104,"author":{"gitId":"-"},"content":" definition: LABEL_DEFINITIONS.responseAccepted"},{"lineNumber":105,"author":{"gitId":"-"},"content":" },"},{"lineNumber":106,"author":{"gitId":"-"},"content":" {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" color: COLOR_SEVERITY_LOW,"},{"lineNumber":108,"author":{"gitId":"-"},"content":" name: SEVERITY + \u0027.\u0027 + SEVERITY_LOW,"},{"lineNumber":109,"author":{"gitId":"-"},"content":" definition: LABEL_DEFINITIONS.severityLow"},{"lineNumber":110,"author":{"gitId":"-"},"content":" },"},{"lineNumber":111,"author":{"gitId":"-"},"content":" {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" color: COLOR_TYPE_FUNCTIONALITY_BUG,"},{"lineNumber":113,"author":{"gitId":"-"},"content":" name: TYPE + \u0027.\u0027 + TYPE_FUNCTIONALITY_BUG,"},{"lineNumber":114,"author":{"gitId":"-"},"content":" definition: LABEL_DEFINITIONS.typeFunctionalityBug"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":"];"},{"lineNumber":117,"author":{"gitId":"-"},"content":""},{"lineNumber":118,"author":{"gitId":"-"},"content":"// Constant array of labels for tester phase to simulate Github response"},{"lineNumber":119,"author":{"gitId":"-"},"content":"export const SOME_TESTER_PHASE_LABELS \u003d ["},{"lineNumber":120,"author":{"gitId":"-"},"content":" {"},{"lineNumber":121,"author":{"gitId":"-"},"content":" color: COLOR_SEVERITY_HIGH,"},{"lineNumber":122,"author":{"gitId":"-"},"content":" name: SEVERITY + \u0027.\u0027 + SEVERITY_HIGH"},{"lineNumber":123,"author":{"gitId":"-"},"content":" },"},{"lineNumber":124,"author":{"gitId":"-"},"content":" {"},{"lineNumber":125,"author":{"gitId":"-"},"content":" color: COLOR_TYPE_DOCUMENTATION_BUG,"},{"lineNumber":126,"author":{"gitId":"-"},"content":" name: TYPE + \u0027.\u0027 + TYPE_DOCUMENTATION_BUG"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }"},{"lineNumber":128,"author":{"gitId":"-"},"content":"];"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":"export const ALL_REQUIRED_LABELS_ARRAY: {}[] \u003d LabelService.getRequiredLabelsAsArray(true).map((label: Label) \u003d\u003e {"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return {"},{"lineNumber":132,"author":{"gitId":"-"},"content":" color: label.labelColor,"},{"lineNumber":133,"author":{"gitId":"-"},"content":" name: label.getFormattedName()"},{"lineNumber":134,"author":{"gitId":"-"},"content":" };"},{"lineNumber":135,"author":{"gitId":"-"},"content":"});"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":"// List of labels"},{"lineNumber":138,"author":{"gitId":"-"},"content":"export const SEVERITY_LABELS \u003d ["},{"lineNumber":139,"author":{"gitId":"-"},"content":" new Label(SEVERITY, SEVERITY_LOW, COLOR_SEVERITY_LOW, LABEL_DEFINITIONS.severityLow),"},{"lineNumber":140,"author":{"gitId":"-"},"content":" new Label(SEVERITY, SEVERITY_MEDIUM, COLOR_SEVERITY_MEDIUM, LABEL_DEFINITIONS.severityMedium),"},{"lineNumber":141,"author":{"gitId":"-"},"content":" new Label(SEVERITY, SEVERITY_HIGH, COLOR_SEVERITY_HIGH, LABEL_DEFINITIONS.undefined)"},{"lineNumber":142,"author":{"gitId":"-"},"content":"];"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":141}},{"path":"tests/services/label.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Label } from \u0027../../src/app/core/models/label.model\u0027;"},{"lineNumber":3,"author":{"gitId":"Echomo-Xinyu"},"content":"import { LabelService, LABEL_DEFINITIONS } from \u0027../../src/app/core/services/label.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import * as LabelConstant from \u0027../constants/label.constants\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"let labelService: LabelService;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"let labelList: Label[];"},{"lineNumber":8,"author":{"gitId":"-"},"content":"let githubService: any;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"describe(\u0027LabelService\u0027, () \u003d\u003e {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" githubService \u003d jasmine.createSpyObj(\u0027GithubService\u0027, [\u0027fetchAllLabels\u0027, \u0027createLabel\u0027]);"},{"lineNumber":13,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(githubService);"},{"lineNumber":14,"author":{"gitId":"-"},"content":" });"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":" describe(\u0027.syncLabels()\u0027, () \u003d\u003e {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" it(\u0027should create all required labels for team response phase if no required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of([]));"},{"lineNumber":19,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(true)).subscribe();"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.SEVERITY_LOW_LABEL);"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.RESPONSE_REJECTED_LABEL);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.STATUS_DONE_LABEL);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.TYPE_DOCUMENTATION_BUG_LABEL);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes(LabelService.getRequiredLabelsAsArray(true).length);"},{"lineNumber":26,"author":{"gitId":"-"},"content":" });"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" it(\u0027should create all required labels for tester phase if no required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of([]));"},{"lineNumber":30,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(false)).subscribe();"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.SEVERITY_LOW_LABEL);"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.TYPE_DOCUMENTATION_BUG_LABEL);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes(LabelService.getRequiredLabelsAsArray(false).length);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" });"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" it(\u0027should create missing required labels for team response phase if some required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of(LabelConstant.SOME_TEAM_RESPONSE_PHASE_LABELS));"},{"lineNumber":39,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(true)).subscribe();"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertLabelNotCreated(githubService, LabelConstant.SEVERITY_LOW_LABEL);"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.RESPONSE_REJECTED_LABEL);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.STATUS_DONE_LABEL);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.TYPE_DOCUMENTATION_BUG_LABEL);"},{"lineNumber":45,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes("},{"lineNumber":46,"author":{"gitId":"-"},"content":" LabelService.getRequiredLabelsAsArray(true).length - LabelConstant.SOME_TEAM_RESPONSE_PHASE_LABELS.length"},{"lineNumber":47,"author":{"gitId":"-"},"content":" );"},{"lineNumber":48,"author":{"gitId":"-"},"content":" });"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" it(\u0027should create missing required labels for tester phase if some required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of(LabelConstant.SOME_TESTER_PHASE_LABELS));"},{"lineNumber":52,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(false)).subscribe();"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertLabelNotCreated(githubService, LabelConstant.SEVERITY_HIGH_LABEL);"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertLabelCreated(githubService, LabelConstant.TYPE_FUNCTIONALITY_BUG_LABEL);"},{"lineNumber":56,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes("},{"lineNumber":57,"author":{"gitId":"-"},"content":" LabelService.getRequiredLabelsAsArray(false).length - LabelConstant.SOME_TESTER_PHASE_LABELS.length"},{"lineNumber":58,"author":{"gitId":"-"},"content":" );"},{"lineNumber":59,"author":{"gitId":"-"},"content":" });"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" it(\u0027should not need to create any required labels if all required labels are fetched\u0027, () \u003d\u003e {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" githubService.fetchAllLabels.and.callFake(() \u003d\u003e of(LabelConstant.ALL_REQUIRED_LABELS_ARRAY));"},{"lineNumber":63,"author":{"gitId":"-"},"content":" of(true).pipe(labelService.syncLabels(true)).subscribe();"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledTimes(0);"},{"lineNumber":66,"author":{"gitId":"-"},"content":" });"},{"lineNumber":67,"author":{"gitId":"-"},"content":" });"},{"lineNumber":68,"author":{"gitId":"-"},"content":"});"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: parseLabelData()\u0027, () \u003d\u003e {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" beforeAll(() \u003d\u003e {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(null);"},{"lineNumber":73,"author":{"gitId":"-"},"content":" labelList \u003d labelService.parseLabelData(LabelConstant.SOME_TEAM_RESPONSE_PHASE_LABELS);"},{"lineNumber":74,"author":{"gitId":"-"},"content":" });"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" afterAll(() \u003d\u003e {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" });"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" it(\u0027should be response.Accepted label\u0027, () \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expect(labelList[0].labelCategory).toBe(LabelConstant.RESPONSE);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" expect(labelList[0].labelValue).toBe(LabelConstant.RESPONSE_ACCEPTED);"},{"lineNumber":83,"author":{"gitId":"-"},"content":" expect(labelList[0].labelColor).toBe(LabelConstant.COLOR_RESPONSE_ACCEPTED);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" });"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" it(\u0027should be severity.Low\u0027, () \u003d\u003e {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" expect(labelList[1].labelCategory).toBe(LabelConstant.SEVERITY);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" expect(labelList[1].labelValue).toBe(LabelConstant.SEVERITY_LOW);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" expect(labelList[1].labelColor).toBe(LabelConstant.COLOR_SEVERITY_LOW);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" expect(labelList[1].labelDefinition).toBe(LABEL_DEFINITIONS.severityLow);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" });"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" it(\u0027should be type.FunctionalityBug\u0027, () \u003d\u003e {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" expect(labelList[2].labelCategory).toBe(LabelConstant.TYPE);"},{"lineNumber":95,"author":{"gitId":"-"},"content":" expect(labelList[2].labelValue).toBe(LabelConstant.TYPE_FUNCTIONALITY_BUG);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" expect(labelList[2].labelColor).toBe(LabelConstant.COLOR_TYPE_FUNCTIONALITY_BUG);"},{"lineNumber":97,"author":{"gitId":"-"},"content":" expect(labelList[2].labelDefinition).toBe(LABEL_DEFINITIONS.typeFunctionalityBug);"},{"lineNumber":98,"author":{"gitId":"-"},"content":" });"},{"lineNumber":99,"author":{"gitId":"-"},"content":"});"},{"lineNumber":100,"author":{"gitId":"-"},"content":""},{"lineNumber":101,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: isDarkColor()\u0027, () \u003d\u003e {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(null);"},{"lineNumber":104,"author":{"gitId":"-"},"content":" });"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":108,"author":{"gitId":"-"},"content":" });"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":" it(\u0027should be true for dark color\u0027, () \u003d\u003e {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" expect(labelService.isDarkColor(LabelConstant.COLOR_BLACK)).toBeTruthy();"},{"lineNumber":112,"author":{"gitId":"-"},"content":" });"},{"lineNumber":113,"author":{"gitId":"-"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":" it(\u0027should be false for light color\u0027, () \u003d\u003e {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" expect(labelService.isDarkColor(LabelConstant.COLOR_WHITE)).toBeFalsy();"},{"lineNumber":116,"author":{"gitId":"-"},"content":" });"},{"lineNumber":117,"author":{"gitId":"-"},"content":"});"},{"lineNumber":118,"author":{"gitId":"-"},"content":""},{"lineNumber":119,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: setLabelStyle()\u0027, () \u003d\u003e {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":121,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(null);"},{"lineNumber":122,"author":{"gitId":"-"},"content":" });"},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":125,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":126,"author":{"gitId":"-"},"content":" });"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":" it(\u0027should be dark color background with light color text\u0027, () \u003d\u003e {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" expect(labelService.setLabelStyle(LabelConstant.COLOR_BLACK)).toEqual(LabelConstant.DARK_BG_LIGHT_TEXT);"},{"lineNumber":130,"author":{"gitId":"-"},"content":" });"},{"lineNumber":131,"author":{"gitId":"-"},"content":""},{"lineNumber":132,"author":{"gitId":"-"},"content":" it(\u0027should be light color background with dark color text\u0027, () \u003d\u003e {"},{"lineNumber":133,"author":{"gitId":"-"},"content":" expect(labelService.setLabelStyle(LabelConstant.COLOR_WHITE)).toEqual(LabelConstant.LIGHT_BG_DARK_TEXT);"},{"lineNumber":134,"author":{"gitId":"-"},"content":" });"},{"lineNumber":135,"author":{"gitId":"-"},"content":""},{"lineNumber":136,"author":{"gitId":"-"},"content":" it(\u0027should be light color background with dark color text\u0027, () \u003d\u003e {"},{"lineNumber":137,"author":{"gitId":"-"},"content":" expect(labelService.setLabelStyle(LabelConstant.COLOR_WHITE, \u0027inline-block\u0027)).toEqual(LabelConstant.INLINE_BLOCK_TEXT);"},{"lineNumber":138,"author":{"gitId":"-"},"content":" });"},{"lineNumber":139,"author":{"gitId":"-"},"content":"});"},{"lineNumber":140,"author":{"gitId":"-"},"content":""},{"lineNumber":141,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: getColorOfLabel()\u0027, () \u003d\u003e {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(null);"},{"lineNumber":144,"author":{"gitId":"-"},"content":" });"},{"lineNumber":145,"author":{"gitId":"-"},"content":""},{"lineNumber":146,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":147,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":148,"author":{"gitId":"-"},"content":" });"},{"lineNumber":149,"author":{"gitId":"-"},"content":""},{"lineNumber":150,"author":{"gitId":"-"},"content":" it(\u0027should be correct label color for Severity.Low\u0027, () \u003d\u003e {"},{"lineNumber":151,"author":{"gitId":"-"},"content":" expect(labelService.getColorOfLabel(LabelConstant.SEVERITY_LOW)).toEqual(LabelConstant.COLOR_SEVERITY_LOW);"},{"lineNumber":152,"author":{"gitId":"-"},"content":" });"},{"lineNumber":153,"author":{"gitId":"-"},"content":""},{"lineNumber":154,"author":{"gitId":"-"},"content":" it(\u0027should be white color for invalid inputs\u0027, () \u003d\u003e {"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expect(labelService.getColorOfLabel(null)).toEqual(LabelConstant.COLOR_WHITE.toLowerCase());"},{"lineNumber":156,"author":{"gitId":"-"},"content":" });"},{"lineNumber":157,"author":{"gitId":"-"},"content":"});"},{"lineNumber":158,"author":{"gitId":"-"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: getLabelDefinition()\u0027, () \u003d\u003e {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":161,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(null);"},{"lineNumber":162,"author":{"gitId":"-"},"content":" });"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":166,"author":{"gitId":"-"},"content":" });"},{"lineNumber":167,"author":{"gitId":"-"},"content":""},{"lineNumber":168,"author":{"gitId":"-"},"content":" it(\u0027should return the correct label definition for type.FunctionalityBug\u0027, () \u003d\u003e {"},{"lineNumber":169,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.TYPE_FUNCTIONALITY_BUG, LabelConstant.TYPE)).toEqual("},{"lineNumber":170,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.typeFunctionalityBug"},{"lineNumber":171,"author":{"gitId":"-"},"content":" );"},{"lineNumber":172,"author":{"gitId":"-"},"content":" });"},{"lineNumber":173,"author":{"gitId":"-"},"content":""},{"lineNumber":174,"author":{"gitId":"-"},"content":" it(\u0027should return the correct label definition for severity.Medium\u0027, () \u003d\u003e {"},{"lineNumber":175,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.SEVERITY_MEDIUM, LabelConstant.SEVERITY)).toEqual("},{"lineNumber":176,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.severityMedium"},{"lineNumber":177,"author":{"gitId":"-"},"content":" );"},{"lineNumber":178,"author":{"gitId":"-"},"content":" });"},{"lineNumber":179,"author":{"gitId":"-"},"content":""},{"lineNumber":180,"author":{"gitId":"-"},"content":" it(\u0027should return the correct label definition for response.Rejected\u0027, () \u003d\u003e {"},{"lineNumber":181,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.RESPONSE_REJECTED, LabelConstant.RESPONSE)).toEqual("},{"lineNumber":182,"author":{"gitId":"-"},"content":" LABEL_DEFINITIONS.responseRejected"},{"lineNumber":183,"author":{"gitId":"-"},"content":" );"},{"lineNumber":184,"author":{"gitId":"-"},"content":" });"},{"lineNumber":185,"author":{"gitId":"-"},"content":""},{"lineNumber":186,"author":{"gitId":"-"},"content":" it(\u0027should return null for label with no definition\u0027, () \u003d\u003e {"},{"lineNumber":187,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.STATUS_DONE, LabelConstant.STATUS)).toEqual(LABEL_DEFINITIONS.undefined);"},{"lineNumber":188,"author":{"gitId":"-"},"content":" });"},{"lineNumber":189,"author":{"gitId":"-"},"content":""},{"lineNumber":190,"author":{"gitId":"-"},"content":" it(\u0027should return null for invalid inputs\u0027, () \u003d\u003e {"},{"lineNumber":191,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(null, null)).toEqual(LABEL_DEFINITIONS.undefined);"},{"lineNumber":192,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(null, LabelConstant.SEVERITY)).toEqual(LABEL_DEFINITIONS.undefined);"},{"lineNumber":193,"author":{"gitId":"-"},"content":" expect(labelService.getLabelDefinition(LabelConstant.SEVERITY_MEDIUM, null)).toEqual(LABEL_DEFINITIONS.undefined);"},{"lineNumber":194,"author":{"gitId":"-"},"content":" });"},{"lineNumber":195,"author":{"gitId":"-"},"content":"});"},{"lineNumber":196,"author":{"gitId":"-"},"content":""},{"lineNumber":197,"author":{"gitId":"-"},"content":"function assertLabelCreated(githubService: any, label: Label) {"},{"lineNumber":198,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).toHaveBeenCalledWith(label.getFormattedName(), label.labelColor);"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}"},{"lineNumber":200,"author":{"gitId":"-"},"content":""},{"lineNumber":201,"author":{"gitId":"-"},"content":"function assertLabelNotCreated(githubService: any, label: Label) {"},{"lineNumber":202,"author":{"gitId":"-"},"content":" expect(githubService.createLabel).not.toHaveBeenCalledWith(label.getFormattedName(), label.labelColor);"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Echomo-Xinyu":1,"-":202}},{"path":"tests/services/logging.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../src/app/core/services/logging.service\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MockLocalStorage } from \u0027../helper/mock.local.storage\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"cheehongw"},"content":"let logger: LoggingService;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"let headerLog: string;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"let sessionSeparator: string;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"const mockDate \u003d new Date(2021, 6, 27);"},{"lineNumber":8,"author":{"gitId":"-"},"content":"const infoLogMessage \u003d \u0027Info log message\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"const mockLocalStorageFunctionCalls \u003d (mockLocalStorage: MockLocalStorage) \u003d\u003e {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" spyOn(localStorage, \u0027getItem\u0027).and.callFake(mockLocalStorage.getItem.bind(mockLocalStorage));"},{"lineNumber":12,"author":{"gitId":"-"},"content":" spyOn(localStorage, \u0027setItem\u0027).and.callFake(mockLocalStorage.setItem.bind(mockLocalStorage));"},{"lineNumber":13,"author":{"gitId":"-"},"content":" spyOn(localStorage, \u0027removeItem\u0027).and.callFake(mockLocalStorage.removeItem.bind(mockLocalStorage));"},{"lineNumber":14,"author":{"gitId":"-"},"content":" spyOn(localStorage, \u0027clear\u0027).and.callFake(mockLocalStorage.clear.bind(mockLocalStorage));"},{"lineNumber":15,"author":{"gitId":"-"},"content":"};"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"const mockDates \u003d () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" jasmine.clock().install();"},{"lineNumber":19,"author":{"gitId":"-"},"content":" jasmine.clock().mockDate(mockDate);"},{"lineNumber":20,"author":{"gitId":"-"},"content":"};"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":"const initializeLoggingService \u003d () \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" logger \u003d new LoggingService();"},{"lineNumber":24,"author":{"gitId":"cheehongw"},"content":" headerLog \u003d `${logger.LOG_START_HEADER}\\n${mockDate.toLocaleString()}`;"},{"lineNumber":25,"author":{"gitId":"cheehongw"},"content":" sessionSeparator \u003d logger.SESSION_LOG_SEPARATOR;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"};"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"describe(\u0027LoggingService\u0027, () \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" beforeAll(() \u003d\u003e {"},{"lineNumber":30,"author":{"gitId":"-"},"content":" const mockLocalStorage \u003d new MockLocalStorage();"},{"lineNumber":31,"author":{"gitId":"-"},"content":" mockLocalStorageFunctionCalls(mockLocalStorage);"},{"lineNumber":32,"author":{"gitId":"-"},"content":" mockDates();"},{"lineNumber":33,"author":{"gitId":"-"},"content":" initializeLoggingService();"},{"lineNumber":34,"author":{"gitId":"-"},"content":" });"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":37,"author":{"gitId":"cheehongw"},"content":" logger.reset();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" localStorage.clear();"},{"lineNumber":39,"author":{"gitId":"-"},"content":" });"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" afterAll(() \u003d\u003e {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" jasmine.clock().uninstall();"},{"lineNumber":43,"author":{"gitId":"-"},"content":" });"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" describe(\u0027.startSession()\u0027, () \u003d\u003e {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" it(\u0027should successfully initialize logging session\u0027, () \u003d\u003e {"},{"lineNumber":47,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":48,"author":{"gitId":"cheehongw"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":49,"author":{"gitId":"-"},"content":" const expectedLog \u003d headerLog;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":51,"author":{"gitId":"-"},"content":" });"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":" it(\u0027should successfully reinitialize logging session\u0027, () \u003d\u003e {"},{"lineNumber":54,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":55,"author":{"gitId":"cheehongw"},"content":" logger.reset();"},{"lineNumber":56,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":57,"author":{"gitId":"cheehongw"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":58,"author":{"gitId":"-"},"content":" const expectedLog \u003d `${headerLog}${sessionSeparator}${headerLog}`;"},{"lineNumber":59,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":60,"author":{"gitId":"-"},"content":" });"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" it(\u0027should successfully reinitialize logging session when limit reached\u0027, () \u003d\u003e {"},{"lineNumber":63,"author":{"gitId":"cheehongw"},"content":" Array(logger.LOG_COUNT_LIMIT)"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .fill(0)"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .forEach(() \u003d\u003e {"},{"lineNumber":66,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":67,"author":{"gitId":"cheehongw"},"content":" logger.reset();"},{"lineNumber":68,"author":{"gitId":"-"},"content":" });"},{"lineNumber":69,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":70,"author":{"gitId":"cheehongw"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":71,"author":{"gitId":"cheehongw"},"content":" const expectedLog \u003d Array(logger.LOG_COUNT_LIMIT)"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .fill(\u0027\u0027)"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .map((_) \u003d\u003e headerLog)"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .join(sessionSeparator);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":76,"author":{"gitId":"-"},"content":" });"},{"lineNumber":77,"author":{"gitId":"-"},"content":" });"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" describe(\u0027.reset()\u0027, () \u003d\u003e {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" it(\u0027should do nothing if no session is ongoing\u0027, () \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"cheehongw"},"content":" logger.reset();"},{"lineNumber":82,"author":{"gitId":"cheehongw"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":83,"author":{"gitId":"-"},"content":" expect(actualLog).toBeNull();"},{"lineNumber":84,"author":{"gitId":"-"},"content":" });"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" it(\u0027should not tamper with existing log histories\u0027, () \u003d\u003e {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" let expectedLog \u003d headerLog;"},{"lineNumber":88,"author":{"gitId":"cheehongw"},"content":" for (let i \u003d 0; i \u003c logger.LOG_COUNT_LIMIT + 1; i +\u003d 1) {"},{"lineNumber":89,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":90,"author":{"gitId":"cheehongw"},"content":" logger.reset();"},{"lineNumber":91,"author":{"gitId":"cheehongw"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":93,"author":{"gitId":"cheehongw"},"content":" if (i \u003c logger.LOG_COUNT_LIMIT - 1) {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" expectedLog +\u003d `${sessionSeparator}${headerLog}`;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":" });"},{"lineNumber":98,"author":{"gitId":"-"},"content":" });"},{"lineNumber":99,"author":{"gitId":"-"},"content":""},{"lineNumber":100,"author":{"gitId":"-"},"content":" describe(\u0027adding logs\u0027, () \u003d\u003e {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" it(\u0027should successfully add info logs\u0027, () \u003d\u003e {"},{"lineNumber":102,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":103,"author":{"gitId":"cheehongw"},"content":" const initialLog \u003d logger.getCachedLog();"},{"lineNumber":104,"author":{"gitId":"cheehongw"},"content":" logger.info(infoLogMessage);"},{"lineNumber":105,"author":{"gitId":"cheehongw"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":106,"author":{"gitId":"-"},"content":" const expectedLog \u003d `${initialLog}\\n${infoLogMessage}`;"},{"lineNumber":107,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" });"},{"lineNumber":109,"author":{"gitId":"-"},"content":" });"},{"lineNumber":110,"author":{"gitId":"-"},"content":""},{"lineNumber":111,"author":{"gitId":"-"},"content":" describe(\u0027updating and trimming logs from sessions\u0027, () \u003d\u003e {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" it(\u0027should trim oldest log if number of sessions exceed session limit\u0027, () \u003d\u003e {"},{"lineNumber":113,"author":{"gitId":"cheehongw"},"content":" Array(logger.LOG_COUNT_LIMIT + 1)"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .fill(0)"},{"lineNumber":115,"author":{"gitId":"-"},"content":" .forEach(() \u003d\u003e {"},{"lineNumber":116,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":117,"author":{"gitId":"cheehongw"},"content":" logger.info(infoLogMessage);"},{"lineNumber":118,"author":{"gitId":"cheehongw"},"content":" logger.reset();"},{"lineNumber":119,"author":{"gitId":"-"},"content":" });"},{"lineNumber":120,"author":{"gitId":"cheehongw"},"content":" logger.startSession();"},{"lineNumber":121,"author":{"gitId":"cheehongw"},"content":" const actualLog \u003d logger.getCachedLog();"},{"lineNumber":122,"author":{"gitId":"cheehongw"},"content":" const expectedLog \u003d Array(logger.LOG_COUNT_LIMIT)"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .fill(\u0027\u0027)"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .map((_) \u003d\u003e headerLog)"},{"lineNumber":125,"author":{"gitId":"-"},"content":" .join(`\\n${infoLogMessage}${sessionSeparator}`);"},{"lineNumber":126,"author":{"gitId":"-"},"content":" expect(actualLog).toEqual(expectedLog);"},{"lineNumber":127,"author":{"gitId":"-"},"content":" });"},{"lineNumber":128,"author":{"gitId":"-"},"content":" });"},{"lineNumber":129,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":94,"cheehongw":34}},{"path":"tests/services/profile.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Profile } from \u0027../../src/app/core/models/profile.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../src/app/core/services/github.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { ProfileService } from \u0027../../src/app/core/services/profile.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"let githubService: GithubService;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"let profileService: ProfileService;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"const EMPTY_PROFILES \u003d [];"},{"lineNumber":9,"author":{"gitId":"-"},"content":"const VALID_PROFILES \u003d ["},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cProfile\u003e{"},{"lineNumber":11,"author":{"gitId":"-"},"content":" profileName: \u0027CATcher\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" repoName: \u0027CATcher-org/public_data\u0027"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }"},{"lineNumber":14,"author":{"gitId":"-"},"content":"];"},{"lineNumber":15,"author":{"gitId":"-"},"content":"const INVALID_PROFILES \u003d ["},{"lineNumber":16,"author":{"gitId":"-"},"content":" {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" profileName: \u0027CATcher\u0027"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }"},{"lineNumber":19,"author":{"gitId":"-"},"content":"];"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"describe(\u0027ProfileService\u0027, () \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":23,"author":{"gitId":"vigneshsankariyer1234567890"},"content":" githubService \u003d new GithubService(null, null, null);"},{"lineNumber":24,"author":{"gitId":"-"},"content":" profileService \u003d new ProfileService(githubService);"},{"lineNumber":25,"author":{"gitId":"-"},"content":" });"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" describe(\u0027.fetchExternalProfiles()\u0027, () \u003d\u003e {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" it(\u0027should return an empty array if no profiles are given\u0027, () \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" spyOn(window, \u0027fetch\u0027).and.returnValue(generateProfilesPromise(EMPTY_PROFILES));"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return profileService.fetchExternalProfiles().then((profiles) \u003d\u003e expect(profiles).toEqual(EMPTY_PROFILES));"},{"lineNumber":31,"author":{"gitId":"-"},"content":" });"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" it(\u0027should return the set of profiles if a set of valid profiles is given\u0027, () \u003d\u003e {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" spyOn(window, \u0027fetch\u0027).and.returnValue(generateProfilesPromise(VALID_PROFILES));"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return profileService.fetchExternalProfiles().then((profiles) \u003d\u003e expect(profiles).toEqual(VALID_PROFILES));"},{"lineNumber":36,"author":{"gitId":"-"},"content":" });"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" it(\u0027should throw an error if a set of invalid profiles is given\u0027, () \u003d\u003e {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" spyOn(window, \u0027fetch\u0027).and.returnValue(generateProfilesPromise(INVALID_PROFILES));"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return profileService"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .fetchExternalProfiles()"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .then(() \u003d\u003e fail())"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .catch((error: Error) \u003d\u003e expect(error.message).toEqual(\u0027profiles.json is malformed\u0027));"},{"lineNumber":44,"author":{"gitId":"-"},"content":" });"},{"lineNumber":45,"author":{"gitId":"-"},"content":" });"},{"lineNumber":46,"author":{"gitId":"-"},"content":"});"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":"function generateProfilesPromise(profiles: any[]): Promise\u003cResponse\u003e {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" const mockResponse: Response \u003d { json: () \u003d\u003e Promise.resolve({ profiles: profiles }) } as Response;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return Promise.resolve(mockResponse);"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"vigneshsankariyer1234567890":1,"-":50}}] diff --git a/CATcher-org_WATcher_main/commits.json b/CATcher-org_WATcher_main/commits.json index 9b081a6..5cdcb0e 100644 --- a/CATcher-org_WATcher_main/commits.json +++ b/CATcher-org_WATcher_main/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Echomo-Xinyu":[{"date":"2023-01-31","commitResults":[{"hash":"386f15846f11932998eab5cf83fcb898a64f94d0","isMergeCommit":false,"messageTitle":"Modify card view to move milestone flag position (#61)","messageBody":"Let\u0027s modify card view to move milestone flag position for better view.","fileTypesAndContributionMap":{"html":{"insertions":2,"deletions":4}}}]},{"date":"2023-03-05","commitResults":[{"hash":"474c63d915d7e4d77b019ceeb413d45f69ebb761","isMergeCommit":false,"messageTitle":"Fix wrong octicon displayed for closed PR (#89)","messageBody":"Let\u0027s update the octicon and its colour for the closed PR","fileTypesAndContributionMap":{"css":{"insertions":4,"deletions":0},"ts":{"insertions":18,"deletions":3}}}]},{"date":"2023-03-20","commitResults":[{"hash":"f11c428a2421fb8ed121b74c7696dd8fa24efd9d","isMergeCommit":false,"messageTitle":"Fix closed pr icon (#91)","messageBody":"Let\u0027s update the octicon and its colour for the closed PR","fileTypesAndContributionMap":{"css":{"insertions":4,"deletions":0},"ts":{"insertions":18,"deletions":3}}}]},{"date":"2023-03-22","commitResults":[{"hash":"86cd747e3a04aefae98ace4ad49957478e9a3c44","isMergeCommit":false,"messageTitle":"Upgrade angular version v8 to v9 (#84)","messageBody":"Upgrade to Angular version 9.1\r\n\r\nCurrently, our version of Angular is no longer supported, and has missing Typescript\r\nfeatures such as optional chaining.\r\n\r\nLet\u0027s upgrade Angular to a LTS version, one major version at a time.\r\n\r\n---------\r\n\r\nCo-authored-by: Kang Su Min \u003c66008784+kkangs0226@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"ts":{"insertions":66,"deletions":65}}}]},{"date":"2023-03-28","commitResults":[{"hash":"4e01aa3e27ded15de76d6146be36fa04ecbe7f5d","isMergeCommit":false,"messageTitle":"Improve UIX for milestones and label-filter-bar (#97)","messageBody":"Improve UIX for milestones and label-filter-bar\r\n\r\nLet\u0027s update the UIX for milestone and label filter bar:\r\n\r\n- the Label Filter Bar has been updated with its background colour\r\nand font-weight\r\n- the issues/PRs without milestones have been added a default\r\nmilestone for filter purpose\r\n- the default milestone values for the filter have been updated\r\nto avoid confusion\r\n- the milestones displayed in the filter bar will be sorted\r\nautomatically to aid searching by users","fileTypesAndContributionMap":{"css":{"insertions":4,"deletions":0},"html":{"insertions":10,"deletions":8},"ts":{"insertions":11,"deletions":6}}}]},{"date":"2023-04-10","commitResults":[{"hash":"ea4c7c38f65e5323eb6d156902f9ea8605e204aa","isMergeCommit":false,"messageTitle":"68 upgrade angular to v10 and node to v14 (#105)","messageBody":"Let\u0027s upgrade Angular version to v10.2 and use Node v14 instead of v12.","fileTypesAndContributionMap":{"ts":{"insertions":16,"deletions":17}}}]}],"cedricongjh":[],"vigneshsankariyer1234567890":[{"date":"2023-02-07","commitResults":[{"hash":"6c6c8a74dcf109e0f7b4cf594b3a6a6c1a0741a0","isMergeCommit":false,"messageTitle":"Fix lint issues (#79)","messageBody":"Let\u0027s fix existing lint issues on main.","fileTypesAndContributionMap":{"ts":{"insertions":5,"deletions":8}}}]},{"date":"2023-04-10","commitResults":[{"hash":"384e28bfe1da526fe87490553fc9adeef09e9392","isMergeCommit":false,"messageTitle":"Better error messages (#104)","messageBody":"Add better error messages for invalid repo inputs.\r\n\r\nLong and unreadable errors are produced when invalid repos are provided\r\nin auth. This makes the app difficult to use and unintuitive. Catching and\r\nvalidating these errors will help us create a better experience for the user.\r\n\r\nLet\u0027s\r\n* Add more validation in `Repo` to ensure given repos are indeed valid\r\n* Add clearer logging to `GithubService` for better debugging.\r\n* Change behaviour of PhaseService to validate org and repoName from\r\nlocalStorage\r\n* Edit components that request for repo-based information to validate\r\nrepos before requesting\r\n* Change `LabelFilterBarComponent` to complete loading regardless of\r\nerrors received","fileTypesAndContributionMap":{"ts":{"insertions":218,"deletions":27}}},{"hash":"455f0a508efc0d909819a4db228f5acd287b49a0","isMergeCommit":false,"messageTitle":"Update issues-viewer.component.ts (#114)","messageBody":"Reset the `IssuesDataTable` before fetching and repopulating Issues.","fileTypesAndContributionMap":{"ts":{"insertions":1,"deletions":0}}}]},{"date":"2023-04-13","commitResults":[{"hash":"8c727a47193963c53183e5de8527e5ed43024dd6","isMergeCommit":false,"messageTitle":"Add additional card to show unassigned issues (#118)","messageBody":"Add an additional CardViewComponent that displays unassigned Issues.","fileTypesAndContributionMap":{"css":{"insertions":28,"deletions":29},"html":{"insertions":20,"deletions":18},"ts":{"insertions":8,"deletions":7}}}]},{"date":"2023-04-14","commitResults":[{"hash":"ce83ce9ede5f299e393106b54c44235c1fa20b78","isMergeCommit":false,"messageTitle":"Remove electron from WATcher (#113)","messageBody":"Refactor and remove uses of Electron from WATcher\r\n\r\nThere are many uses of Electron in WATcher, even with the CATcher\r\nElectron app being deprecated. As such, there are many instances\r\nof unused code, which is bad practice.\r\n\r\nRemoving instances of uses of Electron allows us to trim the codebase\r\nand remove dead code.\r\n\r\nLet\u0027s \r\n* Refactor and remove uses of Electron from WATcher\r\n* Remove all uses of Electron in the `src` folder.\r\n* Remove uses of Electron from `package.json` and other files\r\n* Delete folders such as `electron-utils` and files such as `postinstall`\r\nthat are used to initialise electron\r\n* Remove and amend scripts in `package.json` that are involved in\r\nbuilding the electron app\r\n* Edit `deployment-actions.yml` to remove pre-build actions from\r\nCD workflow","fileTypesAndContributionMap":{"js":{"insertions":0,"deletions":32},"html":{"insertions":1,"deletions":4},"ts":{"insertions":38,"deletions":566}}},{"hash":"1be4d82e5577b4c239e1b4dffa262c7aea96553e","isMergeCommit":false,"messageTitle":"Add horizontal scroll to Issues Viewer (#122)","messageBody":"Add horizontal scroll to Issues Viewer\r\n\r\nOriginally, if screen width was decreased or if a team had more\r\nthan 4-5 members, there would be `CardViewComponents` beyond\r\nthe page. This leads to a dampened UX.\r\n\r\nLet\u0027s add horizontal scrolling for `IssuesViewerComponent`.","fileTypesAndContributionMap":{"css":{"insertions":6,"deletions":0},"html":{"insertions":1,"deletions":1}}}]}],"weiquu":[],"itsyme":[],"Eclipse-Dominator":[{"date":"2023-02-02","commitResults":[{"hash":"62a78c9c9bcb54dad5f11f4f1c4a9df5b61457bd","isMergeCommit":false,"messageTitle":"Rename loggingService to logger (#67)","messageBody":"Fix invalid variable name. ","fileTypesAndContributionMap":{"ts":{"insertions":14,"deletions":15}}}]},{"date":"2023-02-06","commitResults":[{"hash":"1b6a9751bf31f1d79066722bfabf569027ca31ba","isMergeCommit":false,"messageTitle":"Fix hard to see text labels (#64)","messageBody":"Fix missing dynamic label text color\r\n\r\nThe method to determine if a label\u0027s font color should be \r\nblack or white is already present in the codebase but is not applied.\r\nThis caused some labels text to be hard to see due to the lack of contrast. \r\nThis fixes the issue by applying the style settings to the labels","fileTypesAndContributionMap":{"css":{"insertions":5,"deletions":5},"html":{"insertions":16,"deletions":18},"ts":{"insertions":44,"deletions":47}}}]},{"date":"2023-03-02","commitResults":[{"hash":"d20a4bde21e75f3d7dc9827a1030d53c7a42aa05","isMergeCommit":false,"messageTitle":"Add show and hide labels menu (#82)","messageBody":"The UI can look messy when there are a lot of labels\r\n\r\nLet\u0027s add a menu to allow the users to selectively hide label from the view.","fileTypesAndContributionMap":{"css":{"insertions":56,"deletions":22},"html":{"insertions":58,"deletions":33},"ts":{"insertions":169,"deletions":121}}}]},{"date":"2023-04-05","commitResults":[{"hash":"8679a25303ef744ec79d341f6fccf054e88aa11b","isMergeCommit":false,"messageTitle":"[#111] Modularizing issues and PRs as components (#116)","messageBody":"Currently, issue and PR html components are rendered within the cardview component. \r\nThis creates the difficulty in the future when new features are to be added to issues and PRs.\r\n\r\nLet\u0027s\r\n- Separate out the issues and PR as a separate component\r\n- Replace the old tag with the new tags","fileTypesAndContributionMap":{"css":{"insertions":97,"deletions":39},"html":{"insertions":29,"deletions":29},"ts":{"insertions":168,"deletions":102}}},{"hash":"2118df23222c094b4d1bd9c42449e4d068ecb3a6","isMergeCommit":false,"messageTitle":"119 fix datatable inefficiency (#120)","messageBody":"Inefficient nesting of subscribers in IssueDataTable has introduced \r\nunnecessary and very expensive computes to WATcher.\r\n\r\nLet\u0027s \r\n- Improve WATcher\u0027s efficiency by removing the nesting of subscribers in IssueDataTable.ts","fileTypesAndContributionMap":{"ts":{"insertions":57,"deletions":62}}}]},{"date":"2023-04-15","commitResults":[{"hash":"1bc8ae10f09ee8e0fe729146f383b4fa914a3e4b","isMergeCommit":false,"messageTitle":"Modularization and abstraction of filter related components (#129)","messageBody":"Profile page requires reusing code from filter-related components. \r\nTo avoid too much code duplication, let\u0027s modularise the filter bar \r\nand abstract out important aspects of filter-related components\r\n\r\n- Modularizes Filter bar into its own components\r\n- Moves labelfilterbar to a component within the abstracted out filterbar\r\n- Abstract out dropdownfilter into its own class\r\n- Abstract out interfaces for filterableSource and filterableComponents for better code quality\r\n- Further abstract out filter functionalities to reduce code duplication","fileTypesAndContributionMap":{"css":{"insertions":22,"deletions":0},"html":{"insertions":57,"deletions":56},"ts":{"insertions":236,"deletions":135}}}]},{"date":"2023-07-01","commitResults":[{"hash":"9635dcaca0a95c3f818fa04c21a9f1f23c4ad89a","isMergeCommit":false,"messageTitle":"Fix pressing back to cause issues to being cleared (#142)","messageBody":"Issues stored in issue service are being reset each time initialize is\r\ncalled in IssuesViewerComponent. This is undesirable as this method\r\ncan be called when users manually press back on the browser. \r\n\r\nAs the issues cache is being managed via a cache manager, this will\r\ncreate a scenario where the cache manager claims that there are no\r\nchanges to the repo but the cache has already been cleared. This causes\r\nissues to be cleared and no new issues are being loaded from the GitHub\r\nServer.\r\n\r\nLet\u0027s resolve this by moving the reset to be called when repo change\r\nevent occurs instead.","fileTypesAndContributionMap":{"ts":{"insertions":4,"deletions":2}}}]},{"date":"2023-07-12","commitResults":[{"hash":"5b0a46995775a5b0ece15aa9dd8c04b177a16c27","isMergeCommit":false,"messageTitle":"[#72] Remove code related to creating and updating repos (#143)","messageBody":"As a majority of the WATcher code base is ported over from CATcher,\r\nit includes a lot of unused code. One such area is the code related to \r\ncreating and updating issues on GitHub. Since WATcher is mainly used\r\nto read data from GitHub and not modify data for now. \r\n\r\nLet\u0027s remove code that is related to modifying or creating repos","fileTypesAndContributionMap":{"ts":{"insertions":0,"deletions":723}}}]},{"date":"2023-07-14","commitResults":[{"hash":"95e36a664223b50d1c84788a4f98fbda9f52dfbe","isMergeCommit":false,"messageTitle":"[#72] Remove package ngx-markdown (#145)","messageBody":"ngx-markdown is a markdown formatter/parser that was ported over from\r\nCATcher. As WATcher does not use any form of markdown parser, this\r\npackage currently does not serve any use in WATcher.\r\n\r\nTherefore, let\u0027s remove the unused package and the related components.","fileTypesAndContributionMap":{"css":{"insertions":0,"deletions":696},"ts":{"insertions":1,"deletions":46}}}]},{"date":"2023-07-16","commitResults":[{"hash":"adf0ae438f277f64e95778a877d174e6b5f92bdd","isMergeCommit":false,"messageTitle":"[#72] Remove unused code from catcher models (#146)","messageBody":"As WATcher is ported from CATcher, there are a lot of models and methods\r\nthat are not used and are unrelated to WATcher.\r\n\r\nLet\u0027s remove most of the unused code in core/models","fileTypesAndContributionMap":{"css":{"insertions":3,"deletions":5},"html":{"insertions":6,"deletions":21},"ts":{"insertions":20,"deletions":1889}}}]}],"vvidday":[],"ckcherry23":[],"domlimm":[],"jasonqiu212":[],"MarcusTXK":[],"sikai00":[],"EuniceSim142":[],"yucheng11122017":[],"hhdqirui":[],"EltonGohJH":[],"lhw-1":[],"kevin9foong":[],"cheehongw":[{"date":"2023-01-18","commitResults":[{"hash":"39e2e252483b45d0c12f64afd09252bb0604e5c3","isMergeCommit":false,"messageTitle":"Reset milestone selection upon repo change (#57)","messageBody":"Previously, milestones selected in the milestone filter are not cleared \r\nupon a repository change. This means that old milestones from the \r\nprevious repository remain selected, which may or may not exist in the \r\nnewly loaded repository. As such, the milestone selection should be \r\nfresh and reset for every new repo loaded.\r\n\r\nLet\u0027s reset the milestone selection upon a repository change","fileTypesAndContributionMap":{"html":{"insertions":1,"deletions":1},"ts":{"insertions":6,"deletions":1}}}]},{"date":"2023-01-31","commitResults":[{"hash":"45a5c1d6747ea7d9acb477ccdd4bb206beeff22d","isMergeCommit":false,"messageTitle":"Add logging for services (#59)","messageBody":"Standardize logging formats and add more logging.\r\n\r\nLet\u0027s specify where log statements are being generated, and add more \r\nlogging statements to aid in diagnostics.","fileTypesAndContributionMap":{"ts":{"insertions":75,"deletions":69}}}]},{"date":"2023-02-01","commitResults":[{"hash":"5ca8b21b62c34a8b36f764c3d619fe9e6720ed01","isMergeCommit":false,"messageTitle":"Move repo name to header bar (#62)","messageBody":"Move repository name to header bar\r\n\r\nLet\u0027s display the current repo\u0027s name to the header bar and allow \r\nusers to change the current repo by showing a form through a dialog.","fileTypesAndContributionMap":{"css":{"insertions":15,"deletions":0},"html":{"insertions":27,"deletions":11},"ts":{"insertions":95,"deletions":15}}}]},{"date":"2023-02-10","commitResults":[{"hash":"1cda6374d63f3b80e5b8435078489153501071f2","isMergeCommit":false,"messageTitle":"Fix uncaught httpError arising from promise (#70)","messageBody":"Fix uncaught httpError arising from promise\r\n\r\n`catchError` does not appear to catch an error on an observable created \r\nfrom a promise.\r\n\r\nLet\u0027s catch the error in the promise before converting it to an \r\nobservable.","fileTypesAndContributionMap":{"ts":{"insertions":8,"deletions":1}}},{"hash":"db01d5368ee797af80a251209c405154e27ebb64","isMergeCommit":false,"messageTitle":"Remove unused code in IssuesViewerComponent (#71)","messageBody":"Remove unused code in IssuesViewerComponent\r\n\r\nAfter moving the change repo form to the header bar, the `repoForm` \r\nattribute in `IssuesViewerComponent` is no longer needed.\r\n\r\nLet\u0027s remove it.","fileTypesAndContributionMap":{"ts":{"insertions":0,"deletions":4}}}]},{"date":"2023-02-19","commitResults":[{"hash":"bd4609dd755cb6c95f287b1e2b45088e5d00108a","isMergeCommit":false,"messageTitle":"Enable linting in Github workflow (#81)","messageBody":"","fileTypesAndContributionMap":{"ts":{"insertions":2,"deletions":3}}}]},{"date":"2023-02-24","commitResults":[{"hash":"1a4b23f59c67113008bcc2451e2fed16581d4773","isMergeCommit":false,"messageTitle":"Remove tests for unused components (#86)","messageBody":"Remove tests for unused components\r\n\r\nThese components include:\r\n- IssueTablesComponent\r\n- AssigneeComponent\r\n- DescriptionComponent\r\n- DuplicatedIssueComponent\r\n- LabelComponent\r\n- TitleComponent\r\n- LabelDropdownComponent","fileTypesAndContributionMap":{"ts":{"insertions":1,"deletions":681}}}]},{"date":"2023-03-05","commitResults":[{"hash":"22085d0708518bce82680042f88e00b7122e44a3","isMergeCommit":false,"messageTitle":"Create release for WATcher v0.0.2 (#88)","messageBody":"Merge release branch for WATcher v0.0.2","fileTypesAndContributionMap":{"ts":{"insertions":1,"deletions":1}}}]},{"date":"2023-03-06","commitResults":[{"hash":"58d71bf893f236ea000fcddd58d56c52f0b18072","isMergeCommit":false,"messageTitle":"Remove label-filter-bar as module export (#92)","messageBody":"Remove label-filter-bar as module export\r\n\r\nLet\u0027s remove label-filter-bar as an module as it is not a standalone \r\nmodule but a component under the issues-viewer module.","fileTypesAndContributionMap":{"ts":{"insertions":0,"deletions":11}}}]}]},"authorFileTypeContributionMap":{"Echomo-Xinyu":{"js":0,"css":4,"html":3,"ts":78},"cedricongjh":{"js":0,"css":0,"html":0,"ts":0},"vigneshsankariyer1234567890":{"js":0,"css":6,"html":5,"ts":205},"weiquu":{"js":0,"css":0,"html":0,"ts":0},"itsyme":{"js":0,"css":0,"html":0,"ts":0},"Eclipse-Dominator":{"js":0,"css":164,"html":129,"ts":563},"vvidday":{"js":0,"css":0,"html":0,"ts":0},"ckcherry23":{"js":0,"css":0,"html":0,"ts":0},"domlimm":{"js":0,"css":0,"html":0,"ts":0},"jasonqiu212":{"js":0,"css":0,"html":0,"ts":0},"MarcusTXK":{"js":0,"css":0,"html":0,"ts":0},"sikai00":{"js":0,"css":0,"html":0,"ts":0},"EuniceSim142":{"js":0,"css":0,"html":0,"ts":0},"yucheng11122017":{"js":0,"css":0,"html":0,"ts":0},"hhdqirui":{"js":0,"css":0,"html":0,"ts":0},"EltonGohJH":{"js":0,"css":0,"html":0,"ts":0},"lhw-1":{"js":0,"css":0,"html":0,"ts":0},"kevin9foong":{"js":0,"css":0,"html":0,"ts":0},"cheehongw":{"js":0,"css":15,"html":22,"ts":133}},"authorContributionVariance":{"Echomo-Xinyu":91.06514,"cedricongjh":0.0,"vigneshsankariyer1234567890":2146.6707,"weiquu":0.0,"itsyme":0.0,"Eclipse-Dominator":24404.775,"vvidday":0.0,"ckcherry23":0.0,"domlimm":0.0,"jasonqiu212":0.0,"MarcusTXK":0.0,"sikai00":0.0,"EuniceSim142":0.0,"yucheng11122017":0.0,"hhdqirui":0.0,"EltonGohJH":0.0,"lhw-1":0.0,"kevin9foong":0.0,"cheehongw":2228.8853},"authorDisplayNameMap":{"Echomo-Xinyu":"SUN ..INYU","cedricongjh":"ONG ..DRIC","vigneshsankariyer1234567890":"VIGN..IYER","weiquu":"NEO ..QING","itsyme":"LEE ..AVID","Eclipse-Dominator":"LI Z..AOQI","vvidday":"DAVI.. ONG","ckcherry23":"CHAR..USAR","domlimm":"DOMI.. JUN","jasonqiu212":"QIU ..ASON","MarcusTXK":"MARC.. KYE","sikai00":"CHAN.. KAI","EuniceSim142":"SIM ..NICE","yucheng11122017":"CHAN..HENG","hhdqirui":"WU Q..IRUI","EltonGohJH":"ELTO.. HAO","lhw-1":"LEE ..WOON","kevin9foong":"KEVI..TONG","cheehongw":"WONG..HONG"}} +{"authorDailyContributionsMap":{"Echomo-Xinyu":[{"date":"2023-01-31","commitResults":[{"hash":"386f15846f11932998eab5cf83fcb898a64f94d0","isMergeCommit":false,"messageTitle":"Modify card view to move milestone flag position (#61)","messageBody":"Let\u0027s modify card view to move milestone flag position for better view.","fileTypesAndContributionMap":{"html":{"insertions":2,"deletions":4}}}]},{"date":"2023-03-05","commitResults":[{"hash":"474c63d915d7e4d77b019ceeb413d45f69ebb761","isMergeCommit":false,"messageTitle":"Fix wrong octicon displayed for closed PR (#89)","messageBody":"Let\u0027s update the octicon and its colour for the closed PR","fileTypesAndContributionMap":{"css":{"insertions":4,"deletions":0},"ts":{"insertions":18,"deletions":3}}}]},{"date":"2023-03-20","commitResults":[{"hash":"f11c428a2421fb8ed121b74c7696dd8fa24efd9d","isMergeCommit":false,"messageTitle":"Fix closed pr icon (#91)","messageBody":"Let\u0027s update the octicon and its colour for the closed PR","fileTypesAndContributionMap":{"css":{"insertions":4,"deletions":0},"ts":{"insertions":18,"deletions":3}}}]},{"date":"2023-03-22","commitResults":[{"hash":"86cd747e3a04aefae98ace4ad49957478e9a3c44","isMergeCommit":false,"messageTitle":"Upgrade angular version v8 to v9 (#84)","messageBody":"Upgrade to Angular version 9.1\r\n\r\nCurrently, our version of Angular is no longer supported, and has missing Typescript\r\nfeatures such as optional chaining.\r\n\r\nLet\u0027s upgrade Angular to a LTS version, one major version at a time.\r\n\r\n---------\r\n\r\nCo-authored-by: Kang Su Min \u003c66008784+kkangs0226@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"ts":{"insertions":66,"deletions":65}}}]},{"date":"2023-03-28","commitResults":[{"hash":"4e01aa3e27ded15de76d6146be36fa04ecbe7f5d","isMergeCommit":false,"messageTitle":"Improve UIX for milestones and label-filter-bar (#97)","messageBody":"Improve UIX for milestones and label-filter-bar\r\n\r\nLet\u0027s update the UIX for milestone and label filter bar:\r\n\r\n- the Label Filter Bar has been updated with its background colour\r\nand font-weight\r\n- the issues/PRs without milestones have been added a default\r\nmilestone for filter purpose\r\n- the default milestone values for the filter have been updated\r\nto avoid confusion\r\n- the milestones displayed in the filter bar will be sorted\r\nautomatically to aid searching by users","fileTypesAndContributionMap":{"css":{"insertions":4,"deletions":0},"html":{"insertions":10,"deletions":8},"ts":{"insertions":11,"deletions":6}}}]},{"date":"2023-04-10","commitResults":[{"hash":"ea4c7c38f65e5323eb6d156902f9ea8605e204aa","isMergeCommit":false,"messageTitle":"68 upgrade angular to v10 and node to v14 (#105)","messageBody":"Let\u0027s upgrade Angular version to v10.2 and use Node v14 instead of v12.","fileTypesAndContributionMap":{"ts":{"insertions":16,"deletions":17}}}]}],"cedricongjh":[],"vigneshsankariyer1234567890":[{"date":"2023-02-07","commitResults":[{"hash":"6c6c8a74dcf109e0f7b4cf594b3a6a6c1a0741a0","isMergeCommit":false,"messageTitle":"Fix lint issues (#79)","messageBody":"Let\u0027s fix existing lint issues on main.","fileTypesAndContributionMap":{"ts":{"insertions":5,"deletions":8}}}]},{"date":"2023-04-10","commitResults":[{"hash":"384e28bfe1da526fe87490553fc9adeef09e9392","isMergeCommit":false,"messageTitle":"Better error messages (#104)","messageBody":"Add better error messages for invalid repo inputs.\r\n\r\nLong and unreadable errors are produced when invalid repos are provided\r\nin auth. This makes the app difficult to use and unintuitive. Catching and\r\nvalidating these errors will help us create a better experience for the user.\r\n\r\nLet\u0027s\r\n* Add more validation in `Repo` to ensure given repos are indeed valid\r\n* Add clearer logging to `GithubService` for better debugging.\r\n* Change behaviour of PhaseService to validate org and repoName from\r\nlocalStorage\r\n* Edit components that request for repo-based information to validate\r\nrepos before requesting\r\n* Change `LabelFilterBarComponent` to complete loading regardless of\r\nerrors received","fileTypesAndContributionMap":{"ts":{"insertions":218,"deletions":27}}},{"hash":"455f0a508efc0d909819a4db228f5acd287b49a0","isMergeCommit":false,"messageTitle":"Update issues-viewer.component.ts (#114)","messageBody":"Reset the `IssuesDataTable` before fetching and repopulating Issues.","fileTypesAndContributionMap":{"ts":{"insertions":1,"deletions":0}}}]},{"date":"2023-04-13","commitResults":[{"hash":"8c727a47193963c53183e5de8527e5ed43024dd6","isMergeCommit":false,"messageTitle":"Add additional card to show unassigned issues (#118)","messageBody":"Add an additional CardViewComponent that displays unassigned Issues.","fileTypesAndContributionMap":{"css":{"insertions":28,"deletions":29},"html":{"insertions":20,"deletions":18},"ts":{"insertions":8,"deletions":7}}}]},{"date":"2023-04-14","commitResults":[{"hash":"ce83ce9ede5f299e393106b54c44235c1fa20b78","isMergeCommit":false,"messageTitle":"Remove electron from WATcher (#113)","messageBody":"Refactor and remove uses of Electron from WATcher\r\n\r\nThere are many uses of Electron in WATcher, even with the CATcher\r\nElectron app being deprecated. As such, there are many instances\r\nof unused code, which is bad practice.\r\n\r\nRemoving instances of uses of Electron allows us to trim the codebase\r\nand remove dead code.\r\n\r\nLet\u0027s \r\n* Refactor and remove uses of Electron from WATcher\r\n* Remove all uses of Electron in the `src` folder.\r\n* Remove uses of Electron from `package.json` and other files\r\n* Delete folders such as `electron-utils` and files such as `postinstall`\r\nthat are used to initialise electron\r\n* Remove and amend scripts in `package.json` that are involved in\r\nbuilding the electron app\r\n* Edit `deployment-actions.yml` to remove pre-build actions from\r\nCD workflow","fileTypesAndContributionMap":{"js":{"insertions":0,"deletions":32},"html":{"insertions":1,"deletions":4},"ts":{"insertions":38,"deletions":566}}},{"hash":"1be4d82e5577b4c239e1b4dffa262c7aea96553e","isMergeCommit":false,"messageTitle":"Add horizontal scroll to Issues Viewer (#122)","messageBody":"Add horizontal scroll to Issues Viewer\r\n\r\nOriginally, if screen width was decreased or if a team had more\r\nthan 4-5 members, there would be `CardViewComponents` beyond\r\nthe page. This leads to a dampened UX.\r\n\r\nLet\u0027s add horizontal scrolling for `IssuesViewerComponent`.","fileTypesAndContributionMap":{"css":{"insertions":6,"deletions":0},"html":{"insertions":1,"deletions":1}}}]}],"weiquu":[],"itsyme":[],"Eclipse-Dominator":[{"date":"2023-02-02","commitResults":[{"hash":"62a78c9c9bcb54dad5f11f4f1c4a9df5b61457bd","isMergeCommit":false,"messageTitle":"Rename loggingService to logger (#67)","messageBody":"Fix invalid variable name. ","fileTypesAndContributionMap":{"ts":{"insertions":14,"deletions":15}}}]},{"date":"2023-02-06","commitResults":[{"hash":"1b6a9751bf31f1d79066722bfabf569027ca31ba","isMergeCommit":false,"messageTitle":"Fix hard to see text labels (#64)","messageBody":"Fix missing dynamic label text color\r\n\r\nThe method to determine if a label\u0027s font color should be \r\nblack or white is already present in the codebase but is not applied.\r\nThis caused some labels text to be hard to see due to the lack of contrast. \r\nThis fixes the issue by applying the style settings to the labels","fileTypesAndContributionMap":{"css":{"insertions":5,"deletions":5},"html":{"insertions":16,"deletions":18},"ts":{"insertions":44,"deletions":47}}}]},{"date":"2023-03-02","commitResults":[{"hash":"d20a4bde21e75f3d7dc9827a1030d53c7a42aa05","isMergeCommit":false,"messageTitle":"Add show and hide labels menu (#82)","messageBody":"The UI can look messy when there are a lot of labels\r\n\r\nLet\u0027s add a menu to allow the users to selectively hide label from the view.","fileTypesAndContributionMap":{"css":{"insertions":56,"deletions":22},"html":{"insertions":58,"deletions":33},"ts":{"insertions":169,"deletions":121}}}]},{"date":"2023-04-05","commitResults":[{"hash":"8679a25303ef744ec79d341f6fccf054e88aa11b","isMergeCommit":false,"messageTitle":"[#111] Modularizing issues and PRs as components (#116)","messageBody":"Currently, issue and PR html components are rendered within the cardview component. \r\nThis creates the difficulty in the future when new features are to be added to issues and PRs.\r\n\r\nLet\u0027s\r\n- Separate out the issues and PR as a separate component\r\n- Replace the old tag with the new tags","fileTypesAndContributionMap":{"css":{"insertions":97,"deletions":39},"html":{"insertions":29,"deletions":29},"ts":{"insertions":168,"deletions":102}}},{"hash":"2118df23222c094b4d1bd9c42449e4d068ecb3a6","isMergeCommit":false,"messageTitle":"119 fix datatable inefficiency (#120)","messageBody":"Inefficient nesting of subscribers in IssueDataTable has introduced \r\nunnecessary and very expensive computes to WATcher.\r\n\r\nLet\u0027s \r\n- Improve WATcher\u0027s efficiency by removing the nesting of subscribers in IssueDataTable.ts","fileTypesAndContributionMap":{"ts":{"insertions":57,"deletions":62}}}]},{"date":"2023-04-15","commitResults":[{"hash":"1bc8ae10f09ee8e0fe729146f383b4fa914a3e4b","isMergeCommit":false,"messageTitle":"Modularization and abstraction of filter related components (#129)","messageBody":"Profile page requires reusing code from filter-related components. \r\nTo avoid too much code duplication, let\u0027s modularise the filter bar \r\nand abstract out important aspects of filter-related components\r\n\r\n- Modularizes Filter bar into its own components\r\n- Moves labelfilterbar to a component within the abstracted out filterbar\r\n- Abstract out dropdownfilter into its own class\r\n- Abstract out interfaces for filterableSource and filterableComponents for better code quality\r\n- Further abstract out filter functionalities to reduce code duplication","fileTypesAndContributionMap":{"css":{"insertions":22,"deletions":0},"html":{"insertions":57,"deletions":56},"ts":{"insertions":236,"deletions":135}}}]},{"date":"2023-07-01","commitResults":[{"hash":"9635dcaca0a95c3f818fa04c21a9f1f23c4ad89a","isMergeCommit":false,"messageTitle":"Fix pressing back to cause issues to being cleared (#142)","messageBody":"Issues stored in issue service are being reset each time initialize is\r\ncalled in IssuesViewerComponent. This is undesirable as this method\r\ncan be called when users manually press back on the browser. \r\n\r\nAs the issues cache is being managed via a cache manager, this will\r\ncreate a scenario where the cache manager claims that there are no\r\nchanges to the repo but the cache has already been cleared. This causes\r\nissues to be cleared and no new issues are being loaded from the GitHub\r\nServer.\r\n\r\nLet\u0027s resolve this by moving the reset to be called when repo change\r\nevent occurs instead.","fileTypesAndContributionMap":{"ts":{"insertions":4,"deletions":2}}}]},{"date":"2023-07-12","commitResults":[{"hash":"5b0a46995775a5b0ece15aa9dd8c04b177a16c27","isMergeCommit":false,"messageTitle":"[#72] Remove code related to creating and updating repos (#143)","messageBody":"As a majority of the WATcher code base is ported over from CATcher,\r\nit includes a lot of unused code. One such area is the code related to \r\ncreating and updating issues on GitHub. Since WATcher is mainly used\r\nto read data from GitHub and not modify data for now. \r\n\r\nLet\u0027s remove code that is related to modifying or creating repos","fileTypesAndContributionMap":{"ts":{"insertions":0,"deletions":723}}}]},{"date":"2023-07-14","commitResults":[{"hash":"95e36a664223b50d1c84788a4f98fbda9f52dfbe","isMergeCommit":false,"messageTitle":"[#72] Remove package ngx-markdown (#145)","messageBody":"ngx-markdown is a markdown formatter/parser that was ported over from\r\nCATcher. As WATcher does not use any form of markdown parser, this\r\npackage currently does not serve any use in WATcher.\r\n\r\nTherefore, let\u0027s remove the unused package and the related components.","fileTypesAndContributionMap":{"css":{"insertions":0,"deletions":696},"ts":{"insertions":1,"deletions":46}}}]},{"date":"2023-07-16","commitResults":[{"hash":"adf0ae438f277f64e95778a877d174e6b5f92bdd","isMergeCommit":false,"messageTitle":"[#72] Remove unused code from catcher models (#146)","messageBody":"As WATcher is ported from CATcher, there are a lot of models and methods\r\nthat are not used and are unrelated to WATcher.\r\n\r\nLet\u0027s remove most of the unused code in core/models","fileTypesAndContributionMap":{"css":{"insertions":3,"deletions":5},"html":{"insertions":6,"deletions":21},"ts":{"insertions":20,"deletions":1889}}}]}],"vvidday":[],"ckcherry23":[],"domlimm":[],"jasonqiu212":[],"MarcusTXK":[],"sikai00":[],"EuniceSim142":[],"yucheng11122017":[],"hhdqirui":[],"EltonGohJH":[],"lhw-1":[],"kevin9foong":[],"cheehongw":[{"date":"2023-01-18","commitResults":[{"hash":"39e2e252483b45d0c12f64afd09252bb0604e5c3","isMergeCommit":false,"messageTitle":"Reset milestone selection upon repo change (#57)","messageBody":"Previously, milestones selected in the milestone filter are not cleared \r\nupon a repository change. This means that old milestones from the \r\nprevious repository remain selected, which may or may not exist in the \r\nnewly loaded repository. As such, the milestone selection should be \r\nfresh and reset for every new repo loaded.\r\n\r\nLet\u0027s reset the milestone selection upon a repository change","fileTypesAndContributionMap":{"html":{"insertions":1,"deletions":1},"ts":{"insertions":6,"deletions":1}}}]},{"date":"2023-01-31","commitResults":[{"hash":"45a5c1d6747ea7d9acb477ccdd4bb206beeff22d","isMergeCommit":false,"messageTitle":"Add logging for services (#59)","messageBody":"Standardize logging formats and add more logging.\r\n\r\nLet\u0027s specify where log statements are being generated, and add more \r\nlogging statements to aid in diagnostics.","fileTypesAndContributionMap":{"ts":{"insertions":75,"deletions":69}}}]},{"date":"2023-02-01","commitResults":[{"hash":"5ca8b21b62c34a8b36f764c3d619fe9e6720ed01","isMergeCommit":false,"messageTitle":"Move repo name to header bar (#62)","messageBody":"Move repository name to header bar\r\n\r\nLet\u0027s display the current repo\u0027s name to the header bar and allow \r\nusers to change the current repo by showing a form through a dialog.","fileTypesAndContributionMap":{"css":{"insertions":15,"deletions":0},"html":{"insertions":27,"deletions":11},"ts":{"insertions":95,"deletions":15}}}]},{"date":"2023-02-10","commitResults":[{"hash":"1cda6374d63f3b80e5b8435078489153501071f2","isMergeCommit":false,"messageTitle":"Fix uncaught httpError arising from promise (#70)","messageBody":"Fix uncaught httpError arising from promise\r\n\r\n`catchError` does not appear to catch an error on an observable created \r\nfrom a promise.\r\n\r\nLet\u0027s catch the error in the promise before converting it to an \r\nobservable.","fileTypesAndContributionMap":{"ts":{"insertions":8,"deletions":1}}},{"hash":"db01d5368ee797af80a251209c405154e27ebb64","isMergeCommit":false,"messageTitle":"Remove unused code in IssuesViewerComponent (#71)","messageBody":"Remove unused code in IssuesViewerComponent\r\n\r\nAfter moving the change repo form to the header bar, the `repoForm` \r\nattribute in `IssuesViewerComponent` is no longer needed.\r\n\r\nLet\u0027s remove it.","fileTypesAndContributionMap":{"ts":{"insertions":0,"deletions":4}}}]},{"date":"2023-02-19","commitResults":[{"hash":"bd4609dd755cb6c95f287b1e2b45088e5d00108a","isMergeCommit":false,"messageTitle":"Enable linting in Github workflow (#81)","messageBody":"","fileTypesAndContributionMap":{"ts":{"insertions":2,"deletions":3}}}]},{"date":"2023-02-24","commitResults":[{"hash":"1a4b23f59c67113008bcc2451e2fed16581d4773","isMergeCommit":false,"messageTitle":"Remove tests for unused components (#86)","messageBody":"Remove tests for unused components\r\n\r\nThese components include:\r\n- IssueTablesComponent\r\n- AssigneeComponent\r\n- DescriptionComponent\r\n- DuplicatedIssueComponent\r\n- LabelComponent\r\n- TitleComponent\r\n- LabelDropdownComponent","fileTypesAndContributionMap":{"ts":{"insertions":1,"deletions":681}}}]},{"date":"2023-03-05","commitResults":[{"hash":"22085d0708518bce82680042f88e00b7122e44a3","isMergeCommit":false,"messageTitle":"Create release for WATcher v0.0.2 (#88)","messageBody":"Merge release branch for WATcher v0.0.2","fileTypesAndContributionMap":{"ts":{"insertions":1,"deletions":1}}}]},{"date":"2023-03-06","commitResults":[{"hash":"58d71bf893f236ea000fcddd58d56c52f0b18072","isMergeCommit":false,"messageTitle":"Remove label-filter-bar as module export (#92)","messageBody":"Remove label-filter-bar as module export\r\n\r\nLet\u0027s remove label-filter-bar as an module as it is not a standalone \r\nmodule but a component under the issues-viewer module.","fileTypesAndContributionMap":{"ts":{"insertions":0,"deletions":11}}}]}]},"authorFileTypeContributionMap":{"Echomo-Xinyu":{"js":0,"css":4,"html":3,"ts":78},"cedricongjh":{"js":0,"css":0,"html":0,"ts":0},"vigneshsankariyer1234567890":{"js":0,"css":6,"html":5,"ts":203},"weiquu":{"js":0,"css":0,"html":0,"ts":0},"itsyme":{"js":0,"css":0,"html":0,"ts":0},"Eclipse-Dominator":{"js":0,"css":164,"html":127,"ts":541},"vvidday":{"js":0,"css":0,"html":0,"ts":0},"ckcherry23":{"js":0,"css":0,"html":0,"ts":0},"domlimm":{"js":0,"css":0,"html":0,"ts":0},"jasonqiu212":{"js":0,"css":0,"html":0,"ts":0},"MarcusTXK":{"js":0,"css":0,"html":0,"ts":0},"sikai00":{"js":0,"css":0,"html":0,"ts":0},"EuniceSim142":{"js":0,"css":0,"html":0,"ts":0},"yucheng11122017":{"js":0,"css":0,"html":0,"ts":0},"hhdqirui":{"js":0,"css":0,"html":0,"ts":0},"EltonGohJH":{"js":0,"css":0,"html":0,"ts":0},"lhw-1":{"js":0,"css":0,"html":0,"ts":0},"kevin9foong":{"js":0,"css":0,"html":0,"ts":0},"cheehongw":{"js":0,"css":15,"html":22,"ts":133}},"authorContributionVariance":{"Echomo-Xinyu":91.06514,"cedricongjh":0.0,"vigneshsankariyer1234567890":2146.6707,"weiquu":0.0,"itsyme":0.0,"Eclipse-Dominator":24404.775,"vvidday":0.0,"ckcherry23":0.0,"domlimm":0.0,"jasonqiu212":0.0,"MarcusTXK":0.0,"sikai00":0.0,"EuniceSim142":0.0,"yucheng11122017":0.0,"hhdqirui":0.0,"EltonGohJH":0.0,"lhw-1":0.0,"kevin9foong":0.0,"cheehongw":2228.8853},"authorDisplayNameMap":{"Echomo-Xinyu":"SUN ..INYU","cedricongjh":"ONG ..DRIC","vigneshsankariyer1234567890":"VIGN..IYER","weiquu":"NEO ..QING","itsyme":"LEE ..AVID","Eclipse-Dominator":"LI Z..AOQI","vvidday":"DAVI.. ONG","ckcherry23":"CHAR..USAR","domlimm":"DOMI.. JUN","jasonqiu212":"QIU ..ASON","MarcusTXK":"MARC.. KYE","sikai00":"CHAN.. KAI","EuniceSim142":"SIM ..NICE","yucheng11122017":"CHAN..HENG","hhdqirui":"WU Q..IRUI","EltonGohJH":"ELTO.. HAO","lhw-1":"LEE ..WOON","kevin9foong":"KEVI..TONG","cheehongw":"WONG..HONG"}} diff --git a/archive.zip b/archive.zip index 2db5379f16d9760c5d55d816eb5ee38ded311c2b..6039c44798f8b7876c1a51e317bfc316a20650fc 100644 GIT binary patch delta 201026 zcmY(KV{j(V_x5Ak*x2^Qwryu)CmZXIZQHzKZ*1Gf# zxpiqACE)eHdD?@hBnESeiyH{O87%Nu?=?Nq%u__{dBd?O zS$;SVY2ET_$$q$2B)&u#Q}q0E6mO?O`X?(n66u~~1q;X;H4mPoJdNi$E?mdAtg+w@ zD1EX?Q~MKPjnhs}_g~G8dImjTho2^jAW@vPJ)x3JI|hb~xq$e=y^-@;L+}*Cnj1sv zdH7$qZ)b=oFMr=2SE6#%uy*wI`)aWT4SMt@BQ0*Xn(up(_-V@Dv+q1D$GIcLcaJcu=tmb8iQF*&mT6jc0A1_4T&`Pq?AphTf)CBo|E^3gpzFm3`jj@s1yVmE*Az@DO25yyOFqUp^S#%(R^$PP zGHsnmjiJ0-lZ-=(_woF&d)pL6Zf~O%&laPe>Rdsb{>-SC}BwB;VNC>8UeHkgGe&WOMEAyLI_%;Axckar zyB{BM9ce|#G{GgCg+9~sQGJ8B{~m9wN2UDAs1tcrRI)MT)^flNxF~IH6by4IJvj_Y zH)^cB_0av`oO15&8a3ymX*s?do0H+=NhNxH`zGlGNY^%jraMUiuL(yDy^s#{F5EUt zt!(&0-nOHqV#EL^_!HCj@qIrmehWALz7s-w{8$%;aN=yk>T&*BJ2iCL9xvu&<-g64cP35q71E!PxY9k?~F%(giczEEttakyk-OfH@S2o#JS+ z5*Rd5!Z>UXjWOJpYuCY~k`D4ss_B<0Cf>)~H}-;kds0;gK~VK^)x?8$r#Ri+4xaA_ zI-Kh1L)VgxX_hS7qj&Xk6%CP1NM8*l=+2*QS}NEy-Exy` zt)}>Tk!HBt-KVlez(}-@=}R?E3KbJwFN?2x#|l9jD%a4I<}-70$`)tq>*;2zRM{RJ z^0;z5aC$u8qP4Ez>s<~JS-8?A4>aFPm zGyUS)Bs0$GM9OY3_adaC{R_SIVQl&1j&=f#u*7}^!}^ykyz!q7_QYRRTCk94WEuK! zW6V#x-BJa3&kT4u;XA6kL%Qg)$j^0Bw%X-liTBPafU?MYcCJSqjYe5AY||}jm%o{E zO>BZuQP!vNu4_ev&TYgg9)yaGL#%%(+EKil7AiLu?^-*=&k7`3svGs!m0LHOhYmba zu+C=aIz2OSoD>HMLnt>}EiLpc>n`kat5bjeq80En$scX3^nSfg?>g4A^l96*>ZKE2 zHi0`L1YFL}6!d653l$IbqPd6%@xo1+_tRSsPt&P~O08{bTMXn@_xb zPcFZ$#;qR`6Xv8F;*Yf2!*jzhRoqF(v{yrRTq;*A7i{FyXclLfR(SlPNAk{y+Gk$H z)i6kF>YR(LKRZ0oshns$F#yczu-G!MW-7OZ19Te6CsLm@&Iv20TZT=9yey9^n+OT! z*-|!6*vye^jo-drV6BqJts!dXDf^Y%nWnC4G^~C|G{dGwu@iJ93EKz>c z*SRAXolfMl?kKsCoX!}wo6o43yj+yghej03De^bCYVj0 z7gK8g{tdI`;AIpN8F^_7lXv3ocG3yPM*X!ZTldW!jOt%JiN;bUf-`nVL;)S2Qg{RP zT#d30&8-;|;3fsgrvvFS9YZG3>*psDgc$XDHlqaN9K0U#-o=hp1A%Q&t* zh%%|XlgtXL&%kTXcgL0!d2tthiSVvVV@)NW#qs=W^Y@y-$JS_P;$AcB^-7+~@#O8h zT>X^eUpFEZCWGcw<~bhaV0}yn_f|?})T{JesH+P(92@%km(2z7#H5(ea-o$(fY4nb zP=@R3^hLHd=o9-4&=-1$ts5DW0lZX)H`MXvv`G&zA($Z)IDl~UK$~i#}&(?p?Xzu*2z6*lk%B&<(UdA7=Aw&a{CI*_u;q zGUqTgWUjV6=3Y`7)ZaR{H+{5?_dDe|@W5qi^G;~L=NnvKD6i-CX{yoJc#vL<#(tpn3_=uF-eCLEx&*U zuz^P>9DZ!){H!5U15lljN?%?Y5%B9OTskodOu|3dTZRSyw2u9g=n#`-E|+>aODtVY z!=`cttAZNJ){q+fHox)GZ00I{ zPE6j~;LO4EBECT4Nzq&1cGK2|dEm_0HY41!h$AczfzNq#IvNpQhZ>RJmLw)P0l8g_ z#3d*;fN{C5^)&g{26`gnG8_up$LJ&?=xXtY>?wsXsm$0!UHA+60bin$)Tm8b*8~wsh3ICOz@+VNSNq(}{KR~Av=E(Zfm1JW?T?+hN*Tjc~(8=z3` z(^~%{rz{wTO?WvNf&}&2mo<(cTrngWpdIl0M87Gx6|W!=Wu9xkQp0fW)^078+(oq*biT z_@1!CgJ=9?5=g$GiJyD&@L@bbIwVd*kxLuecXsg^zQ@rnrGk047`*mXjMp}CSKodG z7&ZSl3pZAvGjXTyhYyJG81lA&9gd%peK1vIKk|57U7N-#C%gy&Uw654lGgY_3-3oWuoXgt%tDNd0!+#GX|P!WaPc< zIPBAu$Gqi9M+9!^Q;lU4w84~Jzj+rnPv+7v2bAPdqD5`t1ftb56R2}HghqT$bZ4rP zBNVsTNrN5H%9{yC2U&Oms7$Ymv+>Hp^0Lp154ZR?R91B^X9H#}uUM=lqG!(xgDT80 zRhfrv7Nyv!{o3#huKm_3m3*#YSAD{{56W;2G47bNWUcUcg6SwgJo{_&Lm@1K-`0)< zUb087E^O$~b|vOa+hXPcKTJp8+O@U-0&%3H(L@J&p|;!O)>#=)cX~#f8(Z@tXi^_D zGvY1!)B+~t%aR_sf&ns2iZ?#yM$&vZxdS@j(y&k$>--OE%L;aNXMl2@KXxy zP;$AdDH(u&;tH-+9Zg;!=w=PJgJ!~vWv!;Esa|7a*r`STHbH~}X5+|^G+dMMOZ1C- zZ%Igkn+FB$lXL|DT72FvVU9y{dU%JC(rLtkfMxPGQby8&`d*7#Ag13h5%_HcPi@gG z6%}>SEJB1^MvK)i+Id#F{u9F+Wga@l1Sn8gVSXup31OE>X>(bsYegTOqQAxYJguta zTBt-5azZI{O>-$|#uJoB3-4%j7Y*ZzX)45*0~6bcW_GET}eHl!6k)!^ucQm-p}E5h(xhkP25XU4}mPx!BT!bpW$h# zSzSsq{|cbXuFsxBCmj@;u-lpwwm^>6zH;K)q7)oKJ;R`7;mQNL7nzWV48zl8yfMH- z|7&zTJsVH76tI$wB`ZD4NrilRw&WW{xi{}Ax;#K}V}~_UXID@N31?t12%if()=2n> zACK6(wp~vU*CZSXg3vtwj+g2Jf8H%#l$AY@tPB8>giVJrlCk&`YDX9xr{W;St-&tl zKU-YHAYehn3tE`z!J!u%7|I9@NG@2l1U5BkGj>nG)qsNzzM}?j!VgbgHTZ-QdzYhL z&a5gbAiw>g(cXCH+Lry@*Pb_ zo)PBmWDU%K;8QffAxV%)S<%#9)NKlB)ynV}Yhxgb14!VsTZ5sNJ50A4YTFA*B(F(&-v_>k->G;}jZx{Gh3T#r?-lS;sO ztHxqM;o1nrXjz<*JMyNm;{jU@nuElTP{xvDmV7hEcg*)V6CqR3&Fvc(mtJG`Q=-$n zPE8$M7E)N1n&pBl1Vj{c8&G37mA`A$$guhhkAcyu_XVoONz_sW9Y~L`(4rSf(HVQp zXhPK$b5EbrYW_r&wcBQsuas-?IwLYnZZN6>Uo-eOW-i9hjKG>EUu6dGKuvH_O|WOS zlsNqhC!KFXh6u+D{6sd%tsRBw6O?I6z&abgKlM!*ROCkg3`qwK6Vmy)^J+RxZxIU* z@cvWCFW>d+drX6VoLjbWzPKFwNi9R#L6=@w8tz#cXFe6_N3fUQs{nEBlp*pkcFe$SVZvyxR5)*dT z+)iEZz@5sPYlK=dN-8~GEVPedz?d6+zxoE!8I zuKE@vadJg)l1Qe(zdpo+EFtfC>(|`S3UKFYq!<%UWqr}?%Df0Luep6bj9ENA1~!(3 zNEb@E97`KM^i!kKn{QD36g6!N6?;pNGV=gW$i2)Prb!+qYBaXSL!?99pK8U8aL^@h zS0(76t{lqI3mvnm#IQfPMi1Jc)WRVnXzEP z<#5JUvSh3kw+C2UR+gQtVw(>+RVL|71*KMkv!(EnjMEmW8aqAw5h=38cNEP?(ir7h zPQEL&VsXG(O4w9eeudXWY}lofhQ;KUS2Rsr5vZz)cFv#N?Oece8LP~#ZC`O(D_ok7Q<0)^|OH6!Y8*j1(ISbFQ3G1wAP4tBXU>o zgV-RPvogQMW}C-_34vHX1cSwq zKwc_{q}l7hm404AN;%#&I{1e}7&DqP3ISU0V$i)iQNDjVS5^`+qiXS`EmZ@AvZ^(wD|c{tYSNP%&Ak7qtzRH zmZQ_oxfJ#op}tuV7UBZn;IsnZTcfdI9Z zNY^uk;!M6N9*lD4zuN(Pbc#{L@lmHKr;_ubncyo^75Ha!_hDtWgCkd*|MO|*$}yp| z2!spb2Hw6_SSDU~LT;`5L91@3&u>kJc*h_e&l7E|UC$wRRFuzYD_-Bkk(Du*Y5-}s zg|rdpjE|#i+Uj2rK}EqOoNzl4BFq(m?hZropM+%>9kthmcjnm^l`cR1t?c>f;pn~6 z@eD1Q@IAt(8az`+qg{PcrmjX;j#T4gs0I!G?k{ueQ_j2(|B!?UE$G*LD>UP?8u+S30jv z(zl=L_exnln3%VV7Y#!sG%3zOxF`pDG091gM$)R?Rr9q94uyIywQqVUD@8<$#}@(o zMva@~=;&R;H9BM-O*?3i$*baNQr&ppqVwOupMD9xN4;KZn_|@*(PZ_h;sBDK7MUr5 zk1K6{=PrGp$Nq*zkgHmmGtG!k7QKJ69NDJ@THNGFArcc-+ zV5i2ViFno?GSsAhTr3d@^cZg0!^X-Jp5lP67ir<1x-XB;NQiSGpI465JEhZef7 zhXKDr+fvl!=TW8xRWRMi2f$y7C7YUij1vQH-2lkf+=cA)+K|v6k>^oT+HZlCT~VzG zD5^F^Ejh%OM4|SViPO7K`jh9Ljp-|dcw0&&1bG528?+dOzA+c%z6@#?d>x$PqPcw2 z_>2jI+_}@7oMgxE(HYZE+k`Ewf*cb(jc(5aDxR{$|$f-sUA6vGa!K@PuyJujqzwD^8_ zcsVgLEKUD9yt()R_~L(cy!GmdjJJIoRX}GXC9tkx~429KHodgwd2 z4St6l>g;mZS#?a=Csr0#An+-BrfM(|oYG3^kZ81#^67_ov^Q#qlvEoz&9PUru-ba6 z{65K@^&X}_pI@e-L_{p23f{)ER@xYJ4yxqC?g9VpMZ^FEOg8WvU&(0|j2ZJ_lKPe! z|FY33NzmV-?cL(ZELz4(73GyF=}@mOZ5=acBMmROelm;LfLijHr;&tU0y4?{P=|q) zDtqHvHW>ROuS!5%daBOwgKEnW+!>?ODl<0%@-+IajX8%#)NF4k03|Aa5s{H0$E*RW zT!=nMg)>(MuXu}4Wa0)UR&p&_@%Zee|~ zs%*DntA_n`pFh92n7quui63LzCzx#@3~HLsdSK)N=-hAuz0l%=;LDqV(mf$5^oBNr zj!cVLkeWs0`XLAu`GEzGXLBjsKrwkL2gQwlEiezU7IM-pgX!pO0^2pURFODKT zKFq>_WS2?1XSy&>;FD>wOYK88DO0fft?BA~OG}`Jr{PNH0jq;uZ$-<}&s~!au9Fyw zgtER3Fn^_G2)@netKLr@X=Q!28}cr0Muf7Owy5{$Mbv?*jxbTpi&O))xGR1B-0q1o z>5bQ2gv|#tT{~%_p{yKL)e_R4R=jJQenY@_$(AoV(DOkGnH;0g@cPSci*MJjP?N6# zoyW4|r8k<$fFGp?IBzVj{Qb)}p6PK@(`qrcb5(W}ZEnp{ z7|Xhp^@;94H0hjLT6C?hDw(s~e8SH_pM*kjl*7KO!ISB>ZZxH>^8Zs5P+7gUaD;l+`xhgSL~go?b5D z*x*W<)WKTM_;(zdcggSgrhE$^nBnGg={uErR?wp_dfJwU6HV^qfBYc@;`+=0gjq^Yc)Nga?x#NJ0X#Ricj0jod9Hq4*@%-PZ>Zv) zxZ=*VTxu?sNj8ShjR25GNH@X)CZeaD>2!dYHnESCvC45-FbV03&=LPi1&z?XJ zTCkka)i|MELW8HJnc#Fn$jLvzW9cy>s}?|YW609%N%GksrU=l$_n0M1^g)H!^mJl1 z(NKSGD}hm>-oC=M_ZU!&`7%)2IS)&5ff&RsJ-||*vqSn%7!f}?e$K&HYl-Rrh*B(h z6mTzM3iZjh@#U@u)^5c{FV?1^kl-ZB2Bn&l)fL{K74noA)t6h+_Bp^%L;i6UfxQJW^V+U0q-=dybaI_a9k*W?r$RO9nC-MV-b(oq}s!1Vih>c~vh+=DxRuk-Nhcwyq^ zxV02|YBI_q!Gn^tCo|{N!{0wuH4X9)&Zf0&$5^aBs2s6};aqW9j-FzFiSh6amd4AN zY}NN2o+yuDzp2O}OnDD9iw4GdB$Jbd7kg$8t)6Z41vpsLC8P=OV_^Vf*0JaH(CE-h zcpT$TIe^y@`z~#?sM*B-BxTZ~w!2ErHV5kic3Fe>BVzW|nI34YGd`c5BX+HT_^?P9 zk*FLuDc>M*eP-B1T>0Qc7UVdeDVdt5S2IexK@-(MW;n610voK*{}xZwm`JdS;&K@{ zOHw{k5#iT>sYiil4N%tPHGde|)yYbYW|#w4!x?nymZACEZ|V`z0g~brMAqdFc0*~| zM2agM*t4}!N?NilYEYysz90WKtGud^(1)d8BYZ8~oGaO0>W$%ZMdWPF|Dw#|7ZlKG zUjAyZPY<|{X=fKP;T)}aF*T%(oh`s@6Tyna3kD2?gNb8y0L(UFrH;e8JRiA|Pq{i|Aif^6B#{`$QhjAVtDM=xyhPuM0xr*p zm=6sR9C%U$zzYhgu#X1KqTtSpcxObd21;5(DZ=t!w$ZSSvmkkK${yv08;0QH8L5#B|knJ&el^>2u?f5}R0m|JU<3M(!aw zHnX(-N~ym!g*TY=+03?>i2!SysA|=j;v2jMWFD$0Q)4nip)-WhpBbN@^F(72HsCKC zB9`z)TuVEjPt~(%N%WjMa49aRhtGTaee4lsfV|d8?D5?xVrK^YeThJLQh| z{!-K2YP8_%+Yj{e-4~tyef)44aGW<46IH9LHMCighx<7{0ABD5uKq;h;phJ41DvW* z3E(Gpiw>d<*3M5(GzErYdVFqw=BIMEy@`TR2M_{huGIvMW?&ixT=g8AkY?c zMyj$Y?NBh_Xehu%4mN|qHZYw5)ukmRCRke};X!+6KRa{td6}8>XK&+*#G zKL^k^6!~nEtfng~w`w=PF6Dl?pK*7+Cjh)gyIKmv?Y2T!=^FR&bw~tlM|r;eeLN%` zZ=WR(d%Z8R-Azfw8vmND;2-tEU;Fjla|52CO$U=u&$NE>@zUkUye(zK*|Tl0l*j$C zXWy;%m^|=kMsA~{(ywiD5te|VVb}`II90mB>Xvuljl?4Rm7N5K9cDJ=-BIIM?+*A; zyfbEz%IHzDn^(gd_~km|H6^02dNwJR<&kz%wf)^M2cbd8KPONeRd zwwlLUX2*}$CV;MNNsq*bDvQ7aQ6#3x!c>g3G-+*iH%GGCalRiWHBL#$!8t1lbZSD`KhUCnh~pR*N>FAHUPVT?2*^iw5t;q z3WE&4l7)sS&Vvn(Ze+Z)Xf;5n_$pQtKFkT>38YCdw+P=QQBjO1UjY2`!CU6H2$fv& zORKr097Nn~Ia!40LJLmGgWtQ*<6u0MaI*ztuRk@=Pm7_8;Z9+5%Vf=s*Z7TR zEr&5!r`r(~+;j^Es$IKf>vXpRe!I;65%|qu_d}mRt7QcoeWYL^z^-u|UcsMc-|>8x zu##5e5s9-mp!=79HYgxj^8p8?7qS4Jgg$m&SC}1b8oF*SfCB`BHC(jSJGvl}bG!z6 zMOnp2n%wEbEp9r#$|-9jE=IeYSZE_Z3HKWTo@dGvG*;Ngb7V~)ZYlC2j$E7MypFq3 z1;@!+{1tJOmeG#|T1MWNA?L5w{XeH2zZg(FF=C_^^BFct_y~X`qI7cHeB1wVG_t35 zW!$pGn?FN1LCXfMvN&-)TOoi{B;wP?#mZlII5iKyoWNnvMuJLo4ymN{B*gHFngrD* ziZDj@;=h=L9I=Xb;u3mJiI0}?xcVwG>fuuPTSkJ1Z^6Xl^9rb%*j|C*my;%AP^UIL z*32vzQsPHtsSD6L8V{>Ne>C#|cKbgBTN+4tm9J2Gf}L9ArK6&ZT}u=U%NIf$l*6U& zaKdYK-|Tt(gy#81CC(cWe|`yQQQx^PR53Q6d1)@&2r&Y0^Dx(C7%dVbuNv@<19#l+ z>U_rdilAgEn;l?tBcYDgPAdqZ0T9CbN*+aMNDKE~g8~$gPY==YaQ~Qi??LC)Q?ESh zh1`~?MZtvO7Y6jbqK(~(wFb5YJekq%!OA!hFp|54dgywkl#>2cY+zN~M^GmXHO&8}4hmd&Fl zdunkqMF@b^-|H4%AZlmAl%7S_44iF(j;2wGvikQEE3I*YkJ{W~uPequXv{On?xs!a zAi~?(E;bvgQ4Azw%k95l=7I|)# zBqL!lroHh-81IynR7MnNHirdM~?&9_F_4IPPJ34u}(W5A;UJgfs zT8e5mcTvQKeq)0Dz9{+WM(58?5=!GAy5;%Em>Dn1ArPG62J~RZ4X^N!QfyXO(aoq@ zs|1_?^UPuPoV`2j$Cw`ir`SSu_y;jYC!30enciwSO)$w@e;SdSZn_AjCd;-5VX$^( zbg5=Bzr59jP$(6a5vve9EI}{D;mxaPWkTk8&S*&eB;jxCZZCXIaLNwFYxtoTclNxU zSv<2ZKb=2`(_knDsglE8l*z6jzTmL22?uymuH=4;Io`)+f`|4>7uVyK_Wa-okmM1r|ZlN_7_4fn|&t+>J_F47QIQaiemLye(smmUh>{!}JeBe~Sn9%bb2~p2>pwQ5t*+>dZO!*qH=%z?@tL}mwMJ-NnCg=z_ z+`5z0MIo6Mq=A=f+R038S*1jLuLk@bn)^_i(OS+t@xx%dkp5%!%s|_!RQ!N9n|E~6 z(egtbYh=hq+xX|i^-css_|Zq2)>{$PS$2DWST=Th>F~cWxs<3{Jp!V7ky>?I4C?*E z;~;Z~!<;3Y6Xo6dO~Yn{DEe-lElxyI>YNt81hRgg&43_GM6oQSHYh?w^v$UUgc`+J&I}BdD_Ml zouvBlT%?F&G?^5mzI|*YjmrR0oj_SYt+LoA(#fz<^T~e2T`pNS8<5-!2YB1Q?f^(; zQ`v3TjCCP(!Rf*;MT6i)e*-8Re&B71Gd66{H$P>{S_~qLbL8Bv`B$1KsNkM~bgLqF z2HvMCBS8v0SgFB+JXk3IRbs)MJin|dm>9PoR;kIidKr67QQt7?SOOg3p2X~0^CaaJ z-gF!6g=HgYBU;c`jnM-~efe!*rBdkw3ce7VR2TdpnUB*LD|KuIdeO4|#a?ITB zZIaxyvG!2?GT_~muTwO%xqs-ZnlPME+>R^Z?BFJ{-S8s5$b{R{G8sBgo*L>!2#(A&j=qQ6w2~R*{A= ziwUSPa`Pvo4hprG%2oj1-rnTl64>*j^Tls`+;1(NE>Pw~)36URmt_i_j1%p&I@|HK zygWW74lA8-#Q_Y))zd7?fa^&7Vx8qt8+^6jWY|UK*M&2I0i&)f9wKg)eAQ4kQIedh zHX8enHC7hu+`|U1!c6S?c|uF&|8xtips+0Ab4`eFp!q);AIs#0SKeHZSN}WLTDOPw ze(E!++AKUNVKBr4mH01*2l#2mh1u*j|H4Lj`(Xu?Gr;wlH&X2e(hVc1p%r(o(NK;9aZ$F`YcVbZ(L?29WTv$Ko|iFX zY?Unz)DZO$spTJ>S_=rRe^@2YWRJr-(Fy{R=K%<%NpmsI6$_I6iJz8IX1#&dU?N7fshQWV7+3i~zv`HILod9NN+;Jw=B_!{N%V){38u~@ zApqpuU-pPJNTRN3EGM|vLnk)97$J2~?0uz`rwQ`RyDWN^EXMYh>CO7-^ie3PS07!< zN>p7C^!N)(S)u9GEb{K^`9)uhoQvA=N%CQ!o9bjQP&zO@4zxSOOPj2c?un=&E;1W` z|Avtfwd~q0r=q`mX8tv+{Ve(<60`C(8-PtI?(h5vi>vReQwL}$|D#xD!Ywe4A8(y- zrun&#IHB8@&m6^32rYN$FwyJE|9q6%W&Gh|k1 zg&7zcLy0lr07uov5VGYSf$po8;`U0(IISKyh8()}wakmN_~DZ3d znC)FhC@PF={Ns&~-HoG;OO6)w6teX{^(=b`7tj z<(JvB0c){-ZsLV)L!Pa6T}~v`t&U;g9E0M8tNzs!y^wrdRAI@KR)P6RYmf7}tS9jd zI-(hFOA-p)?|8OY_*WkDxG#{y3D6U9ztHhlUSHPeSfgB{w&UEWzDGq=-=Yr3GZZDE zed8=j;Gbq~|Cdf~d0>+((b9b+`CF-P#Z9E(eEBW2wB2r{MWGULRkG3W+drF65gn8e zBMvF>bcq(~(~tT)K6EMmvk*lh{uYu5G+Wm}%13E9mq&jmwE2$@!N)}ZI3Ps**7UI~ zuz&13{N*Vh=8g&o#869ypIk!rbViYPIQjdKKN+LpNs5!=QLQOo^XNVn+?q?PoiKp9 zq#2i0YMHY!yJ7JSA+E2lVSF**wNC;2m1V|sr*)B~&^=K5j;;E_S(6yV0NBfb+i!wHDz~v-!*iyQQ=QxjkY80#6$XVEWKmq0;#h&6 zkFz zST1s|Cr)QA%+`Rb6Sl|uHUy!{Q=U@8(_RSe{M4-R-F#U6mXR_)LqoHhd2Tu#+&S@GT({zx}lRRc`enf zuL#bgR;C~4C3xfSK7e%Z14Q10oC_+FOx#%1zMmH62NZ^XBpH+~r}5SNU;g8gVGVX; z3=q_BNc+Y~>S4+@C^xQ&bI68Y8h*91N& ztkw|jJ0_|S%U7^vrEswoNMm~Dk{qeambr+I>dnQEPHCE3Z-A-^n+?Rh_VWNOaZ`M7 zl+VaoHTg!9Sv*z^XnF)2O{(s`_fT?DVqGw(*$E~QBrr*`^073SnN^w@l9JdObTg8Q z5aIy51lW%8MqXS428?6NSO|@zYlOUdcqvSBtkfOnPUpNj5VP&XKz;Fr8KXd(sEx}f z)W}h#pc!yoGr+ME&!P3}^b$~>GO&jr#YZ_sSgVB1kHIUqqDk5oukXTDtB$uulA7>d z?v+BLzx?YRj*kYoPlt5;!wq|!28*6m($Kd+sspdui7r%+LvW7Dx}gs9#C{OXA08gjL9zoOIPVw$*mqp zz|^3NbS%TRPrtHeombj`X@$TxMfM54R)v(hv3*nm6tb8#k<59yUizjBs56!mXmQLW zYjU@@JRoXuc99!+Bg}eNqw+n+AO2_Sk8rDvi%%Fbr)nZYu)M<@mdE31c3Bd{6(Lvf zesrw71Ne<82f`u4LQHt7G5aUZ9_Dw(KwmtTBm4tZKCKCp_8-nKpn+T%tjqrF1z9P- z3X8(O%*4yyJd?^Z!0YIt+10x&x~PsBOiTq!ja2tv^6Cee%m@Q`;AtawPnG}0imlq$ z1IxGA;G(PSyrPozKSS{D3_YzkCDukQJ>T$T0lwhRS}9y$+I3qPXje+*2DHV05Mx%O zH(IS;+SpjJ@bM}XC^+?_P}YJ?G6skDww5yyGod4JHscoG&M@U95c(w*S(=wU?=dF$ zGO-x_f`a6b=D)!eSh=H#5b?{Di(OMUVuS0zHW{f63qwK5XV<-0cU1H>KwXr{?l&syN-hKf4~+70{5%Ore>4;_HX z>y}8lGY2;Y(@bkB3(&RvjYSnYQ%cc*`}v$Ch;`zV{3VZb^1Vk|Ec#^sy?6IG_jNnA zF|qQF{SGivpAVw;og&NOeJ-cg_+YS23F6F=IJMN^=ZgG0maw_xs;*`2^gIxDS2K;#C$d>GmmJSqC|-`p99Pm&{M`PK}mW!=Y{UyuVo zz-};>O=r(mb6Og98u|w_c2$6J0I3hB?2d)aL?cum z+{U4H$vbw?&AcV(n#%a!Yt^F183RO>5fSMjQE?Ie1iu%At0in)M;2XZfJz>pjOE70 zpH6Lk*czI5OZAfM38qIu5romOcF~?d41uM#1Ntp}UAj-|K6~K){z)X&76H}GC>d18 z=Z_h4zLeZqjULXsEL7&HtFL~UVv(9!6_`Occldj8cZ)8)i9Ye2MOdNDYqgdM1M!e} zE(c;<@c>>OX?gXKzemz;089!=HUI{svUZhDv_)yt4|DynW)94r6rX?fp#=Lyu(@8t z91IG!{bD+$(gkf(+L6*p3qFIJL+q#&3mmSKS(G{Eo#{un^G|7Hc5|ll^5Tn^&HyUJwN?=l+V?up{!jENAa+e@ zQzFq#{Rq(3_fxiJN{JzsgGW-d{6DIZQ21oE?Xa3ckUGXwM0rWutdSU9g%v$v}b_r_!xQCox;Chv>a8a2^PE5 z4@FHCtMx|j0FCwe0)J$_N}U8QI@YV5`WHMsi&Wj~kMY$Hs-`EecYH(Y1x8a80M`Ub zO9^c07}-lW7|}5GLGQ<8R1%gXOe!bC|1#Kr&aM}#NgJ(j%8*FX#Hqj}j27{VwT;*8 z&JS7IHM>Xv{Z#%1i`50KFbc&JSo!FGoBOBB=?Bs<1N>z)`S~5h6lvDI@**5CHL7H| zeO+g2G=4{9j*^7Vo#zzHhY4)V9}!r*+IVw;KUPrWR5!2U{T$iuVWmQ}#aLs)28CVo)g(gdmLx z%QnOZUO^@q9FXQ?vP7Vg4$c~4lP}#h^+j2;O0aX5JpX%Dgsc2N0H;7$za6W8hQnLK9><7gOb!K7Q3qAK zf3h3)`CZ9HHf7_r*VS~Q?qTeuw;tNk@H%|>;3>UL>wudSVR z4Oi$h@jOm{A)XKT-LGPp*{ZAuP7aRh@&rqqg0%wDhm=8@{OS(sE>05gQOeNUtSWS0 zJ>ZT4WmMgxkPA`wiJXl3%OB+qR*vfd`qUP)eA{C!lslZ=cA3zD2WCFw!l=64F*JUrId972iOua-2ezWvJ`P}Nynvy z9w?YB8{fnYAXl}dUXk>Bp@^^=w}v>DLu~>rx7(V#rPbT^Tx|_})r`!X-W609nSQQ+ za~WwUlKN9yRrWfY=QOSb{F-PC9!&wLpju{B8kPe3F$4$RMhV>F>l)XwyzGxsecQmt z^RaaR{$s~A{vQKQnjjhjp?LZsh*G#b92gpy(^$>?{_mJc0Y8>@MZ`HdwVt-rAm0GdLIu zhJ{_+kPeZYfuAYUj(*yi(Y~KuNk&T^NYfIw805HI45`h?nMs`ohG*_8#~a{(#BC|k zShrzg1vZxwYUr9@$Uiof45?N2I`tH|?#py~`Cy2!@6HWQxkc4LlKAEZ$p&)`dp*#} z2|9N*JW;J^Q9_W+X6Vn*^eVk2L!F?|bcbJtzCb6ndG1L#ba{5id}YL~U6Z_%ohCdg zxWRd}zi*}LG4*uy6OgTE>|HT`a!t*iQG+cHoy_B4FZ{>npN5T%|G4uB8)jcD6baMr zzO`xI+BUTu0*b<$!~(~@2OTNB#)t1tFaGE9?C|siS;I}U$s((}S(-?gYV$y&F)&1hLk?OIaW-gc=eHj~~p z!YbBW*mNcad!a6HUif`hXffF*%k`!5rMNYGAHQJn`}zNMV*W{gy#%FixR6d}yc5V? z1XkKeR{?pHv<+w33hra^9&`ESqhx7##c!h9ILpshSFmIBipxQ{8TOaU1IS!7#|r9- z|9E;E=UFPl=j}f>$<FA7g=W%|H>D;Mh|AM29Fk$i%!4rK|;&R%86?b@!x_zT?hc{)`YRMvGD#AGDI z%+s9$d9CX%h}(2l!=~20Cb=l@^mO8@z-`2#C9N;nWs02qg>ZnzeKJSwxMqs zc)D6xCE5{>Ax+USVO`Ct1755N&D2q^@83l+pz*AhJF@YA5q*N{^#he=PL`GUP>D38 zQJS|^89h+-wOl5qBXzYeD~;uR z4ry`$PSPBI4RUEpI`EiZgmSPOH=L6BXcmb$Md)c=BnLasR{696{%L7`VKq{S=_sbF zJQu&$eAKq1TVoqXMP17rt#V7FwP*?l=py^f)2`{(84r-2!lM{Fu7XJ(x4w?F!}t5I zjt?(SPfkCaUcNg#Ki_|Q*bFJw*GxQ>*4Q#zj#kTm0&bV?#j>+CHVeu3*4L9Z?W#6T zPHRz>*Oo@nL|aa-tRiQzFb$^CvYcoO6KRkNC8|nV*b4fjsjnl=QzI8m^Q&5?n%D{! z(lj+}rz$gGsoRr=@{Kf3#rRjX+%4sL(onUL#;KRjrtzhv*G?K*F4A~tf%~~*08J31 z2vficKcgROX}x^kSi%T0;|E7@MR zI8J4bCttID3vH7UO}KASQ&|?g?8pm@r=2)|oF?(I;G@^sB2J-{iDz-_GKRHjRFU_A z5ZLl6Of8~1lTslzC0lEKN~o-DZOso0p=P}BY+;wiM9ov7!>KnZ&qvKpp|5$Q@E+%@ zbTDW|=c(EuQd=0OLN}blP#RTfK4Ilmh$$|R6WdD&F^IP_`=4(Pj`Oxf)1E%Rz*rnUue^px|uL z$Z;god!9yfE)^KG(I9cw*nFtl3x8kmXrY4H3~v=;9zHA{DJO-0Mf!@eC#^Xv1}m2v zVs@nZtE%aBa0+tX26fpPEtk6fX^l~TlJ&a=txF#9-!hthh9b*`B z@85l`$0P6fA6Vm~Tb{$^&I21U9Ua>s%Q-I(l+U6DTYfk@#v^3$lnp^ej2nXAETg(? zj0zYb{E8PU4x(n;fEb%2F_543uYil3&5AmO3s=RxmQ%ugSu*oTZMh+#O zLE#TNlwpY#!VcxXXTF5EXy~hhPH0tV`UBKWIydF)8tSY;DAlTTV_g4hQYN%4gOuM@ ze@yDh;nhp26bJA$yWxO!#5<;{tcKW&3W;EninJjLn0`U6pzGC->ej0PpxvN^*1-r(%BFc%6eFQ~aVdkj_((h{j@CT{@eA4OW-TXYmB2!!h+%4f6^+V6p<&Bt z)LW1cY=jsC76>JMa@ew_pL3zOf{FrGQOOqrXIF++?`Vg;W0`vfGZQ1$;zA`l^HqPDGMmMQnRnqtueUC?_HY zg4Is@C@-x_9@=+*#|2A&NwPbGAwY@;l1tPfY=T&kP7Y2ENTX@pKZf~>w+bB*Xr&r5eOtYns2sdT9EGFCAvutYIQBYxGo2T0|e#;Z_ zP+kBGx!Asf8scJjqYU~S$?y zVl=i+K^`K%dmD#rp*zzrGYGK?i}4;}A`JsC2A1QV3A=e(USx_41e0{H_jjljR>TjN z^}0Wt9bwH-1ta_jyShRm>$CbHPad{qHo|Rr{nKEOzq^!?u#V&qS(Ru>sHm7_g< zE(F=+;sLz~j}m(%5mB$<>OF=XJI$7>WnKHbBe(?K8_lX0M@x9q^Ko4jEGT@592i#z zHVMIaAQdEkDCS0)2WVy^rBi{PxNtsLKlb3*gafqBdV7p>s1aVcmE*f=$!`)*<-A1U z8QlPOVz_n)ew`G^iKr?Rso6kCD@ycZq=}B5sa-2xOFl)uR;75nx_d8l8_|~|RLZn{ z6yIgDC>bokO4!nlcmaI_^Fr8{DuVJP|ZsC5o=y8YJ2^Wrs*|hnAo(c<<|bW?NTo~(OfU&OhH)w zp1uj9N&X)9Ejrz_M5ZEPm7@KrXi6dz~Xud#`$ZSd+opKx_5Mppq7lDu+Jn(ZP zY*fI116S*W1bl_i2h;_bw3pazl1>-MNg`KR!oocICj7wtAs)NfeH%UfUaK0;j#8LF zb<#&U*SU|n4lM2(>9F2?2iK#rVMi8sR&?GS`i?H{x#(<)v3gz1Z*IGxP7QGaTtdJd z5}mEw@OXYxoUW8XYZTbc6dhyp2#3=7d_T zt(2{u`7x9+3*5r8Wp|#hH)c6x@*9c6KTE8b>nAg6e=f_VOdhDCCjGYUVj=7daK1lE z77f|w&oE1#4>vQd1FI?7ruBImO+UYid}%K#H6^pCH;7m6bet4#J5p^Hl8uTvGbqH?aAwpT z*gCf2I44|Y#c6Qp{#ki3Uq_+2?!;!n!!=QYxId)dT?~Nu z*XHU&7DD385o@4Kpj+ zW1jJ=)m(!Lu(N20WoRm5@+dtAG?p47++R*VWARc{%mrrMQB7`irJU12&(iD1RH{>0 zHLZGWpD%0`sD`*MUSG{})tqoLXw`^am|2R3863Gbh=N9b$>Xe z*ftrLP*tcltrJasbYmMiwPZVgn3Y3!yt*b~v7=kkueAk@_qlxQt4$m#YGkI$|{R zWWGTljSVmwB#4Il7M0Y0U|qh^(c)rpvh+B{3n-D3iTH(;$sNaz#PfN|OLmZ@sY1(p zDV&^J#J~FFL?TGO4+;soZ&4|txQol_P4i@;X))-iz$qk0dinhM1jtP-bd)eqdWD@O z_W?-=@XSEl7(B)|vvai}duCy-98%xbiqON3r1Rwc~v_Y4aa=rFm zypZb!UM%L}#^lr_ltpsgWu&DExpMU_4V|9U(&(e~Dw>(_71t9-C9tZ^9ogoGv_hxO z+(rYU&{U&)vQdyH*V!sXTBJjCpZ=JWlb3YtB{@q8V>4AjbKJWCZw$6MP_xZuL(N8F6ChQf-=v<2 z3O;zzN1`-;^8Y`2W!|Ud^g*DF$KbRRL)`Bd571g2cu2>}{+M~L2dK7u`I-9OQ z`oGU+t<{|8(emc+$)kvoR;7a>gj#?8YZj+N+2fEccs>^-R##gXvg~@O%2y*O$gV12 zL72R0R8DX79h$mx75^qtDdJut8xqa^>a-*W=C($H=J^zJ zO>pMlQ7O2!_gIn8d{0*Fjs)$qs@;|9#gl7@*DuyopHtFnw2bB|?pyqpchmzRA^chf z3Mh4m-ag}r5uPKd-O7)=9S4=dlLz`ZDoS&IQT{GU#bV^|po{LYY)_-<4IeGk3(Be) zC8DX(LbqkU>mD!(IM^I;aR6QGp@xsL7&SgzGrS<><87U0dd;}>hN_Z(-6QB>>%LXg zDp!j(5KZ68IP?xBNKbKxa+05}+b?W5BOo`w-#I{+5$a2+h9$?N@?TTNqsF0x@tW;_ z3et3}!O#{)8SmXA2n%4)X?QSY**Az>KfPugLHyW^Lsem-3}c+DhrRs=@nD_w^R+M! zeZA|1c57xG#DI~Qh9Tu?G1xjPpcA9f<*Ipj9&!wH1|A zlzyaNuabx)P^TK_ulpAVKOdf5o}9gZZDvvvUkEXj3-0F6e?nm<&2H>!+Kqm^eNfni z>f?hdqIPj|d2)LA{_^Pk<*T!kU(XNEnjL;nCDh7H#^lPoUsV|kaGbB!6jFP-B5>Q! zp0N{Iu|B(Ib=rCu=N(vFXgNX(H7C4eVs|g!@4su+l+&{We-Xslp5$}a5~q-VCJY^d zbOT0C0(rv7-2>AaH5wgE0%y8!QHZUvPdcr7AxEO7Jv8MKlY5qCCHTW;=n7D16jtEf z$!nK7y`B>aN!t6h$qXo@2{U-Tf3c5HzIP53B2y&)ZvVe8k1h`1onM{`=5lIPP273@ z9BH{%WD^OC3G>t(-L6-ug#dPceMrJ*x^Gbkr#r%qh|>&;up>b=kqA2y2Gf0uc*@-u zNk}WV+AX+aSE)>Gn9fzU^S3I;pI~xRKy`!X8;aD5e<4YvOtCHWFkT{+_(({tXY5)u zyAs-gXfTmk*6WNoWT5Rxwp|Y8UGSNsNzt`!$SXmt8#y+tl<@x zh&k35t(dUON=Q)3MxbT$*3>=ZL>#4E{577+t;#v#`j;=@Vvy_kCfs9ihO&XkyJs>XNUV@2;nrzhhY`P&VmgG7qFz!SISvI>wd^Jwb zK7S562x?t!YY^t%p|E>@eizAWl-+46Tdr>>)Tb?1u8RLq|3`<_D>wlMXa-!sO_8Wy zj>dT603Y*C8|c#`M3{sab>E`-=JAS_Rw2W#$hi1Vc7ps#63b8Cdcu~4FS$<@!@`Ra0ctbXS9*?t9*n&stb%s@W zL}Hv9V!*Ip_9uq7iA+5NdMzxD*O^p_A$2HZMwZIK&leY`%s8E7aMx@l?MopnxfI+$ zXyUxOy`wCFP=Hj%Fp2(YtLOHMk}t7eu?{dtVJ!dl+w4z^;=64LnJ@#{Vn4E~#weTk zGTv{zaiJ-Y;O8!X%F`YP4qkhtVdF&t*9=?3-Gj%?t@yLBfxF|TGeD%C9F_B7aCu@K zL8RASrUkJeA7)$->+K0$TNvGiDFbX<-eVcY1NOG7Ta$|N$<}{bMtQVgSw5FWzIL#| z-%%PD5t_b_SiG-p9e_&U>#3TrXW=$ZEm7ne2E_V%N@b9L6a0sqpem194D=$@c~s4~ zyL1S=_#SdzTdo=1nR|xG1@#_3|`b%VGp@5ug~IOFzU)dG!gG*fm&tLhTuE@F{a?rI?_mETC6`Er?PSkKsSyc7eYc`h zYOv)>mdWrrs;E`)*hWS0H0>#Wg}z}Q3HGAB2YQizkkOHA)3KkF@m8??lw}n<58nrK zy^a;b+n_=S5jJ*R!^SiaVqh=K1V{3uyJ6v#>;q#m5B<-nr_ng=w909js6rvThc@PHC%Pj z&iI0yQF7)u%WET7Nz#@+hsUwH;Ze@T5hjh`)(kz)$}Sa*6A1ZI=3fa10vq*fOEic^vZ@UKxO#j86UFyMr_v zl22fx8h&6UBd=5G8tt1(or)w;+x{E~6K~5geR!Fkc8L#8>f! zH8}5}qI_$(1Ih*hYT^a6fu%J!FEa?pSQo+!0$m4cfXRA)M|Nu z;6y*jQYagq!llzy21Q6AG1>x(O3!(Tt3A|ud4}R-bj-l$FGIz&&=9n~={RWB@sQVO zryj3KNIbC5*uf2-el8%i5f&7z4=yVa77YtTtDrKcAv^(h8xnp#10@t{^UA-N#FS#8 zAY_9Sv|I&{C}g{`MTwq}9f*$#E-&GKI?yU?E(sz^Nnj=*YCu<+8@8kL zO`I3ysZ6xJ@FrI8{@}*mOW{y9Z1c49H_w>4NEMp@%kM3OGVo z>yTu1N}rCFF`T8sB_QGnQ2+nukn>Jtkr}=$q5EIqvh_C+i zC)5udkRlI$%t{FDt+*L_;JY z2OmFeu}KxkJ1{Sz6A3_cVCOv`NuFUlLXDPwJTm8j>8zuNphSC$9t<0(Y|M`cPm&kb z)}XN?ACy*GQ`VT&2KtZ zECAevSzBaW7dn^T*H0wS7V_E#*H2WiRLlBc#gb1|qHF60S1P=iqK|{3x_}Pyes*L< zWmNsuH>+4jeJ*T8KW?ah3)c7sN;(b_a^8)LdIYC}TEypr%)P9&@?-`p=w#TBCNsE! zA82Hy^2UGwA5^X(`HvYE{C}v+RTiy`LSqbo{jlZLvdIu5BkrQR*E(sZ%0F#1JkiNo zhE9YeHQBl9(BxtNrlB4nah6!nK3$}vDghDNB!yv><6{8HRtZag5}v{q6r$@W!PR{# z+Q~cD%@Sf!R-sO`q9Jx~qBv1e8q(8iGdt;>R8MUoB7_Q%LPZD>B87+$63z*EjhKZB z6Cp&@l7(OZ%&4wI&7!MpRRX3#xpNxO1%wBakWLH*6cFJ~fOk+bPDhXy(wSp&Obja% zf&C7c*-@kH!|%0!K8Fl|Dr=EfLj`C&Yk0|G1bw&@fNt`6$Xxe%(^Mvnm5K&PzKB9t0%qmxa&s;|)h!jC0BcvcXU9B-!(JfN0#?2ZwMx0deYrGU1 zT~sQYDCKumGB5kqPsNdpB|@)`o56!=keG@WMCg_Jk-(&XNoU@s7bHZMY4BD^0NA<$ zEx1iYX_=q)%@@*Oh=64Fy*koXm_aEI&XG8{v0EJA1r>CqL@n}uK;3$@iXPpV!>B;o zjDpWvXB6#)N^Qst`&Ghx5eRPjJ4RtR$z${DQ`O#f?nApC-TDO`?bQ3K{skS?7U)U6b8C=*6yopuj|EZgpSP7|M8osJt(z7$$6$ zLR~oomG=b|qO|d)uy3=FF;O8+n9@rGF15r$hrYYcee{A1O0wNYNHcUr(fFP;3Q#(q zkOo5(#r3*f5R6FqzC4;;5OPS)@lx#$D0f(UA(~?4iL){s7+ZC84t&F8Ij}tVNH~9G znjjp1lnhNmeeEwu;3UcSeaZ|Orxbb}PnG&)AX8K2MHkv=zm*?BZ=o*q-pF^UKKg_S zL~pCs?Z zS`=lL@?y{(&GGeNO%TTma;3^{9#5`T>G1e}Bo>5G&F2j$lFJO^`ed{bjq8&EL~FTz z07QsM-M9+ijuM^e5o$Srw(xs-@1H>DQVc8J8I-|!$EZ3K&dK}P*}t!oAk2A}5ZSfW)rNuj(rs1)T!ym(QOZwEsrLvt{OOoY=Q44DL^L0+SO zQHWv4$1=s%#>|+EctL5ubPLKZiRcxCU6QaX$ZN#n zN|=j`iv4K2$ma1aPZ@A5K=VNHf*ORhnysrXvdHXV zViibEvUyyk?_&=iKRIwKd559jmrpxS$WPH*9V)oQj4-Oswtb|#Qc5_WNR>7`^mUqY7m#6 zB^MWe-`*vnPEe7&O9YI#v)&~EK9JXF)HLU1TTpnRG4P-X9zc%bE*ZelDIInLz#DyJQrHPde-d;5fpR{#`P5qo>lpOH7vIQ~Gx|uB`b8 z=0MH&wIT}X^sQQl3=+c9tRD-8-VW!B*s4JaDs?2AioVtj5xUCk0nNRoiB^0(Fu{969*$i zBEkeAL=wIPd5tCqT|$&GoZvQlukWqB=mPA%)gsxBGfEYz`h2RUdv&k=?@>d@X?1FU zH6)sr@oik*OU41qrPdD9L;@1%P&AQ%TshrN)ZL)`ILd)qp9iG5jog{LICdn6A80na zsf5;B+szly5@5ZFn*>ZjUZW8==8W5=B2KInl}TdOB)c}HhwR`PSgC!pdatA6<|>PF z1RS+X1(!Ty`?F{XiP>ewSQBEtufwr_2U}R%R4|zPDiv~K;mF?Bl{&?$RGbNEyML0% zT_WtmTv4snr>sGD=~ZNiNROl+jm{BLBEw6Zyj`vk^QQdRB|}F7Fh-4;t=H42iFq_T z?~(Fjmzt2rRs};+e(X|{^7vFiGBRbelpnhR(3MS6el$*i`hR!IkKG`^i<|O)W2aBb zkKG_x44U%8LvLupkKG{b3?d=}bK^W&!jIhmNDX@01CTNerX%qMZce@WJLQdUCvo`V zT636HLkHksOG0A+*sk_UVz)~~%%F-76)p2j#(>5t_-V$K5+tumro}Bp(5O%rW|uRt zYeXPjQ!hXfC4dNwku(Vb>~CUP+`((GDHuy2=c4I$>jtEfaZ(T*s0WJL|DtO*823w6 zd0{B5k@Cg>?BsQn*cXkm3-iw)Q=k&5SGNd&=Gci2)=RM

$XxbFmkd*_G+ZJAtwf<2`yHsG#GxnC3&6s{+^Feh>nfFQE4~kE`>CboRIcQqOl&Rg` zWlfP&&mfGHh_{ia=U7fykH~LIoz)fOahjzjnOVbFiTP$w#@d`p#a*qk;)cW8CBQdk zq~ydjUPc<6F@_hemV_ul2v-Wo7qc-c%%-Fc)XE#JwqD? z6*h!cm!}b#JbI>%xKBTHCxh@aGQ_Bxp9SE69!*g+)!fE^E3)*Fv_&%1$jjscAVeM7 z;$P2C-jA1mQ7#yKA59O#YV8J~jyB|pRh_*x+8P;Ngt0^-vIt>`BuJ6-+FnQon|<*d zFbzn$J_8I+H$ultpL^t_HQ1H7#3cZUHHI_r-eT_sB&rF!#oi0bJk#SAdoLgp4Q9ve z1t6FF$eaCQu2p`oeBp&=uj zj5ybqtx%Optgc@FZN0kYQ;;OsY7tRS$ZGY=SF=aVS92TlJ9%4nl)e&23z$irBVed5 z@+M4rZ!!1q9vN>0aMl>jV6}(Cjsh_rcX2w)?#9`Yo7%oNWw|US+uL(hL2{Zc^k$j8 zG6|`FtK+iO+FOPCX>aklJW?&1-pgsJ{PJJ2|Kq`V^*HAaZzT=(>z;7bE*1bMc(#^ zXeDGYBp4F%8ck$@5?=zhfnW)2Lvb)rN114Ur^@#44V6>YY*2cTsreymOkgbo4-_CM>~LN3*?!7YPM~yhavYf(SsfEkGrQGbR3B#OCU- zagm7f4l?k^=yWoz*8XxSET!vsF4im-&p_uN@&sEtA|41?Iui5;d5tE?FmJ&gH8aeA zGj_^zu)Af6)&0{WK~G6ysZ|owgw@))6LcxQR>5aA@X0mZ_o!)QuxXIJq!%*RrmT|% zUJh_Bs3C$EhfY-NWI3KZim)TNZruT99=bm07-q1AJ%5827C2;cy;8FBQ;h zEd5oqssejB0I0(Zvh>uBO}2LzTS}C0Ns~mp__L^T>hc>z8bN#9s6_1^8Eu62-8VbQ9tj_W zyw*QE$sRQwj};J6zB5buSIS##{xHhz$cyBF?S^tsx_!YQ@N_ zWV2YC6KagglGu3MWN?vx?z~FvF9xtbo5i34MTzzCwYDc4Bg1;8gN?xazlx@x*)my8 zKOaKDX|~UJ{P4ru{|~xB|Bdc`h+N~v2 z>)Z=Uel*n;Go@R9vyK;nu~gMEqp2VYiJO`YO>AFl7}g`^#;jhwfq7?Z$Ub7pi}wN( zEXnQD&I!4Csz`!cmp~p>_3bznzoS}EP*Ns@aL8Gi))Z1ewlW}HQ=_`X`g#o5I)tQs zMqb|ljkrg|I3d~~34?^Z)*p?yM=zswW|W17c_Q_QyEsXIq=Ph0S3=C+Grovbodr!T z;v) zq;E{vbqorb9CmftaJ>?xYAEr^iBqgMIwW?+qgE(?o3VJ$o>U9%h=nB!j!!$9BSWEt#tP zS-wI}5Ha5rW(=%RjlFu*OENr5sl$uti|U{_5JIr5VyT}$cU6~{WZaf<(!(T>8jM)e zyv4e!+-hdv z&J)o?U-pBHy(B`$AeZQUI;~}>B>Z0mp92%A$a1U9cjFefGav6ua@Hxc=5yskk;`e; z%u@)|Fx;<>1q{q(JRVyXv6_QmFPM4pl7vWqLtdk!sH3|mZceVQAUFni$UrTBPp*%x ze2B|lo7&=I&{AR$aeD1lh<;qif6eH&*pHPaJz*d9uPDWZB=JzAP+FSq-m=v54$=sB zE2R8Od7uu3?n?H%Cgnm3HpE0d`myoCi0ynDt5b#zuvZYq%b=uL0BCN@Jq+IbGAMz6 z7DKpjMVHPu#=&BrBy7V1l5W9IixH1u^N3tCptf5F0{Uf8MK{lY*Dgv(K4#b5@G`8p zn>a1*iJv<9#XtYazNu*iKTlzKlef3o`;0BJoLAR0!b;L65@IL>lyt+E-k84_?Di$O z-kbVSh6vJ5K-D*N>qu}qd%D#>Fe4Bo?2i#VXexn@D;|fRn|y z^$tPZ0<)4cvBuZ1eZQMeq_+aBa@4{NsM%%&WvzTzXAfKVkT@vpeKIBndAFB$?ENLi)!Gyl6}9z)QWX(GhO8+GBPQPaWF9*ZpXTw^3RKp2(GuQ&a*;0+ zu~S{qJMjHT3&t8=G5O&E#s@*TqSGRuZb!@I_Ea4F?LvVm3Kftu)_;!6;@jc3fR(?v zUvlw|{2S(1d^`EroGE3V@nV_frBG#$QdoECWqDAyo(kjjQOU@c2JF|M%xS-|8f(p3P_|j zR36^=A7VU&dppio=8$MJYu-g6f^woCsrlE-7DV5MXEgl{wy zK2)uVHJ0YgJIB#IfIjfP`hY_FL-kK#{?*Im86aUu6h>JM;q(TQuXs9tTf&#!ol#h6 zYXdZ-s@16p@6$}d*B^xkHz()mPR(siZzT6-)g1(BdwP=ryz4sarOc2#l0Vg~5P^FW zy^za1yNzdjc2wb(^DHYpuvwDJ5xH|Dxf0#CC^`jp@kjIY!L6UXbd5olz-@tqBTD#J zI#XrV>kvM5Jtp{QoXz5Ysk{i39*g=3cNipH{h5ZGy_IFDT#b?DB*cnOQI0wPB9Hkr ziHbt8Ds$G6;x#l=8Sby+snD0AnY@!bJvlzUJbHg|c=pTwv9Xq4K7aoFKS2wB$qEja zXzucne0A5<%~{$Tyr!tE=#NcT~Ld1 z&KEpdXql#WRI!YGVKBjWUQL7OooaMeoMuU4Ygv)q~ zcN|oqT1}vJLrEBaR@=L(h3mwYwDl89OWIEwvL8)|OSP^oF!py{w-NA}b&F^fpC6zZ za(icw@0UED#tQ^T&P$*n#q9>@%26$G@ReDs*CtKOS-eVTT$m^vO)wGQ(Q0-59YE)Q ziISDri!N6++G~ifOZTa1RrxRB&J<0&LifSAFZaxY5CCg`Teok@d>uR=HkjeKA;S?& zS%_21hr|qXD%a*O1)mpI+^>l|%{j<`{hE5b@i~E=G{bb(Pa@2-+?a^;Twr+4;3jco zWpFdbW8usjqctV&++!D%3m$$j|6JJp4`SQ|&g56OAV86Z+pU%#sTP{0Mu`wOB zdjc|wV*&ecRFOtED-9Wt@H;eCJs`n%7;%yV>rge27(0h5p~Q$dm$pgKYwlaLvyZvf z>4~;~FK!@c!vH8{2!?d2^SVg6@(~s)X@^OD6)l$uBuE9#sntlz`K-`U1PWlm?rwO> zZ+Xrloudidc3c88Tvz%A>A8uqW2);ndA2yt#0byJEaxh$?IL?Eztb*fOdyhj$P{Sr zEBn}Jc`Q!#M0;nmGrq`f`4E7g0ME}>ib0!yFKTGHMHa}tTn~4eX&CDk>7hsZ!|#+; zc%lFpx8MLOZ1Tn&bG_r%`h~4+5Vb}RTKm^gSTvjQ*|zEoqqF|8Cp*L-Gu5|CWFO?` z9YnT6POFWaX{C?~a#EhiW@j=l+Vclt#x?GPiEs$1NaKgDAkc0`8lkfW7k zRZTmGQ}OEljZPEUk+s6I>g@a#$YS?@3q9H)haMF|bDG|;fejq{C{KcY7dqC_=kiAM zlltDeO*LP`o$5FjOzIQLQ$iw=08*y(i8n{b7l&t;um0!q;Oub!;^a(yJVDwIxzxdT zt)Zy;?ES(R{Kyc(?tXv;pb*EwSA`FP;IGcrPO^CnTo=PZ1;rs@lpYj9bS1`r`x$G5 z?)$KI{r$j7ohK`}(W|(sd06AyRUKiSgosas21&RF&ZcDN6>W$k$SQt<%rWNRMQ>T9xB>lKeadr2(jsZ{n<_+{6RA% zlpzM8AdrI=gn_6kF#7xg*Z?=md9_1EMxcH7^&Rf?14rx-(GkYF^0Ae9trazIt?C3I z*r}olIh$46H16Enn!J${)%CuGc|!9CTKpcnctPy|atdcG zPUeyvQD{akYlAGAp}Fs z0WJ0%d6`aaNAnbd*FpEbj&oyBK?$H(eG|)#&E>UEY6>o?>?26W{p1}P`oY+*!Ujo- zjNJ%P2lrHQJ^t3{m@aH2s|>M43>n@{qJ3ltbe9O^<%C)!P&h{(PSNo!zP=WVlulJj zJrgpfMj}JR)KRT}eHceb#M4dyTtwZ`aY#_=wnIjQV5gpp{0LECW$KK!?WHjLsBRm8 zAL-I-$ygDDSCil%$ZKKMfLd#E&PzKSMf|DU(~4J^@SpV-Q@`5pJLGK0YVexU^nkTO z|Nq!~_wBfCWN-9Uki>hfmZ!UQ$;Ec(4@Z{dL}%p7k>tsL?4@`)R5#UP%qDx2Y{?qO zuW=sddzkM@4hjHCkSve|kaDs!<2^f;TTP${R28ZUzp8rg-&M_dWE#4($-2QGYG?l6 zK47ELrAKu)QU(QFxK)O)b1L74>9v;@-^Ny)1TH}yv+VLLmmHhl6{5RKLU|yM+4b&f za|`P3iOlAIN7Mqj#d>~;(tdA(svfIm>HG{3BPm}0N8sQ32@;ki_dD0NTC9R{r^F=B zHcRO3mB5K2&EpQ&ii#y+Z4qTEnnNQU$;hM@4@MYtj|kboo^;D0CIT^1<)xI#u&N=Q zNJ=Ye1Y)VwWH1ICvf7~dV3yvMA%j<&2HQZg%Y;0C>*_G=xpgDoBVsRf%*CjYDUGf* z8HIskFp3Y56?X1IzUPL(*drn^mQ6Nq>)pOb24FO>$mI;!^0Q$x3$)%uZ{%zSA zIlJb6#_e?+F2K26`14>P!VmK}gm6U47GClmA`>C_@=eq!<)qkW*Zg5o?jfH`+&@V4 zta4|#uPzEQiirVE4wWi}6DytWU%muNe)$psz7k0I`RfA+lf|o*A1wq37v61W3eG>{ zDhGai{Ees~cpayH#L`&SB242|LDMJ<-uvu-GEq^D1>y}+&M8^QFiQDKC!!@7U*M7C z6#lMp@jHlJti-Rk(2xN|3rUah;MK{i(|3par+@&!?JVSkD>yVh;60;Kl1L178*bApU**S z>X`%0`AF6zR;Y?17nMR);^b^8R7JCY6bCC*<#aF-k$hr<)0uo_EXGL$^QEQ9!AH{! z5Oho@si4+AQUM|PX11lBh~T^GB+3l!tg=*D78Ptok#QubUh^rMzcsfkr^NkKq@a*f z^qN?8yC^6m`3Wy5M2!~|*9bU6^eR?l4oH!)e8|#T0T%GLYLwg2Ra$4c9XjxT$5gAv z2Jd56YR3+ar-uMU&^_lU6XABSJKGXFb~T8!7cdpru`N7=wr{o?11m~p6MV)fpofvM zeuH#o)sPYAL^8Dy8wsl-Lp=uc1E4CP zU6u8TI5}kHoJ=DkgbnlhsAx0Qm0lUGdZp2(w?)LDVg44en2@SbS~-=Q>`?U8>r+ao zqom7zsi#cUTU(aIA#554MC zq9MGLAUIHYR}l*qKpL1*F=Kfz)m+6*)WF9Y2}14dzdlB0amR8JfnYUB&4VvkAJMHM zCWF-|qVm2B_lEh5<(Msh>1!l}S@S8X2xxg&l0Wh=V~SaFWW*RN-%=)BK@>*3tz2dd zR7J*#A(fFV&z^!fq;`yJ2Oko)tN9d-%hB2~)Q-~y)*F%@6vme=gBw38uiLbX0B}H$ zzoGobt2rULPc>ZdwG9nK1Q}OJ8@OMOWC3<)mM%MO86j}DE=Gt$)f5{GjvYEsS z!;j5jsU{p!I*KMCK?*lZf{>9;Q_*PDoU=oQd1;qRxq>ODn$EAiWIr42Y+*=VdGGR- z{EI!+p93FE5INc%vqxKOru`C;CaPdcVhcirYCev#ksx22bZ5-=w#IDtJG7jPU6b1% zJ7?P)vv16^QLRNe+q2Huf4&*B@65B=)eAfQv6%1Tlx?#;?%?wmRzEzGKVTqga#sicfNkI_ZY9qV-t^4Cj(5d&35;u zPxjpF72$^zt!7b$nipPnJzdAQVlmm@;BCMCb_)oEAGjz?zd?D0e|(anPg7-fdz&42 z;k;~lU#fGJA%v?}dT}GgV{cv@zubR$a8%+3_ICHa<66DszKfl=VtpR%e!Exw#jgCt z&ZE8BFZM9@CznQoe0lwp(~q|5TENj3-wIrXClf;oJPITcNI>Y>R!1DX+HD9HxVA;Te%m4Y&O_0RVia(a>{}==ppZB=iPtUocdLGnYSCWuk zdx^i;4ui{WSn5gsR3A`$;~|P{wj)catr0DNr4-S_f2zSdMg9m6p_VYof@-2ll_)X) z23Sj&yFMUgQg(X{j8H2U&22iwSfovzY@$fii-?&INs|lzaw8`PLUMfRf>RPg#)Twi z5EE(w<1O(MLw!K^lixIU3plR<_SP zj#P$Qf05+}&9tzhCRPI%pxKjGKfe3>(SKJ_>S{kHeBn$Qf(!yj=6im8a`f)y{);1g zR=$YS?1ND~5*;aZ{au;(?0o<9{M}DS`-ewGT=LguuoMZOzVvSkF28y3u~7Nb8_wK( zcRsOvoA{a`@z>^mf5q~Bo!{)>)ti^+?@o?ie;l9ZFNUOH5M8zU1ZPKQXUDHzz7tD$ z^m_jkYQ|Rg?w4O8b>1ZY+V`^2-j+aJzko!X$iJP46I~Xbm%W<#5gcT92n^ln(gpYM z9DAUmiKAB4uB9HxmuPO%26TT=8irny=euHNArUr@Bv{@j0N!lPlgrpD=a;GqiB1^; ze++hV$cX+JcJNax#y(_H+iViJ^yj=KPTqVqf~)+5V_Ng$C~g+`p%#~Y2(cxV>fDr2 zYE@aRy|M*9z2Njd;B>BnUMI>v0(0oqK7We6j@OgTn%xEwH-x3NeCdnE@nBkIadSSZ z2gm0V#51pD{cKtuN*br!sEU+A+51lZf0tE%^+n~plE3TOIoE`}C*#*0Tjb{N{zYBz zvG=iWpWDzQc;!F~sCupGAeY7is9J?7X);6|Svyz#PC}qJpR#N#kGwv%T~(sR$RK$coL5sGe{zb>gH=)a6~J8Z*=TE;#i9hKe%magXA`#~QVt5T}U*z;8yHs7Dywh+q5j_rSK{l#6l3PWMxAL1Oe7f?YuL4A=eu*E(^Ki4s>r&U5Yimo@E<~~toUX{o^=QGY zsqZ)j*V;jQAzPzOP|-tP+8w7!$`NQrWvSw4UaxsYQ=$!u>DYg@T)!3?hx5@VrJ2y^ z2md9ywwQ(@Cj}r7bf=3pe=>4k-PihXwr2i9EifFQxs;Vi=5k@0^U+aRO4f~9|JNSa zf2}NJXjT+od;z~irlAX$1jDt=(SE4GgH!(4YP7}Q7vY!t%sXJ{c8hJ9`+&tne=W5o zn^f(uzp>pu?Tpcx1ho8DqjX{OIRy;K1#0tKbd1>F;vgECl>|nte=9)Ct(q;dm~GX0 zYB4s+NeIRHql&qEOJ5X)&-_(+B>(;Bzp*89&DSAi8#JG?YlT8Ca? zuC7^%tl5~A^J1-XUCR)X5*M0J*%evO`#&s4)9F-SKQFp#YjR-MXt=UVxi+qHxzxoa z1>En+Jswoe{5d-if6IGLPCnfHqX8Go;4Hc7>|h2cA3nXR>q_as1b zZ?7Amx#H`ae`ayy|Aio$Wz~y&Do^}5iVwfYH^x+RxZJsakGjL{U{WGX%mz$K0#7^E z@E*P^5+Uwcto;;gMnu z`DtH_iuOOEnGn}r`Z9i@4XRSj9kG+mr)U zGV;<;uw8EMKryr7r`c2x|*$3z- z1D`8>_UhOzwVX&$$mUa2G0|!{l{}{9zz?YQu!e_4=)T(=5v(}C!K>yIwwr|8R}Qf{WO zIe?+QLE9^CZ$pkm-px(hbl`*y_xZi~`=Yn*_UluwIWmd#Lpns@2u_h{HXHkL>?r|Kxc8+40Ho`G3EA ze*DjO&-af{j*9L|lFA(Dyno{bp?4XCe?fM~o(CV;75}%tm>Lr&-R_Ghssar|5koANVA%M4Q<#uz*))qQSD)L4IfnaMK!Vt%m;6zoAhBISD;@fc664Mhp^Ih{+P8T; z@>q7~KJ?P-%h*d)&OTD_gl46ysl0g>+;GMzhArmXSHG#x=oU=E3ZMKrdp7Ndf3gu% zUdPFpzeR1#w9gGWZw@eV5n>fwopKgV{6DJslGHT-NIZTCI5nws4)@RZXO$Dl$j;Qx zOmZyH#xr)|9sv3%7j1_0XdcUuF(3XdmeFdFuUDI-As8Jq(d^x~ZebfldhRhv6=##z zKkc6tnflF*a17+QMRD41e25_(f2%7WQmhAyggM=Mks>WGVQ+gu7%rWTlP@78HGD7jnfLL)6wD2=-(4_pMFu&h# z)yuTB)aKgJqA^^bE5jtqfK&7>f@bg!P zuh;~(C-gY4d!kb?mrFmIHwcD*UVAr4o+v7rZPPCNwI40`B)|?upQC~w%0+zIoD7xb zmdTLhR8)SALlh-n*71SZ$;E>itMpbBtMj|a9aIrjEp=3V6HOLHf92aiNb_l$baD=7 zKVSQqYz^&Km78eA%-<{>)beQ1ZjDeolhzYFo-ZzFJk8lOkr3T>4}#T=peaH@Jq zxxgwa%Ko3Te^)Q3GJh$!x*OH^0lVlWCKw~x*-pkgDZLlh_tYHUhwMO^3v>?3~nXUz)Od>%ElG}|TjlgJ9o*(zpEjcLJv7xujdWx8qg5%J>L6 zFix=S4qIw`32Ue;sz0cIS)Q+2W6p7%Xe{T_$;2k+2P?`DdwD8uP6d@((kw>bfCt`88BXi=?FF=37#jY+SZqC-Evs(K?3otYcBhu|a6x_Fl#f zF$Gm@I(><@IKo6a64|@zB0g#e6fD$~y$(f9fAqPi6LuGG5*8;*FA7o}=UaV7)wsgQ zq#kQn?zLNbhh1KCn@QCp!P#X?iLJe`oL)EaB&Is!?XJkdnxeVqwa>0LVOWXNlszRMC?k<@67#wG}V~O+X@_dQMb|FPWkudo@!v-Y8+9sr7`AkLwymG zf1vS{J#qu)Q<@d@@?1NUCT4WwV~fp)d|4!DhVl%8HoXbU_dmR;-0MRCKL~GdQ)Z@M;r( z?guvjMwh!O)^_yZBme8umSDU57jWXie{b?P{j`Pow}!T0RzySpw$kLo=0KH#)f~c} zfp`7=clJg8N;ub|dchVfo zWQkYdD>^P@0e!E&EgmddnGGQ+mD?q7y;Ot;<$Y>ReN(sq9n-nui5qx{+UE=he+!e{ zPf?CH&6~0o#ieV0t|!6KAve$A{(r`vZv^^=pMslI{B`3e!PQ;$J_9)pscB@`aY!tb zFDX#~OdZvY*E;+IVK29O{JX@0`~oTbJWf~?-;SA=rkj-jc@-)r&AdBllBb;ik$J3cC-3|6 zZI@Wg9}z}U$$sQ9E0`Zt8?1WWSis!FbfZwesXD_%NA6 zsWp{JZ~O&krqw!*IL-H#6nc=)Fjo1YWA-XK=6={vIilw5;j&JZmmPAqFJ7MdS7Y{K z|NPzI@jjII1U#964!%I#e+crz?S*)AOMVXl`q^ z^bw~iuG}dyk3(v5+IZ^TdYt}Ha3PYUK@11W90X{>EqQ^9-^3(W#*8?c*2(htu1Lpd(E8_KP>V%{=_vXfAnR!C-^r17}(5T2&RO9e>k_XM90TJq7voO&-Qhq zfJw0Ub$LMDe>ut~Jp+}bl$K%nD#MnhRIjx_D`Htxn?y7&xmYAtpwYEc0jc;v^C_B8 z2<7aS%Bw+e^q^;-VbhX!`)WmUwNP-o8wSLOTi`dYg+Rfjz(#x1dv;HbFWxID{HHZ zu_RrrQsF;`eulys$vwG0VGmP>Cu`JLuf z8I3hf6Ns@VvQC(B3aWmWldQaKGFN4=kiq&x)9Mo`^4SG9Qz1b3Hh;U1?Ai~O*IDk8 zeY3Ove;|KipNua{$5d;p>KLld{}gZHaogK#9z*?+Uh>bwXnA~S%{|k}| zW%UZp#dmVXnfB+>o4;QsG1oWw25yp2DM0o&R-u0?SMD94I{&7=y=9Cx(~EYO`@Hw4 zq-T-_|5Aa9CU3dM)$>1}ki8(r$2G20M#na1e@+9VllxF15+@1}n#LVM!r{-ykJUY9 zUsMw7igSoPt?`1e9$CIKZzA=J1(US_a}|JHDqAnfHf>F8^npQFC-E&m3pP=ftFC-~ zY9zvFM!z43G_u>OwfpfHR})flx=O~cXjMd$0@Yk0!2SLvMlDgsXjcT$4EAvmcq{lI|NXZ+{KGU$;`jc~!6LgZ zKCkT|HoxiZ=*AIE*^vWHom@c-J9Up^qX5OyL1jb`Ms~q}^v}47REW?XY(eqye=AW1 zI4ypA!3{FT)inEd=PkA;`M@ShDSET{zV^OkD=_M7;cM@w z1MIRUedUK|@g~6uO|QMgUq}ik;-)&?zAByrMPcL;%DGZquoQ4R=S^NTlTv%kM9Mw( zb!>;w5y52$gsxD~#!v#yj7BkYrr4r!E?VRk1Ib}iwV~o1t2o~yunPq!e-NuU9|kF3 z{kv540RoTX0DKk%Za}NYjNJO7yxpM~D)0lKNSwE3MBuo7h-*hSqFblDtX85n_X`u@3AQXEOteie~-+C^~jg)sh^z( zD?jG?Y19ocpkK%6As~nr$*sh20mOUx+Mo|Ag*l6Gb`%+EWRp{NG4z3RUaebNE%CY? zL{FXNEu272v$f*{Y8q{g6Ba?*wnyZ;OzvF~kv(!MMT6(Uc4~9g0NyW6FW9<{f8V4WSF6+rP6-l7`?jSqWHnG$`B&9*sm93U2kt?#spigNRx@cu zZy~lkV|(BJms{QgG!u;``6xR(>kn>0C4dur$jA8xABW`MIYoS&A~wa{%0!*wYzl#2 zXtvBh@k6xSEO99kZbQu2V{8>@C*T$TSzP$f*zPyjFhn?kf3_=oI|z>uVFDVPvF*HV zM#|!dMPeYhZd0p>mYj0hc~Y3eEnqQCeJ`0`PcFU0J>yL+$`f>5iP$oisDxWcqRH;a zi_@4>z4-19_U5FUZv@Zpgpnl00j8mM>4)mIC(9%N*aWU~-4K)Q>p|g1WIgWBai6A} z%T$b3H__gpzBC(Ir8pK1{KMvo~E}!#syz=m^E+#@e)!)W{Laa z84CgTcNuOlkKauN_N;tG^ry+=O%<91TeQBV_7*Z;I%8L%kFXN%7F&!T-}uQ@7~f7l z%pfxd!FS_6w8a$sWW2o&GJle;JqWBsF|613Sm+jaf3L}NA)MkQGbGn}S_5lf-W*M2 zI`)|8CI7Zbv*7A(qCT6kIsY$~?M8B*8S}W@MiahotF&b-q8cCgg8w_=w|tEzdei)t z`vi{Lpu;;)Q3K+Of)rY7wft(;iA&&@D3=KTc^1a=_jb5*f}8vY!-;gr4-rp9^Xob> zJ5GiQe=YhW=jNNAUuCkd$_>P+L3KEJ`{4Rj*@@s9T!1vC4+_kX_$S|pujF_5R~mS{ z@@WHs!=;p4p_>iT)ddf=K&_W6SX}(Nx|{M(6WUpTvbnpN|D5(kt|RzT5tG5jwL!06 zYDKXdX}G@%M(q$#e-7{8W_e0*It6OwLrFYYgLxe+sX0 zlCs61Zlla97K4J2ugXkH>m79n)pr~IrC+-ZLc(drOE-_8S%TJ7 zaz)YA8sJtuXdQ@Jxyq(1#WDwh&lCzsq=WIH?Of1!yG0&jJ4y@3_*vlh60W6z;JtKKA%i#+qfkU>pA zRj*%$XS5zm+^S#4>y5aqmHF3)UV42Qa|vi>K7Qw3@%B5K0OXa0b)|){G z{`|e_Yp(Z8)#V*&v)yrwf7icLs7;IS?}n-T=GLHF)ikgFKKG0zf8()N$#Prk2q=d} z#PYlTtwd3w?SCJSnGlbhbipH=?r2h^b7#3ZmQ@F|Vw@scg*e=g28J*`vPuc8_)^fK zSHvFn1>rJzrtK&m;jf9F$d8;3)<;y|u-H5qN^K5AbptWO9xzt>VQ5aVd*qrM^{Ahu zG{$?}w{b3ZBtGule=t|?cp7gKq=|Rg>=d#lWKT$Sj{~hx0srMMn8)hcu}N(27Q4u4 z`nYe0-Ta(29e`La%~1WqwU&QoS6cfLa%b4@_-~Ha|G*Hb8KA);20q^D!q+?& z02^>_v|85R+QMyC@nRF+U-zk(%NJsT;p&CiR91TCCD`=k-Fb-!)qYfKVg;3<(j|}a z*9pYo+exbwkF5TygFq`d&6$|3ofP?3$E;SMn)?A0*aK_S&GKo?r7=QTwRS%~N#s{M z7Q?ukoe~pUnrMSQ5Sh+-#TVr(wbmT$+B%vm?WAi4B5lI?XnE5TWpJgX~3xCda zl?bT-k?3}fn=FkH;1=_jhzP5>n^S+bzLq+TN}@j6pMSC_0NO=ZX(b;b7n3aZQplLC z{`0<%HNMa*PJR2)24Ar{-0tBJwZe72P-QF)r$Juje{#s<=Xsp0LPY<04oOKCJxsH8Rj`+wE3)^H8VV@%f$~sJi@@0+u zMJxl?4njJ*Oz&A>fZ z#O-$xBS8^k_E*qQ#;CyO&^{81`-f?te>+X1Hu)aZOp|@u5-4d99V~ycIZsRGB&q0L ze^Yr;6iY>UH6m|~lu0Zxk{0N4(O-3Xq`ty6kQ3OPSXM^I+B;S?b&2tyEv8%Vpoc7O z+;PF=Qf$}lBCECdt{b?&vly>imP%J`UbpO&ex-U*UDz=vg8Fk9g{H>3*sQg#uUp1h zYnfk{+i0pfvRyEzn_p5{;Cm>Gi^sz4e^<^$NSdR#usyx3uw$*N_VsfS4`lsZWTL65 zUBsZf46z%Of>4&&MNsVF1$%u?N6wqBfJe>2hF zi;dpMMW-yZIf%>C;)T$GhU&ji{0ciRS{ zU6WoV$=lT>GtA+lPb)JNoM4#X53?|Ova4&-yPUL9zO#OKTh{TkVAYzWK-Ew$@uGQA z!8XmjXaT*ZjU>3H&R2;Lr>>mhe=PH|O{#H?_B&VStv;QMC$Ni=l(||F$VzwiX)5XY zl8xk3{B)4nqlHLs)(bBa3jMVgKy$;<*7r=v`C(a>6j5 zcs~ram6cyMk>suiyGe?<|B}=63Vx;%)u+~J7g6&tPW^(_59Gh7gwd;_e|8hH^7(Ec)wr$=h!xeMv?&K=R^r2Q$?lOh5F$zNJSs!kUvriX;QLIlU#SbYqH0n z$~93Nxocx*>rB+(Hftw4HH24$8%pNQXNY4H;QGwqtuV2Id{rj0!g+J{<3qKbg>!=t zG=x6xRup(?xPjI?3$oBGD0qFjL6^Kjz`6KG_rech;1U+zU3qpdfBZspJ2B1N$NHqL zyFULR-f$LpkAirHGp{H*NIdu~>f|*K zy5?v$Z9^FQN-LTuVG^hQRdY~kEll}`bodq%V{J(+dO^b<+Y`JwAGKDBdclRXtrpcc ztQVl1UVGf_e$o1(f7E)K^3Q4$X2Ci{n26p+J#Vej3Z>*i*8XvBBj;ozkY zZ7*@~QiyK1IF-JG=us0ay^U03;i5yjNHFXo<8;(D3f zdg^o6(E%){e~jaF0h0@bJ9y2U7b=|AMS+TNk!uoA=Wn#xa%-{Wa)6ednBpaLO*M5Q zYPMsN-*;+7Mc$XL22Jignp_TOTF)l8woNW4c|p(N(ewQ`C+F`DPhY)0eD(9och8Sc z&W}#Vtm+OmNUbz>%6&Ge#Y}X%*afwkSt3$xDA-V=f9a}t0JNvM&yi(z^gzU&kw7 z-7D{GrNzaYo75N5TlYs7Z?P^}ZV?ZS4jVymy5Ak@`WD$wzDd{6AOPDSHw94%hIH=G znP1r|UGYI*CQdF_r`WE!1vfR~tai;s@eFkX3%gc0ZYjp_h5*!tcQr%JKfRY)Uv%Gmp8;16bu?K4Sn8VxP8h zJkczt4vB9Jq6qN&Pn(x8IBVETg_W<)On%-#eaDCwsW$H_4O#5gR$15DON%<~Vk?oa z&&ntpwRM^G+qx->c{9_yyS3lAXgJW)e~7X84g{*evZ)5R&`xN*+C|-Od%s5WHLMAp zo7se1#SL;dgJ0-&lGEC(4!^XeZc#_`IydEnEZ-pd!|^`UqS>A6O(+~?`+&A+cqg~l zepI!pbCWt{w?TGYwaT$$&iUrFeg|e0Lfs0YcKIuYT$oBth70};{lEsD|mmq&Y|?wevQ%@lR+i4t5+|Xmf`)UvU0%F z=~bK@dGqVh=%(KB@PgL)iozzFJ`4kQ9jETV$YMxq+&op(K}G9|f4aJ;gV;w4^wJ!W z2h3jD-5JUw-rX6*CEnekNg>Y3#1m2PnY>QoC0OlT!%Jr5iWNX(LU9TGgm5RZlq|}P z#C}N4LMj;RkxL8dO=d9_{YATW#^8jslNl>HNjWT$$A)t^cb!mlf^$?K`v~+{9?%!p zs6hlNGtz<(*iEeif42_r5WC3^z4ZDrhHj?_ajqUH#%*p6XMTUBUs|C2=Ne=xn#z}1 zVq#IHnNvR?niD%0v@u6~Dyp-Q&2|OUmMMN*@s^<)ggp0z<5A+L>o`jN&fxEEuYxo( z%qQ+Arwjjbvs72UXcNwv+%0~3Yx^a*{72ETTG?=jn&?%bf2J$3uskh`&#J6K z+FrY9j#|4>e+<-R*fxX&HzTO*9EwbWI5)#25ICg);Ryup?XP!tX(N6a2h9BjCD6UT+}-lcSxIxQy~Tq2x05Vh&)ClT1N%aXnTH|~t%kgef3qxJb&pDkb|UxfE*>K#dWdZD z+Kc=Ui}AZ}s~9rh)UK_h1u^nw8&DOUnv~cWMC$_*0bsgq<4AD}%ph}e_Fc~YDfrlH zAwwP?3+uz-STFc0^gm1%K_YAa%%Bj%W`%&fokA4Inhk=AbqXWMH3X)`R?qFMRU8J) zraneif6mctudCicz@tvy`!t;=aTvC;AMUWDVtFlkAI#V{JE(v=y49_XJse%!n5(<1 zFutAK%@}_?re?G?j}i!%3HeI=keg;VSU#VdQ#)CulY&l>&nY#YXjF83BtlO|i{+5X zZIT_hjiPH3}R&jEIn>GdIe-PpCBS8MwS+-7R+uPjgnkY%&_S_=A zO{aX_=Y9x)Kh$!eoGT6Cn$0fx8YWm+3{M+FxGjL&+=*y!k*e)!4n{Mqa>GzLb4HJr zXj2t};9aKtsL3$GXfpM$Nf0gk58P0oW@7=~S+u`nc2Vu%$XONmLdVE+D& znrUPuFT~=F!nwjZomhpjRpN*h7+WQde^`OBOX7%C6G;-sSIt7)Nc9tuN zm$*%C6DSjl$s3+s<75xvc{JS%L1E?QQxx_!E=0?bji;D6Dj+pLJsjf1Uosz6A*@yLoi%iL=jI` z=oCdfaiB{S@hpLELws`UU%n5re@PJ|z{1Tmo-b^)BE0YutYSGbKXTc@brP@qF+214 zS_dN9@rvsL4+Z8^1O!UgLu;rFPYLM07tEIv=0Ld1EdpAPA1CoG z70=%}_HP^R@?6~&cT;k*H1n`Z8aVL38wwi+%V@%F^A%V4b073SGPX<9e-yz|50ZI< z=M8i*mgtIV>eZh%XLHNYaFd_f4}1d-$#aV zYP$}%lJo0ejY8RJhfZ!6f8gPM1K{4wq~A_CkK)k|1Gv6vD)DEEJCoh%uD==%>|UCc zL3HgW0d{@mgnkDbF z5gAVR)EGo#5R=Od>MgofwVvdz&}$OxzzK(qEuj-a$pE6RJCIR4QKfpY)gj}O4zA;r zvuYNzFpl4|G*|_pf2=*KB;LD>Z+z73G{CA`?N0n;AYCd~53g_VfrxmdxB1r&VhS`7 zE}SY_V_w(#sHfwqK)2Fg> z>+dj+R#rxQ@#z#ei~asPADVypC#k~!@BjCI8gJ#I(Nqr@xypvs8m36wu>6qsnyWI# z7X@d`dnA6_3vk9FO;I=smwPr>` zg{mKGJfHY0ZbMU;;TDJ2(6~AMu4n>!4!5yPcvyxiLqLkXI&cF6j$$KNg4YD>t zLu3oHG=I03s;Yg;p2L057wQeoo&Io_tLyb}$Ex-9Ds-E!M$NWO-}b?sB$%hRX%t#2 zk)ltnfAFo?#VCUOEI%w;~CfIgR+1Vw3glY+kg1Y~iG75Y5BQ!cRvf zEm${X$E@G-Pql4k$uQVlecG9e7Z;PMcu(>2f6}kh)#RA9zqDg7kBWdG-P+w%RI8$D zT(uen->F*%V@(>g<2B&lMBUXd>Mk90daiO?{ZNM19r`!EXJ*sX^osp-TV2D!+sT=3 zf;6}c!XUfTjGyw?O+xzWzrxCDwLTmhhq!I2{f?&B@onE7?W=pccl2F+bw%9OzPg#X zf2)19uKvbwk=UG}udWsPHd>xRqE7W(%WHt7ekRKV!&ej&hyVqqavi&-)ac3MBX8*( z+oYtgnub4hF$h+ovd{s1I+6!qt1L9B8c1~`aV}!{#>$_MAJq{m3o3Eb0+ttR+wRmX z1(lebmrd`{R}*%+LQb7f(AUuIAj4dJe-w>2Q`O5bP3Ep{x);q=(R7YX%#i3F$3@_^ zB`#umoejkGD~qqk*wqH8<;j<`C&OQ4^sQx6Ti0HF#RqRDZX)i5mqBC7S3=UpWtSuV zFZjHxp?5Aa`|n|V|4J7u9C(LPihgIGW6yd^b6@xxSdf6-L@ z!!&!pR^pnK&_+(#OI#3ipPj_JyPLZyu z3U}Ps8cA@o?6BU#?L}_nw~zusE=C+yAc&%TDg}W|^{x7~6?VKoDB22F!cwWBy>PYZ z=|BZNG$QndItCJ2x_Tn?&~7Sfe~lOQV@dW~)IULH8K#sk?G{2sNN3uyr52_pauB-SATMUgb?8Oy7)qD`22gsh81Zs&D!jONm zZpO{7igH1{#X>D8wX%xCROvMGKV-bhFdf5i&)=zw8v7=pw-Gs8d z{p=P>=f=h$lwY_=Wsgq9CaHApLyQ#O7^+LDT#5yE{xaVvQclf?e+LjL$M(g@at-3g zIW`Q&`nR|?1%Ajx;wyBc0(_RwL`$kDgDyZ2kzqG}l0u{$+_4Q`RVJ=lnXGlvB*VFj z3~V7=`TWrZbROEI+=20+0}8v1llPt|mmvr=bRcr-KP+a>>ohJ!-wp^ZZkIPBDsq=@ zi)qvC-6xN}ebStKf4C;5j!lZISKgojE0-~5Md;j~7!;u&PIC+Zrt+Md5Svw=bCY4D z<*%#d%ilVSm&*|ENbKrB3LRDr(Q3-A8BN3Hc2fe#(hO2=*|BdhSPbAsr_dJR(zDDXa&uV|S;`B^Mkfy?2b0sqSRcQ5SVbUdOrLi}6gqe|EwRAIuyy5G|W>I@;Pb zId%<(KlE-*P923S(FCMfli}*6Y}cf?iPEYGFE~UZ@DtLO!#%V_Y;c5E9HPz8y<7CC z5*migk_{4tbSz4QYjnq2L}&vh$J#^G&cfE&aBc#5rMETDy`nMWDrxCwnwNAL$D!|` zRbyO*RP|TisBrUOJ z$*A%mn>5xy1>8!Ji^ZqIj6iCiUp0JVtI5@jNDXNn%X+l~G8_0ya9AdAIo1Ne6pr^~ zolNFlQv28B+UFKVf_^w?AFPfSPuE^Fjrl&z(Q++rC#bB~G*J~xAET`XoCYq+=>!oB zHo@yUf4Uf}Na%TxFqy+3vZfobLl$HqX3ySFHB6^LX~iVn48XXv0@?{Xh}{G!ubhbLPbYMn zy`{AG-MyMf!_?g(r0~>s%2YDJX`gB{2z6@8_;d_vC_pK<_o_+Z%J_q7Vd}>sCvxd$ zujEIf#LtDu$<%)<+RMLM`_Zf9AdFN00KQOW=&IBwnA4Q=<@hpRef+3y)40F$>C+6- ze+;jJ>>SqZ96Y=&EW^-EhV-PuuFY|gsQUO-_OcYV`<1oN)#kjO8}_-|oeRDuruVoQ zh?Q&~!RW7(15W=>g8VY!2a6&(tz3~me_5$K6)vC znqf5eDSM%=j^ya_H~@)2cE5_bIqolvW|8|nJK{&Xm$|sdvvfzCRW*`eb z2hYd6;O^Mjfm%V67yR`m3{U<4+4y-agMR_JyjP*L%A)gUCu>gWB+*Gl3~zTF5Ry3N zj`z9uh413`UWLwDm%fAbdnBYGJK(Ok?tKSd9G(8yx&wX60X24D zx@+NId7CgpSEElsvC3-9gJd4&OTo6c*(Q1)#kY~%Z0NxyHm>PTyDOuC66Fj-4S$94 zcgl=wj^gaC6g~#5|0b2y<~3geF~=Q?a+!mWSazAK92WQ`%{ZomFoUl-lyj`&xd7Lt0)NUcFTBNNT~_V?m_cJ6nJWm-dqKp)I9ft3&?0Sy zPF%D39=aBirPUBmIqTw=v9JBnY zH#s>J6%i}v)IV-3>?fB&mUzh>JCWE@zH|rId`ah-pQL=z?qY60++GLsYkx@P%E28h zp3gT4vXRb-fie*DV*j7-etva&`0nKB<&Wn-?C*07p%DgVs6L>5=sL4i`PYI z!oJ;tq9b!J8|9pcrJ(f*Q6PzEeX0X%?>1l}A(RYhj^-X7nEn!k zE9aL>T1#7{u$_c{SbxXj9IW-glxgMJQ=}=0d!LG;XsF>;-0wn)4hoT>ae}LtBUh=b zTSA}ipW8Yg7{>3>$+N=X`S7;Z-o48DzYAb;z=H8EGJnqn#4hBGW0 zl@5oVBw#qvbJ9eGTfm|l!-;uo@|#Tzr;9C&m1uXdX-yzbd4Ht0f;iob*#g8Fs><8O zn%j;D%<2SZP~xGef_+kU%0=dLGZJ*fXI?_bSfUw+ggWM#+FGOEIG#`|e(a$Ln1yy70{fJw({=qz5F z#&y%nq_j-eV1I+HrrP@qn(DK8&y7afB{c%UP;a1J{Q6!TYGdBsM4Ol8xqMBMBm^h_ z#WL~lz-0~o<>wzg&dJVQx0b9uH&x30*m4Qwtu@vK(A^!>8n;<;?&mmS|6N?c7sXl9 z?GBdf^q(BMCi9q_pLmB=+* zdfujD*Mk51?@|@QLSVXwyGm7~LXoQ(+navFRX`et!Gei-{*qOd)GJGz^l8BK}P*N0e|Xm90SyUWVN|!&=)?DFr@?dxU&}9 z!P%MkVp)@I(5SRmr7nsmP{Tce;TiwWdoXD4CJQfl&xsz*p~25q{^c9!lL|B+N6(V@ zHuaOy1JRnvOzHro?=JYdp2u;R1?yt*v@{P{ntJih%Zx<01G&_i8H#4H3-M_|mH1b! zl7C)X!7YST_muf659Y?ppa`+{H7Rc-FNzXupg4Xo{s#nW}{JTc_ zQWRUt@t5jLXMR?EZIQ(5MSL5{ZZJGY@9LiFql50cnZh-3Ne(zejgY^GVIX-^XPJR zl=M^@*b^v{-|wQy<)A5OI;^PF22E13GDwR~w{!I?o2!_}86?c*qK{jzB^{eEc3n%F z?f{*O@ORxt67L`#!^xeOkhH5ux6m^J0(DVHrpw3HJ4ZM3m0H8o&EhOZubDlwnt#v^ z6tNyAU|oZdCczDqHIZ%oW;G2sX8G@z`q?q79wlSu2t*y^GRZMA4%L3Z>r7Q?pCDq9 zf6H!zi0>O#6T-1zCE_j$Z*j(sgwu!xR(rK-Rt*}1=qeul3S#vSPJz~x5ndXqQb?2J z!AHGZ&f*h`Bel7|A}P_%1u(@V6@MO@A`4R?Wh@&WV^j=P`bXc zsKg>K8&vTrj1%1)*X~%$kVPklEIrku7GUhOtW5*YjMY-@RUC3gdJ-C>MBBo5aXyVutI`v(#h9Mdxg%*Q_fW%@1gRPW7$Z( z^3=gk`=|Q{P{gHLe(KR45~=viwV<5JP&P*yt`?NW_|ufz>waEzsJ@C@>~F>EBJbs< zLlEqpBP7lC_RKL=8X|F<(0~7IG0K(q3#_s?cJ39agoqm*ar)Q%4LGEpf1mE2Mc^IeD0to9;jNF1lx>pi+?PS+j(%@B2?Hr zxLGkW@Mt3cPah>s)#^!2{m~`Saoj3*v+fH$bO#_o1}gj zQ=W>8_uGOd%cJo+Ud5At2GQNdF!Kv9d+jad${FTfaUUiLyl{J+f6?-Qq!4iiKXuHX z^6yxkbf)Eg=3jd^L4TZ_Z7zTF=Ugg9&HgcabqP0Iu*_q|e^+`;6~dAazoqwbe6757 zbEfTh?I-Y%aZXA@`r75_n-sZXt6kH|Fy>^#zuJCTOX*!d_zf|oqkVN!@@=OILbcy@ zx}07GJzU*{ch$R-F*`hZzW?Ur{N3T{tJjCGet!Ax`SA(&Re#3qH>1S6P^Z(dpjXZe za)BwS>GoCed(ewUM#Yaa)21nHN<_yJ;P;8fnT4FCYV4M2HSW5QusnZs@fMq(qI7EW>u3M0VhK?1 z3cCalzuPl0caWaM9;78aXtn~(?-`5lOue+UV@BADIDe@O{Q9p!v3}`JywPinQQwXH zrd>bAo6Zt`h1W7TDDzovdm`h}WValzIF4o&s~Q=ZCXAY1$RqOyA~`gVdtV?fBYyeS zGB#J{;41k~XPRw@j7t+Ejb_1o1AZ zF&!75V%f-dMaa5{1;Nf}5rGT+3|$la`o}c<6?s@HgNtG72YUO^G|p!jhqR7MJ3{nv z^|N=niBkE`OMH0h>C!wr(=1-Uj>Aw|wdmk9;eSDHe<&i+e2R8Ng#5_QX~x=GQ4fRd zZFYRcqBuXpAm$H)O5uMU7%|~ zl@q2BS~0WW<7w+lP~`=wDd==o;61Vo%g?tIqnUab6boONH&&}pHKLfHv$F2Rgj2&S zP=C#+=Cb3Bsk)ZEXA3E1#es(`IVsIw_X0ELL8>2&#j=bw)*Ls_iLv=)daJ(Jw8fpf zR53RCP_y4Ym{_7Yt1CDGQOS4{s?JSxIE0E*!b`IDW5T)P6n^C83?kywqv>?otO98yg`>*adxb{b;^8ie$D1meSZc~&h6~R3jt{q3nyM;kOejka68a+RIn#@ z#^CLz3`B@#TAhuw@D@^rA*J?QKrB#$!qm*{SJLVcFPV;vVmw{?*+1YrqphuJ;@|j5 zikdKZQz|2Yg>J4mTbLfkdr}z(W|jAbpL0EeOozM%{mjMnGv1TRH~?os6+*qdD}NkX zfNhE8Z;nn?0ku`mM@AQzdL(x(u=JC=S(z^6`g^#eb)D5)_*sT97T=z}VH zzs^f~v&pJlBX={8Q8nW9PAGfWDTyYNKC#mQ{4~n1Y}K)pHizufebUTC$i?yq@eQ_+ zReIudkMYD#2{?Q4Pi*yszCx9Y-E#i1_!71hcJ=|nFm}d(PHW>|xqqWqy$%>R zT@~}I*_jPu;L6pi;5I4U$mmY7t|xZ#*)JfmyJLHx>${_45^6*kmwb1}?z~45NO$Z` zd8O8Y9*i6tkwqKg&}9*Onl4<^GTbXq$F%c!+}*JeJtTe|L1u}X3|l<9{9s4X?vCpP z$?lHR4aqJJ{AoiJ;k3D8IcHUu4dpN*a-{9HvV+q|_z-;EDBRzP=hooD0Do&n0NzhJ@ZJ0c zCPMd7ao$xBvkv42Xexpxw+K6!vL?DAly8r zV+Th8D>9AgmQ9>@^~-TTL_BnN-OoHjrFCq#OdY)@-czkxpqxiqa03CAKT)y9)hOe4i@GdZ+bSGsXK^PqH3R(H;&5{9brGKjHsj>i>$5Kuj|KMs9%_XuY zj}ji1q{?yz{OLKDVSfS3R<34~J||V7=*#Iym1z$o7PRptn_v6$_Ymgs)P3>F%lK#T zwW^)gB+E(141ZO6Na_9NGHZr@l|dQ?|BQ{iR*39yrHhnXMZ9)!E=>e?=zOXI*ppzc zno}{NrUC0(_Xi@1)s30TL(_ac8n5%xN+|f)J-V;0RsLh`l7(Di3W4XkVt%wsQ_F># zL;bBq%Tl=lg2X)w*RBcZSCBRC)kRr&$Gk9&LFq}tlz%#_nJ4Vh<5WQrxTV0n^XG#m zY3`-Od+(xN;|keFYLv-+-vr{QZQtl|*4~Tp;^_3pmc?)_-G-ph2dUKPS}Y0MCgE8d z7beJ)>+n5tEVV@2GXjR>xFin&RQIf%X1!SJO&BI!h!*EsO#>}iy$7a|AQD^fa)g0uKQ%{j)lAAZ>sl05QwQLLccYQ` z7rGkidj-BneiM6bH!BbEPx1VPd#HIOBE8*xV^o~CmZ<*O0=+||@c&^!Ud-X|iB zb?z7@#Uq)#_CBb^#vQK47|N5wb$K(T^Uie;yVKv zQJ=R;nN?Asd+lh{nFUOEs2+8$Kom_SDSyOWgbFlYyxl5(!ZJ8Xah{SJD#-74xF{`z zBqPY_CM=vqerUtnJ&zOqM*gUpCwd$${10PR{qQXKml+dFgY-eXL6Xr1Zbwr{h>|c@D7dzzNoF_JMmoi%?ZkIEbuZeLFMf9xjV!IOg z^_|^WCd;~grh}|+rAv$B>mfKfs~AeI>GR1?tWK)Wjc9X9?WV{?{kW{=hEz*JS;!+z zQbf|BC@10Z*>CVfQae~I4)S+JnSZ-s%xP!9Topk`{JE^FRte1tpwG1UtvN#OrE_(M z_mu6j8Ji$SBk6E)J4|ZojuSl^d1H3jotZ!`NOc=z^J_Nh;1eQz9sbO{)Gt;~W$4L& z&Rh?cYNAQ8YY&BM$kpt#yEEa%%cOTt%MAQ24kA@EaIA>h;_KJ(4eaos-+w@A3y@>T zkTje;CYP%1CAd2D^EW8FZo`|D|8lSP z2!B)&f#y39D>jxOfFOf{&D=)h4t(mLdrJ{eQ-McWnt|xj_vP~oO=#cp#j5<9+~SQ? z!iI{{$7UtM^huzoF0D!`%YRrL$LO+(E!@uogJZd+&x$;p;v}KMmJCOeC`+=RpGT4a zH8=bHcO`sEA5F9P&3f%82OeI?gIMBGoA?;EuwTw)O1_ZAbsXvaj!v1!dBaQQl!n+kHi{F2=DUi?nX<>yR203zPIKP z_nJl2I_a<_^{uL>pYK0AIeK^S>g3IfmuGmfcDV_Yxk!>X7Nx&8PZPU^A(^a$!r~oJ z@FY7}1HDTw&o4NgF@Nul7vDJKeXjDG&i`Ll*%MHwmtLtc@NNbwOKi~ zo#<2(QxU3ft1hAC8<)G}u`mGRLsiK_8W+-HwAfAaAXt??_tnLk>-$_w;2xXnYC8e( zi5|I%$qKsu?%(BRUw%l$C-JS>ymPz*uYmpW_d?!>>R>}N=YNrWEvamQscLJBhA`+J zcODd(n+LP0MJBxI$`LX>*?)F)($k@q5k4i-BJ**iBk;!Mu5Y3JpKVK%}%{B!RpD5!bz2dHp%W z+G@NM3OpYK4M6I&fMh|qVRNj|069eNELUiwAoEw{#(x)zP7AA;Elpx0g}l5YpJ^Jv zW&EqFQK?aDRnxG0G*U+eYQyW!1*M!r#e&vP^5P8FWyW$gl@@8ZHu9KMD#-Za3CO2z9Iw`nTEh4pGKpt}n#**4D z)R|m*5`Xm?Ft+SXY{j6lx0n%lTTYE`Jk{*0F}8T6oU6s~T`Wy%*+5`vF>@C`kg7Klm1& zd9d#Ps%H}x({htLAP%PmH ztI0{yWvL(fbCFY^FlFoY1lI-%#MPXLb}Vwg1-RIMlZ3P4Zm(1CTxTnD5i;7Lnr3$) z%nCKU$n(xqb;pQQ{URO7NU>xKM5}De+^Fh8sk_!Hl(bG6OR z_&DfZCr$z-pB~o*S3cJVbJ2K6ssX7aL3Hz5YmvJa2wlRzb=k~SBgX#u^hJn+1rbs$ z%K{*4Y@JK)zbab>FY;q*RynjJLZy{U`Dv0?sPuVRK}fXV@#?FN*CJQc?+#UHjew%QGd1|2co90r2vz&*CV&D_U#)bpGOm zUHM>BFC=@%n}k8z37H2yh9@AmJN2%7{@mr=8gvB6fLgl(MF2xJDWu*nly8qqcD^3v zmQ5usXa0PX1liqrvPm;|VkDOAGJjrRMlkWF0=X!0I#7w%3z(fly-Rq=4xm1k+!HCX zP4z*&S3nF2;$=b{y^IgIXugNi-8XT7mF*>8EvOb1O5sdJ0kDy{Ex_Q4Gy!wO!a1Z4 zef@2#D|8ocvTZ5RHIt+2?5I!N-5sf@x$iK^xVwAlCEyy%oYt=wzkJD+;D5?X?tb}F z+A77zaT>_viZtWfdG|dlKbhS6m+ymYlK&=)*E6>BJ^R-rka=mlJ3BkS$cd4>ZPGqT zs`(;kG1ASO$UqOHhZ-a-nI1Mt4(27?e|-mQ`7Vg%n$NeZUvYDV^69qK78!=3X>vJ~M`Db+&}ROJ zj5`+Gqx4i_6xS;JOBV@OHhyvvMDO1g0)FkKMRQ4hc0$d=*YFv#Wq(93E8n%B_s_W@ zk+7SOAEge5o|S%*a*{?{?9(T;TAr&@Wm;gG?8@2GHPp0OR91s8o$Qy&wd0pnjPpT`G508a6{RFYE?7YM@e54ZV>_79f})f`SYp2jw^}xKHD|#lbynm z3P6ac`tgGQ{KAhm=Si?!`pNS+DI{>kKh7tv>Z>YOiQ{?(b(J$e|2}usy=d`nr6Q9J zMMhCbWRO@%9FWYu5`>qU>4o+l?%rm{k#7Yd%SoNUg|)kXsDDg|=cTbEn$VYQBtv*a zo$du2-zR$d@cyXPGJiGnrUZkKxd`WHH~J6KiMYKEv zktt;BBU4f%18K{|&#Nqt*-elJmqEy##Tl}Dx*ElDha0QQo~lX2xS_f!VENRtd4>A$ z6Sfn!t#9QDE`Q)?uZq5#w^|?A)qBnVv>jMY*5n73v(Kw>LfdI&fu^IVO){)b+nqvV zBE#8OE!+H9G>zkQ>xw(S+Z+eB(5H|tt^8I4wYye8rQL?M1#k8(0}5%2Y+kWE^yv`w;<{tm?ocn26u+CRZc1mOLGHJk96r48fD2F}(^1JX= z8D?+WZdBY`mlyMi{Y8+`JYgKc*S+ekx)jIvbx2B!62y^zWVxjsmqRNX9MVT6nh4ON zGc2@n34dd6!E!hLBwiYLR$dtL-#-sRzlB-JpgxR66Myb=T}0zjBJ7XCn?x8OePMqL zZhUsdMGitx%)5jt#cGY4>kH~YAeqh+{%vT5XM7ok_Aj|5CKaXd)YyC8ZO`L{I2C*c`sj86hNHlL#T#-$xui5;hR z(R`AwgDCQeVa+OIk5q5#6MiOebN>PRop~_k*7wr#kK#=I%BZ1;&_;c~6v5S35g{<` zU4JeXfw%HAzl^Ev?bOa)Z7dUUHm81z?eT~r*UhJFj_+tW$&pO#D{b8k1lgUs237Nj z9xZdwnWsLO8WojU{mK`L`}8j!1}W45SYX#x^oUxEdVNF>jx`nR8JCUgB#wfA`Rq2x zu0gp%V<^BQU=-8CXf++1h$TVQ>mzD3&40u?^q3U9Zu5D1;0ZVRt`a}Jrm5%0c46#x z1^t+Mu-=ohB}hc8K$u?3HUx%vH~f2(R1}%r{bv2)d!|AGNwB=mX6#WJ3ILAi_Ie)E z^~xV{Dm=C`FqXf4PO(C#UeuZfNq=#A-PH@rbh%xtfe z6aPbyz02Zv-g-^bbWer@BRruahqg8FK|Wd=7HT4ok1~ES+ihzIU_wIOSJKBxJeOES zQ?AEq6|3u-o`tQn^paQ6aTK_umw#C0a-0g3$5{T&4~TiZ1S@1=m{)>AOfysTUorEm zODHZSiZfN_NHew|lL`P_$~f{QR5b@^Ipm>ZlG!!gQ4hQsQ_b z6QH2CT_jkktfM4}lb^h3!H1wz;=@yuYxP(sMOLa!x-?``mg4K3Bv>gsNx~6W43=~# zE2D!LEB$v5H4I4zvGP;{$bUSU0GVXgMSzu(hC4&~{Z1n6m8FI^7|Tz{L`gl` zMH0p6EJ%7&TAkhVgNfQXy;BAP3F|c%+04ghXK#+)ouBR>{QcsJm*4Ebe(1E zbhe$#G`E+w59B4rBuOw>ExbgfYp~9L^QFK&mULq0th36%Loqsx!cB=dsNj;)@ zjc7U|nhPL**_?+|X`<=RkT6@7G{Bz(Ra&|%r`#8&PHxm9t4#AX^Yp8A;@|L5HzKqI4&e5zRjY$A7r#2GBge^Ecl>RK+aK7d?%GBs_&>~>x zNBb|@rt!U%c?w!I>gb;bCvOgq-W|SqeR9lo%u#J7nJPS6Y@kz6(aAupx&J{lC}zd) zRAtg8DNYreh?p&vrC45_%rr+yMOtJ93h7rnCN(vmqJ@6mwcvCrspMnsz#VT3)FlJoqa!S%`$gB-z zH0i1Q17ure7MAL~$D-U%rfihD9Es$QtB) ziFoo(7gLsavVZM|57`Uw`3hDlGntbD`@|y1X+_ctakLoOKV?kEj8(SH7~il#ku{&T zsL*Rl#3t5W)0jjAY-V|!r#T??DoH6O`0h;iuaP0C7fEVJ9ZEf`Sl`IlPz4=lMfedJlz*I;uLfNiwqR`Fwz!Ks%r`QSbhIhmpH6l5}6@m%Ubky$lHf(%aS#*6N170IDxK$>~c z+>fss(SPx+=H6HoZDU19den5c$ml7)6U~R|7o^j4a|uC@OP?=5XEk;*dJ6u?1R3d} zQIJf`b-EWb1L($djG*V47bC<&R=e2R9~L`xac8F4N{ zrgj4D5|Kn$=@Tl5=po!nh2ETdj}S;n{M6569h3s*DlXAP2O04VaRP{McZ*$hT=k7d7KM5+fg-j~5f#6< zD3;(Y+RB{{`;!$vktkc%a9q8sB9aV-qX))g63 zlII%Bj$AxD-8(#?nsMU2SI}9js(DlkE6_b6v!=ncc-N#SRwq=&{g?_Zh#fsotg0_n z&Nn%xsQ}Xx`wC~>#8Rb1X2UB$EHaMM+4Y3#3BkUD7R-+meju1s&l9Q)mHGY2G=K7L zf+aTqpWSgQyh9;jt)6yh0@lBB>C6v2Ory4>(j5b z<^}q)ZUwTlW%=MZAlE8@yE|@mb&1ua@Kmza zMI{!OsxGR%Q6tZT6mrP?1Ud@4jw2db2ie`BmtJ4SUb4V2QZyxkY!3-Zggi!*F}<2q zZr-AMV%Z0&z!^?&OK&Dsj4s*b$CGO=bRy6GRUj4r#rROBH>R35gixbZ<*qr|Onw zdMS1XBg)wgVr&R;QJvS`$2iUsWU=-0RFhBDbD!c2;uZ$cYr*9Z-p zcylR_htckqK=CBfmzDskB+Y6Twg6MgClKPO@+pZEs*lrl3RwfZSE35Fv$9nkS@q$GI(u9$NS zhlE8z9-|3e9ydkT$*OZhI}{u5Y`04SoFI=`MN*q!DHSe$&416F(Ux|#-<-(;h%!ny z^SPgYBxzD74E?=H$+<%fon^<_>5iy*PhSl6+Os&W>a0ZKcATw729W0H6A025v%gx zEanDB*(KvqxPR60IuWQlVQnZsXzi_5dCNK}f6P$bW|v$fC-t-QVC8fBYgFG7gdZ%b z<`51GL*C9Vxn9nvG5dOFX9wLOnxJ8f;dWLLp)4{Z0zZh!Wo}CRT0R_>!$@OrWCcio z667&r|DZ-$5Ogi53@n}dqJ>b!!>ZtEg%t;wauI<~R(~S;_X3h(5Is$Xj}+0wW}*wC zqAegHVpu$B1sj-tu84ur928_&>XCvnpj)_t3>7KcMtOiz70t00mGgI$`1RuxVKowB zMER{(Opb{SV_yxqWS*s;OoQku9{pO&#w;=wAoWL{11c8TQS9au8iyp~O=_HtY8W!k z1l2NRFnNKygHNA#z(SVosl4WI1+@4#@@pbA;$M= zK_+7f$2c&=%9{u2718=2J&tbp)Qfy(^GybP1BGPo;cyMh>j_h^e-DRrSdEVDFe)`x zqssGETOHX6y>jjvuSqiXZJcpY!L%ZdpiT?61An4(3|~Ec(M!3OZM-9@QulC(i9Oj! zdSinEYAz6loo0%^aC153=>89`O=5m6@dq8EUq?D*;*K7#i-K2yW{h5#gd)J;J#XzA-Ahh(OxLM~I+AUBE$Zn_lv}S=W8G`3#=7#j&_Q{iRlL}Q{=HRUJxsjiVSf^@ zUx;Z;g;5vpw-@}2lLh~#v6Pt2v}f}q4&mtOoHxzCX)N$!Gw;FT{W(OpJEzUOqJv=1 zlB_Ug;uB`%UouT-Rf6zk$D+1Wxpk^&Z8%}HM(jA9FFeTTj-k$4=x6Nxqm=hsB|DpJYdUp3NT@Q*1py!5i*#y|9OT{4CbPlNTE$}w%K(d1lH2m_MV0e@hiXml)! z?;EM

)-45{(k^T_Y7eH0@yku^sAy$S)h|=%H?ppn-Q9P!*h?f8A&X_0Y6GCc)w) zNQruX$-g}TysnXy9_sdZPF<0_PXbCo5AAv!tvAG#2;i$m8hYqg`ewB5Ll36*( z~r|dg?8Lm_|+lUp3OuL$%6EBs3yqB?hC9*F&kE@slI+Zir;aFB|FTp;6C5 zKDLehn!*De<|`fmvLJ}avVs;PqvCNSA{7x-9-zu|3g2!MW>ct%M1KnZiAVVk}B!S{O91R2SK<13L5WGD-suLUoV0=gC) zUyVNWD8^d}A0Xpc@VXWRKnAj4_SP4(VD!=-N5-+>^G2+)Ie(f3tJi#VWH1X(Z#db= za2D*2y2!|o7HqFMx6Ogb2}iZyFfx(_!|T2-GLi+$SNv6EC<~_7Jv?M23$|}KugGvV zTE61+A!Awae(AL#<5;kLtI0<0!(DM)kZ~-yyyAW|ha%@8)jbGgC<{h!Gf2tZt!vl+ z&4Fl4{V37DxZcpSjNP9*+maup}5#s^xzxOrLw>&Oo*&^iVLmjYl- z#N06HBm?9t29vXbwcQ2_Xh5^Ov-4j>e2rnKrV!XbHJhfe&DubBYiOffVZ^c;zbaL#*z%Rc1lQqFALFV0G2{EQ?iAfX**a=`4;?v^bB| z+WfXjv*7A3XTTY|3jGfgKfs_X8fmCGT zXjO>fFL7n}i+tQ~q?pK2x372Q?|Z34Io2Y$VSi1nVi=xgvB-hpZP+MUo^38yLAI5@ za2)-&pC0ft?EPpff6ZPB6-+HTV@(Ngp76Z{`tam)^L-ADbK1h<^;t!=2sv&E94@+V zvC*q!xh=5oYX54_&@?zH$3;#cumZ5HBDBCRM#2d7!>zaZQm7Kn^c=}-dGfP zWe=m}b9uiHQ$kt1bhBLgsrV(g74s&mXT_%}`<;2|T{MS&H*s}tQczMUB;XOM7GF^T$dGzVR+sqdF@p}o126qYh_>m>zyAAs5o)f$v|S&U4# z+#NEx`e{?8cbx<)j~}Vkvli4eiEbO?w#f{Z*%y1ld3#hzt#~q!5p-W!7e%J?n1B20 zzxi|iw`$^TkJ-1%yLet6WrnF>1c@A7`{(=pFsN3! z7-ciC>ZHks-;D2Um3tvdHzwhM$C**3{#9q1PPh60U_ZB0`TJBd;3f$tb9ij3J~z?R zD<9CtY5k$#Qsg?_E~`(XyW(V~R)2wuQTA}Fj zo7>nkX3Cf*rsyLEXS2h*Ov=BIh9_G7k~CM<@YgcGb=~^^clT}GZR1M1?|<_vxYq0k zrQ1>L+@teyWLrrzTfQ7g?w($mEHxuhGCQ)QO;T|@z5L$~E+j<~1@Z$RrF+IRyB$j; zP$-}Zg+kR=BoL32;DQPF)4Dp>aDsh0KY0ppr=-9oJ2fjta+i=L)QH~|VplY2hf=R< zS8$g7|CM`htFj+G$;a;}zJJ;}X6Vzo%Z8?W=_HyhHBMFjAsX&(lAZ75vIT2I6f0b+ zZ5UyEa;TW{VkDs-Y>@_`8WHMS*mBPcdlO?I7z37%NEt&N!_zgCFRY3%arEi;>T9k1 z`5l1-kHM-GDv#+X<|ZD~QO9~1h{AbCTLY60A8r!S9ah4W!z8pya(_!P%FLlgFwAK$ zp`&tZ7?+=G^?Wl$c_8_wt7u3E&l>QHj(W9owwLb?<>`}eIYlS@+v52%VNw)}6DV(! z+5Q69@~J=oEdN!o4&zNQbv}N=2o(AGML6k>cIVUg;rC=41xMbP4dOJI)tpbC@p0DV z>ATg5*`2Ut0SlTAS%0Cx==5q%!FrA#9^KIA3jPAIN(Ow9?2L2bU@8AU^LXIv&FJuJ zF=-sqq>)^)ite~GUY?2D;@?K+U~|$q8t0Mt?{Hmp3p5caDm~W{=?0dU6WL{L)VLD} z3UlWI@4m^U;D(KtQ`sXhrA)~cuv1TO(?*&IcZ2iF3I9;6z<*&%@j@2&XrPq#CD@W$ z1o^k4SHPAx61}HgB?ZT|BzP&`ZX|Y38_ab9W6zXSS!=k7&^_%#H#=xyQ#ys>Y9iBZ z?*jcRaC^eD;oYsLU-`H@V)WT@hN_9+)R{nl=lIN-5AlNaE4tMB3SD7QBewf=@_nd1 zO13lp73RZ%`+s>v!4vG~nRdSz&U0D?iDNnnh_RvrqzWa;eQ*5XwCECFBIzt;23mS= zMHY0X{W%W9cT+>NAVt@c1e1neHaY-P(-n@HU+()mQ&QC3T2fpwn>i^3Sa+I|f^yap;w-GA7$FpnCruG$ooPvP)n=Tu zg<`7EgsCQtmMm8gXHJ#`o~B7D8!B2dTv3-{xEB_Gg){UeCuX_>{w5V3ihE$#?OZxH zI*PkPj$f;LNj|t~TF?<`Fu*UtoSA$*e|p;zP8|S&nRZJW!I&2Iifp^imew>1{3NK| zH_}b7@;Tq?(hF62lPbPX{3QQY{?-6NR~}0ID7oS-Tt{nOqAR_FrM!;rF#N?GtC=6_ z?v*lsr20jHBfI(xXFD9>T|n$^;02iBnjyP``%CrOJXlKAro&agDh+sEHvo5-|H9VZ zJPKu-Plr(Xytsr#8~po=o#TiciaS<$Ny#@4hEVwFaFlO~6B6&1+;tShxq(Uzigv_X z465V-0Y|2q7^UG=zb=fCsg{Ay{oC^XOFUVBGe~zh=(J38px4)oaL@ZR4GLn!vGi)CEnM>pW`2z2 zMT#EE#C@Okvf>&M4Rzwa^@&jItd~yFgMGwR>@PeByi>9l9#LQt7dnbtX_1i9PEApN z;=Zv|C@Jr9MOxA=l%irk^(zWg6gH|N3B^s2po0cdaiOEM!xSkg?_m@z`vBi3Xen+7 zDnVrrJPPRILY36(MM~05g6iG93|FOhO8*vVA=SQm5l>^v7!vjwg_tpHcNR>Se&na| zgP+LrpBk)5L(-Vl0DB^CV#8&S_Y+fpK}fUP8PciG)vu~Xn`N}S?pxEvdXv}ZvQOjCQ2oJ<-{$DprAsyYu1u4BJM zXp9{LD#IkT;Nsi$b~*Fp%D`RNG&ql$N&0=m!#wl(f6`9Yr@=U4tv--5b=i?j z-SfGQ21l|{JB1@oyW+p(is++%|1CHTg4LP7T=D{2#L(Pro0OE&3a;@Sf^@kXJ}F&= zTA*Op?&rd^>lzgUlH#uBQc@a)8YIYF)0GG+o^;xjBMc*phO2Vg$J2U+LY%f!t{GHP z#^D_^zn)VBx!Yevqi(uSG+7sXTw7=C?Q=TpxEQh+GcK{_o{B&B6J@M_%Y`(FlQl_V zRXycU+JPT4!Db6tjQ`wE{670`5rxSE;b(zbyu6xp&(3QpFd++<~LjsWwYI4L!d37oBqb3)9_Q&N1 zL8_#5^3UFH1RR`s(>IrY-Cw%>L6XL@OEJu&DTg}AI9 zhLYQ8eJ`C_yk_-w<$v?TrAQo4XU2dC6d2QEDzmj+&4M|5dq$*x^`d!k{HMJMH$kh8 zjYJ1H7!B)SR|%FFvkAbA=dFV8Nk?JjT$FKk$R(9OVisBJ?02Pu)S%#BFvFquudTo2 zwM?b6v!zo^1mg?}J8O!XqVO@~%U0=gbZnrxY^3ra@=~R@;4WmJtQOuh+D_RC!xMl% zu|d=#Dz!pj{`6*l+q=7me+Ca7FBcxNel{+LcH#r)tu~4en5}9jK2S#Mp2deY87Ll_ z$TlSmaE>hbvejk^rLP)Dk`SWRS`;pqUMBqNsC2$E591fWXSm zfB-?2o^1t)j*{BD08z&aifJa|OfGs<E9tAYk{zhXOkv|` zx7$sI{*j=sKVYaKUtM$G7G!2&zz86e?BdQtF({EvLA4JbYk%p%dWRO?nRzBD_ zni+sIt;H=n^6vdGdB2XjJQsG~C}s_i?5fAjqLCe#4rj9jX*~5K12iz}>C^E-e^YAR zj2D_}>9vhKdnSQy<;@S*7lJ8q$BQ{&aX1fynfT<>=PWo=&2h3RB*HrOD5Jx+DYokh z{A0;sF`AQ9k*mUP--*EX&wBay=iS#Y-@KK7D7|RPlsEVCh~j74v6v2Xu;lS`9gpd- z2pcB9Iezux#VZYyb%@z^T(%KIe;t=CrIFT!>zjemGfbB; z9d^*jw8B~jLOE;%jfYYW~$#irAw2oFWhnHc&7aM;Omm(Zoadz*-1C)7D`8e>S>8Zls`x)+m|jd@3+y418O>BxViCL-o| zRqi|bqtQ)o@@s$manc=)`X4TPR6-nf@mFZ8cX2)bZF1floelffmje@rCCVYm3TJq)gX%{u@cuTZMoZY3;4_OBF<#s%@?vd~D`I9wiDQJ4>s zdB)G0T?je=r)uAZFG|9HeZ?I_=9fDGW6cL(M75 zo)urVY9)R*45~~c8VXQLc{h%Ergq>)`cCoHlZ-|MNs^cA`;6ZAj1Fe)zhCD)hX5zg$syc^i`#4r=j-W~S11*S_tWjdav-2%n~XAW*$bfLz0^sOF%a~16OB-; ze@8SG=#VCQG&;2#WYFb0Q-8y2lttH|f*jN6n$!f*yh$`~jYt#eOD561#%uwLK-#he z&b2dVi%C>bqXGh5(PZ<~6#yQ~m+$>~bsYXtFbe;hX~h@p0N}?BMgg2WM`n{DLI*mE zfoQlmNW?LI8LSq`Ee{>tjXzmezA}rGe}nVlywZ`cl@oBZQ&P5>bF%piz9~P)%OUN8 z*2wlxg+FiFm{XWmfoB+i&2hVC76Ry+sYy=2SMfRYRkW&_UgbevX;e;D5c z(?wkDdAEQ+HSIIaTSc9=Cy~HiV(FoTI?z{aEg#`Z=(kN2d<)mxI2DmO|1b(XpZ#yO z&YoS%XH(ch@u-218{c$m)8u(O#fBM?)k1Mh;y>6-fJXze zJF`pI{2ICA6$3Q*oh$#_t&mwbD}fpHQ`enS{W89@T?G6!4ojlqkHEL7PDRJK-6z+C zsIm$ruVEZ+L#KbYq?ggi7a4z}LjDG6hw%07^zWN?Xcjv1L(&d$7qU~@A+FbI(hgBY z=2E9E)7+b7IQ6rGo;joKY^&PU1K%cBh;QeAU(K@-G%hW6thKyrR^LLkU30*k+O~nu z*f_P&AYQ~gu@LtFo23=v@@$b*h)OY)QfL^}8pfNY{}9a16F{< z6NReb8{TSTT*O;iHlIV$;>8j zs?Jt!vZ|3sYSXCf5X+msB>l$4KfaCq)mJ|XAA;!Q`HPpYUcY(!?zmR{rQV=U**8=; zJ`_K1@e)u+-tNCYzK(yJQP#ad@wFl|+S|>H?O}uU)L)Jg)?KSXqr;$P`|CPa_%Pm? zMc+010gR1i(QV^)L3NJHe|_f_lg8yr)w)=l`j&APc?BXay0=yC?7h{uytYLA&m&1R7BFn}=ElucpS$zw)KuVJ*;?Ha5 z&q0|qDe<=Gn_$4-L95v8Ku}>i^)38VU!J*#P2I%dPB~@bnjJ{IZ({to0{NS52T%n) z^(|b(lx8kY$^`Pu)^PWQ z@n%=J4I&tUtB}9dR`=E=i|j3?ZKzk@L7=uxI3aZopfob;?K?FxYjY z5(NgR&=o2GN)lxrf(2ld2s-jrH0Yl81`|=?xX-Uk$bcj|GD_0e5E*5aQIBX8rWGVd zdC?&+pFV%}tPZrr#F6txx(74&?S%dMjbA;M?|pv>q6crVzITagqWe?2s_6w$HFPf* zz4QLfMY*F3p)_=TA?ktdi(kE!d-}-i0$o3dCMos9{q~ddtFxPn-sM=}3QSIKK9oDG z8XwwN97GwZy}!S?JmVdA2YkFr@9)!CUw_Gzab1^U%oinpi->>%tmqDhz5nQ)DIE@j zKSaE+Q+yTOp}bLMlRM~jhviip)cSML1G zU#-^3FxW)v*;cQ0p}?)O%rXJG88K

{SJ5rSHaE4asi$muFWO*Mr`;(pi7S>zOQr zMBnA%;4<=m9fiBz7Hg*F^}7lbrbQ~n@_@6WfOeC&QVf;kc4o(D+qYH%;TBWlTRlL?;V>(9OM}-QtXmhxf_HW`xEfAQ2i>!OmIr$*ezb!%7CqU~uOItW zp__{zZAZr2zwD^NjGE7b<3K+;V_TroDbe4Q{b;R!RAX_j^ha4$^Z7gWqwUgIvMXJx z#?^fOn*C@yG!}K)A!23C-o1XUUqVoLlCI|l3+vsxu_iU+&K#PYdiZ3-2Y^$Ag=8pfG|DU!yTfJ0o z_SCC?`UB!;lt~?pCZ|`!^B$XmZt$&2g%EED=-^Ic1&xq4y!o!tyaj6dhS_uZSp zxSG5?_qR(eP%0FkrF3}RJr`JXMnf~#BCMzPSC`|-uRW%v$CH;Q$K~GG2io4u)d%bC zyg#}gbbn(@Y|y{tC&FH3eBp|B@^roo^y4&t*CA@pr-Q4iC6jjjWx1Yy)%I<5n+pMF zFyoEU>BY&zvd&Qi1#p!{f8HJbb8`A&G7xh-?)_)JfQgV1>)$FM- zIOV4u@ArTI$Dajz@$q*xcn=KyO8XI+(oZ9Q7G`F3hgJhbN7&`abQ{IIYLzPNM3dNm z?Z?KS@frf1syq`7V)v$LLGc}Tg^^5h7rV7ccP{qH)B7M?+$KfdR`deV37B;y?*}?M z@mJeLMC_3W-Lg7zLore%agt)h*?^(|v@D(=S((gel_IZG254CF3NAUK4HG=ZT# zxHN%5J-9T15j$?u1Vz`>OOsfUYQvV|1clhBZyAe|ayp-gtJ7l2fN&AE@>~t|l_T9r zpSXw3V-2!f4%>hkots}rzkKAV_~?;(YNn{M0%L=MY=CP&-EhHsHh&RTbOtDVHzU8 zSEtMJwBOR>N0cv}(!tsF91mNd#%dqzAukLJ=$0=ilxH97X_vtr6!rE&Bs?J>C!Ia5 z&@DdG6FpepQxse6_3yyT-?P*;NT~e@BW& zZ1bjO2}jN;%u-1piAK@bP&q+)kb^owO&y_8>-BR}&>w0aAoLYAEg--ZF)aqgj0)3& z+5jg|P}OdNM0AKcIe2&b5h2I|IROh6sSuARQ2Y~B@&}4&B3?u9A?ml7m?xQ8Y$H&3 z6Sa+u#=RlBe}KqTgb2W}RJ3Lif5sWnDk@mGYT`W+9bqCysSOYWisBiL#Z*-rz!C8T z#z|^c8%lRXZ`jsE2r?9XLv(@Y?yyvf zQTOddkPL%=ZNn&-iO=J1+~o?Pl|&Ro07r* z;=gD76Jm|Qs6=v&$rc%F-mjxOKVgQ|CHuVfglHI(D#BTK0>$P~$tovMfDQ2)vh;a) zVOj}V?gvCW_EGqanjHiVI>Z@|ST-QW&_NH&6j_*r?a%kHT?rd1m=O{H1>1aX$ef}; ztl2QtTq!!^=diHVOcY9qe@M~yKlFjWCJpa94U1HAf4ej+1AywEJU^Dy<<@GMl01Z_ znmVWJ+^Vz}qHZ~i>9WAbPKm2_SyOqN5+6@A_=&JE5Pi(sS_tDkC(vIJX}@;13Zf?~ z(7Z+V$WI_lUQG2FK~%xV;u8O|P3#XpzGIE00Fk53!_}8R(jk5*e?Fg$@l$%~86?x& z?s6%OuIx+sTQ()Wksna0vhZoUxGEJNX@)9R8XDCbXy@40`c>bu!h3GV538wU=|Pa5 zcU72f*W2aHlQZS{%O$gCr4`-esSW4eYOOrY@u0+#$Wq84vT;a<()_l|i?8jkX6-2( z!+Za0pvcR5-um?Ue+f0OIJg6ALmnqK;U;Jm7i4k5#3N7I@%BqPrxd8JRRFRhIJ^tumdO!Ymb7sJkS6iht-OaYe{!?2A}sh5_oxA3km!SG zKp18k)qrz<88@mx$iJe#bvP9SsX&9G!UqlTQXd4(q@%k>vAtX;`_mi-SlWj(o(vGU z4`DnRpmiTue|s8$eA{YIwND&I%QL#&kgC^vTAh)4kxpMz$;3goD8{-#UmY0n+e+J) zEx!G!c>_f8{i}K9mYUM<2EgNcvHT5kk&0?(Jcaf29z~NTfO%u55R;qb#+6~Hu zGt+J*%TlM_l%=fGYX&u-DVCzf4hgJmWwgM+-&MV~e_AKrDv*fm*@<@bpr|dT&ZvW~ zl{N#D?e?tAw2=aoI)g#Y_i3&ku%@(|{2u=$;NhBA5y>Q9w6YhV+`O7=o{qQiqgb+6 zlx8<@(S!MV^5Tby1#s^JX6Au6D4JRt07A7J7 zoEeSaf9#>#COLa-vMlrWG+eO~C@5)8-KM?-xgVvSMSja+;_?JTRi}C~U!I?iKc}%) zDKuSLF`YhHQ`uLj*lBzI#b5G0rl#9G^q%S;l}P=_d6XI1zb4(l7OGlpWcN-+twakahbmp6S}woNyz zA9}+=$4RkPG|%xRPi2YNW(8{2KB79v_!=m4k9ZA{(^_jjjL-e(tC&cmXd5tz&n$=w zf6m`?vF6ddJ$jz(0-?Y(JYhP+%-X;4jOORjtg#C_1heQU%^z(8;isOl73>wjW3V7Z z8{;`U$`z%CQhWkb<%!fp0_|WImGJQ0yS_8n*Zeb_<83;P;ZlyqGiGX3s+z zE-->phQDWoYWR(bA?00UXr$f2r-$-=fd z+~w}?l04PxeOW)L{EQ0lNydbOY31a*R&ix$wjMD{#i^)HQ(*=TX9*58vzw*ee`Z0= zl8PHia@xU&go46|*Q~ui2bv|DL!03&W$6?u=C5}C6re(K3LFewDD;bb(=L7s%N4A( z1QtOeY^STa_}s`A0AshzYymhH%gGi1L$2t#vJ+A;&dJCYfP<0@YymJ-iDr%6Ne>KF zBJ|gE9Ysuo$nmAhiXTKqR$lEBe>nPxQe0J0s_`xBG!*0oJ^>?;=yWYRLlz7qB4+6R zHcW!T%!I3N{xY1g-Q0M#vjw3?mM(Bn5SrEGndxEW?AUgA7c1|K0>R>u!K-uJ* zb|*(DT&HQj7?i!LMq365r){=nz!5=CTLu`*LrxbIWJA1mfa4<^L}RdJe}EA(G;8dR zk5F)os*qA#lH|6!b?jiIWPq#N-O&jYf>WccsxpRLPf_qLZqkGcT#5ZkuJ0q5o@a?SDg(YROcw9U?&1$HK1W$ccG}&u#j3~}K=m040 zM|};9)@hnG>jM)Qssqmzr|8J5o}A340fZ7aq^WVYGNsbR%WS^ce>$?%K_5ZUM)aF@ zD0NUc&pb6N8}oq#%F&V3YdL};B?*}Dn_A19dl$on>cw9QdtF zq*?3Qe|qXKN69+!7b-Qk!EzHs&+gcB?InM(9m^+m-CG^_NZmQT4T9VC zYH?qFSpc>%Rs>O}!b&194j_iNcN_S#AY!d`yqK+~)q=?80h@}0IA%+66m0y+PdId{ zu0=!#PX)9m=l(fQlq)#P_}?wIs!xu**GJy-H&mcB+(EdSMz7iEFBt875v1M7DeklH zIK#a=`K@l^4+m=FqLSn9<(K{$Y!HM=&0Wnp59Gq&QQ~ z?D)dYp8p+GEC+ZV=&-qO;ey#Rx3Rza>PO*25S=`K@$%K{H*en^SNSRT+tOW4i4+o- zZrc|>e{@kv(5N>WaSRthSns+!?2fO7M5l;IQY-3kuyWN)#nLR|P7N?h&m>V8#(ATy zf#TY%?)cUKZ@jx&vqRPBL{F%%C0DQ{y{Iolr!B}v?R^$@A#z}ZoYB2A9p$DK?M#_* z|8$U$TtQPCm&!IzHiyXyi8ypfI5C4Xa2Oq|f4c8(S2cS%7-B{;#tOIsgw;~ujuSsh zMsi0miL!tZwW_Y?csph1{dm4zE*}c=?4=HXY(++urkk8Rw*jHqSIIN%SNP4nFds$bxsX;gl@VofbMV1d_=Q%EPNn!P%I}f$+ zf1#K&^(}bws9T9qu#dG!hp_EqEz*%`NXy!-fQ~BL3$f-R=_WV^08?7QVJ3MlJCFbP zvuY(j7QZHpa2Tb^Ubw)(HVx8`)kzKpm$DWv@BTJedCTxFOxSb2A@&t1`?U*A;+qu? zUuRc0m*dHxf6*VS#c9CkIQi3_hs+o_eAUCaMh|Ra9boQH=PYftdW>d_P}mXJev9zwuw~_5vi=>dK(N~Q@54bnnNt!fAal9 z76Hh1kudg{#ISich@hpT)SPT8I;iY`8UzkAqnGe0YluF;f+1*s0l*ZEx|#TQn;?>r zXTkR{PWT$(H+#1sztjx_gRmwz0*x(*!1NSGM~T%g5gww|;yr~~`^Wz$`}fqNRlfJL zcfud~Iep`VikP6I&KkCOa5JStf77tGwem&Bn>94*CShyI`kQzem1z=M>A0vstS4OoBL} zcr8lrmJWHWZxL!?+`IXf32Gn>q7$$ir^i)uWubw0LPo=R*DA-V;22N`f3z@A_^8^$ z2~!q3p2{oE@=z&tfrCuhD_#_I$^~{xhv{RNj}J!hR5ZhOGxLQ>Igom0;0q6t33dB*4RLdds9g-k z+N9@Foqq^Nr;^RU4k8Waf7HG_L>gEsw0ThD(SbJ3ekcs$Dz`?+U^R0S7v(G+cymZK zPY3P%2wxP2d{vgBdS?_0ij}r#>W#wju|)I29rZi4=@BOM@8sMVR~0ee2%*3ny(l>3 zK0yID;?2+5gJ)|cFupG0D~*%qr=Hz{?!0(e6E(ky);v7^$3)Fvf6LC$O70nLwYA)h zLghb{3RA;T`wQ_}Q_wyl-Bnf?lTw*49W7R|6=!s`7|f%Qk=M4*KV6n}od$X&LDfN%=J(A&%e-auEY&r@yYogt!>uB+8v;DFRrxRwj`|?Y*8!*O5eG!oYVnQJ^ zRnBPt5}s3RZzCoU-LRS_P;D99%+wc=B~LK+fJMnG=fJY^FbIl001lgT=Nt;MUJa)f7u566;MxNW>c-_y9LCH@ns)M7=+zdvFXw>s13firB&W($(h2>t3P6C z0R+2*O+e7F>RYy2D!Gl;_d-cU5y#RfET;@t!(~DJ1-hzgyiqd*h40raDYZeoDlc~e z(F;;-)hNzMF6YXe%>8iLdO|d9A_FN7(ZqfY3Se#T${Iq~W96LH+;-^erN zFvWe+XCq+ZI?eOEvKBjD_OHyO{L|x;+);EyN)Y#Kub1C~)}P*v=v>h}KJgwsKh7Jq z&IU+@Gq>7lk#yTUfCi)sz@hi*`0?@czx{tuO9u#@+Chw1AOQgMoCp9=O9KQH00;;O z0M`K!w^8C3%@70E0T8z#^A`s3fB)vTab#Wit1y{4RdU9XV<(y2)&4Q#*v^dWIC08W zW_GVPuZNZ(nH!1JA*ndttiSt<#t;5NgKU6u_S~wQd+v^Hi2w+6HyVwnp9UmiS3mSa zwMAT=lJTX)!XCQ{(@(SH4!p5s$$bZ5n6wU_&I;osODE2>w#Wwduoi6Ne{;D;FO?R| zM)^zr1qE!8GlP6j9FT|&FRr&8i)l}henZ01s;Hvn%S>4>*e<;34?h4Oi|2fva zi#O10Km1Z{{{U^@4J6ZamiPn>g(?qWo{;t(l0W1>e(0Ps;G|M_<`q$_d;}|l%OyEq zq?F4qOBOHk+h%wCgER4gr6V^Tu5EvMr?UC!ZaQ3UvL- zR^q7*g`fEATL`#PL+<_!;gD&cd{+Y^d&|~gTo;NbQFa=O^rXu?EF&2}4;@Z#A(M(_ z!OeXD!-A~aKwk*+(XHWkuHiCD10a(Xe3g5>(@*dbaKerBltb6HmvMD?Y%kM%m-@^~ zHPbK1rE#-fee@juiiMP z*VI#g1=;o;s`C^*0t9KD7yVs+cn=KnC&$-sPR~xRCx3r`a*6chP^(A(%kS5P{|b|a zwd(30HC#Shv#uu^eu|pbL!3Y%q}KU^kW_Vm+6{{Jf5*;JTTU&+Yrix& zIQVnRrGZ0|Q2Dwt>KA;ce}ZsCm($Y7-j&{<`roJAnuU2-Se7h=!pi?DE(R*i>@>oV zdI+}He{(St`Kw301$1I%mQ4Wy??ei3;D@}g?9y+_22PO3as zK1UFl+^zlbL%KBn@LM!vO-WRP8>*lxd_S?`k{*%4P2gXG*MFa!TwcFFxwwA&T4Ry- zpC7#B`V0R-Mnu_vW!sm(p8x*t`t9N0f382gKRZ7>zP>#DKPR<*kmf0tuG#!=r^hGf zmQG$FeNfDp>|=8J_T>8Y$>jHwlXt3v%j>t7y77Zo*eiGeNJ*EMa!`#K)q@#W=lh3X ze}^w@%gYaZP0x@2E_*&ZeS135V|@9X|3jA4i(r6sg{fru{ozqDQPLO$RtLr_hZnz# z?ATQy&=7#3I^mwgy&fOJB8F;h=S4BJY$xExuO2%am0`QfJWP4pv1kiv+sDVyZJ)%m zmX=XH?r0gwYsPOJJK8Z@q3A^`e@2yfbBKXd>!$?ycN3>dygEdIs;vk`YlpNmFGeG7 z?XQJAoOFSRG2&5n!WugENRIAA49<-+oOpAWvT&Bf%X`#I)8+yD3^~zw?UKYxyD7rg zxv9F4x+2hR`eAW`Le|Jy*5lDOIK3O?Br{)tyy#S+RMUW*Pu?pqXz zc+XWXVzX`gI?667%UJ#9H)rotcIUG3UM*8b+v~YYQ3-cMZKZNZe^+4UQ$)os;--rD zQYQl_|1S8-#}($$bR0nOwBTVU(BGgE>UH}4#uyq{Q~OXFUmRD$#!_~EoxDBMpQ_KK zAbIod8H24}L&?AF1l7NNV?sT^TtE`lXLgiqAb&wC7jp0>-cOm3hnD(Kw0*tA^r+FH zaRa1zuT(<(?x<5Pe{Z72!~B>ZB@^>9g|o|DMqFo#S3!km<5YM|I< zO~ZvTERbpI6p?|^c<_Uct_*$;x!sHxf~y7wr%nX0q0PBX&2C4d(T??Az?bEg#8ziU z{b`z2t!iYpLA~k)Mh%GxH$2+LC3QgqjP^&rs5Ox}Me3Vne;^pO9rZF7VNmn(j>%ka z#e`O05xXNV<}>*Bzw46%d6A?CqV|T-g`(q31S5Er`unMhIRqz_7?1Sm)sc)lhd^@` zu`CEv761xWjb-$Yr`R%5RUBDHFK3y|Nmmucrngn2+HJa+$PF45RbtZ&b%#5+Dt|74 z?1MV4edi-af53)X143$#Xj|<&Rj;^p2SV8Q{IYT3ALyOYoL>N1;L|#b7T{!c#55?i z6Cthog`f)zpx7#_@=>G*^XIs8rJPBL$U$bzCr({5e_u0zm=q!{9zvVusb)7@6 zBwz~I={VrO-y~r=6X$w5-5g<(N>3^S^C&yqLA&tRM$za9@N@jX$CBa}3qs)JbfhlC zI{;t?ZP#C4q-~@U#}S%Th0iPV4qH;oyjytY=(7S4B5YPHTyR@mQ41$ruc@bV#bFF4 zex>$se`Yv0{Zf}3TDRFuEqXl->xrD&>^7R`{HwS`_^YC>V#s2d?d!3+T zmwq;XgV*vWlhS(sxm(HvUFQ1bgje0i(Onv@FT>BwC@!R2ZNNsIrx$FMd}c?tVVb>3 zlhv=$;&utpZJ-GMlB*ckvu7%@g^k&Xsv-z(f4Il+32Vk*rJL(^YF#%cvI>WF!+}-* z@pZdyTQ;{$4ePSGBxqPU;`bfdC9DS4fkOf@u_U0A?OEDM7kSdJ?B+g^aiL0O!)#92 zKAB8`tP*4n1+{DB$@+botiy%ibi$kT+X2bk2(qGIGl2fX57+P)+e(Cc2L}(A6`$-Z=7BngHU{OFb;v|-2E8JE|+}^Ih zR)9X7gDyx_T5Yl%N*qjq_G`Jsh%@$y`ScAgHoIz&Q`*U@K}7dp%j2gS#8h%ce}C69 z71aHLJQd_baJoA}&H`7l3~<;BKmB!*&RBX0Fj%~CKm8yla(nnC4!PY{|D2r9jmRVk z(tbR<5<-puQMY@eKo4GUHsoBgU%e5=ONGSwIm zbX^^?u&wJ#PIX4sm4q2V9;1pnf8owzo=i6xs)v3R4fn|<4FMoAfRZv%3DnU)Pisrb z|NO%b_yW=o&l$@BZI*0uBfNk$jH-@PedS^Ssx_AXz`^um2^IPNYXs>^4*-e${%ds# z9!9}yw&1(?Mq^#{7p|g@d`VaAVe|*OiZ1awWv;{7VLX$t6;aY%_k*_Ye^91;*P8eC zEQqki$)ykx-6G;ruqXYrk_Z&3koelY0CMF(vKK%`mC(Ha62Jp_%&AJaqw_#4KZvcm z7lLY^2)QuXX$*22Ob*C3`^a)Ys^sS;2c$B8$YWF)N4%3_)~rqmsi0rYyQs6fSv&?} z#lKEt`W!W;)S`f}dloZLf2BsL(V<`+^a%43%l#owk_z)7k5NIo+)HKeLqKE#pe>Ui zsyw`jmQj8`sHImFc^kV1V!sU_x=#clXf&6Z(J^AYv-(&t2_VFn^6T3)ru3pL$5LR2x(L)bL|g}dnC19|NOQgu7z zF{(yt13v;%<2rX|gVO-h`~xy@L0@JHGV%|la1BsK5*5Q2e0VC$!^X3)vs+sbbPoFm zC=N)4^zgmm00%d8f3KlSVatlr>KcksCYVqP3jwm&fM&F;yulWMuRr|&<+1*dUYVEz zfDu_x#DIPnvx)&3)PRTqi691f%te)-pmK1zSwqG;6T1bFgq8AuuBt8DIMs`ieL4e8Vm@^C;dGErWNW+Goc5Z-W>L6*&I z19PDgl8`=}eB3U#8!{D@6VRTi)t3K&;dc&5_zL7Ps@_S*ZIr|!Z%eZbb;b-294b*D zHf&QmyJ`R_f6MqOez$P+cEI07pPk@y1E4^@Ex6LGUlZra1q2V``Q09urTe+O`Z7$d&)^c@lmCp0tyI!|tlX6(!P zT*bAbRk&c96b7-Q={Mdh(i4z94%sAGE=yQ@ULl2xPA6QaL4jhUR zAl8Kp55k_MZd$PTumb2hk}*KmTT;<9HZxQu!rqOhFxZn`2)6?q8`I6cV=1Vr?6>%n zf3)4!tFQwcIYW^4daj|s3qv>+U1l6&LsF?q+L|)kkjZSzUOT`cIi5XfItjd|KKX2X z`->JaUpCkUdABMKC!E$trA403>jf{4A?j28|Ia$PHV zs)YnU;k?+_t54D^UoTOrSufOGv|IxAe_d+e4C)##H(B(VE$^XJn{uR(LGk0ZOE?S(6qIylGwxXHA}Wq_IEt`W9<+)r0N^*5T2|ue;xC< z6}rWP9wagL9ij&@t{`_-bGa z!=;#|QI5xhUwCuHkZ92IOU;CKe#sTVl#>e1A&2Um<$4RJJ;pBmz*s_iI64W(b|CiX_#Fb0pTnm8ED zM>TQum%D1xBF76zH>{OC2ZdBA0hq{=;98}C22ZN+#45HNnM5L{3z;+$e^Lv1j948+ z*((y_pe<|S1sQTB>f|!H%TuAxp2dr+m2&33qmE{E)vt@-Ny>NhGb-b*Y zPi&CX%N|4l$Y7~13UIT?e>C4MMR}Y-Rmyj3iB%XX@db{G^1r)8`|zbgeL=!OA&=1% zxb$%B$(opuk#SHsKhg7nD*zPxZiH_^DJo+ zeqQ*I{k*^-OyrY>mA90@O8kP1TLJ}&!_UzIhBAUGiU9O(00G{HQ&$+k3kR^0a=ThEq0hngQDoX1QiaQSJ;|*k2F34v zA3;N83CD=}DHIMBqbt;)Q=_&q2|K{f)!kKRbAPw{cR1?Je@8*Ril!mW(7c#JA!+p1 zQ~m+24pbLMMvLo(Q)*#jmx?RcLb$QcRg0$h41+(04Z`<2a9YjvG)gcLV!YU3+!9T1 z>r1W&P#M!GTSikhXcWJxO(muxWI8Q$9FsKSFJG)tjKSqNVqL_6apmWCpSt^HVpU!m?YgAK&CI^-B5Q)sNC%rONUJ$9r%A4Ws z`U{Bqf4_93EaO8uRTp+JG&wS=>&$&K7>Dx2b{p!B#w6hT=BmFWk(pUXEvAt$Xfcho zgVPVy7jPOdRhLz~z&_8#Ssr^StY?}9Fopc3Up=^&M1r%Xkdr+*REphB<=Z)Oy(IIh z6;db`3c%E{?L?zbD^e7n?|KWI8;fEwwn})Qe|2O--*M4%#I+(cC#|Xh#h{U{h!ksx z)vxit#mNg(88S6n3$_DkmF^yxhWB}MOQ>%cJKX#>gEl{O*zbnLMg~lE zKQIG8E-L4R86<9=@Rs#?!ba-r>bxZJ#vzZnxjL>V>z8E2VAq-AC7JWB{XFrK%V0bVs_rmg{kj}??e8T-1@FM+EZn}WAR7sp!3;Cc zZU{ZsjRfh>rJze~7y5yu|)1W&AG`LqLY)p_A{+xc`y_c0(ScX;}Tr zk{WS)NhSyD+!@IXUmZIm8S2))Gm`OYSF`MlWXu{xXUNoB6onvCaiKdSxssjJ z&PXn1=f5+OO4{|<8OgQpw8)^1xCBrwfeNfy7v?$Z*j&ixe70aRnU>cUOeWRBe|7;f zDb|*@V27f3#ui-NAZZ)217DW?_)Of4$+TM7G7wp{kj^VWhT-bYniXLjgT~fHAGZ{FZl=rPIA|z23|C^s(8Vl9wS91?l#5x!z%( zB+Hx7`~wJ>tXVg@%~#8(yHDqee{r9;t^NXUpFJI4)#rh-&>}=PeKH&dhk@!aC^{5G zb_KQIC>RdK*Acb_r=H%Y2~=U20e?dXN|erqYc9_B!7{o@!}NX}+~)Z@8}IG$wr)2! zFa_#IV|s=vcf&q7iWtekHQNrZ!aPqQMd+gnXg=jXYfV4pzgoJa8Ftm_e{6V@EN7OM ze9^nIZN>7s3iAnnqdZ#c*EpQ<+2_5A)&0j)_{K2eEezEY(`1>X`pe-I>Iqn1mcCQy zS(bgt<|I}9buk6gz53@ychr4DwI*N4(iUx((Bo=dDB7M;EP0fNd>^y4<(c+QT6Nj+ zHrAaK8t+{A%0zT7J-KWNe`W27QSWl`+n3Byx0R1#Sk8)Xx ziLmh7RC;3hlXBtP*UC}x|7Vj(>LhF%eMG$v1KD%GB_~J7TXnvigU*#Fhter4PYkG+ zE8n_Ujv5b8ds|bFsPCfNo{Qd3&x;rDUhHkEIWekVE_T}jIVw4SfA*8j8+}wA7ajLo zZHJ&gw%Wz3cdj-$%1>EsVnn}O?Y1Ry)a-(K8*A$kRXYqs&%x(tI}6`W&C6NnUioe6 zIWgd0@#ET-%Tducv0z+aAWvCtI}JXn%HM33OP2G~v=~7@5pbwZ(z3n7K(6($Xc9rb zsh~&%@v@?n2-+$-e_91flaFc~V$sW%1Y;|Qd?6TmSVY0trl}y_tCWI4SwlyQk%!r* zw)V(ZF0`YhH#Y!L$l!IhAz)4yHt1=R4}>OC4tF;cp(5Yn5D%2Z>zlH*PKl!EZZUQB z2&it-HB$au1j1kb*b)a9ELFT8pzlqy`mdu^GTSWKD9`HQe{S)+f3Q1RLCM4aF8urxz7SdaNF(|E;k0}}jn?`}_lPOm zX))r7)JE$FmA2~tcK7ZDAf;@uKWiNum?#D!_*=epHV&?;)?v4yRUge8Rbm``#-?1` zMI9sPq)ldb5xv^&l%HK=y|BTemaFYjv+)}2i=L+Kf4{*;zaagC2>>94QQ|C-%~pQ9wb+}waH|x^ z{4;a%o|;(@yABf6Q!ydUaJ_4f%%Snl(0^Xfg^#Hx8C;thaEaJ!%MAw^x|ram^z^ zT7RZSqjk%(C|ip{Uq{Juvx;?fi7O;_K+gUw+Lp!2q_+Pw4hCY*)nwPG0+=odVs=W? zF}z$ZHH~J&-3h!3rY8iQ1Q;>>L$V&kU>$eH73T~wT4+Te;*==Ph0+#iyV+?1dX!A? znlqZfb1^Tb4Q1PPN%^R5oZ>7DH{Ix5IDfGMGEMaTAPRY>5mNweNnf&zz zZ{8`lrnU=-V(`gwDSaiJhQ&8y#E<2JCh1V7MUNRvvZL+=V*Atf8XQ9@C7Is0ugs?D z31--)4@3SQ$sls1l`Qry_zBru9k2zWJ=j~t|H$`88g%5btEw~7nq!TRrWTtGQh!z8 zBXX4XN;4)WTw+QWrg^*8c~k%67DS7)2tN!)qme1`X3)^#PJgtH)<_nfQ!?f%Tn`2f z2L=i2x+G$9JHc`h^Q+dZYV7Fe(tZot<7{Bn+0jBL-|p;;puj_#p~l!L$+KF&r|Q>X zHq9xy6aH1-8-7+giFJp(h6}MIW`F+437_U*Yf+6sVV`!zmyoeKiz zVTK_fBXF?<$ejq8YMvj2%!ld9I4XTNc~;9hjU3MVZh1At7mb0sLiL4A9DiLiACSk1 z{OhJgAW^8BPtoKWYGNw;wxiG6$jp++$Sa~}9!)It_(ZyLWL79*Y(7O3-mIJz`Jc8z zmt?wbb5exB&24)Lk)|7&8?O^Tk$W2?rt~XYrG`wwU6mT+Eefx6!kvO`|r`#C+Y(9(% z3|@WQDSpE4?i~vRSKUdu(RA)<4kX^-6F+Gz4wT+${;ASqy~fVrav8uZsGCeoRGrwr zwOXf`{yK1go3i1+_pJsYFD+pf4zmof2D4E#!=|D!Tgbqv+KPDrM1Nv%Hm>lk21Nvk!0IU1D){(sZ642Q@*DW;Tct zO(-X)le3e0lSKwO)+$X}Cntw*uMaOTPk(uL(im`6Zf%{=#B%cY_sx;>MeB#yx;**q z(k524=0!PZf2YH zGMe&jP{o9;z0vld$@%ely@N?IOM(lw3Zt02KGx=GN_==UIe+Er-IyuC36)u3e>BK$ ze`M`}kNNx-WJ-{JBzg<3W(9nsAP}k?fo00nWq|_GUx5bLl6@9f@!`MzY){N5t)Uzh z5HE3)EQ2-u$dYuE@nQ&n96o5-_OXIO@)wEvG9*<~y=2nVaLTyD^o;-ESMmE1 z|CRSBa?c>}R)5Q_D)u0m6IN-#GAgQ8Bmt z%lE2aB;1Up$vRvJks0i8$;zMzy#C&FlV*S&P?1zUrmtU>i^jdOhX*xN(2r%vj=7k6 zek`pyC1X})&C;IN0i0;mOC6ek&(WzyMC(n|BkAW@X@7X!a;JTDNxry~I*|(tY(t+M z>J7;5!n)Osli?=jF9dB0I)x$kH13D9F#QyW1sL9?;hJmKRhn$LFLK7eQdo86;tI3A zCw~ckD3nW&IVcoPG{|*M&u3_RDL0GMrE)~T8eQie6`@v9I_`=G+86IuK9`j2n({r1 z7pH~DZGSSB>WGXYApOAqG)fb`bWf0@{AIoY(7ysLKE+kJdZ@7O>yA0#z8Vd)>ZH(Q zke!D@gK`Yah=H72UFQXjD2Q6ea@L1R_e#y`&rP*MtG?Tp_QV|Fx7qQXP^j%L>?%wbQ9KS_px&zkM1R$` z@-DXETX?Syz*mA?Z{=w3fM@*=$u$u&+gGkh0NekNMK`Apwe3W-Z;Qr|5xy3Wwpd-n zs1rfHG~p)!f9YN=5fM!HYDsWl^C`z`hzkXC2`1q}Ikr~67KZ~nAZ>^qZvnlr`FTWy zabJ(Om>VaLmkd_khQ~_;FLzjQ5`U7pzkS4^&kpiq-9k!#Yu*nj?C zR;47Pxe=$)O~zv%!Q?_NDJ=$p3X5|Q8ZEtiA_H=lC3k>p#hy5(hE+bt2|P25yVD5zCz-ES4E zyQ=RltEVG#+h+gb7L@F_&Hjac#HkpUZ2{Y`9j{nUUA(jo-gs_@6g_vbPKAXp`}=1S z#RI)t$^Y(Pc7Ol*HciL=bAKOChct85i7ThC#rD6loBsXhF0NFk?f;!YwpS7_miIx* zWR=xfAm0E|} z;|{g|ZK0yhSkYPZxo#f^wS-N6Tq)jM&itDs)yanc=0@l~p6;~UP&w40nl;{^b?mMe zH)5`CqqV3Jg0$xnw&ip1ru38rV@d73gJd2!&kS;G+b382gnw;u@8QidnSRpIZ@nv_ zA@F@7F16*bxKG5MVt?ynHb%yQs&h92Oumv{M-!P`U$s#*`-shlL$y!Qf4P-@G%V6- ziF-!7a-#(4+_aG%T)d5jOwIWhhFSD4#t*Xx>o0!|wBNbr4j$0QV*R-|05)+VQ!dJX z-*F$*SX$KKbg1cB-?(p;$At~n`M#xQnyk%k7gDkBRLqm)Uw@F0l*nVQsESDv%#v=O zf{1b?`V@_PLhGJN20!)-G}njYnve1=5f=Ln*h~8{4Bq#QYsb+on|@-mDuY4e)=&KJ zG2i|8CQv`HvC_d%J%K^1N4+4ewg`IxDFKuf%Yravfu@VpCHvsvT5GMx1Lv}$Xs{8V zhL*W^@gHn+0)JHsF}-!;8GEY9+d7(FAJ2`!P<54Hfo;NT{O#Y;eQGN?hufMUDP~Gqi`q|B2Mmf z2fSspVHX`Q8(u|)BZ@ccqJouX%Vo8Ums~cqq1k%jYzj)I4($ph+SSW)6b{}caM}JRu@}hF1Om`#6sLrjpkq!vZ@~BYYF%Dtc_lm^_|AwDkg-H0_r8gfxT7__w^ zmw!#y1Q+}kvAgQ|gNxlSQU2@Z1~WTE+FHaiD{?To#J@#Z1T}V~pk2#1%SOMQp8S4& z`tJJolh>%xBNN*q`;X}VGk;fccW@fNPLsQgsr$N7G}{g24uyB@eaO$#FwVfK90%Dn z5wF}tg%U>n?mNRL~w*>bII?Kxm3+qKI9 zu!sw)J~f=oqFmO4st2Z(r;+7hzRBtzQAAy`O&(uQ&Lx%N&R+wzu4#-7{%{g!eD02Tv7Zne_ zt0}Cl2N$JnwQC1Xz`}-QTeEboi)0DVE!N z;Dq&S?4G>MPlsxbXZq5z?LctgkKrSm4hO^@W;osoa?kQuR|LXm=*|Cu1An^DrY=sH zKFoql0ReG6jne6o5iN-Wj*nzV9Kd?*D({5JqYAkb@Qx%C?SU>*q|Q*kS#gVSP50 zcVa6Bs-46WwJ2CqJIq>ZtxBq@N?KkC5O^+?r{Lv`I>qM;GIpSoPVHnm_e9{xwuX? zIkZbO3=YUTl3{SAI27-Yt)n<*DbkvYbs#CV6IkwQ7KJN5r)d!sJ$QvS>S8HK9IKM~ zX&k(G4w)8&yqyClRGo?0_@)NP7pPZ}6`TB#v3ivz+nBSRxEV>@=p+ms@|X)ddgVei zP3|h!s29my6_*B!DSy9L+~HQ{rEH<{5%xwdx989>ZxLyQs_XDJ_4g=lWB(ec(s1LT z{%%NjR721fK!+#`C3=29M$2vGCgy+)mqUpJ>3?prJeuDRRex9G07A+v{c8{|qeVQ7 za<K>Ur9=XH2K7S2l#pM zcf?LK`?tOr#e`MuGG85QTNIm9nIc^vJ-FgOvdidSB}VH2UbXo1`C33r%H+}g=exlH z|NpO^f5hHhH-D@L`caSTC~+(4_DYm=;~LhprrVZ_Vn!=b6!U9vIOpO47?9IA%6Ee! z-QjL<8m~9}Kj*Rh1io{08!czSLoiR1l?n>{9L9^yGEDcTNvd#cW|>lo`W7R48|Lqe zb;bMQOT8d?n#^LnS>#(!q48AvnoPQ8Y#}uWgbqqgsb;`eE>yM&1 zMSpWXX-lpZ^$yc7|IGIINic;8&1@Y}_Vc2nQyH+koE%O*T-JLVjrREefz<4Q1zRe~ zABkUVol|!AqH}qaRdFtB=b8LG+nb56kJRtB5m0vgVgx5?nxwym@r<`X9|(h|hPUdm zt^rYef`4K_zeM@%=7v0yh4^~c2uQbib&(*CK$E(*55URdomFtT-2)IP-p&Cy8Mw1# zv2c-xrTl*9Ae?O7`y!Y{9!DAf>Kuxb^?QFCW^{>I!?!yJ;A9Rzl;QC1{vmeW*}apI z{1DF)dGaoHUu+o4S&*mlVV;D5ap&XVPY>lEtA9V2u7h=uPR3L+oIpYQi6{VDAK+f& zV{4xj^JzXsv2oQh-?Fyv_3ICl$vIx><(+EhU|Z*VywgBC_Jv6ppmXA%4R-A+goIeZQOJhkWtVS2))G^^Vh$MX5%0hjemU{ z2RBKwWMLdUART$>6Y+{_y}4ON(;(&Al*G&XpnhedCAF>)$Pm4DEaLUl-d^yQWm&jj znW7qC5Hbvx!8%!Q*1=uGoyNOh!);+8?ivN7Xe?*m?3A|2t<&f;z@v+ak++yaD&9ip z#gNn#sm7+wbvk#5}KMD zuW-*YnU7a}0X=@%+uvEX8=TsQZw=nitbsA4IB6Nt({~9BW|k<-PTn%Er^uMR%mk52 zg8$4no(=dx1G5e4<+akj3YuwLJ(L;jODYCMH$1C`J;(JZDAGI?pQ4-BF73D$E>}h;-Yl19 z7c_m|3BDo)+`M*gB6~u-kbmwz_b^QlpUjz1xmzrzf!#Gdph5XHy%zGxOgNC@$93u7 zRqwggZ^{YYK|=CW-K`9@;Zo_5e?>efA{_%#sL6{wl1Ob3FKTDB!Ol4NoJ2EZCCNkw z8Oz~(mhdx&!t*HvEW=u*1G}oX&&woK4Aui=CCLm357@)B-3?hMFMn18BB=q6Dr%k* zcS;`~nQE$hr!3#3v7B#p934gRbh(-F>6U-M=FL~WNz4Q0Q#AQTlTya|MonNb`K~3f znaGsk>;g_3m4?LdU5ZcQJQ@6f1y5ibNI$`uL9%3j|5YPc9%?x!e;^Z2W-bu!B3RYa zk|IqP{F^TMIHYy0x_=EC*Djm~tZ%BO>0YbZRlIX~r8zq0ogjKW zUGI#t%}q8H0)czw*V9EodOCcI14F>-}VM>3m6h|CCpbxc)23xD(*X_2N@$ZL2xdc@p( zG=UOXa;n5v_nCTDz=VY>q_2Pf8~-v~;hA4Yrj@1~$h7*^2O;LzBiUKx9m-M|=-Y2m zYWUa&MK3q>2s;$Lh*0|$bsB4yYpf6IHn@eI%BA3s+g9aL_GcS=6}>PJx>-@{06FYd zv_e4J*{-P7gMaY-idq*4-LUAzeaJf&wLTB_CVnip#Qb*~ol9}=fm&4@dh#e%l~3#x zSRc4y&6A+Qb5oev*#l}-iP`hmjQin7h{^3J{=a>?aUjVzm~KG~(lyaUhzeFj#Vh(x ztwgi;>>2VbaVvTj{KE1~++)dwfyzuN%aY}1HVbB&hkqOCfVllU+e4nEZ7?SHz4C{4 zv=pI2VJfT3XWEJ6dQlOW^wJH!jCADkn?tPgPM49*0&f!?M@J-!0`VlrAsYk%zY>`<>HC^CEq7g_XjBJ!UMb$nHe z7|A2bD&bqku9O)#u>gWyNugbcFx2|_WLStxtiqw}#}=X$4plnPz009I2ipDiBNimg2J#qH;34r|!#pn7 zynhPrz(zw=1EfibfKY!Q0SnEWG+C7>dn7ex7n3N5av8HQ4*@{Bl5n|k@P}lZQPEnp zGoxWUhcX(oO&ZF3?%FFJR&n4+2UKmtuK(#}Gb#%)N@6*`gKFrOuxU6H&=4~KXzl7A z+2UrBYg?eRKty{WicUgwAdk`1syP7;ZhtBc?06J6^+PyuZ+~MW0YZ?+oQ_Pj?Pl-?c!x>aF#j50 zuHoiiNd_G^NJKCQwmg1e5h8HIiRV$e5`WVz zknM;~aKL-Wo-FwXh(&M!eu$>gya23Sx*sXp#lZbYt3BW!w9*d9V^n=BR(%u#R#Pa- ztnO)~EbF$Y4pknac_7=wn(2Qx=CYR-A)lyYCv~d)&=lu(U&^7r17d*4r5!NCM=jKV zWbl$oGCcHP<@t+X<>AWH#mckC`+u7+qiH^rvfTXr8!+_LD0!fU;kF2P$bw(xsX5jv zy&JqeoLnED9-f{5a(#R_IqYJukrTEpq8_eoN8CeNFtJ5-^__<|Rze#mu8QMibs5G{ z9{me;$;)uge$7`)OZSk74K$;}8yQ{S3U|+u5L$%kc)J}eM2%&D4*?m`IMDC2+ie*Sus$XsB`5fKcuepi4WYbL=<@b|xljZR30W2s~hlXFk7+eZImcb5kpd#ab zWWc@D#~wraAX{l0m49QdQ_XW0KALnEqPAd~Z$d@yoyinHlJg;9<3s$Gi6 z@E4^{hJz!c?LY+m1q1HwBU9;%|0E$~`h;orMVRL0pF5*8Gk*s0M8WY~{kiVo*26RM z5B~8PC}fW@3(_EoEX|{7xEu-!@o}(iKar$LK1#44s(6`T|3g^3*_d;w@H=< z<8izg&KO$$UZ}qh;>G3WW)o;R)1O;$VYdq^%PvHDa@kJ^@+=) z6%!i97ZG?Lt-Vk^?yi0$lZ&+**Xl~J_o&-4^@lu7;)VK?Oe@yKYib{@xeaAAfRuAl zQQ4^}0}uZ?%(Smyu!rQ!Adf`dWDVoG6}g&5ap1dghf#Sj!K!ufat#$Z&CRG{>5K{<@-f>ms8{CQQ%ODISf;WvleQjQ3%SX_ zwOEHCROC*~`fE=0mjUIihbtq*)p?g784PRc(tm{-@0*A%%g##FSYu;>(8Rzp6s$^< zQ?2G=EWD%cpQ(O>THL zp9NDicsChZlhv&{vc>6k%M=1`zCcBggNo_&kF-||L#wmoP#C#GM;%HcJL{-Zm1Lqa zITcLyQ6{JQ$x@kQ!8xloITbFZ6@+!FKYxr?Lp~C9xaIZU>6{-GqIm?^MXa+eXqH2z zVfZIU=O1#X>XAbo;SN1=NIZ4cBd2=8^u5lhsBm39r89-K>83rHdLkZi6n_qv(F|zD zy42UHpfF`GbjWO_YOhnKt1YDBrchtM22BSzct9fJ+g32AB-B;~!?RJH!Od-|7k@w% zYxp5tDqnmkqdLeE_E51rySSE&`HO9Si+X-l=Dh(?!@oNN*Bq*{;n(Qi~OHXeMpl%Ii92IJ?ne) zX?L*$6ocuIgWDOtBd6PTw?xz6&VP1DS+%N_xxQNIC{Ju&Ex{F3>)qH(aX0qkt1VoP z_05WKPg1DlO9-sR3D@Bq(E5#n#^;+{{9cq;Qa@@{f@HNvE_DnW#p@048iw~qU#sl~ z@5D`+rFU3&Ychjt8ihRI^h@1vN}$MZ)8tMhwVK6;Z5{M8UPafdkWcN3rGE>?HRI7s zA0Itho`!qfPQn-n#h0B*A9ogC_N>3`RPLBsf4OG~=Is_h-ewJCcO^Mf4u?xxjeKOg zMUqMNiTji&cB_`$QKHzhO0kpWy!`O`?de1n%($MM{B44b1j4|wo@nJqLNQ>k9JFSl zMsqwy%q7y5Ad#ZyEoEgfxM<(wDGSVh(*Zo;W2lQm4f!Lncecoc7#SgI(t$AG*Xb>a={v@NZde50!0-lcLa`G2-lH$E>TdgEGn&kSmP z%euAX8`XLd*-GX!(xz)+T9>N6-dkwF8Mo;PI9!#h@-S zo=4rgS~YUr*?;f))@-jY1OII_W8E^cg^ zyS+HKQ?5OB1gvo)RCevr0#1cUNYH`sxN^cNf@R8SG@I>1c1*5pjUxPuI)O%Dd31UB z+X>QL|8g1ppdco?9-~r$bz7_oXISp5y=FJt07<~Uaeo*`1$!w|(J@HK&%rO@hhudi zU`Bj!N@b4`D2sS5WH1|i1t(<%{f~qFSG$2k5B(m^^4oE6fW@A0&Sj60Om5jq&w+sZ z*rFvMRxKhXeYpQ{pd5h$t-!^m52rrBnHx2`EB>Gh9wr6c+ zEdMQBZhshJTFLy)4bxh7rdHaxb@>SJyQ%>;`=;WOG5brby^Y95GJUcbnRa7c%9|i-9Wsx(s&iKfl=mErl#^u zWFcK(ybn8AUEuy_L@|2`;{;O(M~6uwEr~j9qxwiuUBlhRu?%QvDg_JfoN9R*M}lep*9c#4QC>Z`~SOR=E<; zw|`IrTwHgNcbA2;u4=0PvHB4D>TZcV?q`o;<+0A)(h5}PwbV$gRkx&qiZp2~qjGTd zO+4KG!z}~U8C8Mv;5N*Z7dIOP@3|Iof%weQXfAnm^>qU<_vYz+5H7+fR#y$^nBD9h zLhg=N40kp*81t(`fpF|;y6tJL8$;%KfPa4jSSO|P)IEnacv09J6`2S>|}zb2mK(7g9D0t{&dvcFHTLSEvQ{u-;sh_5s;!otPS^wSSyA z8G2X$*+TVkhZ%PuZ}6`vuB-yqJx$rLjwu?1JVw)y+U{bFKvOG-*XTiIi6RTy5`Qg( z=fI^Psf26(1fnGl+zI?^$(v-l$!s7gTD@?&sbGj*@AAVW^bztHO<8B>n|E=5;B6Wvu{*|RuCL{j3(oFJ$j-@KMQ`pWpS{{SQ@Y| zP@4h%7eF#>H@IUGW)d?t15`?OAAe7US12n7MR7f8;4aE<#l!|B=++z=l>-4QyFjEg zs6lSpxRI%qys=_|{6L0jY!}9 zZ#7Yw@h&$>LI@#`(aTNN*Tb&oWJZSRqZF5P;A1e?y0x~X122P9ZAk}a28Y^`eBr|uiMl#=f^GOu_2s8UCt;W{22 zEL8_p99)kXYsz~!B9#~KAb|IwzK}I1_|dtW{9?1_$7Q}2=kxOCVSh6JwlzU592Z;? z@-(^cq`NqYr{Ox=EX9WSE%+|PG9|W>nOh~dI06U$Ci&7uZ!uNh+X}%2@Ap!q1@D$W z%J5*jQHjgV%|FGU)DLv_4JXzM?ptNN6G63+ho9Jo zIFFV-TpRyakX(Etet!uk&WlH)mvExEcy#gxCu8|YXFN{%vqG>V6$RvDlb@bOptf1j;8CogMDm_UI8uQ z6)G`Xo^*d|K7aKe%Tgy@vYJoP&h8b?kcyl9wcyqO^m*{G6I4!C@=L_lxygL8$wF z!@x| zW4^f)iGKh!oaUL!PQD@D29p4pYri||-)x(vE79Vil}D@@`K9X@GKCUMh3SB z0O`m!{0IgY&l1~_vj5pcDFAXnAUu`Fa-yrkH&pnCyuDc%(6 zk*J2eM-_V>$}M}qUxmfsEbGR1f<5V#i_a8id-0*!Gf_zqv<&gaHOeNk^LK0tH*V>D z9k)_sXJ8x$RIQUcLbTefg7--#Hw0M+bjjjHej9ua(}+vk4Oc@^2atnQnov=KEv~ku4?`R0lGIw=5Bu zAwPl@W;2slA7+P6z(?c_Wjdv3e6VAp9-9aU$!B4Wx=3kNPh#`qhEQ$MLtKq?^7TTfIa>@rbnb~by zo=zDuM@Y{Ba1lSVAL`zWrQ-W02apID%%^B-t*{z;9svEm$p#F9a^vRpFq)W8RYwV2 zS(XXiO~Y8j%7_7Aljxm_Ud^NZoqrq0BU!R_P#Mu~b$Ie&^{t(@G(IvxLl7ujHeyL^ z5N`8)OQduV-C;RlE*V{B=TuXGtsPBC5e1-Vo$(Zr&|#+bW64BwnjNd!S@fe1nf9Tc z(qDS$|NeLIv^#YGpyO znRcO45v|BP1BTM3SQsJfTQ9(ziz^d6*_}+IVka%2Cvqz5OS>&~p;f56K9zeSfM{ko zoYsMC!QQ;^p^CeY&2rg~BY#13gu4mQIQkmYEecEe_dO%h2nUeIX!_8QTQs%W>8xnT z98Qr*CmXO!gh1tbB{dhjkqUaY>>xjvfn&C6ceJS?SBM6&$IyY$y5OH zTq98TTSVg%VL5^9xav%*F+6#KPXg8#b<=6|bzWpM;azd}3;#gvP-ENXL`3dLMaH{8 z^_om@P^4|u0~hA{Hh7AR2|_6NT?i0ldl>^3p8VdJZ8@sqbF43VTtxN-<%n(lz-L$= z^jtLAN0>p(nU#ePntvS?Um#N~IOapjailC;^JTWaul^hxg+J3Dm9s&QvKofKQf}n8 zrYYkC|0T+AH#ZX&t}fKr(OsWR@}SOIq6>fW25b(zqMKCS1s&e3MIxn&mXO5`_~Nd@ zAqouLr8u?jbUcFcX;78D8XKsL(n3{8C4_)~Dlm_LYN^Z+L4TF*kdUxQ<#h-uFK)oT z2gdyG23IwZ`snm{w+>q$iA&3m2$S5dnpu>AfS#I)QHha>BhbFRDT7Fu9po`LFr9H> z<)H&)K#r9HQLf$hHf129a@^(Eg@3E2!0LiwfW~{tv=Nq`kck>a+~cbeRu+F2p{yU} z|5l&K`7UuNH-Flh{$7Lh68$2X1i~_UG?kZJ{RLM+a-kQrZ*LVOA#yqrKwDEiRi@{w z7oC}&G9jjb)n<@Fw&B~yW2JY#Tf7w=Ja#@NKe4@6#OSZXw6)J7OR->5zX`4BK#qx; z=_kOUV%^7!FT<7kd@I?R?-pN*W2)Q_?cL@>nKv|)dw=Ct5;K*n2@#D1op6ziCcZOd z;!BNRmFR6HS@TlJxMdVl0Xn*K%Fe@-@-Y zv5gT`4kmcb-R-1p9@md(nSDHsFIN6AR9kfS(3~tHn%iX?l{FuKJGq=^;SF0_N3n!Y z<^K{oc7L*z0()oeSOE6q{}MWOvYH>_Y?GE(V73u##Mg#8oxb_|ma34OPf?8C&w5YA zvPfwjuAC0YwX7P>UCgHMqFd{(b^FKEm_=& z0Z_WQu2gD#tzf7la#tBpo81C0a)L{aB@1`JIoE6gMB|s9#OH@okdj!FU`m zhBL<2a+;d8)UafVo^n4;mcZ7LE^flX^W8xG-{=*F0q@z>Oy;VMgD8e(hd0Y)`iXeZ zbm-D8d$v2B#dOEm13n50BE;q(&};*4iQ zB?^-?jI(u^;+O2S-RdSuMP2R~zi^}NQOPEUr>w2ecBNIAE~0ptMvL2g9K3kG{(@03 zdYK8*X~yqNF@khbNQ+rxOH1>w%B2Oig_cDno+{cGm3WruSXAOcB4=N6t>07rM}I8; zkaUhP7uBzX1?faE65H$DP`he34v;o+gCP}00tTs!7zus_G7znpRK&PPO8GVWOIx(g(!;N?%t2W-8=Y`r@IFP zS#^I;{l(wmlXt4z zj)5FR{0~FR>{INRW##)ikWwo202>oqnv4T*CA52Slkm4#je|eI-;^Wu-K#(U`25Ge z{Nrg|NS@TH%ol0^mrh!&b>Eg3>|2{b_QFpZ@W(KMgT;5cVz)eK9O)0_2-L8uPgsUV zx&~3r$(6S?i1P$1gyguEZPuu9r+iX__P0Ntw?rv8{d^S!Sdzc z;U6}wA{WQ28dc=w#g;8kE&SC6Q*QV^?dWgF^bBD$2VyctZBOHV6lSPNvWlsS+yTxM-mMt%g}&)a*Rm$>YO|uyexd7$X zUGC7vG(S9aZ^7g=0g^%R%Zj0fqH9uHv)8v_CIs>rN_0gcYv!|-$C`K-M>bQgA#tUA z{(ZP$s*S$}-^-jGvx@2?+wb&g~=#{gli~f-ykDbnv9{g99nJH`mMds z90&5u(T(ZC&m4UbU1Wd9fy!U;X>?Ng7w!>M!g*xmn1DU|@PE2H0UnO4C44N@-3{(; zh0*CC?{-2zY>{2w2`eTvjL@%?;nsegU}4{g)!v=qf9tIFPUtat{mLD|MUvj{%3obZ zB$vsD>fha{oT+n@%kbnQ|F00hqZ9)0JHEAZ-%|;{P40V%XBGmfj$^)O4V3U63*=e* z>3da(ao{5t$A9u83{2Jc0&$%tpQ9N|VE}c#GjH!n#{~?7?|ggT04bt0_{y=s!v1~p z0QdHS$t?@YP);J*PnDGk)YUQ3eRt@%Lh&t^yd{JLVF+po0H+*CAVnSXTBYkw>?>k7#|CPLK8gOVofL7Jik z2$uB-z)$uDdnfkR!ovk$6Vj1agp|tPPpi2=1g{mX)sCm*x}%4*?sWnuqSYRwqQhen z?oZoD)yZkJIv>)7Rh^t(yA{@RYILic^&DxO8nROS@YP7nxONUf+NNSceYxlR?_jFu zTDjhF{eS3B<<$4-cUg1U#*L$s*)dIzagKT~O~mtWT|DI5{<6~xDNpbnK*-$}yw1ijwy zLudVvt3pk-!!AzD-&dW?Zu%c+g8&TqVI0X)BBEfqJV8hCjOE}b#N6$Xe==7Yr}y_5 zfqybll94nUdq-=i5+fH=SouXxD-kC7Z@*%1UTg_dWlie4QUQPuJK0*)JpdX1X1jdbNe*Mkt))5)1p0{b3C2#OaZ^50Vn5Pv+* zEYrbs2xmT3)3J^n>S;-J(!MtLy33M|l4rwgovOEn4Kkae>!&KcQ>pfmy-8Gk5=qi! zv`#D_AX=}Lz%g5*>x)_XMA^fukDY2jtPddnX`-?uJqf3`gE~=vXHPB)SJ^V_D^M?4 z=DBSWs}$&e#vnX)QF5(<=H6r3OMmMF!rqY%Ld6NzNaY7w9`~)>L8>)iJVmW3U_*zh zkh48XL@zN=?%rib-3R+73fs~U_JeD95c$Y`}14j<7+&kko%s_Vk@0r??3gW#W=ERW{*L-jX) zP+o^qHoRf^9m9wlXv!k8E=8J6Cf{_Jv3rF|9L=|?W~L&IP~;!UGv6}xMo(;$^4oSsVxWnbsy(K7rY-?f?EtbeKqHS^=RfwL#I zk&K7z@^;^(6j0JQ+z)Ex0-kfvy1sH8c8FrruR+B zs=5MZ@}<1`nk3MZxPMQz=T_3g3(%OC>sQWFdq$*B;;OG32>-ek>j)~d=!Nq04`oN@ z8vD78IwXgQho4KSTC__R(aA)cy-Je}cfQV|_*0SYDKD+}ij;6`ypVsUzAM9>dojC{ zf4~Ms4eRw!6@SO>WTe&CrQBlfHz7Ni3Nc_f-Csn zU${`NKbGBSqYP0sZb-jd-HV^p=Yp>S{yvBomz$ealsAYQBwLSss3n1&s*7d%I*fHV zkJxfn-+b>R0Oilm|I6MRT}5Sokwi_*Y9@fcG>k#GZOIa1jm?kwFeToC`yo?yn=EIn zuuBv5os|90hJPRUX8g-vmMmW6xB43guYTm8@7dnLhmJzr{59pMy1)?YQ`jQ;5)xB1 z;s!_F9ja_&HE8v5L0BW&;Z9ERR--C?jp*I>I<8z4+kBnc)SK@!4dXb;1NLRg_&V`r z0pv^?PPysM=r2h3Bgz-NjpE$r{X{VKr;&UqWz$s<_J82{k9NIqfgNyf7N%kt_za0V z&*dC)X<3C)4Ee9-km%Q-m4$$Lvw8be_ovcaX=-eZK4#uc!-ED;rQ{Z4*QHv0zZ<^V@(V$mx3&ZYwekHpQhOGhny+_vEsCK~0pb{;Wee zK1>R0vVUea?oy_&^Niq7oUbO~cVUXXxkK?hmjePhD=5GygO0*@%9irV^K{P7t`Rp( zGxPvPEWl>~kU($0b^1wV_~bz4sLU3&sUE~yd#b6qc2bds$V7rQm)}27C*pK3edBch z8(DGw*HGcW<|eTJFuXUVJ1&0_XBjB`0>ALV!4@b8ax8zt0-@OsdCokFd1wD(J}f=| zSMcLd*nxb=f&L#^4xKFLe-ky0Q`xmgXQpxE$$1=Rn#W@+ZD*#T?fQ0Rn#!>aA#9=f z1Sm5Nb^&GWr|;Dr#!Q32bL2-KAAuUjiJ69CVK8PIif>+HrfF2MGni?}r3JnP9Zg@< z{}$+I`X_%0lIdvrCkl4Z(e%CE$LMJKp3nQx(eyJBz9GmW@ZOQdObqzBBt{eCbM?^A zxb%cQscw8@XjH-&+A;ev$XUFgXvCNnw|Z|`mW9Ca#m^PO;&JyoTn1}V!{siDXUSc# zSwp-{9G}4z6`b$HFqqM$=05?Glf=t=)vmha4wrw$c+{k+jqx}M?vo84P<9*SiF)WK zZ4~8y|DJ48oiHlXN^cn8eWqbLW3!RkMv*C|MF5PE-?Qws2nJLKuE#BVlQ9SDX^p1M zM#pi|*)M-QiZ_y;AHrI;5qLpGiQ%?sEA@{nJC6(Xk24$3ygZ_hYv*&8yvj)apxn#FGAI4 zEHSG$tBxlx$m7uLnB8oP3&Wciq&Llu9zlO^UXY&bJmpCG@`4a)eGq;juSyg|{v8vn zh>?R(wO^T<#vukL-@-X^x?T&XyrEe=C~hD!$`AvG6WO#GxC(QH1nm~Z59I%vT~M#Q zFpKrSlU1g62C&GEW7<0H08FHjK~k)|z;q;57tPNiQE78=JeIdZC_M{RkfV7pz=VHU zp)TmuFQ_of#LOPFF31#9MAdw%znv!0)ld-()5oH#q3VO~T3Huk05nuo4{{a)kAwr$ z1ImMAw&=k4Ah;vU7F@_2^iAquuwAYcM{9jYH6Xan!It~rWt?fe;XX3 z<;)_N**LR_V-L*@SiEyno(4Nu_uEi&z>32 zk-Ug!0&m*jEEHwfE69J>Oc%z8Zk7V1!hesseE`LU`(p57>~BFX9ffOju?ce+Og*}zZ=7zY}#wTf))JZYfHJ0mLbKW|l6sY7MgFG{0WFysYqNtCC1`?HhkQuD|ldny6*=W}w^K zQyYWQ&yd@KIpg+V%0P>y8IVR2R9EMUPZ{2v3i-_(OSrwZFQH*54(+&x( zpg039N0E5_t%uBHWP?{45t^(AXY#ilK#hNUi7Ef*!oi^bR<# z?T2Q|w7Vb7pCy0Obd8f!-{fGydGo{Tgfp=zyBLP^%0yWsZ<~TE`fgtD3Fn zqg=9)9Lpt}ZlKuJB;8~=JTVYcc9YC7=4m2;9$}MwOq_o_=I0PW@!ZQ05gEBAD#Oxj zjHq~sBS8eaC-J-F2y)e1!i_`_do7j@ai=M~;6NOrFbuyh=!OIk@5Rq34oWXxwH}o2 zlTE%S75p0 zY%UXITa(S5a;o7hc9ASQ``z&GwRcO|0LqEx-)zYXt|tXUvs+D)?#!_FNw0UyjHc$- z_eriNof(S}{SxK3n;Y^_7UJujLvS)}atI>X%yEAl44&y6jFZ{xVjJ+F8X%oDD_hE9 z;UXMM`Tfp8I9Wttl#Ur(NC^=7Zf8!vPeQ+wodlCb?qArguI~M=jVT6CUhke>UVb>a zo?ILr{rAbm^@oeIdfMAnRDE9@N|PWZ_o9VY2Q|E$PJtuNu_N0W}ft$``x z;TMLpMVOO8O*D3qVXTtkn8*w)eu6g7g`?2C4+fG`xRE9UF zXOokQx*jMA|LK3^U!!a+{_q3;0l*JR^5M)4M>6Rg@==M(%`1LLg~VBYqLw9C`5syP z5uWxvu}(fr&M!_6&#uo7U!OD-_XlyV9_Je_*xW~d7+L*$TCi$za`?8b8y2ptT@Vk% zCx1IS`*3`6ef;75*(ons2sF(_id=j)I&xE^Ww29AnKLm7MKu%?rX)zO8vd z;8_g@Ow=fA01&y9apMWdzhrKN1QCQXp7d?$SqJ(Mv@xF5P0aGa6SBLqd`i|Vs301C~8M<#{p0v74c_Tn@Z zi=@lHiVv=eDfozHMblFPtXa`y(h>7f>i)y$Tq##@q~=t<_Ay*Oo9$9}7t*8}6WJp( zTy$7-V@4T2Z!i^5&BJJ!nfo*;d%U`vRNrX9tw-x(8soK3Jw zmH9LKpl)Nnx#Q+jRMiubw@N-Yt+#w&_pjon*Tyj>pd?V?9$00wB@&m%_d+wsS zvl|eT$xZV}N*_0$qLNm=4yT`gWQ6AOHo1!jt!2&0S>URw`5$}Ve{G+shd&zS%Bxep zQNHlOkMe(w59^PrNU{7+{lO=VCr6?>b@n?~EkzKq_tP|)X@&@Dx;kO`NU7)MQ#75c z$KnYKNKQJhmZk5SaIv_rHw(TwCn=CR7`5@J3F(yi^x{w<=9EVn__kbszv&Z7-L%w% zn%g=l@7%VvlDxl>u|UDU|80(g&hQ|{QHky8VL*hBOUn`+ibj)+F7wR{woqgYmW+4% zAZptf_ik?$T-CgDzS&lWdL7N7pC|~9Ftiqwk3+iZAhjqOZ9RVOO>YXuV_Lv zO`)-bXulLzJh9v8kgvsmZ!8735A;VKyU=84s$;42r$AwiKFj8@Iq{`{pk;d_kI_^| z``{JG1bQ~L&lWj%Tg_IpyVm0iHGdmR#`U6frlw#o5^z%R#6@!5*YfmS3$oR$1HoOX zY;Aww19Cj2HM~pBplEKY>W&c2q^2s-L%_I?-!sEoC3?y$kkO5QSeicR-TuklSnjPC zi=8E_+vxCf#O_|pygW-DE!CDw@Q+;lO32r6Q#Uu#8VvS##7%oDkD(Iekn$$#POm^b z$tRG(QJuf3B8>rxsC0Q6&)63|z+%KBU_1SCJ|ENuAO|_;pNS!g??9eH#(0|z4;>jG zRhgHp99~Om6A2lAgFNPt;c+^LObvZ`O?z=5#$mCVN{AAMxp+v~7H+2iQX{Y{JHZ+y zuOO#*fZ0P9avD5$$OA{s0DpPD887eEl~ATa*TuRZjnh3$-AGL@s_38*e}Y>eY0~+| zTKasKQeSp3n?x={YB!YB6cIT?#d~P-{vw-=rV->~rRJ1>m6}=_k(wl+6GSx;SQ5NL zq()pJh>HR~;3yXN1#%8D0I1Db3g|7B0*!RlpIu0Tfdq5TzzVfgV8NQK)uM4+@?eAh zaB;>3PJd6&GA@GN3`TyH4fctc6_^NldP@0@Zrk5*yo&e48{k)L#)yCxWX4Ev7349R z(iM0F%=%z|lSf9Ja0PiIHg|chpCx=#fLhowRKfDJ_^tew#BMSY(6BCw+ zTW&!P!0`E_yVmObBlXt~xhMP0$g_UhNQR?`hw#gnuEG z)0yoCp}2Uw=Yk`|<~ICXe>%)E&{%O>J7e>3vot|}ko)8+3WXfmB0|tLx}Yw#6O3q2 zW=4BDM=^?K(nIBzJNSM7VE6(Vl>bfUJ_$;LJm%(@=fxYF+{bOPuu-;NMw$?LSasN8 zI*u+6_Mg9)48^nrLj`M5f8B-I68Bu#j5%!llZGIxSjPz;z(1ZgG1I)yD!%yzQf+yk z4Bu&g&YiT>wHd7Ax%GDb$M;{$r>>rVd>GdLu>bMlkDZ!}P-3;qzn9-XK#%Zbun;&; zfU8wO#tP*6RGuEVHCTpv??5_o3|RLv>cIV$%G}qV%&AwE0u0=_Icf3%bl!ZyOZ$H4 zrF|lNNneAa+#QZLwQczp7FshB(g}IY2{K`SVprAe?|Xh`t&tTXJ<%b1gKRUMvaHE= zsQ!x85T*MGM6Tw2DsrjZt7ufsyEwmU$IN1iKm6=T9Fu2w((kyjf!32 zQJdpXbpo+F`UGJ@N7EMB1Ap$* zMWYwp>j*ydBNs9rBBoeWd)C7l+@`>+E2@9+|FAE4chw>%mj>7wbZ6E17)`_Fa-hew z8<^wp;{&QhK%i@W{1S-=gT4QMPu`z~!QO5qybOQH!*s!N_0~_XZ=Zj-2j@pZk zmXMP=QNzWwV`nn5<|utc97AFgi}`9SqFYECR0Y0CS@;-@Yw!|S)Flk3+XCX@4b*OQaKO^hLx z8zrH0znBii%C%R2rl2{T7y)2yyH~hbUxySW0JQlNt#v49-YZsz!q#0|`3Z_m!Dt65 zcA!Q(DD2U(99s+dV8!XdcnE1uut0ZcoYxys3%>A95dVjo2nlV_DnOCEVn2_VFa73* z`-$>8VZy%Tc67QQIGu=1|5-SxgB^(qR(wz1w2YP3RN3x-A|=wB?f+-#EbAevQqfAVSv3hHpgTHIQFpby&(w%Zazg* z2oO)@qz$I>zvFsDsuvsK-d^zgEsNP_CJ1&@L30&<2C^prpMDOP8wROw!VrsEMncSG z&LWrfAWI-uOvZ>6NpF_(%^3bV)4PMo+Cm0q11{l-5&-3|)Y(APv`EBs%SR$tI7&9z zZ{nTmR08#HDujXfB09g05SmuYK*ozBoPEAXFcQw%e2RDg6vk`PJQ)n;;&>n*c{NTSqbU9ikx;aGIu^#pi$+2j<4Z+E8W-R~o%Ze;T)hK$+WIHX@oCS0JGuD% z;&g&IwhmN_jj7g`TPn+HB1#U6Cj{|-$o(azToQixQBK5c6ujq3%cp^RRnc5hs4D+| zLL^<~>3t9`!YCeD(IgHGjh1zDF$fPBN2H5_>$^DPJTS2DW|E-Lw8mr_M~wcN%*9xv ze>R(OQO`j&D%TB^a?{DuWU82&JP?V$__8uKS{KggBsrF;qbS#-i}F60vP6bji|M2# z@emmpYi~-+;=v}sNt?{a>AHkPtjx_-7?1&aDWly#rXE9%23_>YMHUv zFv@T329;4LZ$l2I2bm%_9ix%Ol`&RjE4HO-MH~$-diNX+h zjHW;sA3u%0Fc1v(YQ~1aF+UchD}aUtcehMXCdfMSP-q*XPttoV3x(CLpEHPKB})Nu zGow>fVnmGGp2~vQdPp_Jymn)Sk}vw?f;VXf&bZKJl5C)MT$}A!j=nUOMQPwx@@VVe zEm6rB<-dX+tL=FC#PW?s-ush(Cl(Wr^8~t`41w@tAZX9DiFy84{qr=a^r>#~v(b{p zi~N><>4zWi0k|G08*`;Qx{5vuI0HZ0OcLY3Uins&ixp=eBf)oq+CL?owgg%t%VhZv zBP4V?jAAXg9VxZO;pzQk!bdTfZIC`z#?)IM`jAE1W|yw?2w;ZB8fkHVwyE5a7+Iy? zwn>C_quVBxV(}TaS?bCzuw`ykuq_B-Ta?a^s0IUJjc^I||L%hu#$xWIif~+z#Ok6M z**u9gOwrAgT({I3A8aG|rc*5%n3;o!oH$<=vCVPHq?L?3ZDtlDw zM5v)8%O)k7o=RODiu+xEq+#Nofk_V$y3!1JSStw8X%JoGmG~XJg$vQvA9`7CtNcMF zE2P|6(&!6u;zK`HZX$pLaI~kfv`lU5iepN=sSlA3=nmN*2v?;_dtX@jDGToEKY|~E zKh)Q?rFr;H{G?IM^-n7{2)_CUGWI?k_C%lyM#ATZYbGL0WCVVHl7O}Vla+6!U^@P?_OS50hTj@^|3lZs5{1fw`nzl|Z%( zkZgaH)Aa}9e)cG9Nu_P8xK?%#g^aMkkx;eRbp@b3T0m;XpaLT(@--|}bl%k)NN@?{ zF`D?pzQRqx1jr%4*B%I(2vXsd|DV0LZF1W<)`tHIo#a%1tsHT^1m8CwjulHeM|Inl z%TjXgl;Uzg5L_Yx2?ii{wRZg9?|A`8faq!TG<%ht=ZR9~NW0|BpfTOk-E;NTWL!jp zc=*@9u6PE1Ybh!C^lp%_c+L+I+t9*gRi+vg57h_K8O$?Km@8v=OkkdvkdI$YifS=R zJIf?}yEQg{okGrJSEEzci*gNmbl37=&N{F52}+H6aTu*@&+;eTW3@B1SAS5CZzHXXCr_DWGRy zJ6I%81MoGPa)AdT6^2kAh}OLKLVF$>yRU-Q{rdcWOiZ?2XCf8A0G)|M_(JO}0?EXv zTi0s8d1TYtzA{fgLu@Q$W;fjeq-1gbNq6jt(`8|-jX8Z!nbWZB8&h%Y#Pv@pzeE#R z_5SiJt)mbLHW?LxUn6yzV%J@g2NEJG87i%T?KlJ8Cy>YP0gy27^F4eUuQtx>D4&{g5c@46@46FMQ5cnJu&K#r(SkqMKQYX* zx4rW!h+pWdzo0dOZ%@oSxb&CCt_QDx6`2J@3&wFnc`!FfH-;`CaHv3rB zeH!ZXh1?<0AKSX%_}!Y-N?4);xrwRGU)o9^V144`x6{D43JG-j44ES_D;p zhiXyJ`w#KsbGu)D&~eC{#oyv+e;sR5uei9f8wm^!0uNw=R$4VtyZN@>G$pbfp2LfN zU+=){-Jw|9b%QU;gDu~}C){h-8r83MDf$#XAcy0&?|Kps%Cb{i$UP@(+Oj;Q2kM4@gm4H^aSpvx6Hb#7s7#dJ+GQ#mg4`U`Z&u0H zaAltRg}U8J?dy;z=vo%Jp|8h{TdngS|LB39G_(S`TDk>a&Z`?loq=IH0I-2a_e;|B zudV3q8vrNt$k;g5kKWW0_^#*0LF2J)0B(KP&dRcY2-1KS$s_C`0x>{uo(ige_`LV! zF3iJCX=nPU#;=u)cvvUVy6MJe={kNf4X&C{{} zo1e{Gzx);2Alz$%fJgTc5CIq92B88TBsU0^5CqyFM5>On^aFWckU2Y!`$Elv?gk>P z0@@9{*oxShQAtRjeycQz_V}%TY(VaySVs;z0AY<|-mjQ7AVM(!QIdcYm-II%34upb z8YA#l{Y`g;I~tTPs#nps{ZG#Sea7q8WC|{SqMw+@6>QU{%jDiN{*~|OS6Z{v@bR{{ zO5=~e)4AKbWZPe4>XmM8d%?|4{V+_GSo#{7P~7$+HC&um+QX49MXC+fHT^50RGX8BRJ7C7^lUpb!2{7=o8sZU%*YA1YnR(&SYEpe`%ImJv3 z1ngp~RocPK*rhC*ziCZ>L$j3SSXKm%kti0j97pX@#~>_YNimft<*04Q^4EyIIA0IV zn4V^BQ2DDpbl7ZrX}sDyCm`pgP8(n!F8cPCtTCJZRh-86rm0r{r-9mw;Wn{7wq71= zL(J;4H=9ClRZD>yFW-d=%hGh*wzk^%`17mZm`-@^ZR}Ck(|C}7p6Rq&&06s>ep9w` z>FKk`J*Q96j^h<+S(YDG0{MJ<_j*K%vI+LJhcW-pFMS@W~)`F+X@JKwcO{*Cmm$*H*JXx50i#`N(&uxEWr-d)`8 z=gHmLy`{)Wxzi*K^JF)Z@+sXja8yvulPpX2*}8Ah_<4IOx*pmwi=B#ITF0019INN) zX@|Lb!TR&Ax#_xT2m7qw@4Z`VsMCpbx+vR*nP#uc=entXt1dv>mZjPcv2s&moeJ%( zl8+{4>TO~*=d#!DyVgb5S-Y-X@BQ}ft@crl=YlbYwchhzn}6$%Ts3~B;=`}B!}?}r zK5=#29M9ZGHaUZ*{~WECekcF(Di0$xgwTv~-GYN4qs zlfB!UAQx1BU9PO;`YIn~eOo>tL1D?n!B3?a)yu$?!{@-Sl%pD#rXarN!KommL?lT; zNV&=Ow?GB;s!_vK=XlBK458_c_@$~t<{tJ@o#tH@sycAS)04pQX_TsZO^8y#*;Q}) z$x7XhNh6B75v$rL>P9sU-Ri~yjFD^HFr`u(Qj0x*E}SpRqkQdBt@0>mvt#O3E!7kB zPhQ-6ldt`u{-7$Tf3G91#t%&l_QHODsXt+{iWDDb?lr=psr&V53v zu4{iwBEVQ4c4-oY`}obuy;DA2oIx(at38!#D4!FaY|LNuURDz8y;~*dc>4RZPta%c^;V+} zrMhJLH;DWu+`lxB{k?7?{mqMaKfZkZ;_Ekm|Mla`7w=v;mZj{DiZsIX3o9_!3cb3& zsdXIl{iYF7*WBvB^lP5!n)zk6c^m42m7jD?wq~2tiEzjCx~G~(oc9-b_Heuu1UT@0 zR)F=Y^lw+`-zF1pN62f;=+!jy>zaR0U4@AWMB8M>g>vm;eKVrV4^8j$Z{r7}?i%|B z`g`43`D>T!X&F!gZ?=~`Y8gTSc9(!^89yA{DWmW{>XVMu(W^9t`fNM=UIZhzIR+JWudc~5XpVt zB=ZbOP4B(gi`Vx_kt~u_dECcS@w3zBxVF7s|FcYBf2@^hj!X1bugYqe5z;a#bq?Fd z_xM=vahGI#+xMNG(k6F0x4yn+>zUYMou$=1nEJqJD`f7AI1gNBdx6>R2oS#j;n^O0 zd-t(_5`g-@Fpt*!P`ml3CaJIMxZ$^E78`UHfJ&2N?&hCu_R4Y-{2@DRmyH>}&C1!- zD^|aQf9CXUEolF|uWgy5I#?&B=C^rUHC(t_|X6jLr-azW4n4 zML@fnA8^J=DP40COet$Hi-CgNq&PtlCCm2U#QA^&EeYCBXsOFz_Xhnek- zdDPd%%kl#yeK0Vw7xMEsvE}KgW~~U4q2c|Fe}yYv;8+Fhu6~g%ANz$;rS09(b^rCx zKUb}6mc3toxox}YokP~D+U!Wxop!g!PfSoaAF&D9=-LYHUC< zW$)MRFy65?AFXzzow_pu9^lf`JoFGhreBlWNnO9 zdz-FY80#X!8@7tQ?kXTHciRswOL-oQZZ%bEGZekclVuf$x}H>^kX5H7`|B`8V49qI zRlT{)wP1glXFFY?*dEu{2Y6qS)BdU9P}Yd>PQ^0q$$St0aBr^?;(EA^P2lSWf4r{* zqZ90S7Qa0i!*0~ozWHWc?_E^WdF>~>u&0h4Zpta~E$)RF_1NMb=uzSpw}qSSiF~60 zaC^H3_g2&kwl=jX#zkA3+5>~OwTWFZXk)QjArX66{7W5Pr0yBbcW{>V^*qOjeK*=u zmMK^uyZYi(4dcqt)(U2Nn?t%!e|D+MaUr+uXfM%*kwB(t6YH@}YY3%#-9i1K?io`H^7mDm~NOsP5}RZ`m!NFqR-dVCdNlzRSKN{o8?&RK-ot9Hg!@vK)3 zaZQZ|iA_&hlI)BHNu5vH-x46pARNLT?MS>1VYtzVcl99Ycs|vfww3|6et8EIgYf5w9SM4w3WwKXaY>nxow(pbE#eg++ z%UHKBJequclDDVuQQ7z9djFseR8x6?ou$zmSB{lHcN4@mEN4rpZ*SL1fXT>xTFhiu zi3Xl*%HCAZ&h19+chFQmf4ckr>YR}AY_{`XLlb&dya6~D?;K%!H@k*rr3^iqn>day zyQqE`=}qXaeJ1xIIZb6b^V%c%MfmQ;LT}jbpl$e2QHg|yhV@Irn_#mXwImLNYH0it z?(JL7F8vx%TcMPHw4arSNf9smj#oFJ_A9C0U7ay>dzUUqz1B< zGH3<`>2PNdt^462EGBz^II{9p$7PkUE=?6m~%FcEZru0lBS-pUMtA zVT5&^wMPj!sGml)bry05lI^|j1*JJVI#t>eSV&N5PZVK8r60l^e5d|Aj1YaMpQ5SA zzD3y#RL~E+FoGmae`7E%I$wsLrV%%-pN9FVuP4B+p}wDC`s<0WlUFrQ{GG}7?DOmc zqHCTQJL>W21*3EAVoz`!Ro%Q$a3po}0>9zv=81Xp)Ql%O*gT50-(5_p$oI;~!fUb&Gc32J!VD>l22^M{ucav4B9 zMHS&Eps_IpqpwWkgj|!_><;ROZ?-REZCD=lUv)oo_5X*x`jr&jjcZ}rKK}lY=u5We z^$xQ3AEx5*d6$rK87f9*p&45A`So0dcPy z<8nMMZah7u#IR@`uy!+!@mp^kEM}PO? z_g}yI@vApq|M8n|!5wO3-#3JwMdKfROU>^z7^F1JaUIGtNFU$UO0hcEVr!`Swp_@$ z2rvGyc3ZC2Do$?8bpsX*PVQwhzjCl8HCI6A`*W^}1*anAf>7ozV!{Vv?rOP%_E!Lt z4$Wl-xVx@9nJb)g(&AHyzYCiZVSn%}kAXnA+wy`|~b2y+y2d(9#;sc-anz zX{uIH+5MOu4RB3d4b{;ESbuIoNp`G&OqrXQkX%96Nr2Zrp2=+{DmkuB>6Y6@?xj7n zCvTq*Cm^}lu3B~sM0&Si{0B@%P0d!5Szoh83ki%#&C^z6?rPD{Z6h{nk4;m~XT6`> z7fVlC3b(zp-q009s7NkNGqALp)6yVRENfnBT^H&fz21bot1F9Ce}7izZi=A=(XT#(!ma*EXFVrFT{Jr5Y3{`mA3ETvsI*(1i3WR(&hn zoJ{|OJP~MdJOTezu-sfm^;7av==Zh9l9uL-r%D%Nbi=b<8-HH!v#+xUr3|6Q6+VO3 zK)={M83VNl6K+7`(eG(%R1)VKvOO%-Y(Z9?RJ{k-yr%i6SqF2A6fZkZH;)3qWYs$j z+aAfQEU)<(Z&teb*J(#y0h<#Lnpa((nX%gb@4~yY8MlWtg{GkE{4bX75fF?Ij-o>_ zu4VebDmo-Vlz%;4Dcjy9shZ3o4@;qK>Zo39mu9ibhC_~vNA+1tBp$O+H5XEQxWdfo zJDelJ%A>fQkiWJ+0%w`l5f3@RJmi<63)T*GCgW)VBqTuaK^fKHg`09;y}sdyiN-25bcuTPLyNtJ(^Uw|{0I|CBxM$Rs~6^SCDG_SU5P zo^^Z$+GSMTETg{jMOtURHLOPkSQ){zJs6MDF5`58VNd&sJqoyvPu;qaylTn*dGCGW z{`C6w%jeA-)$4b!-+le+hv&7}y~@IrVg>fEN3j@i%R{OMb7&5+Dy*$Jq$;oWw`k{> z&Z?AwB7b5#$t7H8v8S~|&wi()e4SS=Ebm#FO0_B6_GDhiTWvC(0Z!vRn1H2Lb^&N< zQpFbVHR9bR$b-K!*K-zl2D#1j>MZSlJBwaR=si3G{WP*#4GEok(m-POY#jky9lf7ET%hEX9cAhuB zEt<+%>#yp0ujYQ1zqc9!$;+QLI$7SH$qQ(v=S?ermYW52usw}8Jvgw$1y>dHNCQ1Gba5OyX>ws^2RMFLvE5JBDx_@=3Ie&2_ z;-T9K@vNLv@lSo4#_3WCwfsQ&QwRX*QEJ$=hR!q|7uvv{#dbPU(MizQu-kyj z>s4d-3)IEcN2jg~T7&Qg{f=)VO$Z2bZ9Dc@BV*@=WZ;+=qrdB`PN zU7XU3&p!vgOWfz5_r5I6e82Zn#ee|5@ z?GY9X%um#S&%Xe^OWW(`AzM4qScXIH{YyqMIo(bbz{%WH{~9Mb|o2GWCPDA&9*TB zEHgj1YE}p2T}OvJS7R7h9=Ls|N?|6bT~syJaDM#{O+?j^vx(lU;F;d6oKunUJqAB; z_FQ0=zysN1U(?xzUT1=!^?%Snox{Kb?qkQR@I=-0XRA8?9-52p58AmjoX9ng{v9+2 z-5a!X9FaS&iH;wDW&`!!Gs$SzaSZbu%gEhF1sUq&P8xV{bi>=AyjZqBbZZg)xNPqL z3x!oba1T#EGaWDA%y9y9xh8^9KqBwG1=4V?foea1W10;3DPQ(J++1=S3cE`eDLG!FL?bim`19uVO?ct^6z zeLY@MKq^m$^we+u>xcC}{?YsFv$LPRSwTXisU;vp5|9V@8cj6_tnpq+D$VfUn5}8fd@yl18=B2_4<2(Y?TK~^x5%roZ|ft;K20bu(kS4n16Ut{Bc_n z_k(#dGRVj6cX(iY9GFppfISdDtw~67pdNXEZV?eW&^K9?oPPr%2QwIIQ(2ck*CjGK zhVF%Bd6=z-EY{hBh168xwLbn&HypNTGAwF09Ka%o>H@{uM5qpU%i{za1!NLtySpqm zL$-^zS6{(A56{6_=&GVt9^O)~=>Qf34~Ay-vFs07bSQ4^B?~YZSvvsT3W%tlwtfU8 zED!KCntmKf`hSpZ;g^M}-*b3g{zG!}Lcn?7x&%bT5Aa?{*dE|(wC!IZYg;9M{?OQf z4BT;MtnJ(SjUzW5c))Rd5Uzn2Ag2NBEiu|xl^fbQlixjeOHjHu^k)sUP4#17&w1f$ zKx^Uwfq^(v$UqfvZnnmd04BiK$Wc%o_5zkG2V_u5{eKPnwk-jKMudn!LSqFj0TH;N zg;r&|91`PPci|E{w%2rvi?+WZaj}4(0TDl;#icWMu&Br|3c9E&!eUrVM7#wcCK8MS z_!?~+YcU<8JBO@16I%pXom%j@1;$N-1tcg0@HN^-)&i?VtqzfSCb|eBYjTf)5@TC? z67&K1ntzA2Kj!dYfstFHdl>uUlx~p`VHA+ac($I1eQ1d6&B`G&d2?Tz6A>EQ;*+2Y zzg)olJT}bF>b1%-KX0<-A&sAs_Iab8%}nBCa@HSlC0V^_N58%6n90ovt=O+q0WWyz>pL(_GM+h05Tk6Uc=Ih zYJVmbmk6G_UKxL(Pi5Ndh@u#&)NRKK~d z$iOhvTPV;}LfL8Jc!0fQvjq3fPEpMX_0>8_mr&t4Ia%U5EP-(1Lc9q;986IcC<#W{ z>=i1Uw}6dwD{04ZP2<25UbboT4ovVo38k2)g-l!i1 zr+>-@8ee?T`z9`mP%|f}Xvbg_m4E9OroCOZJM4N7$yNpb>WQ*#FEZUowHMUW`QrAJ zG+nBYN_iYEvu*lVj;qD>jh^|qo>FY3m3*1$7OiSQ#afpM+b{iRMa^OV|If7^uC@uq zLi6+&QJ62|Wl07BpvH)G>#dbP#)VbM`ogPq+u3XjS7!`K)Be`P+pKe5^?&tbdx*`e z(p`mJD|pJzAQ9T|f|}2&p5CkD1vS0J=y*ZRa*1@MAa@0+I!GKHbLC*Pe0zb`Ae6Qj z0-J4Et)FfT{XOb*mdW~o9~}kB5%;xZodEa zuvDc2n`U@12K(?VzxWeCp?^dyya(E@u#nlrI(d8Sz01mT6o#DnHQzY%V=O>gb2VPv zC!@XvPxUOodg+xsjoo(ECFWRY`Hz1zs>Rv~Msj5j#PZKY*O6+`+ux$?dixT|gr(#< z@*|aC<6R;|r5=qQTs)=pg75ZMy>>nrlEN&dq|)y8x5x|*c#Q;s+kceYxuHGP8Szyu zTI!%S^yuAieSPg@+-jfx9vvGR2B9&9n>w^TAGwGJ5IhT=M{d2)pp>`5q}WN&j}&`_;5Q4v&hBhjVA@3fyK=kVJxB!XGDxo)T13mZOJlp zqU078jk)#pMA_8{I-5_F;-1@o|f;!z9_ zlZkp1y%V@ZT^V_ROVp#~1@L7LM*(3H_3CZGA`(m|>Mr9!21DmFh zRNxML?E;!YYI_PVlF*7qA>8)jk4a$+dV^8{;7_3TxPbT*h{f^e-Z+CTlw3S7%N9y5 zn`g0wlG|j|9)AqT-T+>@!?%KfIdq+actwe2_^`qf3+e%dC81}4uMuzmAcdutwto(( zso^*&w7!;9qFOV_rBNuT%nK7rF9gIo7XE$ULP2kN_Ye)8?mXux!>yKlcD!2 zkh$KWcQ*h-|HD>ESPchtq9OM?a9_XJC=42#ea7$rCe;1|jac9PlF7XXF5!~$X;4t( zlB!-Y)PM1S9?FDWj8XL717IT^cI7>-=>YIG+HQth2M|sA=e_?~D+j^26w1?ACQScV zLzLp@y@%L>e73P>RLgqB<2EuLh~+d-woQPw;W*bXw0A;S0xP37HGrB5&{U!Uc)}Rg zs9g$ra2Nmv0O!qa>6HJTZJpcMkHpo=#G_XMF@NVlZ%_d05)qUEH3H!25)oFR4W31m zS!?%trFKxVN;IQ|dl$jr3a=ZSsO;2MP1od+uS04qujuR5ACfp-zCM1TeOFw8_Uis? z6VBISN~)*KK?43u%LRMT11V2ZJ4-Jj!&rNgI50n`|DIQ6Cm}->w-Utb=Sg4l%;#GR zDu3{F^lXrr{@f-4b6*hw!$*s2B8Wr!_MGzD7Md zk1zc?Td$XJN_bJ zOn|S^_Hd0Dl-x&$j6sQ>q>m06v%+nq(15IA%#28*1*+a@CHSn~P6AX14{Qt6n!+iF zMzXvPeeC^b)z9Mfw(7^;yY1?6K~-9AOM_Yx&()cN2r_|IK+(`k*coPqok1xkm4BW= zH@G_yG(^-g(oaFz@Ot~V_`GzT&&uG>8gMKxP$$;&-ZwAa{rK|ri?84O*N-n>ynAsO ziGo)_^2==VHryur@tBxmL!9vyX?g^3lc+#CLbkXmjLbg8MasL2zMj&28e{ZhFJAW$SY09Eo zkGxD)r%)d(Vj$hHw!cM-&a3xVoT}&F|8T7Cg_<}J8ST_#>BCr!Tb;`truS8yB2pi+#OonrMS1aySqCSceeuH{hsfi$?fJQ zn@#3PHj~Nw+GlmH4CuNPYLa~K5J32K^z~J@F@dVr#&txqrmauBV@WM(=g&^J_F1xo zid}iWJ=^e7t)Y(L{mHnTue)AK%Lv#d*SUMXbD>XapK6nvbns#L@2+v%L*s$LI(HVj zk)3l@E$N!R(gs;ZNusiqLg(_r9jqn;+WF@n%%{M-&uwM=k~tooG`gBVC6^IgGx!w> zXw>%fsWO12+Z6hoV)z#~{1ZPZAI9JB!&3i-i1TkM>je6!6dAa>3ICZT zlfL`@s`u2S&e6JPbWsL*UQRCfM=p$D1lP1A zVD&t?Gly;n-ucrynm{CZ-rJYehw7$lUtRt+$MX*SpL^@yKPs=)M0pzvF|aVqy9_3^ z1#+&E3J#wO!SI`_IFs&QjbGaz7i$Yh!Edy%ehRbuw6slJmvjompe8VQHuO2n;C{=l z>BFM!lV#iQ)JUqkdV{+^MMazf)aL`P71uahmX2!S4N_L3)WQwq9p}l3XWr?PN>cTw z<|MfhW{+Ufs;bRwVFgy*MqBuQWL$JL%$p_BVY3e-Pp;ZDJ74bjof)Y&|Ae|NNsguz zHj$_g>Loxo8~5usVf530TY_Pi_q__3x*I9rEuh^MBd(#;&anDnL3N~-g54A7$7V3q zEyL5Fk-ng<@>rZ6To(h5PS_&U`;^k%9=C7J2d>`H+Uasx5`C7UrUXPqYZSMO0WZiS179uGn}CX8!IP^`cW7=ger7iXKh>T4des*+vmqD_ScSW z&Ym`LI{vPzKlaXw%Yc(mCI#0~M~xSpJv2xLoINsieAVCmkif<#`s5zhF^$dF zm7`D0n2GzEDua*DPL?8^$90SaSg>u;v55bG^<7pEv3L>v|Zk2A<>uD02qhVjID?gwr zu^ixom)-p)d$<+h)MNtPrZM>`R14T?PeqJ*tXW&S(P_{v$USHrF|N2wH28}%>3`g$ z%}k~YMxr&)-|n(e{R{RJuWvV4ekB5e;ob1Hp#7!{Ym(H_-NA0Z zMQT=ANDtOF7tv6!BTjZG-ElseA4&`s?Kmyf7z_J><&8k5ONdte>{@xuDlDDE zMT#)t%f9GJ;CXAUHD`P_IZ$~l>4@3yK5m;JDtYi!Taui}zo1Pwmhn~k)f3!Mf}5Tn zPpzgsHxfX>vgpdrd_+ZLLI2`{d4wqqz6kBgpUw5zwxsa>8+|ktsfBN4uvsS6-;foJ z?oDXsIZAs}zZYn8eGZYr`R*%}dn(&PeZrEmRyf->d>Qlvyv;< zF@GL?v@_6}b^Sm~xN&QDb7Mg-6{_A~oe7B13B>;utZ{f!in8*p5F8L85ZF1QCQ9XN zmK#13eo_q1#xsBaJGBJ&eAPQ7ZKxUMhYfAsKg#ffejss^NX7GPve!#xNjTf=2Ul*VO&+y-hY9mTI%; z+{SfFpk0YVK^DHOROCRvYbZO#GSxPbuoqf5l{tyf864a*asRILPwNiwB!A^IXTJ1 zTB)bsOTle!2xr*tgI-X~i9UUwu8eS?v4PO7@als7haD^)#$*naY^V2QA5-5trUU%E zF;8i9h9aq&?Cxxv% zclqGXg{gL-`O;;5;>SN!YP8z6Zzlc-B60(<9ii<&IGqr8W1ZL>ZgrPL&5%5y%OATm}q!Xd2{iw?QQX`^%%O_9bcB)1iKg!aJ7V(5? ziKRM+{=n~R|!PS@K*UiJVwxtTyr!ILETxh@S z(2R>?mackz%JMDgleU(Y>3`9rdFXe=_G|*L!1c#y{rU|C;z$4V5Mo8cD+#U@D;-4> zkvFOHy|@wjwmK4!P>U(nH!mS`d_Kwdm6mbR(}ERGfk=lO6K)l7?%7=Pr5zg5Hq zGx$&|{Frwck01TJ!@>P#Yz_~+PYbmSM;KA`k+MD}lXa5*o~39d?5z6hVO|)&9Q{@0 zz&u_Z8!R6sX?n|$0eYR={ox#2z189Uda>{*;{SMXF5rkQ>`_yzXdRDib5}v9=q|Mm zPPb30>I8=#mfFX7$S4#7E08s1oNDx4UZKbYV~k(t3x6%?9|DCmH`&3xT=Xr{hwwU` zMD~i(&DQ&VS<=BVYURYS9T~gJ=7mB<@i>Ng5T*&fO)^2-UCfHpZbvm_s8x1h6s37C z77`pQ#;paw`JZG1&*BOW!H;yC?5SmQx(-oL>QN(N+Q@!fy=!Y-n?7~J-3siu>+B&U z>QX8DL6kY$)w`lMXAqpsqv1jd*s{2kW3XHS50>I`HKm%?7(2={ z;E&$B!{awviMEU(%|btM+df z<6qavZj!a4mcDPjUoSuw;azW#7dH^2MM~!%*-Lv2Sk`y{=aqM^_a3r|xN#AJxLLiH z&6`_4mPxU9oAon!+2w59nfsx}*370P|5hg)Zq|0o7_9sWcWV5<(C+Mv$0Hf{tP-J! z_yVrG4xto7a55u#@b!7c$MXz}M@eGG`R5lmnQI*?fAPAgXiUq2fh&$@4ZG_JPTm$n zu_eoYde%NRxs{(A^^aF%Q(<2I;wc@z>uykUtcW~xV&FTS2yb-o=Va$zmXWmy6&a>- zJUqWYfERKN{61bba>4&z1}+W#(6h;M&Zi<|+AT#I9lx^?UN`L=c*?1#)F2XV&iU$X zOL)3TH4vA&NoNRcuj=6q*n`Iu4&wygAH&;nr1M-aJabWl=4M7P8Q%YGRO|uVszz#F zR;o{6A_5IFC6v$gksTb{E*E^Tdt8m$CJJSU!9BElJ0cycHQ5grY$&J8Z3eMRa1Rb{ ztnTNAHH-EzubM%M8Wxu1a{)@7ZEsanf7-MOk>W92?l;~F=B~$QDQ67wUh|D{l(p8E~918T)c+r zq#|6=H6sZb6nV(6xV~Es+g+rF>t{%2HoG6?QvLlu)v3Utb%1>dNf)28QbcTyrb50U3w~YH=Pg!^Zi>YYX%_~_)V+BWEDPuhnTM5Mx*hoza!6y#vTbeCsQvY+%^;;%yV{FNwC!)` z%2}hcfz2zO>MRzvELsK5p#4(!GYF{!hwPn(fAG4BT~WP8{OGQQ!Svt08v4(UUo}Pi z@3(3?UqrgVx8TI()#z_Z+jb8oI~BPTh}38AD$7c#5}AY|(3q*gnS}J<_q_KRA7lKj z*I?jih8||kckk$-&D7tAC-*+5Z~mI={xhCB`*D8&FrB>@p}tjd-(Ve`74M{MM6L(q zYi>?{zqmWCy`EHTUVf|->u(A2#25JAJlrpJ@PMCMd78-tFa3Ue*<0J>soB!lYnn2+ zA~`a+)LglkF=F@bQDo%=C)0Y%P5D3&ZeE{Y;$tVZSK$!1kEhut?-}42F2!s&wbg$a z%7Z^SB;8#@cH9m${qAczog&A`MOdB@hy`p-9)7;TcY_BQuQ+VIBJLG<4aaUb{~aKt zAvF$>;zD=uiwdm20Rp~hliX`k-{ZI3Wai}?Gvh1#0#Q1&D1CGKA zHK9&1AJJS$*Bwm)9gjqV_DfNuYP)!%J)(XV>I7J|yl_5&kw$_%=CyIN{}nOaQEWEm ze!>{&fQVk?DI(D+l%XBrDWZTWhC+779_k(K@a=}1$&A$oj2_D$eCFF3QoRjv-Ig5` z!u3=9Fu58)q98^*jw9_I9l>17Y_Tbnr9CeZMm;4N&qcncO8kEM2kpb{ z24{6x&uQ%T8n^^+p5Tf9GUbFXaX7kB7rYad^H>)zLJWJ-uSWGhRMzO2|Hf6 zw=d0BG1q?(;+j4eYC8rJe5TqG{jMNdXK{5JggVe}xa7(TV~DTEIq0d+v$sPaIK5-S zdWnyq3C1?iLaEE|8!#|%{~+4Tb+k`?d<`18KckeYd@` z-T^x^U21X>fx2Tcm!zCFfA-<^7OQT4N3G7L;v<|s4YDm}p49Fx{<_Ixdz4h1W`j-= zM#4;U1J>2s&=C@4iT@gIs2SUZ)KHTz`NAeH(%l>@*z1GRk5JaHaxn6n`$l|;@h4O=X`NIKA@{UCh3%HumJ;(R_(Pi?#@|q9%1Z>0;5@Fw7(vPv^ka$ zj*St1&kHoiagGxwS$%EbrT*-DrFfI%(pD+U36i4@opa1x53W%`s_BN{RqV)E7uF%L-`S7rN|Gv#jsFjCibX!{s z@V-66u(rVUZ8;OBOpfGw1%LD`8(Nt-`r33P}H?_WkS)`XhV8m6qC_83;mbHy1=DUD8? z6Acqn;MZx1NmHsZbRRMPCF`nsycsR=gom89&S*+WDR;*!c4Ow zJG)|c5mRlRug5OI;?Qdk4gp8vxB42;n|^lmtW}olMI^u-qwx)>%TqEzBtT`mm&0HM zzMRl&(wM{hVZJp`@MV`UC%|+g5q!q z#9{6!jDzQri02o=rGN&aOqjyZ-vX;;nIhJb%eirZwB@Thrj4^82zF8*%m%Wx+v9Es zjvf=5;SW!?awrWnXO1;y#-5-Xj?}MiVM#k@JzsetZ9dff1-V z1iSG=c|RCcd*B(a3wU8clM?v~MkF4&CK)TpP8)AlgS)Ft{2G$WvuxfN(}%?GdxrXpU18*)P^eH3SX#gTs;Ae`M0e; z2OP+%wsHYQOV)(G;#2L_P;RdcJc#aAt@$0p(;U?4? zI;xmG!un_3?gx0L<;JWg;@a)SRG&6z+|)O`O^0qtyRm99ge$BoHDq*pEn7ow$_`4K^KU+}F1h#urPY#&t`omTiq_lB=Fmqv5bk4Y50#nF39{0@FMFJopv-jYcqnE2NsNmBOEH8)))#<_o5J5Q& zANL+Dc7kJz)mLYT!)p*{(PiaMuO#!2rj=laxr>V4aP&}_;o-WvIYSJeqi0~+qb_t9 zZv&2L{3SKhGd-lELZ7T=KD{_@WS=rB^-b{`srkzmc#2|eQnEM$T;jF?N^(CM~lY4s42y1I%f=5z52%`YO}J(-)#oJ(Buv zqy_~HjI2VaXR1c_%m~ZfiYxP6MI@h%qxT$@<&P8tI_8uY95V7^Dg`P{{hsQp`ixxq z(1%V37RmYc=skb!#eg9)4vjUIT7DfHK1wBZ{bv>P>$VSNM45ponJ%{<14% zW74k{<}3Co(3@t?d|q+sbA;m`0u3`!xKDY3y=YnIlf)390JTQthDj-za<#||Jjtqa z`Rky6Wi`$mfxp!EEvUZcD|V~NggbN0WSfjmz&RLHt}}svPr_QIAS;qM1pcp%nxxL% za3;MOBXIf!8P;32L>GG^hGOWGFu+-y`MHac{>GokaU|VImc1l$I<^mAyOzVf%B0@F z@jCGcQ#p^dn8ymQr_T)z>Fhm;rGp~R83UE@xG;RKXTb`En_tu4&udq*CCiH!0M_Rm z@!!tQnNy%~7d(BhAI`Is>{~W+YztHrr{FsU*lP4;xl@JXwbHsnl;cQ!u95rT7_&In znNLsrI1u0rUK2DfotpeH)1g4UWL~{sE`?B93E-WxVCX|n0&*&i5By>8nCV;U{w*~J zXAzeK(5!yW-l#gv5-s0jsKFr_``<LD;8u)Ma+UL zh}%1iE0`P#z-b4yoF%}k{!0Q_p{I9CURjZ{i$&mH#3_~i1VvC@eM?Ue<(&o-vG4eP zpad=^M83URBIrl}^}jS?dLjywK$M=k!Qy#bW;>|xFjbVvFpq{@(?ske9{C-^4GxZw zj9rqC&oEzrAvd{1R&4n{yM>KlfTV!{+^460h{Sr9gh)8#4uKpu7dRcz-yL%@(q!Az z!x^??m;A4P1v8-$b-*Cs9rGZ|0?hQF!*qDrEA|*O2>=py=ZbRz9(sD7$KlOw6 z3Uf@7Uq`(POS9qoG8TVO4T$N*xCb}iiI@NJ^RWh-Q+S-_Kp24C@Dr{jQlyq_n--E7 z&&}A|rY8derDPb0lfrIx#k1=Hz>AXSLe7dEkW-pMnH-c70hT9Z_mT|MABIEZZ_Gf( ztn5&QQV>W9M}{FjL=q(I9!}0DiAvyVn?K)4fM*XG+$sG|Jb%!r3wolkYD!BGU3OqA zV_|8~1(hfmwhe^fs-6RIjgiiTfvwZVP0JMG^A2ov!M*O$kpg)2x}Yqot3mAu2`du5 z{*K^Wr{N#~#9c<4e2%>??e#|!`^eGDJN1PSM93)KWaCygkglWMu z_JpyC2yEn!SmBS=971tmZkjCX)kh5!W`)H`Ufh2-rVg-8Z8kL^ps7ARAh=hQ#= z*-McM-h+TmOxh8ux1X>sNSYgM#1exo8*C~b)t#3(;&gySl>X16JueZN{RWjNeVO{G zicMj%2a@Fj$y)hq5tElV;c~zco>tCwEfoj3P#r`jT2VJQNRHT7Pa~j_nI1-oYcCw3&Yx);bCNH(Y^l%s@B+Ozl{laU_e2GyLZLAy_@Xl4zVuPt8Zn+4a>Tj02=Wi)>oQ zY3e4W`Rn92U+7@?s$8ZhOWc`iF*q?4&Sg&qi*SP%V&(7$Rd|4{gEAXw3B=oPY)&k- zt!z$oOm3$2ZeC@?$>2UzoQ8zfIwOV*{taOpus>{P(^#uW<7a*k2R#e7$RRZLH=;qN zEP2J*U_zP`Hr%A3&zdAj1RRO<25Q6I1A|P>@`}qncz_3UQlo%0-;)$LmhRgOaRe=X zi^q0ON6Gu&e`)XcSm8hWYs-|m2)=x1^zhN3F!$iPc@mPmq=DhJ_~c)NCm-eD#?q0E zoJO9fn8mIzL~pLxf9w zt*!iX)wtF(gl0UXv3V+pTD~poPrvo|279!?#vxEzbay}d(v2zLYM}9aC42_)D*Fm@ zXiN1BB#>-Y5e`0OnPqx`65^ez`u$I$se@uuH28*dfvM5dEXVzVeT_iM16HBW&l%J8 z4++OL%a4(haBJsZ7Rxka<|uJfF1FnU z52QrhoGms7WsS+dbr{l!3^2n^inohmPTUJ7S5-vcq($mS)^m>83Up=dKo$!X3n=Ti z;>Y-aQZPJ0SOq^%Q?!Yvz(e=O=tnW#@ZZu z+r12D9m2o|1{FbI=UCmx#1CMMdtu@TSijYGNQ895#WaSpc4+g4QiPDF*IrXcOC&M> zpm;$XZ)a=C-9GM9Lf~hv^67s2wV9hJ7$8K?$|nD(HPi;`Z4GHz&Vt^k1c)B00M+0IL!~c3(FstneSAXg_vx+Z*^F# z(j&=j_96oF$-naYis*f!N_D`zxVgZvxVuxY@4Kt;5+CWam zPj5rd%u0XKk|{zxMpFMSo99gSKcqIGpiLGfdW~5FrdkNj>3FvS-BHLn=SW& z?Q6ganQV$ywF7YD(JyVh3ndTN0BB1IdlWZjnbTWB(G`X4O!)!*`dpMA`x3k6Snro` zRzn-!;Ys=ndSb`I@TvpHF>eNhmKH(*H9s}V;fWOV76>QLIt%y9yEAq;vE=%h-Q@Fj zUhM$05a8?4K}zUAV93NoMfL2}q&JllnW>KwnlA?d?;bd@4C~2a^q1#Iy`M*t*C@=+ z{Lm2GmlS3FSm}s7bDVNDZkS&Yi`qZGRXhG;lkZa;QsMX!wAsHGiCfM3DQFY4GEGd% zM=72lzEOz~$RWY`NqhseQVJn`m^HKr4}I=JY>MYF@B2PZA|-R+H)^K>H~c#2MJiwp z?L^__vY-N{_K)@_lkuVc1R^t$=k<75RRa(pCLwAfdpP}>)1cA*BW~97_dB%N4s&Z} zJu6=TlU8kJ2Gf;KH+_RKHVx`yC)SBMr+JS92!S^4_Wi(dDW0e8t#FO5?wZ#d1~jVr z^>|{`4-SRWsl<+Ek{$W-#&K?oK9w_Ww_unxoz(|S1ntG{!EZJyz7NH24E;UMOuN??Q+{%&G= zy_ea;Gv&+lRx#zttUTLj|6V%o8PBKPl=ON&bM@)e{jqnydcXczRnGjAKpo{;kG^3o^BY3)m2`x4!pNp5q&H@}yP4Ot`($>h7hE8DzNE+nTCj1t|Ztl(j z6S7_XH3Nlfi+f}%er_Bmm0U}#8z+nM{OM2O$vR37|wPO+BzaMsxGW- z5PUA%!rggS|vNn1RgwF~bUIk~B_z(6@ zicU=_MLDEqtc@DwvTDnc`tCv36Psal61K6-GH*)DMJ={ZX{DvjZKuT)b2=PJYmSHL zP)sa;NdOq%L5I6fro|>e&2czyK8$NA6Ut)gEkySUUWB+z^;=mx{ET1d^?%?2-g%!a1=VjV7?u(5d>kZ~w3iUrUBC!w6Ck6>|jnhH{`01gW^ z8c{rl_9alM#B2$NB;n>v z4jQcl<|iM3fp9<4>+;#71?Onkw5*q76eVsSCF=EnuU3kgVVOyMUxPao>wF^W8t$Bc z{o)*^4bx{00{UhtRS7up=>+(S0m~Yc%#g}POXK^{K01IYE@C$7|Rr(`85PHEn4%_M>WSW<<-u|gZ1AUttzhU`?~2I zA2OY9ndBtc^I-B0xyRbVj#sg6tWT!hbUFsUIB*4ho&F1;2qCH8oc9vvF+xsa+>f-C zMOYhh%9BX1*teU80#77v3-Y{bEutODl{jTBy5G>*L#NKymKWD*s6+*DhYS`wWxG~yyg+E~8 zMW=A$-Wq4_S67a)v8Z*lus;x2=WyX(0Hs(U!g;gdpB}mHS+M4!&Ww()G_w1AvK=TZ z$%`=;rdVQfsjL1P5iN+no0@*x#((@|_Jb_S?M#|v{5d{-!SV!sgur^ z`RxG7Z_$Gwjk7-r^?TOLuwI0^#U${@4ERejS;?awB8CmK3=4-FfEa?TY<^(po!)jO zoT}YIXahZy+TTJL1QuRIPXmOLNUTj3(^>60ZM%<$&{-YWNydH&t+lsqd!TF^QR5RV zJ2PQkJhx_b&(zI#P;%iO2l5*QS!fbSM_SPLyXvE7i&92I+d_$RTNQSi;&qXeSN67Icj{C+7~rQGIjZ1xq}HC%jw}3!Be`Kh<>! z7}Y+u5I|2@oe9H)AVKN@lTl4dDaBpL6t?yS_rLas=B)YyEc(;rLQfKVgR@TAiWO%u zIXJ_VERZa+5kAA;HrAI-ye?oVVf8gw^VZlIKX@9H^;Fz~6=E?NHmxOmSIwD-7Xg&k zahnPi<#YjaM*!s;d^mkm#HadUd3ybsLvqp^W;ntm=;A%fG9P>!=T#F6arh6iO=;s zf01!Tr^&}09lod};+Bgl3R7!eu<@Omx@M!=HWl0yENLaUescg0NZU0P-c;terqQUFF>H30$Ua z=ICNW;ofjTGq6t)n%>spM5Q;+#Gc3ZUtQ7r<+FvnZjxX4+=B~%iK+wFNGrrl%@{Pe z0J2{PPk&d$V?)fE7Vu1r0w|L}rp9ifk+o&vzke8z%)&FEvAwAA>~v;Go#g$cb^@u& z>|H5aM>yrRzJ4v!E=uA*>r|cu=b%lm41^udhp|}po3TjyyX-lLl|gJlfm{C9O3Zs9 z5K(4;Ds0|qF0fp?2rngep$wXhX>L{g^@;6Zq`t)|>aWAv6hsEC{?&q={)!u*8?ic4ECw2N5mr9;bcXDYHNX#i6tTP+_k{Fcb6c=Ilj^G}Rs^lVxJM z`9_vZ;ydt_2^MJt!PcZa>$?J9;zkHWGo zW?fHrJR_*G=0X!6BwOb50*tFpl6CqZNqjNf1C=I1F3EcRWv*~Reu1+27z9R(i zH|Rzb$CxK?wiK+gafX{5s)x(qp&y$eMYqIn)RfOoT63M?-rajPk067q4GTy>bWRFF z;)B<+B2%8#6GCeuSN7?LxeAEuL2^pc;w6*CIO|j!mD2&dx&1up{Pt#*T|~fSMX}%~ z|2%ymcqm%>mO>OU@m#}~m<-c)OdxCQ4g@Lb^3-xOZ3GODp6}CUzVHbI+SaL~Gb2 zo9Cwk>pxMHTn?i>my1P0Y5qcKfB?EF?Q3MzKygYu`shp*vqE$TR2Slzw7MswB3G@J zR)iik23QM;RC!WwgE0~T`DzNfja-ATHQT0GI1a@i#?tsQMwpIh@LV%XzUc%0AqYYv40jqCyNIgP-f}Lu0ZO8nreiz$ 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�ePO`Sc=W@O;*gV#0^kNx)R{MPP!~r#R-th|PHAjEG!gaj3F5lrenXdVT zN94XfUoRYAM4u8KSoJwJZHw&lnd^g~`i&~lVb?yVDs?(@Txd6wtCf4;5NTubRNdB2 z)*8fA5qBqF3mnp%D!o@u<18;${r!h>)_Ov=MclGOk?K5aQFXsdKN5rE9*-7HMvRNg zb0-hzgQHUXf#81~JONS&p!8VtBDmsOSy~5e%wQ1=tzCWxC&&6i!U4_ZV3U){>6jP~ z4?8r*`}Hj~93D5Q4`O+<`0Wl;lIQ1c$8u>yW8kHS_z3I52 zXS1(S-DRZQDtuahZMk8sRouZMAlTk|sYAO{MH(Et&Z2*$E9Fno?yKWe%h}*lD8Gwr z=h5NQxwgB@R?WO|?{n+X=~jOVJsPWc(llI^odD(nC&|s8;PZ7ny$(ViUzhwd<5>Y= zz@78)Jf4bva=0JEqDFpo5wG>qD}0@UWwMA@CsYLm{Ln2zH@ah{BE74f`@1z}*j21U zQ38MbuXTU8+hByudt(A)X_fZ*kF=yRkVaCu(z>D6p8b!*>=Ywt<)mmsIf@% zrV-EBp2&14vMm9w0=CC1ow|!;79WiQg&p;$deSJOdkB9bEE0y~3I-n|UX6vZ)LoFU zkJCT~a4Z-H*DazHjG)RGw_sZGh5^+qF)(A7r>uX2IpM-5-$0R-??AC8R5(R{3b#ON zo0rG=GHTgB4`tG�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%0ADqZp@)8@FGlM+^w6tNJDN6v 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

CAyR`Sa8Y{Ad25m!ue^Z-U| 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

8FVjJ}%FbpMJUs!pr1S^ni-G*Cpv%77 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