@ecodev/natural 42.3.3 → 42.4.1

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.
@@ -39,9 +39,10 @@ export function cancellableTimeout(canceller, milliSeconds = 0) {
39
39
  */
40
40
  export function debug(debugName) {
41
41
  return tap({
42
+ subscribe: () => console.log('SUBSCRIBE', debugName),
42
43
  next: value => console.log('NEXT', debugName, value),
43
44
  error: error => console.log('ERROR', debugName, error),
44
45
  complete: () => console.log('COMPLETE', debugName),
45
46
  });
46
47
  }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnhqcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9jbGFzc2VzL3J4anMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QyxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsU0FBOEIsRUFBRSxlQUF1QixDQUFDO0lBQ3ZGLE9BQU8sS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFDcEIsR0FBRyxDQUFDLEdBQUcsRUFBRTtRQUNMLE9BQU87SUFDWCxDQUFDLENBQUMsQ0FDTCxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUksU0FBaUI7SUFDdEMsT0FBTyxHQUFHLENBQUk7UUFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDO1FBQ3BELEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUM7UUFDdEQsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQztLQUNyRCxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24sIE9ic2VydmFibGUsIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIEJlaGF2ZSBsaWtlIHNldFRpbWVvdXQoKSwgYnV0IHdpdGggYSBtYW5kYXRvcnkgY2FuY2VsIG1lY2hhbmlzbS5cbiAqXG4gKiBUaGlzIGlzIHR5cGljYWxseSB1c2VmdWwgdG8gcmVwbGFjZSBzZXRUaW1lb3V0KCkgaW4gY29tcG9uZW50cyB3aGVyZSB0aGUgY2FsbGJhY2tcbiAqIHdvdWxkIGNyYXNoIGlmIGV4ZWN1dGVkIGFmdGVyIHRoZSBjb21wb25lbnQgZGVzdHJ1Y3Rpb24uIFRoYXQgY2FuIGVhc2lseSBoYXBwZW5cbiAqIHdoZW4gdGhlIHVzZXIgbmF2aWdhdGUgcXVpY2tseSBiZXR3ZWVuIHBhZ2VzLlxuICpcbiAqIFR5cGljYWwgdXNhZ2UgaW4gYSBjb21wb25lbnQgd291bGQgYmU6XG4gKlxuICogYGBgdHNcbiAqIGNhbmNlbGxhYmxlVGltZW91dCh0aGlzLm5nVW5zdWJzY3JpYmUpLnN1YnNjcmliZShteUNhbGxiYWNrKTtcbiAqIGBgYFxuICpcbiAqIEluc3RlYWQgb2YgdGhlIG1vcmUgZXJyb3IgcHJvbmU6XG4gKlxuICogYGBgdHNcbiAqIHB1YmxpYyBmb28oKTogdm9pZCB7XG4gKiAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dChteUNhbGxCYWNrKTtcbiAqIH1cbiAqXG4gKiBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gKiAgICAgaWYgKHRoaXMudGltZW91dCkge1xuICogICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAqICAgICAgICAgdGhpcy50aW1lb3V0ID0gbnVsbDtcbiAqICAgICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5jZWxsYWJsZVRpbWVvdXQoY2FuY2VsbGVyOiBPYnNlcnZhYmxlPHVua25vd24+LCBtaWxsaVNlY29uZHM6IG51bWJlciA9IDApOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGltZXIobWlsbGlTZWNvbmRzKS5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YWtlVW50aWwoY2FuY2VsbGVyKSxcbiAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSksXG4gICAgKTtcbn1cblxuLyoqXG4gKiBGb3IgZGVidWdnaW5nIHB1cnBvc2Ugb25seSwgd2lsbCBkdW1wIGluIGNvbnNvbGUgZXZlcnl0aGluZyB0aGF0IGhhcHBlbiB0b1xuICogdGhlIG9ic2VydmFibGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlYnVnPFQ+KGRlYnVnTmFtZTogc3RyaW5nKTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPFQ+IHtcbiAgICByZXR1cm4gdGFwPFQ+KHtcbiAgICAgICAgbmV4dDogdmFsdWUgPT4gY29uc29sZS5sb2coJ05FWFQnLCBkZWJ1Z05hbWUsIHZhbHVlKSxcbiAgICAgICAgZXJyb3I6IGVycm9yID0+IGNvbnNvbGUubG9nKCdFUlJPUicsIGRlYnVnTmFtZSwgZXJyb3IpLFxuICAgICAgICBjb21wbGV0ZTogKCkgPT4gY29uc29sZS5sb2coJ0NPTVBMRVRFJywgZGVidWdOYW1lKSxcbiAgICB9KTtcbn1cbiJdfQ==
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnhqcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9jbGFzc2VzL3J4anMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QyxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsU0FBOEIsRUFBRSxlQUF1QixDQUFDO0lBQ3ZGLE9BQU8sS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFDcEIsR0FBRyxDQUFDLEdBQUcsRUFBRTtRQUNMLE9BQU87SUFDWCxDQUFDLENBQUMsQ0FDTCxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUksU0FBaUI7SUFDdEMsT0FBTyxHQUFHLENBQUk7UUFDVixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDO1FBQ3BELElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUM7UUFDcEQsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQztRQUN0RCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDO0tBQ3JELENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbiwgT2JzZXJ2YWJsZSwgdGltZXJ9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRha2UsIHRha2VVbnRpbCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogQmVoYXZlIGxpa2Ugc2V0VGltZW91dCgpLCBidXQgd2l0aCBhIG1hbmRhdG9yeSBjYW5jZWwgbWVjaGFuaXNtLlxuICpcbiAqIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWZ1bCB0byByZXBsYWNlIHNldFRpbWVvdXQoKSBpbiBjb21wb25lbnRzIHdoZXJlIHRoZSBjYWxsYmFja1xuICogd291bGQgY3Jhc2ggaWYgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGNvbXBvbmVudCBkZXN0cnVjdGlvbi4gVGhhdCBjYW4gZWFzaWx5IGhhcHBlblxuICogd2hlbiB0aGUgdXNlciBuYXZpZ2F0ZSBxdWlja2x5IGJldHdlZW4gcGFnZXMuXG4gKlxuICogVHlwaWNhbCB1c2FnZSBpbiBhIGNvbXBvbmVudCB3b3VsZCBiZTpcbiAqXG4gKiBgYGB0c1xuICogY2FuY2VsbGFibGVUaW1lb3V0KHRoaXMubmdVbnN1YnNjcmliZSkuc3Vic2NyaWJlKG15Q2FsbGJhY2spO1xuICogYGBgXG4gKlxuICogSW5zdGVhZCBvZiB0aGUgbW9yZSBlcnJvciBwcm9uZTpcbiAqXG4gKiBgYGB0c1xuICogcHVibGljIGZvbygpOiB2b2lkIHtcbiAqICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KG15Q2FsbEJhY2spO1xuICogfVxuICpcbiAqIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAqICAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gKiAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xuICogICAgICAgICB0aGlzLnRpbWVvdXQgPSBudWxsO1xuICogICAgICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbmNlbGxhYmxlVGltZW91dChjYW5jZWxsZXI6IE9ic2VydmFibGU8dW5rbm93bj4sIG1pbGxpU2Vjb25kczogbnVtYmVyID0gMCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aW1lcihtaWxsaVNlY29uZHMpLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHRha2VVbnRpbChjYW5jZWxsZXIpLFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9KSxcbiAgICApO1xufVxuXG4vKipcbiAqIEZvciBkZWJ1Z2dpbmcgcHVycG9zZSBvbmx5LCB3aWxsIGR1bXAgaW4gY29uc29sZSBldmVyeXRoaW5nIHRoYXQgaGFwcGVuIHRvXG4gKiB0aGUgb2JzZXJ2YWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVidWc8VD4oZGVidWdOYW1lOiBzdHJpbmcpOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248VD4ge1xuICAgIHJldHVybiB0YXA8VD4oe1xuICAgICAgICBzdWJzY3JpYmU6ICgpID0+IGNvbnNvbGUubG9nKCdTVUJTQ1JJQkUnLCBkZWJ1Z05hbWUpLFxuICAgICAgICBuZXh0OiB2YWx1ZSA9PiBjb25zb2xlLmxvZygnTkVYVCcsIGRlYnVnTmFtZSwgdmFsdWUpLFxuICAgICAgICBlcnJvcjogZXJyb3IgPT4gY29uc29sZS5sb2coJ0VSUk9SJywgZGVidWdOYW1lLCBlcnJvciksXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiBjb25zb2xlLmxvZygnQ09NUExFVEUnLCBkZWJ1Z05hbWUpLFxuICAgIH0pO1xufVxuIl19
@@ -1,11 +1,20 @@
1
1
  import { DOCUMENT } from '@angular/common';
2
2
  import { HttpHeaders } from '@angular/common/http';
3
3
  import { ErrorHandler, Inject, Injectable, InjectionToken, Optional } from '@angular/core';
4
- import { catchError, EMPTY } from 'rxjs';
4
+ import { catchError, EMPTY, first, of } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/common/http";
7
- export const NaturalLoggerConfigUrl = new InjectionToken('NaturalLoggerConfigUrl');
8
- export const NaturalLoggerConfigExtra = new InjectionToken('NaturalLoggerConfigExtra');
7
+ export const NaturalLoggerConfigUrl = new InjectionToken('Absolute URL of the log server');
8
+ export const NaturalLoggerConfigExtra = new InjectionToken('Class that may provide extra data to log');
9
+ /**
10
+ * Replace Angular's error handler to also send the log to a remote server via HTTP POST.
11
+ *
12
+ * Usage is automatic as soon we import the module via:
13
+ *
14
+ * ```ts
15
+ * NaturalErrorModule.forRoot('http://example.com', ExtraService),
16
+ * ```
17
+ */
9
18
  export class NaturalErrorHandler extends ErrorHandler {
10
19
  constructor(http, document, url, loggerExtra) {
11
20
  super();
@@ -17,18 +26,13 @@ export class NaturalErrorHandler extends ErrorHandler {
17
26
  handleError(error) {
18
27
  console.error(error);
19
28
  const params = {
29
+ message: this.toMessage(error),
20
30
  href: this.document.defaultView?.window.location.href,
21
31
  host: this.document.defaultView?.window.location.hostname,
22
32
  path: this.document.defaultView?.window.location.pathname,
23
33
  agent: this.document.defaultView?.window.navigator.userAgent,
24
34
  level: 'error',
25
35
  };
26
- if (error?.message) {
27
- params.message = error.message;
28
- }
29
- else {
30
- params.message = error;
31
- }
32
36
  if (error?.stack) {
33
37
  params.stacktrace = error.stack;
34
38
  }
@@ -42,7 +46,10 @@ export class NaturalErrorHandler extends ErrorHandler {
42
46
  params.url = error.url;
43
47
  }
44
48
  if (this.loggerExtra) {
45
- this.loggerExtra?.getExtras(error).subscribe(result => {
49
+ this.loggerExtra
50
+ .getExtras(error)
51
+ .pipe(catchError(e => of({ getExtrasErrorMessage: this.toMessage(e) })), first())
52
+ .subscribe(result => {
46
53
  this.postLog(Object.assign(params, result));
47
54
  });
48
55
  }
@@ -50,6 +57,14 @@ export class NaturalErrorHandler extends ErrorHandler {
50
57
  this.postLog(params);
51
58
  }
52
59
  }
60
+ toMessage(error) {
61
+ if (error && typeof error === 'object' && 'message' in error) {
62
+ return '' + error.message;
63
+ }
64
+ else {
65
+ return '' + error;
66
+ }
67
+ }
53
68
  /**
54
69
  * Send parameters to remote log
55
70
  */
@@ -85,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
85
100
  type: Inject,
86
101
  args: [NaturalLoggerConfigExtra]
87
102
  }] }]; } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2xvZ2dlci9lcnJvci1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQWEsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekYsT0FBTyxFQUFDLFVBQVUsRUFBRSxLQUFLLEVBQWEsTUFBTSxNQUFNLENBQUM7OztBQXNCbkQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQVMsd0JBQXdCLENBQUMsQ0FBQztBQUMzRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsMEJBQTBCLENBQUMsQ0FBQztBQUszRyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsWUFBWTtJQUNqRCxZQUNZLElBQWdCLEVBQ1csUUFBa0IsRUFDUSxHQUFXLEVBQ1QsV0FBZ0M7UUFFL0YsS0FBSyxFQUFFLENBQUM7UUFMQSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ1csYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNRLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFDVCxnQkFBVyxHQUFYLFdBQVcsQ0FBcUI7SUFHbkcsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFVO1FBQ3pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckIsTUFBTSxNQUFNLEdBQStCO1lBQ3ZDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDckQsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUTtZQUN6RCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRO1lBQ3pELEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVM7WUFDNUQsS0FBSyxFQUFFLE9BQU87U0FDakIsQ0FBQztRQUVGLElBQUksS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUNoQixNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDbEM7YUFBTTtZQUNILE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1NBQzFCO1FBRUQsSUFBSSxLQUFLLEVBQUUsS0FBSyxFQUFFO1lBQ2QsTUFBTSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ25DO1FBRUQsSUFBSSxPQUFPLEtBQUssRUFBRSxNQUFNLEtBQUssV0FBVyxFQUFFO1lBQ3RDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUNoQztRQUVELElBQUksS0FBSyxFQUFFLFFBQVEsRUFBRTtZQUNqQixNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7U0FDcEM7UUFFRCxJQUFJLEtBQUssRUFBRSxHQUFHLEVBQUU7WUFDWixNQUFNLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7U0FDMUI7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUM7U0FDTjthQUFNO1lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN4QjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLE9BQU8sQ0FBQyxNQUFlO1FBQzNCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxJQUFJO2lCQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFDLE9BQU8sRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsRUFBQyxDQUFDO2lCQUM1RixJQUFJLENBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixPQUFPLEtBQUssQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FDTDtpQkFDQSxTQUFTLEVBQUUsQ0FBQztTQUNwQjtJQUNMLENBQUM7O2dIQWxFUSxtQkFBbUIsNENBR2hCLFFBQVEsYUFDSSxzQkFBc0IsNkJBQ3RCLHdCQUF3QjtvSEFMdkMsbUJBQW1CLGNBRmhCLE1BQU07MkZBRVQsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjttRkFJb0QsUUFBUTswQkFBcEQsTUFBTTsyQkFBQyxRQUFROzswQkFDZixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHNCQUFzQjs7MEJBQ3pDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEhlYWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7RXJyb3JIYW5kbGVyLCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xpdGVyYWx9IGZyb20gJy4uLy4uL3R5cGVzL3R5cGVzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgRU1QVFksIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5hdHVyYWxMb2dnZXJUeXBlIHtcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGhvc3Q/OiBzdHJpbmc7XG4gICAgcGF0aD86IHN0cmluZztcbiAgICBhZ2VudD86IHN0cmluZztcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgc3RhY2t0cmFjZTogc3RyaW5nO1xuICAgIHN0YXR1cz86IG51bWJlcjtcbiAgICByZWZlcnJlcj86IHN0cmluZztcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nO1xuICAgIHVzZXI/OiBzdHJpbmc7XG5cbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF0dXJhbExvZ2dlckV4dHJhIHtcbiAgICBnZXRFeHRyYXMoZXJyb3I6IHVua25vd24pOiBPYnNlcnZhYmxlPFBhcnRpYWw8TmF0dXJhbExvZ2dlclR5cGU+Pjtcbn1cblxuZXhwb3J0IGNvbnN0IE5hdHVyYWxMb2dnZXJDb25maWdVcmwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignTmF0dXJhbExvZ2dlckNvbmZpZ1VybCcpO1xuZXhwb3J0IGNvbnN0IE5hdHVyYWxMb2dnZXJDb25maWdFeHRyYSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOYXR1cmFsTG9nZ2VyRXh0cmE+KCdOYXR1cmFsTG9nZ2VyQ29uZmlnRXh0cmEnKTtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbEVycm9ySGFuZGxlciBleHRlbmRzIEVycm9ySGFuZGxlciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5hdHVyYWxMb2dnZXJDb25maWdVcmwpIHByaXZhdGUgcmVhZG9ubHkgdXJsOiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTmF0dXJhbExvZ2dlckNvbmZpZ0V4dHJhKSBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlckV4dHJhPzogTmF0dXJhbExvZ2dlckV4dHJhLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVFcnJvcihlcnJvcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuXG4gICAgICAgIGNvbnN0IHBhcmFtczogUGFydGlhbDxOYXR1cmFsTG9nZ2VyVHlwZT4gPSB7XG4gICAgICAgICAgICBocmVmOiB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3Py53aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICAgICAgICAgIGhvc3Q6IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc/LndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSxcbiAgICAgICAgICAgIHBhdGg6IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc/LndpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgICAgICAgIGFnZW50OiB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3Py53aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCxcbiAgICAgICAgICAgIGxldmVsOiAnZXJyb3InLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChlcnJvcj8ubWVzc2FnZSkge1xuICAgICAgICAgICAgcGFyYW1zLm1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyYW1zLm1lc3NhZ2UgPSBlcnJvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvcj8uc3RhY2spIHtcbiAgICAgICAgICAgIHBhcmFtcy5zdGFja3RyYWNlID0gZXJyb3Iuc3RhY2s7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGVycm9yPy5zdGF0dXMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXJhbXMuc3RhdHVzID0gZXJyb3Iuc3RhdHVzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yPy5yZWZlcnJlcikge1xuICAgICAgICAgICAgcGFyYW1zLnJlZmVycmVyID0gZXJyb3IucmVmZXJyZXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3I/LnVybCkge1xuICAgICAgICAgICAgcGFyYW1zLnVybCA9IGVycm9yLnVybDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxvZ2dlckV4dHJhKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlckV4dHJhPy5nZXRFeHRyYXMoZXJyb3IpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdExvZyhPYmplY3QuYXNzaWduKHBhcmFtcywgcmVzdWx0KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucG9zdExvZyhwYXJhbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VuZCBwYXJhbWV0ZXJzIHRvIHJlbW90ZSBsb2dcbiAgICAgKi9cbiAgICBwcml2YXRlIHBvc3RMb2cocGFyYW1zOiBMaXRlcmFsKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnVybCkge1xuICAgICAgICAgICAgdGhpcy5odHRwXG4gICAgICAgICAgICAgICAgLnBvc3QodGhpcy51cmwsIHBhcmFtcywge2hlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKX0pXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2xvZ2dlci9lcnJvci1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQWEsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7O0FBNEI5RCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FBUyxnQ0FBZ0MsQ0FBQyxDQUFDO0FBQ25HLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUN0RCwwQ0FBMEMsQ0FDN0MsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBSUgsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFlBQVk7SUFDakQsWUFDcUIsSUFBZ0IsRUFDRSxRQUFrQixFQUNRLEdBQVcsRUFDVCxXQUFnQztRQUUvRixLQUFLLEVBQUUsQ0FBQztRQUxTLFNBQUksR0FBSixJQUFJLENBQVk7UUFDRSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ1EsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUNULGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtJQUduRyxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQVU7UUFDekIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyQixNQUFNLE1BQU0sR0FBc0I7WUFDOUIsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQzlCLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDckQsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUTtZQUN6RCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRO1lBQ3pELEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVM7WUFDNUQsS0FBSyxFQUFFLE9BQU87U0FDakIsQ0FBQztRQUVGLElBQUksS0FBSyxFQUFFLEtBQUssRUFBRTtZQUNkLE1BQU0sQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztTQUNuQztRQUVELElBQUksT0FBTyxLQUFLLEVBQUUsTUFBTSxLQUFLLFdBQVcsRUFBRTtZQUN0QyxNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7U0FDaEM7UUFFRCxJQUFJLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDakIsTUFBTSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQ1osTUFBTSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1NBQzFCO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxXQUFXO2lCQUNYLFNBQVMsQ0FBQyxLQUFLLENBQUM7aUJBQ2hCLElBQUksQ0FDRCxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUMvRCxLQUFLLEVBQUUsQ0FDVjtpQkFDQSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUMsQ0FBQztTQUNWO2FBQU07WUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3hCO0lBQ0wsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUFVO1FBQ3hCLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxTQUFTLElBQUksS0FBSyxFQUFFO1lBQzFELE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDN0I7YUFBTTtZQUNILE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQztTQUNyQjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLE9BQU8sQ0FBQyxNQUF5QjtRQUNyQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsSUFBSTtpQkFDSixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBQyxPQUFPLEVBQUUsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLEVBQUMsQ0FBQztpQkFDNUYsSUFBSSxDQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQ0w7aUJBQ0EsU0FBUyxFQUFFLENBQUM7U0FDcEI7SUFDTCxDQUFDOztnSEEzRVEsbUJBQW1CLDRDQUdoQixRQUFRLGFBQ0ksc0JBQXNCLDZCQUN0Qix3QkFBd0I7b0hBTHZDLG1CQUFtQixjQUZoQixNQUFNOzJGQUVULG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7bUZBSW9ELFFBQVE7MEJBQXBELE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxzQkFBc0I7OzBCQUN6QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBIZWFkZXJzfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0Vycm9ySGFuZGxlciwgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBFTVBUWSwgZmlyc3QsIE9ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBOYXR1cmFsTG9nZ2VyVHlwZSB7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIHN0YWNrdHJhY2U/OiBzdHJpbmc7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBob3N0Pzogc3RyaW5nO1xuICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgYWdlbnQ/OiBzdHJpbmc7XG4gICAgc3RhdHVzPzogbnVtYmVyO1xuICAgIHJlZmVycmVyPzogc3RyaW5nO1xuICAgIHVybD86IHN0cmluZztcbiAgICB1c2VySWQ/OiBzdHJpbmc7XG4gICAgdXNlcj86IHN0cmluZztcblxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOYXR1cmFsTG9nZ2VyRXh0cmEge1xuICAgIC8qKlxuICAgICAqIFJldHVybiBhbiBvYnNlcnZhYmxlIG9mIGV4dHJhIGRhdGEgdGhhdCB3aWxsIGJlIGxvZ2dlZC4gVGhvc2UgZGF0YSB3aWxsIGJlIG1lcmdlZCBpbnRvXG4gICAgICogdGhlIG9yaWdpbmFsIGRhdGEsIGFuZCBzbyBpdCBjYW4gb3ZlcnJpZGUgdGhpbmdzLlxuICAgICAqXG4gICAgICogT25seSB0aGUgZmlyc3QgZW1pdHRlZCB2YWx1ZSB3aWxsIGJlIHVzZWQuXG4gICAgICovXG4gICAgZ2V0RXh0cmFzKGVycm9yOiB1bmtub3duKTogT2JzZXJ2YWJsZTxQYXJ0aWFsPE5hdHVyYWxMb2dnZXJUeXBlPj47XG59XG5cbmV4cG9ydCBjb25zdCBOYXR1cmFsTG9nZ2VyQ29uZmlnVXJsID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0Fic29sdXRlIFVSTCBvZiB0aGUgbG9nIHNlcnZlcicpO1xuZXhwb3J0IGNvbnN0IE5hdHVyYWxMb2dnZXJDb25maWdFeHRyYSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOYXR1cmFsTG9nZ2VyRXh0cmE+KFxuICAgICdDbGFzcyB0aGF0IG1heSBwcm92aWRlIGV4dHJhIGRhdGEgdG8gbG9nJyxcbik7XG5cbi8qKlxuICogUmVwbGFjZSBBbmd1bGFyJ3MgZXJyb3IgaGFuZGxlciB0byBhbHNvIHNlbmQgdGhlIGxvZyB0byBhIHJlbW90ZSBzZXJ2ZXIgdmlhIEhUVFAgUE9TVC5cbiAqXG4gKiBVc2FnZSBpcyBhdXRvbWF0aWMgYXMgc29vbiB3ZSBpbXBvcnQgdGhlIG1vZHVsZSB2aWE6XG4gKlxuICogYGBgdHNcbiAqIE5hdHVyYWxFcnJvck1vZHVsZS5mb3JSb290KCdodHRwOi8vZXhhbXBsZS5jb20nLCBFeHRyYVNlcnZpY2UpLFxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxFcnJvckhhbmRsZXIgZXh0ZW5kcyBFcnJvckhhbmRsZXIge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChOYXR1cmFsTG9nZ2VyQ29uZmlnVXJsKSBwcml2YXRlIHJlYWRvbmx5IHVybDogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5hdHVyYWxMb2dnZXJDb25maWdFeHRyYSkgcHJpdmF0ZSByZWFkb25seSBsb2dnZXJFeHRyYT86IE5hdHVyYWxMb2dnZXJFeHRyYSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcblxuICAgICAgICBjb25zdCBwYXJhbXM6IE5hdHVyYWxMb2dnZXJUeXBlID0ge1xuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50b01lc3NhZ2UoZXJyb3IpLFxuICAgICAgICAgICAgaHJlZjogdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldz8ud2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICAgICAgICBob3N0OiB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3Py53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsXG4gICAgICAgICAgICBwYXRoOiB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3Py53aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsXG4gICAgICAgICAgICBhZ2VudDogdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldz8ud2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQsXG4gICAgICAgICAgICBsZXZlbDogJ2Vycm9yJyxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZXJyb3I/LnN0YWNrKSB7XG4gICAgICAgICAgICBwYXJhbXMuc3RhY2t0cmFjZSA9IGVycm9yLnN0YWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBlcnJvcj8uc3RhdHVzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGFyYW1zLnN0YXR1cyA9IGVycm9yLnN0YXR1cztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvcj8ucmVmZXJyZXIpIHtcbiAgICAgICAgICAgIHBhcmFtcy5yZWZlcnJlciA9IGVycm9yLnJlZmVycmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yPy51cmwpIHtcbiAgICAgICAgICAgIHBhcmFtcy51cmwgPSBlcnJvci51cmw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sb2dnZXJFeHRyYSkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXJFeHRyYVxuICAgICAgICAgICAgICAgIC5nZXRFeHRyYXMoZXJyb3IpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZSA9PiBvZih7Z2V0RXh0cmFzRXJyb3JNZXNzYWdlOiB0aGlzLnRvTWVzc2FnZShlKX0pKSxcbiAgICAgICAgICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc3RMb2coT2JqZWN0LmFzc2lnbihwYXJhbXMsIHJlc3VsdCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wb3N0TG9nKHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHRvTWVzc2FnZShlcnJvcjogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGVycm9yICYmIHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgJiYgJ21lc3NhZ2UnIGluIGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gJycgKyBlcnJvci5tZXNzYWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICcnICsgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZW5kIHBhcmFtZXRlcnMgdG8gcmVtb3RlIGxvZ1xuICAgICAqL1xuICAgIHByaXZhdGUgcG9zdExvZyhwYXJhbXM6IE5hdHVyYWxMb2dnZXJUeXBlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnVybCkge1xuICAgICAgICAgICAgdGhpcy5odHRwXG4gICAgICAgICAgICAgICAgLnBvc3QodGhpcy51cmwsIHBhcmFtcywge2hlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKX0pXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Public API Surface of natural
3
3
  */
4
- export * from './error.module';
5
- export * from './error-handler';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2xvZ2dlci9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuYXR1cmFsXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9lcnJvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvci1oYW5kbGVyJztcbiJdfQ==
4
+ export { NaturalErrorModule } from './error.module';
5
+ export { NaturalErrorHandler, NaturalLoggerConfigExtra, NaturalLoggerConfigUrl, } from './error-handler';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2xvZ2dlci9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsT0FBTyxFQUNILG1CQUFtQixFQUNuQix3QkFBd0IsRUFDeEIsc0JBQXNCLEdBR3pCLE1BQU0saUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5hdHVyYWxcbiAqL1xuXG5leHBvcnQge05hdHVyYWxFcnJvck1vZHVsZX0gZnJvbSAnLi9lcnJvci5tb2R1bGUnO1xuXG5leHBvcnQge1xuICAgIE5hdHVyYWxFcnJvckhhbmRsZXIsXG4gICAgTmF0dXJhbExvZ2dlckNvbmZpZ0V4dHJhLFxuICAgIE5hdHVyYWxMb2dnZXJDb25maWdVcmwsXG4gICAgTmF0dXJhbExvZ2dlckV4dHJhLFxuICAgIE5hdHVyYWxMb2dnZXJUeXBlLFxufSBmcm9tICcuL2Vycm9yLWhhbmRsZXInO1xuIl19
@@ -71,10 +71,10 @@ export class NaturalDropdownContainerComponent extends BasePortalOutlet {
71
71
  }
72
72
  }
73
73
  NaturalDropdownContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalDropdownContainerComponent, deps: [{ token: i0.ElementRef }, { token: i1.ConfigurableFocusTrapFactory }, { token: NATURAL_DROPDOWN_CONTAINER_DATA }], target: i0.ɵɵFactoryTarget.Component });
74
- NaturalDropdownContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: NaturalDropdownContainerComponent, selector: "ng-component", viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }, { propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n (@transformMenu.done)=\"onAnimationDone($event)\"\n [@transformMenu]=\"panelAnimationState\"\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n>\n <div class=\"natural-dropdown-container-content\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div *ngIf=\"data.showValidateButton\" class=\"natural-dropdown-validate-button\">\n <button (click)=\"close()\" color=\"primary\" mat-raised-button>Valider</button>\n </div>\n</div>\n", styles: [".natural-dropdown-container{display:flex;flex-direction:column;border-radius:2px;height:100%}.natural-dropdown-container-content{flex:1;padding:5px;overflow:auto}.natural-dropdown-container .natural-dropdown-validate-button{flex:none;display:flex;flex-direction:row;justify-content:flex-end;margin:5px}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [naturalDropdownAnimations.transformMenu, naturalDropdownAnimations.fadeInItems], encapsulation: i0.ViewEncapsulation.None });
74
+ NaturalDropdownContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: NaturalDropdownContainerComponent, selector: "ng-component", viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }, { propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n (@transformMenu.done)=\"onAnimationDone($event)\"\n [@transformMenu]=\"panelAnimationState\"\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n>\n <div class=\"natural-dropdown-container-content\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div *ngIf=\"data.showValidateButton\" class=\"natural-dropdown-validate-button\">\n <button (click)=\"close()\" color=\"primary\" mat-raised-button i18n>Valider</button>\n </div>\n</div>\n", styles: [".natural-dropdown-container{display:flex;flex-direction:column;border-radius:2px;height:100%}.natural-dropdown-container-content{flex:1;padding:5px;overflow:auto}.natural-dropdown-container .natural-dropdown-validate-button{flex:none;display:flex;flex-direction:row;justify-content:flex-end;margin:5px}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [naturalDropdownAnimations.transformMenu, naturalDropdownAnimations.fadeInItems], encapsulation: i0.ViewEncapsulation.None });
75
75
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalDropdownContainerComponent, decorators: [{
76
76
  type: Component,
77
- args: [{ encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, animations: [naturalDropdownAnimations.transformMenu, naturalDropdownAnimations.fadeInItems], template: "<div\n (@transformMenu.done)=\"onAnimationDone($event)\"\n [@transformMenu]=\"panelAnimationState\"\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n>\n <div class=\"natural-dropdown-container-content\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div *ngIf=\"data.showValidateButton\" class=\"natural-dropdown-validate-button\">\n <button (click)=\"close()\" color=\"primary\" mat-raised-button>Valider</button>\n </div>\n</div>\n", styles: [".natural-dropdown-container{display:flex;flex-direction:column;border-radius:2px;height:100%}.natural-dropdown-container-content{flex:1;padding:5px;overflow:auto}.natural-dropdown-container .natural-dropdown-validate-button{flex:none;display:flex;flex-direction:row;justify-content:flex-end;margin:5px}\n"] }]
77
+ args: [{ encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, animations: [naturalDropdownAnimations.transformMenu, naturalDropdownAnimations.fadeInItems], template: "<div\n (@transformMenu.done)=\"onAnimationDone($event)\"\n [@transformMenu]=\"panelAnimationState\"\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n>\n <div class=\"natural-dropdown-container-content\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div *ngIf=\"data.showValidateButton\" class=\"natural-dropdown-validate-button\">\n <button (click)=\"close()\" color=\"primary\" mat-raised-button i18n>Valider</button>\n </div>\n</div>\n", styles: [".natural-dropdown-container{display:flex;flex-direction:column;border-radius:2px;height:100%}.natural-dropdown-container-content{flex:1;padding:5px;overflow:auto}.natural-dropdown-container .natural-dropdown-validate-button{flex:none;display:flex;flex-direction:row;justify-content:flex-end;margin:5px}\n"] }]
78
78
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ConfigurableFocusTrapFactory }, { type: undefined, decorators: [{
79
79
  type: Inject,
80
80
  args: [NATURAL_DROPDOWN_CONTAINER_DATA]
@@ -85,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
85
85
  type: ViewChild,
86
86
  args: [TemplateRef, { static: true }]
87
87
  }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQWtDLE1BQU0scUJBQXFCLENBQUM7QUFDdkcsT0FBTyxFQUNILFNBQVMsRUFJVCxNQUFNLEVBQ04sY0FBYyxFQUVkLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0saUNBQWlDLENBQUM7Ozs7OztBQUUxRSxNQUFNLFVBQVUseUNBQXlDO0lBQ3JELE1BQU0sS0FBSyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7QUFDekYsQ0FBQztBQU1ELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLElBQUksY0FBYyxDQUM3RCw4QkFBOEIsQ0FDakMsQ0FBQztBQVNGLE1BQU0sT0FBTyxpQ0FBa0MsU0FBUSxnQkFBZ0I7SUFlbkUsWUFDcUIsVUFBc0IsRUFDdEIsZ0JBQThDLEVBQ2YsSUFBa0M7UUFFbEYsS0FBSyxFQUFFLENBQUM7UUFKUyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBOEI7UUFDZixTQUFJLEdBQUosSUFBSSxDQUE4QjtRQWR0RSxXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU3Qyw0Q0FBNEM7UUFDckMsd0JBQW1CLEdBQXFCLE1BQU0sQ0FBQztRQUV0RCx5REFBeUQ7UUFDakQsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXBDLGNBQVMsR0FBcUIsSUFBSSxDQUFDO1FBQ25DLHdDQUFtQyxHQUF1QixJQUFJLENBQUM7SUFRdkUsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxLQUFLO1FBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sb0JBQW9CLENBQUksTUFBeUI7UUFDcEQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxxQkFBcUIsQ0FBSSxNQUEwQjtRQUN0RCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDakMseUNBQXlDLEVBQUUsQ0FBQztTQUMvQztRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBcUI7UUFDeEMsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBRTtZQUMzQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDcEI7YUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN2QjtRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLFNBQVM7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNoRjtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQsK0VBQStFO0lBQ3ZFLFlBQVk7UUFDaEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1DQUFtQyxDQUFDO1FBRXpELHlGQUF5RjtRQUN6RixJQUFJLE9BQU8sSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFO1lBQ2hELE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNuQjtRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQzs7OEhBN0VRLGlDQUFpQyx3RkFrQjlCLCtCQUErQjtrSEFsQmxDLGlDQUFpQyxrR0FDL0IsZUFBZSw0RkFDZixXQUFXLHFGQ3ZDMUIsb2hCQWVBLGszQkRvQmdCLENBQUMseUJBQXlCLENBQUMsYUFBYSxFQUFFLHlCQUF5QixDQUFDLFdBQVcsQ0FBQzsyRkFFbkYsaUNBQWlDO2tCQVA3QyxTQUFTO29DQUdTLGlCQUFpQixDQUFDLElBQUksdUJBQ2hCLEtBQUssY0FDZCxDQUFDLHlCQUF5QixDQUFDLGFBQWEsRUFBRSx5QkFBeUIsQ0FBQyxXQUFXLENBQUM7OzBCQW9CdkYsTUFBTTsyQkFBQywrQkFBK0I7NENBakJRLFlBQVk7c0JBQTlELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDSyxXQUFXO3NCQUF6RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FuaW1hdGlvbkV2ZW50fSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7Q29uZmlndXJhYmxlRm9jdXNUcmFwRmFjdG9yeSwgRm9jdXNUcmFwfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge0Jhc2VQb3J0YWxPdXRsZXQsIENka1BvcnRhbE91dGxldCwgQ29tcG9uZW50UG9ydGFsLCBUZW1wbGF0ZVBvcnRhbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbWJlZGRlZFZpZXdSZWYsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIE9uRGVzdHJveSxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7bmF0dXJhbERyb3Bkb3duQW5pbWF0aW9uc30gZnJvbSAnLi9kcm9wZG93bi1jb250YWluZXItYW5pbWF0aW9ucyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd01hdERpYWxvZ0NvbnRlbnRBbHJlYWR5QXR0YWNoZWRFcnJvcigpOiB2b2lkIHtcbiAgICB0aHJvdyBFcnJvcignQXR0ZW1wdGluZyB0byBhdHRhY2ggZGlhbG9nIGNvbnRlbnQgYWZ0ZXIgY29udGVudCBpcyBhbHJlYWR5IGF0dGFjaGVkJyk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF0dXJhbERyb3Bkb3duQ29udGFpbmVyRGF0YSB7XG4gICAgc2hvd1ZhbGlkYXRlQnV0dG9uOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgTkFUVVJBTF9EUk9QRE9XTl9DT05UQUlORVJfREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOYXR1cmFsRHJvcGRvd25Db250YWluZXJEYXRhPihcbiAgICAnTmF0dXJhbERyb3Bkb3duQ29udGFpbmVyRGF0YScsXG4pO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICAgIGFuaW1hdGlvbnM6IFtuYXR1cmFsRHJvcGRvd25BbmltYXRpb25zLnRyYW5zZm9ybU1lbnUsIG5hdHVyYWxEcm9wZG93bkFuaW1hdGlvbnMuZmFkZUluSXRlbXNdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsRHJvcGRvd25Db250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlUG9ydGFsT3V0bGV0IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBAVmlld0NoaWxkKENka1BvcnRhbE91dGxldCwge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyBwb3J0YWxPdXRsZXQhOiBDZGtQb3J0YWxPdXRsZXQ7XG4gICAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZiwge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyB0ZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xvc2VkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBwYW5lbCBhbmltYXRpb24uICovXG4gICAgcHVibGljIHBhbmVsQW5pbWF0aW9uU3RhdGU6ICd2b2lkJyB8ICdlbnRlcicgPSAndm9pZCc7XG5cbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgYW4gYW5pbWF0aW9uIG9uIHRoZSBtZW51IGNvbXBsZXRlcy4gKi9cbiAgICBwcml2YXRlIGFuaW1hdGlvbkRvbmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJpdmF0ZSBmb2N1c1RyYXA6IEZvY3VzVHJhcCB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgZWxlbWVudEZvY3VzZWRCZWZvcmVEaWFsb2dXYXNPcGVuZWQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb2N1c1RyYXBGYWN0b3J5OiBDb25maWd1cmFibGVGb2N1c1RyYXBGYWN0b3J5LFxuICAgICAgICBASW5qZWN0KE5BVFVSQUxfRFJPUERPV05fQ09OVEFJTkVSX0RBVEEpIHB1YmxpYyBkYXRhOiBOYXR1cmFsRHJvcGRvd25Db250YWluZXJEYXRhLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZWQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VkLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXR0YWNoVGVtcGxhdGVQb3J0YWw8Qz4ocG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDxDPik6IEVtYmVkZGVkVmlld1JlZjxDPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcnRhbE91dGxldC5hdHRhY2hUZW1wbGF0ZVBvcnRhbChwb3J0YWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhdHRhY2hDb21wb25lbnRQb3J0YWw8VD4ocG9ydGFsOiBDb21wb25lbnRQb3J0YWw8VD4pOiBDb21wb25lbnRSZWY8VD4ge1xuICAgICAgICBpZiAodGhpcy5wb3J0YWxPdXRsZXQuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgICAgICAgdGhyb3dNYXREaWFsb2dDb250ZW50QWxyZWFkeUF0dGFjaGVkRXJyb3IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnBvcnRhbE91dGxldC5hdHRhY2hDb21wb25lbnRQb3J0YWwocG9ydGFsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhcnRBbmltYXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFuZWxBbmltYXRpb25TdGF0ZSA9ICdlbnRlcic7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQW5pbWF0aW9uRG9uZShldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICdlbnRlcicpIHtcbiAgICAgICAgICAgIHRoaXMudHJhcEZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ2V4aXQnKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3RvcmVGb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbmltYXRpb25Eb25lLm5leHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyYXBGb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvY3VzVHJhcCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c1RyYXAgPSB0aGlzLmZvY3VzVHJhcEZhY3RvcnkuY3JlYXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZm9jdXNUcmFwLmZvY3VzSW5pdGlhbEVsZW1lbnRXaGVuUmVhZHkoKTtcbiAgICB9XG5cbiAgICAvKiogUmVzdG9yZXMgZm9jdXMgdG8gdGhlIGVsZW1lbnQgdGhhdCB3YXMgZm9jdXNlZCBiZWZvcmUgdGhlIGRpYWxvZyBvcGVuZWQuICovXG4gICAgcHJpdmF0ZSByZXN0b3JlRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvRm9jdXMgPSB0aGlzLmVsZW1lbnRGb2N1c2VkQmVmb3JlRGlhbG9nV2FzT3BlbmVkO1xuXG4gICAgICAgIC8vIFdlIG5lZWQgdGhlIGV4dHJhIGNoZWNrLCBiZWNhdXNlIElFIGNhbiBzZXQgdGhlIGBhY3RpdmVFbGVtZW50YCB0byBudWxsIGluIHNvbWUgY2FzZXMuXG4gICAgICAgIGlmICh0b0ZvY3VzICYmIHR5cGVvZiB0b0ZvY3VzLmZvY3VzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0b0ZvY3VzLmZvY3VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5mb2N1c1RyYXApIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNUcmFwLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXZcbiAgICAoQHRyYW5zZm9ybU1lbnUuZG9uZSk9XCJvbkFuaW1hdGlvbkRvbmUoJGV2ZW50KVwiXG4gICAgW0B0cmFuc2Zvcm1NZW51XT1cInBhbmVsQW5pbWF0aW9uU3RhdGVcIlxuICAgIGNsYXNzPVwibmF0dXJhbC1kcm9wZG93bi1jb250YWluZXIgbWF0LWVsZXZhdGlvbi16MlwiXG4gICAgcm9sZT1cIm1lbnVcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJuYXR1cmFsLWRyb3Bkb3duLWNvbnRhaW5lci1jb250ZW50XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtQb3J0YWxPdXRsZXQ+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJkYXRhLnNob3dWYWxpZGF0ZUJ1dHRvblwiIGNsYXNzPVwibmF0dXJhbC1kcm9wZG93bi12YWxpZGF0ZS1idXR0b25cIj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1yYWlzZWQtYnV0dG9uPlZhbGlkZXI8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQWtDLE1BQU0scUJBQXFCLENBQUM7QUFDdkcsT0FBTyxFQUNILFNBQVMsRUFJVCxNQUFNLEVBQ04sY0FBYyxFQUVkLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0saUNBQWlDLENBQUM7Ozs7OztBQUUxRSxNQUFNLFVBQVUseUNBQXlDO0lBQ3JELE1BQU0sS0FBSyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7QUFDekYsQ0FBQztBQU1ELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLElBQUksY0FBYyxDQUM3RCw4QkFBOEIsQ0FDakMsQ0FBQztBQVNGLE1BQU0sT0FBTyxpQ0FBa0MsU0FBUSxnQkFBZ0I7SUFlbkUsWUFDcUIsVUFBc0IsRUFDdEIsZ0JBQThDLEVBQ2YsSUFBa0M7UUFFbEYsS0FBSyxFQUFFLENBQUM7UUFKUyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBOEI7UUFDZixTQUFJLEdBQUosSUFBSSxDQUE4QjtRQWR0RSxXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU3Qyw0Q0FBNEM7UUFDckMsd0JBQW1CLEdBQXFCLE1BQU0sQ0FBQztRQUV0RCx5REFBeUQ7UUFDakQsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXBDLGNBQVMsR0FBcUIsSUFBSSxDQUFDO1FBQ25DLHdDQUFtQyxHQUF1QixJQUFJLENBQUM7SUFRdkUsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxLQUFLO1FBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sb0JBQW9CLENBQUksTUFBeUI7UUFDcEQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxxQkFBcUIsQ0FBSSxNQUEwQjtRQUN0RCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDakMseUNBQXlDLEVBQUUsQ0FBQztTQUMvQztRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBcUI7UUFDeEMsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBRTtZQUMzQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDcEI7YUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN2QjtRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLFNBQVM7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNoRjtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQsK0VBQStFO0lBQ3ZFLFlBQVk7UUFDaEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1DQUFtQyxDQUFDO1FBRXpELHlGQUF5RjtRQUN6RixJQUFJLE9BQU8sSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFO1lBQ2hELE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNuQjtRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQzs7OEhBN0VRLGlDQUFpQyx3RkFrQjlCLCtCQUErQjtrSEFsQmxDLGlDQUFpQyxrR0FDL0IsZUFBZSw0RkFDZixXQUFXLHFGQ3ZDMUIseWhCQWVBLGszQkRvQmdCLENBQUMseUJBQXlCLENBQUMsYUFBYSxFQUFFLHlCQUF5QixDQUFDLFdBQVcsQ0FBQzsyRkFFbkYsaUNBQWlDO2tCQVA3QyxTQUFTO29DQUdTLGlCQUFpQixDQUFDLElBQUksdUJBQ2hCLEtBQUssY0FDZCxDQUFDLHlCQUF5QixDQUFDLGFBQWEsRUFBRSx5QkFBeUIsQ0FBQyxXQUFXLENBQUM7OzBCQW9CdkYsTUFBTTsyQkFBQywrQkFBK0I7NENBakJRLFlBQVk7c0JBQTlELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDSyxXQUFXO3NCQUF6RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FuaW1hdGlvbkV2ZW50fSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7Q29uZmlndXJhYmxlRm9jdXNUcmFwRmFjdG9yeSwgRm9jdXNUcmFwfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge0Jhc2VQb3J0YWxPdXRsZXQsIENka1BvcnRhbE91dGxldCwgQ29tcG9uZW50UG9ydGFsLCBUZW1wbGF0ZVBvcnRhbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbWJlZGRlZFZpZXdSZWYsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIE9uRGVzdHJveSxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7bmF0dXJhbERyb3Bkb3duQW5pbWF0aW9uc30gZnJvbSAnLi9kcm9wZG93bi1jb250YWluZXItYW5pbWF0aW9ucyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd01hdERpYWxvZ0NvbnRlbnRBbHJlYWR5QXR0YWNoZWRFcnJvcigpOiB2b2lkIHtcbiAgICB0aHJvdyBFcnJvcignQXR0ZW1wdGluZyB0byBhdHRhY2ggZGlhbG9nIGNvbnRlbnQgYWZ0ZXIgY29udGVudCBpcyBhbHJlYWR5IGF0dGFjaGVkJyk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF0dXJhbERyb3Bkb3duQ29udGFpbmVyRGF0YSB7XG4gICAgc2hvd1ZhbGlkYXRlQnV0dG9uOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgTkFUVVJBTF9EUk9QRE9XTl9DT05UQUlORVJfREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOYXR1cmFsRHJvcGRvd25Db250YWluZXJEYXRhPihcbiAgICAnTmF0dXJhbERyb3Bkb3duQ29udGFpbmVyRGF0YScsXG4pO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICAgIGFuaW1hdGlvbnM6IFtuYXR1cmFsRHJvcGRvd25BbmltYXRpb25zLnRyYW5zZm9ybU1lbnUsIG5hdHVyYWxEcm9wZG93bkFuaW1hdGlvbnMuZmFkZUluSXRlbXNdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsRHJvcGRvd25Db250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlUG9ydGFsT3V0bGV0IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBAVmlld0NoaWxkKENka1BvcnRhbE91dGxldCwge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyBwb3J0YWxPdXRsZXQhOiBDZGtQb3J0YWxPdXRsZXQ7XG4gICAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZiwge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyB0ZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xvc2VkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBwYW5lbCBhbmltYXRpb24uICovXG4gICAgcHVibGljIHBhbmVsQW5pbWF0aW9uU3RhdGU6ICd2b2lkJyB8ICdlbnRlcicgPSAndm9pZCc7XG5cbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgYW4gYW5pbWF0aW9uIG9uIHRoZSBtZW51IGNvbXBsZXRlcy4gKi9cbiAgICBwcml2YXRlIGFuaW1hdGlvbkRvbmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJpdmF0ZSBmb2N1c1RyYXA6IEZvY3VzVHJhcCB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgZWxlbWVudEZvY3VzZWRCZWZvcmVEaWFsb2dXYXNPcGVuZWQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb2N1c1RyYXBGYWN0b3J5OiBDb25maWd1cmFibGVGb2N1c1RyYXBGYWN0b3J5LFxuICAgICAgICBASW5qZWN0KE5BVFVSQUxfRFJPUERPV05fQ09OVEFJTkVSX0RBVEEpIHB1YmxpYyBkYXRhOiBOYXR1cmFsRHJvcGRvd25Db250YWluZXJEYXRhLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZWQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VkLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXR0YWNoVGVtcGxhdGVQb3J0YWw8Qz4ocG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDxDPik6IEVtYmVkZGVkVmlld1JlZjxDPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcnRhbE91dGxldC5hdHRhY2hUZW1wbGF0ZVBvcnRhbChwb3J0YWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhdHRhY2hDb21wb25lbnRQb3J0YWw8VD4ocG9ydGFsOiBDb21wb25lbnRQb3J0YWw8VD4pOiBDb21wb25lbnRSZWY8VD4ge1xuICAgICAgICBpZiAodGhpcy5wb3J0YWxPdXRsZXQuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgICAgICAgdGhyb3dNYXREaWFsb2dDb250ZW50QWxyZWFkeUF0dGFjaGVkRXJyb3IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnBvcnRhbE91dGxldC5hdHRhY2hDb21wb25lbnRQb3J0YWwocG9ydGFsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhcnRBbmltYXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFuZWxBbmltYXRpb25TdGF0ZSA9ICdlbnRlcic7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQW5pbWF0aW9uRG9uZShldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICdlbnRlcicpIHtcbiAgICAgICAgICAgIHRoaXMudHJhcEZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ2V4aXQnKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3RvcmVGb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbmltYXRpb25Eb25lLm5leHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyYXBGb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvY3VzVHJhcCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c1RyYXAgPSB0aGlzLmZvY3VzVHJhcEZhY3RvcnkuY3JlYXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZm9jdXNUcmFwLmZvY3VzSW5pdGlhbEVsZW1lbnRXaGVuUmVhZHkoKTtcbiAgICB9XG5cbiAgICAvKiogUmVzdG9yZXMgZm9jdXMgdG8gdGhlIGVsZW1lbnQgdGhhdCB3YXMgZm9jdXNlZCBiZWZvcmUgdGhlIGRpYWxvZyBvcGVuZWQuICovXG4gICAgcHJpdmF0ZSByZXN0b3JlRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvRm9jdXMgPSB0aGlzLmVsZW1lbnRGb2N1c2VkQmVmb3JlRGlhbG9nV2FzT3BlbmVkO1xuXG4gICAgICAgIC8vIFdlIG5lZWQgdGhlIGV4dHJhIGNoZWNrLCBiZWNhdXNlIElFIGNhbiBzZXQgdGhlIGBhY3RpdmVFbGVtZW50YCB0byBudWxsIGluIHNvbWUgY2FzZXMuXG4gICAgICAgIGlmICh0b0ZvY3VzICYmIHR5cGVvZiB0b0ZvY3VzLmZvY3VzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0b0ZvY3VzLmZvY3VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5mb2N1c1RyYXApIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNUcmFwLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXZcbiAgICAoQHRyYW5zZm9ybU1lbnUuZG9uZSk9XCJvbkFuaW1hdGlvbkRvbmUoJGV2ZW50KVwiXG4gICAgW0B0cmFuc2Zvcm1NZW51XT1cInBhbmVsQW5pbWF0aW9uU3RhdGVcIlxuICAgIGNsYXNzPVwibmF0dXJhbC1kcm9wZG93bi1jb250YWluZXIgbWF0LWVsZXZhdGlvbi16MlwiXG4gICAgcm9sZT1cIm1lbnVcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJuYXR1cmFsLWRyb3Bkb3duLWNvbnRhaW5lci1jb250ZW50XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtQb3J0YWxPdXRsZXQ+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJkYXRhLnNob3dWYWxpZGF0ZUJ1dHRvblwiIGNsYXNzPVwibmF0dXJhbC1kcm9wZG93bi12YWxpZGF0ZS1idXR0b25cIj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1yYWlzZWQtYnV0dG9uIGkxOG4+VmFsaWRlcjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import '@angular/localize/init';
2
2
  import * as i0 from '@angular/core';
3
3
  import { Directive, Component, Inject, Injectable, HostBinding, HostListener, InjectionToken, Input, NgModule, EventEmitter, ChangeDetectionStrategy, Output, ContentChildren, Pipe, TemplateRef, ViewEncapsulation, ViewChild, Injector, Optional, Self, ContentChild, PLATFORM_ID, ErrorHandler } from '@angular/core';
4
- import { Subject, BehaviorSubject, of, timer, EMPTY, Observable, ReplaySubject, forkJoin, merge as merge$1, asyncScheduler, catchError } from 'rxjs';
4
+ import { Subject, BehaviorSubject, of, timer, EMPTY, Observable, ReplaySubject, forkJoin, merge as merge$1, asyncScheduler, catchError, first as first$1 } from 'rxjs';
5
5
  import * as i5 from '@angular/forms';
6
6
  import { FormGroup, FormArray, Validators, FormControl, FormsModule, FormControlDirective, FormControlName, ReactiveFormsModule } from '@angular/forms';
7
7
  import * as i2$1 from '@angular/router';
@@ -3560,6 +3560,7 @@ function cancellableTimeout(canceller, milliSeconds = 0) {
3560
3560
  */
3561
3561
  function debug(debugName) {
3562
3562
  return tap({
3563
+ subscribe: () => console.log('SUBSCRIBE', debugName),
3563
3564
  next: value => console.log('NEXT', debugName, value),
3564
3565
  error: error => console.log('ERROR', debugName, error),
3565
3566
  complete: () => console.log('COMPLETE', debugName),
@@ -5211,10 +5212,10 @@ class NaturalDropdownContainerComponent extends BasePortalOutlet {
5211
5212
  }
5212
5213
  }
5213
5214
  NaturalDropdownContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalDropdownContainerComponent, deps: [{ token: i0.ElementRef }, { token: i1$6.ConfigurableFocusTrapFactory }, { token: NATURAL_DROPDOWN_CONTAINER_DATA }], target: i0.ɵɵFactoryTarget.Component });
5214
- NaturalDropdownContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: NaturalDropdownContainerComponent, selector: "ng-component", viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }, { propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n (@transformMenu.done)=\"onAnimationDone($event)\"\n [@transformMenu]=\"panelAnimationState\"\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n>\n <div class=\"natural-dropdown-container-content\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div *ngIf=\"data.showValidateButton\" class=\"natural-dropdown-validate-button\">\n <button (click)=\"close()\" color=\"primary\" mat-raised-button>Valider</button>\n </div>\n</div>\n", styles: [".natural-dropdown-container{display:flex;flex-direction:column;border-radius:2px;height:100%}.natural-dropdown-container-content{flex:1;padding:5px;overflow:auto}.natural-dropdown-container .natural-dropdown-validate-button{flex:none;display:flex;flex-direction:row;justify-content:flex-end;margin:5px}\n"], components: [{ type: i1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [naturalDropdownAnimations.transformMenu, naturalDropdownAnimations.fadeInItems], encapsulation: i0.ViewEncapsulation.None });
5215
+ NaturalDropdownContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: NaturalDropdownContainerComponent, selector: "ng-component", viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }, { propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n (@transformMenu.done)=\"onAnimationDone($event)\"\n [@transformMenu]=\"panelAnimationState\"\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n>\n <div class=\"natural-dropdown-container-content\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div *ngIf=\"data.showValidateButton\" class=\"natural-dropdown-validate-button\">\n <button (click)=\"close()\" color=\"primary\" mat-raised-button i18n>Valider</button>\n </div>\n</div>\n", styles: [".natural-dropdown-container{display:flex;flex-direction:column;border-radius:2px;height:100%}.natural-dropdown-container-content{flex:1;padding:5px;overflow:auto}.natural-dropdown-container .natural-dropdown-validate-button{flex:none;display:flex;flex-direction:row;justify-content:flex-end;margin:5px}\n"], components: [{ type: i1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [naturalDropdownAnimations.transformMenu, naturalDropdownAnimations.fadeInItems], encapsulation: i0.ViewEncapsulation.None });
5215
5216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalDropdownContainerComponent, decorators: [{
5216
5217
  type: Component,
5217
- args: [{ encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, animations: [naturalDropdownAnimations.transformMenu, naturalDropdownAnimations.fadeInItems], template: "<div\n (@transformMenu.done)=\"onAnimationDone($event)\"\n [@transformMenu]=\"panelAnimationState\"\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n>\n <div class=\"natural-dropdown-container-content\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div *ngIf=\"data.showValidateButton\" class=\"natural-dropdown-validate-button\">\n <button (click)=\"close()\" color=\"primary\" mat-raised-button>Valider</button>\n </div>\n</div>\n", styles: [".natural-dropdown-container{display:flex;flex-direction:column;border-radius:2px;height:100%}.natural-dropdown-container-content{flex:1;padding:5px;overflow:auto}.natural-dropdown-container .natural-dropdown-validate-button{flex:none;display:flex;flex-direction:row;justify-content:flex-end;margin:5px}\n"] }]
5218
+ args: [{ encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, animations: [naturalDropdownAnimations.transformMenu, naturalDropdownAnimations.fadeInItems], template: "<div\n (@transformMenu.done)=\"onAnimationDone($event)\"\n [@transformMenu]=\"panelAnimationState\"\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n>\n <div class=\"natural-dropdown-container-content\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div *ngIf=\"data.showValidateButton\" class=\"natural-dropdown-validate-button\">\n <button (click)=\"close()\" color=\"primary\" mat-raised-button i18n>Valider</button>\n </div>\n</div>\n", styles: [".natural-dropdown-container{display:flex;flex-direction:column;border-radius:2px;height:100%}.natural-dropdown-container-content{flex:1;padding:5px;overflow:auto}.natural-dropdown-container .natural-dropdown-validate-button{flex:none;display:flex;flex-direction:row;justify-content:flex-end;margin:5px}\n"] }]
5218
5219
  }], ctorParameters: function () {
5219
5220
  return [{ type: i0.ElementRef }, { type: i1$6.ConfigurableFocusTrapFactory }, { type: undefined, decorators: [{
5220
5221
  type: Inject,
@@ -10556,8 +10557,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
10556
10557
  * Public API Surface of natural
10557
10558
  */
10558
10559
 
10559
- const NaturalLoggerConfigUrl = new InjectionToken('NaturalLoggerConfigUrl');
10560
- const NaturalLoggerConfigExtra = new InjectionToken('NaturalLoggerConfigExtra');
10560
+ const NaturalLoggerConfigUrl = new InjectionToken('Absolute URL of the log server');
10561
+ const NaturalLoggerConfigExtra = new InjectionToken('Class that may provide extra data to log');
10562
+ /**
10563
+ * Replace Angular's error handler to also send the log to a remote server via HTTP POST.
10564
+ *
10565
+ * Usage is automatic as soon we import the module via:
10566
+ *
10567
+ * ```ts
10568
+ * NaturalErrorModule.forRoot('http://example.com', ExtraService),
10569
+ * ```
10570
+ */
10561
10571
  class NaturalErrorHandler extends ErrorHandler {
10562
10572
  constructor(http, document, url, loggerExtra) {
10563
10573
  super();
@@ -10567,21 +10577,16 @@ class NaturalErrorHandler extends ErrorHandler {
10567
10577
  this.loggerExtra = loggerExtra;
10568
10578
  }
10569
10579
  handleError(error) {
10570
- var _a, _b, _c, _d, _e;
10580
+ var _a, _b, _c, _d;
10571
10581
  console.error(error);
10572
10582
  const params = {
10583
+ message: this.toMessage(error),
10573
10584
  href: (_a = this.document.defaultView) === null || _a === void 0 ? void 0 : _a.window.location.href,
10574
10585
  host: (_b = this.document.defaultView) === null || _b === void 0 ? void 0 : _b.window.location.hostname,
10575
10586
  path: (_c = this.document.defaultView) === null || _c === void 0 ? void 0 : _c.window.location.pathname,
10576
10587
  agent: (_d = this.document.defaultView) === null || _d === void 0 ? void 0 : _d.window.navigator.userAgent,
10577
10588
  level: 'error',
10578
10589
  };
10579
- if (error === null || error === void 0 ? void 0 : error.message) {
10580
- params.message = error.message;
10581
- }
10582
- else {
10583
- params.message = error;
10584
- }
10585
10590
  if (error === null || error === void 0 ? void 0 : error.stack) {
10586
10591
  params.stacktrace = error.stack;
10587
10592
  }
@@ -10595,7 +10600,10 @@ class NaturalErrorHandler extends ErrorHandler {
10595
10600
  params.url = error.url;
10596
10601
  }
10597
10602
  if (this.loggerExtra) {
10598
- (_e = this.loggerExtra) === null || _e === void 0 ? void 0 : _e.getExtras(error).subscribe(result => {
10603
+ this.loggerExtra
10604
+ .getExtras(error)
10605
+ .pipe(catchError(e => of({ getExtrasErrorMessage: this.toMessage(e) })), first$1())
10606
+ .subscribe(result => {
10599
10607
  this.postLog(Object.assign(params, result));
10600
10608
  });
10601
10609
  }
@@ -10603,6 +10611,14 @@ class NaturalErrorHandler extends ErrorHandler {
10603
10611
  this.postLog(params);
10604
10612
  }
10605
10613
  }
10614
+ toMessage(error) {
10615
+ if (error && typeof error === 'object' && 'message' in error) {
10616
+ return '' + error.message;
10617
+ }
10618
+ else {
10619
+ return '' + error;
10620
+ }
10621
+ }
10606
10622
  /**
10607
10623
  * Send parameters to remote log
10608
10624
  */