@aggdirect/coolmap-services 1.4.9 → 4.0.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.
@@ -1,92 +0,0 @@
1
- export class Route {
2
- index = 0;
3
- type;
4
- // Job Code
5
- customer_contact;
6
- customer_name;
7
- delivery_contact;
8
- delivery_lat;
9
- delivery_location;
10
- delivery_lon;
11
- driver_list;
12
- material;
13
- order_number;
14
- pickup_lat;
15
- pickup_location;
16
- pickup_lon;
17
- project;
18
- total_count;
19
- unit;
20
- values;
21
- job_id;
22
- isSelected;
23
- date;
24
- // Add Route
25
- created_at;
26
- created_by_name;
27
- customer_id;
28
- delivery_lat_lng;
29
- estimated_distance;
30
- estimated_time;
31
- materials_id;
32
- path;
33
- pickup_lat_lng;
34
- route_id;
35
- route_name;
36
- unit_id;
37
- note;
38
- materialLabel;
39
- isActive;
40
- prevent;
41
- is_system_pickup;
42
- is_system_delivery;
43
- }
44
- export const EstinationData = ['estimated_distance', 'estimated_time'];
45
- export var EstinationEnum;
46
- (function (EstinationEnum) {
47
- EstinationEnum["estimated_distance"] = "miles";
48
- EstinationEnum["estimated_time"] = "time";
49
- })(EstinationEnum || (EstinationEnum = {}));
50
- export const JobCodeOverviewData = ['order_number', 'customer_name', 'project', 'unit', 'material', 'customer_contact', 'delivery_contact', 'pickup_location', 'delivery_location'];
51
- export var JobCodeOverviewEnum;
52
- (function (JobCodeOverviewEnum) {
53
- JobCodeOverviewEnum["material"] = "Material";
54
- JobCodeOverviewEnum["order_number"] = "Job Code";
55
- JobCodeOverviewEnum["customer_name"] = "Customer";
56
- JobCodeOverviewEnum["customer_contact"] = "Customer Contact";
57
- JobCodeOverviewEnum["delivery_contact"] = "Delivery Contact";
58
- JobCodeOverviewEnum["project"] = "Project Name";
59
- JobCodeOverviewEnum["unit"] = "Job Type";
60
- JobCodeOverviewEnum["pickup_location"] = "Pickup";
61
- JobCodeOverviewEnum["delivery_location"] = "Delivery";
62
- })(JobCodeOverviewEnum || (JobCodeOverviewEnum = {}));
63
- export const DriversmsCardKey = ['order_number', 'date', 'values', 'material', 'unit', 'pickup_location', 'delivery_location'];
64
- export var DriverSmsCardEnum;
65
- (function (DriverSmsCardEnum) {
66
- DriverSmsCardEnum["order_number"] = "Jobcode";
67
- DriverSmsCardEnum["date"] = "Date";
68
- DriverSmsCardEnum["values"] = "Total tasks";
69
- DriverSmsCardEnum["material"] = "Material";
70
- DriverSmsCardEnum["unit"] = "Unit";
71
- DriverSmsCardEnum["pickup_location"] = "Pickup Address";
72
- DriverSmsCardEnum["delivery_location"] = "Delivery Address";
73
- })(DriverSmsCardEnum || (DriverSmsCardEnum = {}));
74
- export class PopupData {
75
- coordinate;
76
- pickup;
77
- jobCode;
78
- customer;
79
- drop;
80
- routeType;
81
- title;
82
- material;
83
- type;
84
- }
85
- export class CoolmapConfigModel {
86
- analyticsRESTURL;
87
- RESTURLPrefix;
88
- repository;
89
- mapboxStyle;
90
- mapboxAccessToken;
91
- }
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAtc2VydmljZXMvc3JjL2xpYi9zZXJ2aWNlL2RhdGEtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxPQUFPLEtBQUs7SUFDaEIsS0FBSyxHQUFXLENBQUMsQ0FBQztJQUNsQixJQUFJLENBQWlCO0lBQ3JCLFdBQVc7SUFDWCxnQkFBZ0IsQ0FBaUI7SUFDakMsYUFBYSxDQUFpQjtJQUM5QixnQkFBZ0IsQ0FBaUI7SUFDakMsWUFBWSxDQUFpQjtJQUM3QixpQkFBaUIsQ0FBNkI7SUFDOUMsWUFBWSxDQUFpQjtJQUM3QixXQUFXLENBQWM7SUFDekIsUUFBUSxDQUFpQjtJQUN6QixZQUFZLENBQWlCO0lBQzdCLFVBQVUsQ0FBaUI7SUFDM0IsZUFBZSxDQUE2QjtJQUM1QyxVQUFVLENBQWlCO0lBQzNCLE9BQU8sQ0FBaUI7SUFDeEIsV0FBVyxDQUFVO0lBQ3JCLElBQUksQ0FBaUI7SUFDckIsTUFBTSxDQUFNO0lBQ1osTUFBTSxDQUFVO0lBQ2hCLFVBQVUsQ0FBVztJQUNyQixJQUFJLENBQVU7SUFDZCxZQUFZO0lBQ1osVUFBVSxDQUFpQjtJQUMzQixlQUFlLENBQWlCO0lBQ2hDLFdBQVcsQ0FBaUI7SUFDNUIsZ0JBQWdCLENBQWlCO0lBQ2pDLGtCQUFrQixDQUFpQjtJQUNuQyxjQUFjLENBQWlCO0lBQy9CLFlBQVksQ0FBaUI7SUFDN0IsSUFBSSxDQUFvQjtJQUN4QixjQUFjLENBQWlCO0lBQy9CLFFBQVEsQ0FBaUI7SUFDekIsVUFBVSxDQUFpQjtJQUMzQixPQUFPLENBQWlCO0lBQ3hCLElBQUksQ0FBaUI7SUFDckIsYUFBYSxDQUFpQjtJQUM5QixRQUFRLENBQVc7SUFDbkIsT0FBTyxDQUFXO0lBQ2xCLGdCQUFnQixDQUFXO0lBQzNCLGtCQUFrQixDQUFXO0NBQzlCO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtBQUN0RSxNQUFNLENBQU4sSUFBWSxjQUdYO0FBSEQsV0FBWSxjQUFjO0lBQ3hCLDhDQUE0QixDQUFBO0lBQzVCLHlDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QjtBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsY0FBYyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO0FBQ25MLE1BQU0sQ0FBTixJQUFZLG1CQVVYO0FBVkQsV0FBWSxtQkFBbUI7SUFDN0IsNENBQXFCLENBQUE7SUFDckIsZ0RBQXlCLENBQUE7SUFDekIsaURBQTBCLENBQUE7SUFDMUIsNERBQXFDLENBQUE7SUFDckMsNERBQXFDLENBQUE7SUFDckMsK0NBQXdCLENBQUE7SUFDeEIsd0NBQWlCLENBQUE7SUFDakIsaURBQTBCLENBQUE7SUFDMUIscURBQThCLENBQUE7QUFDaEMsQ0FBQyxFQVZXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFVOUI7QUFFRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQTtBQUM5SCxNQUFNLENBQU4sSUFBWSxpQkFRWDtBQVJELFdBQVksaUJBQWlCO0lBQzNCLDZDQUF3QixDQUFBO0lBQ3hCLGtDQUFhLENBQUE7SUFDYiwyQ0FBc0IsQ0FBQTtJQUN0QiwwQ0FBcUIsQ0FBQTtJQUNyQixrQ0FBYSxDQUFBO0lBQ2IsdURBQWtDLENBQUE7SUFDbEMsMkRBQXNDLENBQUE7QUFDeEMsQ0FBQyxFQVJXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFRNUI7QUFFRCxNQUFNLE9BQU8sU0FBUztJQUNwQixVQUFVLENBQW1CO0lBQzdCLE1BQU0sQ0FBZ0I7SUFDdEIsT0FBTyxDQUFpQjtJQUN4QixRQUFRLENBQWlCO0lBQ3pCLElBQUksQ0FBZ0I7SUFDcEIsU0FBUyxDQUFnQjtJQUN6QixLQUFLLENBQWdCO0lBQ3JCLFFBQVEsQ0FBZ0I7SUFDeEIsSUFBSSxDQUFnQjtDQUNyQjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsZ0JBQWdCLENBQWdCO0lBQ2hDLGFBQWEsQ0FBZ0I7SUFDN0IsVUFBVSxDQUFnQjtJQUMxQixXQUFXLENBQWdCO0lBQzNCLGlCQUFpQixDQUFnQjtDQUNsQyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGNsYXNzIFJvdXRlIHtcbiAgaW5kZXg6IG51bWJlciA9IDA7XG4gIHR5cGU/OiBzdHJpbmcgfCBudWxsO1xuICAvLyBKb2IgQ29kZVxuICBjdXN0b21lcl9jb250YWN0Pzogc3RyaW5nIHwgbnVsbDtcbiAgY3VzdG9tZXJfbmFtZT86IHN0cmluZyB8IG51bGw7XG4gIGRlbGl2ZXJ5X2NvbnRhY3Q/OiBzdHJpbmcgfCBudWxsO1xuICBkZWxpdmVyeV9sYXQ/OiBudW1iZXIgfCBudWxsO1xuICBkZWxpdmVyeV9sb2NhdGlvbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGRlbGl2ZXJ5X2xvbj86IG51bWJlciB8IG51bGw7XG4gIGRyaXZlcl9saXN0PzogQXJyYXk8YW55PjtcbiAgbWF0ZXJpYWw/OiBzdHJpbmcgfCBudWxsO1xuICBvcmRlcl9udW1iZXI/OiBzdHJpbmcgfCBudWxsO1xuICBwaWNrdXBfbGF0PzogbnVtYmVyIHwgbnVsbDtcbiAgcGlja3VwX2xvY2F0aW9uPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGlja3VwX2xvbj86IG51bWJlciB8IG51bGw7XG4gIHByb2plY3Q/OiBzdHJpbmcgfCBudWxsO1xuICB0b3RhbF9jb3VudD86IG51bWJlcjtcbiAgdW5pdD86IHN0cmluZyB8IG51bGw7XG4gIHZhbHVlczogYW55O1xuICBqb2JfaWQ/OiBzdHJpbmc7XG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBkYXRlPzogc3RyaW5nO1xuICAvLyBBZGQgUm91dGVcbiAgY3JlYXRlZF9hdD86IHN0cmluZyB8IG51bGw7XG4gIGNyZWF0ZWRfYnlfbmFtZT86IHN0cmluZyB8IG51bGw7XG4gIGN1c3RvbWVyX2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgZGVsaXZlcnlfbGF0X2xuZz86IHN0cmluZyB8IG51bGw7XG4gIGVzdGltYXRlZF9kaXN0YW5jZT86IHN0cmluZyB8IG51bGw7XG4gIGVzdGltYXRlZF90aW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgbWF0ZXJpYWxzX2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgcGF0aD86IFtudW1iZXIsIG51bWJlcl07XG4gIHBpY2t1cF9sYXRfbG5nPzogc3RyaW5nIHwgbnVsbDtcbiAgcm91dGVfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICByb3V0ZV9uYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgdW5pdF9pZD86IHN0cmluZyB8IG51bGw7XG4gIG5vdGU/OiBzdHJpbmcgfCBudWxsO1xuICBtYXRlcmlhbExhYmVsPzogc3RyaW5nIHwgbnVsbDtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBwcmV2ZW50PzogYm9vbGVhbjtcbiAgaXNfc3lzdGVtX3BpY2t1cD86IGJvb2xlYW47XG4gIGlzX3N5c3RlbV9kZWxpdmVyeT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBFc3RpbmF0aW9uRGF0YSA9IFsnZXN0aW1hdGVkX2Rpc3RhbmNlJywgJ2VzdGltYXRlZF90aW1lJ11cbmV4cG9ydCBlbnVtIEVzdGluYXRpb25FbnVtIHtcbiAgZXN0aW1hdGVkX2Rpc3RhbmNlID0gXCJtaWxlc1wiLFxuICBlc3RpbWF0ZWRfdGltZSA9IFwidGltZVwiXG59XG5cbmV4cG9ydCBjb25zdCBKb2JDb2RlT3ZlcnZpZXdEYXRhID0gWydvcmRlcl9udW1iZXInLCAnY3VzdG9tZXJfbmFtZScsICdwcm9qZWN0JywgJ3VuaXQnLCAnbWF0ZXJpYWwnLCAnY3VzdG9tZXJfY29udGFjdCcsICdkZWxpdmVyeV9jb250YWN0JywgJ3BpY2t1cF9sb2NhdGlvbicsICdkZWxpdmVyeV9sb2NhdGlvbiddXG5leHBvcnQgZW51bSBKb2JDb2RlT3ZlcnZpZXdFbnVtIHtcbiAgbWF0ZXJpYWwgPSBcIk1hdGVyaWFsXCIsXG4gIG9yZGVyX251bWJlciA9IFwiSm9iIENvZGVcIixcbiAgY3VzdG9tZXJfbmFtZSA9IFwiQ3VzdG9tZXJcIixcbiAgY3VzdG9tZXJfY29udGFjdCA9IFwiQ3VzdG9tZXIgQ29udGFjdFwiLFxuICBkZWxpdmVyeV9jb250YWN0ID0gXCJEZWxpdmVyeSBDb250YWN0XCIsXG4gIHByb2plY3QgPSBcIlByb2plY3QgTmFtZVwiLFxuICB1bml0ID0gXCJKb2IgVHlwZVwiLFxuICBwaWNrdXBfbG9jYXRpb24gPSBcIlBpY2t1cFwiLFxuICBkZWxpdmVyeV9sb2NhdGlvbiA9IFwiRGVsaXZlcnlcIixcbn1cblxuZXhwb3J0IGNvbnN0IERyaXZlcnNtc0NhcmRLZXkgPSBbJ29yZGVyX251bWJlcicsICdkYXRlJywgJ3ZhbHVlcycsICdtYXRlcmlhbCcsICd1bml0JywgJ3BpY2t1cF9sb2NhdGlvbicsICdkZWxpdmVyeV9sb2NhdGlvbiddXG5leHBvcnQgZW51bSBEcml2ZXJTbXNDYXJkRW51bSB7XG4gIG9yZGVyX251bWJlciA9ICdKb2Jjb2RlJyxcbiAgZGF0ZSA9ICdEYXRlJyxcbiAgdmFsdWVzID0gJ1RvdGFsIHRhc2tzJyxcbiAgbWF0ZXJpYWwgPSAnTWF0ZXJpYWwnLFxuICB1bml0ID0gJ1VuaXQnLFxuICBwaWNrdXBfbG9jYXRpb24gPSAnUGlja3VwIEFkZHJlc3MnLFxuICBkZWxpdmVyeV9sb2NhdGlvbiA9ICdEZWxpdmVyeSBBZGRyZXNzJ1xufVxuXG5leHBvcnQgY2xhc3MgUG9wdXBEYXRhIHtcbiAgY29vcmRpbmF0ZTogW251bWJlciwgbnVtYmVyXTtcbiAgcGlja3VwOiBzdHJpbmcgfCBudWxsO1xuICBqb2JDb2RlPzogc3RyaW5nIHwgbnVsbDtcbiAgY3VzdG9tZXI/OiBzdHJpbmcgfCBudWxsO1xuICBkcm9wOiBzdHJpbmcgfCBudWxsO1xuICByb3V0ZVR5cGU6IHN0cmluZyB8IG51bGw7XG4gIHRpdGxlOiBzdHJpbmcgfCBudWxsO1xuICBtYXRlcmlhbDogc3RyaW5nIHwgbnVsbDtcbiAgdHlwZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGNsYXNzIENvb2xtYXBDb25maWdNb2RlbCB7XG4gIGFuYWx5dGljc1JFU1RVUkw6IHN0cmluZyB8IG51bGw7XG4gIFJFU1RVUkxQcmVmaXg6IHN0cmluZyB8IG51bGw7XG4gIHJlcG9zaXRvcnk6IHN0cmluZyB8IG51bGw7XG4gIG1hcGJveFN0eWxlOiBzdHJpbmcgfCBudWxsO1xuICBtYXBib3hBY2Nlc3NUb2tlbjogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgQ3VzdG9tZXJSZXBvRGV0YWlsc01vZGVsIHtcbiAgY3VzdG9tZXI6IEN1c3RvbWVyRGV0YWlsc01vZGVsIHwgbnVsbDtcbiAgcHJvamVjdElkOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBDdXN0b21lckRldGFpbHNNb2RlbCB7XG4gIGlkOiBzdHJpbmcgfCBudWxsO1xuICBuYW1lOiBzdHJpbmcgfCBudWxsO1xufVxuIl19
@@ -1,400 +0,0 @@
1
- import { Injectable, Inject } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common/http";
5
- import * as i2 from "@angular/material/snack-bar";
6
- import * as i3 from "./data-model";
7
- export class UtilsService {
8
- http;
9
- snackBar;
10
- config;
11
- ngZone;
12
- analyticsRESTURL = '';
13
- RESTURLPrefix = '';
14
- pickupOptions = [];
15
- destOptions = [];
16
- ownerOptions = [];
17
- customerOptions = [];
18
- unitOptions = [];
19
- materialOptions = [];
20
- jcodeOptions = [];
21
- driverOption = [];
22
- truckingCompanayOption = [];
23
- routeNameOptions = [];
24
- preventnavChange = new BehaviorSubject(false);
25
- navChangeObserve = this.preventnavChange.asObservable();
26
- clearViewRouteforJobCode = new BehaviorSubject(false);
27
- clearViewRouteforJobCodeObserve = this.clearViewRouteforJobCode.asObservable();
28
- preVentJobdetailclose = new BehaviorSubject(false);
29
- getpreVentJobdetailclose = this.preVentJobdetailclose.asObservable();
30
- routeDetailsUtility = new BehaviorSubject({});
31
- getrouteDetailsUtility = this.routeDetailsUtility.asObservable();
32
- removeMapEntity = new BehaviorSubject({});
33
- removeMapEntityUtility = this.removeMapEntity.asObservable();
34
- dict = new Map();
35
- unitsList;
36
- materialsList;
37
- materialsListForCustomer;
38
- customersList;
39
- locationList;
40
- pickUpAutocomplete;
41
- constructor(http, snackBar, config, ngZone) {
42
- this.http = http;
43
- this.snackBar = snackBar;
44
- this.config = config;
45
- this.ngZone = ngZone;
46
- this.analyticsRESTURL = config.analyticsRESTURL;
47
- this.RESTURLPrefix = config.RESTURLPrefix;
48
- }
49
- getDateFormat(strVal, seprater) {
50
- seprater = seprater ? seprater : '-';
51
- const mydate = strVal;
52
- return (mydate?.getFullYear() +
53
- seprater +
54
- ((mydate ? mydate.getMonth() : 0) + 1) +
55
- seprater +
56
- mydate?.getDate());
57
- }
58
- getData(path) {
59
- return this.http.get(`${this.analyticsRESTURL}${this.config.repository}/${path}`);
60
- }
61
- getRestData(path) {
62
- return this.http.get(`${this.RESTURLPrefix}${path}`);
63
- }
64
- postdata(path, data) {
65
- return this.http.post(`${this.analyticsRESTURL}${this.config.repository}/${path}`, data);
66
- }
67
- postDataWithRestUrl(path, data) {
68
- return this.http.post(`${this.RESTURLPrefix}${path}`, data);
69
- }
70
- autocomplete(searchElementRef, type) {
71
- return new Promise((resolve, reject) => {
72
- const autocomplete = new google.maps.places.Autocomplete(searchElementRef.nativeElement, {
73
- types: ['address']
74
- });
75
- google.maps.event.addListener(autocomplete, 'place_changed', () => {
76
- this.ngZone.run(() => {
77
- const place = autocomplete.getPlace();
78
- resolve({ lat: place.geometry.location.lat(), lng: place.geometry.location.lng(), formatted_address: place['formatted_address'] });
79
- });
80
- });
81
- });
82
- }
83
- openSnackBar(message, className) {
84
- this.snackBar.open(message, '', {
85
- duration: 5000,
86
- verticalPosition: 'top',
87
- horizontalPosition: 'center',
88
- panelClass: [className ? className : 'default'],
89
- });
90
- }
91
- makeOptions(item) {
92
- if (item.order_number) {
93
- this.jcodeOptions.findIndex((elem) => elem.job_id === item.job_id) === -1
94
- ? this.jcodeOptions.push({
95
- job_code: item.order_number,
96
- job_id: item.job_id,
97
- })
98
- : null;
99
- if (item.driver_list && item.driver_list?.length > 0) {
100
- item.driver_list.forEach((driver) => {
101
- this.driverOption.findIndex((elem) => elem === driver['driver_name']) === -1
102
- ? this.driverOption.push(driver['driver_name'])
103
- : null;
104
- this.truckingCompanayOption.findIndex((elem) => elem === driver['trucking_company']) === -1
105
- ? this.truckingCompanayOption.push(driver['trucking_company'])
106
- : null;
107
- });
108
- }
109
- }
110
- this.pickupOptions.findIndex((elem) => elem === item.pickup_location) === -1
111
- ? this.pickupOptions.push(item.pickup_location)
112
- : null;
113
- this.destOptions.findIndex((elem) => elem === item.delivery_location) === -1
114
- ? this.destOptions.push(item.delivery_location)
115
- : null;
116
- this.customerOptions.findIndex((customer) => customer === item.customer_name) === -1
117
- ? this.customerOptions.push(item.customer_name)
118
- : null;
119
- this.unitOptions.findIndex((elem) => elem === item.unit) === -1
120
- ? this.unitOptions.push(item.unit)
121
- : null;
122
- if (item.material) {
123
- this.materialOptions.findIndex((elem) => elem === item.material) === -1
124
- ? this.materialOptions.push(item.material)
125
- : null;
126
- }
127
- if (item.route_name)
128
- this.routeNameOptions.findIndex((elem) => elem === item.route_name) === -1
129
- ? this.routeNameOptions.push(item.route_name)
130
- : null;
131
- }
132
- filter(value, filters) {
133
- if (typeof value !== 'string') {
134
- return [];
135
- }
136
- const filterValue = value.toLowerCase();
137
- if (filterValue === '') {
138
- return [];
139
- }
140
- const searchResults = [];
141
- this.unitOptions.map((unit) => {
142
- if (unit.toLowerCase().includes(filterValue)) {
143
- searchResults.push({ type: 'unit', label: unit, value: unit });
144
- }
145
- });
146
- this.customerOptions.map((unit) => {
147
- if (unit.toLowerCase().includes(filterValue)) {
148
- searchResults.push({ type: 'customer', label: unit, value: unit });
149
- }
150
- });
151
- if (this.materialOptions.length) {
152
- this.materialOptions.map((unit) => {
153
- if (unit.toLowerCase().includes(filterValue)) {
154
- searchResults.push({ type: 'material', label: unit, value: unit });
155
- }
156
- });
157
- }
158
- this.pickupOptions.map((unit) => {
159
- if (unit.toLowerCase().includes(filterValue)) {
160
- searchResults.push({
161
- type: 'pickup location',
162
- label: unit,
163
- value: unit,
164
- });
165
- }
166
- });
167
- this.destOptions.map((unit) => {
168
- if (unit.toLowerCase().includes(filterValue)) {
169
- searchResults.push({
170
- type: 'destination location',
171
- label: unit,
172
- value: unit,
173
- });
174
- }
175
- });
176
- this.jcodeOptions.map((unit) => {
177
- if (unit.job_code.toLowerCase().includes(filterValue)) {
178
- searchResults.push({
179
- type: 'job',
180
- label: unit['job_code'],
181
- value: unit,
182
- });
183
- }
184
- });
185
- this.driverOption.map((unit) => {
186
- if (unit.toLowerCase().includes(filterValue)) {
187
- searchResults.push({ type: 'Driver', label: unit, value: unit });
188
- }
189
- });
190
- this.truckingCompanayOption.map((unit) => {
191
- if (unit.toLowerCase().includes(filterValue)) {
192
- searchResults.push({
193
- type: 'Trucking Company',
194
- label: unit,
195
- value: unit,
196
- });
197
- }
198
- });
199
- this.routeNameOptions.map((unit) => {
200
- if (unit.toLowerCase().includes(filterValue)) {
201
- searchResults.push({ type: 'Route name', label: unit, value: unit });
202
- }
203
- });
204
- const searchDict = {};
205
- filters.map((filter) => {
206
- searchDict[filter['name'] + filter['type']] = filter;
207
- });
208
- const furtherFilter = [];
209
- searchResults.map((search) => {
210
- if (search['label'] + search['type'] in searchDict) {
211
- }
212
- else {
213
- furtherFilter.push(search);
214
- }
215
- });
216
- return furtherFilter;
217
- }
218
- getSearchResults(list, filterval) {
219
- return list.filter((element) => {
220
- const result_list_boolean = [];
221
- if (filterval.length > 0) {
222
- if (filterval[0]['type'] === 'unit') {
223
- result_list_boolean.push(filterval[0]['name'] ===
224
- element[filterval[0]['type']]);
225
- }
226
- if (filterval[0]['type'] === 'customer') {
227
- result_list_boolean.push(filterval[0]['name'] === element['customer_name']);
228
- }
229
- if (filterval[0]['type'] === 'material') {
230
- result_list_boolean.push(filterval[0]['name'] ===
231
- element[filterval[0]['type']]);
232
- }
233
- if (filterval[0]['type'] === 'pickup location') {
234
- result_list_boolean.push(filterval[0]['name'] === element['pickup_location']);
235
- }
236
- if (filterval[0]['type'] === 'destination location') {
237
- result_list_boolean.push(filterval[0]['name'] === element['delivery_location']);
238
- }
239
- if (filterval[0]['type'] === 'job') {
240
- result_list_boolean.push(filterval[0]['name'] === element['order_number']);
241
- }
242
- if (filterval[0]['type'] === 'Route name') {
243
- result_list_boolean.push(filterval[0]['name'] === element['route_name']);
244
- }
245
- if (filterval[0]['type'] === 'Driver') {
246
- const index = element.driver_list?.findIndex((ele) => {
247
- return filterval[0]['name'] === ele['driver_name'];
248
- });
249
- if (index !== -1)
250
- result_list_boolean.push(true);
251
- }
252
- if (filterval[0]['type'] === 'Trucking Company') {
253
- const index = element.driver_list?.findIndex((ele) => {
254
- return filterval[0]['name'] === ele['trucking_company'];
255
- });
256
- if (index !== -1)
257
- result_list_boolean.push(true);
258
- }
259
- }
260
- if (result_list_boolean.length > 0) {
261
- return result_list_boolean.reduce((prev, curr) => prev && curr);
262
- }
263
- return false;
264
- });
265
- }
266
- clearOptions() {
267
- this.pickupOptions = [];
268
- this.destOptions = [];
269
- this.ownerOptions = [];
270
- this.customerOptions = [];
271
- this.unitOptions = [];
272
- this.materialOptions = [];
273
- this.jcodeOptions = [];
274
- this.routeNameOptions = [];
275
- }
276
- setdictValue(key, value) {
277
- this.dict.set(key, value);
278
- }
279
- getdictValue(key) {
280
- return JSON.parse(this.dict.get(key));
281
- }
282
- removedictValue(key) {
283
- this.dict.delete(key);
284
- }
285
- conveySearchIcon(value) {
286
- if (value && typeof value !== 'object')
287
- return true;
288
- return false;
289
- }
290
- fetchUnitsList() {
291
- return new Promise((resolve, reject) => {
292
- if (!this.unitsList) {
293
- this.getData('unit/list/view').subscribe((res) => {
294
- if (res) {
295
- this.unitsList = res.data;
296
- resolve(this.unitsList);
297
- }
298
- });
299
- }
300
- else {
301
- resolve(this.unitsList);
302
- }
303
- });
304
- }
305
- fetchMaterialsList() {
306
- return new Promise((resolve, reject) => {
307
- if (!this.materialsList) {
308
- this.getData('material/list/view').subscribe((res) => {
309
- this.materialsList = this.filtermaterialList(res.data);
310
- resolve(this.materialsList);
311
- });
312
- }
313
- else {
314
- resolve(this.materialsList);
315
- }
316
- });
317
- }
318
- fetchMaterialsListForCustomer() {
319
- return new Promise((resolve, reject) => {
320
- if (!this.materialsListForCustomer) {
321
- this.getData('material/list/view').subscribe((res) => {
322
- this.materialsListForCustomer = this.filtermaterialList(res.data);
323
- resolve(this.materialsListForCustomer);
324
- });
325
- }
326
- else {
327
- resolve(this.materialsListForCustomer);
328
- }
329
- });
330
- }
331
- filtermaterialList(list) {
332
- let meterialList = [];
333
- list.map((item) => {
334
- if (item.sub.length > 0) {
335
- item.sub.map((subItem) => {
336
- if (subItem.add_to_marketplace) {
337
- subItem.material = item.material;
338
- subItem.material_id = item.material_id;
339
- subItem.label = item.material + ' | ' + subItem.sub_material;
340
- meterialList.push(subItem);
341
- }
342
- });
343
- }
344
- });
345
- meterialList.sort((a, b) => a.label.localeCompare(b.label));
346
- return meterialList;
347
- }
348
- fetchCustomersList() {
349
- return new Promise((resolve, reject) => {
350
- if (!this.customersList) {
351
- this.getData('company/list/view').subscribe((res) => {
352
- if (res) {
353
- this.customersList = res.data;
354
- resolve(this.customersList);
355
- }
356
- });
357
- }
358
- else {
359
- resolve(this.customersList);
360
- }
361
- });
362
- }
363
- fetchLocationlist() {
364
- return new Promise((resolve, reject) => {
365
- this.getRestData('locations/all').subscribe((res) => {
366
- if (res) {
367
- this.locationList = res.data;
368
- this.locationList = this.locationList.map((object) => {
369
- object.formatted_address = `${object.name} | ${object.street} ${object.city}, ${object.state} ${object.zip}`;
370
- const newItem = {
371
- city: object.city,
372
- lng: object.longitude,
373
- location_id: object.location_id,
374
- lat: object.latitude,
375
- name: object.name,
376
- state: object.state,
377
- street: object.street,
378
- zip: object.zip,
379
- formatted_address: object.formatted_address
380
- };
381
- return newItem;
382
- });
383
- resolve(this.locationList);
384
- }
385
- }, err => {
386
- console.log(err);
387
- });
388
- });
389
- }
390
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UtilsService, deps: [{ token: i1.HttpClient }, { token: i2.MatSnackBar }, { token: 'memberData' }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
391
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UtilsService, providedIn: 'root' });
392
- }
393
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UtilsService, decorators: [{
394
- type: Injectable,
395
- args: [{ providedIn: 'root' }]
396
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.MatSnackBar }, { type: i3.CoolmapConfigModel, decorators: [{
397
- type: Inject,
398
- args: ['memberData']
399
- }] }, { type: i0.NgZone }] });
400
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAtc2VydmljZXMvc3JjL2xpYi9zZXJ2aWNlL3V0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBTyxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFrQjVDLE1BQU0sT0FBTyxZQUFZO0lBaUNkO0lBQ0E7SUFDdUI7SUFDdkI7SUFuQ1QsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDbkIsYUFBYSxHQUFVLEVBQUUsQ0FBQztJQUMxQixXQUFXLEdBQVUsRUFBRSxDQUFDO0lBQ3hCLFlBQVksR0FBVSxFQUFFLENBQUM7SUFDekIsZUFBZSxHQUFVLEVBQUUsQ0FBQztJQUM1QixXQUFXLEdBQVUsRUFBRSxDQUFDO0lBQ3hCLGVBQWUsR0FBVSxFQUFFLENBQUM7SUFDNUIsWUFBWSxHQUFVLEVBQUUsQ0FBQztJQUN6QixZQUFZLEdBQVUsRUFBRSxDQUFDO0lBQ3pCLHNCQUFzQixHQUFVLEVBQUUsQ0FBQztJQUNuQyxnQkFBZ0IsR0FBVSxFQUFFLENBQUM7SUFDdEIsZ0JBQWdCLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hELHdCQUF3QixHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELCtCQUErQixHQUM3QixJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0MscUJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsd0JBQXdCLEdBQUcs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TUFBTSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksTUFBTSxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQzNHLE1BQU0sT0FBTyxHQUFHOzRCQUNoQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7NEJBQ2pCLEdBQUcsRUFBRSxNQUFNLENBQUMsU0FBUzs0QkFDckIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXOzRCQUMvQixHQUFHLEVBQUUsTUFBTSxDQUFDLFFBQVE7NEJBQ3BCLElBQUksRUFBRyxNQUFNLENBQUMsSUFBSTs0QkFDbEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLOzRCQUNuQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07NEJBQ3JCLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRzs0QkFDZixpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCO3lCQUMxQyxDQUFBO3dCQUNILE9BQU8sT0FBTyxDQUFDO29CQUNqQixDQUFDLENBQUMsQ0FBQTtvQkFDRixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUM3QixDQUFDO1lBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBN1pVLFlBQVksdUVBbUNiLFlBQVk7MkdBbkNYLFlBQVksY0FEQyxNQUFNOzsyRkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQW9DN0IsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29vbG1hcENvbmZpZ01vZGVsLCBSb3V0ZSB9IGZyb20gJy4vZGF0YS1tb2RlbCc7XG5kZWNsYXJlIHZhciBnb29nbGU6IGFueTtcbmV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb25BbGwge1xuICBjaXR5OiAgICAgICAgICBzdHJpbmc7XG4gIGxhdGl0dWRlOiAgICAgIHN0cmluZztcbiAgbG9jYXRpb25faWQ6ICAgc3RyaW5nO1xuICBsb25naXR1ZGU6ICAgICBzdHJpbmc7XG4gIG5hbWU6ICAgICAgICAgIHN0cmluZztcbiAgc3RhdGU6ICAgICAgICAgc3RyaW5nO1xuICBzdHJlZXQ6ICAgICAgICBzdHJpbmc7XG4gIHN1aXRlOiAgICAgICAgIG51bGw7XG4gIHppcDogICAgICAgICAgIHN0cmluZztcbiAgZm9ybWF0dGVkX2FkZHJlc3M6IHN0cmluZztcbiAgY29tcGxldGVfYWRkcmVzczogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFV0aWxzU2VydmljZSB7XG4gIGFuYWx5dGljc1JFU1RVUkwgPSAnJztcbiAgUkVTVFVSTFByZWZpeCA9ICcnO1xuICBwaWNrdXBPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBkZXN0T3B0aW9uczogYW55W10gPSBbXTtcbiAgb3duZXJPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBjdXN0b21lck9wdGlvbnM6IGFueVtdID0gW107XG4gIHVuaXRPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBtYXRlcmlhbE9wdGlvbnM6IGFueVtdID0gW107XG4gIGpjb2RlT3B0aW9uczogYW55W10gPSBbXTtcbiAgZHJpdmVyT3B0aW9uOiBhbnlbXSA9IFtdO1xuICB0cnVja2luZ0NvbXBhbmF5T3B0aW9uOiBhbnlbXSA9IFtdO1xuICByb3V0ZU5hbWVPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgcHJldmVudG5hdkNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBuYXZDaGFuZ2VPYnNlcnZlID0gdGhpcy5wcmV2ZW50bmF2Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpO1xuICBjbGVhclZpZXdSb3V0ZWZvckpvYkNvZGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgY2xlYXJWaWV3Um91dGVmb3JKb2JDb2RlT2JzZXJ2ZSA9XG4gICAgdGhpcy5jbGVhclZpZXdSb3V0ZWZvckpvYkNvZGUuYXNPYnNlcnZhYmxlKCk7XG4gIHByZVZlbnRKb2JkZXRhaWxjbG9zZSA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBnZXRwcmVWZW50Sm9iZGV0YWlsY2xvc2UgPSB0aGlzLnByZVZlbnRKb2JkZXRhaWxjbG9zZS5hc09ic2VydmFibGUoKTtcbiAgcm91dGVEZXRhaWxzVXRpbGl0eSA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xuICBnZXRyb3V0ZURldGFpbHNVdGlsaXR5ID0gdGhpcy5yb3V0ZURldGFpbHNVdGlsaXR5LmFzT2JzZXJ2YWJsZSgpO1xuICByZW1vdmVNYXBFbnRpdHkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KTtcbiAgcmVtb3ZlTWFwRW50aXR5VXRpbGl0eSA9IHRoaXMucmVtb3ZlTWFwRW50aXR5LmFzT2JzZXJ2YWJsZSgpO1xuICBkaWN0ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgdW5pdHNMaXN0OiBhbnk7XG4gIG1hdGVyaWFsc0xpc3Q6IGFueTtcbiAgbWF0ZXJpYWxzTGlzdEZvckN1c3RvbWVyOiBhbnk7XG4gIGN1c3RvbWVyc0xpc3Q6IGFueTtcbiAgbG9jYXRpb25MaXN0OiBhbnk7XG4gIHBpY2tVcEF1dG9jb21wbGV0ZTogYW55O1xuICBcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHVibGljIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBASW5qZWN0KCdtZW1iZXJEYXRhJykgcHJpdmF0ZSBjb25maWc6IENvb2xtYXBDb25maWdNb2RlbCxcbiAgICBwdWJsaWMgbmdab25lOiBOZ1pvbmUsXG4gICkge1xuICAgIHRoaXMuYW5hbHl0aWNzUkVTVFVSTCA9IGNvbmZpZy5hbmFseXRpY3NSRVNUVVJMO1xuICAgIHRoaXMuUkVTVFVSTFByZWZpeCA9IGNvbmZpZy5SRVNUVVJMUHJlZml4O1xuICB9XG4gIGdldERhdGVGb3JtYXQoc3RyVmFsOiBEYXRlIHwgbnVsbCwgc2VwcmF0ZXI/OiBzdHJpbmcpIHtcbiAgICBzZXByYXRlciA9IHNlcHJhdGVyID8gc2VwcmF0ZXIgOiAnLSc7XG4gICAgY29uc3QgbXlkYXRlID0gc3RyVmFsO1xuICAgIHJldHVybiAoXG4gICAgICBteWRhdGU/LmdldEZ1bGxZZWFyKCkgK1xuICAgICAgc2VwcmF0ZXIgK1xuICAgICAgKChteWRhdGUgPyBteWRhdGUuZ2V0TW9udGgoKSA6IDApICsgMSkgK1xuICAgICAgc2VwcmF0ZXIgK1xuICAgICAgbXlkYXRlPy5nZXREYXRlKClcbiAgICApO1xuICB9XG4gIGdldERhdGEocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICBgJHt0aGlzLmFuYWx5dGljc1JFU1RVUkx9JHt0aGlzLmNvbmZpZy5yZXBvc2l0b3J5fS8ke3BhdGh9YFxuICAgICk7XG4gIH1cbiAgZ2V0UmVzdERhdGEocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICBgJHt0aGlzLlJFU1RVUkxQcmVmaXh9JHtwYXRofWBcbiAgICApO1xuICB9XG4gIHBvc3RkYXRhKHBhdGg6IHN0cmluZywgZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgYCR7dGhpcy5hbmFseXRpY3NSRVNUVVJMfSR7dGhpcy5jb25maWcucmVwb3NpdG9yeX0vJHtwYXRofWAsXG4gICAgICBkYXRhXG4gICAgKTtcbiAgfVxuICBwb3N0RGF0YVdpdGhSZXN0VXJsKHBhdGg6IHN0cmluZywgZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuUkVTVFVSTFByZWZpeH0ke3BhdGh9YCwgZGF0YSk7XG4gIH1cbiAgXG4gIGF1dG9jb21wbGV0ZShzZWFyY2hFbGVtZW50UmVmLCB0eXBlPykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBhdXRvY29tcGxldGUgPSBuZXcgZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZShzZWFyY2hFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgdHlwZXM6IFsnYWRkcmVzcyddXG4gICAgICB9KTtcbiAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LmFkZExpc3RlbmVyKGF1dG9jb21wbGV0ZSwgJ3BsYWNlX2NoYW5nZWQnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGxhY2UgPSBhdXRvY29tcGxldGUuZ2V0UGxhY2UoKTtcbiAgICAgICAgICByZXNvbHZlKHtsYXQ6IHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLmxhdCgpLCBsbmc6IHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLmxuZygpLCBmb3JtYXR0ZWRfYWRkcmVzczogcGxhY2VbJ2Zvcm1hdHRlZF9hZGRyZXNzJ119KVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgb3BlblNuYWNrQmFyKG1lc3NhZ2U6IHN0cmluZywgY2xhc3NOYW1lPzogc3RyaW5nKSB7XG4gICAgdGhpcy5zbmFja0Jhci5vcGVuKG1lc3NhZ2UsICcnLCB7XG4gICAgICBkdXJhdGlvbjogNTAwMCxcbiAgICAgIHZlcnRpY2FsUG9zaXRpb246ICd0b3AnLFxuICAgICAgaG9yaXpvbnRhbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgICAgIHBhbmVsQ2xhc3M6IFtjbGFzc05hbWUgPyBjbGFzc05hbWUgOiAnZGVmYXVsdCddLFxuICAgIH0pO1xuICB9XG5cbiAgbWFrZU9wdGlvbnMoaXRlbTogUm91dGUpIHtcbiAgICBpZiAoaXRlbS5vcmRlcl9udW1iZXIpIHtcbiAgICAgIHRoaXMuamNvZGVPcHRpb25zLmZpbmRJbmRleCgoZWxlbSkgPT4gZWxlbS5qb2JfaWQgPT09IGl0ZW0uam9iX2lkKSA9PT0gLTFcbiAgICAgICAgPyB0aGlzLmpjb2RlT3B0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgIGpvYl9jb2RlOiBpdGVtLm9yZGVyX251bWJlcixcbiAgICAgICAgICAgIGpvYl9pZDogaXRlbS5qb2JfaWQsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiBudWxsO1xuICAgICAgaWYgKGl0ZW0uZHJpdmVyX2xpc3QgJiYgaXRlbS5kcml2ZXJfbGlzdD8ubGVuZ3RoID4gMCkge1xuICAgICAgICBpdGVtLmRyaXZlcl9saXN0LmZvckVhY2goKGRyaXZlcikgPT4ge1xuICAgICAgICAgIHRoaXMuZHJpdmVyT3B0aW9uLmZpbmRJbmRleChcbiAgICAgICAgICAgIChlbGVtKSA9PiBlbGVtID09PSBkcml2ZXJbJ2RyaXZlcl9uYW1lJ11cbiAgICAgICAgICApID09PSAtMVxuICAgICAgICAgICAgPyB0aGlzLmRyaXZlck9wdGlvbi5wdXNoKGRyaXZlclsnZHJpdmVyX25hbWUnXSlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICB0aGlzLnRydWNraW5nQ29tcGFuYXlPcHRpb24uZmluZEluZGV4KFxuICAgICAgICAgICAgKGVsZW0pID0+IGVsZW0gPT09IGRyaXZlclsndHJ1Y2tpbmdfY29tcGFueSddXG4gICAgICAgICAgKSA9PT0gLTFcbiAgICAgICAgICAgID8gdGhpcy50cnVja2luZ0NvbXBhbmF5T3B0aW9uLnB1c2goZHJpdmVyWyd0cnVja2luZ19jb21wYW55J10pXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnBpY2t1cE9wdGlvbnMuZmluZEluZGV4KChlbGVtKSA9PiBlbGVtID09PSBpdGVtLnBpY2t1cF9sb2NhdGlvbikgPT09IC0xXG4gICAgICA/IHRoaXMucGlja3VwT3B0aW9ucy5wdXNoKGl0ZW0ucGlja3VwX2xvY2F0aW9uKVxuICAgICAgOiBudWxsO1xuICAgIHRoaXMuZGVzdE9wdGlvbnMuZmluZEluZGV4KChlbGVtKSA9PiBlbGVtID09PSBpdGVtLmRlbGl2ZXJ5X2xvY2F0aW9uKSA9PT0gLTFcbiAgICAgID8gdGhpcy5kZXN0T3B0aW9ucy5wdXNoKGl0ZW0uZGVsaXZlcnlfbG9jYXRpb24pXG4gICAgICA6IG51bGw7XG4gICAgdGhpcy5jdXN0b21lck9wdGlvbnMuZmluZEluZGV4KFxuICAgICAgKGN1c3RvbWVyKSA9PiBjdXN0b21lciA9PT0gaXRlbS5jdXN0b21lcl9uYW1lXG4gICAgKSA9PT0gLTFcbiAgICAgID8gdGhpcy5jdXN0b21lck9wdGlvbnMucHVzaChpdGVtLmN1c3RvbWVyX25hbWUpXG4gICAgICA6IG51bGw7XG4gICAgdGhpcy51bml0T3B0aW9ucy5maW5kSW5kZXgoKGVsZW0pID0+IGVsZW0gPT09IGl0ZW0udW5pdCkgPT09IC0xXG4gICAgICA/IHRoaXMudW5pdE9wdGlvbnMucHVzaChpdGVtLnVuaXQpXG4gICAgICA6IG51bGw7XG5cbiAgICBpZihpdGVtLm1hdGVyaWFsKSB7XG4gICAgICB0aGlzLm1hdGVyaWFsT3B0aW9ucy5maW5kSW5kZXgoKGVsZW0pID0+IGVsZW0gPT09IGl0ZW0ubWF0ZXJpYWwpID09PSAtMVxuICAgICAgPyB0aGlzLm1hdGVyaWFsT3B0aW9ucy5wdXNoKGl0ZW0ubWF0ZXJpYWwpXG4gICAgICA6IG51bGw7XG4gICAgfVxuICAgIGlmIChpdGVtLnJvdXRlX25hbWUpXG4gICAgICB0aGlzLnJvdXRlTmFtZU9wdGlvbnMuZmluZEluZGV4KChlbGVtKSA9PiBlbGVtID09PSBpdGVtLnJvdXRlX25hbWUpID09PSAtMVxuICAgICAgICA/IHRoaXMucm91dGVOYW1lT3B0aW9ucy5wdXNoKGl0ZW0ucm91dGVfbmFtZSlcbiAgICAgICAgOiBudWxsO1xuICB9XG5cbiAgZmlsdGVyKHZhbHVlOiBzdHJpbmcsIGZpbHRlcnM6IGFueSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoZmlsdGVyVmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IHNlYXJjaFJlc3VsdHM6IGFueVtdID0gW107XG4gICAgdGhpcy51bml0T3B0aW9ucy5tYXAoKHVuaXQpID0+IHtcbiAgICAgIGlmICh1bml0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaCh7IHR5cGU6ICd1bml0JywgbGFiZWw6IHVuaXQsIHZhbHVlOiB1bml0IH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuY3VzdG9tZXJPcHRpb25zLm1hcCgodW5pdCkgPT4ge1xuICAgICAgaWYgKHVuaXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgc2VhcmNoUmVzdWx0cy5wdXNoKHsgdHlwZTogJ2N1c3RvbWVyJywgbGFiZWw6IHVuaXQsIHZhbHVlOiB1bml0IH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYodGhpcy5tYXRlcmlhbE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm1hdGVyaWFsT3B0aW9ucy5tYXAoKHVuaXQpID0+IHtcbiAgICAgICAgaWYgKHVuaXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgICBzZWFyY2hSZXN1bHRzLnB1c2goeyB0eXBlOiAnbWF0ZXJpYWwnLCBsYWJlbDogdW5pdCwgdmFsdWU6IHVuaXQgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnBpY2t1cE9wdGlvbnMubWFwKCh1bml0KSA9PiB7XG4gICAgICBpZiAodW5pdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkge1xuICAgICAgICBzZWFyY2hSZXN1bHRzLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdwaWNrdXAgbG9jYXRpb24nLFxuICAgICAgICAgIGxhYmVsOiB1bml0LFxuICAgICAgICAgIHZhbHVlOiB1bml0LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmRlc3RPcHRpb25zLm1hcCgodW5pdCkgPT4ge1xuICAgICAgaWYgKHVuaXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgc2VhcmNoUmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiAnZGVzdGluYXRpb24gbG9jYXRpb24nLFxuICAgICAgICAgIGxhYmVsOiB1bml0LFxuICAgICAgICAgIHZhbHVlOiB1bml0LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmpjb2RlT3B0aW9ucy5tYXAoKHVuaXQpID0+IHtcbiAgICAgIGlmICh1bml0LmpvYl9jb2RlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ2pvYicsXG4gICAgICAgICAgbGFiZWw6IHVuaXRbJ2pvYl9jb2RlJ10sXG4gICAgICAgICAgdmFsdWU6IHVuaXQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZHJpdmVyT3B0aW9uLm1hcCgodW5pdCkgPT4ge1xuICAgICAgaWYgKHVuaXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgc2VhcmNoUmVzdWx0cy5wdXNoKHsgdHlwZTogJ0RyaXZlcicsIGxhYmVsOiB1bml0LCB2YWx1ZTogdW5pdCB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudHJ1Y2tpbmdDb21wYW5heU9wdGlvbi5tYXAoKHVuaXQpID0+IHtcbiAgICAgIGlmICh1bml0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ1RydWNraW5nIENvbXBhbnknLFxuICAgICAgICAgIGxhYmVsOiB1bml0LFxuICAgICAgICAgIHZhbHVlOiB1bml0LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlTmFtZU9wdGlvbnMubWFwKCh1bml0KSA9PiB7XG4gICAgICBpZiAodW5pdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkge1xuICAgICAgICBzZWFyY2hSZXN1bHRzLnB1c2goeyB0eXBlOiAnUm91dGUgbmFtZScsIGxhYmVsOiB1bml0LCB2YWx1ZTogdW5pdCB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzZWFyY2hEaWN0OiBhbnkgPSB7fTtcbiAgICBmaWx0ZXJzLm1hcCgoZmlsdGVyOiB7IFt4OiBzdHJpbmddOiBhbnkgfSkgPT4ge1xuICAgICAgc2VhcmNoRGljdFtmaWx0ZXJbJ25hbWUnXSArIGZpbHRlclsndHlwZSddXSA9IGZpbHRlcjtcbiAgICB9KTtcbiAgICBjb25zdCBmdXJ0aGVyRmlsdGVyOiBhbnlbXSA9IFtdO1xuICAgIHNlYXJjaFJlc3VsdHMubWFwKChzZWFyY2gpID0+IHtcbiAgICAgIGlmIChzZWFyY2hbJ2xhYmVsJ10gKyBzZWFyY2hbJ3R5cGUnXSBpbiBzZWFyY2hEaWN0KSB7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmdXJ0aGVyRmlsdGVyLnB1c2goc2VhcmNoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZnVydGhlckZpbHRlcjtcbiAgfVxuXG4gIGdldFNlYXJjaFJlc3VsdHMobGlzdDogUm91dGVbXSwgZmlsdGVydmFsOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBsaXN0LmZpbHRlcigoZWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0X2xpc3RfYm9vbGVhbiA9IFtdO1xuICAgICAgaWYgKGZpbHRlcnZhbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ3VuaXQnKSB7XG4gICAgICAgICAgcmVzdWx0X2xpc3RfYm9vbGVhbi5wdXNoKFxuICAgICAgICAgICAgZmlsdGVydmFsWzBdWyduYW1lJ10gPT09XG4gICAgICAgICAgICAgIGVsZW1lbnRbZmlsdGVydmFsWzBdWyd0eXBlJ10gYXMga2V5b2YgUm91dGVdXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVydmFsWzBdWyd0eXBlJ10gPT09ICdjdXN0b21lcicpIHtcbiAgICAgICAgICByZXN1bHRfbGlzdF9ib29sZWFuLnB1c2goXG4gICAgICAgICAgICBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT0gZWxlbWVudFsnY3VzdG9tZXJfbmFtZSddXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVydmFsWzBdWyd0eXBlJ10gPT09ICdtYXRlcmlhbCcpIHtcbiAgICAgICAgICByZXN1bHRfbGlzdF9ib29sZWFuLnB1c2goXG4gICAgICAgICAgICBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT1cbiAgICAgICAgICAgICAgZWxlbWVudFtmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSBhcyBrZXlvZiBSb3V0ZV1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ3BpY2t1cCBsb2NhdGlvbicpIHtcbiAgICAgICAgICByZXN1bHRfbGlzdF9ib29sZWFuLnB1c2goXG4gICAgICAgICAgICBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT0gZWxlbWVudFsncGlja3VwX2xvY2F0aW9uJ11cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ2Rlc3RpbmF0aW9uIGxvY2F0aW9uJykge1xuICAgICAgICAgIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaChcbiAgICAgICAgICAgIGZpbHRlcnZhbFswXVsnbmFtZSddID09PSBlbGVtZW50WydkZWxpdmVyeV9sb2NhdGlvbiddXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVydmFsWzBdWyd0eXBlJ10gPT09ICdqb2InKSB7XG4gICAgICAgICAgcmVzdWx0X2xpc3RfYm9vbGVhbi5wdXNoKFxuICAgICAgICAgICAgZmlsdGVydmFsWzBdWyduYW1lJ10gPT09IGVsZW1lbnRbJ29yZGVyX251bWJlciddXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVydmFsWzBdWyd0eXBlJ10gPT09ICdSb3V0ZSBuYW1lJykge1xuICAgICAgICAgIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaChcbiAgICAgICAgICAgIGZpbHRlcnZhbFswXVsnbmFtZSddID09PSBlbGVtZW50Wydyb3V0ZV9uYW1lJ11cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ0RyaXZlcicpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGVsZW1lbnQuZHJpdmVyX2xpc3Q/LmZpbmRJbmRleCgoZWxlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZmlsdGVydmFsWzBdWyduYW1lJ10gPT09IGVsZVsnZHJpdmVyX25hbWUnXTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSByZXN1bHRfbGlzdF9ib29sZWFuLnB1c2godHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnZhbFswXVsndHlwZSddID09PSAnVHJ1Y2tpbmcgQ29tcGFueScpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGVsZW1lbnQuZHJpdmVyX2xpc3Q/LmZpbmRJbmRleCgoZWxlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZmlsdGVydmFsWzBdWyduYW1lJ10gPT09IGVsZVsndHJ1Y2tpbmdfY29tcGFueSddO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdF9saXN0X2Jvb2xlYW4ubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0X2xpc3RfYm9vbGVhbi5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgJiYgY3Vycik7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBjbGVhck9wdGlvbnMoKSB7XG4gICAgdGhpcy5waWNrdXBPcHRpb25zID0gW107XG4gICAgdGhpcy5kZXN0T3B0aW9ucyA9IFtdO1xuICAgIHRoaXMub3duZXJPcHRpb25zID0gW107XG4gICAgdGhpcy5jdXN0b21lck9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLnVuaXRPcHRpb25zID0gW107XG4gICAgdGhpcy5tYXRlcmlhbE9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLmpjb2RlT3B0aW9ucyA9IFtdO1xuICAgIHRoaXMucm91dGVOYW1lT3B0aW9ucyA9IFtdO1xuICB9XG4gIHNldGRpY3RWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZGljdC5zZXQoa2V5LCB2YWx1ZSk7XG4gIH1cbiAgZ2V0ZGljdFZhbHVlKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UodGhpcy5kaWN0LmdldChrZXkpKTtcbiAgfVxuICByZW1vdmVkaWN0VmFsdWUoa2V5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpY3QuZGVsZXRlKGtleSk7XG4gIH1cbiAgY29udmV5U2VhcmNoSWNvbih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBmZXRjaFVuaXRzTGlzdCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnVuaXRzTGlzdCkge1xuICAgICAgICB0aGlzLmdldERhdGEoJ3VuaXQvbGlzdC92aWV3Jykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHRoaXMudW5pdHNMaXN0ID0gcmVzLmRhdGE7XG4gICAgICAgICAgICByZXNvbHZlKHRoaXMudW5pdHNMaXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLnVuaXRzTGlzdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmZXRjaE1hdGVyaWFsc0xpc3QoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghdGhpcy5tYXRlcmlhbHNMaXN0KSB7XG4gICAgICAgIHRoaXMuZ2V0RGF0YSgnbWF0ZXJpYWwvbGlzdC92aWV3Jykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMubWF0ZXJpYWxzTGlzdCA9IHRoaXMuZmlsdGVybWF0ZXJpYWxMaXN0KHJlcy5kYXRhKTtcbiAgICAgICAgICByZXNvbHZlKHRoaXMubWF0ZXJpYWxzTGlzdCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLm1hdGVyaWFsc0xpc3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGZldGNoTWF0ZXJpYWxzTGlzdEZvckN1c3RvbWVyKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMubWF0ZXJpYWxzTGlzdEZvckN1c3RvbWVyKSB7XG4gICAgICAgIHRoaXMuZ2V0RGF0YSgnbWF0ZXJpYWwvbGlzdC92aWV3Jykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMubWF0ZXJpYWxzTGlzdEZvckN1c3RvbWVyID0gdGhpcy5maWx0ZXJtYXRlcmlhbExpc3QocmVzLmRhdGEpO1xuICAgICAgICAgIHJlc29sdmUodGhpcy5tYXRlcmlhbHNMaXN0Rm9yQ3VzdG9tZXIpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUodGhpcy5tYXRlcmlhbHNMaXN0Rm9yQ3VzdG9tZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGZpbHRlcm1hdGVyaWFsTGlzdChsaXN0KSB7XG4gICAgbGV0IG1ldGVyaWFsTGlzdCA9IFtdO1xuICAgIGxpc3QubWFwKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS5zdWIubGVuZ3RoID4gMCkge1xuICAgICAgICBpdGVtLnN1Yi5tYXAoKHN1Ykl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoc3ViSXRlbS5hZGRfdG9fbWFya2V0cGxhY2UpIHtcbiAgICAgICAgICAgIHN1Ykl0ZW0ubWF0ZXJpYWwgPSBpdGVtLm1hdGVyaWFsO1xuICAgICAgICAgICAgc3ViSXRlbS5tYXRlcmlhbF9pZCA9IGl0ZW0ubWF0ZXJpYWxfaWQ7XG4gICAgICAgICAgICBzdWJJdGVtLmxhYmVsID0gaXRlbS5tYXRlcmlhbCArICcgfCAnICsgc3ViSXRlbS5zdWJfbWF0ZXJpYWw7XG4gICAgICAgICAgICBtZXRlcmlhbExpc3QucHVzaChzdWJJdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIG1ldGVyaWFsTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gYS5sYWJlbC5sb2NhbGVDb21wYXJlKGIubGFiZWwpKTtcbiAgICByZXR1cm4gbWV0ZXJpYWxMaXN0O1xuICB9XG4gIGZldGNoQ3VzdG9tZXJzTGlzdCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmN1c3RvbWVyc0xpc3QpIHtcbiAgICAgICAgdGhpcy5nZXREYXRhKCdjb21wYW55L2xpc3QvdmlldycpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbWVyc0xpc3QgPSByZXMuZGF0YTtcbiAgICAgICAgICAgIHJlc29sdmUodGhpcy5jdXN0b21lcnNMaXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmN1c3RvbWVyc0xpc3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZmV0Y2hMb2NhdGlvbmxpc3QoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuZ2V0UmVzdERhdGEoJ2xvY2F0aW9ucy9hbGwnKS5zdWJzY3JpYmUoKHJlczogeyBkYXRhOiBMb2NhdGlvbkFsbCB9KSA9PiB7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICB0aGlzLmxvY2F0aW9uTGlzdCA9IHJlcy5kYXRhO1xuICAgICAgICAgIHRoaXMubG9jYXRpb25MaXN0ID0gdGhpcy5sb2NhdGlvbkxpc3QubWFwKChvYmplY3QpID0+IHtcbiAgICAgICAgICAgIG9iamVjdC5mb3JtYXR0ZWRfYWRkcmVzcyA9IGAke29iamVjdC5uYW1lfSB8ICR7b2JqZWN0LnN0cmVldH0gJHtvYmplY3QuY2l0eX0sICR7b2JqZWN0LnN0YXRlfSAke29iamVjdC56aXB9YDtcbiAgICAgICAgICAgICAgY29uc3QgbmV3SXRlbSA9IHtcbiAgICAgICAgICAgICAgY2l0eTogb2JqZWN0LmNpdHksXG4gICAgICAgICAgICAgIGxuZzogb2JqZWN0LmxvbmdpdHVkZSxcbiAgICAgICAgICAgICAgbG9jYXRpb25faWQ6IG9iamVjdC5sb2NhdGlvbl9pZCxcbiAgICAgICAgICAgICAgbGF0OiBvYmplY3QubGF0aXR1ZGUsXG4gICAgICAgICAgICAgIG5hbWU6ICBvYmplY3QubmFtZSxcbiAgICAgICAgICAgICAgc3RhdGU6IG9iamVjdC5zdGF0ZSxcbiAgICAgICAgICAgICAgc3RyZWV0OiBvYmplY3Quc3RyZWV0LFxuICAgICAgICAgICAgICB6aXA6IG9iamVjdC56aXAsXG4gICAgICAgICAgICAgIGZvcm1hdHRlZF9hZGRyZXNzOiBvYmplY3QuZm9ybWF0dGVkX2FkZHJlc3NcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ld0l0ZW07XG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXNvbHZlKHRoaXMubG9jYXRpb25MaXN0KTtcbiAgICAgICAgfVxuICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,7 +0,0 @@
1
- /*
2
- * Public API Surface of @aggdirect/coolmap-services
3
- */
4
- export * from './lib/service/coolmap.service';
5
- export * from './lib/service/utils.service';
6
- export * from './lib/service/data-model';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAtc2VydmljZXMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgQGFnZ2RpcmVjdC9jb29sbWFwLXNlcnZpY2VzXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvY29vbG1hcC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvdXRpbHMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2RhdGEtbW9kZWwnO1xuIl19