@josuelmm/cordova-background-geolocation 3.2.0 → 4.2.2

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 (51) hide show
  1. package/.npmignore +4 -0
  2. package/CHANGELOG.md +290 -0
  3. package/CLAUDE.md +56 -0
  4. package/HISTORY.md +125 -0
  5. package/README.md +189 -4
  6. package/android/CDVBackgroundGeolocation/src/main/java/com/marianhello/bgloc/cordova/ConfigMapper.java +90 -0
  7. package/android/CDVBackgroundGeolocation/src/main/java/com/tenforwardconsulting/bgloc/cordova/BackgroundGeolocationPlugin.java +310 -1
  8. package/android/common/src/main/java/com/marianhello/bgloc/BackgroundGeolocationFacade.java +127 -0
  9. package/android/common/src/main/java/com/marianhello/bgloc/BootCompletedReceiver.java +27 -11
  10. package/android/common/src/main/java/com/marianhello/bgloc/Config.java +268 -0
  11. package/android/common/src/main/java/com/marianhello/bgloc/HttpPostService.java +86 -26
  12. package/android/common/src/main/java/com/marianhello/bgloc/PluginDelegate.java +26 -0
  13. package/android/common/src/main/java/com/marianhello/bgloc/PostLocationTask.java +42 -5
  14. package/android/common/src/main/java/com/marianhello/bgloc/driving/DrivingEventsDetector.java +265 -0
  15. package/android/common/src/main/java/com/marianhello/bgloc/http/UrlTemplateResolver.java +115 -0
  16. package/android/common/src/main/java/com/marianhello/bgloc/oem/BatteryOemHelper.java +214 -0
  17. package/android/common/src/main/java/com/marianhello/bgloc/provider/ActivityRecognitionLocationProvider.java +13 -9
  18. package/android/common/src/main/java/com/marianhello/bgloc/provider/DistanceFilterLocationProvider.java +29 -40
  19. package/android/common/src/main/java/com/marianhello/bgloc/provider/RawLocationProvider.java +14 -34
  20. package/android/common/src/main/java/com/marianhello/bgloc/sensor/SensorFusionDetector.java +199 -0
  21. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceImpl.java +305 -6
  22. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceProxy.java +14 -2
  23. package/android/common/src/main/java/com/marianhello/bgloc/sync/SyncAdapter.java +50 -3
  24. package/android/dependencies.gradle +0 -3
  25. package/angular/background-geolocation-events.ts +21 -0
  26. package/angular/background-geolocation.service.ts +63 -0
  27. package/angular/dist/background-geolocation-events.d.ts +18 -1
  28. package/angular/dist/background-geolocation.service.d.ts +36 -0
  29. package/angular/dist/esm2022/background-geolocation-events.mjs +22 -1
  30. package/angular/dist/esm2022/background-geolocation.service.mjs +35 -1
  31. package/angular/dist/fesm2022/josuelmm-cordova-background-geolocation.mjs +55 -0
  32. package/angular/dist/fesm2022/josuelmm-cordova-background-geolocation.mjs.map +1 -1
  33. package/ios/CDVBackgroundGeolocation/CDVBackgroundGeolocation.m +312 -1
  34. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.h +22 -0
  35. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.m +400 -15
  36. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.h +12 -0
  37. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.m +83 -5
  38. package/ios/common/BackgroundGeolocation/MAURConfig.h +15 -0
  39. package/ios/common/BackgroundGeolocation/MAURConfig.m +100 -3
  40. package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.m +29 -2
  41. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.h +4 -0
  42. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.m +97 -44
  43. package/ios/common/BackgroundGeolocation/MAURSensorFusionDetector.h +41 -0
  44. package/ios/common/BackgroundGeolocation/MAURSensorFusionDetector.m +137 -0
  45. package/ios/common/BackgroundGeolocation/MAURUrlTemplateResolver.h +31 -0
  46. package/ios/common/BackgroundGeolocation/MAURUrlTemplateResolver.m +107 -0
  47. package/package.json +41 -1
  48. package/plugin.xml +19 -8
  49. package/www/BackgroundGeolocation.d.ts +517 -3
  50. package/www/BackgroundGeolocation.js +54 -1
  51. package/RELEASE.MD +0 -16
@@ -31,6 +31,42 @@ export declare class BackgroundGeolocationService {
31
31
  getCurrentLocation(success?: (location: any) => void, fail?: (error: any) => void, options?: any): Promise<any>;
32
32
  getStationaryLocation(success?: (location: any) => void, fail?: (error: any) => void): Promise<any>;
33
33
  checkStatus(success?: (status: any) => void, fail?: (error: any) => void): Promise<any>;
34
+ /**
35
+ * Extended diagnostics. Returns permissions, battery optimisation state,
36
+ * last fix age, pending sync count, OEM info and (on iOS) precise location /
37
+ * background refresh / low power flags.
38
+ *
39
+ * @since 3.5.0
40
+ */
41
+ getDiagnostics(success?: (diagnostics: any) => void, fail?: (error: any) => void): Promise<any>;
42
+ /** @since 3.6.0 */
43
+ isIgnoringBatteryOptimizations(success?: (whitelisted: boolean) => void, fail?: (error: any) => void): Promise<boolean>;
44
+ /** @since 3.6.0 */
45
+ requestIgnoreBatteryOptimizations(success?: (whitelisted: boolean) => void, fail?: (error: any) => void): Promise<boolean>;
46
+ /** @since 3.6.0 */
47
+ openBatterySettings(success?: () => void, fail?: (error: any) => void): Promise<void>;
48
+ /** @since 3.6.0 */
49
+ openAutoStartSettings(success?: (info: {
50
+ opened: boolean;
51
+ manufacturer: string;
52
+ screen: string;
53
+ }) => void, fail?: (error: any) => void): Promise<{
54
+ opened: boolean;
55
+ manufacturer: string;
56
+ screen: string;
57
+ }>;
58
+ /** @since 3.6.0 */
59
+ getManufacturerHelp(success?: (info: {
60
+ manufacturer: string;
61
+ steps: string[];
62
+ }) => void, fail?: (error: any) => void): Promise<{
63
+ manufacturer: string;
64
+ steps: string[];
65
+ }>;
66
+ /** @since 4.0.0 */
67
+ triggerSOS(payload?: {
68
+ [key: string]: any;
69
+ }, success?: () => void, fail?: (error: any) => void): Promise<void>;
34
70
  showAppSettings(): Promise<void>;
35
71
  /** Open app settings (alias for showAppSettings). */
36
72
  openSettings(): Promise<void>;
@@ -15,5 +15,26 @@ export var BackgroundGeolocationEvents;
15
15
  BackgroundGeolocationEvents["activity"] = "activity";
16
16
  BackgroundGeolocationEvents["stationary"] = "stationary";
17
17
  BackgroundGeolocationEvents["location"] = "location";
18
+ // v3.5+
19
+ BackgroundGeolocationEvents["heartbeat"] = "heartbeat";
20
+ BackgroundGeolocationEvents["syncStart"] = "syncStart";
21
+ BackgroundGeolocationEvents["syncProgress"] = "syncProgress";
22
+ BackgroundGeolocationEvents["syncSuccess"] = "syncSuccess";
23
+ BackgroundGeolocationEvents["syncError"] = "syncError";
24
+ // v4.0
25
+ BackgroundGeolocationEvents["tripStart"] = "tripStart";
26
+ BackgroundGeolocationEvents["tripEnd"] = "tripEnd";
27
+ BackgroundGeolocationEvents["moving"] = "moving";
28
+ BackgroundGeolocationEvents["stopped"] = "stopped";
29
+ BackgroundGeolocationEvents["speeding"] = "speeding";
30
+ BackgroundGeolocationEvents["providerChange"] = "providerChange";
31
+ BackgroundGeolocationEvents["sos"] = "sos";
32
+ // v4.1
33
+ BackgroundGeolocationEvents["hardBrake"] = "hardBrake";
34
+ BackgroundGeolocationEvents["rapidAcceleration"] = "rapidAcceleration";
35
+ BackgroundGeolocationEvents["sharpTurn"] = "sharpTurn";
36
+ BackgroundGeolocationEvents["possibleCrash"] = "possibleCrash";
37
+ // v4.2 sensor fusion
38
+ BackgroundGeolocationEvents["phoneUsageWhileDriving"] = "phoneUsageWhileDriving";
18
39
  })(BackgroundGeolocationEvents || (BackgroundGeolocationEvents = {}));
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2dyb3VuZC1nZW9sb2NhdGlvbi1ldmVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9iYWNrZ3JvdW5kLWdlb2xvY2F0aW9uLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSwyQkFZWDtBQVpELFdBQVksMkJBQTJCO0lBQ3JDLHdFQUF5QyxDQUFBO0lBQ3pDLGtFQUFtQyxDQUFBO0lBQ25DLHdEQUF5QixDQUFBO0lBQ3pCLHdEQUF5QixDQUFBO0lBQ3pCLDhEQUErQixDQUFBO0lBQy9CLDhDQUFlLENBQUE7SUFDZiw0Q0FBYSxDQUFBO0lBQ2IsOENBQWUsQ0FBQTtJQUNmLG9EQUFxQixDQUFBO0lBQ3JCLHdEQUF5QixDQUFBO0lBQ3pCLG9EQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFaVywyQkFBMkIsS0FBM0IsMkJBQTJCLFFBWXRDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFdmVudCBuYW1lcyBmb3IgQmFja2dyb3VuZEdlb2xvY2F0aW9uLm9uKGV2ZW50KS5zdWJzY3JpYmUoLi4uKS5cbiAqIE1pcnJvcnMgdGhlIGVudW0gaW4gdGhlIG1haW4gcGFja2FnZSBzbyBpdCBpcyBhdmFpbGFibGUgYXQgcnVudGltZSBmcm9tIC9hbmd1bGFyLlxuICovXG5leHBvcnQgZW51bSBCYWNrZ3JvdW5kR2VvbG9jYXRpb25FdmVudHMge1xuICBodHRwX2F1dGhvcml6YXRpb24gPSAnaHR0cF9hdXRob3JpemF0aW9uJyxcbiAgYWJvcnRfcmVxdWVzdGVkID0gJ2Fib3J0X3JlcXVlc3RlZCcsXG4gIGJhY2tncm91bmQgPSAnYmFja2dyb3VuZCcsXG4gIGZvcmVncm91bmQgPSAnZm9yZWdyb3VuZCcsXG4gIGF1dGhvcml6YXRpb24gPSAnYXV0aG9yaXphdGlvbicsXG4gIGVycm9yID0gJ2Vycm9yJyxcbiAgc3RvcCA9ICdzdG9wJyxcbiAgc3RhcnQgPSAnc3RhcnQnLFxuICBhY3Rpdml0eSA9ICdhY3Rpdml0eScsXG4gIHN0YXRpb25hcnkgPSAnc3RhdGlvbmFyeScsXG4gIGxvY2F0aW9uID0gJ2xvY2F0aW9uJyxcbn1cbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2dyb3VuZC1nZW9sb2NhdGlvbi1ldmVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9iYWNrZ3JvdW5kLWdlb2xvY2F0aW9uLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSwyQkFpQ1g7QUFqQ0QsV0FBWSwyQkFBMkI7SUFDckMsd0VBQXlDLENBQUE7SUFDekMsa0VBQW1DLENBQUE7SUFDbkMsd0RBQXlCLENBQUE7SUFDekIsd0RBQXlCLENBQUE7SUFDekIsOERBQStCLENBQUE7SUFDL0IsOENBQWUsQ0FBQTtJQUNmLDRDQUFhLENBQUE7SUFDYiw4Q0FBZSxDQUFBO0lBQ2Ysb0RBQXFCLENBQUE7SUFDckIsd0RBQXlCLENBQUE7SUFDekIsb0RBQXFCLENBQUE7SUFDckIsUUFBUTtJQUNSLHNEQUF1QixDQUFBO0lBQ3ZCLHNEQUF1QixDQUFBO0lBQ3ZCLDREQUE2QixDQUFBO0lBQzdCLDBEQUEyQixDQUFBO0lBQzNCLHNEQUF1QixDQUFBO0lBQ3ZCLE9BQU87SUFDUCxzREFBdUIsQ0FBQTtJQUN2QixrREFBbUIsQ0FBQTtJQUNuQixnREFBaUIsQ0FBQTtJQUNqQixrREFBbUIsQ0FBQTtJQUNuQixvREFBcUIsQ0FBQTtJQUNyQixnRUFBaUMsQ0FBQTtJQUNqQywwQ0FBVyxDQUFBO0lBQ1gsT0FBTztJQUNQLHNEQUF1QixDQUFBO0lBQ3ZCLHNFQUF1QyxDQUFBO0lBQ3ZDLHNEQUF1QixDQUFBO0lBQ3ZCLDhEQUErQixDQUFBO0lBQy9CLHFCQUFxQjtJQUNyQixnRkFBaUQsQ0FBQTtBQUNuRCxDQUFDLEVBakNXLDJCQUEyQixLQUEzQiwyQkFBMkIsUUFpQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFdmVudCBuYW1lcyBmb3IgQmFja2dyb3VuZEdlb2xvY2F0aW9uLm9uKGV2ZW50KS5zdWJzY3JpYmUoLi4uKS5cbiAqIE1pcnJvcnMgdGhlIGVudW0gaW4gdGhlIG1haW4gcGFja2FnZSBzbyBpdCBpcyBhdmFpbGFibGUgYXQgcnVudGltZSBmcm9tIC9hbmd1bGFyLlxuICovXG5leHBvcnQgZW51bSBCYWNrZ3JvdW5kR2VvbG9jYXRpb25FdmVudHMge1xuICBodHRwX2F1dGhvcml6YXRpb24gPSAnaHR0cF9hdXRob3JpemF0aW9uJyxcbiAgYWJvcnRfcmVxdWVzdGVkID0gJ2Fib3J0X3JlcXVlc3RlZCcsXG4gIGJhY2tncm91bmQgPSAnYmFja2dyb3VuZCcsXG4gIGZvcmVncm91bmQgPSAnZm9yZWdyb3VuZCcsXG4gIGF1dGhvcml6YXRpb24gPSAnYXV0aG9yaXphdGlvbicsXG4gIGVycm9yID0gJ2Vycm9yJyxcbiAgc3RvcCA9ICdzdG9wJyxcbiAgc3RhcnQgPSAnc3RhcnQnLFxuICBhY3Rpdml0eSA9ICdhY3Rpdml0eScsXG4gIHN0YXRpb25hcnkgPSAnc3RhdGlvbmFyeScsXG4gIGxvY2F0aW9uID0gJ2xvY2F0aW9uJyxcbiAgLy8gdjMuNStcbiAgaGVhcnRiZWF0ID0gJ2hlYXJ0YmVhdCcsXG4gIHN5bmNTdGFydCA9ICdzeW5jU3RhcnQnLFxuICBzeW5jUHJvZ3Jlc3MgPSAnc3luY1Byb2dyZXNzJyxcbiAgc3luY1N1Y2Nlc3MgPSAnc3luY1N1Y2Nlc3MnLFxuICBzeW5jRXJyb3IgPSAnc3luY0Vycm9yJyxcbiAgLy8gdjQuMFxuICB0cmlwU3RhcnQgPSAndHJpcFN0YXJ0JyxcbiAgdHJpcEVuZCA9ICd0cmlwRW5kJyxcbiAgbW92aW5nID0gJ21vdmluZycsXG4gIHN0b3BwZWQgPSAnc3RvcHBlZCcsXG4gIHNwZWVkaW5nID0gJ3NwZWVkaW5nJyxcbiAgcHJvdmlkZXJDaGFuZ2UgPSAncHJvdmlkZXJDaGFuZ2UnLFxuICBzb3MgPSAnc29zJyxcbiAgLy8gdjQuMVxuICBoYXJkQnJha2UgPSAnaGFyZEJyYWtlJyxcbiAgcmFwaWRBY2NlbGVyYXRpb24gPSAncmFwaWRBY2NlbGVyYXRpb24nLFxuICBzaGFycFR1cm4gPSAnc2hhcnBUdXJuJyxcbiAgcG9zc2libGVDcmFzaCA9ICdwb3NzaWJsZUNyYXNoJyxcbiAgLy8gdjQuMiBzZW5zb3IgZnVzaW9uXG4gIHBob25lVXNhZ2VXaGlsZURyaXZpbmcgPSAncGhvbmVVc2FnZVdoaWxlRHJpdmluZycsXG59XG4iXX0=
@@ -57,6 +57,40 @@ export class BackgroundGeolocationService {
57
57
  checkStatus(success, fail) {
58
58
  return this.ensurePlugin().checkStatus(success, fail);
59
59
  }
60
+ /**
61
+ * Extended diagnostics. Returns permissions, battery optimisation state,
62
+ * last fix age, pending sync count, OEM info and (on iOS) precise location /
63
+ * background refresh / low power flags.
64
+ *
65
+ * @since 3.5.0
66
+ */
67
+ getDiagnostics(success, fail) {
68
+ return this.ensurePlugin().getDiagnostics(success, fail);
69
+ }
70
+ /** @since 3.6.0 */
71
+ isIgnoringBatteryOptimizations(success, fail) {
72
+ return this.ensurePlugin().isIgnoringBatteryOptimizations(success, fail);
73
+ }
74
+ /** @since 3.6.0 */
75
+ requestIgnoreBatteryOptimizations(success, fail) {
76
+ return this.ensurePlugin().requestIgnoreBatteryOptimizations(success, fail);
77
+ }
78
+ /** @since 3.6.0 */
79
+ openBatterySettings(success, fail) {
80
+ return this.ensurePlugin().openBatterySettings(success, fail);
81
+ }
82
+ /** @since 3.6.0 */
83
+ openAutoStartSettings(success, fail) {
84
+ return this.ensurePlugin().openAutoStartSettings(success, fail);
85
+ }
86
+ /** @since 3.6.0 */
87
+ getManufacturerHelp(success, fail) {
88
+ return this.ensurePlugin().getManufacturerHelp(success, fail);
89
+ }
90
+ /** @since 4.0.0 */
91
+ triggerSOS(payload, success, fail) {
92
+ return this.ensurePlugin().triggerSOS(payload, success, fail);
93
+ }
60
94
  showAppSettings() {
61
95
  return this.ensurePlugin().showAppSettings();
62
96
  }
@@ -163,4 +197,4 @@ export class BackgroundGeolocationService {
163
197
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BackgroundGeolocationService, decorators: [{
164
198
  type: Injectable
165
199
  }] });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2dyb3VuZC1nZW9sb2NhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vYmFja2dyb3VuZC1nZW9sb2NhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsSUFBSSxjQUFjLENBQzlELDhCQUE4QixDQUMvQixDQUFDO0FBRUY7Ozs7Ozs7Ozs7R0FVRztBQUVILE1BQU0sT0FBTyw0QkFBNEI7SUFFdkMsOERBQThEO0lBQzlELElBQVksTUFBTTtRQUNoQixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUMvQyxPQUFRLE1BQWMsQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUM7SUFDdkQsQ0FBQztJQUVPLFlBQVk7UUFDbEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxNQUFNLElBQUksS0FBSyxDQUNiLHdJQUF3SSxDQUN6SSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFZLEVBQUUsT0FBb0IsRUFBRSxJQUF5QjtRQUNyRSxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVE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RUFBRSxDQUFDO2dCQUM5QyxDQUFDO2dCQUNELFdBQVcsS0FBSyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDbEMsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBK0YsQ0FBQztRQUNuSSxPQUFPO1lBQ0wsU0FBUyxDQUFDLEVBQXdCO2dCQUNoQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN0QixPQUFPLEVBQUUsV0FBVyxLQUFLLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4RCxDQUFDO1lBQ0QsV0FBVyxLQUFrQyxDQUFDO1NBQy9DLENBQUM7SUFDSixDQUFDO0lBRUQsb0ZBQW9GO0lBQ3BGLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO3dHQXJQVSw0QkFBNEI7NEdBQTVCLDRCQUE0Qjs7NEZBQTVCLDRCQUE0QjtrQkFEeEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogVG9rZW4gdXNlZCB0byBwcm92aWRlIEJhY2tncm91bmRHZW9sb2NhdGlvblNlcnZpY2Ugd2l0aG91dCB0cmlnZ2VyaW5nIEpJVC5cbiAqIFRoZSBtb2R1bGUgcHJvdmlkZXMgdGhpcyB0b2tlbiB3aXRoIHVzZUZhY3Rvcnk7IHRoZSBjbGFzcyBpcyBhbGlhc2VkIHZpYSB1c2VFeGlzdGluZ1xuICogc28geW91IHN0aWxsIGluamVjdCBjb25zdHJ1Y3Rvcihwcml2YXRlIGJnOiBCYWNrZ3JvdW5kR2VvbG9jYXRpb25TZXJ2aWNlKSB7fS5cbiAqL1xuZXhwb3J0IGNvbnN0IEJBQ0tHUk9VTkRfR0VPTE9DQVRJT05fU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxCYWNrZ3JvdW5kR2VvbG9jYXRpb25TZXJ2aWNlPihcbiAgJ0JhY2tncm91bmRHZW9sb2NhdGlvblNlcnZpY2UnXG4pO1xuXG4vKipcbiAqIEFuZ3VsYXIgc2VydmljZSB0aGF0IHdyYXBzIHRoZSBDb3Jkb3ZhL0NhcGFjaXRvciBCYWNrZ3JvdW5kR2VvbG9jYXRpb24gcGx1Z2luLlxuICogVXNlIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGluc3RlYWQgb2YgdGhlIGdsb2JhbCBCYWNrZ3JvdW5kR2VvbG9jYXRpb24gb2JqZWN0LlxuICpcbiAqIFRoZSBuYXRpdmUgcGx1Z2luIG11c3QgYmUgaW5zdGFsbGVkIGFuZCBhdmFpbGFibGUgKGUuZy4gYWZ0ZXIgZGV2aWNlcmVhZHkpLlxuICogVHlwZXMgKENvbmZpZ3VyZU9wdGlvbnMsIExvY2F0aW9uLCBldGMuKSBjYW4gYmUgaW1wb3J0ZWQgZnJvbVxuICogJ0Bqb3N1ZWxtbS9jb3Jkb3ZhLWJhY2tncm91bmQtZ2VvbG9jYXRpb24nLlxuICpcbiAqIFByb3ZpZGVkIHZpYSBCYWNrZ3JvdW5kR2VvbG9jYXRpb25Nb2R1bGUgdXNpbmcgYW4gSW5qZWN0aW9uVG9rZW4gKyB1c2VGYWN0b3J5XG4gKiBzbyBBT1QgYnVpbGRzIG5ldmVyIG5lZWQgdGhlIEpJVCBjb21waWxlciBmb3IgdGhpcyBjbGFzcy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEJhY2tncm91bmRHZW9sb2NhdGlvblNlcnZpY2Uge1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBnbG9iYWwgcGx1Z2luIGluc3RhbmNlIChDb3Jkb3ZhL0NhcGFjaXRvcikuICovXG4gIHByaXZhdGUgZ2V0IHBsdWdpbigpOiBhbnkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5CYWNrZ3JvdW5kR2VvbG9jYXRpb24gfHwgbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlUGx1Z2luKCk6IGFueSB7XG4gICAgY29uc3QgcCA9IHRoaXMucGx1Z2luO1xuICAgIGlmICghcCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQmFja2dyb3VuZEdlb2xvY2F0aW9uIGlzIG5vdCBhdmFpbGFibGUuIEVuc3VyZSB0aGUgcGx1Z2luIGlzIGluc3RhbGxlZCBhbmQgdGhlIGFwcCBpcyBydW5uaW5nIGluIGEgbmF0aXZlIGNvbnRleHQgKENvcmRvdmEvQ2FwYWNpdG9yKS4nXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcDtcbiAgfVxuXG4gIGNvbmZpZ3VyZShvcHRpb25zOiBhbnksIHN1Y2Nlc3M/OiAoKSA9PiB2b2lkLCBmYWlsPzogKGVycjogYW55KSA9PiB2b2lkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuY29uZmlndXJlKG9wdGlvbnMsIHN1Y2Nlc3MsIGZhaWwpO1xuICB9XG5cbiAgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuc3RhcnQoKTtcbiAgfVxuXG4gIHN0b3AoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuc3RvcCgpO1xuICB9XG5cbiAgLyoqIEluZm9ybSB0aGUgbmF0aXZlIHBsdWdpbiB0aGF0IHRoZSBiYWNrZ3JvdW5kIHRhc2sgbWF5IGNvbXBsZXRlIChpT1MpLiBDYWxsIGFmdGVyIGhhbmRsaW5nIGxvY2F0aW9uL3N0YXRpb25hcnkgaW4gdGhlIGNhbGxiYWNrLiAqL1xuICBmaW5pc2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuZmluaXNoKCk7XG4gIH1cblxuICAvKiogRm9yY2UgdGhlIHBsdWdpbiB0byBlbnRlciBcIm1vdmluZ1wiIG9yIFwic3RhdGlvbmFyeVwiIHN0YXRlIChpT1MpLiAqL1xuICBjaGFuZ2VQYWNlKGlzTW92aW5nOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuY2hhbmdlUGFjZShpc01vdmluZyk7XG4gIH1cblxuICBnZXRDdXJyZW50TG9jYXRpb24oXG4gICAgc3VjY2Vzcz86IChsb2NhdGlvbjogYW55KSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZCxcbiAgICBvcHRpb25zPzogYW55XG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuZ2V0Q3VycmVudExvY2F0aW9uKHN1Y2Nlc3MsIGZhaWwsIG9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0U3RhdGlvbmFyeUxvY2F0aW9uKFxuICAgIHN1Y2Nlc3M/OiAobG9jYXRpb246IGFueSkgPT4gdm9pZCxcbiAgICBmYWlsPzogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVQbHVnaW4oKS5nZXRTdGF0aW9uYXJ5TG9jYXRpb24oc3VjY2VzcywgZmFpbCk7XG4gIH1cblxuICBjaGVja1N0YXR1cyhcbiAgICBzdWNjZXNzPzogKHN0YXR1czogYW55KSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLmNoZWNrU3RhdHVzKHN1Y2Nlc3MsIGZhaWwpO1xuICB9XG5cbiAgc2hvd0FwcFNldHRpbmdzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLnNob3dBcHBTZXR0aW5ncygpO1xuICB9XG5cbiAgLyoqIE9wZW4gYXBwIHNldHRpbmdzIChhbGlhcyBmb3Igc2hvd0FwcFNldHRpbmdzKS4gKi9cbiAgb3BlblNldHRpbmdzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLm9wZW5TZXR0aW5ncygpO1xuICB9XG5cbiAgc2hvd0xvY2F0aW9uU2V0dGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuc2hvd0xvY2F0aW9uU2V0dGluZ3MoKTtcbiAgfVxuXG4gIGdldFBsdWdpblZlcnNpb24oXG4gICAgc3VjY2Vzcz86ICh2ZXJzaW9uOiBzdHJpbmcpID0+IHZvaWQsXG4gICAgZmFpbD86IChlcnJvcjogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuZ2V0UGx1Z2luVmVyc2lvbihzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIGdldExvY2F0aW9ucyhcbiAgICBzdWNjZXNzPzogKGxvY2F0aW9uczogYW55W10pID0+IHZvaWQsXG4gICAgZmFpbD86IChlcnJvcjogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8YW55W10+IHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVQbHVnaW4oKS5nZXRMb2NhdGlvbnMoc3VjY2VzcywgZmFpbCk7XG4gIH1cblxuICBnZXRWYWxpZExvY2F0aW9ucyhcbiAgICBzdWNjZXNzPzogKGxvY2F0aW9uczogYW55W10pID0+IHZvaWQsXG4gICAgZmFpbD86IChlcnJvcjogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8YW55W10+IHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVQbHVnaW4oKS5nZXRWYWxpZExvY2F0aW9ucyhzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIGdldFZhbGlkTG9jYXRpb25zQW5kRGVsZXRlKFxuICAgIHN1Y2Nlc3M/OiAobG9jYXRpb25zOiBhbnlbXSkgPT4gdm9pZCxcbiAgICBmYWlsPzogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLmdldFZhbGlkTG9jYXRpb25zQW5kRGVsZXRlKHN1Y2Nlc3MsIGZhaWwpO1xuICB9XG5cbiAgZGVsZXRlTG9jYXRpb24oXG4gICAgbG9jYXRpb25JZDogbnVtYmVyLFxuICAgIHN1Y2Nlc3M/OiAoKSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVQbHVnaW4oKS5kZWxldGVMb2NhdGlvbihsb2NhdGlvbklkLCBzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIGRlbGV0ZUFsbExvY2F0aW9ucyhcbiAgICBzdWNjZXNzPzogKCkgPT4gdm9pZCxcbiAgICBmYWlsPzogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuZGVsZXRlQWxsTG9jYXRpb25zKHN1Y2Nlc3MsIGZhaWwpO1xuICB9XG5cbiAgc3dpdGNoTW9kZShcbiAgICBtb2RlSWQ6IG51bWJlcixcbiAgICBzdWNjZXNzPzogKCkgPT4gdm9pZCxcbiAgICBmYWlsPzogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuc3dpdGNoTW9kZShtb2RlSWQsIHN1Y2Nlc3MsIGZhaWwpO1xuICB9XG5cbiAgZm9yY2VTeW5jKFxuICAgIHN1Y2Nlc3M/OiAoKSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVQbHVnaW4oKS5mb3JjZVN5bmMoc3VjY2VzcywgZmFpbCk7XG4gIH1cblxuICBjbGVhclN5bmMoXG4gICAgc3VjY2Vzcz86ICgpID0+IHZvaWQsXG4gICAgZmFpbD86IChlcnJvcjogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLmNsZWFyU3luYyhzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIGdldFBlbmRpbmdTeW5jQ291bnQoXG4gICAgc3VjY2Vzcz86IChjb3VudDogbnVtYmVyKSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLmdldFBlbmRpbmdTeW5jQ291bnQoc3VjY2VzcywgZmFpbCk7XG4gIH1cblxuICBzdGFydFNlc3Npb24oXG4gICAgc3VjY2Vzcz86ICgpID0+IHZvaWQsXG4gICAgZmFpbD86IChlcnJvcjogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLnN0YXJ0U2Vzc2lvbihzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIGdldFNlc3Npb25Mb2NhdGlvbnMoXG4gICAgc3VjY2Vzcz86IChsb2NhdGlvbnM6IGFueVtdKSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuZ2V0U2Vzc2lvbkxvY2F0aW9ucyhzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIGNsZWFyU2Vzc2lvbihcbiAgICBzdWNjZXNzPzogKCkgPT4gdm9pZCxcbiAgICBmYWlsPzogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuY2xlYXJTZXNzaW9uKHN1Y2Nlc3MsIGZhaWwpO1xuICB9XG5cbiAgZ2V0U2Vzc2lvbkxvY2F0aW9uc0NvdW50KFxuICAgIHN1Y2Nlc3M/OiAoY291bnQ6IG51bWJlcikgPT4gdm9pZCxcbiAgICBmYWlsPzogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVQbHVnaW4oKS5nZXRTZXNzaW9uTG9jYXRpb25zQ291bnQoc3VjY2VzcywgZmFpbCk7XG4gIH1cblxuICBnZXRDb25maWcoXG4gICAgc3VjY2Vzcz86IChjb25maWc6IGFueSkgPT4gdm9pZCxcbiAgICBmYWlsPzogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVQbHVnaW4oKS5nZXRDb25maWcoc3VjY2VzcywgZmFpbCk7XG4gIH1cblxuICBnZXRMb2dFbnRyaWVzKFxuICAgIGxpbWl0OiBudW1iZXIsXG4gICAgZnJvbUlkOiBudW1iZXIsXG4gICAgbWluTGV2ZWw6IHN0cmluZyxcbiAgICBzdWNjZXNzPzogKGVudHJpZXM6IGFueVtdKSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuZ2V0TG9nRW50cmllcyhsaW1pdCwgZnJvbUlkLCBtaW5MZXZlbCwgc3VjY2VzcywgZmFpbCk7XG4gIH1cblxuICByZW1vdmVBbGxMaXN0ZW5lcnMoZXZlbnQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZVBsdWdpbigpLnJlbW92ZUFsbExpc3RlbmVycyhldmVudCk7XG4gIH1cblxuICBzdGFydFRhc2soXG4gICAgc3VjY2Vzcz86ICh0YXNrS2V5OiBudW1iZXIpID0+IHZvaWQsXG4gICAgZmFpbD86IChlcnJvcjogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuc3RhcnRUYXNrKHN1Y2Nlc3MsIGZhaWwpO1xuICB9XG5cbiAgZW5kVGFzayhcbiAgICB0YXNrS2V5OiBudW1iZXIsXG4gICAgc3VjY2Vzcz86ICgpID0+IHZvaWQsXG4gICAgZmFpbD86IChlcnJvcjogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLmVuZFRhc2sodGFza0tleSwgc3VjY2VzcywgZmFpbCk7XG4gIH1cblxuICBoZWFkbGVzc1Rhc2sodGFzazogKGV2ZW50OiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZVBsdWdpbigpLmhlYWRsZXNzVGFzayh0YXNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhbiBldmVudCBsaXN0ZW5lci4gQ29tcGF0aWJsZSB3aXRoIEF3ZXNvbWUtc3R5bGUgdXNhZ2U6XG4gICAqIC5vbihCYWNrZ3JvdW5kR2VvbG9jYXRpb25FdmVudHMuZXJyb3IpLnN1YnNjcmliZSgoZXJyKSA9PiAuLi4pIOKAlCByZXR1cm5zIHN1YnNjcmlwdGlvbiB3aXRoIC51bnN1YnNjcmliZSgpLlxuICAgKiAub24oJ2xvY2F0aW9uJywgKGxvYykgPT4gLi4uKSDigJQgYWxzbyBzdXBwb3J0ZWQ7IHJldHVybmVkIG9iamVjdCBoYXMgLnVuc3Vic2NyaWJlKCkuXG4gICAqL1xuICBvbihldmVudE5hbWU6IHN0cmluZywgY2FsbGJhY2s/OiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHsgc3Vic2NyaWJlKGNiOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHsgdW5zdWJzY3JpYmUoKTogdm9pZCB9OyB1bnN1YnNjcmliZSgpOiB2b2lkIH0ge1xuICAgIGNvbnN0IHBsdWdpbiA9IHRoaXMuZW5zdXJlUGx1Z2luKCk7XG4gICAgaWYgKGNhbGxiYWNrICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHN1YiA9IHBsdWdpbi5vbihldmVudE5hbWUsIGNhbGxiYWNrKSBhcyB7IHJlbW92ZT86ICgpID0+IHZvaWQgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1YnNjcmliZShjYjogKHZhbHVlOiBhbnkpID0+IHZvaWQpIHtcbiAgICAgICAgICBjb25zdCBzID0gY2IgPyAocGx1Z2luLm9uKGV2ZW50TmFtZSwgY2IpIGFzIHsgcmVtb3ZlPzogKCkgPT4gdm9pZCB9KSA6IG51bGw7XG4gICAgICAgICAgcmV0dXJuIHsgdW5zdWJzY3JpYmUoKSB7IHM/LnJlbW92ZT8uKCk7IH0gfTtcbiAgICAgICAgfSxcbiAgICAgICAgdW5zdWJzY3JpYmUoKSB7IHN1Yi5yZW1vdmU/LigpOyB9XG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBjaGFubmVsID0gcGx1Z2luLm9uKGV2ZW50TmFtZSkgYXMgeyBzdWJzY3JpYmU6IChjYjogKHY6IGFueSkgPT4gdm9pZCkgPT4gdm9pZDsgdW5zdWJzY3JpYmU6IChjYjogKHY6IGFueSkgPT4gdm9pZCkgPT4gdm9pZCB9O1xuICAgIHJldHVybiB7XG4gICAgICBzdWJzY3JpYmUoY2I6ICh2YWx1ZTogYW55KSA9PiB2b2lkKSB7XG4gICAgICAgIGNoYW5uZWwuc3Vic2NyaWJlKGNiKTtcbiAgICAgICAgcmV0dXJuIHsgdW5zdWJzY3JpYmUoKSB7IGNoYW5uZWwudW5zdWJzY3JpYmUoY2IpOyB9IH07XG4gICAgICB9LFxuICAgICAgdW5zdWJzY3JpYmUoKSB7IC8qIG5vLW9wIHdoZW4gbm8gY2FsbGJhY2sgKi8gfVxuICAgIH07XG4gIH1cblxuICAvKiogQ29udmVuaWVuY2U6IGFjY2VzcyBwbHVnaW4gY29uc3RhbnRzIChlLmcuIEFDVElWSVRZX1BST1ZJREVSLCBISUdIX0FDQ1VSQUNZKS4gKi9cbiAgZ2V0IG5hdGl2ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbjtcbiAgfVxufVxuIl19
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2dyb3VuZC1nZW9sb2NhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vYmFja2dyb3VuZC1nZW9sb2NhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsSUFBSSxjQUFjLENBQzlELDhCQUE4QixDQUMvQixDQUFDO0FBRUY7Ozs7Ozs7Ozs7R0FVRztBQUVILE1BQU0sT0FBTyw0QkFBNEI7SUFFdkMsOERBQThEO0lBQzlELElBQVksTUFBTTtRQUNoQixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUMvQyxPQUFRLE1BQWMsQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUM7SUFDdkQsQ0FBQztJQUVPLFlBQVk7UUFDbEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxNQUFNLElBQUksS0FBSyxDQUNiLHdJQUF3SSxDQUN6SSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFZLEVBQUUsT0FBb0IsRUFBRSxJQUF5QjtRQUNyRSxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVE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S0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxDQUFDO2dCQUNELFdBQVcsS0FBSyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDbEMsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBK0YsQ0FBQztRQUNuSSxPQUFPO1lBQ0wsU0FBUyxDQUFDLEVBQXdCO2dCQUNoQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN0QixPQUFPLEVBQUUsV0FBVyxLQUFLLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4RCxDQUFDO1lBQ0QsV0FBVyxLQUFrQyxDQUFDO1NBQy9DLENBQUM7SUFDSixDQUFDO0lBRUQsb0ZBQW9GO0lBQ3BGLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO3dHQXBUVSw0QkFBNEI7NEdBQTVCLDRCQUE0Qjs7NEZBQTVCLDRCQUE0QjtrQkFEeEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogVG9rZW4gdXNlZCB0byBwcm92aWRlIEJhY2tncm91bmRHZW9sb2NhdGlvblNlcnZpY2Ugd2l0aG91dCB0cmlnZ2VyaW5nIEpJVC5cbiAqIFRoZSBtb2R1bGUgcHJvdmlkZXMgdGhpcyB0b2tlbiB3aXRoIHVzZUZhY3Rvcnk7IHRoZSBjbGFzcyBpcyBhbGlhc2VkIHZpYSB1c2VFeGlzdGluZ1xuICogc28geW91IHN0aWxsIGluamVjdCBjb25zdHJ1Y3Rvcihwcml2YXRlIGJnOiBCYWNrZ3JvdW5kR2VvbG9jYXRpb25TZXJ2aWNlKSB7fS5cbiAqL1xuZXhwb3J0IGNvbnN0IEJBQ0tHUk9VTkRfR0VPTE9DQVRJT05fU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxCYWNrZ3JvdW5kR2VvbG9jYXRpb25TZXJ2aWNlPihcbiAgJ0JhY2tncm91bmRHZW9sb2NhdGlvblNlcnZpY2UnXG4pO1xuXG4vKipcbiAqIEFuZ3VsYXIgc2VydmljZSB0aGF0IHdyYXBzIHRoZSBDb3Jkb3ZhL0NhcGFjaXRvciBCYWNrZ3JvdW5kR2VvbG9jYXRpb24gcGx1Z2luLlxuICogVXNlIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGluc3RlYWQgb2YgdGhlIGdsb2JhbCBCYWNrZ3JvdW5kR2VvbG9jYXRpb24gb2JqZWN0LlxuICpcbiAqIFRoZSBuYXRpdmUgcGx1Z2luIG11c3QgYmUgaW5zdGFsbGVkIGFuZCBhdmFpbGFibGUgKGUuZy4gYWZ0ZXIgZGV2aWNlcmVhZHkpLlxuICogVHlwZXMgKENvbmZpZ3VyZU9wdGlvbnMsIExvY2F0aW9uLCBldGMuKSBjYW4gYmUgaW1wb3J0ZWQgZnJvbVxuICogJ0Bqb3N1ZWxtbS9jb3Jkb3ZhLWJhY2tncm91bmQtZ2VvbG9jYXRpb24nLlxuICpcbiAqIFByb3ZpZGVkIHZpYSBCYWNrZ3JvdW5kR2VvbG9jYXRpb25Nb2R1bGUgdXNpbmcgYW4gSW5qZWN0aW9uVG9rZW4gKyB1c2VGYWN0b3J5XG4gKiBzbyBBT1QgYnVpbGRzIG5ldmVyIG5lZWQgdGhlIEpJVCBjb21waWxlciBmb3IgdGhpcyBjbGFzcy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEJhY2tncm91bmRHZW9sb2NhdGlvblNlcnZpY2Uge1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBnbG9iYWwgcGx1Z2luIGluc3RhbmNlIChDb3Jkb3ZhL0NhcGFjaXRvcikuICovXG4gIHByaXZhdGUgZ2V0IHBsdWdpbigpOiBhbnkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5CYWNrZ3JvdW5kR2VvbG9jYXRpb24gfHwgbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlUGx1Z2luKCk6IGFueSB7XG4gICAgY29uc3QgcCA9IHRoaXMucGx1Z2luO1xuICAgIGlmICghcCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQmFja2dyb3VuZEdlb2xvY2F0aW9uIGlzIG5vdCBhdmFpbGFibGUuIEVuc3VyZSB0aGUgcGx1Z2luIGlzIGluc3RhbGxlZCBhbmQgdGhlIGFwcCBpcyBydW5uaW5nIGluIGEgbmF0aXZlIGNvbnRleHQgKENvcmRvdmEvQ2FwYWNpdG9yKS4nXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcDtcbiAgfVxuXG4gIGNvbmZpZ3VyZShvcHRpb25zOiBhbnksIHN1Y2Nlc3M/OiAoKSA9PiB2b2lkLCBmYWlsPzogKGVycjogYW55KSA9PiB2b2lkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuY29uZmlndXJlKG9wdGlvbnMsIHN1Y2Nlc3MsIGZhaWwpO1xuICB9XG5cbiAgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuc3RhcnQoKTtcbiAgfVxuXG4gIHN0b3AoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuc3RvcCgpO1xuICB9XG5cbiAgLyoqIEluZm9ybSB0aGUgbmF0aXZlIHBsdWdpbiB0aGF0IHRoZSBiYWNrZ3JvdW5kIHRhc2sgbWF5IGNvbXBsZXRlIChpT1MpLiBDYWxsIGFmdGVyIGhhbmRsaW5nIGxvY2F0aW9uL3N0YXRpb25hcnkgaW4gdGhlIGNhbGxiYWNrLiAqL1xuICBmaW5pc2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuZmluaXNoKCk7XG4gIH1cblxuICAvKiogRm9yY2UgdGhlIHBsdWdpbiB0byBlbnRlciBcIm1vdmluZ1wiIG9yIFwic3RhdGlvbmFyeVwiIHN0YXRlIChpT1MpLiAqL1xuICBjaGFuZ2VQYWNlKGlzTW92aW5nOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuY2hhbmdlUGFjZShpc01vdmluZyk7XG4gIH1cblxuICBnZXRDdXJyZW50TG9jYXRpb24oXG4gICAgc3VjY2Vzcz86IChsb2NhdGlvbjogYW55KSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZCxcbiAgICBvcHRpb25zPzogYW55XG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuZ2V0Q3VycmVudExvY2F0aW9uKHN1Y2Nlc3MsIGZhaWwsIG9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0U3RhdGlvbmFyeUxvY2F0aW9uKFxuICAgIHN1Y2Nlc3M/OiAobG9jYXRpb246IGFueSkgPT4gdm9pZCxcbiAgICBmYWlsPzogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVQbHVnaW4oKS5nZXRTdGF0aW9uYXJ5TG9jYXRpb24oc3VjY2VzcywgZmFpbCk7XG4gIH1cblxuICBjaGVja1N0YXR1cyhcbiAgICBzdWNjZXNzPzogKHN0YXR1czogYW55KSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLmNoZWNrU3RhdHVzKHN1Y2Nlc3MsIGZhaWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dGVuZGVkIGRpYWdub3N0aWNzLiBSZXR1cm5zIHBlcm1pc3Npb25zLCBiYXR0ZXJ5IG9wdGltaXNhdGlvbiBzdGF0ZSxcbiAgICogbGFzdCBmaXggYWdlLCBwZW5kaW5nIHN5bmMgY291bnQsIE9FTSBpbmZvIGFuZCAob24gaU9TKSBwcmVjaXNlIGxvY2F0aW9uIC9cbiAgICogYmFja2dyb3VuZCByZWZyZXNoIC8gbG93IHBvd2VyIGZsYWdzLlxuICAgKlxuICAgKiBAc2luY2UgMy41LjBcbiAgICovXG4gIGdldERpYWdub3N0aWNzKFxuICAgIHN1Y2Nlc3M/OiAoZGlhZ25vc3RpY3M6IGFueSkgPT4gdm9pZCxcbiAgICBmYWlsPzogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVQbHVnaW4oKS5nZXREaWFnbm9zdGljcyhzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIC8qKiBAc2luY2UgMy42LjAgKi9cbiAgaXNJZ25vcmluZ0JhdHRlcnlPcHRpbWl6YXRpb25zKFxuICAgIHN1Y2Nlc3M/OiAod2hpdGVsaXN0ZWQ6IGJvb2xlYW4pID0+IHZvaWQsXG4gICAgZmFpbD86IChlcnJvcjogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLmlzSWdub3JpbmdCYXR0ZXJ5T3B0aW1pemF0aW9ucyhzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIC8qKiBAc2luY2UgMy42LjAgKi9cbiAgcmVxdWVzdElnbm9yZUJhdHRlcnlPcHRpbWl6YXRpb25zKFxuICAgIHN1Y2Nlc3M/OiAod2hpdGVsaXN0ZWQ6IGJvb2xlYW4pID0+IHZvaWQsXG4gICAgZmFpbD86IChlcnJvcjogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLnJlcXVlc3RJZ25vcmVCYXR0ZXJ5T3B0aW1pemF0aW9ucyhzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIC8qKiBAc2luY2UgMy42LjAgKi9cbiAgb3BlbkJhdHRlcnlTZXR0aW5ncyhcbiAgICBzdWNjZXNzPzogKCkgPT4gdm9pZCxcbiAgICBmYWlsPzogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkub3BlbkJhdHRlcnlTZXR0aW5ncyhzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIC8qKiBAc2luY2UgMy42LjAgKi9cbiAgb3BlbkF1dG9TdGFydFNldHRpbmdzKFxuICAgIHN1Y2Nlc3M/OiAoaW5mbzogeyBvcGVuZWQ6IGJvb2xlYW47IG1hbnVmYWN0dXJlcjogc3RyaW5nOyBzY3JlZW46IHN0cmluZyB9KSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICApOiBQcm9taXNlPHsgb3BlbmVkOiBib29sZWFuOyBtYW51ZmFjdHVyZXI6IHN0cmluZzsgc2NyZWVuOiBzdHJpbmcgfT4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLm9wZW5BdXRvU3RhcnRTZXR0aW5ncyhzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIC8qKiBAc2luY2UgMy42LjAgKi9cbiAgZ2V0TWFudWZhY3R1cmVySGVscChcbiAgICBzdWNjZXNzPzogKGluZm86IHsgbWFudWZhY3R1cmVyOiBzdHJpbmc7IHN0ZXBzOiBzdHJpbmdbXSB9KSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICApOiBQcm9taXNlPHsgbWFudWZhY3R1cmVyOiBzdHJpbmc7IHN0ZXBzOiBzdHJpbmdbXSB9PiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuZ2V0TWFudWZhY3R1cmVySGVscChzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIC8qKiBAc2luY2UgNC4wLjAgKi9cbiAgdHJpZ2dlclNPUyhcbiAgICBwYXlsb2FkPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgICBzdWNjZXNzPzogKCkgPT4gdm9pZCxcbiAgICBmYWlsPzogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkudHJpZ2dlclNPUyhwYXlsb2FkLCBzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIHNob3dBcHBTZXR0aW5ncygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVQbHVnaW4oKS5zaG93QXBwU2V0dGluZ3MoKTtcbiAgfVxuXG4gIC8qKiBPcGVuIGFwcCBzZXR0aW5ncyAoYWxpYXMgZm9yIHNob3dBcHBTZXR0aW5ncykuICovXG4gIG9wZW5TZXR0aW5ncygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVQbHVnaW4oKS5vcGVuU2V0dGluZ3MoKTtcbiAgfVxuXG4gIHNob3dMb2NhdGlvblNldHRpbmdzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLnNob3dMb2NhdGlvblNldHRpbmdzKCk7XG4gIH1cblxuICBnZXRQbHVnaW5WZXJzaW9uKFxuICAgIHN1Y2Nlc3M/OiAodmVyc2lvbjogc3RyaW5nKSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLmdldFBsdWdpblZlcnNpb24oc3VjY2VzcywgZmFpbCk7XG4gIH1cblxuICBnZXRMb2NhdGlvbnMoXG4gICAgc3VjY2Vzcz86IChsb2NhdGlvbnM6IGFueVtdKSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuZ2V0TG9jYXRpb25zKHN1Y2Nlc3MsIGZhaWwpO1xuICB9XG5cbiAgZ2V0VmFsaWRMb2NhdGlvbnMoXG4gICAgc3VjY2Vzcz86IChsb2NhdGlvbnM6IGFueVtdKSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuZ2V0VmFsaWRMb2NhdGlvbnMoc3VjY2VzcywgZmFpbCk7XG4gIH1cblxuICBnZXRWYWxpZExvY2F0aW9uc0FuZERlbGV0ZShcbiAgICBzdWNjZXNzPzogKGxvY2F0aW9uczogYW55W10pID0+IHZvaWQsXG4gICAgZmFpbD86IChlcnJvcjogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8YW55W10+IHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVQbHVnaW4oKS5nZXRWYWxpZExvY2F0aW9uc0FuZERlbGV0ZShzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIGRlbGV0ZUxvY2F0aW9uKFxuICAgIGxvY2F0aW9uSWQ6IG51bWJlcixcbiAgICBzdWNjZXNzPzogKCkgPT4gdm9pZCxcbiAgICBmYWlsPzogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuZGVsZXRlTG9jYXRpb24obG9jYXRpb25JZCwgc3VjY2VzcywgZmFpbCk7XG4gIH1cblxuICBkZWxldGVBbGxMb2NhdGlvbnMoXG4gICAgc3VjY2Vzcz86ICgpID0+IHZvaWQsXG4gICAgZmFpbD86IChlcnJvcjogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLmRlbGV0ZUFsbExvY2F0aW9ucyhzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIHN3aXRjaE1vZGUoXG4gICAgbW9kZUlkOiBudW1iZXIsXG4gICAgc3VjY2Vzcz86ICgpID0+IHZvaWQsXG4gICAgZmFpbD86IChlcnJvcjogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLnN3aXRjaE1vZGUobW9kZUlkLCBzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIGZvcmNlU3luYyhcbiAgICBzdWNjZXNzPzogKCkgPT4gdm9pZCxcbiAgICBmYWlsPzogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuZm9yY2VTeW5jKHN1Y2Nlc3MsIGZhaWwpO1xuICB9XG5cbiAgY2xlYXJTeW5jKFxuICAgIHN1Y2Nlc3M/OiAoKSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVQbHVnaW4oKS5jbGVhclN5bmMoc3VjY2VzcywgZmFpbCk7XG4gIH1cblxuICBnZXRQZW5kaW5nU3luY0NvdW50KFxuICAgIHN1Y2Nlc3M/OiAoY291bnQ6IG51bWJlcikgPT4gdm9pZCxcbiAgICBmYWlsPzogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVQbHVnaW4oKS5nZXRQZW5kaW5nU3luY0NvdW50KHN1Y2Nlc3MsIGZhaWwpO1xuICB9XG5cbiAgc3RhcnRTZXNzaW9uKFxuICAgIHN1Y2Nlc3M/OiAoKSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVQbHVnaW4oKS5zdGFydFNlc3Npb24oc3VjY2VzcywgZmFpbCk7XG4gIH1cblxuICBnZXRTZXNzaW9uTG9jYXRpb25zKFxuICAgIHN1Y2Nlc3M/OiAobG9jYXRpb25zOiBhbnlbXSkgPT4gdm9pZCxcbiAgICBmYWlsPzogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLmdldFNlc3Npb25Mb2NhdGlvbnMoc3VjY2VzcywgZmFpbCk7XG4gIH1cblxuICBjbGVhclNlc3Npb24oXG4gICAgc3VjY2Vzcz86ICgpID0+IHZvaWQsXG4gICAgZmFpbD86IChlcnJvcjogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLmNsZWFyU2Vzc2lvbihzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIGdldFNlc3Npb25Mb2NhdGlvbnNDb3VudChcbiAgICBzdWNjZXNzPzogKGNvdW50OiBudW1iZXIpID0+IHZvaWQsXG4gICAgZmFpbD86IChlcnJvcjogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuZ2V0U2Vzc2lvbkxvY2F0aW9uc0NvdW50KHN1Y2Nlc3MsIGZhaWwpO1xuICB9XG5cbiAgZ2V0Q29uZmlnKFxuICAgIHN1Y2Nlc3M/OiAoY29uZmlnOiBhbnkpID0+IHZvaWQsXG4gICAgZmFpbD86IChlcnJvcjogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZW5zdXJlUGx1Z2luKCkuZ2V0Q29uZmlnKHN1Y2Nlc3MsIGZhaWwpO1xuICB9XG5cbiAgZ2V0TG9nRW50cmllcyhcbiAgICBsaW1pdDogbnVtYmVyLFxuICAgIGZyb21JZDogbnVtYmVyLFxuICAgIG1pbkxldmVsOiBzdHJpbmcsXG4gICAgc3VjY2Vzcz86IChlbnRyaWVzOiBhbnlbXSkgPT4gdm9pZCxcbiAgICBmYWlsPzogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLmdldExvZ0VudHJpZXMobGltaXQsIGZyb21JZCwgbWluTGV2ZWwsIHN1Y2Nlc3MsIGZhaWwpO1xuICB9XG5cbiAgcmVtb3ZlQWxsTGlzdGVuZXJzKGV2ZW50Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVQbHVnaW4oKS5yZW1vdmVBbGxMaXN0ZW5lcnMoZXZlbnQpO1xuICB9XG5cbiAgc3RhcnRUYXNrKFxuICAgIHN1Y2Nlc3M/OiAodGFza0tleTogbnVtYmVyKSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmVuc3VyZVBsdWdpbigpLnN0YXJ0VGFzayhzdWNjZXNzLCBmYWlsKTtcbiAgfVxuXG4gIGVuZFRhc2soXG4gICAgdGFza0tleTogbnVtYmVyLFxuICAgIHN1Y2Nlc3M/OiAoKSA9PiB2b2lkLFxuICAgIGZhaWw/OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5lbnN1cmVQbHVnaW4oKS5lbmRUYXNrKHRhc2tLZXksIHN1Y2Nlc3MsIGZhaWwpO1xuICB9XG5cbiAgaGVhZGxlc3NUYXNrKHRhc2s6IChldmVudDogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVQbHVnaW4oKS5oZWFkbGVzc1Rhc2sodGFzayk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYW4gZXZlbnQgbGlzdGVuZXIuIENvbXBhdGlibGUgd2l0aCBBd2Vzb21lLXN0eWxlIHVzYWdlOlxuICAgKiAub24oQmFja2dyb3VuZEdlb2xvY2F0aW9uRXZlbnRzLmVycm9yKS5zdWJzY3JpYmUoKGVycikgPT4gLi4uKSDigJQgcmV0dXJucyBzdWJzY3JpcHRpb24gd2l0aCAudW5zdWJzY3JpYmUoKS5cbiAgICogLm9uKCdsb2NhdGlvbicsIChsb2MpID0+IC4uLikg4oCUIGFsc28gc3VwcG9ydGVkOyByZXR1cm5lZCBvYmplY3QgaGFzIC51bnN1YnNjcmliZSgpLlxuICAgKi9cbiAgb24oZXZlbnROYW1lOiBzdHJpbmcsIGNhbGxiYWNrPzogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB7IHN1YnNjcmliZShjYjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB7IHVuc3Vic2NyaWJlKCk6IHZvaWQgfTsgdW5zdWJzY3JpYmUoKTogdm9pZCB9IHtcbiAgICBjb25zdCBwbHVnaW4gPSB0aGlzLmVuc3VyZVBsdWdpbigpO1xuICAgIGlmIChjYWxsYmFjayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBzdWIgPSBwbHVnaW4ub24oZXZlbnROYW1lLCBjYWxsYmFjaykgYXMgeyByZW1vdmU/OiAoKSA9PiB2b2lkIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWJzY3JpYmUoY2I6ICh2YWx1ZTogYW55KSA9PiB2b2lkKSB7XG4gICAgICAgICAgY29uc3QgcyA9IGNiID8gKHBsdWdpbi5vbihldmVudE5hbWUsIGNiKSBhcyB7IHJlbW92ZT86ICgpID0+IHZvaWQgfSkgOiBudWxsO1xuICAgICAgICAgIHJldHVybiB7IHVuc3Vic2NyaWJlKCkgeyBzPy5yZW1vdmU/LigpOyB9IH07XG4gICAgICAgIH0sXG4gICAgICAgIHVuc3Vic2NyaWJlKCkgeyBzdWIucmVtb3ZlPy4oKTsgfVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgY2hhbm5lbCA9IHBsdWdpbi5vbihldmVudE5hbWUpIGFzIHsgc3Vic2NyaWJlOiAoY2I6ICh2OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7IHVuc3Vic2NyaWJlOiAoY2I6ICh2OiBhbnkpID0+IHZvaWQpID0+IHZvaWQgfTtcbiAgICByZXR1cm4ge1xuICAgICAgc3Vic2NyaWJlKGNiOiAodmFsdWU6IGFueSkgPT4gdm9pZCkge1xuICAgICAgICBjaGFubmVsLnN1YnNjcmliZShjYik7XG4gICAgICAgIHJldHVybiB7IHVuc3Vic2NyaWJlKCkgeyBjaGFubmVsLnVuc3Vic2NyaWJlKGNiKTsgfSB9O1xuICAgICAgfSxcbiAgICAgIHVuc3Vic2NyaWJlKCkgeyAvKiBuby1vcCB3aGVuIG5vIGNhbGxiYWNrICovIH1cbiAgICB9O1xuICB9XG5cbiAgLyoqIENvbnZlbmllbmNlOiBhY2Nlc3MgcGx1Z2luIGNvbnN0YW50cyAoZS5nLiBBQ1RJVklUWV9QUk9WSURFUiwgSElHSF9BQ0NVUkFDWSkuICovXG4gIGdldCBuYXRpdmUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5wbHVnaW47XG4gIH1cbn1cbiJdfQ==
@@ -58,6 +58,40 @@ class BackgroundGeolocationService {
58
58
  checkStatus(success, fail) {
59
59
  return this.ensurePlugin().checkStatus(success, fail);
60
60
  }
61
+ /**
62
+ * Extended diagnostics. Returns permissions, battery optimisation state,
63
+ * last fix age, pending sync count, OEM info and (on iOS) precise location /
64
+ * background refresh / low power flags.
65
+ *
66
+ * @since 3.5.0
67
+ */
68
+ getDiagnostics(success, fail) {
69
+ return this.ensurePlugin().getDiagnostics(success, fail);
70
+ }
71
+ /** @since 3.6.0 */
72
+ isIgnoringBatteryOptimizations(success, fail) {
73
+ return this.ensurePlugin().isIgnoringBatteryOptimizations(success, fail);
74
+ }
75
+ /** @since 3.6.0 */
76
+ requestIgnoreBatteryOptimizations(success, fail) {
77
+ return this.ensurePlugin().requestIgnoreBatteryOptimizations(success, fail);
78
+ }
79
+ /** @since 3.6.0 */
80
+ openBatterySettings(success, fail) {
81
+ return this.ensurePlugin().openBatterySettings(success, fail);
82
+ }
83
+ /** @since 3.6.0 */
84
+ openAutoStartSettings(success, fail) {
85
+ return this.ensurePlugin().openAutoStartSettings(success, fail);
86
+ }
87
+ /** @since 3.6.0 */
88
+ getManufacturerHelp(success, fail) {
89
+ return this.ensurePlugin().getManufacturerHelp(success, fail);
90
+ }
91
+ /** @since 4.0.0 */
92
+ triggerSOS(payload, success, fail) {
93
+ return this.ensurePlugin().triggerSOS(payload, success, fail);
94
+ }
61
95
  showAppSettings() {
62
96
  return this.ensurePlugin().showAppSettings();
63
97
  }
@@ -222,6 +256,27 @@ var BackgroundGeolocationEvents;
222
256
  BackgroundGeolocationEvents["activity"] = "activity";
223
257
  BackgroundGeolocationEvents["stationary"] = "stationary";
224
258
  BackgroundGeolocationEvents["location"] = "location";
259
+ // v3.5+
260
+ BackgroundGeolocationEvents["heartbeat"] = "heartbeat";
261
+ BackgroundGeolocationEvents["syncStart"] = "syncStart";
262
+ BackgroundGeolocationEvents["syncProgress"] = "syncProgress";
263
+ BackgroundGeolocationEvents["syncSuccess"] = "syncSuccess";
264
+ BackgroundGeolocationEvents["syncError"] = "syncError";
265
+ // v4.0
266
+ BackgroundGeolocationEvents["tripStart"] = "tripStart";
267
+ BackgroundGeolocationEvents["tripEnd"] = "tripEnd";
268
+ BackgroundGeolocationEvents["moving"] = "moving";
269
+ BackgroundGeolocationEvents["stopped"] = "stopped";
270
+ BackgroundGeolocationEvents["speeding"] = "speeding";
271
+ BackgroundGeolocationEvents["providerChange"] = "providerChange";
272
+ BackgroundGeolocationEvents["sos"] = "sos";
273
+ // v4.1
274
+ BackgroundGeolocationEvents["hardBrake"] = "hardBrake";
275
+ BackgroundGeolocationEvents["rapidAcceleration"] = "rapidAcceleration";
276
+ BackgroundGeolocationEvents["sharpTurn"] = "sharpTurn";
277
+ BackgroundGeolocationEvents["possibleCrash"] = "possibleCrash";
278
+ // v4.2 sensor fusion
279
+ BackgroundGeolocationEvents["phoneUsageWhileDriving"] = "phoneUsageWhileDriving";
225
280
  })(BackgroundGeolocationEvents || (BackgroundGeolocationEvents = {}));
226
281
 
227
282
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"josuelmm-cordova-background-geolocation.mjs","sources":["../../background-geolocation.service.ts","../../background-geolocation.module.ts","../../background-geolocation-events.ts","../../background-geolocation-enums.ts","../../public-api.ts","../../josuelmm-cordova-background-geolocation.ts"],"sourcesContent":["import { Injectable, InjectionToken } from '@angular/core';\n\n/**\n * Token used to provide BackgroundGeolocationService without triggering JIT.\n * The module provides this token with useFactory; the class is aliased via useExisting\n * so you still inject constructor(private bg: BackgroundGeolocationService) {}.\n */\nexport const BACKGROUND_GEOLOCATION_SERVICE = new InjectionToken<BackgroundGeolocationService>(\n 'BackgroundGeolocationService'\n);\n\n/**\n * Angular service that wraps the Cordova/Capacitor BackgroundGeolocation plugin.\n * Use dependency injection instead of the global BackgroundGeolocation object.\n *\n * The native plugin must be installed and available (e.g. after deviceready).\n * Types (ConfigureOptions, Location, etc.) can be imported from\n * '@josuelmm/cordova-background-geolocation'.\n *\n * Provided via BackgroundGeolocationModule using an InjectionToken + useFactory\n * so AOT builds never need the JIT compiler for this class.\n */\n@Injectable()\nexport class BackgroundGeolocationService {\n\n /** Returns the global plugin instance (Cordova/Capacitor). */\n private get plugin(): any {\n if (typeof window === 'undefined') return null;\n return (window as any).BackgroundGeolocation || null;\n }\n\n private ensurePlugin(): any {\n const p = this.plugin;\n if (!p) {\n throw new Error(\n 'BackgroundGeolocation is not available. Ensure the plugin is installed and the app is running in a native context (Cordova/Capacitor).'\n );\n }\n return p;\n }\n\n configure(options: any, success?: () => void, fail?: (err: any) => void): Promise<void> {\n return this.ensurePlugin().configure(options, success, fail);\n }\n\n start(): Promise<void> {\n return this.ensurePlugin().start();\n }\n\n stop(): Promise<void> {\n return this.ensurePlugin().stop();\n }\n\n /** Inform the native plugin that the background task may complete (iOS). Call after handling location/stationary in the callback. */\n finish(): Promise<void> {\n return this.ensurePlugin().finish();\n }\n\n /** Force the plugin to enter \"moving\" or \"stationary\" state (iOS). */\n changePace(isMoving: boolean): Promise<void> {\n return this.ensurePlugin().changePace(isMoving);\n }\n\n getCurrentLocation(\n success?: (location: any) => void,\n fail?: (error: any) => void,\n options?: any\n ): Promise<any> {\n return this.ensurePlugin().getCurrentLocation(success, fail, options);\n }\n\n getStationaryLocation(\n success?: (location: any) => void,\n fail?: (error: any) => void\n ): Promise<any> {\n return this.ensurePlugin().getStationaryLocation(success, fail);\n }\n\n checkStatus(\n success?: (status: any) => void,\n fail?: (error: any) => void\n ): Promise<any> {\n return this.ensurePlugin().checkStatus(success, fail);\n }\n\n showAppSettings(): Promise<void> {\n return this.ensurePlugin().showAppSettings();\n }\n\n /** Open app settings (alias for showAppSettings). */\n openSettings(): Promise<void> {\n return this.ensurePlugin().openSettings();\n }\n\n showLocationSettings(): Promise<void> {\n return this.ensurePlugin().showLocationSettings();\n }\n\n getPluginVersion(\n success?: (version: string) => void,\n fail?: (error: any) => void\n ): Promise<string> {\n return this.ensurePlugin().getPluginVersion(success, fail);\n }\n\n getLocations(\n success?: (locations: any[]) => void,\n fail?: (error: any) => void\n ): Promise<any[]> {\n return this.ensurePlugin().getLocations(success, fail);\n }\n\n getValidLocations(\n success?: (locations: any[]) => void,\n fail?: (error: any) => void\n ): Promise<any[]> {\n return this.ensurePlugin().getValidLocations(success, fail);\n }\n\n getValidLocationsAndDelete(\n success?: (locations: any[]) => void,\n fail?: (error: any) => void\n ): Promise<any[]> {\n return this.ensurePlugin().getValidLocationsAndDelete(success, fail);\n }\n\n deleteLocation(\n locationId: number,\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().deleteLocation(locationId, success, fail);\n }\n\n deleteAllLocations(\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().deleteAllLocations(success, fail);\n }\n\n switchMode(\n modeId: number,\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().switchMode(modeId, success, fail);\n }\n\n forceSync(\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().forceSync(success, fail);\n }\n\n clearSync(\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().clearSync(success, fail);\n }\n\n getPendingSyncCount(\n success?: (count: number) => void,\n fail?: (error: any) => void\n ): Promise<number> {\n return this.ensurePlugin().getPendingSyncCount(success, fail);\n }\n\n startSession(\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().startSession(success, fail);\n }\n\n getSessionLocations(\n success?: (locations: any[]) => void,\n fail?: (error: any) => void\n ): Promise<any[]> {\n return this.ensurePlugin().getSessionLocations(success, fail);\n }\n\n clearSession(\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().clearSession(success, fail);\n }\n\n getSessionLocationsCount(\n success?: (count: number) => void,\n fail?: (error: any) => void\n ): Promise<number> {\n return this.ensurePlugin().getSessionLocationsCount(success, fail);\n }\n\n getConfig(\n success?: (config: any) => void,\n fail?: (error: any) => void\n ): Promise<any> {\n return this.ensurePlugin().getConfig(success, fail);\n }\n\n getLogEntries(\n limit: number,\n fromId: number,\n minLevel: string,\n success?: (entries: any[]) => void,\n fail?: (error: any) => void\n ): Promise<any[]> {\n return this.ensurePlugin().getLogEntries(limit, fromId, minLevel, success, fail);\n }\n\n removeAllListeners(event?: string): void {\n this.ensurePlugin().removeAllListeners(event);\n }\n\n startTask(\n success?: (taskKey: number) => void,\n fail?: (error: any) => void\n ): Promise<number> {\n return this.ensurePlugin().startTask(success, fail);\n }\n\n endTask(\n taskKey: number,\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().endTask(taskKey, success, fail);\n }\n\n headlessTask(task: (event: any) => void): void {\n this.ensurePlugin().headlessTask(task);\n }\n\n /**\n * Register an event listener. Compatible with Awesome-style usage:\n * .on(BackgroundGeolocationEvents.error).subscribe((err) => ...) — returns subscription with .unsubscribe().\n * .on('location', (loc) => ...) — also supported; returned object has .unsubscribe().\n */\n on(eventName: string, callback?: (value: any) => void): { subscribe(cb: (value: any) => void): { unsubscribe(): void }; unsubscribe(): void } {\n const plugin = this.ensurePlugin();\n if (callback !== undefined) {\n const sub = plugin.on(eventName, callback) as { remove?: () => void };\n return {\n subscribe(cb: (value: any) => void) {\n const s = cb ? (plugin.on(eventName, cb) as { remove?: () => void }) : null;\n return { unsubscribe() { s?.remove?.(); } };\n },\n unsubscribe() { sub.remove?.(); }\n };\n }\n const channel = plugin.on(eventName) as { subscribe: (cb: (v: any) => void) => void; unsubscribe: (cb: (v: any) => void) => void };\n return {\n subscribe(cb: (value: any) => void) {\n channel.subscribe(cb);\n return { unsubscribe() { channel.unsubscribe(cb); } };\n },\n unsubscribe() { /* no-op when no callback */ }\n };\n }\n\n /** Convenience: access plugin constants (e.g. ACTIVITY_PROVIDER, HIGH_ACCURACY). */\n get native(): any {\n return this.plugin;\n }\n}\n","import { NgModule } from '@angular/core';\nimport {\n BackgroundGeolocationService,\n BACKGROUND_GEOLOCATION_SERVICE,\n} from './background-geolocation.service';\n\n/**\n * NgModule that provides BackgroundGeolocationService.\n * Uses InjectionToken + useFactory so Angular never calls getFactoryDef on the class\n * (avoids JIT requirement in AOT/production). useExisting lets you still inject\n * constructor(private bg: BackgroundGeolocationService) {}.\n *\n * Import in your AppModule or feature module:\n * imports: [BackgroundGeolocationModule]\n * Then inject: constructor(private bg: BackgroundGeolocationService) {}\n */\n@NgModule({\n providers: [\n {\n provide: BACKGROUND_GEOLOCATION_SERVICE,\n useFactory: () => new BackgroundGeolocationService(),\n },\n {\n provide: BackgroundGeolocationService,\n useExisting: BACKGROUND_GEOLOCATION_SERVICE,\n },\n ],\n})\nexport class BackgroundGeolocationModule {}\n","/**\n * Event names for BackgroundGeolocation.on(event).subscribe(...).\n * Mirrors the enum in the main package so it is available at runtime from /angular.\n */\nexport enum BackgroundGeolocationEvents {\n http_authorization = 'http_authorization',\n abort_requested = 'abort_requested',\n background = 'background',\n foreground = 'foreground',\n authorization = 'authorization',\n error = 'error',\n stop = 'stop',\n start = 'start',\n activity = 'activity',\n stationary = 'stationary',\n location = 'location',\n}\n","/**\n * Enums as runtime values for use with @josuelmm/cordova-background-geolocation/angular.\n * Matches @awesome-cordova-plugins/background-geolocation names; numeric values match this plugin (e.g. accuracy 0, 100, 1000, 10000).\n */\n\nexport enum BackgroundGeolocationLocationCode {\n PERMISSION_DENIED = 1,\n LOCATION_UNAVAILABLE = 2,\n TIMEOUT = 3,\n}\n\nexport enum BackgroundGeolocationNativeProvider {\n gps = 'gps',\n network = 'network',\n passive = 'passive',\n fused = 'fused',\n}\n\nexport enum BackgroundGeolocationLocationProvider {\n DISTANCE_FILTER_PROVIDER = 0,\n ACTIVITY_PROVIDER = 1,\n RAW_PROVIDER = 2,\n}\n\nexport enum BackgroundGeolocationAuthorizationStatus {\n NOT_AUTHORIZED = 0,\n AUTHORIZED = 1,\n AUTHORIZED_FOREGROUND = 2,\n}\n\nexport enum BackgroundGeolocationLogLevel {\n TRACE = 'TRACE',\n DEBUG = 'DEBUG',\n INFO = 'INFO',\n WARN = 'WARN',\n ERROR = 'ERROR',\n}\n\nexport enum BackgroundGeolocationProvider {\n ANDROID_DISTANCE_FILTER_PROVIDER = 0,\n ANDROID_ACTIVITY_PROVIDER = 1,\n RAW_PROVIDER = 2,\n}\n\n/** Values match this plugin: 0, 100, 1000, 10000 (not Awesome's 10, 100, 1000). */\nexport enum BackgroundGeolocationAccuracy {\n HIGH = 0,\n MEDIUM = 100,\n LOW = 1000,\n PASSIVE = 10000,\n}\n\nexport enum BackgroundGeolocationMode {\n BACKGROUND = 0,\n FOREGROUND = 1,\n}\n\nexport enum BackgroundGeolocationIOSActivity {\n AutomotiveNavigation = 'AutomotiveNavigation',\n OtherNavigation = 'OtherNavigation',\n Fitness = 'Fitness',\n Other = 'Other',\n}\n","/**\n * Public API for @josuelmm/cordova-background-geolocation/angular.\n * Entry point for ng-packagr (Ivy/AOT build).\n */\nexport {\n BackgroundGeolocationService,\n BACKGROUND_GEOLOCATION_SERVICE,\n} from './background-geolocation.service';\nexport { BackgroundGeolocationModule } from './background-geolocation.module';\nexport { BackgroundGeolocationEvents } from './background-geolocation-events';\nexport {\n BackgroundGeolocationLocationCode,\n BackgroundGeolocationNativeProvider,\n BackgroundGeolocationLocationProvider,\n BackgroundGeolocationAuthorizationStatus,\n BackgroundGeolocationLogLevel,\n BackgroundGeolocationProvider,\n BackgroundGeolocationAccuracy,\n BackgroundGeolocationMode,\n BackgroundGeolocationIOSActivity,\n} from './background-geolocation-enums';\nexport type {\n BackgroundGeolocationConfig,\n BackgroundGeolocationResponse,\n ServiceStatus,\n BackgroundGeolocationLogEntry,\n} from '../www/BackgroundGeolocation';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"josuelmm-cordova-background-geolocation.mjs","sources":["../../background-geolocation.service.ts","../../background-geolocation.module.ts","../../background-geolocation-events.ts","../../background-geolocation-enums.ts","../../public-api.ts","../../josuelmm-cordova-background-geolocation.ts"],"sourcesContent":["import { Injectable, InjectionToken } from '@angular/core';\n\n/**\n * Token used to provide BackgroundGeolocationService without triggering JIT.\n * The module provides this token with useFactory; the class is aliased via useExisting\n * so you still inject constructor(private bg: BackgroundGeolocationService) {}.\n */\nexport const BACKGROUND_GEOLOCATION_SERVICE = new InjectionToken<BackgroundGeolocationService>(\n 'BackgroundGeolocationService'\n);\n\n/**\n * Angular service that wraps the Cordova/Capacitor BackgroundGeolocation plugin.\n * Use dependency injection instead of the global BackgroundGeolocation object.\n *\n * The native plugin must be installed and available (e.g. after deviceready).\n * Types (ConfigureOptions, Location, etc.) can be imported from\n * '@josuelmm/cordova-background-geolocation'.\n *\n * Provided via BackgroundGeolocationModule using an InjectionToken + useFactory\n * so AOT builds never need the JIT compiler for this class.\n */\n@Injectable()\nexport class BackgroundGeolocationService {\n\n /** Returns the global plugin instance (Cordova/Capacitor). */\n private get plugin(): any {\n if (typeof window === 'undefined') return null;\n return (window as any).BackgroundGeolocation || null;\n }\n\n private ensurePlugin(): any {\n const p = this.plugin;\n if (!p) {\n throw new Error(\n 'BackgroundGeolocation is not available. Ensure the plugin is installed and the app is running in a native context (Cordova/Capacitor).'\n );\n }\n return p;\n }\n\n configure(options: any, success?: () => void, fail?: (err: any) => void): Promise<void> {\n return this.ensurePlugin().configure(options, success, fail);\n }\n\n start(): Promise<void> {\n return this.ensurePlugin().start();\n }\n\n stop(): Promise<void> {\n return this.ensurePlugin().stop();\n }\n\n /** Inform the native plugin that the background task may complete (iOS). Call after handling location/stationary in the callback. */\n finish(): Promise<void> {\n return this.ensurePlugin().finish();\n }\n\n /** Force the plugin to enter \"moving\" or \"stationary\" state (iOS). */\n changePace(isMoving: boolean): Promise<void> {\n return this.ensurePlugin().changePace(isMoving);\n }\n\n getCurrentLocation(\n success?: (location: any) => void,\n fail?: (error: any) => void,\n options?: any\n ): Promise<any> {\n return this.ensurePlugin().getCurrentLocation(success, fail, options);\n }\n\n getStationaryLocation(\n success?: (location: any) => void,\n fail?: (error: any) => void\n ): Promise<any> {\n return this.ensurePlugin().getStationaryLocation(success, fail);\n }\n\n checkStatus(\n success?: (status: any) => void,\n fail?: (error: any) => void\n ): Promise<any> {\n return this.ensurePlugin().checkStatus(success, fail);\n }\n\n /**\n * Extended diagnostics. Returns permissions, battery optimisation state,\n * last fix age, pending sync count, OEM info and (on iOS) precise location /\n * background refresh / low power flags.\n *\n * @since 3.5.0\n */\n getDiagnostics(\n success?: (diagnostics: any) => void,\n fail?: (error: any) => void\n ): Promise<any> {\n return this.ensurePlugin().getDiagnostics(success, fail);\n }\n\n /** @since 3.6.0 */\n isIgnoringBatteryOptimizations(\n success?: (whitelisted: boolean) => void,\n fail?: (error: any) => void\n ): Promise<boolean> {\n return this.ensurePlugin().isIgnoringBatteryOptimizations(success, fail);\n }\n\n /** @since 3.6.0 */\n requestIgnoreBatteryOptimizations(\n success?: (whitelisted: boolean) => void,\n fail?: (error: any) => void\n ): Promise<boolean> {\n return this.ensurePlugin().requestIgnoreBatteryOptimizations(success, fail);\n }\n\n /** @since 3.6.0 */\n openBatterySettings(\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().openBatterySettings(success, fail);\n }\n\n /** @since 3.6.0 */\n openAutoStartSettings(\n success?: (info: { opened: boolean; manufacturer: string; screen: string }) => void,\n fail?: (error: any) => void\n ): Promise<{ opened: boolean; manufacturer: string; screen: string }> {\n return this.ensurePlugin().openAutoStartSettings(success, fail);\n }\n\n /** @since 3.6.0 */\n getManufacturerHelp(\n success?: (info: { manufacturer: string; steps: string[] }) => void,\n fail?: (error: any) => void\n ): Promise<{ manufacturer: string; steps: string[] }> {\n return this.ensurePlugin().getManufacturerHelp(success, fail);\n }\n\n /** @since 4.0.0 */\n triggerSOS(\n payload?: { [key: string]: any },\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().triggerSOS(payload, success, fail);\n }\n\n showAppSettings(): Promise<void> {\n return this.ensurePlugin().showAppSettings();\n }\n\n /** Open app settings (alias for showAppSettings). */\n openSettings(): Promise<void> {\n return this.ensurePlugin().openSettings();\n }\n\n showLocationSettings(): Promise<void> {\n return this.ensurePlugin().showLocationSettings();\n }\n\n getPluginVersion(\n success?: (version: string) => void,\n fail?: (error: any) => void\n ): Promise<string> {\n return this.ensurePlugin().getPluginVersion(success, fail);\n }\n\n getLocations(\n success?: (locations: any[]) => void,\n fail?: (error: any) => void\n ): Promise<any[]> {\n return this.ensurePlugin().getLocations(success, fail);\n }\n\n getValidLocations(\n success?: (locations: any[]) => void,\n fail?: (error: any) => void\n ): Promise<any[]> {\n return this.ensurePlugin().getValidLocations(success, fail);\n }\n\n getValidLocationsAndDelete(\n success?: (locations: any[]) => void,\n fail?: (error: any) => void\n ): Promise<any[]> {\n return this.ensurePlugin().getValidLocationsAndDelete(success, fail);\n }\n\n deleteLocation(\n locationId: number,\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().deleteLocation(locationId, success, fail);\n }\n\n deleteAllLocations(\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().deleteAllLocations(success, fail);\n }\n\n switchMode(\n modeId: number,\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().switchMode(modeId, success, fail);\n }\n\n forceSync(\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().forceSync(success, fail);\n }\n\n clearSync(\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().clearSync(success, fail);\n }\n\n getPendingSyncCount(\n success?: (count: number) => void,\n fail?: (error: any) => void\n ): Promise<number> {\n return this.ensurePlugin().getPendingSyncCount(success, fail);\n }\n\n startSession(\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().startSession(success, fail);\n }\n\n getSessionLocations(\n success?: (locations: any[]) => void,\n fail?: (error: any) => void\n ): Promise<any[]> {\n return this.ensurePlugin().getSessionLocations(success, fail);\n }\n\n clearSession(\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().clearSession(success, fail);\n }\n\n getSessionLocationsCount(\n success?: (count: number) => void,\n fail?: (error: any) => void\n ): Promise<number> {\n return this.ensurePlugin().getSessionLocationsCount(success, fail);\n }\n\n getConfig(\n success?: (config: any) => void,\n fail?: (error: any) => void\n ): Promise<any> {\n return this.ensurePlugin().getConfig(success, fail);\n }\n\n getLogEntries(\n limit: number,\n fromId: number,\n minLevel: string,\n success?: (entries: any[]) => void,\n fail?: (error: any) => void\n ): Promise<any[]> {\n return this.ensurePlugin().getLogEntries(limit, fromId, minLevel, success, fail);\n }\n\n removeAllListeners(event?: string): void {\n this.ensurePlugin().removeAllListeners(event);\n }\n\n startTask(\n success?: (taskKey: number) => void,\n fail?: (error: any) => void\n ): Promise<number> {\n return this.ensurePlugin().startTask(success, fail);\n }\n\n endTask(\n taskKey: number,\n success?: () => void,\n fail?: (error: any) => void\n ): Promise<void> {\n return this.ensurePlugin().endTask(taskKey, success, fail);\n }\n\n headlessTask(task: (event: any) => void): void {\n this.ensurePlugin().headlessTask(task);\n }\n\n /**\n * Register an event listener. Compatible with Awesome-style usage:\n * .on(BackgroundGeolocationEvents.error).subscribe((err) => ...) — returns subscription with .unsubscribe().\n * .on('location', (loc) => ...) — also supported; returned object has .unsubscribe().\n */\n on(eventName: string, callback?: (value: any) => void): { subscribe(cb: (value: any) => void): { unsubscribe(): void }; unsubscribe(): void } {\n const plugin = this.ensurePlugin();\n if (callback !== undefined) {\n const sub = plugin.on(eventName, callback) as { remove?: () => void };\n return {\n subscribe(cb: (value: any) => void) {\n const s = cb ? (plugin.on(eventName, cb) as { remove?: () => void }) : null;\n return { unsubscribe() { s?.remove?.(); } };\n },\n unsubscribe() { sub.remove?.(); }\n };\n }\n const channel = plugin.on(eventName) as { subscribe: (cb: (v: any) => void) => void; unsubscribe: (cb: (v: any) => void) => void };\n return {\n subscribe(cb: (value: any) => void) {\n channel.subscribe(cb);\n return { unsubscribe() { channel.unsubscribe(cb); } };\n },\n unsubscribe() { /* no-op when no callback */ }\n };\n }\n\n /** Convenience: access plugin constants (e.g. ACTIVITY_PROVIDER, HIGH_ACCURACY). */\n get native(): any {\n return this.plugin;\n }\n}\n","import { NgModule } from '@angular/core';\nimport {\n BackgroundGeolocationService,\n BACKGROUND_GEOLOCATION_SERVICE,\n} from './background-geolocation.service';\n\n/**\n * NgModule that provides BackgroundGeolocationService.\n * Uses InjectionToken + useFactory so Angular never calls getFactoryDef on the class\n * (avoids JIT requirement in AOT/production). useExisting lets you still inject\n * constructor(private bg: BackgroundGeolocationService) {}.\n *\n * Import in your AppModule or feature module:\n * imports: [BackgroundGeolocationModule]\n * Then inject: constructor(private bg: BackgroundGeolocationService) {}\n */\n@NgModule({\n providers: [\n {\n provide: BACKGROUND_GEOLOCATION_SERVICE,\n useFactory: () => new BackgroundGeolocationService(),\n },\n {\n provide: BackgroundGeolocationService,\n useExisting: BACKGROUND_GEOLOCATION_SERVICE,\n },\n ],\n})\nexport class BackgroundGeolocationModule {}\n","/**\n * Event names for BackgroundGeolocation.on(event).subscribe(...).\n * Mirrors the enum in the main package so it is available at runtime from /angular.\n */\nexport enum BackgroundGeolocationEvents {\n http_authorization = 'http_authorization',\n abort_requested = 'abort_requested',\n background = 'background',\n foreground = 'foreground',\n authorization = 'authorization',\n error = 'error',\n stop = 'stop',\n start = 'start',\n activity = 'activity',\n stationary = 'stationary',\n location = 'location',\n // v3.5+\n heartbeat = 'heartbeat',\n syncStart = 'syncStart',\n syncProgress = 'syncProgress',\n syncSuccess = 'syncSuccess',\n syncError = 'syncError',\n // v4.0\n tripStart = 'tripStart',\n tripEnd = 'tripEnd',\n moving = 'moving',\n stopped = 'stopped',\n speeding = 'speeding',\n providerChange = 'providerChange',\n sos = 'sos',\n // v4.1\n hardBrake = 'hardBrake',\n rapidAcceleration = 'rapidAcceleration',\n sharpTurn = 'sharpTurn',\n possibleCrash = 'possibleCrash',\n // v4.2 sensor fusion\n phoneUsageWhileDriving = 'phoneUsageWhileDriving',\n}\n","/**\n * Enums as runtime values for use with @josuelmm/cordova-background-geolocation/angular.\n * Matches @awesome-cordova-plugins/background-geolocation names; numeric values match this plugin (e.g. accuracy 0, 100, 1000, 10000).\n */\n\nexport enum BackgroundGeolocationLocationCode {\n PERMISSION_DENIED = 1,\n LOCATION_UNAVAILABLE = 2,\n TIMEOUT = 3,\n}\n\nexport enum BackgroundGeolocationNativeProvider {\n gps = 'gps',\n network = 'network',\n passive = 'passive',\n fused = 'fused',\n}\n\nexport enum BackgroundGeolocationLocationProvider {\n DISTANCE_FILTER_PROVIDER = 0,\n ACTIVITY_PROVIDER = 1,\n RAW_PROVIDER = 2,\n}\n\nexport enum BackgroundGeolocationAuthorizationStatus {\n NOT_AUTHORIZED = 0,\n AUTHORIZED = 1,\n AUTHORIZED_FOREGROUND = 2,\n}\n\nexport enum BackgroundGeolocationLogLevel {\n TRACE = 'TRACE',\n DEBUG = 'DEBUG',\n INFO = 'INFO',\n WARN = 'WARN',\n ERROR = 'ERROR',\n}\n\nexport enum BackgroundGeolocationProvider {\n ANDROID_DISTANCE_FILTER_PROVIDER = 0,\n ANDROID_ACTIVITY_PROVIDER = 1,\n RAW_PROVIDER = 2,\n}\n\n/** Values match this plugin: 0, 100, 1000, 10000 (not Awesome's 10, 100, 1000). */\nexport enum BackgroundGeolocationAccuracy {\n HIGH = 0,\n MEDIUM = 100,\n LOW = 1000,\n PASSIVE = 10000,\n}\n\nexport enum BackgroundGeolocationMode {\n BACKGROUND = 0,\n FOREGROUND = 1,\n}\n\nexport enum BackgroundGeolocationIOSActivity {\n AutomotiveNavigation = 'AutomotiveNavigation',\n OtherNavigation = 'OtherNavigation',\n Fitness = 'Fitness',\n Other = 'Other',\n}\n","/**\n * Public API for @josuelmm/cordova-background-geolocation/angular.\n * Entry point for ng-packagr (Ivy/AOT build).\n */\nexport {\n BackgroundGeolocationService,\n BACKGROUND_GEOLOCATION_SERVICE,\n} from './background-geolocation.service';\nexport { BackgroundGeolocationModule } from './background-geolocation.module';\nexport { BackgroundGeolocationEvents } from './background-geolocation-events';\nexport {\n BackgroundGeolocationLocationCode,\n BackgroundGeolocationNativeProvider,\n BackgroundGeolocationLocationProvider,\n BackgroundGeolocationAuthorizationStatus,\n BackgroundGeolocationLogLevel,\n BackgroundGeolocationProvider,\n BackgroundGeolocationAccuracy,\n BackgroundGeolocationMode,\n BackgroundGeolocationIOSActivity,\n} from './background-geolocation-enums';\nexport type {\n BackgroundGeolocationConfig,\n BackgroundGeolocationResponse,\n ServiceStatus,\n BackgroundGeolocationLogEntry,\n} from '../www/BackgroundGeolocation';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAEA;;;;AAIG;MACU,8BAA8B,GAAG,IAAI,cAAc,CAC9D,8BAA8B;AAGhC;;;;;;;;;;AAUG;MAEU,4BAA4B,CAAA;;AAGvC,IAAA,IAAY,MAAM,GAAA;QAChB,IAAI,OAAO,MAAM,KAAK,WAAW;AAAE,YAAA,OAAO,IAAI;AAC9C,QAAA,OAAQ,MAAc,CAAC,qBAAqB,IAAI,IAAI;IACtD;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM;QACrB,IAAI,CAAC,CAAC,EAAE;AACN,YAAA,MAAM,IAAI,KAAK,CACb,wIAAwI,CACzI;QACH;AACA,QAAA,OAAO,CAAC;IACV;AAEA,IAAA,SAAS,CAAC,OAAY,EAAE,OAAoB,EAAE,IAAyB,EAAA;AACrE,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;IAC9D;IAEA,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE;IACpC;IAEA,IAAI,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE;IACnC;;IAGA,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE;IACrC;;AAGA,IAAA,UAAU,CAAC,QAAiB,EAAA;QAC1B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;IACjD;AAEA,IAAA,kBAAkB,CAChB,OAAiC,EACjC,IAA2B,EAC3B,OAAa,EAAA;AAEb,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC;IACvE;IAEA,qBAAqB,CACnB,OAAiC,EACjC,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC;IACjE;IAEA,WAAW,CACT,OAA+B,EAC/B,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC;IACvD;AAEA;;;;;;AAMG;IACH,cAAc,CACZ,OAAoC,EACpC,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC;IAC1D;;IAGA,8BAA8B,CAC5B,OAAwC,EACxC,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,8BAA8B,CAAC,OAAO,EAAE,IAAI,CAAC;IAC1E;;IAGA,iCAAiC,CAC/B,OAAwC,EACxC,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,iCAAiC,CAAC,OAAO,EAAE,IAAI,CAAC;IAC7E;;IAGA,mBAAmB,CACjB,OAAoB,EACpB,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC;IAC/D;;IAGA,qBAAqB,CACnB,OAAmF,EACnF,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC;IACjE;;IAGA,mBAAmB,CACjB,OAAmE,EACnE,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC;IAC/D;;AAGA,IAAA,UAAU,CACR,OAAgC,EAChC,OAAoB,EACpB,IAA2B,EAAA;AAE3B,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;IAC/D;IAEA,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,eAAe,EAAE;IAC9C;;IAGA,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,YAAY,EAAE;IAC3C;IAEA,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,oBAAoB,EAAE;IACnD;IAEA,gBAAgB,CACd,OAAmC,EACnC,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC;IAC5D;IAEA,YAAY,CACV,OAAoC,EACpC,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC;IACxD;IAEA,iBAAiB,CACf,OAAoC,EACpC,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC;IAC7D;IAEA,0BAA0B,CACxB,OAAoC,EACpC,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC;IACtE;AAEA,IAAA,cAAc,CACZ,UAAkB,EAClB,OAAoB,EACpB,IAA2B,EAAA;AAE3B,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC;IACtE;IAEA,kBAAkB,CAChB,OAAoB,EACpB,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC;IAC9D;AAEA,IAAA,UAAU,CACR,MAAc,EACd,OAAoB,EACpB,IAA2B,EAAA;AAE3B,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;IAC9D;IAEA,SAAS,CACP,OAAoB,EACpB,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;IACrD;IAEA,SAAS,CACP,OAAoB,EACpB,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;IACrD;IAEA,mBAAmB,CACjB,OAAiC,EACjC,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC;IAC/D;IAEA,YAAY,CACV,OAAoB,EACpB,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC;IACxD;IAEA,mBAAmB,CACjB,OAAoC,EACpC,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC;IAC/D;IAEA,YAAY,CACV,OAAoB,EACpB,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC;IACxD;IAEA,wBAAwB,CACtB,OAAiC,EACjC,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC;IACpE;IAEA,SAAS,CACP,OAA+B,EAC/B,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;IACrD;IAEA,aAAa,CACX,KAAa,EACb,MAAc,EACd,QAAgB,EAChB,OAAkC,EAClC,IAA2B,EAAA;AAE3B,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC;IAClF;AAEA,IAAA,kBAAkB,CAAC,KAAc,EAAA;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC;IAC/C;IAEA,SAAS,CACP,OAAmC,EACnC,IAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;IACrD;AAEA,IAAA,OAAO,CACL,OAAe,EACf,OAAoB,EACpB,IAA2B,EAAA;AAE3B,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;IAC5D;AAEA,IAAA,YAAY,CAAC,IAA0B,EAAA;QACrC,IAAI,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;IACxC;AAEA;;;;AAIG;IACH,EAAE,CAAC,SAAiB,EAAE,QAA+B,EAAA;AACnD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;AAClC,QAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAA4B;YACrE,OAAO;AACL,gBAAA,SAAS,CAAC,EAAwB,EAAA;AAChC,oBAAA,MAAM,CAAC,GAAG,EAAE,GAAI,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAA6B,GAAG,IAAI;AAC3E,oBAAA,OAAO,EAAE,WAAW,GAAA,EAAK,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE;gBAC7C,CAAC;gBACD,WAAW,GAAA,EAAK,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;aACjC;QACH;QACA,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,CAA+F;QAClI,OAAO;AACL,YAAA,SAAS,CAAC,EAAwB,EAAA;AAChC,gBAAA,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;AACrB,gBAAA,OAAO,EAAE,WAAW,GAAA,EAAK,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;YACvD,CAAC;AACD,YAAA,WAAW,KAAkC;SAC9C;IACH;;AAGA,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,MAAM;IACpB;wGApTW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAA5B,4BAA4B,EAAA,CAAA;;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC;;;AChBD;;;;;;;;;AASG;MAaU,2BAA2B,CAAA;wGAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAA3B,2BAA2B,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,SAAA,EAX3B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,8BAA8B;AACvC,gBAAA,UAAU,EAAE,MAAM,IAAI,4BAA4B,EAAE;AACrD,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,4BAA4B;AACrC,gBAAA,WAAW,EAAE,8BAA8B;AAC5C,aAAA;AACF,SAAA,EAAA,CAAA;;4FAEU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAZvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,8BAA8B;AACvC,4BAAA,UAAU,EAAE,MAAM,IAAI,4BAA4B,EAAE;AACrD,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,4BAA4B;AACrC,4BAAA,WAAW,EAAE,8BAA8B;AAC5C,yBAAA;AACF,qBAAA;AACF,iBAAA;;;AC3BD;;;AAGG;IACS;AAAZ,CAAA,UAAY,2BAA2B,EAAA;AACrC,IAAA,2BAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC;AACzC,IAAA,2BAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,2BAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,2BAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,2BAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AAC/B,IAAA,2BAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,2BAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,2BAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,2BAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,2BAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,2BAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;;AAErB,IAAA,2BAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,2BAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,2BAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,2BAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,2BAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;;AAEvB,IAAA,2BAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,2BAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,2BAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,2BAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,2BAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,2BAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,2BAAA,CAAA,KAAA,CAAA,GAAA,KAAW;;AAEX,IAAA,2BAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,2BAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACvC,IAAA,2BAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,2BAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;;AAE/B,IAAA,2BAAA,CAAA,wBAAA,CAAA,GAAA,wBAAiD;AACnD,CAAC,EAjCW,2BAA2B,KAA3B,2BAA2B,GAAA,EAAA,CAAA,CAAA;;ACJvC;;;AAGG;IAES;AAAZ,CAAA,UAAY,iCAAiC,EAAA;AAC3C,IAAA,iCAAA,CAAA,iCAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAqB;AACrB,IAAA,iCAAA,CAAA,iCAAA,CAAA,sBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,sBAAwB;AACxB,IAAA,iCAAA,CAAA,iCAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACb,CAAC,EAJW,iCAAiC,KAAjC,iCAAiC,GAAA,EAAA,CAAA,CAAA;IAMjC;AAAZ,CAAA,UAAY,mCAAmC,EAAA;AAC7C,IAAA,mCAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,mCAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,mCAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,mCAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EALW,mCAAmC,KAAnC,mCAAmC,GAAA,EAAA,CAAA,CAAA;IAOnC;AAAZ,CAAA,UAAY,qCAAqC,EAAA;AAC/C,IAAA,qCAAA,CAAA,qCAAA,CAAA,0BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,0BAA4B;AAC5B,IAAA,qCAAA,CAAA,qCAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAqB;AACrB,IAAA,qCAAA,CAAA,qCAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB;AAClB,CAAC,EAJW,qCAAqC,KAArC,qCAAqC,GAAA,EAAA,CAAA,CAAA;IAMrC;AAAZ,CAAA,UAAY,wCAAwC,EAAA;AAClD,IAAA,wCAAA,CAAA,wCAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAkB;AAClB,IAAA,wCAAA,CAAA,wCAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc;AACd,IAAA,wCAAA,CAAA,wCAAA,CAAA,uBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,uBAAyB;AAC3B,CAAC,EAJW,wCAAwC,KAAxC,wCAAwC,GAAA,EAAA,CAAA,CAAA;IAMxC;AAAZ,CAAA,UAAY,6BAA6B,EAAA;AACvC,IAAA,6BAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,6BAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,6BAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,6BAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,6BAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EANW,6BAA6B,KAA7B,6BAA6B,GAAA,EAAA,CAAA,CAAA;IAQ7B;AAAZ,CAAA,UAAY,6BAA6B,EAAA;AACvC,IAAA,6BAAA,CAAA,6BAAA,CAAA,kCAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kCAAoC;AACpC,IAAA,6BAAA,CAAA,6BAAA,CAAA,2BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,2BAA6B;AAC7B,IAAA,6BAAA,CAAA,6BAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB;AAClB,CAAC,EAJW,6BAA6B,KAA7B,6BAA6B,GAAA,EAAA,CAAA,CAAA;AAMzC;IACY;AAAZ,CAAA,UAAY,6BAA6B,EAAA;AACvC,IAAA,6BAAA,CAAA,6BAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACR,IAAA,6BAAA,CAAA,6BAAA,CAAA,QAAA,CAAA,GAAA,GAAA,CAAA,GAAA,QAAY;AACZ,IAAA,6BAAA,CAAA,6BAAA,CAAA,KAAA,CAAA,GAAA,IAAA,CAAA,GAAA,KAAU;AACV,IAAA,6BAAA,CAAA,6BAAA,CAAA,SAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAe;AACjB,CAAC,EALW,6BAA6B,KAA7B,6BAA6B,GAAA,EAAA,CAAA,CAAA;IAO7B;AAAZ,CAAA,UAAY,yBAAyB,EAAA;AACnC,IAAA,yBAAA,CAAA,yBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc;AACd,IAAA,yBAAA,CAAA,yBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc;AAChB,CAAC,EAHW,yBAAyB,KAAzB,yBAAyB,GAAA,EAAA,CAAA,CAAA;IAKzB;AAAZ,CAAA,UAAY,gCAAgC,EAAA;AAC1C,IAAA,gCAAA,CAAA,sBAAA,CAAA,GAAA,sBAA6C;AAC7C,IAAA,gCAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,gCAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,gCAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EALW,gCAAgC,KAAhC,gCAAgC,GAAA,EAAA,CAAA,CAAA;;ACzD5C;;;AAGG;;ACHH;;AAEG;;;;"}