pha-hermes 1.15.0 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/api/expenses/expenseClient.d.ts +1 -1
  2. package/dist/api/liphe_legacy/assignment/assignmentClient.d.ts +28 -0
  3. package/dist/api/{liphe1.0 → liphe_legacy}/auth/authClient.d.ts +1 -1
  4. package/dist/api/liphe_legacy/contract_request/contractRequestClient.d.ts +80 -0
  5. package/dist/api/liphe_legacy/contract_request_period/contractRequestPeriodClient.d.ts +47 -0
  6. package/dist/api/{lipheApiClient.d.ts → liphe_legacy/lipheApiClient.d.ts} +4 -2
  7. package/dist/api/liphe_legacy/practitioner/practitionerClient.d.ts +7 -0
  8. package/dist/api/{apiClient.d.ts → salesforce/apiClient.d.ts} +3 -4
  9. package/dist/api/{auth → salesforce/auth}/auth.d.ts +1 -1
  10. package/dist/api/{payperiod → salesforce/payperiod}/payperiodClient.d.ts +1 -7
  11. package/dist/api/{practitioner → salesforce/practitioner}/practitionerClient.d.ts +1 -1
  12. package/dist/api/{timesheet → salesforce/timesheet}/timesheetClient.d.ts +1 -1
  13. package/dist/api/{workorder → salesforce/workorder}/workorderClient.d.ts +1 -1
  14. package/dist/index.d.ts +8 -8
  15. package/dist/models/index.d.ts +13 -17
  16. package/dist/models/{practitioner.d.ts → user.d.ts} +4 -0
  17. package/dist/models/workorder.d.ts +20 -0
  18. package/dist/pha-hermes.cjs.development.js +253 -17
  19. package/dist/pha-hermes.cjs.development.js.map +1 -1
  20. package/dist/pha-hermes.cjs.production.min.js +1 -1
  21. package/dist/pha-hermes.cjs.production.min.js.map +1 -1
  22. package/dist/pha-hermes.esm.js +255 -18
  23. package/dist/pha-hermes.esm.js.map +1 -1
  24. package/package.json +2 -1
  25. package/src/api/expenses/expenseClient.ts +2 -2
  26. package/src/api/liphe_legacy/assignment/assignmentClient.ts +67 -0
  27. package/src/api/{liphe1.0 → liphe_legacy}/auth/authClient.ts +11 -2
  28. package/src/api/liphe_legacy/contract_request/contractRequestClient.ts +128 -0
  29. package/src/api/liphe_legacy/contract_request_period/contractRequestPeriodClient.ts +233 -0
  30. package/src/api/{lipheApiClient.ts → liphe_legacy/lipheApiClient.ts} +23 -3
  31. package/src/api/{liphe1.0 → liphe_legacy}/practitioner/practitionerClient.ts +12 -4
  32. package/src/api/{apiClient.ts → salesforce/apiClient.ts} +12 -12
  33. package/src/api/{auth → salesforce/auth}/auth.ts +2 -5
  34. package/src/api/{payperiod → salesforce/payperiod}/payperiodClient.ts +1 -8
  35. package/src/api/{practitioner → salesforce/practitioner}/practitionerClient.ts +1 -1
  36. package/src/api/{timesheet → salesforce/timesheet}/timesheetClient.ts +1 -1
  37. package/src/api/{workorder → salesforce/workorder}/workorderClient.ts +1 -1
  38. package/src/index.ts +13 -8
  39. package/src/models/index.ts +13 -18
  40. package/src/models/{practitioner.ts → user.ts} +5 -0
  41. package/src/models/workorder.ts +21 -0
  42. package/dist/api/liphe1.0/practitioner/practitionerClient.d.ts +0 -13
  43. package/src/api/.env +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"pha-hermes.esm.js","sources":["../src/api/auth/auth.ts","../src/api/timesheet/timesheetClient.ts","../src/api/practitioner/practitionerClient.ts","../src/api/workorder/workorderClient.ts","../src/api/payperiod/payperiodClient.ts","../src/api/expenses/expenseClient.ts","../src/api/apiClient.ts","../src/api/liphe1.0/auth/authClient.ts","../src/api/liphe1.0/practitioner/practitionerClient.ts","../src/api/lipheApiClient.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class SFAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private refreshToken: string | undefined = undefined\n private tokenRefreshPromise: Promise<string> | null = null\n\n constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl?: string) {\n this.axiosTokenInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n }\n\n async initializeAuth(\n clientId: string,\n clientSecret: string,\n onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>\n ) {\n const token = await this.postToken(clientId, clientSecret)\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`\n\n this.authenticatedAxiosInstance.interceptors.response.use(\n response => response,\n async error => {\n const originalRequest = error.config\n originalRequest._retryCount = originalRequest._retryCount || 0\n\n // If the error is 401 and we haven't exceeded max retries\n if (error.response?.status === 401 && originalRequest._retryCount < 3) {\n originalRequest._retryCount++\n\n try {\n // Use existing token refresh if one is in progress\n if (!this.tokenRefreshPromise) {\n const newClientCredentials = await onTokenRefresh?.()\n const newClientId = newClientCredentials?.clientId || clientId\n const newClientSecret =\n newClientCredentials?.clientSecret || clientSecret\n this.tokenRefreshPromise = this.postToken(newClientId, newClientSecret)\n }\n\n const newToken = await this.tokenRefreshPromise\n // Clear the refresh promise after it completes\n this.tokenRefreshPromise = null\n\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] =\n `Bearer ${newToken}`\n originalRequest.headers['Authorization'] = `Bearer ${newToken}`\n\n originalRequest.timeout = 5000\n\n return await Promise.race([\n this.authenticatedAxiosInstance(originalRequest),\n new Promise((_, reject) =>\n setTimeout(\n () => reject(new Error('Retry request timeout')),\n originalRequest.timeout\n )\n )\n ])\n } catch (refreshError) {\n // Clear the refresh promise if it fails\n this.tokenRefreshPromise = null\n return Promise.reject(refreshError)\n }\n }\n return Promise.reject(error)\n }\n )\n }\n\n async postToken(clientId?: string, clientSecret?: string): Promise<string> {\n const tokenFormRequestBody = new FormData()\n if (this.refreshToken) {\n tokenFormRequestBody.append('refresh_token', this.refreshToken)\n tokenFormRequestBody.append('grant_type', 'refresh_token')\n } else if (clientId && clientSecret) {\n tokenFormRequestBody.append('client_id', clientId)\n tokenFormRequestBody.append('client_secret', clientSecret)\n tokenFormRequestBody.append('grant_type', 'client_credentials')\n } else {\n throw new Error(\n 'Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided'\n )\n }\n\n const response = await this.axiosTokenInstance.post(\n '/services/oauth2/token',\n tokenFormRequestBody,\n {\n headers: tokenFormRequestBody.getHeaders()\n }\n )\n\n this.token = response?.data?.['access_token']\n if (!this.token) throw new Error('Authentication failed, could not get the access token')\n return this.token\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { TimesheetDayEntry } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\nimport FormData from 'form-data'\n\ninterface SFTimesheetHourField {\n Id: string\n Date__c: Date\n Callback__c: number\n HoursEBAdjusted__c: number\n Misc__c: number\n OT1__c: number\n OT2__c: number\n OnCall__c: number\n Misc1__c: number\n Misc_1_Hours__c: number\n Misc_2_Hours__c: number\n Misc_3_Hours__c: number\n Misc_4_Hours__c: number\n Stat1__c: number\n Stat2__c: number\n In_Charge__c: number\n Shift_Travel_Stipend__c: number\n LastModifiedDate: Date\n}\ntype SFTimesheetHourFieldKeys = (keyof SFTimesheetHourField)[]\n\nexport class SFTimesheetClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async updateTimesheetHour(timesheetHourId: string, timesheet: TimesheetDayEntry) {\n try {\n const url = `/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${timesheetHourId}`\n const response = await this.axiosInstance.patch(url, {\n Date__c: timesheet.date,\n Callback__c: timesheet.callbackHours,\n HoursEBAdjusted__c: timesheet.regularHours,\n Misc__c: timesheet.miscHours,\n OT1__c: timesheet.overtime1Hours,\n OT2__c: timesheet.overtime2Hours,\n OnCall__c: timesheet.onCallHours,\n Misc1__c: timesheet.misc1HoursA,\n Misc_1_Hours__c: timesheet.misc1HoursB,\n Misc_2_Hours__c: timesheet.misc2Hours,\n Misc_3_Hours__c: timesheet.misc3Hours,\n Misc_4_Hours__c: timesheet.misc4Hours,\n Stat1__c: timesheet.stat1Hours,\n Stat2__c: timesheet.stat2Hours,\n In_Charge__c: timesheet.inChargeHours,\n Shift_Travel_Stipend__c: timesheet.shiftTravelPerDiemHours\n })\n\n if (![200, 204, 304].includes(response.status))\n throw new Error(`got error status code ${response.status}`)\n } catch (error) {\n console.error('Error Updating Timesheet Hour: ', error.message)\n }\n }\n\n async getTimesheetIds(workorderId: string, periodStartDate?: Date, periodEndDate?: Date): Promise<string[]> {\n // Find all timesheet Ids that belong to this WO\n const url = `/services/data/${SF_API_VERSION}/query`\n let query = `SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderId}'`\n try {\n if (periodStartDate && periodEndDate) {\n query += `\n AND PayPeriodStartDate__c <= ${new Date(periodStartDate).toISOString().substring(0, 10)}\n AND PayPeriodEndDate__c >= ${new Date(periodEndDate).toISOString().substring(0, 10)}\n `\n }\n }\n catch (error) {\n console.error('Invalid period dates', error)\n }\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records.map(record => record.Id)\n }\n\n async getTimesheetsForPractitioner(personnelID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '${personnelID}')`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let timesheets = []\n\n for (const timesheet of data.data.records) {\n timesheets.push({\n workorderId: timesheet.WorkOrder__c,\n id: timesheet.Id,\n updatedAt: timesheet.LastModifiedDate\n })\n }\n\n return timesheets\n }\n\n async getTimesheetHours(workorderId: string, fields?: SFTimesheetHourFieldKeys[], periodStartDate?: Date, periodEndDate?: Date): Promise<TimesheetDayEntry[]> {\n const timesheetIds = await this.getTimesheetIds(workorderId, periodStartDate, periodEndDate)\n\n const allHours: SFTimesheetHourField[] = []\n const url = `/services/data/${SF_API_VERSION}/query`\n for (const timesheetId of timesheetIds) {\n let query = `\n SELECT ${fields?.join(',') || 'FIELDS(STANDARD)'}\n FROM TimesheetHour__c\n WHERE Timesheet__c = '${timesheetId}'`\n try {\n if (fields?.length) {\n query += `\n AND Date__c >= ${new Date(periodStartDate).toISOString().substring(0, 10)}\n AND Date__c <= ${new Date(periodEndDate).toISOString().substring(0, 10)}`\n }\n\n const {\n data: { records }\n } = await this.axiosInstance.get<{ records: SFTimesheetHourField[] }>(url, {\n params: { q: query }\n })\n allHours.push(...records)\n } catch (err) {\n console.error(`Failed to fetch`, err)\n }\n }\n return allHours.map(toTimesheetDayEntry)\n }\n\n async getPayPeriods(): Promise<any> {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT Name,\n StartDate__c,\n EndDate__c\n FROM PayPeriod__c`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriods = []\n\n for (const payPeriod of data.data.records) {\n payPeriods.push({\n name: payPeriod.Name,\n startDate: payPeriod.StartDate__c,\n endDate: payPeriod.EndDate__c\n })\n }\n\n return payPeriods\n }\n\n async uploadImageToTimesheet(\n file: Buffer,\n filename: string,\n timesheetId: string\n ): Promise<void> {\n try {\n const form = new FormData()\n form.append(\n 'entity_content',\n JSON.stringify({\n Title: filename,\n PathOnClient: filename\n }),\n { contentType: 'application/json' }\n )\n\n form.append('VersionData', file, {\n filename,\n contentType: 'application/octet-stream'\n })\n const uploadRes = await this.axiosInstance.post(\n `/services/data/${SF_API_VERSION}/sobjects/ContentVersion`,\n form,\n { headers: form.getHeaders() }\n )\n\n const versionId = uploadRes.data.id\n\n //get ContentDocumentId\n const { data } = await this.axiosInstance.get(\n `/services/data/${SF_API_VERSION}/query`,\n {\n params: {\n q: `SELECT ContentDocumentId FROM ContentVersion WHERE Id = '${versionId}'`\n }\n }\n )\n const contentDocumentId = data.records[0].ContentDocumentId\n\n await this.axiosInstance.post(\n `/services/data/${SF_API_VERSION}/sobjects/ContentDocumentLink`,\n {\n ContentDocumentId: contentDocumentId,\n LinkedEntityId: timesheetId,\n ShareType: 'V',\n Visibility: 'AllUsers'\n }\n )\n } catch (err) {\n console.error('Salesforce error response:', err?.response?.data)\n console.error('Error uploading and linking image:', err?.message)\n }\n }\n}\n\nfunction toTimesheetDayEntry(raw: SFTimesheetHourField): TimesheetDayEntry {\n return {\n id: raw.Id,\n date: raw.Date__c,\n callbackHours: raw.Callback__c,\n regularHours: raw.HoursEBAdjusted__c,\n miscHours: raw.Misc__c,\n overtime1Hours: raw.OT1__c,\n overtime2Hours: raw.OT2__c,\n onCallHours: raw.OnCall__c,\n misc1HoursA: raw.Misc1__c,\n misc1HoursB: raw.Misc_1_Hours__c,\n misc2Hours: raw.Misc_2_Hours__c,\n misc3Hours: raw.Misc_3_Hours__c,\n misc4Hours: raw.Misc_4_Hours__c,\n stat1Hours: raw.Stat1__c,\n stat2Hours: raw.Stat2__c,\n inChargeHours: raw.In_Charge__c,\n shiftTravelPerDiemHours: raw.Shift_Travel_Stipend__c,\n lastModified: raw.LastModifiedDate\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFPractitionerClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchPractitioners(): Promise<Practitioner[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n\n async fetchPractitionerByEmail(email: string): Promise<Practitioner | null> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active' AND Email__c = '${email}'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n if (records.length === 0) {\n return null\n }\n return toPractitioner(records[0])\n } catch (error) {\n console.error('Error fetching practitioner by email:', error)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Workorder } from '../../models'\n\nexport class SFWorkorderClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async getWorkordersForPractitioner(\n practitionerId?: string,\n options?: { startDate?: Date; endDate?: Date; provinces?: string[] }\n ): Promise<Workorder[]> {\n try {\n const filters: string[] = []\n if (practitionerId) {\n filters.push(`Personnel__c = '${practitionerId}'`)\n }\n if (options?.startDate) {\n const isoStart = options.startDate.toISOString().split('T')[0]\n filters.push(`EndDate__c >= ${isoStart}`)\n }\n if (options?.endDate) {\n const isoEnd = options.endDate.toISOString().split('T')[0]\n filters.push(`startdate__c <= ${isoEnd}`)\n }\n\n if (options?.provinces?.length) {\n const provincesList = options?.provinces?.map(p => `'${p}'`).join(', ')\n filters.push(`Region__c IN (${provincesList})`)\n }\n const whereClause = filters.length ? `WHERE ${filters.join(' AND ')}` : ''\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id, Region__c, Name, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c ${whereClause}`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n name: record.Name,\n establishmentId: record.HospitalID__c,\n region: record.Region__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n practitionerId: record.Personnel__c,\n startDate: new Date(record.startdate__c),\n endDate: new Date(record.EndDate__c),\n createdAt: new Date(record.CreatedDate),\n updatedAt: new Date(record.LastModifiedDate)\n })\n )\n )\n } catch (error) {\n console.error('Error fetching work orders: ', error.message)\n throw error\n }\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport interface Period {\n payPeriodId: string\n startDate: Date\n endDate: Date\n timesheetId?: string\n workorderId?: string\n}\n\nexport class SFPayPeriodClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async getPayPeriodAndTimesheetIdsForWorkorder(workorderID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT PayPeriod__c, ID\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderID}'`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriodIds = []\n\n for (const payPeriods of data.data.records) {\n payPeriodIds.push({\n timesheetId: payPeriods.Id,\n payPeriodId: payPeriods.PayPeriod__c\n })\n }\n\n return payPeriodIds\n }\n\n async getPayPeriodDatesForPayPeriodIds(payPeriodIDs: string[]): Promise<Period[]> {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT ID, StartDate__c, EndDate__c\n FROM PayPeriod__c\n WHERE id IN ${listOfIdsForQuery(payPeriodIDs)}`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriodDates = []\n\n for (const payPeriod of data.data.records) {\n payPeriodDates.push({\n payPeriodId: payPeriod.Id,\n startDate: new Date(payPeriod.StartDate__c),\n endDate: new Date(payPeriod.EndDate__c)\n })\n }\n\n return payPeriodDates\n }\n}\n\nconst listOfIdsForQuery = (payPeriodIDs: string[]) => `('${payPeriodIDs.join('\\', \\'')}')`\n","import { AxiosInstance } from 'axios'\nimport { Expense } from '../../models/expense'\nimport { SF_API_VERSION } from '../apiClient'\n\ntype FrontendExpense = {\n workorderPeriodId: string\n amount: string\n type: 'Other' | 'Lodging' | 'Transportation' | 'Travel (Hours or Amount)' | 'Per diem' | 'Meals'\n}\n\nconst EXPENSE_FIELD_MAP = {\n Lodging: 'StipendTotalOverride__c',\n 'Per diem': 'Per_Diem_Total__c',\n Other: 'Reimburseable_Expenses__c',\n Transportation: 'TaxiAmount__c'\n} as const\n\ntype SupportedExpenseType = keyof typeof EXPENSE_FIELD_MAP\n\nexport class SFExpenseClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchExpenseTotals(timesheetId: string): Promise<Expense | null> {\n try {\n const url = `/services/data/${SF_API_VERSION}/sobjects/Timesheet__c/${timesheetId}`\n const { data } = await this.axiosInstance.get(url, {\n params: {\n fields: 'Reimburseable_Expenses__c,Per_Diem_Total__c,StipendTotalOverride__c,TaxiAmount__c'\n }\n })\n if (!data) return null\n return toExpense(data)\n } catch (err) {\n console.error('Failed to fetch expense totals', err)\n throw err\n }\n }\n\n private async patchTimesheet(timesheetId: string, body: Record<string, number>): Promise<void> {\n const url = `/services/data/${SF_API_VERSION}/sobjects/Timesheet__c/${timesheetId}`\n const res = await this.axiosInstance.patch(url, body)\n if (![200, 204, 304].includes(res.status)) {\n throw new Error(`Unexpected status ${res.status}`)\n }\n }\n\n async updateExpense(expense: FrontendExpense): Promise<void> {\n const timesheetId = expense.workorderPeriodId\n const amount = Number(expense.amount)\n const field = EXPENSE_FIELD_MAP[expense.type as SupportedExpenseType]\n if (!field) {\n throw new Error(`Unsupported expense type: ${expense.type}`)\n }\n\n await this.patchTimesheet(timesheetId, { [field]: amount })\n }\n}\n\nfunction toExpense(raw: any): Expense {\n return {\n reimbursable: Number(raw.Reimburseable_Expenses__c ?? 0),\n perDiem: Number(raw.Per_Diem_Total__c ?? 0),\n lodging: Number(raw.StipendTotalOverride__c ?? 0),\n transportation: Number(raw.TaxiAmount__c ?? 0)\n }\n}\n","import axios, { AxiosInstance } from 'axios'\nimport { SFAuthenticator } from './auth/auth'\nimport { SFTimesheetClient } from './timesheet/timesheetClient'\nimport { SFPractitionerClient } from './practitioner/practitionerClient'\nimport { Role } from '../models'\nimport { SFWorkorderClient } from './workorder/workorderClient'\nimport { SFPayPeriodClient } from './payperiod/payperiodClient'\nimport { SFExpenseClient } from './expenses/expenseClient'\n\nexport const SF_API_VERSION: string = 'v57.0'\n\nexport class SFApiClient {\n private instance: SFApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: SFAuthenticator\n private baseUrl: string\n timesheetClient: SFTimesheetClient\n workorderClient: SFWorkorderClient\n practitionerClient: SFPractitionerClient\n payPeriodClient: SFPayPeriodClient\n expenseClient: SFExpenseClient\n\n constructor(baseUrl?: string) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.workorderClient = new SFWorkorderClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n this.payPeriodClient = new SFPayPeriodClient(this.axiosInstance)\n this.expenseClient = new SFExpenseClient(this.axiosInstance)\n }\n\n async init(\n sfClientId: string,\n sfClientSecret: string,\n onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>\n ) {\n // creates authenticator and adds token to axios instance\n await this.authenticator.initializeAuth(sfClientId, sfClientSecret, onTokenRefresh)\n }\n\n setInstance(instance: SFApiClient) {\n this.instance = instance\n }\n getInstance(): SFApiClient {\n return this.instance\n }\n\n async fetchRoles(): Promise<Role[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Label, Value FROM PicklistValueInfo \\\n WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c'\\\n AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' \\\n AND isActive = true`\n return this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Role => ({\n label: record.Label,\n value: record.Value\n })\n )\n )\n } catch (error) {\n console.error('Error fetching roles: ', error.message)\n throw error\n }\n }\n}\n","import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class LipheAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private tokenRefreshPromise: Promise<string> | null = null\n private email: string\n private password: string\n private type: string\n\n constructor(\n authenticatedAxiosInstance: AxiosInstance,\n baseUrl: string,\n email: string,\n password: string,\n type: string = 'user'\n ) {\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n this.email = email\n this.password = password\n this.type = type\n this.axiosTokenInstance.defaults.baseURL = baseUrl\n }\n\n async initializeAuth() {\n const token = await this.login()\n\n this.authenticatedAxiosInstance.defaults.headers.common['X-Auth-Token'] = token\n\n this.authenticatedAxiosInstance.interceptors.response.use(\n response => response,\n async error => {\n const originalRequest = error.config\n originalRequest._retryCount = originalRequest._retryCount || 0\n\n if (error.response?.status === 401 && originalRequest._retryCount < 1) {\n originalRequest._retryCount++\n try {\n if (!this.tokenRefreshPromise) {\n this.tokenRefreshPromise = this.login()\n }\n const newToken = await this.tokenRefreshPromise\n this.tokenRefreshPromise = null\n\n this.authenticatedAxiosInstance.defaults.headers.common['X-Auth-Token'] =\n newToken\n\n return await this.authenticatedAxiosInstance(originalRequest)\n } catch (refreshError) {\n this.tokenRefreshPromise = null\n return Promise.reject(refreshError)\n }\n }\n return Promise.reject(error)\n }\n )\n }\n private async login(): Promise<string> {\n const form = new FormData()\n form.append('email', this.email)\n form.append('password', this.password)\n form.append('type', this.type)\n\n const response = await this.axiosTokenInstance.post('/v2/signin', form, {\n headers: form.getHeaders()\n })\n const token = response?.data?.data?.token\n if (!token) {\n throw new Error('Authentication failed: no token return')\n }\n this.token = token\n return token\n }\n}\n","import type { AxiosInstance } from 'axios'\n\nexport interface LiphePractitioner {\n id: number\n firstname: string\n lastname: string\n email: string\n communicationMode?: number\n}\n\nexport class LiphePractitionerClient {\n private axios: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axios = axiosInstance\n }\n async fetchAllPractitioners(agencyId: number = 1): Promise<LiphePractitioner[]> {\n let practitioners: LiphePractitioner[] = []\n let page = 1\n let nextPage = true\n\n while (nextPage) {\n const response = await this.axios.get('/v2/employees', {\n params: {\n agency_id: agencyId,\n page\n }\n })\n const data = response?.data?.data\n if (!data?.data || !Array.isArray(data.data)) {\n throw new Error('Unexpected responses.')\n }\n const pagePractitioners = data.data.map(\n (p: any): LiphePractitioner => ({\n id: p.id,\n firstname: p.firstname,\n lastname: p.lastname,\n email: p.email,\n communicationMode: p.communicationMode\n })\n )\n\n practitioners.push(...pagePractitioners)\n nextPage = Boolean(data.next_page_url)\n page++\n }\n return practitioners\n }\n}\n","import axios, { AxiosInstance } from 'axios'\nimport { LipheAuthenticator } from './liphe1.0/auth/authClient'\nimport { LiphePractitionerClient } from './liphe1.0/practitioner/practitionerClient'\n\nexport class LipheApiClient {\n private instance: LipheApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: LipheAuthenticator\n public practitionerClient: LiphePractitionerClient\n\n constructor(baseUrl: string, email: string, password: string, type: string = 'user') {\n this.axiosInstance.defaults.baseURL = baseUrl\n\n this.authenticator = new LipheAuthenticator(\n this.axiosInstance,\n baseUrl,\n email,\n password,\n type\n )\n this.practitionerClient = new LiphePractitionerClient(this.axiosInstance)\n }\n async init() {\n await this.authenticator.initializeAuth()\n }\n\n setInstance(instance: LipheApiClient) {\n this.instance = instance\n }\n\n getInstance(): LipheApiClient {\n return this.instance\n }\n\n getAxiosInstance(): AxiosInstance {\n return this.axiosInstance\n }\n}\n"],"names":["SFAuthenticator","authenticatedAxiosInstance","baseUrl","axios","create","undefined","axiosTokenInstance","defaults","baseURL","_proto","prototype","initializeAuth","_initializeAuth","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","clientId","clientSecret","onTokenRefresh","_this","token","wrap","_callee2$","_context2","prev","next","postToken","sent","headers","common","interceptors","response","use","_ref","_callee","error","_error$response","originalRequest","newClientCredentials","newClientId","newClientSecret","newToken","_callee$","_context","config","_retryCount","status","tokenRefreshPromise","timeout","Promise","race","_","reject","setTimeout","Error","abrupt","t0","stop","_x4","apply","arguments","_x","_x2","_x3","_postToken","_callee3","_response$data","tokenFormRequestBody","_callee3$","_context3","FormData","refreshToken","append","post","getHeaders","data","_x5","_x6","SFTimesheetClient","axiosInstance","updateTimesheetHour","_updateTimesheetHour","timesheetHourId","timesheet","url","SF_API_VERSION","patch","Date__c","date","Callback__c","callbackHours","HoursEBAdjusted__c","regularHours","Misc__c","miscHours","OT1__c","overtime1Hours","OT2__c","overtime2Hours","OnCall__c","onCallHours","Misc1__c","misc1HoursA","Misc_1_Hours__c","misc1HoursB","Misc_2_Hours__c","misc2Hours","Misc_3_Hours__c","misc3Hours","Misc_4_Hours__c","misc4Hours","Stat1__c","stat1Hours","Stat2__c","stat2Hours","In_Charge__c","inChargeHours","Shift_Travel_Stipend__c","shiftTravelPerDiemHours","includes","console","message","getTimesheetIds","_getTimesheetIds","workorderId","periodStartDate","periodEndDate","query","_yield$this$axiosInst","records","Date","toISOString","substring","get","params","q","map","record","Id","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","personnelID","timesheets","_iterator","_step","_createForOfIteratorHelperLoose","done","value","push","WorkOrder__c","id","updatedAt","LastModifiedDate","getTimesheetHours","_getTimesheetHours","_callee4","fields","timesheetIds","allHours","_iterator2","_step2","timesheetId","_yield$this$axiosInst2","_callee4$","_context4","join","length","toTimesheetDayEntry","_x7","_x8","_x9","_x10","getPayPeriods","_getPayPeriods","_callee5","payPeriods","_iterator3","_step3","payPeriod","_callee5$","_context5","name","Name","startDate","StartDate__c","endDate","EndDate__c","uploadImageToTimesheet","_uploadImageToTimesheet","_callee6","file","filename","form","uploadRes","versionId","_yield$this$axiosInst3","contentDocumentId","_err$response","_callee6$","_context6","JSON","stringify","Title","PathOnClient","contentType","ContentDocumentId","LinkedEntityId","ShareType","Visibility","_x11","_x12","_x13","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","fetchPractitionerByEmail","_fetchPractitionerByEmail","email","firstName","FirstName__c","lastName","LastName__c","Email__c","staffId","StaffID__c","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","options","_options$provinces","filters","isoStart","isoEnd","_options$provinces2","provincesList","whereClause","split","provinces","p","then","establishmentId","HospitalID__c","region","Region__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","startdate__c","createdAt","CreatedDate","SFPayPeriodClient","getPayPeriodAndTimesheetIdsForWorkorder","_getPayPeriodAndTimesheetIdsForWorkorder","workorderID","payPeriodIds","payPeriodId","PayPeriod__c","getPayPeriodDatesForPayPeriodIds","_getPayPeriodDatesForPayPeriodIds","payPeriodIDs","payPeriodDates","listOfIdsForQuery","EXPENSE_FIELD_MAP","Lodging","Other","Transportation","SFExpenseClient","fetchExpenseTotals","_fetchExpenseTotals","toExpense","patchTimesheet","_patchTimesheet","body","res","updateExpense","_updateExpense","expense","_this$patchTimesheet","amount","field","workorderPeriodId","Number","type","reimbursable","_raw$Reimburseable_Ex","Reimburseable_Expenses__c","perDiem","_raw$Per_Diem_Total__","Per_Diem_Total__c","lodging","_raw$StipendTotalOver","StipendTotalOverride__c","transportation","_raw$TaxiAmount__c","TaxiAmount__c","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","payPeriodClient","expenseClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value","LipheAuthenticator","password","login","_login","LiphePractitionerClient","fetchAllPractitioners","_fetchAllPractitioners","agencyId","practitioners","page","nextPage","agency_id","Array","isArray","pagePractitioners","firstname","lastname","communicationMode","Boolean","next_page_url","LipheApiClient","getAxiosInstance"],"mappings":"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"}
1
+ {"version":3,"file":"pha-hermes.esm.js","sources":["../src/api/salesforce/auth/auth.ts","../src/api/salesforce/timesheet/timesheetClient.ts","../src/api/salesforce/practitioner/practitionerClient.ts","../src/api/salesforce/workorder/workorderClient.ts","../src/api/salesforce/payperiod/payperiodClient.ts","../src/api/expenses/expenseClient.ts","../src/api/salesforce/apiClient.ts","../src/api/liphe_legacy/auth/authClient.ts","../src/api/liphe_legacy/practitioner/practitionerClient.ts","../src/api/liphe_legacy/contract_request_period/contractRequestPeriodClient.ts","../src/api/liphe_legacy/lipheApiClient.ts","../src/models/index.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class SFAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private refreshToken: string | undefined = undefined\n private tokenRefreshPromise: Promise<string> | null = null\n\n constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl: string) {\n this.axiosTokenInstance.defaults.baseURL = baseUrl\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n }\n\n async initializeAuth(\n clientId: string,\n clientSecret: string,\n onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>\n ) {\n const token = await this.postToken(clientId, clientSecret)\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`\n\n this.authenticatedAxiosInstance.interceptors.response.use(\n response => response,\n async error => {\n const originalRequest = error.config\n originalRequest._retryCount = originalRequest._retryCount || 0\n\n // If the error is 401 and we haven't exceeded max retries\n if (error.response?.status === 401 && originalRequest._retryCount < 3) {\n originalRequest._retryCount++\n\n try {\n // Use existing token refresh if one is in progress\n if (!this.tokenRefreshPromise) {\n const newClientCredentials = await onTokenRefresh?.()\n const newClientId = newClientCredentials?.clientId || clientId\n const newClientSecret =\n newClientCredentials?.clientSecret || clientSecret\n this.tokenRefreshPromise = this.postToken(newClientId, newClientSecret)\n }\n\n const newToken = await this.tokenRefreshPromise\n // Clear the refresh promise after it completes\n this.tokenRefreshPromise = null\n\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] =\n `Bearer ${newToken}`\n originalRequest.headers['Authorization'] = `Bearer ${newToken}`\n\n originalRequest.timeout = 5000\n\n return await Promise.race([\n this.authenticatedAxiosInstance(originalRequest),\n new Promise((_, reject) =>\n setTimeout(\n () => reject(new Error('Retry request timeout')),\n originalRequest.timeout\n )\n )\n ])\n } catch (refreshError) {\n // Clear the refresh promise if it fails\n this.tokenRefreshPromise = null\n return Promise.reject(refreshError)\n }\n }\n return Promise.reject(error)\n }\n )\n }\n\n async postToken(clientId?: string, clientSecret?: string): Promise<string> {\n const tokenFormRequestBody = new FormData()\n if (this.refreshToken) {\n tokenFormRequestBody.append('refresh_token', this.refreshToken)\n tokenFormRequestBody.append('grant_type', 'refresh_token')\n } else if (clientId && clientSecret) {\n tokenFormRequestBody.append('client_id', clientId)\n tokenFormRequestBody.append('client_secret', clientSecret)\n tokenFormRequestBody.append('grant_type', 'client_credentials')\n } else {\n throw new Error(\n 'Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided'\n )\n }\n const response = await this.axiosTokenInstance.post(\n '/services/oauth2/token',\n tokenFormRequestBody,\n {\n headers: tokenFormRequestBody.getHeaders()\n }\n )\n this.token = response?.data?.['access_token']\n if (!this.token) throw new Error('Authentication failed, could not get the access token')\n return this.token\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { TimesheetDayEntry } from '../../../models'\nimport { SF_API_VERSION } from '../apiClient'\nimport FormData from 'form-data'\n\ninterface SFTimesheetHourField {\n Id: string\n Date__c: Date\n Callback__c: number\n HoursEBAdjusted__c: number\n Misc__c: number\n OT1__c: number\n OT2__c: number\n OnCall__c: number\n Misc1__c: number\n Misc_1_Hours__c: number\n Misc_2_Hours__c: number\n Misc_3_Hours__c: number\n Misc_4_Hours__c: number\n Stat1__c: number\n Stat2__c: number\n In_Charge__c: number\n Shift_Travel_Stipend__c: number\n LastModifiedDate: Date\n}\ntype SFTimesheetHourFieldKeys = (keyof SFTimesheetHourField)[]\n\nexport class SFTimesheetClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async updateTimesheetHour(timesheetHourId: string, timesheet: TimesheetDayEntry) {\n try {\n const url = `/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${timesheetHourId}`\n const response = await this.axiosInstance.patch(url, {\n Date__c: timesheet.date,\n Callback__c: timesheet.callbackHours,\n HoursEBAdjusted__c: timesheet.regularHours,\n Misc__c: timesheet.miscHours,\n OT1__c: timesheet.overtime1Hours,\n OT2__c: timesheet.overtime2Hours,\n OnCall__c: timesheet.onCallHours,\n Misc1__c: timesheet.misc1HoursA,\n Misc_1_Hours__c: timesheet.misc1HoursB,\n Misc_2_Hours__c: timesheet.misc2Hours,\n Misc_3_Hours__c: timesheet.misc3Hours,\n Misc_4_Hours__c: timesheet.misc4Hours,\n Stat1__c: timesheet.stat1Hours,\n Stat2__c: timesheet.stat2Hours,\n In_Charge__c: timesheet.inChargeHours,\n Shift_Travel_Stipend__c: timesheet.shiftTravelPerDiemHours\n })\n\n if (![200, 204, 304].includes(response.status))\n throw new Error(`got error status code ${response.status}`)\n } catch (error) {\n console.error('Error Updating Timesheet Hour: ', error.message)\n }\n }\n\n async getTimesheetIds(workorderId: string, periodStartDate?: Date, periodEndDate?: Date): Promise<string[]> {\n // Find all timesheet Ids that belong to this WO\n const url = `/services/data/${SF_API_VERSION}/query`\n let query = `SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderId}'`\n try {\n if (periodStartDate && periodEndDate) {\n query += `\n AND PayPeriodStartDate__c <= ${new Date(periodStartDate).toISOString().substring(0, 10)}\n AND PayPeriodEndDate__c >= ${new Date(periodEndDate).toISOString().substring(0, 10)}\n `\n }\n }\n catch (error) {\n console.error('Invalid period dates', error)\n }\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records.map(record => record.Id)\n }\n\n async getTimesheetsForPractitioner(personnelID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '${personnelID}')`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let timesheets = []\n\n for (const timesheet of data.data.records) {\n timesheets.push({\n workorderId: timesheet.WorkOrder__c,\n id: timesheet.Id,\n updatedAt: timesheet.LastModifiedDate\n })\n }\n\n return timesheets\n }\n\n async getTimesheetHours(workorderId: string, fields?: SFTimesheetHourFieldKeys[], periodStartDate?: Date, periodEndDate?: Date): Promise<TimesheetDayEntry[]> {\n const timesheetIds = await this.getTimesheetIds(workorderId, periodStartDate, periodEndDate)\n\n const allHours: SFTimesheetHourField[] = []\n const url = `/services/data/${SF_API_VERSION}/query`\n for (const timesheetId of timesheetIds) {\n let query = `\n SELECT ${fields?.join(',') || 'FIELDS(STANDARD)'}\n FROM TimesheetHour__c\n WHERE Timesheet__c = '${timesheetId}'`\n try {\n if (fields?.length) {\n query += `\n AND Date__c >= ${new Date(periodStartDate).toISOString().substring(0, 10)}\n AND Date__c <= ${new Date(periodEndDate).toISOString().substring(0, 10)}`\n }\n\n const {\n data: { records }\n } = await this.axiosInstance.get<{ records: SFTimesheetHourField[] }>(url, {\n params: { q: query }\n })\n allHours.push(...records)\n } catch (err) {\n console.error(`Failed to fetch`, err)\n }\n }\n return allHours.map(toTimesheetDayEntry)\n }\n\n async getPayPeriods(): Promise<any> {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT Name,\n StartDate__c,\n EndDate__c\n FROM PayPeriod__c`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriods = []\n\n for (const payPeriod of data.data.records) {\n payPeriods.push({\n name: payPeriod.Name,\n startDate: payPeriod.StartDate__c,\n endDate: payPeriod.EndDate__c\n })\n }\n\n return payPeriods\n }\n\n async uploadImageToTimesheet(\n file: Buffer,\n filename: string,\n timesheetId: string\n ): Promise<void> {\n try {\n const form = new FormData()\n form.append(\n 'entity_content',\n JSON.stringify({\n Title: filename,\n PathOnClient: filename\n }),\n { contentType: 'application/json' }\n )\n\n form.append('VersionData', file, {\n filename,\n contentType: 'application/octet-stream'\n })\n const uploadRes = await this.axiosInstance.post(\n `/services/data/${SF_API_VERSION}/sobjects/ContentVersion`,\n form,\n { headers: form.getHeaders() }\n )\n\n const versionId = uploadRes.data.id\n\n //get ContentDocumentId\n const { data } = await this.axiosInstance.get(\n `/services/data/${SF_API_VERSION}/query`,\n {\n params: {\n q: `SELECT ContentDocumentId FROM ContentVersion WHERE Id = '${versionId}'`\n }\n }\n )\n const contentDocumentId = data.records[0].ContentDocumentId\n\n await this.axiosInstance.post(\n `/services/data/${SF_API_VERSION}/sobjects/ContentDocumentLink`,\n {\n ContentDocumentId: contentDocumentId,\n LinkedEntityId: timesheetId,\n ShareType: 'V',\n Visibility: 'AllUsers'\n }\n )\n } catch (err) {\n console.error('Salesforce error response:', err?.response?.data)\n console.error('Error uploading and linking image:', err?.message)\n }\n }\n}\n\nfunction toTimesheetDayEntry(raw: SFTimesheetHourField): TimesheetDayEntry {\n return {\n id: raw.Id,\n date: raw.Date__c,\n callbackHours: raw.Callback__c,\n regularHours: raw.HoursEBAdjusted__c,\n miscHours: raw.Misc__c,\n overtime1Hours: raw.OT1__c,\n overtime2Hours: raw.OT2__c,\n onCallHours: raw.OnCall__c,\n misc1HoursA: raw.Misc1__c,\n misc1HoursB: raw.Misc_1_Hours__c,\n misc2Hours: raw.Misc_2_Hours__c,\n misc3Hours: raw.Misc_3_Hours__c,\n misc4Hours: raw.Misc_4_Hours__c,\n stat1Hours: raw.Stat1__c,\n stat2Hours: raw.Stat2__c,\n inChargeHours: raw.In_Charge__c,\n shiftTravelPerDiemHours: raw.Shift_Travel_Stipend__c,\n lastModified: raw.LastModifiedDate\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFPractitionerClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchPractitioners(): Promise<Practitioner[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n\n async fetchPractitionerByEmail(email: string): Promise<Practitioner | null> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active' AND Email__c = '${email}'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n if (records.length === 0) {\n return null\n }\n return toPractitioner(records[0])\n } catch (error) {\n console.error('Error fetching practitioner by email:', error)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Workorder } from '../../../models'\n\nexport class SFWorkorderClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async getWorkordersForPractitioner(\n practitionerId?: string,\n options?: { startDate?: Date; endDate?: Date; provinces?: string[] }\n ): Promise<Workorder[]> {\n try {\n const filters: string[] = []\n if (practitionerId) {\n filters.push(`Personnel__c = '${practitionerId}'`)\n }\n if (options?.startDate) {\n const isoStart = options.startDate.toISOString().split('T')[0]\n filters.push(`EndDate__c >= ${isoStart}`)\n }\n if (options?.endDate) {\n const isoEnd = options.endDate.toISOString().split('T')[0]\n filters.push(`startdate__c <= ${isoEnd}`)\n }\n\n if (options?.provinces?.length) {\n const provincesList = options?.provinces?.map(p => `'${p}'`).join(', ')\n filters.push(`Region__c IN (${provincesList})`)\n }\n const whereClause = filters.length ? `WHERE ${filters.join(' AND ')}` : ''\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id, Region__c, Name, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c ${whereClause}`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n name: record.Name,\n establishmentId: record.HospitalID__c,\n region: record.Region__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n practitionerId: record.Personnel__c,\n startDate: new Date(record.startdate__c),\n endDate: new Date(record.EndDate__c),\n createdAt: new Date(record.CreatedDate),\n updatedAt: new Date(record.LastModifiedDate)\n })\n )\n )\n } catch (error) {\n console.error('Error fetching work orders: ', error.message)\n throw error\n }\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Period } from '../../../models'\n\nexport class SFPayPeriodClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async getPayPeriodAndTimesheetIdsForWorkorder(workorderID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT PayPeriod__c, ID\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderID}'`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriodIds = []\n\n for (const payPeriods of data.data.records) {\n payPeriodIds.push({\n timesheetId: payPeriods.Id,\n payPeriodId: payPeriods.PayPeriod__c\n })\n }\n\n return payPeriodIds\n }\n\n async getPayPeriodDatesForPayPeriodIds(payPeriodIDs: string[]): Promise<Period[]> {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT ID, StartDate__c, EndDate__c\n FROM PayPeriod__c\n WHERE id IN ${listOfIdsForQuery(payPeriodIDs)}`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriodDates = []\n\n for (const payPeriod of data.data.records) {\n payPeriodDates.push({\n payPeriodId: payPeriod.Id,\n startDate: new Date(payPeriod.StartDate__c),\n endDate: new Date(payPeriod.EndDate__c)\n })\n }\n\n return payPeriodDates\n }\n}\n\nconst listOfIdsForQuery = (payPeriodIDs: string[]) => `('${payPeriodIDs.join('\\', \\'')}')`\n","import { AxiosInstance } from 'axios'\nimport { Expense } from '../../models/expense'\nimport { SF_API_VERSION } from '../salesforce/apiClient'\n\ntype FrontendExpense = {\n workorderPeriodId: string\n amount: string\n type: 'Other' | 'Lodging' | 'Transportation' | 'Travel (Hours)' | 'Per diem' | 'Meals'\n}\n\nconst EXPENSE_FIELD_MAP = {\n Lodging: 'StipendTotalOverride__c',\n 'Per diem': 'Per_Diem_Total__c',\n Other: 'Reimburseable_Expenses__c',\n Transportation: 'TaxiAmount__c'\n} as const\n\ntype SupportedExpenseType = keyof typeof EXPENSE_FIELD_MAP\n\nexport class SFExpenseClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchExpenseTotals(timesheetId: string): Promise<Expense | null> {\n try {\n const url = `/services/data/${SF_API_VERSION}/sobjects/Timesheet__c/${timesheetId}`\n const { data } = await this.axiosInstance.get(url, {\n params: {\n fields: 'Reimburseable_Expenses__c,Per_Diem_Total__c,StipendTotalOverride__c,TaxiAmount__c'\n }\n })\n if (!data) return null\n return toExpense(data)\n } catch (err) {\n console.error('Failed to fetch expense totals', err)\n throw err\n }\n }\n\n private async patchTimesheet(timesheetId: string, body: Record<string, number>): Promise<void> {\n const url = `/services/data/${SF_API_VERSION}/sobjects/Timesheet__c/${timesheetId}`\n const res = await this.axiosInstance.patch(url, body)\n if (![200, 204, 304].includes(res.status)) {\n throw new Error(`Unexpected status ${res.status}`)\n }\n }\n\n async updateExpense(expense: FrontendExpense): Promise<void> {\n const timesheetId = expense.workorderPeriodId\n const amount = Number(expense.amount)\n const field = EXPENSE_FIELD_MAP[expense.type as SupportedExpenseType]\n if (!field) {\n throw new Error(`Unsupported expense type: ${expense.type}`)\n }\n\n await this.patchTimesheet(timesheetId, { [field]: amount })\n }\n}\n\nfunction toExpense(raw: any): Expense {\n return {\n reimbursable: Number(raw.Reimburseable_Expenses__c ?? 0),\n perDiem: Number(raw.Per_Diem_Total__c ?? 0),\n lodging: Number(raw.StipendTotalOverride__c ?? 0),\n transportation: Number(raw.TaxiAmount__c ?? 0)\n }\n}\n","import axios, { AxiosInstance } from 'axios'\nimport { SFAuthenticator } from './auth/auth'\nimport { SFTimesheetClient } from './timesheet/timesheetClient'\nimport { SFPractitionerClient } from './practitioner/practitionerClient'\nimport { Role } from '../../models'\nimport { SFWorkorderClient } from './workorder/workorderClient'\nimport { SFPayPeriodClient } from './payperiod/payperiodClient'\nimport { SFExpenseClient } from '../expenses/expenseClient'\n\nexport const SF_API_VERSION: string = 'v57.0'\n\nexport class SFApiClient {\n private instance: SFApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: SFAuthenticator\n private baseUrl: string\n timesheetClient: SFTimesheetClient\n workorderClient: SFWorkorderClient\n practitionerClient: SFPractitionerClient\n payPeriodClient: SFPayPeriodClient\n expenseClient: SFExpenseClient\n\n async init(\n baseUrl: string,\n sfClientId: string,\n sfClientSecret: string,\n onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>\n ) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL = baseUrl\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.workorderClient = new SFWorkorderClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n this.payPeriodClient = new SFPayPeriodClient(this.axiosInstance)\n this.expenseClient = new SFExpenseClient(this.axiosInstance)\n // creates authenticator and adds token to axios instance\n await this.authenticator.initializeAuth(sfClientId, sfClientSecret, onTokenRefresh)\n }\n\n setInstance(instance: SFApiClient) {\n this.instance = instance\n }\n getInstance(): SFApiClient {\n if (!this.instance) {\n throw new Error('Salesforce Api client not initialized')\n }\n return this.instance\n }\n\n async fetchRoles(): Promise<Role[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Label, Value FROM PicklistValueInfo \\\n WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c'\\\n AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' \\\n AND isActive = true`\n return this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Role => ({\n label: record.Label,\n value: record.Value\n })\n )\n )\n } catch (error) {\n console.error('Error fetching roles: ', error.message)\n throw error\n }\n }\n}\n","import axios, { AxiosInstance } from 'axios'\nimport axiosRetry from 'axios-retry'\nimport FormData from 'form-data'\n\nexport class LipheAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private tokenRefreshPromise: Promise<string> | null = null\n private email: string\n private password: string\n private type: string\n\n constructor(\n authenticatedAxiosInstance: AxiosInstance,\n baseUrl: string,\n email: string,\n password: string,\n type: 'user' | 'client' = 'user'\n ) {\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n\n axiosRetry(this.axiosTokenInstance, {\n retries: 10,\n retryDelay: retryCount => {\n return Math.min(1000 * Math.pow(2, retryCount - 1), 30000)\n }\n })\n\n this.email = email\n this.password = password\n this.type = type\n this.axiosTokenInstance.defaults.baseURL = baseUrl\n }\n\n async initializeAuth() {\n const token = await this.login()\n\n this.authenticatedAxiosInstance.defaults.headers.common['X-Auth-Token'] = token\n\n this.authenticatedAxiosInstance.interceptors.response.use(\n response => response,\n async error => {\n const originalRequest = error.config\n originalRequest._retryCount = originalRequest._retryCount || 0\n\n if (error.response?.status === 401 && originalRequest._retryCount < 1) {\n originalRequest._retryCount++\n try {\n if (!this.tokenRefreshPromise) {\n this.tokenRefreshPromise = this.login()\n }\n const newToken = await this.tokenRefreshPromise\n this.tokenRefreshPromise = null\n\n this.authenticatedAxiosInstance.defaults.headers.common['X-Auth-Token'] =\n newToken\n\n return await this.authenticatedAxiosInstance(originalRequest)\n } catch (refreshError) {\n this.tokenRefreshPromise = null\n return Promise.reject(refreshError)\n }\n }\n return Promise.reject(error)\n }\n )\n }\n private async login(): Promise<string> {\n const form = new FormData()\n form.append('email', this.email)\n form.append('password', this.password)\n form.append('type', this.type)\n\n const response = await this.axiosTokenInstance.post('v2/signin', form, {\n headers: form.getHeaders()\n })\n const token = response?.data?.data?.token\n if (!token) {\n throw new Error('Authentication failed: no token return')\n }\n this.token = token\n return token\n }\n}\n","import type { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../../models'\n\ninterface LiphePractitioner {\n id: number\n firstname: string\n lastname: string\n email: string\n communicationMode?: number\n}\n\nexport class LiphePractitionerClient {\n private axios: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axios = axiosInstance\n }\n async fetchAllPractitioners(agencyId: number = 1): Promise<Practitioner[]> {\n let practitioners: LiphePractitioner[] = []\n let page = 1\n let nextPage = true\n\n while (nextPage) {\n const response = await this.axios.get('v2/employees', {\n params: {\n agency_id: agencyId,\n page\n }\n })\n const data = response?.data?.data\n if (!data?.data || !Array.isArray(data.data)) {\n throw new Error('Unexpected responses.')\n }\n\n const pagePractitioners = data.data.map(\n (p: any): LiphePractitioner => ({\n id: p.id,\n firstname: p.firstname,\n lastname: p.lastname,\n email: p.email,\n communicationMode: p.communicationMode\n })\n )\n\n practitioners.push(...pagePractitioners)\n nextPage = Boolean(data.next_page_url)\n page++\n }\n return practitioners.map(p => ({\n id: String(p.id),\n firstName: p.firstname,\n lastName: p.lastname,\n email: p.email,\n staffId: String(p.id)\n }))\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Agency, Period, Workorder } from '../../../models'\nimport { LipheContractRequest } from '../contract_request/contractRequestClient'\nimport { LipheAssignment } from '../assignment/assignmentClient'\ninterface LipheContractRequestPeriods {\n message: string\n status: boolean\n data: LipheContractRequestPeriodData[]\n meta: {\n current_page: number\n from: number\n last_page: number\n path: string\n per_page: number\n to: number\n total: number\n }\n}\n\ninterface LipheContractRequestPeriod {\n message: string\n status: boolean\n data: LipheContractRequestPeriodData\n meta: {\n current_page: number\n from: number\n last_page: number\n path: string\n per_page: number\n to: number\n total: number\n }\n}\n\ninterface LipheContractRequestPeriodData {\n id: number\n contract_request_id: number\n start_date: Date\n end_date: Date\n shift: 'morning' | 'afternoon' | 'evening' | 'night'\n start_time: Date\n end_time: Date\n departement_id: number\n note: string\n assignment_id: number\n assignment_parent_id: number | null\n created_at: Date\n updated_at: Date\n contract_request: LipheContractRequest\n department: string | null\n assignment: LipheAssignment\n assigned_employee_details: UserDetails\n assignment_employee: any\n}\n\ninterface UserDetails {\n id: number\n name: string\n email: string | null\n}\n\nexport class ContractRequestPeriodClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchAllContractRequestPeriods(\n agencyId: Agency,\n from?: Date,\n to?: Date,\n page: number = 1,\n activeAssignationsOnly: boolean = true,\n assignedPractitionerId?: string\n ): Promise<Workorder[]> {\n const url = `v2/contract-request-periods/agency/${agencyId}`\n const params = new URLSearchParams()\n const periods: Workorder[] = []\n let nextPage = true\n\n if (from) {\n params.append('from', from.toISOString().split('T')[0] + ' 00:00:00')\n }\n if (to) {\n params.append('to', to.toISOString().split('T')[0] + ' 23:59:59')\n }\n if (page) {\n params.append('page', page.toString())\n }\n if (activeAssignationsOnly) {\n params.append('active_assignations_only', activeAssignationsOnly ? '1' : '0')\n }\n\n if (assignedPractitionerId) {\n params.append('assigned_employee_id', assignedPractitionerId)\n }\n\n while (nextPage) {\n params.set('page', page.toString())\n\n const response = await this.axiosInstance.get<LipheContractRequestPeriods>(url, {\n params\n })\n\n for (const period of response.data.data) {\n periods.push({\n id: period.id.toString(),\n name: period.id.toString(),\n establishmentId: period.contract_request.community.id.toString(),\n region: period.contract_request.community.contact.address_state,\n establishmentName: period.contract_request.community.name,\n role: this.getRole(period),\n practitionerId: period.assignment.selected_client.id,\n startDate: new Date(period.start_date),\n endDate: new Date(period.end_date),\n createdAt: new Date(period.created_at),\n updatedAt: new Date(period.updated_at)\n })\n }\n\n nextPage = page < response.data.meta.last_page\n page++\n }\n\n return periods\n }\n\n async fetchContractRequestPeriod(workorderId: string) {\n const url = `v2/contract-request-periods/${workorderId}`\n const params = new URLSearchParams()\n const response = await this.axiosInstance.get<LipheContractRequestPeriod>(url, { params })\n\n return response.data.data\n }\n\n async getPayPeriodDatesForPayPeriodId(payPeriodId: string): Promise<Period[]> {\n const period = await this.fetchContractRequestPeriod(payPeriodId)\n const payPeriods: {\n payPeriodId: string\n startDate: string\n endDate: string\n workorderId: string\n }[] = []\n\n const firstPayPeriodDate = this.getPayPeriodDayBeforeStartDate(\n new Date(period.assignment.selected_client.agency.date_first_periode_paie),\n new Date(period.start_date)\n )\n\n const lastPayPeriodDate = this.getLastDayOfPayPeriod(\n new Date(firstPayPeriodDate),\n new Date(period.end_date)\n )\n\n // Calculate the number of weeks between lastPayPeriodDate and firstPayPeriodDate\n const weeksBetween = this.calculateWeeksBetween(firstPayPeriodDate, lastPayPeriodDate)\n\n for (let i = 0; i < weeksBetween; i++) {\n const tempDate = new Date(firstPayPeriodDate)\n\n const startDate = new Date(tempDate.setDate(tempDate.getDate() + 7 * i))\n const endDate = new Date(tempDate.setDate(tempDate.getDate() + 6))\n\n payPeriods.push({\n payPeriodId: '',\n startDate: startDate.toISOString().split('T')[0],\n endDate: endDate.toISOString().split('T')[0],\n workorderId: payPeriodId\n })\n }\n\n return payPeriods as unknown as Period[]\n }\n\n private getRole(period: LipheContractRequestPeriodData) {\n if (period.contract_request.job.translations.length === 0) {\n return ''\n }\n\n if (period.contract_request.job.translations.length > 1) {\n const roleTranslation = period.contract_request.job.translations.find(\n (translation: any) => translation.locale === 'en'\n )\n return roleTranslation?.content\n } else {\n return period.contract_request.job.translations[0].content\n }\n }\n\n /**\n * Calculates the pay period day of week that comes before the start date\n * @param firstPayPeriodDate The first pay period date from the agency\n * @param startDate The start date to find the pay period before\n * @returns The day of week (0-6, where 0 is Sunday) of the pay period before start_date\n */\n private getPayPeriodDayBeforeStartDate(firstPayPeriodDate: Date, startDate: Date): Date {\n const payPeriodDayOfWeek = firstPayPeriodDate.getDay()\n\n // Calculate the most recent pay period date that falls before start_date\n const tempDate = new Date(startDate)\n\n // Go back one week at a time until we find a date that matches the pay period day of week\n while (tempDate.getDay() !== payPeriodDayOfWeek) {\n tempDate.setDate(tempDate.getDate() - 1)\n }\n\n // If the calculated date is not before start_date, go back another week\n if (tempDate >= startDate) {\n tempDate.setDate(tempDate.getDate() - 7)\n }\n\n return tempDate\n }\n\n private getLastDayOfPayPeriod(firstPayPeriodDate: Date, endDate: Date): Date {\n const tempDate = new Date(firstPayPeriodDate)\n\n // Go back one week at a time until we find a date that matches the pay period day of week\n while (endDate > tempDate) {\n tempDate.setDate(tempDate.getDate() + 7)\n }\n\n return tempDate\n }\n\n private calculateWeeksBetween(startDate: Date, endDate: Date): number {\n const diffTime = Math.abs(endDate.getTime() - startDate.getTime())\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))\n const weeks = Math.floor(diffDays / 7)\n return weeks\n }\n}\n","import axios, { AxiosInstance } from 'axios'\nimport { LipheAuthenticator } from './auth/authClient'\nimport { LiphePractitionerClient } from './practitioner/practitionerClient'\nimport { ContractRequestPeriodClient } from './contract_request_period/contractRequestPeriodClient'\nimport axiosRetry from 'axios-retry'\n\nexport class LipheApiClient {\n private instance: LipheApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: LipheAuthenticator\n public practitionerClient: LiphePractitionerClient\n public contractRequestPeriodClient: ContractRequestPeriodClient\n\n constructor(\n baseUrl: string,\n email: string,\n password: string,\n type: 'user' | 'client' = 'user'\n ) {\n this.axiosInstance.defaults.baseURL = baseUrl\n\n this.authenticator = new LipheAuthenticator(\n this.axiosInstance,\n baseUrl,\n email,\n password,\n type\n )\n\n axiosRetry(this.axiosInstance, {\n retries: 10,\n retryDelay: retryCount => {\n return Math.min(1000 * Math.pow(2, retryCount - 1), 30000)\n },\n onRetry: (retryCount, error) => {\n console.log(`Retry attempt ${retryCount} failed: ${error.message}`)\n }\n })\n\n this.practitionerClient = new LiphePractitionerClient(this.axiosInstance)\n this.contractRequestPeriodClient = new ContractRequestPeriodClient(this.axiosInstance)\n }\n async init() {\n await this.authenticator.initializeAuth()\n }\n\n setInstance(instance: LipheApiClient) {\n this.instance = instance\n }\n\n getInstance(): LipheApiClient {\n return this.instance\n }\n\n getAxiosInstance(): AxiosInstance {\n return this.axiosInstance\n }\n}\n","export enum Agency {\n CHCA = \"7\",\n CodeBleu = \"5\",\n NordikOntario = \"6\",\n PHA = \"8\",\n PremierSoin = \"1\",\n PremierSoinNordik = \"3\",\n SolutionNursing = \"4\",\n SolutionsStaffing = \"9\",\n Transport = \"2\",\n SSI = \"99\"\n}\n\nexport * from './timesheet'\nexport * from './user'\nexport * from './workorder'\n"],"names":["SFAuthenticator","authenticatedAxiosInstance","baseUrl","axios","create","undefined","axiosTokenInstance","defaults","baseURL","_proto","prototype","initializeAuth","_initializeAuth","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","clientId","clientSecret","onTokenRefresh","_this","token","wrap","_callee2$","_context2","prev","next","postToken","sent","headers","common","interceptors","response","use","_ref","_callee","error","_error$response","originalRequest","newClientCredentials","newClientId","newClientSecret","newToken","_callee$","_context","config","_retryCount","status","tokenRefreshPromise","timeout","Promise","race","_","reject","setTimeout","Error","abrupt","t0","stop","_x4","apply","arguments","_x","_x2","_x3","_postToken","_callee3","_response$data","tokenFormRequestBody","_callee3$","_context3","FormData","refreshToken","append","post","getHeaders","data","_x5","_x6","SFTimesheetClient","axiosInstance","updateTimesheetHour","_updateTimesheetHour","timesheetHourId","timesheet","url","SF_API_VERSION","patch","Date__c","date","Callback__c","callbackHours","HoursEBAdjusted__c","regularHours","Misc__c","miscHours","OT1__c","overtime1Hours","OT2__c","overtime2Hours","OnCall__c","onCallHours","Misc1__c","misc1HoursA","Misc_1_Hours__c","misc1HoursB","Misc_2_Hours__c","misc2Hours","Misc_3_Hours__c","misc3Hours","Misc_4_Hours__c","misc4Hours","Stat1__c","stat1Hours","Stat2__c","stat2Hours","In_Charge__c","inChargeHours","Shift_Travel_Stipend__c","shiftTravelPerDiemHours","includes","console","message","getTimesheetIds","_getTimesheetIds","workorderId","periodStartDate","periodEndDate","query","_yield$this$axiosInst","records","Date","toISOString","substring","get","params","q","map","record","Id","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","personnelID","timesheets","_iterator","_step","_createForOfIteratorHelperLoose","done","value","push","WorkOrder__c","id","updatedAt","LastModifiedDate","getTimesheetHours","_getTimesheetHours","_callee4","fields","timesheetIds","allHours","_iterator2","_step2","timesheetId","_yield$this$axiosInst2","_callee4$","_context4","join","length","toTimesheetDayEntry","_x7","_x8","_x9","_x10","getPayPeriods","_getPayPeriods","_callee5","payPeriods","_iterator3","_step3","payPeriod","_callee5$","_context5","name","Name","startDate","StartDate__c","endDate","EndDate__c","uploadImageToTimesheet","_uploadImageToTimesheet","_callee6","file","filename","form","uploadRes","versionId","_yield$this$axiosInst3","contentDocumentId","_err$response","_callee6$","_context6","JSON","stringify","Title","PathOnClient","contentType","ContentDocumentId","LinkedEntityId","ShareType","Visibility","_x11","_x12","_x13","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","fetchPractitionerByEmail","_fetchPractitionerByEmail","email","firstName","FirstName__c","lastName","LastName__c","Email__c","staffId","StaffID__c","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","options","_options$provinces","filters","isoStart","isoEnd","_options$provinces2","provincesList","whereClause","split","provinces","p","then","establishmentId","HospitalID__c","region","Region__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","startdate__c","createdAt","CreatedDate","SFPayPeriodClient","getPayPeriodAndTimesheetIdsForWorkorder","_getPayPeriodAndTimesheetIdsForWorkorder","workorderID","payPeriodIds","payPeriodId","PayPeriod__c","getPayPeriodDatesForPayPeriodIds","_getPayPeriodDatesForPayPeriodIds","payPeriodIDs","payPeriodDates","listOfIdsForQuery","EXPENSE_FIELD_MAP","Lodging","Other","Transportation","SFExpenseClient","fetchExpenseTotals","_fetchExpenseTotals","toExpense","patchTimesheet","_patchTimesheet","body","res","updateExpense","_updateExpense","expense","_this$patchTimesheet","amount","field","workorderPeriodId","Number","type","reimbursable","_raw$Reimburseable_Ex","Reimburseable_Expenses__c","perDiem","_raw$Per_Diem_Total__","Per_Diem_Total__c","lodging","_raw$StipendTotalOver","StipendTotalOverride__c","transportation","_raw$TaxiAmount__c","TaxiAmount__c","SFApiClient","init","_init","sfClientId","sfClientSecret","authenticator","timesheetClient","workorderClient","practitionerClient","payPeriodClient","expenseClient","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value","LipheAuthenticator","password","axiosRetry","retries","retryDelay","retryCount","Math","min","pow","login","_login","LiphePractitionerClient","fetchAllPractitioners","_fetchAllPractitioners","agencyId","practitioners","page","nextPage","agency_id","Array","isArray","pagePractitioners","firstname","lastname","communicationMode","Boolean","next_page_url","String","ContractRequestPeriodClient","fetchAllContractRequestPeriods","_fetchAllContractRequestPeriods","from","to","activeAssignationsOnly","assignedPractitionerId","periods","period","URLSearchParams","toString","set","contract_request","community","contact","address_state","getRole","assignment","selected_client","start_date","end_date","created_at","updated_at","meta","last_page","fetchContractRequestPeriod","_fetchContractRequestPeriod","getPayPeriodDatesForPayPeriodId","_getPayPeriodDatesForPayPeriodId","firstPayPeriodDate","lastPayPeriodDate","weeksBetween","i","tempDate","getPayPeriodDayBeforeStartDate","agency","date_first_periode_paie","getLastDayOfPayPeriod","calculateWeeksBetween","setDate","getDate","job","translations","roleTranslation","find","translation","locale","content","payPeriodDayOfWeek","getDay","diffTime","abs","getTime","diffDays","ceil","weeks","floor","LipheApiClient","onRetry","log","contractRequestPeriodClient","getAxiosInstance","Agency"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGaA,eAAe;EAOxB,SAAAA,gBAAYC,0BAAyC,EAAEC,OAAe;IANtE,uBAAkB,GAAkBC,KAAK,CAACC,MAAM,EAAE;IAElD,UAAK,GAAuBC,SAAS;IAC7B,iBAAY,GAAuBA,SAAS;IAC5C,wBAAmB,GAA2B,IAAI;IAGtD,IAAI,CAACC,kBAAkB,CAACC,QAAQ,CAACC,OAAO,GAAGN,OAAO;IAClD,IAAI,CAACD,0BAA0B,GAAGA,0BAA0B;;EAC/D,IAAAQ,MAAA,GAAAT,eAAA,CAAAU,SAAA;EAAAD,MAAA,CAEKE,cAAc;IAAA,IAAAC,eAAA,gBAAAC,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAApB,SAAAC,SACIC,QAAgB,EAChBC,YAAoB,EACpBC,cAA0E;MAAA,IAAAC,KAAA;MAAA,IAAAC,KAAA;MAAA,OAAAP,mBAAA,GAAAQ,IAAA,UAAAC,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;UAAA;YAAAF,SAAA,CAAAE,IAAA;YAAA,OAEtD,IAAI,CAACC,SAAS,CAACV,QAAQ,EAAEC,YAAY,CAAC;UAAA;YAApDG,KAAK,GAAAG,SAAA,CAAAI,IAAA;YACX,IAAI,CAAC3B,0BAA0B,CAACM,QAAQ,CAACsB,OAAO,CAACC,MAAM,CAAC,eAAe,CAAC,eAAaT,KAAO;YAE5F,IAAI,CAACpB,0BAA0B,CAAC8B,YAAY,CAACC,QAAQ,CAACC,GAAG,CACrD,UAAAD,QAAQ;cAAA,OAAIA,QAAQ;;cAAA,IAAAE,IAAA,GAAArB,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CACpB,SAAAoB,QAAMC,KAAK;gBAAA,IAAAC,eAAA;gBAAA,IAAAC,eAAA,EAAAC,oBAAA,EAAAC,WAAA,EAAAC,eAAA,EAAAC,QAAA;gBAAA,OAAA5B,mBAAA,GAAAQ,IAAA,UAAAqB,SAAAC,QAAA;kBAAA,kBAAAA,QAAA,CAAAnB,IAAA,GAAAmB,QAAA,CAAAlB,IAAA;oBAAA;sBACDY,eAAe,GAAGF,KAAK,CAACS,MAAM;sBACpCP,eAAe,CAACQ,WAAW,GAAGR,eAAe,CAACQ,WAAW,IAAI,CAAC;;sBAE9D,MACI,EAAAT,eAAA,GAAAD,KAAK,CAACJ,QAAQ,qBAAdK,eAAA,CAAgBU,MAAM,MAAK,GAAG,IAAIT,eAAe,CAACQ,WAAW,GAAG,CAAC;wBAAAF,QAAA,CAAAlB,IAAA;wBAAA;;sBACjEY,eAAe,CAACQ,WAAW,EAAE;sBAAAF,QAAA,CAAAnB,IAAA;sBAAA,IAIpBL,KAAI,CAAC4B,mBAAmB;wBAAAJ,QAAA,CAAAlB,IAAA;wBAAA;;sBAAAkB,QAAA,CAAAlB,IAAA;sBAAA,OACUP,cAAc,oBAAdA,cAAc,EAAI;oBAAA;sBAA/CoB,oBAAoB,GAAAK,QAAA,CAAAhB,IAAA;sBACpBY,WAAW,GAAG,CAAAD,oBAAoB,oBAApBA,oBAAoB,CAAEtB,QAAQ,KAAIA,QAAQ;sBACxDwB,eAAe,GACjB,CAAAF,oBAAoB,oBAApBA,oBAAoB,CAAErB,YAAY,KAAIA,YAAY;sBACtDE,KAAI,CAAC4B,mBAAmB,GAAG5B,KAAI,CAACO,SAAS,CAACa,WAAW,EAAEC,eAAe,CAAC;oBAAA;sBAAAG,QAAA,CAAAlB,IAAA;sBAAA,OAGpDN,KAAI,CAAC4B,mBAAmB;oBAAA;sBAAzCN,QAAQ,GAAAE,QAAA,CAAAhB,IAAA;;sBAEdR,KAAI,CAAC4B,mBAAmB,GAAG,IAAI;sBAE/B5B,KAAI,CAACnB,0BAA0B,CAACM,QAAQ,CAACsB,OAAO,CAACC,MAAM,CAAC,eAAe,CAAC,eAC1DY,QAAU;sBACxBJ,eAAe,CAACT,OAAO,CAAC,eAAe,CAAC,eAAaa,QAAU;sBAE/DJ,eAAe,CAACW,OAAO,GAAG,IAAI;sBAAAL,QAAA,CAAAlB,IAAA;sBAAA,OAEjBwB,OAAO,CAACC,IAAI,CAAC,CACtB/B,KAAI,CAACnB,0BAA0B,CAACqC,eAAe,CAAC,EAChD,IAAIY,OAAO,CAAC,UAACE,CAAC,EAAEC,MAAM;wBAAA,OAClBC,UAAU,CACN;0BAAA,OAAMD,MAAM,CAAC,IAAIE,KAAK,CAAC,uBAAuB,CAAC,CAAC;2BAChDjB,eAAe,CAACW,OAAO,CAC1B;wBACJ,CACJ,CAAC;oBAAA;sBAAA,OAAAL,QAAA,CAAAY,MAAA,WAAAZ,QAAA,CAAAhB,IAAA;oBAAA;sBAAAgB,QAAA,CAAAnB,IAAA;sBAAAmB,QAAA,CAAAa,EAAA,GAAAb,QAAA;;sBAGFxB,KAAI,CAAC4B,mBAAmB,GAAG,IAAI;sBAAA,OAAAJ,QAAA,CAAAY,MAAA,WACxBN,OAAO,CAACG,MAAM,CAAAT,QAAA,CAAAa,EAAa,CAAC;oBAAA;sBAAA,OAAAb,QAAA,CAAAY,MAAA,WAGpCN,OAAO,CAACG,MAAM,CAACjB,KAAK,CAAC;oBAAA;oBAAA;sBAAA,OAAAQ,QAAA,CAAAc,IAAA;;mBAAAvB,OAAA;eAC/B;cAAA,iBAAAwB,GAAA;gBAAA,OAAAzB,IAAA,CAAA0B,KAAA,OAAAC,SAAA;;gBACJ;UAAA;UAAA;YAAA,OAAArC,SAAA,CAAAkC,IAAA;;SAAA1C,QAAA;KACJ;IAAA,SAxDKL,cAAcA,CAAAmD,EAAA,EAAAC,GAAA,EAAAC,GAAA;MAAA,OAAApD,eAAA,CAAAgD,KAAA,OAAAC,SAAA;;IAAA,OAAdlD,cAAc;;EAAAF,MAAA,CA0DdkB,SAAS;IAAA,IAAAsC,UAAA,gBAAApD,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAf,SAAAmD,SAAgBjD,QAAiB,EAAEC,YAAqB;MAAA,IAAAiD,cAAA;MAAA,IAAAC,oBAAA,EAAApC,QAAA;MAAA,OAAAlB,mBAAA,GAAAQ,IAAA,UAAA+C,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA7C,IAAA,GAAA6C,SAAA,CAAA5C,IAAA;UAAA;YAC9C0C,oBAAoB,GAAG,IAAIG,QAAQ,EAAE;YAAA,KACvC,IAAI,CAACC,YAAY;cAAAF,SAAA,CAAA5C,IAAA;cAAA;;YACjB0C,oBAAoB,CAACK,MAAM,CAAC,eAAe,EAAE,IAAI,CAACD,YAAY,CAAC;YAC/DJ,oBAAoB,CAACK,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC;YAAAH,SAAA,CAAA5C,IAAA;YAAA;UAAA;YAAA,MACnDT,QAAQ,IAAIC,YAAY;cAAAoD,SAAA,CAAA5C,IAAA;cAAA;;YAC/B0C,oBAAoB,CAACK,MAAM,CAAC,WAAW,EAAExD,QAAQ,CAAC;YAClDmD,oBAAoB,CAACK,MAAM,CAAC,eAAe,EAAEvD,YAAY,CAAC;YAC1DkD,oBAAoB,CAACK,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC;YAAAH,SAAA,CAAA5C,IAAA;YAAA;UAAA;YAAA,MAEzD,IAAI6B,KAAK,CACX,kGAAkG,CACrG;UAAA;YAAAe,SAAA,CAAA5C,IAAA;YAAA,OAEkB,IAAI,CAACpB,kBAAkB,CAACoE,IAAI,CAC/C,wBAAwB,EACxBN,oBAAoB,EACpB;cACIvC,OAAO,EAAEuC,oBAAoB,CAACO,UAAU;aAC3C,CACJ;UAAA;YANK3C,QAAQ,GAAAsC,SAAA,CAAA1C,IAAA;YAOd,IAAI,CAACP,KAAK,GAAGW,QAAQ,aAAAmC,cAAA,GAARnC,QAAQ,CAAE4C,IAAI,qBAAdT,cAAA,CAAiB,cAAc,CAAC;YAAA,IACxC,IAAI,CAAC9C,KAAK;cAAAiD,SAAA,CAAA5C,IAAA;cAAA;;YAAA,MAAQ,IAAI6B,KAAK,CAAC,uDAAuD,CAAC;UAAA;YAAA,OAAAe,SAAA,CAAAd,MAAA,WAClF,IAAI,CAACnC,KAAK;UAAA;UAAA;YAAA,OAAAiD,SAAA,CAAAZ,IAAA;;SAAAQ,QAAA;KACpB;IAAA,SAxBKvC,SAASA,CAAAkD,GAAA,EAAAC,GAAA;MAAA,OAAAb,UAAA,CAAAL,KAAA,OAAAC,SAAA;;IAAA,OAATlC,SAAS;;EAAA,OAAA3B,eAAA;AAAA;;IC9CN+E,iBAAiB;EAG1B,SAAAA,kBAAYC,aAA4B;IACpC,IAAI,CAACA,aAAa,GAAGA,aAAa;;EACrC,IAAAvE,MAAA,GAAAsE,iBAAA,CAAArE,SAAA;EAAAD,MAAA,CAEKwE,mBAAmB;IAAA,IAAAC,oBAAA,gBAAArE,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAzB,SAAAoB,QAA0BgD,eAAuB,EAAEC,SAA4B;MAAA,IAAAC,GAAA,EAAArD,QAAA;MAAA,OAAAlB,mBAAA,GAAAQ,IAAA,UAAAqB,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAnB,IAAA,GAAAmB,QAAA,CAAAlB,IAAA;UAAA;YAAAkB,QAAA,CAAAnB,IAAA;YAEjE4D,GAAG,uBAAqBC,cAAc,mCAA8BH,eAAe;YAAAvC,QAAA,CAAAlB,IAAA;YAAA,OAClE,IAAI,CAACsD,aAAa,CAACO,KAAK,CAACF,GAAG,EAAE;cACjDG,OAAO,EAAEJ,SAAS,CAACK,IAAI;cACvBC,WAAW,EAAEN,SAAS,CAACO,aAAa;cACpCC,kBAAkB,EAAER,SAAS,CAACS,YAAY;cAC1CC,OAAO,EAAEV,SAAS,CAACW,SAAS;cAC5BC,MAAM,EAAEZ,SAAS,CAACa,cAAc;cAChCC,MAAM,EAAEd,SAAS,CAACe,cAAc;cAChCC,SAAS,EAAEhB,SAAS,CAACiB,WAAW;cAChCC,QAAQ,EAAElB,SAAS,CAACmB,WAAW;cAC/BC,eAAe,EAAEpB,SAAS,CAACqB,WAAW;cACtCC,eAAe,EAAEtB,SAAS,CAACuB,UAAU;cACrCC,eAAe,EAAExB,SAAS,CAACyB,UAAU;cACrCC,eAAe,EAAE1B,SAAS,CAAC2B,UAAU;cACrCC,QAAQ,EAAE5B,SAAS,CAAC6B,UAAU;cAC9BC,QAAQ,EAAE9B,SAAS,CAAC+B,UAAU;cAC9BC,YAAY,EAAEhC,SAAS,CAACiC,aAAa;cACrCC,uBAAuB,EAAElC,SAAS,CAACmC;aACtC,CAAC;UAAA;YAjBIvF,QAAQ,GAAAY,QAAA,CAAAhB,IAAA;YAAA,IAmBT,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC4F,QAAQ,CAACxF,QAAQ,CAACe,MAAM,CAAC;cAAAH,QAAA,CAAAlB,IAAA;cAAA;;YAAA,MACpC,IAAI6B,KAAK,4BAA0BvB,QAAQ,CAACe,MAAQ,CAAC;UAAA;YAAAH,QAAA,CAAAlB,IAAA;YAAA;UAAA;YAAAkB,QAAA,CAAAnB,IAAA;YAAAmB,QAAA,CAAAa,EAAA,GAAAb,QAAA;YAE/D6E,OAAO,CAACrF,KAAK,CAAC,iCAAiC,EAAEQ,QAAA,CAAAa,EAAA,CAAMiE,OAAO,CAAC;UAAA;UAAA;YAAA,OAAA9E,QAAA,CAAAc,IAAA;;SAAAvB,OAAA;KAEtE;IAAA,SA3BK8C,mBAAmBA,CAAAnB,EAAA,EAAAC,GAAA;MAAA,OAAAmB,oBAAA,CAAAtB,KAAA,OAAAC,SAAA;;IAAA,OAAnBoB,mBAAmB;;EAAAxE,MAAA,CA6BnBkH,eAAe;IAAA,IAAAC,gBAAA,gBAAA/G,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAArB,SAAAC,SAAsB6G,WAAmB,EAAEC,eAAsB,EAAEC,aAAoB;MAAA,IAAA1C,GAAA,EAAA2C,KAAA,EAAAC,qBAAA,EAAAC,OAAA;MAAA,OAAApH,mBAAA,GAAAQ,IAAA,UAAAC,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;UAAA;;YAE7E2D,GAAG,uBAAqBC,cAAc;YACxC0C,KAAK,0GAE8BH,WAAW;YAClD,IAAI;cACA,IAAIC,eAAe,IAAIC,aAAa,EAAE;gBAClCC,KAAK,4DAC8B,IAAIG,IAAI,CAACL,eAAe,CAAC,CAACM,WAAW,EAAE,CAACC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,yDAC1D,IAAIF,IAAI,CAACJ,aAAa,CAAC,CAACK,WAAW,EAAE,CAACC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,uBACtF;;aAER,CACD,OAAOjG,KAAK,EAAE;cACVqF,OAAO,CAACrF,KAAK,CAAC,sBAAsB,EAAEA,KAAK,CAAC;;YAC/CZ,SAAA,CAAAE,IAAA;YAAA,OAGS,IAAI,CAACsD,aAAa,CAACsD,GAAG,CAACjD,GAAG,EAAE;cAClCkD,MAAM,EAAE;gBAAEC,CAAC,EAAER;;aAChB,CAAC;UAAA;YAAAC,qBAAA,GAAAzG,SAAA,CAAAI,IAAA;YAHUsG,OAAO,GAAAD,qBAAA,CAAfrD,IAAI,CAAIsD,OAAO;YAAA,OAAA1G,SAAA,CAAAgC,MAAA,WAIZ0E,OAAO,CAACO,GAAG,CAAC,UAAAC,MAAM;cAAA,OAAIA,MAAM,CAACC,EAAE;cAAC;UAAA;UAAA;YAAA,OAAAnH,SAAA,CAAAkC,IAAA;;SAAA1C,QAAA;KAC1C;IAAA,SAvBK2G,eAAeA,CAAA3D,GAAA,EAAAL,GAAA,EAAAkB,GAAA;MAAA,OAAA+C,gBAAA,CAAAhE,KAAA,OAAAC,SAAA;;IAAA,OAAf8D,eAAe;;EAAAlH,MAAA,CAyBfmI,4BAA4B;IAAA,IAAAC,6BAAA,gBAAAhI,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAlC,SAAAmD,SAAmC4E,WAAmB;MAAA,IAAAzD,GAAA,EAAA2C,KAAA,EAAApD,IAAA,EAAAmE,UAAA,EAAAC,SAAA,EAAAC,KAAA,EAAA7D,SAAA;MAAA,OAAAtE,mBAAA,GAAAQ,IAAA,UAAA+C,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA7C,IAAA,GAAA6C,SAAA,CAAA5C,IAAA;UAAA;YAC5C2D,GAAG,uBAAqBC,cAAc;YAEtC0C,KAAK,uRAImDc,WAAW;YAAAxE,SAAA,CAAA5C,IAAA;YAAA,OAEtD,IAAI,CAACsD,aAAa,CAACsD,GAAG,CAACjD,GAAG,EAAE;cAAEkD,MAAM,EAAE;gBAAEC,CAAC,EAAER;;aAAS,CAAC;UAAA;YAAlEpD,IAAI,GAAAN,SAAA,CAAA1C,IAAA;YAENmH,UAAU,GAAG,EAAE;YAEnB,KAAAC,SAAA,GAAAE,+BAAA,CAAwBtE,IAAI,CAACA,IAAI,CAACsD,OAAO,KAAAe,KAAA,GAAAD,SAAA,IAAAG,IAAA,GAAE;cAAhC/D,SAAS,GAAA6D,KAAA,CAAAG,KAAA;cAChBL,UAAU,CAACM,IAAI,CAAC;gBACZxB,WAAW,EAAEzC,SAAS,CAACkE,YAAY;gBACnCC,EAAE,EAAEnE,SAAS,CAACuD,EAAE;gBAChBa,SAAS,EAAEpE,SAAS,CAACqE;eACxB,CAAC;;YACL,OAAAnF,SAAA,CAAAd,MAAA,WAEMuF,UAAU;UAAA;UAAA;YAAA,OAAAzE,SAAA,CAAAZ,IAAA;;SAAAQ,QAAA;KACpB;IAAA,SAtBK0E,4BAA4BA,CAAA9D,GAAA;MAAA,OAAA+D,6BAAA,CAAAjF,KAAA,OAAAC,SAAA;;IAAA,OAA5B+E,4BAA4B;;EAAAnI,MAAA,CAwB5BiJ,iBAAiB;IAAA,IAAAC,kBAAA,gBAAA9I,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAvB,SAAA6I,SAAwB/B,WAAmB,EAAEgC,MAAmC,EAAE/B,eAAsB,EAAEC,aAAoB;MAAA,IAAA+B,YAAA,EAAAC,QAAA,EAAA1E,GAAA,EAAA2E,UAAA,EAAAC,MAAA,EAAAC,WAAA,EAAAlC,KAAA,EAAAmC,sBAAA,EAAAjC,OAAA;MAAA,OAAApH,mBAAA,GAAAQ,IAAA,UAAA8I,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA5I,IAAA,GAAA4I,SAAA,CAAA3I,IAAA;UAAA;YAAA2I,SAAA,CAAA3I,IAAA;YAAA,OAC/F,IAAI,CAACiG,eAAe,CAACE,WAAW,EAAEC,eAAe,EAAEC,aAAa,CAAC;UAAA;YAAtF+B,YAAY,GAAAO,SAAA,CAAAzI,IAAA;YAEZmI,QAAQ,GAA2B,EAAE;YACrC1E,GAAG,uBAAqBC,cAAc;YAAA0E,UAAA,GAAAd,+BAAA,CAClBY,YAAY;UAAA;YAAA,KAAAG,MAAA,GAAAD,UAAA,IAAAb,IAAA;cAAAkB,SAAA,CAAA3I,IAAA;cAAA;;YAA3BwI,WAAW,GAAAD,MAAA,CAAAb,KAAA;YACdpB,KAAK,sCACQ,CAAA6B,MAAM,oBAANA,MAAM,CAAES,IAAI,CAAC,GAAG,CAAC,KAAI,kBAAkB,gGAExBJ,WAAW;YAAAG,SAAA,CAAA5I,IAAA;YAEvC,IAAIoI,MAAM,YAANA,MAAM,CAAEU,MAAM,EAAE;cAChBvC,KAAK,kDACgB,IAAIG,IAAI,CAACL,eAAe,CAAC,CAACM,WAAW,EAAE,CAACC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,iDACxD,IAAIF,IAAI,CAACJ,aAAa,CAAC,CAACK,WAAW,EAAE,CAACC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAG;;YAChFgC,SAAA,CAAA3I,IAAA;YAAA,OAIS,IAAI,CAACsD,aAAa,CAACsD,GAAG,CAAsCjD,GAAG,EAAE;cACvEkD,MAAM,EAAE;gBAAEC,CAAC,EAAER;;aAChB,CAAC;UAAA;YAAAmC,sBAAA,GAAAE,SAAA,CAAAzI,IAAA;YAHUsG,OAAO,GAAAiC,sBAAA,CAAfvF,IAAI,CAAIsD,OAAO;YAInB6B,QAAQ,CAACV,IAAI,CAAAzF,KAAA,CAAbmG,QAAQ,EAAS7B,OAAO,CAAC;YAAAmC,SAAA,CAAA3I,IAAA;YAAA;UAAA;YAAA2I,SAAA,CAAA5I,IAAA;YAAA4I,SAAA,CAAA5G,EAAA,GAAA4G,SAAA;YAEzB5C,OAAO,CAACrF,KAAK,oBAAAiI,SAAA,CAAA5G,EAAuB,CAAC;UAAA;YAAA4G,SAAA,CAAA3I,IAAA;YAAA;UAAA;YAAA,OAAA2I,SAAA,CAAA7G,MAAA,WAGtCuG,QAAQ,CAACtB,GAAG,CAAC+B,mBAAmB,CAAC;UAAA;UAAA;YAAA,OAAAH,SAAA,CAAA3G,IAAA;;SAAAkG,QAAA;KAC3C;IAAA,SA5BKF,iBAAiBA,CAAAe,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,IAAA;MAAA,OAAAjB,kBAAA,CAAA/F,KAAA,OAAAC,SAAA;;IAAA,OAAjB6F,iBAAiB;;EAAAjJ,MAAA,CA8BjBoK,aAAa;IAAA,IAAAC,cAAA,gBAAAjK,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAnB,SAAAgK;MAAA,IAAA1F,GAAA,EAAA2C,KAAA,EAAApD,IAAA,EAAAoG,UAAA,EAAAC,UAAA,EAAAC,MAAA,EAAAC,SAAA;MAAA,OAAArK,mBAAA,GAAAQ,IAAA,UAAA8J,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA5J,IAAA,GAAA4J,SAAA,CAAA3J,IAAA;UAAA;YACU2D,GAAG,uBAAqBC,cAAc;YAEtC0C,KAAK;YAAAqD,SAAA,CAAA3J,IAAA;YAAA,OAKQ,IAAI,CAACsD,aAAa,CAACsD,GAAG,CAACjD,GAAG,EAAE;cAAEkD,MAAM,EAAE;gBAAEC,CAAC,EAAER;;aAAS,CAAC;UAAA;YAAlEpD,IAAI,GAAAyG,SAAA,CAAAzJ,IAAA;YAENoJ,UAAU,GAAG,EAAE;YAEnB,KAAAC,UAAA,GAAA/B,+BAAA,CAAwBtE,IAAI,CAACA,IAAI,CAACsD,OAAO,KAAAgD,MAAA,GAAAD,UAAA,IAAA9B,IAAA,GAAE;cAAhCgC,SAAS,GAAAD,MAAA,CAAA9B,KAAA;cAChB4B,UAAU,CAAC3B,IAAI,CAAC;gBACZiC,IAAI,EAAEH,SAAS,CAACI,IAAI;gBACpBC,SAAS,EAAEL,SAAS,CAACM,YAAY;gBACjCC,OAAO,EAAEP,SAAS,CAACQ;eACtB,CAAC;;YACL,OAAAN,SAAA,CAAA7H,MAAA,WAEMwH,UAAU;UAAA;UAAA;YAAA,OAAAK,SAAA,CAAA3H,IAAA;;SAAAqH,QAAA;KACpB;IAAA,SArBKF,aAAaA;MAAA,OAAAC,cAAA,CAAAlH,KAAA,OAAAC,SAAA;;IAAA,OAAbgH,aAAa;;EAAApK,MAAA,CAuBbmL,sBAAsB;IAAA,IAAAC,uBAAA,gBAAAhL,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAA5B,SAAA+K,SACIC,IAAY,EACZC,QAAgB,EAChB9B,WAAmB;MAAA,IAAA+B,IAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAC,sBAAA,EAAAxH,IAAA,EAAAyH,iBAAA,EAAAC,aAAA;MAAA,OAAAxL,mBAAA,GAAAQ,IAAA,UAAAiL,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA/K,IAAA,GAAA+K,SAAA,CAAA9K,IAAA;UAAA;YAAA8K,SAAA,CAAA/K,IAAA;YAGTwK,IAAI,GAAG,IAAI1H,QAAQ,EAAE;YAC3B0H,IAAI,CAACxH,MAAM,CACP,gBAAgB,EAChBgI,IAAI,CAACC,SAAS,CAAC;cACXC,KAAK,EAAEX,QAAQ;cACfY,YAAY,EAAEZ;aACjB,CAAC,EACF;cAAEa,WAAW,EAAE;aAAoB,CACtC;YAEDZ,IAAI,CAACxH,MAAM,CAAC,aAAa,EAAEsH,IAAI,EAAE;cAC7BC,QAAQ,EAARA,QAAQ;cACRa,WAAW,EAAE;aAChB,CAAC;YAAAL,SAAA,CAAA9K,IAAA;YAAA,OACsB,IAAI,CAACsD,aAAa,CAACN,IAAI,qBACzBY,cAAc,+BAChC2G,IAAI,EACJ;cAAEpK,OAAO,EAAEoK,IAAI,CAACtH,UAAU;aAAI,CACjC;UAAA;YAJKuH,SAAS,GAAAM,SAAA,CAAA5K,IAAA;YAMTuK,SAAS,GAAGD,SAAS,CAACtH,IAAI,CAAC2E,EAAE;YAEnCiD,SAAA,CAAA9K,IAAA;YAAA,OACuB,IAAI,CAACsD,aAAa,CAACsD,GAAG,qBACvBhD,cAAc,aAChC;cACIiD,MAAM,EAAE;gBACJC,CAAC,gEAA8D2D,SAAS;;aAE/E,CACJ;UAAA;YAAAC,sBAAA,GAAAI,SAAA,CAAA5K,IAAA;YAPOgD,IAAI,GAAAwH,sBAAA,CAAJxH,IAAI;YAQNyH,iBAAiB,GAAGzH,IAAI,CAACsD,OAAO,CAAC,CAAC,CAAC,CAAC4E,iBAAiB;YAAAN,SAAA,CAAA9K,IAAA;YAAA,OAErD,IAAI,CAACsD,aAAa,CAACN,IAAI,qBACPY,cAAc,oCAChC;cACIwH,iBAAiB,EAAET,iBAAiB;cACpCU,cAAc,EAAE7C,WAAW;cAC3B8C,SAAS,EAAE,GAAG;cACdC,UAAU,EAAE;aACf,CACJ;UAAA;YAAAT,SAAA,CAAA9K,IAAA;YAAA;UAAA;YAAA8K,SAAA,CAAA/K,IAAA;YAAA+K,SAAA,CAAA/I,EAAA,GAAA+I,SAAA;YAED/E,OAAO,CAACrF,KAAK,CAAC,4BAA4B,EAAAoK,SAAA,CAAA/I,EAAA,aAAA6I,aAAA,GAAEE,SAAA,CAAA/I,EAAA,CAAKzB,QAAQ,qBAAbsK,aAAA,CAAe1H,IAAI,CAAC;YAChE6C,OAAO,CAACrF,KAAK,CAAC,oCAAoC,EAAAoK,SAAA,CAAA/I,EAAA,oBAAE+I,SAAA,CAAA/I,EAAA,CAAKiE,OAAO,CAAC;UAAA;UAAA;YAAA,OAAA8E,SAAA,CAAA9I,IAAA;;SAAAoI,QAAA;KAExE;IAAA,SApDKF,sBAAsBA,CAAAsB,IAAA,EAAAC,IAAA,EAAAC,IAAA;MAAA,OAAAvB,uBAAA,CAAAjI,KAAA,OAAAC,SAAA;;IAAA,OAAtB+H,sBAAsB;;EAAA,OAAA7G,iBAAA;AAAA;AAuDhC,SAASyF,mBAAmBA,CAAC6C,GAAyB;EAClD,OAAO;IACH9D,EAAE,EAAE8D,GAAG,CAAC1E,EAAE;IACVlD,IAAI,EAAE4H,GAAG,CAAC7H,OAAO;IACjBG,aAAa,EAAE0H,GAAG,CAAC3H,WAAW;IAC9BG,YAAY,EAAEwH,GAAG,CAACzH,kBAAkB;IACpCG,SAAS,EAAEsH,GAAG,CAACvH,OAAO;IACtBG,cAAc,EAAEoH,GAAG,CAACrH,MAAM;IAC1BG,cAAc,EAAEkH,GAAG,CAACnH,MAAM;IAC1BG,WAAW,EAAEgH,GAAG,CAACjH,SAAS;IAC1BG,WAAW,EAAE8G,GAAG,CAAC/G,QAAQ;IACzBG,WAAW,EAAE4G,GAAG,CAAC7G,eAAe;IAChCG,UAAU,EAAE0G,GAAG,CAAC3G,eAAe;IAC/BG,UAAU,EAAEwG,GAAG,CAACzG,eAAe;IAC/BG,UAAU,EAAEsG,GAAG,CAACvG,eAAe;IAC/BG,UAAU,EAAEoG,GAAG,CAACrG,QAAQ;IACxBG,UAAU,EAAEkG,GAAG,CAACnG,QAAQ;IACxBG,aAAa,EAAEgG,GAAG,CAACjG,YAAY;IAC/BG,uBAAuB,EAAE8F,GAAG,CAAC/F,uBAAuB;IACpDgG,YAAY,EAAED,GAAG,CAAC5D;GACrB;AACL;;IC7Oa8D,oBAAoB;EAG7B,SAAAA,qBAAYvI,aAA4B;IACpC,IAAI,CAACA,aAAa,GAAGA,aAAa;;EACrC,IAAAvE,MAAA,GAAA8M,oBAAA,CAAA7M,SAAA;EAAAD,MAAA,CAEK+M,kBAAkB;IAAA,IAAAC,mBAAA,gBAAA5M,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAxB,SAAAoB;MAAA,IAAAkD,GAAA,EAAA2C,KAAA,EAAAC,qBAAA,EAAAC,OAAA;MAAA,OAAApH,mBAAA,GAAAQ,IAAA,UAAAqB,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAnB,IAAA,GAAAmB,QAAA,CAAAlB,IAAA;UAAA;YAAAkB,QAAA,CAAAnB,IAAA;YAEc4D,GAAG,uBAAqBC,cAAc;YACtC0C,KAAK;YAAApF,QAAA,CAAAlB,IAAA;YAAA,OAOD,IAAI,CAACsD,aAAa,CAACsD,GAAG,CAACjD,GAAG,EAAE;cAClCkD,MAAM,EAAE;gBAAEC,CAAC,EAAER;;aAChB,CAAC;UAAA;YAAAC,qBAAA,GAAArF,QAAA,CAAAhB,IAAA;YAHUsG,OAAO,GAAAD,qBAAA,CAAfrD,IAAI,CAAIsD,OAAO;YAAA,OAAAtF,QAAA,CAAAY,MAAA,WAKZ0E,OAAO,CAACO,GAAG,CAACiF,cAAc,CAAC;UAAA;YAAA9K,QAAA,CAAAnB,IAAA;YAAAmB,QAAA,CAAAa,EAAA,GAAAb,QAAA;YAElC6E,OAAO,CAACrF,KAAK,CAAC,gCAAgC,EAAEQ,QAAA,CAAAa,EAAA,CAAMiE,OAAO,CAAC;YAAA,MAAA9E,QAAA,CAAAa,EAAA;UAAA;UAAA;YAAA,OAAAb,QAAA,CAAAc,IAAA;;SAAAvB,OAAA;KAGrE;IAAA,SAnBKqL,kBAAkBA;MAAA,OAAAC,mBAAA,CAAA7J,KAAA,OAAAC,SAAA;;IAAA,OAAlB2J,kBAAkB;;EAAA/M,MAAA,CAqBlBkN,wBAAwB;IAAA,IAAAC,yBAAA,gBAAA/M,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAA9B,SAAAC,SAA+B6M,KAAa;MAAA,IAAAxI,GAAA,EAAA2C,KAAA,EAAAmC,sBAAA,EAAAjC,OAAA;MAAA,OAAApH,mBAAA,GAAAQ,IAAA,UAAAC,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;UAAA;YAAAF,SAAA,CAAAC,IAAA;YAE9B4D,GAAG,uBAAqBC,cAAc;YACtC0C,KAAK,oLAGsC6F,KAAK;YAAArM,SAAA,CAAAE,IAAA;YAAA,OAI5C,IAAI,CAACsD,aAAa,CAACsD,GAAG,CAACjD,GAAG,EAAE;cAClCkD,MAAM,EAAE;gBAAEC,CAAC,EAAER;;aAChB,CAAC;UAAA;YAAAmC,sBAAA,GAAA3I,SAAA,CAAAI,IAAA;YAHUsG,OAAO,GAAAiC,sBAAA,CAAfvF,IAAI,CAAIsD,OAAO;YAAA,MAIfA,OAAO,CAACqC,MAAM,KAAK,CAAC;cAAA/I,SAAA,CAAAE,IAAA;cAAA;;YAAA,OAAAF,SAAA,CAAAgC,MAAA,WACb,IAAI;UAAA;YAAA,OAAAhC,SAAA,CAAAgC,MAAA,WAERkK,cAAc,CAACxF,OAAO,CAAC,CAAC,CAAC,CAAC;UAAA;YAAA1G,SAAA,CAAAC,IAAA;YAAAD,SAAA,CAAAiC,EAAA,GAAAjC,SAAA;YAEjCiG,OAAO,CAACrF,KAAK,CAAC,uCAAuC,EAAAZ,SAAA,CAAAiC,EAAO,CAAC;YAAA,MAAAjC,SAAA,CAAAiC,EAAA;UAAA;UAAA;YAAA,OAAAjC,SAAA,CAAAkC,IAAA;;SAAA1C,QAAA;KAGpE;IAAA,SArBK2M,wBAAwBA,CAAA7J,EAAA;MAAA,OAAA8J,yBAAA,CAAAhK,KAAA,OAAAC,SAAA;;IAAA,OAAxB8J,wBAAwB;;EAAA,OAAAJ,oBAAA;AAAA;AAwBlC,SAASG,cAAcA,CAACL,GAAQ;EAC5B,OAAO;IACH9D,EAAE,EAAE8D,GAAG,CAAC1E,EAAE;IACVmF,SAAS,EAAET,GAAG,CAACU,YAAY;IAC3BC,QAAQ,EAAEX,GAAG,CAACY,WAAW;IACzBJ,KAAK,EAAER,GAAG,CAACa,QAAQ;IACnBC,OAAO,EAAEd,GAAG,CAACe;GAChB;AACL;;IC5DaC,iBAAiB;EAG1B,SAAAA,kBAAYrJ,aAA4B;IACpC,IAAI,CAACA,aAAa,GAAGA,aAAa;;EACrC,IAAAvE,MAAA,GAAA4N,iBAAA,CAAA3N,SAAA;EAAAD,MAAA,CAEK6N,4BAA4B;IAAA,IAAAC,6BAAA,gBAAA1N,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAlC,SAAAoB,QACIqM,cAAuB,EACvBC,OAAoE;MAAA,IAAAC,kBAAA,EAAAC,OAAA,EAAAC,QAAA,EAAAC,MAAA,EAAAC,mBAAA,EAAAC,aAAA,EAAAC,WAAA,EAAA3J,GAAA,EAAA2C,KAAA;MAAA,OAAAlH,mBAAA,GAAAQ,IAAA,UAAAqB,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAnB,IAAA,GAAAmB,QAAA,CAAAlB,IAAA;UAAA;YAAAkB,QAAA,CAAAnB,IAAA;YAG1DkN,OAAO,GAAa,EAAE;YAC5B,IAAIH,cAAc,EAAE;cAChBG,OAAO,CAACtF,IAAI,sBAAoBmF,cAAc,MAAG,CAAC;;YAEtD,IAAIC,OAAO,YAAPA,OAAO,CAAEjD,SAAS,EAAE;cACdoD,QAAQ,GAAGH,OAAO,CAACjD,SAAS,CAACpD,WAAW,EAAE,CAAC6G,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;cAC9DN,OAAO,CAACtF,IAAI,oBAAkBuF,QAAU,CAAC;;YAE7C,IAAIH,OAAO,YAAPA,OAAO,CAAE/C,OAAO,EAAE;cACZmD,MAAM,GAAGJ,OAAO,CAAC/C,OAAO,CAACtD,WAAW,EAAE,CAAC6G,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;cAC1DN,OAAO,CAACtF,IAAI,sBAAoBwF,MAAQ,CAAC;;YAG7C,IAAIJ,OAAO,aAAAC,kBAAA,GAAPD,OAAO,CAAES,SAAS,aAAlBR,kBAAA,CAAoBnE,MAAM,EAAE;cACtBwE,aAAa,GAAGN,OAAO,aAAAK,mBAAA,GAAPL,OAAO,CAAES,SAAS,qBAAlBJ,mBAAA,CAAoBrG,GAAG,CAAC,UAAA0G,CAAC;gBAAA,aAAQA,CAAC;eAAG,CAAC,CAAC7E,IAAI,CAAC,IAAI,CAAC;cACvEqE,OAAO,CAACtF,IAAI,oBAAkB0F,aAAa,MAAG,CAAC;;YAE7CC,WAAW,GAAGL,OAAO,CAACpE,MAAM,cAAYoE,OAAO,CAACrE,IAAI,CAAC,OAAO,CAAC,GAAK,EAAE;YACpEjF,GAAG,uBAAqBC,cAAc;YACtC0C,KAAK,wLAAsLgH,WAAW;YAAApM,QAAA,CAAAlB,IAAA;YAAA,OAC/L,IAAI,CAACsD,aAAa,CAC1BsD,GAAG,CAACjD,GAAG,EAAE;cACNkD,MAAM,EAAE;gBAAEC,CAAC,EAAER;;aAChB,CAAC,CACDoH,IAAI,CAAC,UAAAlN,IAAA;cAAA,IAAWgG,OAAO,GAAAhG,IAAA,CAAf0C,IAAI,CAAIsD,OAAO;cAAA,OACpBA,OAAO,CAACO,GAAG,CACP,UAACC,MAAM;gBAAA,OAAiB;kBACpBa,EAAE,EAAEb,MAAM,CAACC,EAAE;kBACb2C,IAAI,EAAE5C,MAAM,CAAC6C,IAAI;kBACjB8D,eAAe,EAAE3G,MAAM,CAAC4G,aAAa;kBACrCC,MAAM,EAAE7G,MAAM,CAAC8G,SAAS;kBACxBC,iBAAiB,EAAE/G,MAAM,CAACgH,eAAe;kBACzCC,IAAI,EAAEjH,MAAM,CAACkH,0BAA0B;kBACvCpB,cAAc,EAAE9F,MAAM,CAACmH,YAAY;kBACnCrE,SAAS,EAAE,IAAIrD,IAAI,CAACO,MAAM,CAACoH,YAAY,CAAC;kBACxCpE,OAAO,EAAE,IAAIvD,IAAI,CAACO,MAAM,CAACiD,UAAU,CAAC;kBACpCoE,SAAS,EAAE,IAAI5H,IAAI,CAACO,MAAM,CAACsH,WAAW,CAAC;kBACvCxG,SAAS,EAAE,IAAIrB,IAAI,CAACO,MAAM,CAACe,gBAAgB;iBAC9C;eAAC,CACL;cACJ;UAAA;YAAA,OAAA7G,QAAA,CAAAY,MAAA,WAAAZ,QAAA,CAAAhB,IAAA;UAAA;YAAAgB,QAAA,CAAAnB,IAAA;YAAAmB,QAAA,CAAAa,EAAA,GAAAb,QAAA;YAEL6E,OAAO,CAACrF,KAAK,CAAC,8BAA8B,EAAEQ,QAAA,CAAAa,EAAA,CAAMiE,OAAO,CAAC;YAAA,MAAA9E,QAAA,CAAAa,EAAA;UAAA;UAAA;YAAA,OAAAb,QAAA,CAAAc,IAAA;;SAAAvB,OAAA;KAGnE;IAAA,SAlDKmM,4BAA4BA,CAAAxK,EAAA,EAAAC,GAAA;MAAA,OAAAwK,6BAAA,CAAA3K,KAAA,OAAAC,SAAA;;IAAA,OAA5ByK,4BAA4B;;EAAA,OAAAD,iBAAA;AAAA;;ICPzB4B,iBAAiB;EAG1B,SAAAA,kBAAYjL,aAA4B;IACpC,IAAI,CAACA,aAAa,GAAGA,aAAa;;EACrC,IAAAvE,MAAA,GAAAwP,iBAAA,CAAAvP,SAAA;EAAAD,MAAA,CAEKyP,uCAAuC;IAAA,IAAAC,wCAAA,gBAAAtP,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAA7C,SAAAoB,QAA8CiO,WAAmB;MAAA,IAAA/K,GAAA,EAAA2C,KAAA,EAAApD,IAAA,EAAAyL,YAAA,EAAArH,SAAA,EAAAC,KAAA,EAAA+B,UAAA;MAAA,OAAAlK,mBAAA,GAAAQ,IAAA,UAAAqB,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAnB,IAAA,GAAAmB,QAAA,CAAAlB,IAAA;UAAA;YACvD2D,GAAG,uBAAqBC,cAAc;YAEtC0C,KAAK,wHAE4BoI,WAAW;YAAAxN,QAAA,CAAAlB,IAAA;YAAA,OAE/B,IAAI,CAACsD,aAAa,CAACsD,GAAG,CAACjD,GAAG,EAAE;cAAEkD,MAAM,EAAE;gBAAEC,CAAC,EAAER;;aAAS,CAAC;UAAA;YAAlEpD,IAAI,GAAAhC,QAAA,CAAAhB,IAAA;YAENyO,YAAY,GAAG,EAAE;YAErB,KAAArH,SAAA,GAAAE,+BAAA,CAAyBtE,IAAI,CAACA,IAAI,CAACsD,OAAO,KAAAe,KAAA,GAAAD,SAAA,IAAAG,IAAA,GAAE;cAAjC6B,UAAU,GAAA/B,KAAA,CAAAG,KAAA;cACjBiH,YAAY,CAAChH,IAAI,CAAC;gBACda,WAAW,EAAEc,UAAU,CAACrC,EAAE;gBAC1B2H,WAAW,EAAEtF,UAAU,CAACuF;eAC3B,CAAC;;YACL,OAAA3N,QAAA,CAAAY,MAAA,WAEM6M,YAAY;UAAA;UAAA;YAAA,OAAAzN,QAAA,CAAAc,IAAA;;SAAAvB,OAAA;KACtB;IAAA,SAnBK+N,uCAAuCA,CAAApM,EAAA;MAAA,OAAAqM,wCAAA,CAAAvM,KAAA,OAAAC,SAAA;;IAAA,OAAvCqM,uCAAuC;;EAAAzP,MAAA,CAqBvC+P,gCAAgC;IAAA,IAAAC,iCAAA,gBAAA5P,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAtC,SAAAC,SAAuC0P,YAAsB;MAAA,IAAArL,GAAA,EAAA2C,KAAA,EAAApD,IAAA,EAAA+L,cAAA,EAAA3G,UAAA,EAAAC,MAAA,EAAAkB,SAAA;MAAA,OAAArK,mBAAA,GAAAQ,IAAA,UAAAC,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;UAAA;YACnD2D,GAAG,uBAAqBC,cAAc;YAEtC0C,KAAK,0HAEkB4I,iBAAiB,CAACF,YAAY,CAAC;YAAAlP,SAAA,CAAAE,IAAA;YAAA,OAEzC,IAAI,CAACsD,aAAa,CAACsD,GAAG,CAACjD,GAAG,EAAE;cAAEkD,MAAM,EAAE;gBAAEC,CAAC,EAAER;;aAAS,CAAC;UAAA;YAAlEpD,IAAI,GAAApD,SAAA,CAAAI,IAAA;YAEN+O,cAAc,GAAG,EAAE;YAEvB,KAAA3G,UAAA,GAAAd,+BAAA,CAAwBtE,IAAI,CAACA,IAAI,CAACsD,OAAO,KAAA+B,MAAA,GAAAD,UAAA,IAAAb,IAAA,GAAE;cAAhCgC,SAAS,GAAAlB,MAAA,CAAAb,KAAA;cAChBuH,cAAc,CAACtH,IAAI,CAAC;gBAChBiH,WAAW,EAAEnF,SAAS,CAACxC,EAAE;gBACzB6C,SAAS,EAAE,IAAIrD,IAAI,CAACgD,SAAS,CAACM,YAAY,CAAC;gBAC3CC,OAAO,EAAE,IAAIvD,IAAI,CAACgD,SAAS,CAACQ,UAAU;eACzC,CAAC;;YACL,OAAAnK,SAAA,CAAAgC,MAAA,WAEMmN,cAAc;UAAA;UAAA;YAAA,OAAAnP,SAAA,CAAAkC,IAAA;;SAAA1C,QAAA;KACxB;IAAA,SApBKwP,gCAAgCA,CAAAzM,GAAA;MAAA,OAAA0M,iCAAA,CAAA7M,KAAA,OAAAC,SAAA;;IAAA,OAAhC2M,gCAAgC;;EAAA,OAAAP,iBAAA;AAAA;AAuB1C,IAAMW,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIF,YAAsB;EAAA,cAAUA,YAAY,CAACpG,IAAI,CAAC,QAAQ,CAAC;AAAA,CAAI;;AC7C1F,IAAMuG,iBAAiB,GAAG;EACtBC,OAAO,EAAE,yBAAyB;EAClC,UAAU,EAAE,mBAAmB;EAC/BC,KAAK,EAAE,2BAA2B;EAClCC,cAAc,EAAE;CACV;AAIV,IAAaC,eAAe;EAGxB,SAAAA,gBAAYjM,aAA4B;IACpC,IAAI,CAACA,aAAa,GAAGA,aAAa;;EACrC,IAAAvE,MAAA,GAAAwQ,eAAA,CAAAvQ,SAAA;EAAAD,MAAA,CAEKyQ,kBAAkB;IAAA,IAAAC,mBAAA,gBAAAtQ,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAxB,SAAAoB,QAAyB+H,WAAmB;MAAA,IAAA7E,GAAA,EAAA4C,qBAAA,EAAArD,IAAA;MAAA,OAAA9D,mBAAA,GAAAQ,IAAA,UAAAqB,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAnB,IAAA,GAAAmB,QAAA,CAAAlB,IAAA;UAAA;YAAAkB,QAAA,CAAAnB,IAAA;YAE9B4D,GAAG,uBAAqBC,cAAc,+BAA0B4E,WAAW;YAAAtH,QAAA,CAAAlB,IAAA;YAAA,OAC1D,IAAI,CAACsD,aAAa,CAACsD,GAAG,CAACjD,GAAG,EAAE;cAC/CkD,MAAM,EAAE;gBACJsB,MAAM,EAAE;;aAEf,CAAC;UAAA;YAAA5B,qBAAA,GAAArF,QAAA,CAAAhB,IAAA;YAJMgD,IAAI,GAAAqD,qBAAA,CAAJrD,IAAI;YAAA,IAKPA,IAAI;cAAAhC,QAAA,CAAAlB,IAAA;cAAA;;YAAA,OAAAkB,QAAA,CAAAY,MAAA,WAAS,IAAI;UAAA;YAAA,OAAAZ,QAAA,CAAAY,MAAA,WACf4N,SAAS,CAACxM,IAAI,CAAC;UAAA;YAAAhC,QAAA,CAAAnB,IAAA;YAAAmB,QAAA,CAAAa,EAAA,GAAAb,QAAA;YAEtB6E,OAAO,CAACrF,KAAK,CAAC,gCAAgC,EAAAQ,QAAA,CAAAa,EAAK,CAAC;YAAA,MAAAb,QAAA,CAAAa,EAAA;UAAA;UAAA;YAAA,OAAAb,QAAA,CAAAc,IAAA;;SAAAvB,OAAA;KAG3D;IAAA,SAdK+O,kBAAkBA,CAAApN,EAAA;MAAA,OAAAqN,mBAAA,CAAAvN,KAAA,OAAAC,SAAA;;IAAA,OAAlBqN,kBAAkB;;EAAAzQ,MAAA,CAgBV4Q,cAAc;IAAA,IAAAC,eAAA,gBAAAzQ,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAApB,SAAAC,SAAqBkJ,WAAmB,EAAEqH,IAA4B;MAAA,IAAAlM,GAAA,EAAAmM,GAAA;MAAA,OAAA1Q,mBAAA,GAAAQ,IAAA,UAAAC,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;UAAA;YACpE2D,GAAG,uBAAqBC,cAAc,+BAA0B4E,WAAW;YAAA1I,SAAA,CAAAE,IAAA;YAAA,OAC/D,IAAI,CAACsD,aAAa,CAACO,KAAK,CAACF,GAAG,EAAEkM,IAAI,CAAC;UAAA;YAA/CC,GAAG,GAAAhQ,SAAA,CAAAI,IAAA;YAAA,IACJ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC4F,QAAQ,CAACgK,GAAG,CAACzO,MAAM,CAAC;cAAAvB,SAAA,CAAAE,IAAA;cAAA;;YAAA,MAC/B,IAAI6B,KAAK,wBAAsBiO,GAAG,CAACzO,MAAQ,CAAC;UAAA;UAAA;YAAA,OAAAvB,SAAA,CAAAkC,IAAA;;SAAA1C,QAAA;KAEzD;IAAA,SANaqQ,cAAcA,CAAAtN,GAAA,EAAAC,GAAA;MAAA,OAAAsN,eAAA,CAAA1N,KAAA,OAAAC,SAAA;;IAAA,OAAdwN,cAAc;;EAAA5Q,MAAA,CAQtBgR,aAAa;IAAA,IAAAC,cAAA,gBAAA7Q,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAnB,SAAAmD,SAAoByN,OAAwB;MAAA,IAAAC,oBAAA;MAAA,IAAA1H,WAAA,EAAA2H,MAAA,EAAAC,KAAA;MAAA,OAAAhR,mBAAA,GAAAQ,IAAA,UAAA+C,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA7C,IAAA,GAAA6C,SAAA,CAAA5C,IAAA;UAAA;YAClCwI,WAAW,GAAGyH,OAAO,CAACI,iBAAiB;YACvCF,MAAM,GAAGG,MAAM,CAACL,OAAO,CAACE,MAAM,CAAC;YAC/BC,KAAK,GAAGjB,iBAAiB,CAACc,OAAO,CAACM,IAA4B,CAAC;YAAA,IAChEH,KAAK;cAAAxN,SAAA,CAAA5C,IAAA;cAAA;;YAAA,MACA,IAAI6B,KAAK,gCAA8BoO,OAAO,CAACM,IAAM,CAAC;UAAA;YAAA3N,SAAA,CAAA5C,IAAA;YAAA,OAG1D,IAAI,CAAC2P,cAAc,CAACnH,WAAW,GAAA0H,oBAAA,OAAAA,oBAAA,CAAKE,KAAK,IAAGD,MAAM,EAAAD,oBAAA,EAAG;UAAA;UAAA;YAAA,OAAAtN,SAAA,CAAAZ,IAAA;;SAAAQ,QAAA;KAC9D;IAAA,SATKuN,aAAaA,CAAA9N,GAAA;MAAA,OAAA+N,cAAA,CAAA9N,KAAA,OAAAC,SAAA;;IAAA,OAAb4N,aAAa;;EAAA,OAAAR,eAAA;AAAA;AAYvB,SAASG,SAASA,CAAC/D,GAAQ;;EACvB,OAAO;IACH6E,YAAY,EAAEF,MAAM,EAAAG,qBAAA,GAAC9E,GAAG,CAAC+E,yBAAyB,YAAAD,qBAAA,GAAI,CAAC,CAAC;IACxDE,OAAO,EAAEL,MAAM,EAAAM,qBAAA,GAACjF,GAAG,CAACkF,iBAAiB,YAAAD,qBAAA,GAAI,CAAC,CAAC;IAC3CE,OAAO,EAAER,MAAM,EAAAS,qBAAA,GAACpF,GAAG,CAACqF,uBAAuB,YAAAD,qBAAA,GAAI,CAAC,CAAC;IACjDE,cAAc,EAAEX,MAAM,EAAAY,kBAAA,GAACvF,GAAG,CAACwF,aAAa,YAAAD,kBAAA,GAAI,CAAC;GAChD;AACL;;AC5DO,IAAMtN,cAAc,GAAW,OAAO;AAE7C,IAAawN,WAAW;EAAxB,SAAAA;IACY,aAAQ,GAA4BzS,SAAS;IAC7C,kBAAa,GAAkBF,KAAK,CAACC,MAAM,EAAE;;EA6DxD,IAAAK,MAAA,GAAAqS,WAAA,CAAApS,SAAA;EAAAD,MAAA,CApDSsS,IAAI;IAAA,IAAAC,KAAA,gBAAAnS,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAV,SAAAoB,QACIjC,OAAe,EACf+S,UAAkB,EAClBC,cAAsB,EACtB/R,cAA0E;MAAA,OAAAL,mBAAA,GAAAQ,IAAA,UAAAqB,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAnB,IAAA,GAAAmB,QAAA,CAAAlB,IAAA;UAAA;YAE1E,IAAI,CAACxB,OAAO,GAAGA,OAAO;YACtB,IAAI,CAAC8E,aAAa,CAACzE,QAAQ,CAACC,OAAO,GAAGN,OAAO;YAC7C,IAAI,CAACiT,aAAa,GAAG,IAAInT,eAAe,CAAC,IAAI,CAACgF,aAAa,EAAE,IAAI,CAAC9E,OAAO,CAAC;YAC1E,IAAI,CAACkT,eAAe,GAAG,IAAIrO,iBAAiB,CAAC,IAAI,CAACC,aAAa,CAAC;YAChE,IAAI,CAACqO,eAAe,GAAG,IAAIhF,iBAAiB,CAAC,IAAI,CAACrJ,aAAa,CAAC;YAChE,IAAI,CAACsO,kBAAkB,GAAG,IAAI/F,oBAAoB,CAAC,IAAI,CAACvI,aAAa,CAAC;YACtE,IAAI,CAACuO,eAAe,GAAG,IAAItD,iBAAiB,CAAC,IAAI,CAACjL,aAAa,CAAC;YAChE,IAAI,CAACwO,aAAa,GAAG,IAAIvC,eAAe,CAAC,IAAI,CAACjM,aAAa,CAAC;;YAC5DpC,QAAA,CAAAlB,IAAA;YAAA,OACM,IAAI,CAACyR,aAAa,CAACxS,cAAc,CAACsS,UAAU,EAAEC,cAAc,EAAE/R,cAAc,CAAC;UAAA;UAAA;YAAA,OAAAyB,QAAA,CAAAc,IAAA;;SAAAvB,OAAA;KACtF;IAAA,SAhBK4Q,IAAIA,CAAAjP,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAL,GAAA;MAAA,OAAAqP,KAAA,CAAApP,KAAA,OAAAC,SAAA;;IAAA,OAAJkP,IAAI;;EAAAtS,MAAA,CAkBVgT,WAAW,GAAX,SAAAA,WAAWA,CAACC,QAAqB;IAC7B,IAAI,CAACA,QAAQ,GAAGA,QAAQ;GAC3B;EAAAjT,MAAA,CACDkT,WAAW,GAAX,SAAAA,WAAWA;IACP,IAAI,CAAC,IAAI,CAACD,QAAQ,EAAE;MAChB,MAAM,IAAInQ,KAAK,CAAC,uCAAuC,CAAC;;IAE5D,OAAO,IAAI,CAACmQ,QAAQ;GACvB;EAAAjT,MAAA,CAEKmT,UAAU;IAAA,IAAAC,WAAA,gBAAAhT,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAhB,SAAAC;MAAA,IAAAqE,GAAA,EAAA2C,KAAA;MAAA,OAAAlH,mBAAA,GAAAQ,IAAA,UAAAC,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;UAAA;YAAAF,SAAA,CAAAC,IAAA;YAEc4D,GAAG,uBAAqBC,cAAc;YACtC0C,KAAK;YAAA,OAAAxG,SAAA,CAAAgC,MAAA,WAIJ,IAAI,CAACwB,aAAa,CACpBsD,GAAG,CAACjD,GAAG,EAAE;cACNkD,MAAM,EAAE;gBAAEC,CAAC,EAAER;;aAChB,CAAC,CACDoH,IAAI,CAAC,UAAAlN,IAAA;cAAA,IAAWgG,OAAO,GAAAhG,IAAA,CAAf0C,IAAI,CAAIsD,OAAO;cAAA,OACpBA,OAAO,CAACO,GAAG,CACP,UAACC,MAAM;gBAAA,OAAY;kBACfoL,KAAK,EAAEpL,MAAM,CAACqL,KAAK;kBACnB3K,KAAK,EAAEV,MAAM,CAACsL;iBACjB;eAAC,CACL;cACJ;UAAA;YAAAxS,SAAA,CAAAC,IAAA;YAAAD,SAAA,CAAAiC,EAAA,GAAAjC,SAAA;YAELiG,OAAO,CAACrF,KAAK,CAAC,wBAAwB,EAAEZ,SAAA,CAAAiC,EAAA,CAAMiE,OAAO,CAAC;YAAA,MAAAlG,SAAA,CAAAiC,EAAA;UAAA;UAAA;YAAA,OAAAjC,SAAA,CAAAkC,IAAA;;SAAA1C,QAAA;KAG7D;IAAA,SAvBK4S,UAAUA;MAAA,OAAAC,WAAA,CAAAjQ,KAAA,OAAAC,SAAA;;IAAA,OAAV+P,UAAU;;EAAA,OAAAd,WAAA;AAAA;;IC9CPmB,kBAAkB;EAS3B,SAAAA,mBACIhU,0BAAyC,EACzCC,OAAe,EACf2N,KAAa,EACbqG,QAAgB,EAChBjC;QAAAA;MAAAA,OAA0B,MAAM;;IAbpC,uBAAkB,GAAkB9R,KAAK,CAACC,MAAM,EAAE;IAElD,UAAK,GAAuBC,SAAS;IAC7B,wBAAmB,GAA2B,IAAI;IAYtD,IAAI,CAACJ,0BAA0B,GAAGA,0BAA0B;IAE5DkU,UAAU,CAAC,IAAI,CAAC7T,kBAAkB,EAAE;MAChC8T,OAAO,EAAE,EAAE;MACXC,UAAU,EAAE,SAAZA,UAAUA,CAAEC,UAAU;QAClB,OAAOC,IAAI,CAACC,GAAG,CAAC,IAAI,GAAGD,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEH,UAAU,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;;KAEjE,CAAC;IAEF,IAAI,CAACzG,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACqG,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACjC,IAAI,GAAGA,IAAI;IAChB,IAAI,CAAC3R,kBAAkB,CAACC,QAAQ,CAACC,OAAO,GAAGN,OAAO;;EACrD,IAAAO,MAAA,GAAAwT,kBAAA,CAAAvT,SAAA;EAAAD,MAAA,CAEKE,cAAc;IAAA,IAAAC,eAAA,gBAAAC,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAApB,SAAAC;MAAA,IAAAI,KAAA;MAAA,IAAAC,KAAA;MAAA,OAAAP,mBAAA,GAAAQ,IAAA,UAAAC,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;UAAA;YAAAF,SAAA,CAAAE,IAAA;YAAA,OACwB,IAAI,CAACgT,KAAK,EAAE;UAAA;YAA1BrT,KAAK,GAAAG,SAAA,CAAAI,IAAA;YAEX,IAAI,CAAC3B,0BAA0B,CAACM,QAAQ,CAACsB,OAAO,CAACC,MAAM,CAAC,cAAc,CAAC,GAAGT,KAAK;YAE/E,IAAI,CAACpB,0BAA0B,CAAC8B,YAAY,CAACC,QAAQ,CAACC,GAAG,CACrD,UAAAD,QAAQ;cAAA,OAAIA,QAAQ;;cAAA,IAAAE,IAAA,GAAArB,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CACpB,SAAAoB,QAAMC,KAAK;gBAAA,IAAAC,eAAA;gBAAA,IAAAC,eAAA,EAAAI,QAAA;gBAAA,OAAA5B,mBAAA,GAAAQ,IAAA,UAAAqB,SAAAC,QAAA;kBAAA,kBAAAA,QAAA,CAAAnB,IAAA,GAAAmB,QAAA,CAAAlB,IAAA;oBAAA;sBACDY,eAAe,GAAGF,KAAK,CAACS,MAAM;sBACpCP,eAAe,CAACQ,WAAW,GAAGR,eAAe,CAACQ,WAAW,IAAI,CAAC;sBAAA,MAE1D,EAAAT,eAAA,GAAAD,KAAK,CAACJ,QAAQ,qBAAdK,eAAA,CAAgBU,MAAM,MAAK,GAAG,IAAIT,eAAe,CAACQ,WAAW,GAAG,CAAC;wBAAAF,QAAA,CAAAlB,IAAA;wBAAA;;sBACjEY,eAAe,CAACQ,WAAW,EAAE;sBAAAF,QAAA,CAAAnB,IAAA;sBAEzB,IAAI,CAACL,KAAI,CAAC4B,mBAAmB,EAAE;wBAC3B5B,KAAI,CAAC4B,mBAAmB,GAAG5B,KAAI,CAACsT,KAAK,EAAE;;sBAC1C9R,QAAA,CAAAlB,IAAA;sBAAA,OACsBN,KAAI,CAAC4B,mBAAmB;oBAAA;sBAAzCN,QAAQ,GAAAE,QAAA,CAAAhB,IAAA;sBACdR,KAAI,CAAC4B,mBAAmB,GAAG,IAAI;sBAE/B5B,KAAI,CAACnB,0BAA0B,CAACM,QAAQ,CAACsB,OAAO,CAACC,MAAM,CAAC,cAAc,CAAC,GACnEY,QAAQ;sBAAAE,QAAA,CAAAlB,IAAA;sBAAA,OAECN,KAAI,CAACnB,0BAA0B,CAACqC,eAAe,CAAC;oBAAA;sBAAA,OAAAM,QAAA,CAAAY,MAAA,WAAAZ,QAAA,CAAAhB,IAAA;oBAAA;sBAAAgB,QAAA,CAAAnB,IAAA;sBAAAmB,QAAA,CAAAa,EAAA,GAAAb,QAAA;sBAE7DxB,KAAI,CAAC4B,mBAAmB,GAAG,IAAI;sBAAA,OAAAJ,QAAA,CAAAY,MAAA,WACxBN,OAAO,CAACG,MAAM,CAAAT,QAAA,CAAAa,EAAa,CAAC;oBAAA;sBAAA,OAAAb,QAAA,CAAAY,MAAA,WAGpCN,OAAO,CAACG,MAAM,CAACjB,KAAK,CAAC;oBAAA;oBAAA;sBAAA,OAAAQ,QAAA,CAAAc,IAAA;;mBAAAvB,OAAA;eAC/B;cAAA,iBAAA2B,EAAA;gBAAA,OAAA5B,IAAA,CAAA0B,KAAA,OAAAC,SAAA;;gBACJ;UAAA;UAAA;YAAA,OAAArC,SAAA,CAAAkC,IAAA;;SAAA1C,QAAA;KACJ;IAAA,SAhCKL,cAAcA;MAAA,OAAAC,eAAA,CAAAgD,KAAA,OAAAC,SAAA;;IAAA,OAAdlD,cAAc;;EAAAF,MAAA,CAiCNiU,KAAK;IAAA,IAAAC,MAAA,gBAAA9T,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAX,SAAAmD;MAAA,IAAAC,cAAA;MAAA,IAAA8H,IAAA,EAAAjK,QAAA,EAAAX,KAAA;MAAA,OAAAP,mBAAA,GAAAQ,IAAA,UAAA+C,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA7C,IAAA,GAAA6C,SAAA,CAAA5C,IAAA;UAAA;YACEuK,IAAI,GAAG,IAAI1H,QAAQ,EAAE;YAC3B0H,IAAI,CAACxH,MAAM,CAAC,OAAO,EAAE,IAAI,CAACoJ,KAAK,CAAC;YAChC5B,IAAI,CAACxH,MAAM,CAAC,UAAU,EAAE,IAAI,CAACyP,QAAQ,CAAC;YACtCjI,IAAI,CAACxH,MAAM,CAAC,MAAM,EAAE,IAAI,CAACwN,IAAI,CAAC;YAAA3N,SAAA,CAAA5C,IAAA;YAAA,OAEP,IAAI,CAACpB,kBAAkB,CAACoE,IAAI,CAAC,WAAW,EAAEuH,IAAI,EAAE;cACnEpK,OAAO,EAAEoK,IAAI,CAACtH,UAAU;aAC3B,CAAC;UAAA;YAFI3C,QAAQ,GAAAsC,SAAA,CAAA1C,IAAA;YAGRP,KAAK,GAAGW,QAAQ,aAAAmC,cAAA,GAARnC,QAAQ,CAAE4C,IAAI,cAAAT,cAAA,GAAdA,cAAA,CAAgBS,IAAI,qBAApBT,cAAA,CAAsB9C,KAAK;YAAA,IACpCA,KAAK;cAAAiD,SAAA,CAAA5C,IAAA;cAAA;;YAAA,MACA,IAAI6B,KAAK,CAAC,wCAAwC,CAAC;UAAA;YAE7D,IAAI,CAAClC,KAAK,GAAGA,KAAK;YAAA,OAAAiD,SAAA,CAAAd,MAAA,WACXnC,KAAK;UAAA;UAAA;YAAA,OAAAiD,SAAA,CAAAZ,IAAA;;SAAAQ,QAAA;KACf;IAAA,SAfawQ,KAAKA;MAAA,OAAAC,MAAA,CAAA/Q,KAAA,OAAAC,SAAA;;IAAA,OAAL6Q,KAAK;;EAAA,OAAAT,kBAAA;AAAA;;ICzDVW,uBAAuB;EAGhC,SAAAA,wBAAY5P,aAA4B;IACpC,IAAI,CAAC7E,KAAK,GAAG6E,aAAa;;EAC7B,IAAAvE,MAAA,GAAAmU,uBAAA,CAAAlU,SAAA;EAAAD,MAAA,CACKoU,qBAAqB;IAAA,IAAAC,sBAAA,gBAAAjU,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAA3B,SAAAoB,QAA4B4S;;;;;gBAAAA;cAAAA,WAAmB,CAAC;;YACxCC,aAAa,GAAwB,EAAE;YACvCC,IAAI,GAAG,CAAC;YACRC,QAAQ,GAAG,IAAI;UAAA;YAAA,KAEZA,QAAQ;cAAAtS,QAAA,CAAAlB,IAAA;cAAA;;YAAAkB,QAAA,CAAAlB,IAAA;YAAA,OACY,IAAI,CAACvB,KAAK,CAACmI,GAAG,CAAC,cAAc,EAAE;cAClDC,MAAM,EAAE;gBACJ4M,SAAS,EAAEJ,QAAQ;gBACnBE,IAAI,EAAJA;;aAEP,CAAC;UAAA;YALIjT,QAAQ,GAAAY,QAAA,CAAAhB,IAAA;YAMRgD,IAAI,GAAG5C,QAAQ,aAAAmC,cAAA,GAARnC,QAAQ,CAAE4C,IAAI,qBAAdT,cAAA,CAAgBS,IAAI;YAAA,MAC7B,EAACA,IAAI,YAAJA,IAAI,CAAEA,IAAI,KAAI,CAACwQ,KAAK,CAACC,OAAO,CAACzQ,IAAI,CAACA,IAAI,CAAC;cAAAhC,QAAA,CAAAlB,IAAA;cAAA;;YAAA,MAClC,IAAI6B,KAAK,CAAC,uBAAuB,CAAC;UAAA;YAGtC+R,iBAAiB,GAAG1Q,IAAI,CAACA,IAAI,CAAC6D,GAAG,CACnC,UAAC0G,CAAM;cAAA,OAAyB;gBAC5B5F,EAAE,EAAE4F,CAAC,CAAC5F,EAAE;gBACRgM,SAAS,EAAEpG,CAAC,CAACoG,SAAS;gBACtBC,QAAQ,EAAErG,CAAC,CAACqG,QAAQ;gBACpB3H,KAAK,EAAEsB,CAAC,CAACtB,KAAK;gBACd4H,iBAAiB,EAAEtG,CAAC,CAACsG;eACxB;aAAC,CACL;YAEDT,aAAa,CAAC3L,IAAI,CAAAzF,KAAA,CAAlBoR,aAAa,EAASM,iBAAiB,CAAC;YACxCJ,QAAQ,GAAGQ,OAAO,CAAC9Q,IAAI,CAAC+Q,aAAa,CAAC;YACtCV,IAAI,EAAE;YAAArS,QAAA,CAAAlB,IAAA;YAAA;UAAA;YAAA,OAAAkB,QAAA,CAAAY,MAAA,WAEHwR,aAAa,CAACvM,GAAG,CAAC,UAAA0G,CAAC;cAAA,OAAK;gBAC3B5F,EAAE,EAAEqM,MAAM,CAACzG,CAAC,CAAC5F,EAAE,CAAC;gBAChBuE,SAAS,EAAEqB,CAAC,CAACoG,SAAS;gBACtBvH,QAAQ,EAAEmB,CAAC,CAACqG,QAAQ;gBACpB3H,KAAK,EAAEsB,CAAC,CAACtB,KAAK;gBACdM,OAAO,EAAEyH,MAAM,CAACzG,CAAC,CAAC5F,EAAE;eACvB;aAAC,CAAC;UAAA;UAAA;YAAA,OAAA3G,QAAA,CAAAc,IAAA;;SAAAvB,OAAA;KACN;IAAA,SAtCK0S,qBAAqBA,CAAA/Q,EAAA;MAAA,OAAAgR,sBAAA,CAAAlR,KAAA,OAAAC,SAAA;;IAAA,OAArBgR,qBAAqB;;EAAA,OAAAD,uBAAA;AAAA;;IC4ClBiB,2BAA2B;EAGpC,SAAAA,4BAAY7Q,aAA4B;IACpC,IAAI,CAACA,aAAa,GAAGA,aAAa;;EACrC,IAAAvE,MAAA,GAAAoV,2BAAA,CAAAnV,SAAA;EAAAD,MAAA,CAEKqV,8BAA8B;IAAA,IAAAC,+BAAA,gBAAAlV,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAApC,SAAAoB,QACI4S,QAAgB,EAChBiB,IAAW,EACXC,EAAS,EACThB,MACAiB,wBACAC,sBAA+B;MAAA,IAAA9Q,GAAA,EAAAkD,MAAA,EAAA6N,OAAA,EAAAlB,QAAA,EAAAlT,QAAA,EAAAgH,SAAA,EAAAC,KAAA,EAAAoN,MAAA;MAAA,OAAAvV,mBAAA,GAAAQ,IAAA,UAAAqB,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAnB,IAAA,GAAAmB,QAAA,CAAAlB,IAAA;UAAA;YAAA,IAF/BuT;cAAAA,OAAe,CAAC;;YAAA,IAChBiB;cAAAA,yBAAkC,IAAI;;YAGhC7Q,GAAG,2CAAyC0P,QAAQ;YACpDxM,MAAM,GAAG,IAAI+N,eAAe,EAAE;YAC9BF,OAAO,GAAgB,EAAE;YAC3BlB,QAAQ,GAAG,IAAI;YAEnB,IAAIc,IAAI,EAAE;cACNzN,MAAM,CAAC9D,MAAM,CAAC,MAAM,EAAEuR,IAAI,CAAC5N,WAAW,EAAE,CAAC6G,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;;YAEzE,IAAIgH,EAAE,EAAE;cACJ1N,MAAM,CAAC9D,MAAM,CAAC,IAAI,EAAEwR,EAAE,CAAC7N,WAAW,EAAE,CAAC6G,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;;YAErE,IAAIgG,IAAI,EAAE;cACN1M,MAAM,CAAC9D,MAAM,CAAC,MAAM,EAAEwQ,IAAI,CAACsB,QAAQ,EAAE,CAAC;;YAE1C,IAAIL,sBAAsB,EAAE;cACxB3N,MAAM,CAAC9D,MAAM,CAAC,0BAA0B,EAAEyR,sBAAsB,GAAG,GAAG,GAAG,GAAG,CAAC;;YAGjF,IAAIC,sBAAsB,EAAE;cACxB5N,MAAM,CAAC9D,MAAM,CAAC,sBAAsB,EAAE0R,sBAAsB,CAAC;;UAChE;YAAA,KAEMjB,QAAQ;cAAAtS,QAAA,CAAAlB,IAAA;cAAA;;YACX6G,MAAM,CAACiO,GAAG,CAAC,MAAM,EAAEvB,IAAI,CAACsB,QAAQ,EAAE,CAAC;YAAA3T,QAAA,CAAAlB,IAAA;YAAA,OAEZ,IAAI,CAACsD,aAAa,CAACsD,GAAG,CAA8BjD,GAAG,EAAE;cAC5EkD,MAAM,EAANA;aACH,CAAC;UAAA;YAFIvG,QAAQ,GAAAY,QAAA,CAAAhB,IAAA;YAId,KAAAoH,SAAA,GAAAE,+BAAA,CAAqBlH,QAAQ,CAAC4C,IAAI,CAACA,IAAI,KAAAqE,KAAA,GAAAD,SAAA,IAAAG,IAAA,GAAE;cAA9BkN,MAAM,GAAApN,KAAA,CAAAG,KAAA;cACbgN,OAAO,CAAC/M,IAAI,CAAC;gBACTE,EAAE,EAAE8M,MAAM,CAAC9M,EAAE,CAACgN,QAAQ,EAAE;gBACxBjL,IAAI,EAAE+K,MAAM,CAAC9M,EAAE,CAACgN,QAAQ,EAAE;gBAC1BlH,eAAe,EAAEgH,MAAM,CAACI,gBAAgB,CAACC,SAAS,CAACnN,EAAE,CAACgN,QAAQ,EAAE;gBAChEhH,MAAM,EAAE8G,MAAM,CAACI,gBAAgB,CAACC,SAAS,CAACC,OAAO,CAACC,aAAa;gBAC/DnH,iBAAiB,EAAE4G,MAAM,CAACI,gBAAgB,CAACC,SAAS,CAACpL,IAAI;gBACzDqE,IAAI,EAAE,IAAI,CAACkH,OAAO,CAACR,MAAM,CAAC;gBAC1B7H,cAAc,EAAE6H,MAAM,CAACS,UAAU,CAACC,eAAe,CAACxN,EAAE;gBACpDiC,SAAS,EAAE,IAAIrD,IAAI,CAACkO,MAAM,CAACW,UAAU,CAAC;gBACtCtL,OAAO,EAAE,IAAIvD,IAAI,CAACkO,MAAM,CAACY,QAAQ,CAAC;gBAClClH,SAAS,EAAE,IAAI5H,IAAI,CAACkO,MAAM,CAACa,UAAU,CAAC;gBACtC1N,SAAS,EAAE,IAAIrB,IAAI,CAACkO,MAAM,CAACc,UAAU;eACxC,CAAC;;YAGNjC,QAAQ,GAAGD,IAAI,GAAGjT,QAAQ,CAAC4C,IAAI,CAACwS,IAAI,CAACC,SAAS;YAC9CpC,IAAI,EAAE;YAAArS,QAAA,CAAAlB,IAAA;YAAA;UAAA;YAAA,OAAAkB,QAAA,CAAAY,MAAA,WAGH4S,OAAO;UAAA;UAAA;YAAA,OAAAxT,QAAA,CAAAc,IAAA;;SAAAvB,OAAA;KACjB;IAAA,SA1DK2T,8BAA8BA,CAAAhS,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAL,GAAA,EAAAkB,GAAA,EAAAC,GAAA;MAAA,OAAAiR,+BAAA,CAAAnS,KAAA,OAAAC,SAAA;;IAAA,OAA9BiS,8BAA8B;;EAAArV,MAAA,CA4D9B6W,0BAA0B;IAAA,IAAAC,2BAAA,gBAAA1W,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAhC,SAAAC,SAAiC6G,WAAmB;MAAA,IAAAxC,GAAA,EAAAkD,MAAA,EAAAvG,QAAA;MAAA,OAAAlB,mBAAA,GAAAQ,IAAA,UAAAC,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;UAAA;YAC1C2D,GAAG,oCAAkCwC,WAAW;YAChDU,MAAM,GAAG,IAAI+N,eAAe,EAAE;YAAA9U,SAAA,CAAAE,IAAA;YAAA,OACb,IAAI,CAACsD,aAAa,CAACsD,GAAG,CAA6BjD,GAAG,EAAE;cAAEkD,MAAM,EAANA;aAAQ,CAAC;UAAA;YAApFvG,QAAQ,GAAAR,SAAA,CAAAI,IAAA;YAAA,OAAAJ,SAAA,CAAAgC,MAAA,WAEPxB,QAAQ,CAAC4C,IAAI,CAACA,IAAI;UAAA;UAAA;YAAA,OAAApD,SAAA,CAAAkC,IAAA;;SAAA1C,QAAA;KAC5B;IAAA,SANKsW,0BAA0BA,CAAA7M,GAAA;MAAA,OAAA8M,2BAAA,CAAA3T,KAAA,OAAAC,SAAA;;IAAA,OAA1ByT,0BAA0B;;EAAA7W,MAAA,CAQ1B+W,+BAA+B;IAAA,IAAAC,gCAAA,gBAAA5W,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAArC,SAAAmD,SAAsCoM,WAAmB;MAAA,IAAA+F,MAAA,EAAArL,UAAA,EAAA0M,kBAAA,EAAAC,iBAAA,EAAAC,YAAA,EAAAC,CAAA,EAAAC,QAAA,EAAAtM,SAAA,EAAAE,OAAA;MAAA,OAAA5K,mBAAA,GAAAQ,IAAA,UAAA+C,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA7C,IAAA,GAAA6C,SAAA,CAAA5C,IAAA;UAAA;YAAA4C,SAAA,CAAA5C,IAAA;YAAA,OAChC,IAAI,CAAC4V,0BAA0B,CAAChH,WAAW,CAAC;UAAA;YAA3D+F,MAAM,GAAA/R,SAAA,CAAA1C,IAAA;YACNoJ,UAAU,GAKV,EAAE;YAEF0M,kBAAkB,GAAG,IAAI,CAACK,8BAA8B,CAC1D,IAAI5P,IAAI,CAACkO,MAAM,CAACS,UAAU,CAACC,eAAe,CAACiB,MAAM,CAACC,uBAAuB,CAAC,EAC1E,IAAI9P,IAAI,CAACkO,MAAM,CAACW,UAAU,CAAC,CAC9B;YAEKW,iBAAiB,GAAG,IAAI,CAACO,qBAAqB,CAChD,IAAI/P,IAAI,CAACuP,kBAAkB,CAAC,EAC5B,IAAIvP,IAAI,CAACkO,MAAM,CAACY,QAAQ,CAAC,CAC5B;YAGKW,YAAY,GAAG,IAAI,CAACO,qBAAqB,CAACT,kBAAkB,EAAEC,iBAAiB,CAAC;YAEtF,KAASE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,YAAY,EAAEC,CAAC,EAAE,EAAE;cAC7BC,QAAQ,GAAG,IAAI3P,IAAI,CAACuP,kBAAkB,CAAC;cAEvClM,SAAS,GAAG,IAAIrD,IAAI,CAAC2P,QAAQ,CAACM,OAAO,CAACN,QAAQ,CAACO,OAAO,EAAE,GAAG,CAAC,GAAGR,CAAC,CAAC,CAAC;cAClEnM,OAAO,GAAG,IAAIvD,IAAI,CAAC2P,QAAQ,CAACM,OAAO,CAACN,QAAQ,CAACO,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;cAElErN,UAAU,CAAC3B,IAAI,CAAC;gBACZiH,WAAW,EAAE,EAAE;gBACf9E,SAAS,EAAEA,SAAS,CAACpD,WAAW,EAAE,CAAC6G,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChDvD,OAAO,EAAEA,OAAO,CAACtD,WAAW,EAAE,CAAC6G,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5CpH,WAAW,EAAEyI;eAChB,CAAC;;YACL,OAAAhM,SAAA,CAAAd,MAAA,WAEMwH,UAAiC;UAAA;UAAA;YAAA,OAAA1G,SAAA,CAAAZ,IAAA;;SAAAQ,QAAA;KAC3C;IAAA,SArCKsT,+BAA+BA,CAAA9M,GAAA;MAAA,OAAA+M,gCAAA,CAAA7T,KAAA,OAAAC,SAAA;;IAAA,OAA/B2T,+BAA+B;;EAAA/W,MAAA,CAuC7BoW,OAAO,GAAP,SAAAA,OAAOA,CAACR,MAAsC;IAClD,IAAIA,MAAM,CAACI,gBAAgB,CAAC6B,GAAG,CAACC,YAAY,CAAChO,MAAM,KAAK,CAAC,EAAE;MACvD,OAAO,EAAE;;IAGb,IAAI8L,MAAM,CAACI,gBAAgB,CAAC6B,GAAG,CAACC,YAAY,CAAChO,MAAM,GAAG,CAAC,EAAE;MACrD,IAAMiO,eAAe,GAAGnC,MAAM,CAACI,gBAAgB,CAAC6B,GAAG,CAACC,YAAY,CAACE,IAAI,CACjE,UAACC,WAAgB;QAAA,OAAKA,WAAW,CAACC,MAAM,KAAK,IAAI;QACpD;MACD,OAAOH,eAAe,oBAAfA,eAAe,CAAEI,OAAO;KAClC,MAAM;MACH,OAAOvC,MAAM,CAACI,gBAAgB,CAAC6B,GAAG,CAACC,YAAY,CAAC,CAAC,CAAC,CAACK,OAAO;;;;;;;;;EAIlEnY,MAAA,CAMQsX,8BAA8B,GAA9B,SAAAA,8BAA8BA,CAACL,kBAAwB,EAAElM,SAAe;IAC5E,IAAMqN,kBAAkB,GAAGnB,kBAAkB,CAACoB,MAAM,EAAE;;IAGtD,IAAMhB,QAAQ,GAAG,IAAI3P,IAAI,CAACqD,SAAS,CAAC;;IAGpC,OAAOsM,QAAQ,CAACgB,MAAM,EAAE,KAAKD,kBAAkB,EAAE;MAC7Cf,QAAQ,CAACM,OAAO,CAACN,QAAQ,CAACO,OAAO,EAAE,GAAG,CAAC,CAAC;;;IAI5C,IAAIP,QAAQ,IAAItM,SAAS,EAAE;MACvBsM,QAAQ,CAACM,OAAO,CAACN,QAAQ,CAACO,OAAO,EAAE,GAAG,CAAC,CAAC;;IAG5C,OAAOP,QAAQ;GAClB;EAAArX,MAAA,CAEOyX,qBAAqB,GAArB,SAAAA,qBAAqBA,CAACR,kBAAwB,EAAEhM,OAAa;IACjE,IAAMoM,QAAQ,GAAG,IAAI3P,IAAI,CAACuP,kBAAkB,CAAC;;IAG7C,OAAOhM,OAAO,GAAGoM,QAAQ,EAAE;MACvBA,QAAQ,CAACM,OAAO,CAACN,QAAQ,CAACO,OAAO,EAAE,GAAG,CAAC,CAAC;;IAG5C,OAAOP,QAAQ;GAClB;EAAArX,MAAA,CAEO0X,qBAAqB,GAArB,SAAAA,qBAAqBA,CAAC3M,SAAe,EAAEE,OAAa;IACxD,IAAMqN,QAAQ,GAAGxE,IAAI,CAACyE,GAAG,CAACtN,OAAO,CAACuN,OAAO,EAAE,GAAGzN,SAAS,CAACyN,OAAO,EAAE,CAAC;IAClE,IAAMC,QAAQ,GAAG3E,IAAI,CAAC4E,IAAI,CAACJ,QAAQ,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5D,IAAMK,KAAK,GAAG7E,IAAI,CAAC8E,KAAK,CAACH,QAAQ,GAAG,CAAC,CAAC;IACtC,OAAOE,KAAK;GACf;EAAA,OAAAvD,2BAAA;AAAA;;ICjOQyD,cAAc;EAOvB,SAAAA,eACIpZ,OAAe,EACf2N,KAAa,EACbqG,QAAgB,EAChBjC;QAAAA;MAAAA,OAA0B,MAAM;;IAV5B,aAAQ,GAA+B5R,SAAS;IAChD,kBAAa,GAAkBF,KAAK,CAACC,MAAM,EAAE;IAWjD,IAAI,CAAC4E,aAAa,CAACzE,QAAQ,CAACC,OAAO,GAAGN,OAAO;IAE7C,IAAI,CAACiT,aAAa,GAAG,IAAIc,kBAAkB,CACvC,IAAI,CAACjP,aAAa,EAClB9E,OAAO,EACP2N,KAAK,EACLqG,QAAQ,EACRjC,IAAI,CACP;IAEDkC,UAAU,CAAC,IAAI,CAACnP,aAAa,EAAE;MAC3BoP,OAAO,EAAE,EAAE;MACXC,UAAU,EAAE,SAAZA,UAAUA,CAAEC,UAAU;QAClB,OAAOC,IAAI,CAACC,GAAG,CAAC,IAAI,GAAGD,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEH,UAAU,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;OAC7D;MACDiF,OAAO,EAAE,SAATA,OAAOA,CAAGjF,UAAU,EAAElS,KAAK;QACvBqF,OAAO,CAAC+R,GAAG,oBAAkBlF,UAAU,iBAAYlS,KAAK,CAACsF,OAAS,CAAC;;KAE1E,CAAC;IAEF,IAAI,CAAC4L,kBAAkB,GAAG,IAAIsB,uBAAuB,CAAC,IAAI,CAAC5P,aAAa,CAAC;IACzE,IAAI,CAACyU,2BAA2B,GAAG,IAAI5D,2BAA2B,CAAC,IAAI,CAAC7Q,aAAa,CAAC;;EACzF,IAAAvE,MAAA,GAAA6Y,cAAA,CAAA5Y,SAAA;EAAAD,MAAA,CACKsS,IAAI;IAAA,IAAAC,KAAA,gBAAAnS,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAV,SAAAoB;MAAA,OAAArB,mBAAA,GAAAQ,IAAA,UAAAqB,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAnB,IAAA,GAAAmB,QAAA,CAAAlB,IAAA;UAAA;YAAAkB,QAAA,CAAAlB,IAAA;YAAA,OACU,IAAI,CAACyR,aAAa,CAACxS,cAAc,EAAE;UAAA;UAAA;YAAA,OAAAiC,QAAA,CAAAc,IAAA;;SAAAvB,OAAA;KAC5C;IAAA,SAFK4Q,IAAIA;MAAA,OAAAC,KAAA,CAAApP,KAAA,OAAAC,SAAA;;IAAA,OAAJkP,IAAI;;EAAAtS,MAAA,CAIVgT,WAAW,GAAX,SAAAA,WAAWA,CAACC,QAAwB;IAChC,IAAI,CAACA,QAAQ,GAAGA,QAAQ;GAC3B;EAAAjT,MAAA,CAEDkT,WAAW,GAAX,SAAAA,WAAWA;IACP,OAAO,IAAI,CAACD,QAAQ;GACvB;EAAAjT,MAAA,CAEDiZ,gBAAgB,GAAhB,SAAAA,gBAAgBA;IACZ,OAAO,IAAI,CAAC1U,aAAa;GAC5B;EAAA,OAAAsU,cAAA;AAAA;;ICxDOK,MAWX;AAXD,WAAYA,MAAM;EACdA,oBAAU;EACVA,wBAAc;EACdA,6BAAmB;EACnBA,mBAAS;EACTA,2BAAiB;EACjBA,iCAAuB;EACvBA,+BAAqB;EACrBA,iCAAuB;EACvBA,yBAAe;EACfA,oBAAU;AACd,CAAC,EAXWA,MAAM,KAANA,MAAM;;;;"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.15.0",
2
+ "version": "1.17.0",
3
3
  "main": "dist/index.js",
4
4
  "typings": "dist/index.d.ts",
5
5
  "files": [
@@ -48,6 +48,7 @@
48
48
  ],
49
49
  "dependencies": {
50
50
  "axios": "^1.7.9",
51
+ "axios-retry": "^4.5.0",
51
52
  "form-data": "^4.0.1"
52
53
  },
53
54
  "devDependencies": {
@@ -1,11 +1,11 @@
1
1
  import { AxiosInstance } from 'axios'
2
2
  import { Expense } from '../../models/expense'
3
- import { SF_API_VERSION } from '../apiClient'
3
+ import { SF_API_VERSION } from '../salesforce/apiClient'
4
4
 
5
5
  type FrontendExpense = {
6
6
  workorderPeriodId: string
7
7
  amount: string
8
- type: 'Other' | 'Lodging' | 'Transportation' | 'Travel (Hours or Amount)' | 'Per diem' | 'Meals'
8
+ type: 'Other' | 'Lodging' | 'Transportation' | 'Travel (Hours)' | 'Per diem' | 'Meals'
9
9
  }
10
10
 
11
11
  const EXPENSE_FIELD_MAP = {
@@ -0,0 +1,67 @@
1
+ import { AxiosInstance } from 'axios'
2
+
3
+ export interface LipheAssignment {
4
+ id: number
5
+ request_id: number
6
+ dates_start: Date
7
+ dates_end: Date
8
+ shift: 'morning' | 'afternoon' | 'evening' | 'night'
9
+ time_start: Date
10
+ time_end: Date
11
+ status: 'draft' | 'inprogress' | 'approved' | 'rejected'
12
+ selected_client: Record<string, any>
13
+ approver: string
14
+ cost_covered: number | null
15
+ travel: number | null
16
+ lodging: number | null
17
+ meal: number | null
18
+ others: number | null
19
+ modified_by: string | null
20
+ created_at: Date
21
+ updated_at: Date
22
+ }
23
+
24
+ export class AssignmentClient {
25
+ private axiosInstance: AxiosInstance
26
+
27
+ constructor(axiosInstance: AxiosInstance) {
28
+ this.axiosInstance = axiosInstance
29
+ }
30
+
31
+ async fetchAllAssignments(
32
+ agencyId: number = 1,
33
+ from?: Date,
34
+ to?: Date,
35
+ assignedPractitionerId?: string,
36
+ page: number = 1,
37
+ page_size: number = 10
38
+ ): Promise<LipheAssignment[]> {
39
+ const params = new URLSearchParams()
40
+ if (assignedPractitionerId) {
41
+ params.append('assigned_employee_id', assignedPractitionerId)
42
+ }
43
+ params.append('page', page.toString())
44
+ params.append('page_size', page_size.toString())
45
+ if (from) {
46
+ params.append('from', from.toISOString().split('T')[0] + ' 00:00:00')
47
+ }
48
+ if (to) {
49
+ params.append('to', to.toISOString().split('T')[0] + ' 23:59:59')
50
+ }
51
+
52
+ const response = await this.axiosInstance.get(`/api/v1/assignments/agency/${agencyId}`, {
53
+ params
54
+ })
55
+ return response.data
56
+ }
57
+
58
+ async fetchAssignment(assignmentId: string): Promise<LipheAssignment> {
59
+ const response = await this.axiosInstance.get(`/api/v1/assignments/${assignmentId}`)
60
+ return response.data
61
+ }
62
+
63
+ async createAssignment(assignment: LipheAssignment): Promise<LipheAssignment> {
64
+ const response = await this.axiosInstance.post('/api/v1/assignments', assignment)
65
+ return response.data
66
+ }
67
+ }
@@ -1,4 +1,5 @@
1
1
  import axios, { AxiosInstance } from 'axios'
2
+ import axiosRetry from 'axios-retry'
2
3
  import FormData from 'form-data'
3
4
 
4
5
  export class LipheAuthenticator {
@@ -15,9 +16,17 @@ export class LipheAuthenticator {
15
16
  baseUrl: string,
16
17
  email: string,
17
18
  password: string,
18
- type: string = 'user'
19
+ type: 'user' | 'client' = 'user'
19
20
  ) {
20
21
  this.authenticatedAxiosInstance = authenticatedAxiosInstance
22
+
23
+ axiosRetry(this.axiosTokenInstance, {
24
+ retries: 10,
25
+ retryDelay: retryCount => {
26
+ return Math.min(1000 * Math.pow(2, retryCount - 1), 30000)
27
+ }
28
+ })
29
+
21
30
  this.email = email
22
31
  this.password = password
23
32
  this.type = type
@@ -63,7 +72,7 @@ export class LipheAuthenticator {
63
72
  form.append('password', this.password)
64
73
  form.append('type', this.type)
65
74
 
66
- const response = await this.axiosTokenInstance.post('/v2/signin', form, {
75
+ const response = await this.axiosTokenInstance.post('v2/signin', form, {
67
76
  headers: form.getHeaders()
68
77
  })
69
78
  const token = response?.data?.data?.token