@ngneat/helipopper 10.0.0-alpha.0 → 10.0.0-alpha.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.
@@ -1,17 +1,17 @@
1
1
  export const tooltipVariation = {
2
- theme: null,
2
+ theme: undefined,
3
3
  arrow: false,
4
4
  animation: 'scale',
5
5
  trigger: 'mouseenter',
6
- offset: [0, 5]
6
+ offset: [0, 5],
7
7
  };
8
8
  export const popperVariation = {
9
9
  theme: 'light',
10
10
  arrow: true,
11
11
  offset: [0, 10],
12
- animation: null,
12
+ animation: undefined,
13
13
  trigger: 'click',
14
- interactive: true
14
+ interactive: true,
15
15
  };
16
16
  export function withContextMenuVariation(baseVariation) {
17
17
  return {
@@ -19,7 +19,7 @@ export function withContextMenuVariation(baseVariation) {
19
19
  placement: 'right-start',
20
20
  trigger: 'manual',
21
21
  arrow: false,
22
- offset: [0, 0]
22
+ offset: [0, 0],
23
23
  };
24
24
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ25lYXQvaGVsaXBvcHBlci9zcmMvbGliL2RlZmF1bHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFjO0lBQ3pDLEtBQUssRUFBRSxJQUFJO0lBQ1gsS0FBSyxFQUFFLEtBQUs7SUFDWixTQUFTLEVBQUUsT0FBTztJQUNsQixPQUFPLEVBQUUsWUFBWTtJQUNyQixNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ2YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBYztJQUN4QyxLQUFLLEVBQUUsT0FBTztJQUNkLEtBQUssRUFBRSxJQUFJO0lBQ1gsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNmLFNBQVMsRUFBRSxJQUFJO0lBQ2YsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLElBQUk7Q0FDbEIsQ0FBQztBQUVGLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxhQUF3QjtJQUMvRCxPQUFPO1FBQ0wsR0FBRyxhQUFhO1FBQ2hCLFNBQVMsRUFBRSxhQUFhO1FBQ3hCLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLEtBQUssRUFBRSxLQUFLO1FBQ1osTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUNmLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGlwcHlDb25maWcgfSBmcm9tICcuL3RpcHB5LnR5cGVzJztcblxudHlwZSBWYXJpYXRpb24gPSBUaXBweUNvbmZpZ1sndmFyaWF0aW9ucyddWzBdO1xuXG5leHBvcnQgY29uc3QgdG9vbHRpcFZhcmlhdGlvbjogVmFyaWF0aW9uID0ge1xuICB0aGVtZTogbnVsbCxcbiAgYXJyb3c6IGZhbHNlLFxuICBhbmltYXRpb246ICdzY2FsZScsXG4gIHRyaWdnZXI6ICdtb3VzZWVudGVyJyxcbiAgb2Zmc2V0OiBbMCwgNV1cbn07XG5cbmV4cG9ydCBjb25zdCBwb3BwZXJWYXJpYXRpb246IFZhcmlhdGlvbiA9IHtcbiAgdGhlbWU6ICdsaWdodCcsXG4gIGFycm93OiB0cnVlLFxuICBvZmZzZXQ6IFswLCAxMF0sXG4gIGFuaW1hdGlvbjogbnVsbCxcbiAgdHJpZ2dlcjogJ2NsaWNrJyxcbiAgaW50ZXJhY3RpdmU6IHRydWVcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ29udGV4dE1lbnVWYXJpYXRpb24oYmFzZVZhcmlhdGlvbjogVmFyaWF0aW9uKTogVmFyaWF0aW9uIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlVmFyaWF0aW9uLFxuICAgIHBsYWNlbWVudDogJ3JpZ2h0LXN0YXJ0JyxcbiAgICB0cmlnZ2VyOiAnbWFudWFsJyxcbiAgICBhcnJvdzogZmFsc2UsXG4gICAgb2Zmc2V0OiBbMCwgMF1cbiAgfTtcbn1cbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ25lYXQvaGVsaXBvcHBlci9zcmMvbGliL2RlZmF1bHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFjO0lBQ3pDLEtBQUssRUFBRSxTQUFTO0lBQ2hCLEtBQUssRUFBRSxLQUFLO0lBQ1osU0FBUyxFQUFFLE9BQU87SUFDbEIsT0FBTyxFQUFFLFlBQVk7SUFDckIsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNmLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQWM7SUFDeEMsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsSUFBSTtJQUNYLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDZixTQUFTLEVBQUUsU0FBUztJQUNwQixPQUFPLEVBQUUsT0FBTztJQUNoQixXQUFXLEVBQUUsSUFBSTtDQUNsQixDQUFDO0FBRUYsTUFBTSxVQUFVLHdCQUF3QixDQUFDLGFBQXdCO0lBQy9ELE9BQU87UUFDTCxHQUFHLGFBQWE7UUFDaEIsU0FBUyxFQUFFLGFBQWE7UUFDeEIsT0FBTyxFQUFFLFFBQVE7UUFDakIsS0FBSyxFQUFFLEtBQUs7UUFDWixNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRpcHB5UHJvcHMgfSBmcm9tICcuL3RpcHB5LnR5cGVzJztcblxudHlwZSBWYXJpYXRpb24gPSBQYXJ0aWFsPFRpcHB5UHJvcHM+O1xuXG5leHBvcnQgY29uc3QgdG9vbHRpcFZhcmlhdGlvbjogVmFyaWF0aW9uID0ge1xuICB0aGVtZTogdW5kZWZpbmVkLFxuICBhcnJvdzogZmFsc2UsXG4gIGFuaW1hdGlvbjogJ3NjYWxlJyxcbiAgdHJpZ2dlcjogJ21vdXNlZW50ZXInLFxuICBvZmZzZXQ6IFswLCA1XSxcbn07XG5cbmV4cG9ydCBjb25zdCBwb3BwZXJWYXJpYXRpb246IFZhcmlhdGlvbiA9IHtcbiAgdGhlbWU6ICdsaWdodCcsXG4gIGFycm93OiB0cnVlLFxuICBvZmZzZXQ6IFswLCAxMF0sXG4gIGFuaW1hdGlvbjogdW5kZWZpbmVkLFxuICB0cmlnZ2VyOiAnY2xpY2snLFxuICBpbnRlcmFjdGl2ZTogdHJ1ZSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ29udGV4dE1lbnVWYXJpYXRpb24oYmFzZVZhcmlhdGlvbjogVmFyaWF0aW9uKTogVmFyaWF0aW9uIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlVmFyaWF0aW9uLFxuICAgIHBsYWNlbWVudDogJ3JpZ2h0LXN0YXJ0JyxcbiAgICB0cmlnZ2VyOiAnbWFudWFsJyxcbiAgICBhcnJvdzogZmFsc2UsXG4gICAgb2Zmc2V0OiBbMCwgMF0sXG4gIH07XG59XG4iXX0=
@@ -5,5 +5,6 @@
5
5
  // we fall back to the native implementation. Accessing the native implementation
6
6
  // allows us to remove `runOutsideAngular` calls and reduce indentation,
7
7
  // making the code a bit more readable.
8
- export const IntersectionObserver = globalThis['__zone_symbol__IntersectionObserver'] || globalThis.IntersectionObserver;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJzZWN0aW9uLW9ic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L2hlbGlwb3BwZXIvc3JjL2xpYi9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEVBQTRFO0FBQzVFLGdGQUFnRjtBQUNoRixnREFBZ0Q7QUFDaEQsMkZBQTJGO0FBQzNGLGlGQUFpRjtBQUNqRix3RUFBd0U7QUFDeEUsdUNBQXVDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUMvQixVQUFVLENBQUMscUNBQXFDLENBQUMsSUFBSSxVQUFVLENBQUMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZXQncyByZXRyaWV2ZSB0aGUgbmF0aXZlIGBJbnRlcnNlY3Rpb25PYnNlcnZlcmAgaW1wbGVtZW50YXRpb24gaGlkZGVuIGJ5XG4vLyBgX196b25lX3N5bWJvbF9fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJgLiBUaGlzIHdvdWxkIGJlIHRoZSB1bnBhdGNoZWQgdmVyc2lvbiBvZlxuLy8gdGhlIG9ic2VydmVyIHByZXNlbnQgaW4gem9uZS5qcyBlbnZpcm9ubWVudHMuXG4vLyBPdGhlcndpc2UsIGlmIHRoZSB1c2VyIGlzIHVzaW5nIHpvbmVsZXNzIGNoYW5nZSBkZXRlY3Rpb24gKGFuZCB6b25lLmpzIGlzIG5vdCBpbmNsdWRlZCksXG4vLyB3ZSBmYWxsIGJhY2sgdG8gdGhlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbi4gQWNjZXNzaW5nIHRoZSBuYXRpdmUgaW1wbGVtZW50YXRpb25cbi8vIGFsbG93cyB1cyB0byByZW1vdmUgYHJ1bk91dHNpZGVBbmd1bGFyYCBjYWxscyBhbmQgcmVkdWNlIGluZGVudGF0aW9uLFxuLy8gbWFraW5nIHRoZSBjb2RlIGEgYml0IG1vcmUgcmVhZGFibGUuXG5leHBvcnQgY29uc3QgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6IHR5cGVvZiBnbG9iYWxUaGlzLkludGVyc2VjdGlvbk9ic2VydmVyID1cbiAgZ2xvYmFsVGhpc1snX196b25lX3N5bWJvbF9fSW50ZXJzZWN0aW9uT2JzZXJ2ZXInXSB8fCBnbG9iYWxUaGlzLkludGVyc2VjdGlvbk9ic2VydmVyO1xuIl19
8
+ export const IntersectionObserver = globalThis['__zone_symbol__IntersectionObserver'] ||
9
+ globalThis.IntersectionObserver;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJzZWN0aW9uLW9ic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L2hlbGlwb3BwZXIvc3JjL2xpYi9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEVBQTRFO0FBQzVFLGdGQUFnRjtBQUNoRixnREFBZ0Q7QUFDaEQsMkZBQTJGO0FBQzNGLGlGQUFpRjtBQUNqRix3RUFBd0U7QUFDeEUsdUNBQXVDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUM5QixVQUFrQixDQUFDLHFDQUFxQyxDQUFDO0lBQzFELFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExldCdzIHJldHJpZXZlIHRoZSBuYXRpdmUgYEludGVyc2VjdGlvbk9ic2VydmVyYCBpbXBsZW1lbnRhdGlvbiBoaWRkZW4gYnlcbi8vIGBfX3pvbmVfc3ltYm9sX19JbnRlcnNlY3Rpb25PYnNlcnZlcmAuIFRoaXMgd291bGQgYmUgdGhlIHVucGF0Y2hlZCB2ZXJzaW9uIG9mXG4vLyB0aGUgb2JzZXJ2ZXIgcHJlc2VudCBpbiB6b25lLmpzIGVudmlyb25tZW50cy5cbi8vIE90aGVyd2lzZSwgaWYgdGhlIHVzZXIgaXMgdXNpbmcgem9uZWxlc3MgY2hhbmdlIGRldGVjdGlvbiAoYW5kIHpvbmUuanMgaXMgbm90IGluY2x1ZGVkKSxcbi8vIHdlIGZhbGwgYmFjayB0byB0aGUgbmF0aXZlIGltcGxlbWVudGF0aW9uLiBBY2Nlc3NpbmcgdGhlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvblxuLy8gYWxsb3dzIHVzIHRvIHJlbW92ZSBgcnVuT3V0c2lkZUFuZ3VsYXJgIGNhbGxzIGFuZCByZWR1Y2UgaW5kZW50YXRpb24sXG4vLyBtYWtpbmcgdGhlIGNvZGUgYSBiaXQgbW9yZSByZWFkYWJsZS5cbmV4cG9ydCBjb25zdCBJbnRlcnNlY3Rpb25PYnNlcnZlcjogdHlwZW9mIGdsb2JhbFRoaXMuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPVxuICAoZ2xvYmFsVGhpcyBhcyBhbnkpWydfX3pvbmVfc3ltYm9sX19JbnRlcnNlY3Rpb25PYnNlcnZlciddIHx8XG4gIGdsb2JhbFRoaXMuSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4iXX0=
@@ -10,6 +10,21 @@ import { TippyFactory } from './tippy.factory';
10
10
  import { coerceBooleanAttribute } from './coercion';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "@ngneat/overview";
13
+ // These are the default values used by `tippy.js`.
14
+ // We are providing them as default input values.
15
+ // The `tippy.js` repository has been archived and is unlikely to
16
+ // change in the future, so it is safe to use these values as defaults.
17
+ const defaultAppendTo = () => document.body;
18
+ const defaultDelay = 0;
19
+ const defaultDuration = [300, 250];
20
+ const defaultInteractiveBorder = 2;
21
+ const defaultMaxWidth = 350;
22
+ const defaultOffset = [0, 10];
23
+ const defaultPlacement = 'top';
24
+ const defaultTrigger = 'mouseenter focus';
25
+ const defaultTriggerTarget = null;
26
+ const defaultZIndex = 9999;
27
+ const defaultAnimation = 'fade';
13
28
  export class TippyDirective {
14
29
  // It should be a getter because computations are cached until
15
30
  // any of the producers change.
@@ -23,41 +38,52 @@ export class TippyDirective {
23
38
  this.vcr = vcr;
24
39
  this.ngZone = ngZone;
25
40
  this.hostRef = hostRef;
26
- // Note that default values are not provided for these bindings because `tippy.js`
27
- // has its own default values and checks whether the provided props are `undefined`.
28
- // We should keep `undefined` as the default value.
29
- this.appendTo = input(undefined, { alias: 'tpAppendTo' });
30
- this.content = input(undefined, { alias: 'tp' });
31
- this.delay = input(undefined, { alias: 'tpDelay' });
32
- this.duration = input(undefined, { alias: 'tpDuration' });
33
- this.hideOnClick = input(undefined, {
41
+ this.appendTo = input(defaultAppendTo, {
42
+ alias: 'tpAppendTo',
43
+ });
44
+ this.content = input('', { alias: 'tp' });
45
+ this.delay = input(defaultDelay, {
46
+ alias: 'tpDelay',
47
+ });
48
+ this.duration = input(defaultDuration, {
49
+ alias: 'tpDuration',
50
+ });
51
+ this.hideOnClick = input(true, {
34
52
  alias: 'tpHideOnClick',
35
53
  });
36
- this.interactive = input(undefined, {
54
+ this.interactive = input(false, {
37
55
  alias: 'tpInteractive',
38
56
  });
39
- this.interactiveBorder = input(undefined, {
57
+ this.interactiveBorder = input(defaultInteractiveBorder, {
40
58
  alias: 'tpInteractiveBorder',
41
59
  });
42
- this.maxWidth = input(undefined, { alias: 'tpMaxWidth' });
60
+ this.maxWidth = input(defaultMaxWidth, {
61
+ alias: 'tpMaxWidth',
62
+ });
43
63
  // Note that some of the input signal types are declared explicitly because the compiler
44
64
  // also uses types from `@popperjs/core` and requires a type annotation.
45
- this.offset = input(undefined, { alias: 'tpOffset' });
46
- this.placement = input(undefined, {
65
+ this.offset = input(defaultOffset, {
66
+ alias: 'tpOffset',
67
+ });
68
+ this.placement = input(defaultPlacement, {
47
69
  alias: 'tpPlacement',
48
70
  });
49
- this.popperOptions = input(undefined, {
71
+ this.popperOptions = input({}, {
50
72
  alias: 'tpPopperOptions',
51
73
  });
52
- this.showOnCreate = input(undefined, {
74
+ this.showOnCreate = input(false, {
53
75
  alias: 'tpShowOnCreate',
54
76
  });
55
- this.trigger = input(undefined, { alias: 'tpTrigger' });
56
- this.triggerTarget = input(undefined, {
77
+ this.trigger = input(defaultTrigger, {
78
+ alias: 'tpTrigger',
79
+ });
80
+ this.triggerTarget = input(defaultTriggerTarget, {
57
81
  alias: 'tpTriggerTarget',
58
82
  });
59
- this.zIndex = input(undefined, { alias: 'tpZIndex' });
60
- this.animation = input(undefined, {
83
+ this.zIndex = input(defaultZIndex, {
84
+ alias: 'tpZIndex',
85
+ });
86
+ this.animation = input(defaultAnimation, {
61
87
  alias: 'tpAnimation',
62
88
  });
63
89
  this.useTextContent = input(false, {
@@ -89,11 +115,15 @@ export class TippyDirective {
89
115
  alias: 'tpHideOnEscape',
90
116
  });
91
117
  this.detectChangesComponent = input(true, { alias: 'tpDetectChangesComponent' });
92
- this.popperWidth = input(undefined, { alias: 'tpPopperWidth' });
118
+ this.popperWidth = input(undefined, {
119
+ alias: 'tpPopperWidth',
120
+ });
93
121
  this.customHost = input(undefined, { alias: 'tpHost' });
94
122
  this.isVisible = model(false, { alias: 'tpIsVisible' });
95
123
  this.visible = new EventEmitter();
124
+ this.viewRef = null;
96
125
  this.variationDefined = false;
126
+ this.viewOptions$ = null;
97
127
  /**
98
128
  * We had use `visible` event emitter previously as a `takeUntil` subscriber in multiple places
99
129
  * within the directive.
@@ -102,6 +132,7 @@ export class TippyDirective {
102
132
  * in the template (`<button [tippy]="..." (visible)="..."></button>`).
103
133
  */
104
134
  this.visibleInternal = new Subject();
135
+ this.visibilityObserverCleanup = null;
105
136
  this.contentChanged = new Subject();
106
137
  this.host = computed(() => this.customHost() || this.hostRef.nativeElement);
107
138
  this.destroyRef = inject(DestroyRef);
@@ -119,31 +150,12 @@ export class TippyDirective {
119
150
  ngOnChanges(changes) {
120
151
  if (this.isServer)
121
152
  return;
122
- // TODO: we can update it later.
123
- // We need to go over class properties, check whether it's a signal (`isSignal(prop)`)
124
- // and construct a record where `Record<string, Signal>`.
125
- // Follow-up changes would be to have a computation and an effect.
126
- let props = Object.keys(changes).reduce((acc, change) => {
127
- if (change === 'isVisible')
128
- return acc;
129
- acc[change] = changes[change].currentValue;
130
- return acc;
131
- }, {});
132
- let variation;
133
- if (isChanged('variation', changes)) {
134
- variation = changes.variation.currentValue;
135
- this.variationDefined = true;
136
- }
137
- else if (!this.variationDefined) {
138
- variation = this.globalConfig.defaultVariation;
139
- this.variationDefined = true;
140
- }
141
- if (variation) {
142
- props = {
143
- ...this.globalConfig.variations[variation],
144
- ...props,
145
- };
146
- }
153
+ const variation = this.variation() || this.globalConfig.defaultVariation || '';
154
+ const props = Object.keys(changes)
155
+ // `isVisible` is not required as a prop since we update it manually
156
+ // in an effect-like manner.
157
+ .filter((key) => key !== 'isVisible')
158
+ .reduce((accumulator, key) => ({ ...accumulator, [key]: changes[key].currentValue }), { ...this.globalConfig.variations?.[variation] });
147
159
  this.updateProps(props);
148
160
  }
149
161
  ngOnInit() {
@@ -438,10 +450,6 @@ export class TippyDirective {
438
450
  return merge(...notifiers$);
439
451
  }
440
452
  setupListeners() {
441
- effect(() => {
442
- const appendTo = this.appendTo();
443
- this.updateProps({ appendTo });
444
- });
445
453
  effect(() => {
446
454
  // Capture signal read to track its changes.
447
455
  this.content();
@@ -471,7 +479,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
471
479
  type: Output,
472
480
  args: ['tpVisible']
473
481
  }] } });
474
- function isChanged(key, changes) {
475
- return key in changes;
476
- }
477
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L2hlbGlwb3BwZXIvc3JjL2xpYi90aXBweS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFFBQVEsRUFDUixVQUFVLEVBQ1YsU0FBUyxFQUNULE1BQU0sRUFFTixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUVMLEtBQUssRUFJTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBRUwsV0FBVyxFQUNYLFFBQVEsRUFDUixhQUFhLEdBSWQsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGVBQWUsR0FDaEIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUVMLFlBQVksRUFDWixTQUFTLEdBSVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBUXBELE1BQU0sT0FB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LEVBQUUsTUFBTTtvQkFDaEIsUUFBUSxFQUFFLE9BQU87b0JBQ2pCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBK0lJLE1BQU07MkJBQUMsWUFBWTt1S0FsQ0QsT0FBTztzQkFBM0IsTUFBTTt1QkFBQyxXQUFXOztBQWtjckIsU0FBUyxTQUFTLENBQ2hCLEdBQW9DLEVBQ3BDLE9BQWtDO0lBRWxDLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgY29tcHV0ZWQsXG4gIERlc3Ryb3lSZWYsXG4gIERpcmVjdGl2ZSxcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGluamVjdCxcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgaW5wdXQsXG4gIElucHV0U2lnbmFsLFxuICBtb2RlbCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBQTEFURk9STV9JRCxcbiAgdW50cmFja2VkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHR5cGUgeyBJbnN0YW5jZSB9IGZyb20gJ3RpcHB5LmpzJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIENvbnRlbnQsXG4gIGlzQ29tcG9uZW50LFxuICBpc1N0cmluZyxcbiAgaXNUZW1wbGF0ZVJlZixcbiAgVmlld09wdGlvbnMsXG4gIFZpZXdSZWYsXG4gIFZpZXdTZXJ2aWNlLFxufSBmcm9tICdAbmduZWF0L292ZXJ2aWV3JztcblxuaW1wb3J0IHtcbiAgY29lcmNlQ3NzUGl4ZWxWYWx1ZSxcbiAgZGltZW5zaW9uc0NoYW5nZXMsXG4gIGluVmlldyxcbiAgaXNFbGVtZW50T3ZlcmZsb3csXG4gIG5vcm1hbGl6ZUNsYXNzTmFtZSxcbiAgb2JzZXJ2ZVZpc2liaWxpdHksXG4gIG9ubHlUaXBweVByb3BzLFxuICBvdmVyZmxvd0NoYW5nZXMsXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgTmdDaGFuZ2VzLFxuICBUSVBQWV9DT05GSUcsXG4gIFRJUFBZX1JFRixcbiAgVGlwcHlDb25maWcsXG4gIFRpcHB5SW5zdGFuY2UsXG4gIFRpcHB5UHJvcHMsXG59IGZyb20gJy4vdGlwcHkudHlwZXMnO1xuaW1wb3J0IHsgVGlwcHlGYWN0b3J5IH0gZnJvbSAnLi90aXBweS5mYWN0b3J5JztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5BdHRyaWJ1dGUgfSBmcm9tICcuL2NvZXJjaW9uJztcblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW3RwXScsXG4gIGV4cG9ydEFzOiAndGlwcHknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBUaXBweURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IHtcbiAgLy8gTm90ZSB0aGF0IGRlZmF1bHQgdmFsdWVzIGFyZSBub3QgcHJvdmlkZWQgZm9yIHRoZXNlIGJpbmRpbmdzIGJlY2F1c2UgYHRpcHB5LmpzYFxuICAvLyBoYXMgaXRzIG93biBkZWZhdWx0IHZhbHVlcyBhbmQgY2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIHByb3BzIGFyZSBgdW5kZWZpbmVkYC5cbiAgLy8gV2Ugc2hvdWxkIGtlZXAgYHVuZGVmaW5lZGAgYXMgdGhlIGRlZmF1bHQgdmFsdWUuXG5cbiAgcmVhZG9ubHkgYXBwZW5kVG8gPSBpbnB1dDxUaXBweVByb3BzWydhcHBlbmRUbyddPih1bmRlZmluZWQsIHsgYWxpYXM6ICd0cEFwcGVuZFRvJyB9KTtcblxuICByZWFkb25seSBjb250ZW50ID0gaW5wdXQ8Q29udGVudCB8IHVuZGVmaW5lZCB8IG51bGw+KHVuZGVmaW5lZCwgeyBhbGlhczogJ3RwJyB9KTtcblxuICByZWFkb25seSBkZWxheSA9IGlucHV0PFRpcHB5UHJvcHNbJ2RlbGF5J10+KHVuZGVmaW5lZCwgeyBhbGlhczogJ3RwRGVsYXknIH0pO1xuXG4gIHJlYWRvbmx5IGR1cmF0aW9uID0gaW5wdXQ8VGlwcHlQcm9wc1snZHVyYXRpb24nXT4odW5kZWZpbmVkLCB7IGFsaWFzOiAndHBEdXJhdGlvbicgfSk7XG5cbiAgcmVhZG9ubHkgaGlkZU9uQ2xpY2sgPSBpbnB1dDxUaXBweVByb3BzWydoaWRlT25DbGljayddPih1bmRlZmluZWQsIHtcbiAgICBhbGlhczogJ3RwSGlkZU9uQ2xpY2snLFxuICB9KTtcblxuICByZWFkb25seSBpbnRlcmFjdGl2ZSA9IGlucHV0PFRpcHB5UHJvcHNbJ2ludGVyYWN0aXZlJ10+KHVuZGVmaW5lZCwge1xuICAgIGFsaWFzOiAndHBJbnRlcmFjdGl2ZScsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGludGVyYWN0aXZlQm9yZGVyID0gaW5wdXQ8VGlwcHlQcm9wc1snaW50ZXJhY3RpdmVCb3JkZXInXT4odW5kZWZpbmVkLCB7XG4gICAgYWxpYXM6ICd0cEludGVyYWN0aXZlQm9yZGVyJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgbWF4V2lkdGggPSBpbnB1dDxUaXBweVByb3BzWydtYXhXaWR0aCddPih1bmRlZmluZWQsIHsgYWxpYXM6ICd0cE1heFdpZHRoJyB9KTtcblxuICAvLyBOb3RlIHRoYXQgc29tZSBvZiB0aGUgaW5wdXQgc2lnbmFsIHR5cGVzIGFyZSBkZWNsYXJlZCBleHBsaWNpdGx5IGJlY2F1c2UgdGhlIGNvbXBpbGVyXG4gIC8vIGFsc28gdXNlcyB0eXBlcyBmcm9tIGBAcG9wcGVyanMvY29yZWAgYW5kIHJlcXVpcmVzIGEgdHlwZSBhbm5vdGF0aW9uLlxuICByZWFkb25seSBvZmZzZXQ6IElucHV0U2lnbmFsPFRpcHB5UHJvcHNbJ29mZnNldCddPiA9IGlucHV0PFRpcHB5UHJvcHNbJ29mZnNldCddPihcbiAgICB1bmRlZmluZWQsXG4gICAgeyBhbGlhczogJ3RwT2Zmc2V0JyB9XG4gICk7XG5cbiAgcmVhZG9ubHkgcGxhY2VtZW50OiBJbnB1dFNpZ25hbDxUaXBweVByb3BzWydwbGFjZW1lbnQnXT4gPSBpbnB1dDxcbiAgICBUaXBweVByb3BzWydwbGFjZW1lbnQnXVxuICA+KHVuZGVmaW5lZCwge1xuICAgIGFsaWFzOiAndHBQbGFjZW1lbnQnLFxuICB9KTtcblxuICByZWFkb25seSBwb3BwZXJPcHRpb25zOiBJbnB1dFNpZ25hbDxUaXBweVByb3BzWydwb3BwZXJPcHRpb25zJ10+ID0gaW5wdXQ8XG4gICAgVGlwcHlQcm9wc1sncG9wcGVyT3B0aW9ucyddXG4gID4odW5kZWZpbmVkLCB7XG4gICAgYWxpYXM6ICd0cFBvcHBlck9wdGlvbnMnLFxuICB9KTtcblxuICByZWFkb25seSBzaG93T25DcmVhdGUgPSBpbnB1dDxUaXBweVByb3BzWydzaG93T25DcmVhdGUnXT4odW5kZWZpbmVkLCB7XG4gICAgYWxpYXM6ICd0cFNob3dPbkNyZWF0ZScsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IHRyaWdnZXIgPSBpbnB1dDxUaXBweVByb3BzWyd0cmlnZ2VyJ10+KHVuZGVmaW5lZCwgeyBhbGlhczogJ3RwVHJpZ2dlcicgfSk7XG5cbiAgcmVhZG9ubHkgdHJpZ2dlclRhcmdldCA9IGlucHV0PFRpcHB5UHJvcHNbJ3RyaWdnZXJUYXJnZXQnXT4odW5kZWZpbmVkLCB7XG4gICAgYWxpYXM6ICd0cFRyaWdnZXJUYXJnZXQnLFxuICB9KTtcblxuICByZWFkb25seSB6SW5kZXggPSBpbnB1dDxUaXBweVByb3BzWyd6SW5kZXgnXT4odW5kZWZpbmVkLCB7IGFsaWFzOiAndHBaSW5kZXgnIH0pO1xuXG4gIHJlYWRvbmx5IGFuaW1hdGlvbiA9IGlucHV0PFRpcHB5UHJvcHNbJ2FuaW1hdGlvbiddPih1bmRlZmluZWQsIHtcbiAgICBhbGlhczogJ3RwQW5pbWF0aW9uJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdXNlVGV4dENvbnRlbnQgPSBpbnB1dChmYWxzZSwge1xuICAgIHRyYW5zZm9ybTogY29lcmNlQm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBhbGlhczogJ3RwVXNlVGV4dENvbnRlbnQnLFxuICB9KTtcblxuICByZWFkb25seSBpc0xhenkgPSBpbnB1dChmYWxzZSwge1xuICAgIHRyYW5zZm9ybTogY29lcmNlQm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBhbGlhczogJ3RwSXNMYXp5JyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdmFyaWF0aW9uID0gaW5wdXQ8c3RyaW5nPih1bmRlZmluZWQsIHsgYWxpYXM6ICd0cFZhcmlhdGlvbicgfSk7XG5cbiAgcmVhZG9ubHkgaXNFbmFibGVkID0gaW5wdXQodHJ1ZSwgeyBhbGlhczogJ3RwSXNFbmFibGVkJyB9KTtcblxuICByZWFkb25seSBjbGFzc05hbWUgPSBpbnB1dDxzdHJpbmcgfCBzdHJpbmdbXT4oJycsIHsgYWxpYXM6ICd0cENsYXNzTmFtZScgfSk7XG5cbiAgcmVhZG9ubHkgb25seVRleHRPdmVyZmxvdyA9IGlucHV0KGZhbHNlLCB7XG4gICAgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuQXR0cmlidXRlLFxuICAgIGFsaWFzOiAndHBPbmx5VGV4dE92ZXJmbG93JyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc3RhdGljV2lkdGhIb3N0ID0gaW5wdXQoZmFsc2UsIHtcbiAgICB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgYWxpYXM6ICd0cFN0YXRpY1dpZHRoSG9zdCcsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGRhdGEgPSBpbnB1dDxhbnk+KHVuZGVmaW5lZCwgeyBhbGlhczogJ3RwRGF0YScgfSk7XG5cbiAgcmVhZG9ubHkgdXNlSG9zdFdpZHRoID0gaW5wdXQoZmFsc2UsIHtcbiAgICB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgYWxpYXM6ICd0cFVzZUhvc3RXaWR0aCcsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGhpZGVPbkVzY2FwZSA9IGlucHV0KGZhbHNlLCB7XG4gICAgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuQXR0cmlidXRlLFxuICAgIGFsaWFzOiAndHBIaWRlT25Fc2NhcGUnLFxuICB9KTtcblxuICByZWFkb25seSBkZXRlY3RDaGFuZ2VzQ29tcG9uZW50ID0gaW5wdXQodHJ1ZSwgeyBhbGlhczogJ3RwRGV0ZWN0Q2hhbmdlc0NvbXBvbmVudCcgfSk7XG5cbiAgcmVhZG9ubHkgcG9wcGVyV2lkdGggPSBpbnB1dDxudW1iZXIgfCBzdHJpbmc+KHVuZGVmaW5lZCwgeyBhbGlhczogJ3RwUG9wcGVyV2lkdGgnIH0pO1xuXG4gIHJlYWRvbmx5IGN1c3RvbUhvc3QgPSBpbnB1dDxIVE1MRWxlbWVudD4odW5kZWZpbmVkLCB7IGFsaWFzOiAndHBIb3N0JyB9KTtcblxuICByZWFkb25seSBpc1Zpc2libGUgPSBtb2RlbChmYWxzZSwgeyBhbGlhczogJ3RwSXNWaXNpYmxlJyB9KTtcblxuICBAT3V0cHV0KCd0cFZpc2libGUnKSB2aXNpYmxlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHByb3RlY3RlZCBpbnN0YW5jZTogVGlwcHlJbnN0YW5jZTtcbiAgcHJvdGVjdGVkIHZpZXdSZWY6IFZpZXdSZWY7XG4gIHByb3RlY3RlZCBwcm9wczogUGFydGlhbDxUaXBweUNvbmZpZz47XG4gIHByb3RlY3RlZCB2YXJpYXRpb25EZWZpbmVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCB2aWV3T3B0aW9ucyQ6IFZpZXdPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBXZSBoYWQgdXNlIGB2aXNpYmxlYCBldmVudCBlbWl0dGVyIHByZXZpb3VzbHkgYXMgYSBgdGFrZVVudGlsYCBzdWJzY3JpYmVyIGluIG11bHRpcGxlIHBsYWNlc1xuICAgKiB3aXRoaW4gdGhlIGRpcmVjdGl2ZS5cbiAgICogVGhpcyBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHk7IHRodXMgd2UgZG9uJ3QgaGF2ZSB0byBkZWFsIHdpdGggdGhlIGB2aXNpYmxlYCBldmVudCBlbWl0dGVyXG4gICAqIGFuZCB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25zIG9ubHkgd2hlbiB0aGUgYHZpc2libGVgIGV2ZW50IGlzIGJlaW5nIGxpc3RlbmVkIG91dHNpZGVcbiAgICogaW4gdGhlIHRlbXBsYXRlIChgPGJ1dHRvbiBbdGlwcHldPVwiLi4uXCIgKHZpc2libGUpPVwiLi4uXCI+PC9idXR0b24+YCkuXG4gICAqL1xuICBwcm90ZWN0ZWQgdmlzaWJsZUludGVybmFsID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSB2aXNpYmlsaXR5T2JzZXJ2ZXJDbGVhbnVwOiAoKSA9PiB2b2lkIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNvbnRlbnRDaGFuZ2VkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIGhvc3QgPSBjb21wdXRlZDxIVE1MRWxlbWVudD4oXG4gICAgKCkgPT4gdGhpcy5jdXN0b21Ib3N0KCkgfHwgdGhpcy5ob3N0UmVmLm5hdGl2ZUVsZW1lbnRcbiAgKTtcblxuICAvLyBJdCBzaG91bGQgYmUgYSBnZXR0ZXIgYmVjYXVzZSBjb21wdXRhdGlvbnMgYXJlIGNhY2hlZCB1bnRpbFxuICAvLyBhbnkgb2YgdGhlIHByb2R1Y2VycyBjaGFuZ2UuXG4gIHByaXZhdGUgZ2V0IGhvc3RXaWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5ob3N0KCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgaXNTZXJ2ZXIgPSBpc1BsYXRmb3JtU2VydmVyKGluamVjdChQTEFURk9STV9JRCkpO1xuICBwcml2YXRlIHRpcHB5RmFjdG9yeSA9IGluamVjdChUaXBweUZhY3RvcnkpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVElQUFlfQ09ORklHKSBwcm90ZWN0ZWQgZ2xvYmFsQ29uZmlnOiBUaXBweUNvbmZpZyxcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCB2aWV3U2VydmljZTogVmlld1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHZjcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcm90ZWN0ZWQgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJvdGVjdGVkIGhvc3RSZWY6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgaWYgKHRoaXMuaXNTZXJ2ZXIpIHJldHVybjtcblxuICAgIHRoaXMuc2V0dXBMaXN0ZW5lcnMoKTtcblxuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgdGhpcy5pbnN0YW5jZT8uZGVzdHJveSgpO1xuICAgICAgdGhpcy5kZXN0cm95VmlldygpO1xuICAgICAgdGhpcy52aXNpYmlsaXR5T2JzZXJ2ZXJDbGVhbnVwPy4oKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IE5nQ2hhbmdlczxUaXBweURpcmVjdGl2ZT4pIHtcbiAgICBpZiAodGhpcy5pc1NlcnZlcikgcmV0dXJuO1xuXG4gICAgLy8gVE9ETzogd2UgY2FuIHVwZGF0ZSBpdCBsYXRlci5cbiAgICAvLyBXZSBuZWVkIHRvIGdvIG92ZXIgY2xhc3MgcHJvcGVydGllcywgY2hlY2sgd2hldGhlciBpdCdzIGEgc2lnbmFsIChgaXNTaWduYWwocHJvcClgKVxuICAgIC8vIGFuZCBjb25zdHJ1Y3QgYSByZWNvcmQgd2hlcmUgYFJlY29yZDxzdHJpbmcsIFNpZ25hbD5gLlxuICAgIC8vIEZvbGxvdy11cCBjaGFuZ2VzIHdvdWxkIGJlIHRvIGhhdmUgYSBjb21wdXRhdGlvbiBhbmQgYW4gZWZmZWN0LlxuICAgIGxldCBwcm9wczogUGFydGlhbDxUaXBweUNvbmZpZz4gPSBPYmplY3Qua2V5cyhjaGFuZ2VzKS5yZWR1Y2UoKGFjYywgY2hhbmdlKSA9PiB7XG4gICAgICBpZiAoY2hhbmdlID09PSAnaXNWaXNpYmxlJykgcmV0dXJuIGFjYztcblxuICAgICAgYWNjW2NoYW5nZV0gPSBjaGFuZ2VzW2NoYW5nZV0uY3VycmVudFZhbHVlO1xuXG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcblxuICAgIGxldCB2YXJpYXRpb246IHN0cmluZztcblxuICAgIGlmIChpc0NoYW5nZWQoJ3ZhcmlhdGlvbicsIGNoYW5nZXMpKSB7XG4gICAgICB2YXJpYXRpb24gPSBjaGFuZ2VzLnZhcmlhdGlvbi5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLnZhcmlhdGlvbkRlZmluZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMudmFyaWF0aW9uRGVmaW5lZCkge1xuICAgICAgdmFyaWF0aW9uID0gdGhpcy5nbG9iYWxDb25maWcuZGVmYXVsdFZhcmlhdGlvbjtcbiAgICAgIHRoaXMudmFyaWF0aW9uRGVmaW5lZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZhcmlhdGlvbikge1xuICAgICAgcHJvcHMgPSB7XG4gICAgICAgIC4uLnRoaXMuZ2xvYmFsQ29uZmlnLnZhcmlhdGlvbnNbdmFyaWF0aW9uXSxcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlUHJvcHMocHJvcHMpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMudXNlSG9zdFdpZHRoKCkpIHtcbiAgICAgIHRoaXMucHJvcHMubWF4V2lkdGggPSB0aGlzLmhvc3RXaWR0aDtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuaXNTZXJ2ZXIpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmlzTGF6eSgpKSB7XG4gICAgICBjb25zdCBob3N0SW5WaWV3JCA9IGluVmlldyh0aGlzLmhvc3QoKSk7XG5cbiAgICAgIGlmICh0aGlzLm9ubHlUZXh0T3ZlcmZsb3coKSkge1xuICAgICAgICBob3N0SW5WaWV3JFxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuaXNPdmVyZmxvd2luZyQoKSksXG4gICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKChpc0VsZW1lbnRPdmVyZmxvdykgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGVja092ZXJmbG93KGlzRWxlbWVudE92ZXJmbG93KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhvc3RJblZpZXckLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jcmVhdGVJbnN0YW5jZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMub25seVRleHRPdmVyZmxvdygpKSB7XG4gICAgICB0aGlzLmlzT3ZlcmZsb3dpbmckKClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgIC5zdWJzY3JpYmUoKGlzRWxlbWVudE92ZXJmbG93KSA9PiB7XG4gICAgICAgICAgdGhpcy5jaGVja092ZXJmbG93KGlzRWxlbWVudE92ZXJmbG93KTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3JlYXRlSW5zdGFuY2UoKTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95VmlldygpIHtcbiAgICB0aGlzLnZpZXdPcHRpb25zJCA9IG51bGw7XG4gICAgdGhpcy52aWV3UmVmPy5kZXN0cm95KCk7XG4gICAgdGhpcy52aWV3UmVmID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgd2hlbiB5b3UgYXBwZW5kIHRvIGFuIGVsZW1lbnQgdGhhdCB5b3UgbWlnaHQgcmVtb3ZlIGZyb20gdGhlIERPTS5cbiAgICogSW4gc3VjaCBjYXNlcyB3ZSB3YW50IHRvIGhpZGUgdGhlIHRvb2x0aXAgYW5kIGxldCBpdCBnbyB0aHJvdWdoIHRoZSBkZXN0cm95IGxpZmVjeWNsZS5cbiAgICogRm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGEgZ3JpZCByb3cgd2l0aCBhbiBlbGVtZW50IHRoYXQgeW91IHRvZ2dsZSB1c2luZyB0aGUgZGlzcGxheSBDU1MgcHJvcGVydHkgb24gaG92ZXIuXG4gICAqL1xuICBvYnNlcnZlSG9zdFZpc2liaWxpdHkoKSB7XG4gICAgaWYgKHRoaXMuaXNTZXJ2ZXIpIHJldHVybjtcbiAgICAvLyBXZSBkb24ndCB3YW50IHRvIG9ic2VydmUgdGhlIGhvc3QgdmlzaWJpbGl0eSBpZiB3ZSBhcmUgYXBwZW5kaW5nIHRvIHRoZSBib2R5LlxuICAgIGlmICh0aGlzLnByb3BzLmFwcGVuZFRvICYmIHRoaXMucHJvcHMuYXBwZW5kVG8gIT09IGRvY3VtZW50LmJvZHkpIHtcbiAgICAgIHRoaXMudmlzaWJpbGl0eU9ic2VydmVyQ2xlYW51cD8uKCk7XG4gICAgICByZXR1cm4gdGhpcy52aXNpYmxlSW50ZXJuYWxcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgIC5zdWJzY3JpYmUoKGlzVmlzaWJsZSkgPT4ge1xuICAgICAgICAgIGlmIChpc1Zpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eU9ic2VydmVyQ2xlYW51cCA9IG9ic2VydmVWaXNpYmlsaXR5KFxuICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLnJlZmVyZW5jZSxcbiAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgIC8vIEJlY2F1c2Ugd2UgaGF2ZSBhbmltYXRpb24gb24gdGhlIHBvcHBlciBpdCBkb2Vzbid0IGNsb3NlIGltbWVkaWF0ZWx5IGRvZXNuJ3QgdHJpZ2dlciB0aGUgYHRwVmlzaWJsZWAgZXZlbnQuXG4gICAgICAgICAgICAgICAgLy8gVGlwcHkgaXMgcmVseWluZyBvbiB0aGUgdHJhbnNpdGlvbmVuZCBldmVudCB0byB0cmlnZ2VyIHRoZSBgb25IaWRkZW5gIGNhbGxiYWNrLlxuICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hdG9taWtzL3RpcHB5anMvYmxvYi9tYXN0ZXIvc3JjL2RvbS11dGlscy50cyNMMTE3XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBldmVudCBuZXZlciBmaXJlcyBiZWNhdXNlIHRoZSBwb3BwZXIgaXMgcmVtb3ZlZCBmcm9tIHRoZSBET00gYmVmb3JlIHRoZSB0cmFuc2l0aW9uIGVuZHMuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMuYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm9uSGlkZGVuKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZpc2liaWxpdHlPYnNlcnZlckNsZWFudXA/LigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2hvdygpIHtcbiAgICB0aGlzLmluc3RhbmNlPy5zaG93KCk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIHRoaXMuaW5zdGFuY2U/LmhpZGUoKTtcbiAgfVxuXG4gIGVuYWJsZSgpIHtcbiAgICB0aGlzLmluc3RhbmNlPy5lbmFibGUoKTtcbiAgfVxuXG4gIGRpc2FibGUoKSB7XG4gICAgdGhpcy5pbnN0YW5jZT8uZGlzYWJsZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVByb3BzKHByb3BzOiBQYXJ0aWFsPFRpcHB5Q29uZmlnPikge1xuICAgIHRoaXMuc2V0UHJvcHMoeyAuLi50aGlzLnByb3BzLCAuLi5wcm9wcyB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRQcm9wcyhwcm9wczogUGFydGlhbDxUaXBweUNvbmZpZz4pIHtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy5pbnN0YW5jZT8uc2V0UHJvcHMob25seVRpcHB5UHJvcHMocHJvcHMpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRTdGF0dXMoaXNFbmFibGVkOiBib29sZWFuKSB7XG4gICAgaXNFbmFibGVkID8gdGhpcy5pbnN0YW5jZT8uZW5hYmxlKCkgOiB0aGlzLmluc3RhbmNlPy5kaXNhYmxlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlSW5zdGFuY2UoKSB7XG4gICAgaWYgKCF0aGlzLmNvbnRlbnQoKSAmJiAhdGhpcy51c2VUZXh0Q29udGVudCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50aXBweUZhY3RvcnlcbiAgICAgIC5jcmVhdGUodGhpcy5ob3N0KCksIHtcbiAgICAgICAgYWxsb3dIVE1MOiB0cnVlLFxuICAgICAgICBhcHBlbmRUbzogZG9jdW1lbnQuYm9keSxcbiAgICAgICAgLi4uKHRoaXMuZ2xvYmFsQ29uZmlnLnpJbmRleEdldHRlclxuICAgICAgICAgID8geyB6SW5kZXg6IHRoaXMuZ2xvYmFsQ29uZmlnLnpJbmRleEdldHRlcigpIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4ub25seVRpcHB5UHJvcHModGhpcy5nbG9iYWxDb25maWcpLFxuICAgICAgICAuLi5vbmx5VGlwcHlQcm9wcyh0aGlzLnByb3BzKSxcbiAgICAgICAgb25Nb3VudDogKGluc3RhbmNlKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmlzVmlzaWJsZS5zZXQoaXNWaXNpYmxlKTtcbiAgICAgICAgICB0aGlzLnZpc2libGVJbnRlcm5hbC5uZXh0KGlzVmlzaWJsZSk7XG4gICAgICAgICAgaWYgKHRoaXMudmlzaWJsZS5vYnNlcnZlZCkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMudmlzaWJsZS5uZXh0KGlzVmlzaWJsZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnVzZUhvc3RXaWR0aCgpICYmIHRoaXMubGlzdGVuVG9Ib3N0UmVzaXplKCk7XG4gICAgICAgICAgdGhpcy5nbG9iYWxDb25maWcub25Nb3VudD8uKGluc3RhbmNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25DcmVhdGU6IChpbnN0YW5jZSkgPT4ge1xuICAgICAgICAgIGluc3RhbmNlLnBvcHBlci5jbGFzc0xpc3QuYWRkKFxuICAgICAgICAgICAgYHRpcHB5LXZhcmlhdGlvbi0ke3RoaXMudmFyaWF0aW9uKCkgfHwgdGhpcy5nbG9iYWxDb25maWcuZGVmYXVsdFZhcmlhdGlvbn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAodGhpcy5jbGFzc05hbWUoKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrbGFzcyBvZiBub3JtYWxpemVDbGFzc05hbWUodGhpcy5jbGFzc05hbWUoKSkpIHtcbiAgICAgICAgICAgICAgaW5zdGFuY2UucG9wcGVyLmNsYXNzTGlzdC5hZGQoa2xhc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmdsb2JhbENvbmZpZy5vbkNyZWF0ZT8uKGluc3RhbmNlKTtcbiAgICAgICAgICBpZiAodGhpcy5pc1Zpc2libGUoKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgaW5zdGFuY2Uuc2hvdygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25TaG93OiAoaW5zdGFuY2UpID0+IHtcbiAgICAgICAgICBpbnN0YW5jZS5yZWZlcmVuY2Uuc2V0QXR0cmlidXRlKCdkYXRhLXRpcHB5LW9wZW4nLCAnJyk7XG5cbiAgICAgICAgICAvLyBXZSdyZSByZS1lbnRlcmluZyBiZWNhdXNlIHdlIG1pZ2h0IGNyZWF0ZSBhbiBBbmd1bGFyIGNvbXBvbmVudCxcbiAgICAgICAgICAvLyB3aGljaCBzaG91bGQgYmUgZG9uZSB3aXRoaW4gdGhlIHpvbmUuXG4gICAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnJlc29sdmVDb250ZW50KGluc3RhbmNlKSk7XG5cbiAgICAgICAgICBpZiAoaXNTdHJpbmcoY29udGVudCkpIHtcbiAgICAgICAgICAgIGluc3RhbmNlLnNldFByb3BzKHsgYWxsb3dIVE1MOiBmYWxzZSB9KTtcblxuICAgICAgICAgICAgaWYgKCFjb250ZW50Py50cmltKCkpIHtcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmVuYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGluc3RhbmNlLnNldENvbnRlbnQoY29udGVudCk7XG4gICAgICAgICAgdGhpcy5oaWRlT25Fc2NhcGUoKSAmJiB0aGlzLmhhbmRsZUVzY2FwZUJ1dHRvbigpO1xuXG4gICAgICAgICAgaWYgKHRoaXMudXNlSG9zdFdpZHRoKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0SW5zdGFuY2VXaWR0aChpbnN0YW5jZSwgdGhpcy5ob3N0V2lkdGgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wb3BwZXJXaWR0aCgpKSB7XG4gICAgICAgICAgICB0aGlzLnNldEluc3RhbmNlV2lkdGgoaW5zdGFuY2UsIHRoaXMucG9wcGVyV2lkdGgoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ2xvYmFsQ29uZmlnLm9uU2hvdz8uKGluc3RhbmNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25IaWRlKGluc3RhbmNlKSB7XG4gICAgICAgICAgaW5zdGFuY2UucmVmZXJlbmNlLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10aXBweS1vcGVuJyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uSGlkZGVuOiAoaW5zdGFuY2UpID0+IHtcbiAgICAgICAgICB0aGlzLm9uSGlkZGVuKGluc3RhbmNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGluc3RhbmNlKSA9PiB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UgPSBpbnN0YW5jZTtcblxuICAgICAgICB0aGlzLnNldFN0YXR1cyh0aGlzLmlzRW5hYmxlZCgpKTtcbiAgICAgICAgdGhpcy5zZXRQcm9wcyh0aGlzLnByb3BzKTtcblxuICAgICAgICB0aGlzLnZhcmlhdGlvbigpID09PSAnY29udGV4dE1lbnUnICYmIHRoaXMuaGFuZGxlQ29udGV4dE1lbnUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVDb250ZW50KGluc3RhbmNlOiBUaXBweUluc3RhbmNlKSB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuY29udGVudCgpO1xuXG4gICAgaWYgKCF0aGlzLnZpZXdPcHRpb25zJCAmJiAhaXNTdHJpbmcoY29udGVudCkpIHtcbiAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVElQUFlfUkVGLFxuICAgICAgICAgICAgdXNlVmFsdWU6IHRoaXMuaW5zdGFuY2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRhdGEoKTtcblxuICAgICAgaWYgKGlzQ29tcG9uZW50KGNvbnRlbnQpKSB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UuZGF0YSA9IGRhdGE7XG5cbiAgICAgICAgdGhpcy52aWV3T3B0aW9ucyQgPSB7XG4gICAgICAgICAgaW5qZWN0b3IsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKGlzVGVtcGxhdGVSZWYoY29udGVudCkpIHtcbiAgICAgICAgdGhpcy52aWV3T3B0aW9ucyQgPSB7XG4gICAgICAgICAgaW5qZWN0b3IsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICRpbXBsaWNpdDogdGhpcy5oaWRlLmJpbmQodGhpcyksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnZpZXdSZWYgPSB0aGlzLnZpZXdTZXJ2aWNlLmNyZWF0ZVZpZXcoY29udGVudCwge1xuICAgICAgdmNyOiB0aGlzLnZjcixcbiAgICAgIC4uLnRoaXMudmlld09wdGlvbnMkLFxuICAgIH0pO1xuXG4gICAgLy8gV2UgbmVlZCB0byBjYWxsIGRldGVjdENoYW5nZXMgZm9yIG9uUHVzaCBjb21wb25lbnRzIHRvIHVwZGF0ZSB0aGUgY29udGVudFxuICAgIGlmICh0aGlzLmRldGVjdENoYW5nZXNDb21wb25lbnQoKSAmJiBpc0NvbXBvbmVudChjb250ZW50KSkge1xuICAgICAgdGhpcy52aWV3UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBsZXQgbmV3Q29udGVudCA9IHRoaXMudmlld1JlZi5nZXRFbGVtZW50KCk7XG5cbiAgICBpZiAodGhpcy51c2VUZXh0Q29udGVudCgpKSB7XG4gICAgICBuZXdDb250ZW50ID0gaW5zdGFuY2UucmVmZXJlbmNlLnRleHRDb250ZW50O1xuICAgIH1cblxuICAgIGlmIChpc1N0cmluZyhuZXdDb250ZW50KSAmJiB0aGlzLmdsb2JhbENvbmZpZy5iZWZvcmVSZW5kZXIpIHtcbiAgICAgIG5ld0NvbnRlbnQgPSB0aGlzLmdsb2JhbENvbmZpZy5iZWZvcmVSZW5kZXIobmV3Q29udGVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0NvbnRlbnQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ29udGV4dE1lbnUoKSB7XG4gICAgZnJvbUV2ZW50KHRoaXMuaG9zdCgpLCAnY29udGV4dG1lbnUnKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0UHJvcHMoe1xuICAgICAgICAgIGdldFJlZmVyZW5jZUNsaWVudFJlY3Q6ICgpID0+XG4gICAgICAgICAgICAoe1xuICAgICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgICB0b3A6IGV2ZW50LmNsaWVudFksXG4gICAgICAgICAgICAgIGJvdHRvbTogZXZlbnQuY2xpZW50WSxcbiAgICAgICAgICAgICAgbGVmdDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICAgICAgcmlnaHQ6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgICB9IGFzIERPTVJlY3RSZWFkT25seSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaW5zdGFuY2Uuc2hvdygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRXNjYXBlQnV0dG9uKCk6IHZvaWQge1xuICAgIGZyb21FdmVudChkb2N1bWVudC5ib2R5LCAna2V5ZG93bicpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IGNvZGUgfTogS2V5Ym9hcmRFdmVudCkgPT4gY29kZSA9PT0gJ0VzY2FwZScpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy52aXNpYmxlSW50ZXJuYWwucGlwZShmaWx0ZXIoKHYpID0+ICF2KSkpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmhpZGUoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tPdmVyZmxvdyhpc0VsZW1lbnRPdmVyZmxvdzogYm9vbGVhbikge1xuICAgIGlmIChpc0VsZW1lbnRPdmVyZmxvdykge1xuICAgICAgaWYgKCF0aGlzLmluc3RhbmNlKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlSW5zdGFuY2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UuZW5hYmxlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5zdGFuY2U/LmRpc2FibGUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgbGlzdGVuVG9Ib3N0UmVzaXplKCkge1xuICAgIGRpbWVuc2lvbnNDaGFuZ2VzKHRoaXMuaG9zdCgpKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudmlzaWJsZUludGVybmFsKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRJbnN0YW5jZVdpZHRoKHRoaXMuaW5zdGFuY2UsIHRoaXMuaG9zdFdpZHRoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldEluc3RhbmNlV2lkdGgoaW5zdGFuY2U6IEluc3RhbmNlLCB3aWR0aDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgY29uc3QgaW5QaXhlbHMgPSBjb2VyY2VDc3NQaXhlbFZhbHVlKHdpZHRoKTtcbiAgICBpbnN0YW5jZS5wb3BwZXIuc3R5bGUud2lkdGggPSBpblBpeGVscztcbiAgICBpbnN0YW5jZS5wb3BwZXIuc3R5bGUubWF4V2lkdGggPSBpblBpeGVscztcbiAgICAoaW5zdGFuY2UucG9wcGVyLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5tYXhXaWR0aCA9IGluUGl4ZWxzO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkhpZGRlbihpbnN0YW5jZTogVGlwcHlJbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2UpIHtcbiAgICB0aGlzLmRlc3Ryb3lWaWV3KCk7XG4gICAgY29uc3QgaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5pc1Zpc2libGUuc2V0KGlzVmlzaWJsZSk7XG4gICAgdGhpcy52aXNpYmxlSW50ZXJuYWwubmV4dChpc1Zpc2libGUpO1xuICAgIGlmICh0aGlzLnZpc2libGUub2JzZXJ2ZWQpIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnZpc2libGUubmV4dChpc1Zpc2libGUpKTtcbiAgICB9XG4gICAgdGhpcy5nbG9iYWxDb25maWcub25IaWRkZW4/LihpbnN0YW5jZSk7XG4gIH1cblxuICBwcml2YXRlIGlzT3ZlcmZsb3dpbmckKCkge1xuICAgIGNvbnN0IGhvc3QgPSB0aGlzLmhvc3QoKTtcbiAgICBjb25zdCBub3RpZmllcnMkID0gW292ZXJmbG93Q2hhbmdlcyhob3N0KV07XG5cbiAgICAvLyBXZSBuZWVkIHRvIGhhbmRsZSBjYXNlcyB3aGVyZSB0aGUgaG9zdCBoYXMgYSBzdGF0aWMgd2lkdGggYnV0IHRoZSBjb250ZW50IG1pZ2h0IGNoYW5nZVxuICAgIGlmICh0aGlzLnN0YXRpY1dpZHRoSG9zdCgpKSB7XG4gICAgICBub3RpZmllcnMkLnB1c2goXG4gICAgICAgIHRoaXMuY29udGVudENoYW5nZWQucGlwZShcbiAgICAgICAgICAvLyBXZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBjb250ZW50IHRvIGJlIHJlbmRlcmVkIGJlZm9yZSB3ZSBjYW4gY2hlY2sgaWYgaXQncyBvdmVyZmxvd2luZy5cbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGlkID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgbWFwKCgpID0+IGlzRWxlbWVudE92ZXJmbG93KGhvc3QpKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBtZXJnZSguLi5ub3RpZmllcnMkKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGFwcGVuZFRvID0gdGhpcy5hcHBlbmRUbygpO1xuICAgICAgdGhpcy51cGRhdGVQcm9wcyh7IGFwcGVuZFRvIH0pO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIC8vIENhcHR1cmUgc2lnbmFsIHJlYWQgdG8gdHJhY2sgaXRzIGNoYW5nZXMuXG4gICAgICB0aGlzLmNvbnRlbnQoKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLmNvbnRlbnRDaGFuZ2VkLm5leHQoKSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4gdGhpcy5zZXRTdGF0dXModGhpcy5pc0VuYWJsZWQoKSkpO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGlzVmlzaWJsZSA9IHRoaXMuaXNWaXNpYmxlKCk7XG4gICAgICBpc1Zpc2libGUgPyB0aGlzLnNob3coKSA6IHRoaXMuaGlkZSgpO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQ2hhbmdlZChcbiAga2V5OiBrZXlvZiBOZ0NoYW5nZXM8VGlwcHlEaXJlY3RpdmU+LFxuICBjaGFuZ2VzOiBOZ0NoYW5nZXM8VGlwcHlEaXJlY3RpdmU+XG4pIHtcbiAgcmV0dXJuIGtleSBpbiBjaGFuZ2VzO1xufVxuIl19
482
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L2hlbGlwb3BwZXIvc3JjL2xpYi90aXBweS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFFBQVEsRUFDUixVQUFVLEVBQ1YsU0FBUyxFQUNULE1BQU0sRUFFTixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUVMLEtBQUssRUFJTCxNQUFNLEVBQ04sV0FBVyxFQUVYLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBRUwsV0FBVyxFQUNYLFFBQVEsRUFDUixhQUFhLEdBSWQsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGVBQWUsR0FDaEIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUNMLFlBQVksRUFDWixTQUFTLEdBSVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBRXBELG1EQUFtRDtB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YyxrQkFzSmYsWUFBWTtrR0F0SlgsY0FBYzs7MkZBQWQsY0FBYztrQkFOMUIsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxNQUFNO29CQUNoQixRQUFRLEVBQUUsT0FBTztvQkFDakIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkF1SkksTUFBTTsyQkFBQyxZQUFZO3VLQWxDRCxPQUFPO3NCQUEzQixNQUFNO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBjb21wdXRlZCxcbiAgRGVzdHJveVJlZixcbiAgRGlyZWN0aXZlLFxuICBlZmZlY3QsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBpbnB1dCxcbiAgSW5wdXRTaWduYWwsXG4gIG1vZGVsLFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFBMQVRGT1JNX0lELFxuICBTaW1wbGVDaGFuZ2VzLFxuICB1bnRyYWNrZWQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgdHlwZSB7IEluc3RhbmNlIH0gZnJvbSAndGlwcHkuanMnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ29udGVudCxcbiAgaXNDb21wb25lbnQsXG4gIGlzU3RyaW5nLFxuICBpc1RlbXBsYXRlUmVmLFxuICBWaWV3T3B0aW9ucyxcbiAgVmlld1JlZixcbiAgVmlld1NlcnZpY2UsXG59IGZyb20gJ0BuZ25lYXQvb3ZlcnZpZXcnO1xuXG5pbXBvcnQge1xuICBjb2VyY2VDc3NQaXhlbFZhbHVlLFxuICBkaW1lbnNpb25zQ2hhbmdlcyxcbiAgaW5WaWV3LFxuICBpc0VsZW1lbnRPdmVyZmxvdyxcbiAgbm9ybWFsaXplQ2xhc3NOYW1lLFxuICBvYnNlcnZlVmlzaWJpbGl0eSxcbiAgb25seVRpcHB5UHJvcHMsXG4gIG92ZXJmbG93Q2hhbmdlcyxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge1xuICBUSVBQWV9DT05GSUcsXG4gIFRJUFBZX1JFRixcbiAgVGlwcHlDb25maWcsXG4gIFRpcHB5SW5zdGFuY2UsXG4gIFRpcHB5UHJvcHMsXG59IGZyb20gJy4vdGlwcHkudHlwZXMnO1xuaW1wb3J0IHsgVGlwcHlGYWN0b3J5IH0gZnJvbSAnLi90aXBweS5mYWN0b3J5JztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5BdHRyaWJ1dGUgfSBmcm9tICcuL2NvZXJjaW9uJztcblxuLy8gVGhlc2UgYXJlIHRoZSBkZWZhdWx0IHZhbHVlcyB1c2VkIGJ5IGB0aXBweS5qc2AuXG4vLyBXZSBhcmUgcHJvdmlkaW5nIHRoZW0gYXMgZGVmYXVsdCBpbnB1dCB2YWx1ZXMuXG4vLyBUaGUgYHRpcHB5LmpzYCByZXBvc2l0b3J5IGhhcyBiZWVuIGFyY2hpdmVkIGFuZCBpcyB1bmxpa2VseSB0b1xuLy8gY2hhbmdlIGluIHRoZSBmdXR1cmUsIHNvIGl0IGlzIHNhZmUgdG8gdXNlIHRoZXNlIHZhbHVlcyBhcyBkZWZhdWx0cy5cbmNvbnN0IGRlZmF1bHRBcHBlbmRUbzogVGlwcHlQcm9wc1snYXBwZW5kVG8nXSA9ICgpID0+IGRvY3VtZW50LmJvZHk7XG5jb25zdCBkZWZhdWx0RGVsYXk6IFRpcHB5UHJvcHNbJ2RlbGF5J10gPSAwO1xuY29uc3QgZGVmYXVsdER1cmF0aW9uOiBUaXBweVByb3BzWydkdXJhdGlvbiddID0gWzMwMCwgMjUwXTtcbmNvbnN0IGRlZmF1bHRJbnRlcmFjdGl2ZUJvcmRlcjogVGlwcHlQcm9wc1snaW50ZXJhY3RpdmVCb3JkZXInXSA9IDI7XG5jb25zdCBkZWZhdWx0TWF4V2lkdGg6IFRpcHB5UHJvcHNbJ21heFdpZHRoJ10gPSAzNTA7XG5jb25zdCBkZWZhdWx0T2Zmc2V0OiBUaXBweVByb3BzWydvZmZzZXQnXSA9IFswLCAxMF07XG5jb25zdCBkZWZhdWx0UGxhY2VtZW50OiBUaXBweVByb3BzWydwbGFjZW1lbnQnXSA9ICd0b3AnO1xuY29uc3QgZGVmYXVsdFRyaWdnZXI6IFRpcHB5UHJvcHNbJ3RyaWdnZXInXSA9ICdtb3VzZWVudGVyIGZvY3VzJztcbmNvbnN0IGRlZmF1bHRUcmlnZ2VyVGFyZ2V0OiBUaXBweVByb3BzWyd0cmlnZ2VyVGFyZ2V0J10gPSBudWxsO1xuY29uc3QgZGVmYXVsdFpJbmRleDogVGlwcHlQcm9wc1snekluZGV4J10gPSA5OTk5O1xuY29uc3QgZGVmYXVsdEFuaW1hdGlvbjogVGlwcHlQcm9wc1snYW5pbWF0aW9uJ10gPSAnZmFkZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1t0cF0nLFxuICBleHBvcnRBczogJ3RpcHB5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVGlwcHlEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uSW5pdCB7XG4gIHJlYWRvbmx5IGFwcGVuZFRvID0gaW5wdXQoZGVmYXVsdEFwcGVuZFRvLCB7XG4gICAgYWxpYXM6ICd0cEFwcGVuZFRvJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgY29udGVudCA9IGlucHV0PENvbnRlbnQgfCB1bmRlZmluZWQgfCBudWxsPignJywgeyBhbGlhczogJ3RwJyB9KTtcblxuICByZWFkb25seSBkZWxheSA9IGlucHV0KGRlZmF1bHREZWxheSwge1xuICAgIGFsaWFzOiAndHBEZWxheScsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGR1cmF0aW9uID0gaW5wdXQoZGVmYXVsdER1cmF0aW9uLCB7XG4gICAgYWxpYXM6ICd0cER1cmF0aW9uJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgaGlkZU9uQ2xpY2sgPSBpbnB1dCh0cnVlLCB7XG4gICAgYWxpYXM6ICd0cEhpZGVPbkNsaWNrJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgaW50ZXJhY3RpdmUgPSBpbnB1dChmYWxzZSwge1xuICAgIGFsaWFzOiAndHBJbnRlcmFjdGl2ZScsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGludGVyYWN0aXZlQm9yZGVyID0gaW5wdXQoZGVmYXVsdEludGVyYWN0aXZlQm9yZGVyLCB7XG4gICAgYWxpYXM6ICd0cEludGVyYWN0aXZlQm9yZGVyJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgbWF4V2lkdGggPSBpbnB1dChkZWZhdWx0TWF4V2lkdGgsIHtcbiAgICBhbGlhczogJ3RwTWF4V2lkdGgnLFxuICB9KTtcblxuICAvLyBOb3RlIHRoYXQgc29tZSBvZiB0aGUgaW5wdXQgc2lnbmFsIHR5cGVzIGFyZSBkZWNsYXJlZCBleHBsaWNpdGx5IGJlY2F1c2UgdGhlIGNvbXBpbGVyXG4gIC8vIGFsc28gdXNlcyB0eXBlcyBmcm9tIGBAcG9wcGVyanMvY29yZWAgYW5kIHJlcXVpcmVzIGEgdHlwZSBhbm5vdGF0aW9uLlxuICByZWFkb25seSBvZmZzZXQ6IElucHV0U2lnbmFsPFRpcHB5UHJvcHNbJ29mZnNldCddPiA9IGlucHV0KGRlZmF1bHRPZmZzZXQsIHtcbiAgICBhbGlhczogJ3RwT2Zmc2V0JyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcGxhY2VtZW50OiBJbnB1dFNpZ25hbDxUaXBweVByb3BzWydwbGFjZW1lbnQnXT4gPSBpbnB1dChkZWZhdWx0UGxhY2VtZW50LCB7XG4gICAgYWxpYXM6ICd0cFBsYWNlbWVudCcsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IHBvcHBlck9wdGlvbnM6IElucHV0U2lnbmFsPFRpcHB5UHJvcHNbJ3BvcHBlck9wdGlvbnMnXT4gPSBpbnB1dChcbiAgICB7fSxcbiAgICB7XG4gICAgICBhbGlhczogJ3RwUG9wcGVyT3B0aW9ucycsXG4gICAgfVxuICApO1xuXG4gIHJlYWRvbmx5IHNob3dPbkNyZWF0ZSA9IGlucHV0KGZhbHNlLCB7XG4gICAgYWxpYXM6ICd0cFNob3dPbkNyZWF0ZScsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IHRyaWdnZXIgPSBpbnB1dChkZWZhdWx0VHJpZ2dlciwge1xuICAgIGFsaWFzOiAndHBUcmlnZ2VyJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdHJpZ2dlclRhcmdldCA9IGlucHV0KGRlZmF1bHRUcmlnZ2VyVGFyZ2V0LCB7XG4gICAgYWxpYXM6ICd0cFRyaWdnZXJUYXJnZXQnLFxuICB9KTtcblxuICByZWFkb25seSB6SW5kZXggPSBpbnB1dChkZWZhdWx0WkluZGV4LCB7XG4gICAgYWxpYXM6ICd0cFpJbmRleCcsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGFuaW1hdGlvbiA9IGlucHV0KGRlZmF1bHRBbmltYXRpb24sIHtcbiAgICBhbGlhczogJ3RwQW5pbWF0aW9uJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdXNlVGV4dENvbnRlbnQgPSBpbnB1dChmYWxzZSwge1xuICAgIHRyYW5zZm9ybTogY29lcmNlQm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBhbGlhczogJ3RwVXNlVGV4dENvbnRlbnQnLFxuICB9KTtcblxuICByZWFkb25seSBpc0xhenkgPSBpbnB1dChmYWxzZSwge1xuICAgIHRyYW5zZm9ybTogY29lcmNlQm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBhbGlhczogJ3RwSXNMYXp5JyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdmFyaWF0aW9uID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHsgYWxpYXM6ICd0cFZhcmlhdGlvbicgfSk7XG5cbiAgcmVhZG9ubHkgaXNFbmFibGVkID0gaW5wdXQodHJ1ZSwgeyBhbGlhczogJ3RwSXNFbmFibGVkJyB9KTtcblxuICByZWFkb25seSBjbGFzc05hbWUgPSBpbnB1dDxzdHJpbmcgfCBzdHJpbmdbXT4oJycsIHsgYWxpYXM6ICd0cENsYXNzTmFtZScgfSk7XG5cbiAgcmVhZG9ubHkgb25seVRleHRPdmVyZmxvdyA9IGlucHV0KGZhbHNlLCB7XG4gICAgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuQXR0cmlidXRlLFxuICAgIGFsaWFzOiAndHBPbmx5VGV4dE92ZXJmbG93JyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc3RhdGljV2lkdGhIb3N0ID0gaW5wdXQoZmFsc2UsIHtcbiAgICB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgYWxpYXM6ICd0cFN0YXRpY1dpZHRoSG9zdCcsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGRhdGEgPSBpbnB1dDxhbnk+KHVuZGVmaW5lZCwgeyBhbGlhczogJ3RwRGF0YScgfSk7XG5cbiAgcmVhZG9ubHkgdXNlSG9zdFdpZHRoID0gaW5wdXQoZmFsc2UsIHtcbiAgICB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgYWxpYXM6ICd0cFVzZUhvc3RXaWR0aCcsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGhpZGVPbkVzY2FwZSA9IGlucHV0KGZhbHNlLCB7XG4gICAgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuQXR0cmlidXRlLFxuICAgIGFsaWFzOiAndHBIaWRlT25Fc2NhcGUnLFxuICB9KTtcblxuICByZWFkb25seSBkZXRlY3RDaGFuZ2VzQ29tcG9uZW50ID0gaW5wdXQodHJ1ZSwgeyBhbGlhczogJ3RwRGV0ZWN0Q2hhbmdlc0NvbXBvbmVudCcgfSk7XG5cbiAgcmVhZG9ubHkgcG9wcGVyV2lkdGggPSBpbnB1dDxudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwge1xuICAgIGFsaWFzOiAndHBQb3BwZXJXaWR0aCcsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGN1c3RvbUhvc3QgPSBpbnB1dDxIVE1MRWxlbWVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7IGFsaWFzOiAndHBIb3N0JyB9KTtcblxuICByZWFkb25seSBpc1Zpc2libGUgPSBtb2RlbChmYWxzZSwgeyBhbGlhczogJ3RwSXNWaXNpYmxlJyB9KTtcblxuICBAT3V0cHV0KCd0cFZpc2libGUnKSB2aXNpYmxlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHByb3RlY3RlZCBpbnN0YW5jZSE6IFRpcHB5SW5zdGFuY2U7XG4gIHByb3RlY3RlZCB2aWV3UmVmOiBWaWV3UmVmIHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCBwcm9wcyE6IFBhcnRpYWw8VGlwcHlDb25maWc+O1xuICBwcm90ZWN0ZWQgdmFyaWF0aW9uRGVmaW5lZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgdmlld09wdGlvbnMkOiBWaWV3T3B0aW9ucyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBXZSBoYWQgdXNlIGB2aXNpYmxlYCBldmVudCBlbWl0dGVyIHByZXZpb3VzbHkgYXMgYSBgdGFrZVVudGlsYCBzdWJzY3JpYmVyIGluIG11bHRpcGxlIHBsYWNlc1xuICAgKiB3aXRoaW4gdGhlIGRpcmVjdGl2ZS5cbiAgICogVGhpcyBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHk7IHRodXMgd2UgZG9uJ3QgaGF2ZSB0byBkZWFsIHdpdGggdGhlIGB2aXNpYmxlYCBldmVudCBlbWl0dGVyXG4gICAqIGFuZCB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25zIG9ubHkgd2hlbiB0aGUgYHZpc2libGVgIGV2ZW50IGlzIGJlaW5nIGxpc3RlbmVkIG91dHNpZGVcbiAgICogaW4gdGhlIHRlbXBsYXRlIChgPGJ1dHRvbiBbdGlwcHldPVwiLi4uXCIgKHZpc2libGUpPVwiLi4uXCI+PC9idXR0b24+YCkuXG4gICAqL1xuICBwcm90ZWN0ZWQgdmlzaWJsZUludGVybmFsID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSB2aXNpYmlsaXR5T2JzZXJ2ZXJDbGVhbnVwOiBWb2lkRnVuY3Rpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjb250ZW50Q2hhbmdlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBob3N0ID0gY29tcHV0ZWQ8SFRNTEVsZW1lbnQ+KFxuICAgICgpID0+IHRoaXMuY3VzdG9tSG9zdCgpIHx8IHRoaXMuaG9zdFJlZi5uYXRpdmVFbGVtZW50XG4gICk7XG5cbiAgLy8gSXQgc2hvdWxkIGJlIGEgZ2V0dGVyIGJlY2F1c2UgY29tcHV0YXRpb25zIGFyZSBjYWNoZWQgdW50aWxcbiAgLy8gYW55IG9mIHRoZSBwcm9kdWNlcnMgY2hhbmdlLlxuICBwcml2YXRlIGdldCBob3N0V2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIGlzU2VydmVyID0gaXNQbGF0Zm9ybVNlcnZlcihpbmplY3QoUExBVEZPUk1fSUQpKTtcbiAgcHJpdmF0ZSB0aXBweUZhY3RvcnkgPSBpbmplY3QoVGlwcHlGYWN0b3J5KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFRJUFBZX0NPTkZJRykgcHJvdGVjdGVkIGdsb2JhbENvbmZpZzogVGlwcHlDb25maWcsXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgdmlld1NlcnZpY2U6IFZpZXdTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB2Y3I6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJvdGVjdGVkIG5nWm9uZTogTmdab25lLFxuICAgIHByb3RlY3RlZCBob3N0UmVmOiBFbGVtZW50UmVmXG4gICkge1xuICAgIGlmICh0aGlzLmlzU2VydmVyKSByZXR1cm47XG5cbiAgICB0aGlzLnNldHVwTGlzdGVuZXJzKCk7XG5cbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgIHRoaXMuaW5zdGFuY2U/LmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuZGVzdHJveVZpZXcoKTtcbiAgICAgIHRoaXMudmlzaWJpbGl0eU9ic2VydmVyQ2xlYW51cD8uKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKHRoaXMuaXNTZXJ2ZXIpIHJldHVybjtcblxuICAgIGNvbnN0IHZhcmlhdGlvbiA9IHRoaXMudmFyaWF0aW9uKCkgfHwgdGhpcy5nbG9iYWxDb25maWcuZGVmYXVsdFZhcmlhdGlvbiB8fCAnJztcbiAgICBjb25zdCBwcm9wcyA9IE9iamVjdC5rZXlzKGNoYW5nZXMpXG4gICAgICAvLyBgaXNWaXNpYmxlYCBpcyBub3QgcmVxdWlyZWQgYXMgYSBwcm9wIHNpbmNlIHdlIHVwZGF0ZSBpdCBtYW51YWxseVxuICAgICAgLy8gaW4gYW4gZWZmZWN0LWxpa2UgbWFubmVyLlxuICAgICAgLmZpbHRlcigoa2V5KSA9PiBrZXkgIT09ICdpc1Zpc2libGUnKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKGFjY3VtdWxhdG9yLCBrZXkpID0+ICh7IC4uLmFjY3VtdWxhdG9yLCBba2V5XTogY2hhbmdlc1trZXldLmN1cnJlbnRWYWx1ZSB9KSxcbiAgICAgICAgeyAuLi50aGlzLmdsb2JhbENvbmZpZy52YXJpYXRpb25zPy5bdmFyaWF0aW9uXSB9XG4gICAgICApO1xuXG4gICAgdGhpcy51cGRhdGVQcm9wcyhwcm9wcyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy51c2VIb3N0V2lkdGgoKSkge1xuICAgICAgdGhpcy5wcm9wcy5tYXhXaWR0aCA9IHRoaXMuaG9zdFdpZHRoO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5pc1NlcnZlcikgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuaXNMYXp5KCkpIHtcbiAgICAgIGNvbnN0IGhvc3RJblZpZXckID0gaW5WaWV3KHRoaXMuaG9zdCgpKTtcblxuICAgICAgaWYgKHRoaXMub25seVRleHRPdmVyZmxvdygpKSB7XG4gICAgICAgIGhvc3RJblZpZXckXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5pc092ZXJmbG93aW5nJCgpKSxcbiAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGlzRWxlbWVudE92ZXJmbG93KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrT3ZlcmZsb3coaXNFbGVtZW50T3ZlcmZsb3cpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaG9zdEluVmlldyQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNyZWF0ZUluc3RhbmNlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5vbmx5VGV4dE92ZXJmbG93KCkpIHtcbiAgICAgIHRoaXMuaXNPdmVyZmxvd2luZyQoKVxuICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgLnN1YnNjcmliZSgoaXNFbGVtZW50T3ZlcmZsb3cpID0+IHtcbiAgICAgICAgICB0aGlzLmNoZWNrT3ZlcmZsb3coaXNFbGVtZW50T3ZlcmZsb3cpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jcmVhdGVJbnN0YW5jZSgpO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3lWaWV3KCkge1xuICAgIHRoaXMudmlld09wdGlvbnMkID0gbnVsbDtcbiAgICB0aGlzLnZpZXdSZWY/LmRlc3Ryb3koKTtcbiAgICB0aGlzLnZpZXdSZWYgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCB3aGVuIHlvdSBhcHBlbmQgdG8gYW4gZWxlbWVudCB0aGF0IHlvdSBtaWdodCByZW1vdmUgZnJvbSB0aGUgRE9NLlxuICAgKiBJbiBzdWNoIGNhc2VzIHdlIHdhbnQgdG8gaGlkZSB0aGUgdG9vbHRpcCBhbmQgbGV0IGl0IGdvIHRocm91Z2ggdGhlIGRlc3Ryb3kgbGlmZWN5Y2xlLlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgYSBncmlkIHJvdyB3aXRoIGFuIGVsZW1lbnQgdGhhdCB5b3UgdG9nZ2xlIHVzaW5nIHRoZSBkaXNwbGF5IENTUyBwcm9wZXJ0eSBvbiBob3Zlci5cbiAgICovXG4gIG9ic2VydmVIb3N0VmlzaWJpbGl0eSgpIHtcbiAgICBpZiAodGhpcy5pc1NlcnZlcikgcmV0dXJuO1xuICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gb2JzZXJ2ZSB0aGUgaG9zdCB2aXNpYmlsaXR5IGlmIHdlIGFyZSBhcHBlbmRpbmcgdG8gdGhlIGJvZHkuXG4gICAgaWYgKHRoaXMucHJvcHMuYXBwZW5kVG8gJiYgdGhpcy5wcm9wcy5hcHBlbmRUbyAhPT0gZG9jdW1lbnQuYm9keSkge1xuICAgICAgdGhpcy52aXNpYmlsaXR5T2JzZXJ2ZXJDbGVhbnVwPy4oKTtcbiAgICAgIHJldHVybiB0aGlzLnZpc2libGVJbnRlcm5hbFxuICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgLnN1YnNjcmliZSgoaXNWaXNpYmxlKSA9PiB7XG4gICAgICAgICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy52aXNpYmlsaXR5T2JzZXJ2ZXJDbGVhbnVwID0gb2JzZXJ2ZVZpc2liaWxpdHkoXG4gICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UucmVmZXJlbmNlLFxuICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgLy8gQmVjYXVzZSB3ZSBoYXZlIGFuaW1hdGlvbiBvbiB0aGUgcG9wcGVyIGl0IGRvZXNuJ3QgY2xvc2UgaW1tZWRpYXRlbHkgZG9lc24ndCB0cmlnZ2VyIHRoZSBgdHBWaXNpYmxlYCBldmVudC5cbiAgICAgICAgICAgICAgICAvLyBUaXBweSBpcyByZWx5aW5nIG9uIHRoZSB0cmFuc2l0aW9uZW5kIGV2ZW50IHRvIHRyaWdnZXIgdGhlIGBvbkhpZGRlbmAgY2FsbGJhY2suXG4gICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F0b21pa3MvdGlwcHlqcy9ibG9iL21hc3Rlci9zcmMvZG9tLXV0aWxzLnRzI0wxMTdcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGV2ZW50IG5ldmVyIGZpcmVzIGJlY2F1c2UgdGhlIHBvcHBlciBpcyByZW1vdmVkIGZyb20gdGhlIERPTSBiZWZvcmUgdGhlIHRyYW5zaXRpb24gZW5kcy5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5hbmltYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMub25IaWRkZW4oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eU9ic2VydmVyQ2xlYW51cD8uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzaG93KCkge1xuICAgIHRoaXMuaW5zdGFuY2U/LnNob3coKTtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgdGhpcy5pbnN0YW5jZT8uaGlkZSgpO1xuICB9XG5cbiAgZW5hYmxlKCkge1xuICAgIHRoaXMuaW5zdGFuY2U/LmVuYWJsZSgpO1xuICB9XG5cbiAgZGlzYWJsZSgpIHtcbiAgICB0aGlzLmluc3RhbmNlPy5kaXNhYmxlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlUHJvcHMocHJvcHM6IFBhcnRpYWw8VGlwcHlDb25maWc+KSB7XG4gICAgdGhpcy5zZXRQcm9wcyh7IC4uLnRoaXMucHJvcHMsIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFByb3BzKHByb3BzOiBQYXJ0aWFsPFRpcHB5Q29uZmlnPikge1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLmluc3RhbmNlPy5zZXRQcm9wcyhvbmx5VGlwcHlQcm9wcyhwcm9wcykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFN0YXR1cyhpc0VuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICBpc0VuYWJsZWQgPyB0aGlzLmluc3RhbmNlPy5lbmFibGUoKSA6IHRoaXMuaW5zdGFuY2U/LmRpc2FibGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVJbnN0YW5jZSgpIHtcbiAgICBpZiAoIXRoaXMuY29udGVudCgpICYmICF0aGlzLnVzZVRleHRDb250ZW50KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRpcHB5RmFjdG9yeVxuICAgICAgLmNyZWF0ZSh0aGlzLmhvc3QoKSwge1xuICAgICAgICBhbGxvd0hUTUw6IHRydWUsXG4gICAgICAgIGFwcGVuZFRvOiBkb2N1bWVudC5ib2R5LFxuICAgICAgICAuLi4odGhpcy5nbG9iYWxDb25maWcuekluZGV4R2V0dGVyXG4gICAgICAgICAgPyB7IHpJbmRleDogdGhpcy5nbG9iYWxDb25maWcuekluZGV4R2V0dGVyKCkgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi5vbmx5VGlwcHlQcm9wcyh0aGlzLmdsb2JhbENvbmZpZyksXG4gICAgICAgIC4uLm9ubHlUaXBweVByb3BzKHRoaXMucHJvcHMpLFxuICAgICAgICBvbk1vdW50OiAoaW5zdGFuY2UpID0+IHtcbiAgICAgICAgICBjb25zdCBpc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaXNWaXNpYmxlLnNldChpc1Zpc2libGUpO1xuICAgICAgICAgIHRoaXMudmlzaWJsZUludGVybmFsLm5leHQoaXNWaXNpYmxlKTtcbiAgICAgICAgICBpZiAodGhpcy52aXNpYmxlLm9ic2VydmVkKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy52aXNpYmxlLm5leHQoaXNWaXNpYmxlKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMudXNlSG9zdFdpZHRoKCkgJiYgdGhpcy5saXN0ZW5Ub0hvc3RSZXNpemUoKTtcbiAgICAgICAgICB0aGlzLmdsb2JhbENvbmZpZy5vbk1vdW50Py4oaW5zdGFuY2UpO1xuICAgICAgICB9LFxuICAgICAgICBvbkNyZWF0ZTogKGluc3RhbmNlKSA9PiB7XG4gICAgICAgICAgaW5zdGFuY2UucG9wcGVyLmNsYXNzTGlzdC5hZGQoXG4gICAgICAgICAgICBgdGlwcHktdmFyaWF0aW9uLSR7dGhpcy52YXJpYXRpb24oKSB8fCB0aGlzLmdsb2JhbENvbmZpZy5kZWZhdWx0VmFyaWF0aW9ufWBcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICh0aGlzLmNsYXNzTmFtZSgpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtsYXNzIG9mIG5vcm1hbGl6ZUNsYXNzTmFtZSh0aGlzLmNsYXNzTmFtZSgpKSkge1xuICAgICAgICAgICAgICBpbnN0YW5jZS5wb3BwZXIuY2xhc3NMaXN0LmFkZChrbGFzcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ2xvYmFsQ29uZmlnLm9uQ3JlYXRlPy4oaW5zdGFuY2UpO1xuICAgICAgICAgIGlmICh0aGlzLmlzVmlzaWJsZSgpID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpbnN0YW5jZS5zaG93KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvblNob3c6IChpbnN0YW5jZSkgPT4ge1xuICAgICAgICAgIGluc3RhbmNlLnJlZmVyZW5jZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGlwcHktb3BlbicsICcnKTtcblxuICAgICAgICAgIC8vIFdlJ3JlIHJlLWVudGVyaW5nIGJlY2F1c2Ugd2UgbWlnaHQgY3JlYXRlIGFuIEFuZ3VsYXIgY29tcG9uZW50LFxuICAgICAgICAgIC8vIHdoaWNoIHNob3VsZCBiZSBkb25lIHdpdGhpbiB0aGUgem9uZS5cbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucmVzb2x2ZUNvbnRlbnQoaW5zdGFuY2UpKTtcblxuICAgICAgICAgIGlmIChpc1N0cmluZyhjb250ZW50KSkge1xuICAgICAgICAgICAgaW5zdGFuY2Uuc2V0UHJvcHMoeyBhbGxvd0hUTUw6IGZhbHNlIH0pO1xuXG4gICAgICAgICAgICBpZiAoIWNvbnRlbnQ/LnRyaW0oKSkge1xuICAgICAgICAgICAgICB0aGlzLmRpc2FibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaW5zdGFuY2Uuc2V0Q29udGVudChjb250ZW50KTtcbiAgICAgICAgICB0aGlzLmhpZGVPbkVzY2FwZSgpICYmIHRoaXMuaGFuZGxlRXNjYXBlQnV0dG9uKCk7XG5cbiAgICAgICAgICBpZiAodGhpcy51c2VIb3N0V2lkdGgoKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRJbnN0YW5jZVdpZHRoKGluc3RhbmNlLCB0aGlzLmhvc3RXaWR0aCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBvcHBlcldpZHRoKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0SW5zdGFuY2VXaWR0aChpbnN0YW5jZSwgdGhpcy5wb3BwZXJXaWR0aCgpISk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ2xvYmFsQ29uZmlnLm9uU2hvdz8uKGluc3RhbmNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25IaWRlKGluc3RhbmNlKSB7XG4gICAgICAgICAgaW5zdGFuY2UucmVmZXJlbmNlLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10aXBweS1vcGVuJyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uSGlkZGVuOiAoaW5zdGFuY2UpID0+IHtcbiAgICAgICAgICB0aGlzLm9uSGlkZGVuKGluc3RhbmNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGluc3RhbmNlKSA9PiB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UgPSBpbnN0YW5jZTtcblxuICAgICAgICB0aGlzLnNldFN0YXR1cyh0aGlzLmlzRW5hYmxlZCgpKTtcbiAgICAgICAgdGhpcy5zZXRQcm9wcyh0aGlzLnByb3BzKTtcblxuICAgICAgICB0aGlzLnZhcmlhdGlvbigpID09PSAnY29udGV4dE1lbnUnICYmIHRoaXMuaGFuZGxlQ29udGV4dE1lbnUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVDb250ZW50KGluc3RhbmNlOiBUaXBweUluc3RhbmNlKSB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuY29udGVudCgpO1xuXG4gICAgaWYgKCF0aGlzLnZpZXdPcHRpb25zJCAmJiAhaXNTdHJpbmcoY29udGVudCkpIHtcbiAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVElQUFlfUkVGLFxuICAgICAgICAgICAgdXNlVmFsdWU6IHRoaXMuaW5zdGFuY2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRhdGEoKTtcblxuICAgICAgaWYgKGlzQ29tcG9uZW50KGNvbnRlbnQpKSB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UuZGF0YSA9IGRhdGE7XG5cbiAgICAgICAgdGhpcy52aWV3T3B0aW9ucyQgPSB7XG4gICAgICAgICAgaW5qZWN0b3IsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKGlzVGVtcGxhdGVSZWYoY29udGVudCkpIHtcbiAgICAgICAgdGhpcy52aWV3T3B0aW9ucyQgPSB7XG4gICAgICAgICAgaW5qZWN0b3IsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICRpbXBsaWNpdDogdGhpcy5oaWRlLmJpbmQodGhpcyksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnZpZXdSZWYgPSB0aGlzLnZpZXdTZXJ2aWNlLmNyZWF0ZVZpZXcoY29udGVudCEsIHtcbiAgICAgIHZjcjogdGhpcy52Y3IsXG4gICAgICAuLi50aGlzLnZpZXdPcHRpb25zJCxcbiAgICB9KTtcblxuICAgIC8vIFdlIG5lZWQgdG8gY2FsbCBkZXRlY3RDaGFuZ2VzIGZvciBvblB1c2ggY29tcG9uZW50cyB0byB1cGRhdGUgdGhlIGNvbnRlbnRcbiAgICBpZiAodGhpcy5kZXRlY3RDaGFuZ2VzQ29tcG9uZW50KCkgJiYgaXNDb21wb25lbnQoY29udGVudCkpIHtcbiAgICAgIHRoaXMudmlld1JlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgbGV0IG5ld0NvbnRlbnQgPSB0aGlzLnZpZXdSZWYuZ2V0RWxlbWVudCgpO1xuXG4gICAgaWYgKHRoaXMudXNlVGV4dENvbnRlbnQoKSkge1xuICAgICAgbmV3Q29udGVudCA9IGluc3RhbmNlLnJlZmVyZW5jZS50ZXh0Q29udGVudCE7XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyaW5nKG5ld0NvbnRlbnQpICYmIHRoaXMuZ2xvYmFsQ29uZmlnLmJlZm9yZVJlbmRlcikge1xuICAgICAgbmV3Q29udGVudCA9IHRoaXMuZ2xvYmFsQ29uZmlnLmJlZm9yZVJlbmRlcihuZXdDb250ZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Q29udGVudDtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDb250ZXh0TWVudSgpIHtcbiAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5ob3N0KCksICdjb250ZXh0bWVudScpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS5zZXRQcm9wcyh7XG4gICAgICAgICAgZ2V0UmVmZXJlbmNlQ2xpZW50UmVjdDogKCkgPT5cbiAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgICAgIHRvcDogZXZlbnQuY2xpZW50WSxcbiAgICAgICAgICAgICAgYm90dG9tOiBldmVudC5jbGllbnRZLFxuICAgICAgICAgICAgICBsZWZ0OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICByaWdodDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICAgIH0gYXMgRE9NUmVjdFJlYWRPbmx5KSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS5zaG93KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVFc2NhcGVCdXR0b24oKTogdm9pZCB7XG4gICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LmJvZHksICdrZXlkb3duJylcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHsgY29kZSB9OiBLZXlib2FyZEV2ZW50KSA9PiBjb2RlID09PSAnRXNjYXBlJyksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnZpc2libGVJbnRlcm5hbC5waXBlKGZpbHRlcigodikgPT4gIXYpKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGlkZSgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja092ZXJmbG93KGlzRWxlbWVudE92ZXJmbG93OiBib29sZWFuKSB7XG4gICAgaWYgKGlzRWxlbWVudE92ZXJmbG93KSB7XG4gICAgICBpZiAoIXRoaXMuaW5zdGFuY2UpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVJbnN0YW5jZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5lbmFibGUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnN0YW5jZT8uZGlzYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBsaXN0ZW5Ub0hvc3RSZXNpemUoKSB7XG4gICAgZGltZW5zaW9uc0NoYW5nZXModGhpcy5ob3N0KCkpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy52aXNpYmxlSW50ZXJuYWwpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNldEluc3RhbmNlV2lkdGgodGhpcy5pbnN0YW5jZSwgdGhpcy5ob3N0V2lkdGgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0SW5zdGFuY2VXaWR0aChpbnN0YW5jZTogSW5zdGFuY2UsIHdpZHRoOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICBjb25zdCBpblBpeGVscyA9IGNvZXJjZUNzc1BpeGVsVmFsdWUod2lkdGgpO1xuICAgIGluc3RhbmNlLnBvcHBlci5zdHlsZS53aWR0aCA9IGluUGl4ZWxzO1xuICAgIGluc3RhbmNlLnBvcHBlci5zdHlsZS5tYXhXaWR0aCA9IGluUGl4ZWxzO1xuICAgIChpbnN0YW5jZS5wb3BwZXIuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLm1heFdpZHRoID0gaW5QaXhlbHM7XG4gIH1cblxuICBwcml2YXRlIG9uSGlkZGVuKGluc3RhbmNlOiBUaXBweUluc3RhbmNlID0gdGhpcy5pbnN0YW5jZSkge1xuICAgIHRoaXMuZGVzdHJveVZpZXcoKTtcbiAgICBjb25zdCBpc1Zpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLmlzVmlzaWJsZS5zZXQoaXNWaXNpYmxlKTtcbiAgICB0aGlzLnZpc2libGVJbnRlcm5hbC5uZXh0KGlzVmlzaWJsZSk7XG4gICAgaWYgKHRoaXMudmlzaWJsZS5vYnNlcnZlZCkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMudmlzaWJsZS5uZXh0KGlzVmlzaWJsZSkpO1xuICAgIH1cbiAgICB0aGlzLmdsb2JhbENvbmZpZy5vbkhpZGRlbj8uKGluc3RhbmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNPdmVyZmxvd2luZyQoKSB7XG4gICAgY29uc3QgaG9zdCA9IHRoaXMuaG9zdCgpO1xuICAgIGNvbnN0IG5vdGlmaWVycyQgPSBbb3ZlcmZsb3dDaGFuZ2VzKGhvc3QpXTtcblxuICAgIC8vIFdlIG5lZWQgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIHRoZSBob3N0IGhhcyBhIHN0YXRpYyB3aWR0aCBidXQgdGhlIGNvbnRlbnQgbWlnaHQgY2hhbmdlXG4gICAgaWYgKHRoaXMuc3RhdGljV2lkdGhIb3N0KCkpIHtcbiAgICAgIG5vdGlmaWVycyQucHVzaChcbiAgICAgICAgdGhpcy5jb250ZW50Q2hhbmdlZC5waXBlKFxuICAgICAgICAgIC8vIFdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIGNvbnRlbnQgdG8gYmUgcmVuZGVyZWQgYmVmb3JlIHdlIGNhbiBjaGVjayBpZiBpdCdzIG92ZXJmbG93aW5nLlxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaWQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoKTtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoKSA9PiBjYW5jZWxBbmltYXRpb25GcmFtZShpZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtYXAoKCkgPT4gaXNFbGVtZW50T3ZlcmZsb3coaG9zdCkpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlKC4uLm5vdGlmaWVycyQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgLy8gQ2FwdHVyZSBzaWduYWwgcmVhZCB0byB0cmFjayBpdHMgY2hhbmdlcy5cbiAgICAgIHRoaXMuY29udGVudCgpO1xuICAgICAgdW50cmFja2VkKCgpID0+IHRoaXMuY29udGVudENoYW5nZWQubmV4dCgpKTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB0aGlzLnNldFN0YXR1cyh0aGlzLmlzRW5hYmxlZCgpKSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaXNWaXNpYmxlID0gdGhpcy5pc1Zpc2libGUoKTtcbiAgICAgIGlzVmlzaWJsZSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { inject, Inject, Injectable, Injector } from '@angular/core';
2
- import { isComponent, isTemplateRef } from '@ngneat/overview';
3
- import { TIPPY_CONFIG, TIPPY_REF } from './tippy.types';
2
+ import { isComponent, isTemplateRef, } from '@ngneat/overview';
3
+ import { TIPPY_CONFIG, TIPPY_REF, } from './tippy.types';
4
4
  import { normalizeClassName, onlyTippyProps } from './utils';
5
5
  import { TippyFactory } from './tippy.factory';
6
6
  import * as i0 from "@angular/core";
@@ -13,22 +13,22 @@ export class TippyService {
13
13
  this._tippyFactory = inject(TippyFactory);
14
14
  }
15
15
  create(host, content, options = {}) {
16
- const variation = options.variation || this.globalConfig.defaultVariation;
16
+ const variation = options.variation || this.globalConfig.defaultVariation || '';
17
17
  const config = {
18
18
  onShow: (instance) => {
19
19
  host.setAttribute('data-tippy-open', '');
20
20
  if (!instance.$viewOptions) {
21
- instance.$viewOptions = {};
22
- const injector = Injector.create({
23
- providers: [
24
- {
25
- provide: TIPPY_REF,
26
- useValue: instance,
27
- },
28
- ],
29
- parent: options.injector || this.injector,
30
- });
31
- instance.$viewOptions.injector = injector;
21
+ instance.$viewOptions = {
22
+ injector: Injector.create({
23
+ providers: [
24
+ {
25
+ provide: TIPPY_REF,
26
+ useValue: instance,
27
+ },
28
+ ],
29
+ parent: options.injector || this.injector,
30
+ }),
31
+ };
32
32
  if (isTemplateRef(content)) {
33
33
  instance.$viewOptions.context = {
34
34
  $implicit: instance.hide.bind(instance),
@@ -40,22 +40,23 @@ export class TippyService {
40
40
  instance.data = options.data;
41
41
  }
42
42
  }
43
- if (!instance.view) {
44
- instance.view = this.view.createView(content, { ...options, ...instance.$viewOptions });
45
- }
43
+ instance.view ||= this.view.createView(content, {
44
+ ...options,
45
+ ...instance.$viewOptions,
46
+ });
46
47
  instance.setContent(instance.view.getElement());
47
48
  options?.onShow?.(instance);
48
49
  },
49
50
  onHidden: (instance) => {
50
51
  host.removeAttribute('data-tippy-open');
51
52
  if (!options.preserveView) {
52
- instance.view.destroy();
53
+ instance.view?.destroy();
53
54
  instance.view = null;
54
55
  }
55
56
  options?.onHidden?.(instance);
56
57
  },
57
58
  ...onlyTippyProps(this.globalConfig),
58
- ...this.globalConfig.variations[variation],
59
+ ...this.globalConfig.variations?.[variation],
59
60
  ...onlyTippyProps(options),
60
61
  onCreate: (instance) => {
61
62
  instance.popper.classList.add(`tippy-variation-${variation}`);
@@ -80,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
80
81
  type: Inject,
81
82
  args: [TIPPY_CONFIG]
82
83
  }] }, { type: i1.ViewService }, { type: i0.Injector }] });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nbmVhdC9oZWxpcG9wcGVyL3NyYy9saWIvdGlwcHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFlLE1BQU0sa0JBQWtCLENBQUM7QUFJM0UsT0FBTyxFQUF3QyxZQUFZLEVBQUUsU0FBUyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFHL0MsTUFBTSxPQUFPLFlBQVk7SUFHdkIsWUFDZ0MsWUFBeUIsRUFDL0MsSUFBaUIsRUFDakIsUUFBa0I7UUFGSSxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUMvQyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFMWCxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQU1uRCxDQUFDO0lBRUosTUFBTSxDQUNKLElBQWlCLEVBQ2pCLE9BQVUsRUFDVixVQUFrQyxFQUFFO1FBRXBDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMxRSxNQUFNLE1BQU0sR0FBRztZQUNiLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO29C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LENBQUM7OEdBMUVVLFlBQVksa0JBSWIsWUFBWTtrSEFKWCxZQUFZLGNBREMsTUFBTTs7MkZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFLN0IsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0NvbXBvbmVudCwgaXNUZW1wbGF0ZVJlZiwgVmlld1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L292ZXJ2aWV3JztcbmltcG9ydCB7IENvbnRlbnQgfSBmcm9tICdAbmduZWF0L292ZXJ2aWV3JztcbmltcG9ydCB0eXBlIHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDcmVhdGVPcHRpb25zLCBFeHRlbmRlZFRpcHB5SW5zdGFuY2UsIFRJUFBZX0NPTkZJRywgVElQUFlfUkVGLCBUaXBweUNvbmZpZyB9IGZyb20gJy4vdGlwcHkudHlwZXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplQ2xhc3NOYW1lLCBvbmx5VGlwcHlQcm9wcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVGlwcHlGYWN0b3J5IH0gZnJvbSAnLi90aXBweS5mYWN0b3J5JztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUaXBweVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF90aXBweUZhY3RvcnkgPSBpbmplY3QoVGlwcHlGYWN0b3J5KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFRJUFBZX0NPTkZJRykgcHJpdmF0ZSBnbG9iYWxDb25maWc6IFRpcHB5Q29uZmlnLFxuICAgIHByaXZhdGUgdmlldzogVmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7fVxuXG4gIGNyZWF0ZTxUIGV4dGVuZHMgQ29udGVudD4oXG4gICAgaG9zdDogSFRNTEVsZW1lbnQsXG4gICAgY29udGVudDogVCxcbiAgICBvcHRpb25zOiBQYXJ0aWFsPENyZWF0ZU9wdGlvbnM+ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxFeHRlbmRlZFRpcHB5SW5zdGFuY2U8VD4+IHtcbiAgICBjb25zdCB2YXJpYXRpb24gPSBvcHRpb25zLnZhcmlhdGlvbiB8fCB0aGlzLmdsb2JhbENvbmZpZy5kZWZhdWx0VmFyaWF0aW9uO1xuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIG9uU2hvdzogKGluc3RhbmNlKSA9PiB7XG4gICAgICAgIGhvc3Quc2V0QXR0cmlidXRlKCdkYXRhLXRpcHB5LW9wZW4nLCAnJyk7XG4gICAgICAgIGlmICghaW5zdGFuY2UuJHZpZXdPcHRpb25zKSB7XG4gICAgICAgICAgaW5zdGFuY2UuJHZpZXdPcHRpb25zID0ge307XG5cbiAgICAgICAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb3ZpZGU6IFRJUFBZX1JFRixcbiAgICAgICAgICAgICAgICB1c2VWYWx1ZTogaW5zdGFuY2UsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcGFyZW50OiBvcHRpb25zLmluamVjdG9yIHx8IHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpbnN0YW5jZS4kdmlld09wdGlvbnMuaW5qZWN0b3IgPSBpbmplY3RvcjtcblxuICAgICAgICAgIGlmIChpc1RlbXBsYXRlUmVmKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICBpbnN0YW5jZS4kdmlld09wdGlvbnMuY29udGV4dCA9IHtcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiBpbnN0YW5jZS5oaWRlLmJpbmQoaW5zdGFuY2UpLFxuICAgICAgICAgICAgICAuLi5vcHRpb25zLmNvbnRleHQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNDb21wb25lbnQoY29udGVudCkpIHtcbiAgICAgICAgICAgIGluc3RhbmNlLmNvbnRleHQgPSBvcHRpb25zLmNvbnRleHQ7XG4gICAgICAgICAgICBpbnN0YW5jZS5kYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWluc3RhbmNlLnZpZXcpIHtcbiAgICAgICAgICBpbnN0YW5jZS52aWV3ID0gdGhpcy52aWV3LmNyZWF0ZVZpZXcoY29udGVudCwgeyAuLi5vcHRpb25zLCAuLi5pbnN0YW5jZS4kdmlld09wdGlvbnMgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zdGFuY2Uuc2V0Q29udGVudChpbnN0YW5jZS52aWV3LmdldEVsZW1lbnQoKSk7XG4gICAgICAgIG9wdGlvbnM/Lm9uU2hvdz8uKGluc3RhbmNlKTtcbiAgICAgIH0sXG4gICAgICBvbkhpZGRlbjogKGluc3RhbmNlKSA9PiB7XG4gICAgICAgIGhvc3QucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXRpcHB5LW9wZW4nKTtcblxuICAgICAgICBpZiAoIW9wdGlvbnMucHJlc2VydmVWaWV3KSB7XG4gICAgICAgICAgaW5zdGFuY2Uudmlldy5kZXN0cm95KCk7XG4gICAgICAgICAgaW5zdGFuY2UudmlldyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9ucz8ub25IaWRkZW4/LihpbnN0YW5jZSk7XG4gICAgICB9LFxuICAgICAgLi4ub25seVRpcHB5UHJvcHModGhpcy5nbG9iYWxDb25maWcpLFxuICAgICAgLi4udGhpcy5nbG9iYWxDb25maWcudmFyaWF0aW9uc1t2YXJpYXRpb25dLFxuICAgICAgLi4ub25seVRpcHB5UHJvcHMob3B0aW9ucyksXG4gICAgICBvbkNyZWF0ZTogKGluc3RhbmNlKSA9PiB7XG4gICAgICAgIGluc3RhbmNlLnBvcHBlci5jbGFzc0xpc3QuYWRkKGB0aXBweS12YXJpYXRpb24tJHt2YXJpYXRpb259YCk7XG4gICAgICAgIGlmIChvcHRpb25zLmNsYXNzTmFtZSkge1xuICAgICAgICAgIGZvciAoY29uc3Qga2xhc3Mgb2Ygbm9ybWFsaXplQ2xhc3NOYW1lKG9wdGlvbnMuY2xhc3NOYW1lKSkge1xuICAgICAgICAgICAgaW5zdGFuY2UucG9wcGVyLmNsYXNzTGlzdC5hZGQoa2xhc3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdsb2JhbENvbmZpZy5vbkNyZWF0ZT8uKGluc3RhbmNlKTtcbiAgICAgICAgb3B0aW9ucy5vbkNyZWF0ZT8uKGluc3RhbmNlKTtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLl90aXBweUZhY3RvcnkuY3JlYXRlKGhvc3QsIGNvbmZpZykgYXMgT2JzZXJ2YWJsZTxFeHRlbmRlZFRpcHB5SW5zdGFuY2U8VD4+O1xuICB9XG59XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nbmVhdC9oZWxpcG9wcGVyL3NyYy9saWIvdGlwcHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFDTCxXQUFXLEVBQ1gsYUFBYSxHQUdkLE1BQU0sa0JBQWtCLENBQUM7QUFJMUIsT0FBTyxFQUdMLFlBQVksRUFDWixTQUFTLEdBR1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUcvQyxNQUFNLE9BQU8sWUFBWTtJQUd2QixZQUNnQyxZQUF5QixFQUMvQyxJQUFpQixFQUNqQixRQUFrQjtRQUZJLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQy9DLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUxYLGtCQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBTW5ELENBQUM7SUFFSixNQUFNLENBQ0osSUFBaUIsRUFDakIsT0FBVSxFQUNWLFVBQWtDLEVBQUU7UUFFcEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztRQUNoRixNQUFNLE1BQU0sR0FBRztZQUNiLE1BQU0sRUFBRSxDQUFDLFFBQWtDLEVBQUUsRUFBRTtnQkFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDM0IsUUFBUSxDQUFDLFlBQVksR0FBRzt3QkFDdEIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUM7NEJBQ3hCLFNBQVMsRUFBRTtnQ0FDVDtvQ0FDRSxPQUFPLEVBQUUsU0FBUztvQ0FDbEIsUUFBUSxFQUFFLFFBQVE7aUNBQ25COzZCQUNGOzRCQUNELE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRO3lCQUMxQyxDQUFDO3FCQUNILENBQUM7b0JBRUYsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQzt3QkFDM0IsUUFBUSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUc7NEJBQzlCLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7NEJBQ3ZDLEdBQUcsT0FBTyxDQUFDLE9BQU87eUJBQ25CLENBQUM7b0JBQ0osQ0FBQzt5QkFBTSxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO3dCQUNoQyxRQUFRLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7d0JBQ25DLFFBQVEsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDL0IsQ0FBQztnQkFDSCxDQUFDO2dCQUVELFFBQVEsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO29CQUM5QyxHQUFHLE9BQU87b0JBQ1YsR0FBRyxRQUFRLENBQUMsWUFBWTtpQkFDekIsQ0FBc0IsQ0FBQztnQkFFeEIsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QixDQUFDO1lBQ0QsUUFBUSxFQUFFLENBQUMsUUFBa0MsRUFBRSxFQUFFO2dCQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBRXhDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQzFCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7b0JBQ3pCLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUN2QixDQUFDO2dCQUNELE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoQyxDQUFDO1lBQ0QsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUNwQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQzVDLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQztZQUMxQixRQUFRLEVBQUUsQ0FBQyxRQUF1QixFQUFFLEVBQUU7Z0JBQ3BDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ3RCLEtBQUssTUFBTSxLQUFLLElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7d0JBQzFELFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdkMsQ0FBQztnQkFDSCxDQUFDO2dCQUNELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3ZDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixDQUFDO1NBQ0YsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FFNUMsQ0FBQztJQUNKLENBQUM7OEdBN0VVLFlBQVksa0JBSWIsWUFBWTtrSEFKWCxZQUFZLGNBREMsTUFBTTs7MkZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFLN0IsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBpc0NvbXBvbmVudCxcbiAgaXNUZW1wbGF0ZVJlZixcbiAgUmVzb2x2ZVZpZXdSZWYsXG4gIFZpZXdTZXJ2aWNlLFxufSBmcm9tICdAbmduZWF0L292ZXJ2aWV3JztcbmltcG9ydCB7IENvbnRlbnQgfSBmcm9tICdAbmduZWF0L292ZXJ2aWV3JztcbmltcG9ydCB0eXBlIHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBDcmVhdGVPcHRpb25zLFxuICBFeHRlbmRlZFRpcHB5SW5zdGFuY2UsXG4gIFRJUFBZX0NPTkZJRyxcbiAgVElQUFlfUkVGLFxuICBUaXBweUNvbmZpZyxcbiAgVGlwcHlJbnN0YW5jZSxcbn0gZnJvbSAnLi90aXBweS50eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVDbGFzc05hbWUsIG9ubHlUaXBweVByb3BzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBUaXBweUZhY3RvcnkgfSBmcm9tICcuL3RpcHB5LmZhY3RvcnknO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRpcHB5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpcHB5RmFjdG9yeSA9IGluamVjdChUaXBweUZhY3RvcnkpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVElQUFlfQ09ORklHKSBwcml2YXRlIGdsb2JhbENvbmZpZzogVGlwcHlDb25maWcsXG4gICAgcHJpdmF0ZSB2aWV3OiBWaWV3U2VydmljZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxuICApIHt9XG5cbiAgY3JlYXRlPFQgZXh0ZW5kcyBDb250ZW50PihcbiAgICBob3N0OiBIVE1MRWxlbWVudCxcbiAgICBjb250ZW50OiBULFxuICAgIG9wdGlvbnM6IFBhcnRpYWw8Q3JlYXRlT3B0aW9ucz4gPSB7fVxuICApOiBPYnNlcnZhYmxlPEV4dGVuZGVkVGlwcHlJbnN0YW5jZTxUPj4ge1xuICAgIGNvbnN0IHZhcmlhdGlvbiA9IG9wdGlvbnMudmFyaWF0aW9uIHx8IHRoaXMuZ2xvYmFsQ29uZmlnLmRlZmF1bHRWYXJpYXRpb24gfHwgJyc7XG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgb25TaG93OiAoaW5zdGFuY2U6IEV4dGVuZGVkVGlwcHlJbnN0YW5jZTxUPikgPT4ge1xuICAgICAgICBob3N0LnNldEF0dHJpYnV0ZSgnZGF0YS10aXBweS1vcGVuJywgJycpO1xuICAgICAgICBpZiAoIWluc3RhbmNlLiR2aWV3T3B0aW9ucykge1xuICAgICAgICAgIGluc3RhbmNlLiR2aWV3T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGluamVjdG9yOiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBwcm92aWRlOiBUSVBQWV9SRUYsXG4gICAgICAgICAgICAgICAgICB1c2VWYWx1ZTogaW5zdGFuY2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcGFyZW50OiBvcHRpb25zLmluamVjdG9yIHx8IHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYgKGlzVGVtcGxhdGVSZWYoY29udGVudCkpIHtcbiAgICAgICAgICAgIGluc3RhbmNlLiR2aWV3T3B0aW9ucy5jb250ZXh0ID0ge1xuICAgICAgICAgICAgICAkaW1wbGljaXQ6IGluc3RhbmNlLmhpZGUuYmluZChpbnN0YW5jZSksXG4gICAgICAgICAgICAgIC4uLm9wdGlvbnMuY29udGV4dCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0NvbXBvbmVudChjb250ZW50KSkge1xuICAgICAgICAgICAgaW5zdGFuY2UuY29udGV4dCA9IG9wdGlvbnMuY29udGV4dDtcbiAgICAgICAgICAgIGluc3RhbmNlLmRhdGEgPSBvcHRpb25zLmRhdGE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaW5zdGFuY2UudmlldyB8fD0gdGhpcy52aWV3LmNyZWF0ZVZpZXcoY29udGVudCwge1xuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgLi4uaW5zdGFuY2UuJHZpZXdPcHRpb25zLFxuICAgICAgICB9KSBhcyBSZXNvbHZlVmlld1JlZjxUPjtcblxuICAgICAgICBpbnN0YW5jZS5zZXRDb250ZW50KGluc3RhbmNlLnZpZXcuZ2V0RWxlbWVudCgpKTtcbiAgICAgICAgb3B0aW9ucz8ub25TaG93Py4oaW5zdGFuY2UpO1xuICAgICAgfSxcbiAgICAgIG9uSGlkZGVuOiAoaW5zdGFuY2U6IEV4dGVuZGVkVGlwcHlJbnN0YW5jZTxUPikgPT4ge1xuICAgICAgICBob3N0LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10aXBweS1vcGVuJyk7XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLnByZXNlcnZlVmlldykge1xuICAgICAgICAgIGluc3RhbmNlLnZpZXc/LmRlc3Ryb3koKTtcbiAgICAgICAgICBpbnN0YW5jZS52aWV3ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBvcHRpb25zPy5vbkhpZGRlbj8uKGluc3RhbmNlKTtcbiAgICAgIH0sXG4gICAgICAuLi5vbmx5VGlwcHlQcm9wcyh0aGlzLmdsb2JhbENvbmZpZyksXG4gICAgICAuLi50aGlzLmdsb2JhbENvbmZpZy52YXJpYXRpb25zPy5bdmFyaWF0aW9uXSxcbiAgICAgIC4uLm9ubHlUaXBweVByb3BzKG9wdGlvbnMpLFxuICAgICAgb25DcmVhdGU6IChpbnN0YW5jZTogVGlwcHlJbnN0YW5jZSkgPT4ge1xuICAgICAgICBpbnN0YW5jZS5wb3BwZXIuY2xhc3NMaXN0LmFkZChgdGlwcHktdmFyaWF0aW9uLSR7dmFyaWF0aW9ufWApO1xuICAgICAgICBpZiAob3B0aW9ucy5jbGFzc05hbWUpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtsYXNzIG9mIG5vcm1hbGl6ZUNsYXNzTmFtZShvcHRpb25zLmNsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgIGluc3RhbmNlLnBvcHBlci5jbGFzc0xpc3QuYWRkKGtsYXNzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nbG9iYWxDb25maWcub25DcmVhdGU/LihpbnN0YW5jZSk7XG4gICAgICAgIG9wdGlvbnMub25DcmVhdGU/LihpbnN0YW5jZSk7XG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5fdGlwcHlGYWN0b3J5LmNyZWF0ZShob3N0LCBjb25maWcpIGFzIE9ic2VydmFibGU8XG4gICAgICBFeHRlbmRlZFRpcHB5SW5zdGFuY2U8VD5cbiAgICA+O1xuICB9XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export const TIPPY_REF = new InjectionToken('TIPPY_REF');
3
3
  export const TIPPY_CONFIG = new InjectionToken('Tippy config');
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ25lYXQvaGVsaXBvcHBlci9zcmMvbGliL3RpcHB5LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBYyxjQUFjLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBK0I3RSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxjQUFjLENBQWdCLFdBQVcsQ0FBQyxDQUFDO0FBMkJ4RSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQWMsY0FBYyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB0aXBweSBmcm9tICd0aXBweS5qcyc7XG5pbXBvcnQgdHlwZSB7IEluc3RhbmNlLCBQcm9wcyB9IGZyb20gJ3RpcHB5LmpzJztcbmltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGlvblRva2VuLCB0eXBlIElucHV0U2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXNvbHZlVmlld1JlZiwgVmlld09wdGlvbnMgfSBmcm9tICdAbmduZWF0L292ZXJ2aWV3JztcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxUaXBweVByb3BzPiwgVmlld09wdGlvbnMge1xuICB2YXJpYXRpb246IHN0cmluZztcbiAgcHJlc2VydmVWaWV3OiBib29sZWFuO1xuICBjbGFzc05hbWU6IHN0cmluZyB8IHN0cmluZ1tdO1xuICBkYXRhOiBhbnk7XG59XG5cbnR5cGUgSW5mZXJJbnB1dFNpZ25hbFR5cGU8VD4gPSBUIGV4dGVuZHMgSW5wdXRTaWduYWw8aW5mZXIgUj4gPyBSIDogVDtcblxuZXhwb3J0IHR5cGUgTmdDaGFuZ2VzPENvbXBvbmVudCBleHRlbmRzIG9iamVjdCwgUHJvcHMgPSBFeGNsdWRlRnVuY3Rpb25zPENvbXBvbmVudD4+ID0ge1xuICBbS2V5IGluIGtleW9mIFByb3BzXToge1xuICAgIHByZXZpb3VzVmFsdWU6IEluZmVySW5wdXRTaWduYWxUeXBlPFByb3BzW0tleV0+O1xuICAgIGN1cnJlbnRWYWx1ZTogSW5mZXJJbnB1dFNpZ25hbFR5cGU8UHJvcHNbS2V5XT47XG4gICAgZmlyc3RDaGFuZ2U6IGJvb2xlYW47XG4gICAgaXNGaXJzdENoYW5nZSgpOiBib29sZWFuO1xuICB9O1xufTtcblxudHlwZSBNYXJrRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPENvbXBvbmVudD4gPSB7XG4gIFtLZXkgaW4ga2V5b2YgQ29tcG9uZW50XTogQ29tcG9uZW50W0tleV0gZXh0ZW5kcyBJbnB1dFNpZ25hbDxhbnk+XG4gICAgPyBLZXlcbiAgICA6IENvbXBvbmVudFtLZXldIGV4dGVuZHMgRnVuY3Rpb25cbiAgICA/IG5ldmVyXG4gICAgOiBLZXk7XG59W2tleW9mIENvbXBvbmVudF07XG5cbnR5cGUgRXhjbHVkZUZ1bmN0aW9uczxUIGV4dGVuZHMgb2JqZWN0PiA9IFBpY2s8VCwgTWFya0Z1bmN0aW9uUHJvcGVydHlOYW1lczxUPj47XG5cbmV4cG9ydCBjb25zdCBUSVBQWV9SRUYgPSBuZXcgSW5qZWN0aW9uVG9rZW48VGlwcHlJbnN0YW5jZT4oJ1RJUFBZX1JFRicpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpcHB5SW5zdGFuY2UgZXh0ZW5kcyBJbnN0YW5jZSB7XG4gIGRhdGE/OiBhbnk7XG59XG5cbmV4cG9ydCB0eXBlIFRpcHB5UHJvcHMgPSBQcm9wcztcblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbmRlZFRpcHB5UHJvcHMgZXh0ZW5kcyBUaXBweVByb3BzIHtcbiAgdmFyaWF0aW9uczogUmVjb3JkPHN0cmluZywgUGFydGlhbDxUaXBweVByb3BzPj47XG4gIGRlZmF1bHRWYXJpYXRpb246IGtleW9mIEV4dGVuZGVkVGlwcHlQcm9wc1sndmFyaWF0aW9ucyddO1xuICBiZWZvcmVSZW5kZXI/OiAodGV4dDogc3RyaW5nKSA9PiBzdHJpbmc7XG4gIHpJbmRleEdldHRlcj8oKTogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBUaXBweUVsZW1lbnQgPSBFbGVtZW50UmVmIHwgRWxlbWVudDtcblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbmRlZFRpcHB5SW5zdGFuY2U8VD4gZXh0ZW5kcyBUaXBweUluc3RhbmNlIHtcbiAgdmlldzogUmVzb2x2ZVZpZXdSZWY8VD47XG4gICR2aWV3T3B0aW9uczogVmlld09wdGlvbnM7XG4gIGNvbnRleHQ/OiBWaWV3T3B0aW9uc1snY29udGV4dCddO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRpcHB5Q29uZmlnIGV4dGVuZHMgUGFydGlhbDxFeHRlbmRlZFRpcHB5UHJvcHM+IHtcbiAgbG9hZGVyOiAoKSA9PiB0eXBlb2YgdGlwcHkgfCBQcm9taXNlPHsgZGVmYXVsdDogdHlwZW9mIHRpcHB5IH0+O1xufVxuXG5leHBvcnQgY29uc3QgVElQUFlfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFRpcHB5Q29uZmlnPignVGlwcHkgY29uZmlnJyk7XG4iXX0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ25lYXQvaGVsaXBvcHBlci9zcmMvbGliL3RpcHB5LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBYyxjQUFjLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBVTdFLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBZ0IsV0FBVyxDQUFDLENBQUM7QUEyQnhFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBYyxjQUFjLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHRpcHB5IGZyb20gJ3RpcHB5LmpzJztcbmltcG9ydCB0eXBlIHsgSW5zdGFuY2UsIFByb3BzIH0gZnJvbSAndGlwcHkuanMnO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0aW9uVG9rZW4sIHR5cGUgSW5wdXRTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgUmVzb2x2ZVZpZXdSZWYsIFZpZXdPcHRpb25zIH0gZnJvbSAnQG5nbmVhdC9vdmVydmlldyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8VGlwcHlQcm9wcz4sIFZpZXdPcHRpb25zIHtcbiAgdmFyaWF0aW9uOiBzdHJpbmc7XG4gIHByZXNlcnZlVmlldzogYm9vbGVhbjtcbiAgY2xhc3NOYW1lOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgZGF0YTogYW55O1xufVxuXG5leHBvcnQgY29uc3QgVElQUFlfUkVGID0gbmV3IEluamVjdGlvblRva2VuPFRpcHB5SW5zdGFuY2U+KCdUSVBQWV9SRUYnKTtcblxuZXhwb3J0IGludGVyZmFjZSBUaXBweUluc3RhbmNlIGV4dGVuZHMgSW5zdGFuY2Uge1xuICBkYXRhPzogYW55O1xufVxuXG5leHBvcnQgdHlwZSBUaXBweVByb3BzID0gUHJvcHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5kZWRUaXBweVByb3BzIGV4dGVuZHMgVGlwcHlQcm9wcyB7XG4gIHZhcmlhdGlvbnM6IFJlY29yZDxzdHJpbmcsIFBhcnRpYWw8VGlwcHlQcm9wcz4+O1xuICBkZWZhdWx0VmFyaWF0aW9uOiBrZXlvZiBFeHRlbmRlZFRpcHB5UHJvcHNbJ3ZhcmlhdGlvbnMnXTtcbiAgYmVmb3JlUmVuZGVyPzogKHRleHQ6IHN0cmluZykgPT4gc3RyaW5nO1xuICB6SW5kZXhHZXR0ZXI/KCk6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgVGlwcHlFbGVtZW50ID0gRWxlbWVudFJlZiB8IEVsZW1lbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5kZWRUaXBweUluc3RhbmNlPFQ+IGV4dGVuZHMgVGlwcHlJbnN0YW5jZSB7XG4gIHZpZXc6IFJlc29sdmVWaWV3UmVmPFQ+IHwgbnVsbDtcbiAgJHZpZXdPcHRpb25zOiBWaWV3T3B0aW9ucztcbiAgY29udGV4dD86IFZpZXdPcHRpb25zWydjb250ZXh0J107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGlwcHlDb25maWcgZXh0ZW5kcyBQYXJ0aWFsPEV4dGVuZGVkVGlwcHlQcm9wcz4ge1xuICBsb2FkZXI6ICgpID0+IHR5cGVvZiB0aXBweSB8IFByb21pc2U8eyBkZWZhdWx0OiB0eXBlb2YgdGlwcHkgfT47XG59XG5cbmV4cG9ydCBjb25zdCBUSVBQWV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48VGlwcHlDb25maWc+KCdUaXBweSBjb25maWcnKTtcbiJdfQ==