@fundamental-ngx/cdk 0.44.0-rc.5 → 0.44.0-rc.7

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,6 +1,7 @@
1
1
  import { ContentChildren, Directive, EventEmitter, forwardRef, HostBinding, Input, Output, QueryList } from '@angular/core';
2
2
  import { merge, Subject } from 'rxjs';
3
3
  import { startWith, takeUntil, take } from 'rxjs/operators';
4
+ import { warnOnce } from '../../helpers';
4
5
  import { selectStrategy } from '../../async-strategy';
5
6
  import { DND_ITEM, DND_LIST } from '../tokens';
6
7
  import * as i0 from "@angular/core";
@@ -68,7 +69,7 @@ export class DndListDirective {
68
69
  * When enabled, the Replace Indicator will appear on a whole element, instead of horizontal/vertical line before/after an element.
69
70
  */
70
71
  set replaceMode(value) {
71
- console.warn('`replaceMode` input is deprecated. Use `dropMode` property instead.');
72
+ warnOnce('`replaceMode` input is deprecated. Use `dropMode` property instead.');
72
73
  this._replaceMode = value;
73
74
  this.dropMode = value ? 'group' : 'shift';
74
75
  this._detectedDropMode = this.dropMode;
@@ -389,4 +390,4 @@ function getElementBoundaries(coordinates, threshold) {
389
390
  }
390
391
  };
391
392
  }
392
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kcmFnLWFuZC1kcm9wL2RuZC1saXN0L2RuZC1saXN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsZUFBZSxFQUNmLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBa0IvQyxNQUFNLE9BQU8sZ0JBQWdCO0lBSjdCO1FBS0k7OztXQUdHO1FBRUgsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQjs7Ozs7Ozs7O1dBU0c7UUFFSCxhQUFRLEdBQWtCLE9BQU8sQ0FBQztRQUVsQzs7V0FFRztRQUVILGNBQVMsR0FBRyxHQUFHLENBQUM7UUFxQmhCLGNBQWM7UUFDTixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUU3QiwwQ0FBMEM7UUFFMUMsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQW9CckI7OztXQUdHO1FBRUgsNkJBQXdCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUV2RCxvREFBb0Q7UUFFM0MsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO1FBRXBELG9EQUFvRDtRQUUzQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBRTFELG1FQUFtRTtRQUUxRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFTbEQsY0FBYztRQUNOLHNCQUFpQixHQUFrQixJQUFJLENBQUM7UUFFaEQsY0FBYztRQUNOLHlCQUFvQixHQUE4QixJQUFJLENBQUM7UUFFL0Qsa0ZBQWtGO1FBQ2pFLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWpELGNBQWM7UUFDRyxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFLbkQsY0FBYztRQUNOLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFFMUIsY0FBYztRQUVHLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1FBSy9DLGNBQWM7UUFDTixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUU3QixjQUFjO1FBQ04sdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBS2xDLGNBQWM7UUFDTixnQkFBVyxHQUFHLEtBQUssQ0FBQztLQTJSL0I7SUFwWUc7Ozs7OztPQU1HO0lBQ0gsSUFDSSxXQUFXLENBQUMsS0FBYztRQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLHFFQUFxRSxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQzFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQVNELHdFQUF3RTtJQUN4RSxJQUNJLFNBQVMsQ0FBQyxTQUFrQjtRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQTRFRCxjQUFjO0lBQ2Qsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUNwSCxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELHlEQUF5RDtJQUN6RCxNQUFNLENBQUMsYUFBOEIsRUFBRSxnQkFBd0I7UUFDM0Qsd0RBQXdEO1FBQ3hELElBQUksZ0JBQWdCLEdBQWtCLElBQUksQ0FBQztRQUUzQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3JFLDBDQUEwQztZQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsSUFBSSxnQkFBZ0IsS0FBSyxLQUFLLEVBQUU7Z0JBQ3hELE1BQU0sZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLGdCQUFnQixFQUFFO29CQUNsQixnQkFBZ0IsR0FBRyxLQUFLLENBQUM7b0JBRXpCLE9BQU8sSUFBSSxDQUFDO2lCQUNmO2FBQ0o7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDakIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1NBQzNCO1FBRUQsdUhBQXVIO1FBQ3ZILElBQ0ksQ0FBQyxnQkFBZ0IsSUFBSSxnQkFBZ0IsS0FBSyxDQUFDLENBQUM7WUFDNUMsQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsRUFDM0U7WUFDRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO1lBQzFDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDakYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUN2RCx3RUFBd0U7WUFDeEUsSUFBSSxnQkFBZ0IsS0FBSyxnQkFBZ0IsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztnQkFDbkMsT0FBTzthQUNWO1lBQ0QsSUFDSSxJQUFJLENBQUMsaUJBQWlCO2dCQUN0QixJQUFJLENBQUMsWUFBWTtnQkFDakIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQ25HO2dCQUNFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQzlDLE9BQU87YUFDVjtZQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLDhFQUE4RTtZQUM5RSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO2dCQUMzQixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDeEQ7aUJBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFBRTtnQkFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7YUFDdkU7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO2FBQ3JGO1NBQ0o7SUFDTCxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELFNBQVMsQ0FBQyxLQUFhO1FBQ25CLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNwRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBYSxFQUFFLEVBQUUsQ0FDckUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDakcsQ0FBQztJQUNOLENBQUM7SUFFRCxnREFBZ0Q7SUFDaEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBd0I7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDOUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNqRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsT0FBTztTQUNWO1FBRUQsSUFBSSxpQkFBaUIsS0FBSyxJQUFJLElBQUksaUJBQWlCLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDeEQsT0FBTztTQUNWO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsRUFBRSxJQUFJLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFL0YsTUFBTSxhQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUU3QyxNQUFNLEdBQUcsR0FBbUI7WUFDeEIsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixLQUFLO1lBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDbkMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCO1NBQzFFLENBQUM7UUFFRixhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzdDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUVuQyxZQUFZO1lBQ1osSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzlCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFFakMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMxQixPQUFPO2FBQ1Y7WUFFRCxJQUFJLGdCQUFnQixLQUFLLGlCQUFpQixFQUFFO2dCQUN4QyxJQUFJLGdCQUFnQixHQUFHLGlCQUFpQixFQUFFO29CQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLGdCQUFnQixFQUFFLENBQUMsR0FBRyxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsRUFBRTt3QkFDdkQsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7cUJBQzNCO2lCQUNKO3FCQUFNO29CQUNILEtBQUssSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUN2RCxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztxQkFDM0I7aUJBQ0o7Z0JBRUQsc0JBQXNCO2dCQUN0QixLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxjQUFjLENBQUM7Z0JBRTFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2hDO1lBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFO1lBQ2xDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVyQyxNQUFNLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDOUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QyxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDTixnQkFBZ0IsQ0FBQyxTQUFpQjtRQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7SUFDTix3QkFBd0IsQ0FDNUIsZ0JBQXdCLEVBQ3hCLFdBQXFDLEVBQ3JDLGdCQUF3QjtRQUV4QixJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLEVBQUU7WUFDM0QsT0FBTztTQUNWO1FBRUQsSUFBSSxtQkFBc0MsQ0FBQztRQUMzQyxNQUFNLGdCQUFnQixHQUNsQixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFOUYsTUFBTSxxQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sc0JBQXNCLEdBQUcscUJBQXFCLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdGLElBQ0ksUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDOUYsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDaEc7WUFDRSxtQkFBbUIsR0FBRyxPQUFPLENBQUM7U0FDakM7YUFBTTtZQUNILG1CQUFtQixHQUFHLE9BQU8sQ0FBQztTQUNqQztRQUVELElBQUksbUJBQW1CLEtBQUssSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDckcsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLG1CQUFtQixDQUFDO1FBRTdDLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLE9BQU8sRUFBRTtZQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzVGO2FBQU07WUFDSCxJQUFJLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNsRDtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04sZUFBZTtRQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGNBQWM7SUFDTiwyQkFBMkI7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsY0FBYztJQUNOLFdBQVcsQ0FBQyxnQkFBd0IsRUFBRSxZQUEwQjtRQUNwRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELGNBQWM7SUFDTix1QkFBdUIsQ0FBQyxnQkFBd0I7UUFDcEQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQsY0FBYztJQUNOLGlCQUFpQjtRQUNyQixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVqRCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQXlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDNUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM5RSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM3RixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7O09BR0c7SUFDSyxTQUFTLENBQUMsY0FBMEIsRUFBRSxhQUF5QjtRQUNuRSx5RkFBeUY7UUFDekYsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBRTNCLDJDQUEyQztRQUMzQyxNQUFNLG1CQUFtQixHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNqRixNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUUvRSxJQUFJLG1CQUFtQixDQUFDLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLEdBQUcsZUFBZSxFQUFFO1lBQ3BFLDZFQUE2RTtZQUM3RSxPQUFPLElBQUksQ0FBQztTQUNmO2FBQU0sSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxHQUFHLGVBQWUsRUFBRTtZQUMzRSwyRUFBMkU7WUFDM0UsT0FBTyxLQUFLLENBQUM7U0FDaEI7YUFBTTtZQUNILDBGQUEwRjtZQUMxRixPQUFPLG1CQUFtQixDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDTixxQkFBcUIsQ0FBQyxTQUFrQjtRQUM1QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDOUIsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7OEdBOVpRLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLHNlQUZkLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLG1EQTZGbEUsUUFBUTs7MkZBM0ZoQixnQkFBZ0I7a0JBSjVCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztpQkFDdEY7OEJBT0csUUFBUTtzQkFEUCxLQUFLO2dCQWNOLFFBQVE7c0JBRFAsS0FBSztnQkFPTixTQUFTO3NCQURSLEtBQUs7Z0JBV0YsV0FBVztzQkFEZCxLQUFLO2dCQWlCTixLQUFLO3NCQURKLEtBQUs7Z0JBS0YsU0FBUztzQkFEWixLQUFLO2dCQVFOLGFBQWE7c0JBRFosS0FBSztnQkFRTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBUU4sd0JBQXdCO3NCQUR2QixNQUFNO2dCQUtFLFdBQVc7c0JBRG5CLE1BQU07Z0JBS0UsV0FBVztzQkFEbkIsTUFBTTtnQkFLRSxhQUFhO3NCQURyQixNQUFNO2dCQUtQLFFBQVE7c0JBRFAsZUFBZTt1QkFBQyxRQUFRO2dCQTBCUixhQUFhO3NCQUQ3QixXQUFXO3VCQUFDLE9BQU87O0FBNlN4QixTQUFTLGlCQUFpQixDQUFDLE9BQXFCLEVBQUUsYUFBOEI7SUFDNUUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN6QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFFdkMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN6QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFFeEMsT0FBTyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlGLENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxDQUFTLEVBQUUsR0FBVyxFQUFFLEdBQVc7SUFDakQsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDaEMsQ0FBQztBQWFELFNBQVMscUJBQXFCLENBQUMsSUFBYSxFQUFFLFFBQWtDO0lBQzVFLE9BQU87UUFDSCxDQUFDLEVBQUUsUUFBUSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxDQUFDLEVBQUUsUUFBUSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMxRCxDQUFDO0FBQ04sQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsV0FBeUIsRUFBRSxTQUFpQjtJQUN0RSxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsS0FBSyxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQ3BHLE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxXQUFXLEdBQUcsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQ2xFLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDckcsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLFlBQVksR0FBRyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDcEUsT0FBTztRQUNILENBQUMsRUFBRTtZQUNDLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU07WUFDcEMsR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUNyQztRQUNELENBQUMsRUFBRTtZQUNDLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU07WUFDcEMsR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUNyQztLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHNlbGVjdFN0cmF0ZWd5IH0gZnJvbSAnLi4vLi4vYXN5bmMtc3RyYXRlZ3knO1xuaW1wb3J0IHsgRWxlbWVudENob3JkLCBGZERyb3BFdmVudCwgTGlua1Bvc2l0aW9uLCBFbGVtZW50UG9zaXRpb24sIERuZEl0ZW0sIEZkRG5kRHJvcFR5cGUgfSBmcm9tICcuLi9kbmQuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBETkRfSVRFTSwgRE5EX0xJU1QgfSBmcm9tICcuLi90b2tlbnMnO1xuXG5leHBvcnQgdHlwZSBEcm9wUHJlZGljYXRlPFQ+ID0gKFxuICAgIGRyYWdJdGVtOiBULFxuICAgIGRyb3BJdGVtOiBULFxuICAgIGV2ZW50OiBGZERyb3BFdmVudDxUPlxuKSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG5leHBvcnQgdHlwZSBEcmFnb3ZlclByZWRpY2F0ZTxUPiA9IChcbiAgICBkcmFnSXRlbTogVCxcbiAgICBkcmFnT3Zlckl0ZW06IFQsXG4gICAgZHJhZ0l0ZW1JbmRleDogbnVtYmVyLFxuICAgIGRyYWdPdmVySXRlbUluZGV4OiBudW1iZXJcbikgPT4gYm9vbGVhbjtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrRG5kTGlzdF0sIFtmZC1kbmQtbGlzdF0nLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRE5EX0xJU1QsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERuZExpc3REaXJlY3RpdmUpIH1dXG59KVxuZXhwb3J0IGNsYXNzIERuZExpc3REaXJlY3RpdmU8VD4gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgaWYgdGhlIGVsZW1lbnQgaXMgYWxsb3dlZCB0byBiZSBkcmFnZ2VkIGluIDIgZGltZW5zaW9ucyxcbiAgICAgKiBXaGVuIHRydWUgLSByZXBsYWNlIGluZGljYXRvciB3aWxsIGJlIGRpc3BsYXllZCB2ZXJ0aWNhbGx5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBncmlkTW9kZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBkcm9wIHN0cmF0ZWd5OlxuICAgICAqICogYHNoaWZ0YCBtb2RlIHdpbGwgY3JlYXRlIGxpbmUgYWZ0ZXIgdGhlIGNsb3Nlc3QgZHJvcCBlbGVtZW50LlxuICAgICAqICogYGdyb3VwYCBtb2RlIHdpbGwgY3JlYXRlIHJlcGxhY2UgaW5kaWNhdG9yIG9uIGEgd2hvbGUgY2xvc2VzdCBkcm9wIGVsZW1lbnQuXG4gICAgICogKiBgYXV0b2AgbW9kZSB3aWxsIGNyZWF0ZSBhIGxpbmUgYWZ0ZXIgdGhlIGNsb3Nlc3QgZHJvcCBlbGVtZW50XG4gICAgICogaWYgZHJhZ2dlZCBlbGVtZW50IGNvb3JkaW5hdGVzIGFyZSBzaGlmdGVkIGZvciAzMCUgZnJvbSB0aGUgY2VudGVyIG9mIHRoZSBjbG9zZXN0IGRyb3AgZWxlbWVudC5cbiAgICAgKiBPdGhlcndpc2UsIGl0IHdpbGwgY3JlYXRlIHJlcGxhY2UgaW5kaWNhdG9yIG9uIGEgd2hvbGUgY2xvc2VzdCBkcm9wIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBgc2hpZnRgIG1vZGUgaXMgdGhlIGRlZmF1bHQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkcm9wTW9kZTogRmREbmREcm9wVHlwZSA9ICdzaGlmdCc7XG5cbiAgICAvKipcbiAgICAgKiBUaHJlc2hvbGQgb2YgZHJhZ2dlZCBpdGVtIG92ZXIgYW5vdGhlciBpdGVtIHRvIGRlZmluZSB3aGljaCB0eXBlIG9mIGBkcm9wTW9kZWAgc2hvdWxkIGJlIHVzZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0aHJlc2hvbGQgPSAwLjM7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIFVzZSBgZHJvcE1vZGVgIHByb3BlcnR5IGZvciBiZXR0ZXIgY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFdoZW4gZW5hYmxlZCwgdGhlIFJlcGxhY2UgSW5kaWNhdG9yIHdpbGwgYXBwZWFyIG9uIGEgd2hvbGUgZWxlbWVudCwgaW5zdGVhZCBvZiBob3Jpem9udGFsL3ZlcnRpY2FsIGxpbmUgYmVmb3JlL2FmdGVyIGFuIGVsZW1lbnQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgcmVwbGFjZU1vZGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdgcmVwbGFjZU1vZGVgIGlucHV0IGlzIGRlcHJlY2F0ZWQuIFVzZSBgZHJvcE1vZGVgIHByb3BlcnR5IGluc3RlYWQuJyk7XG4gICAgICAgIHRoaXMuX3JlcGxhY2VNb2RlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZHJvcE1vZGUgPSB2YWx1ZSA/ICdncm91cCcgOiAnc2hpZnQnO1xuICAgICAgICB0aGlzLl9kZXRlY3RlZERyb3BNb2RlID0gdGhpcy5kcm9wTW9kZTtcbiAgICB9XG5cbiAgICBnZXQgcmVwbGFjZU1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXBsYWNlTW9kZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlcGxhY2VNb2RlID0gZmFsc2U7XG5cbiAgICAvKiogQXJyYXkgb2YgaXRlbXMsIHRoYXQgd2lsbCBiZSBzb3J0ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIGl0ZW1zOiBBcnJheTxUPiA9IFtdO1xuXG4gICAgLyoqIERlZmluZXMgaWYgZHJhZyBhbmQgZHJvcCBmZWF0dXJlIHNob3VsZCBiZSBlbmFibGVkIGZvciBsaXN0IGl0ZW1zICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZHJhZ2dhYmxlKGRyYWdnYWJsZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kcmFnZ2FibGUgPSBkcmFnZ2FibGU7XG4gICAgICAgIHRoaXMuX2NoYW5nZURyYWdnYWJsZVN0YXRlKGRyYWdnYWJsZSk7XG4gICAgfVxuXG4gICAgLyoqIFByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IGNoZWNrcyB3aGV0aGVyIHRoZSBpdGVtIGNhbiBiZSBkcm9wcGVkIG92ZXIgYW5vdGhlciBpdGVtLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHJvcFByZWRpY2F0ZTogRHJvcFByZWRpY2F0ZTxUPiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIFByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IGNoZWNrcyB3aGV0aGVyIHRoZSBpdGVtIGNhbiBiZSBkcmFnZ2VkIG92ZXIgYW5vdGhlciBpdGVtLlxuICAgICAqIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGBmYWxzZWAsIGRyYWdnZWQgb3ZlciBpdGVtIHdpbGwgbm90IGJlIGhpZ2hsaWdodGVkLCBhbmQgZHJvcCBldmVudCB3aWxsIGJlIGNhbmNlbGVkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHJhZ292ZXJQcmVkaWNhdGU6IERyYWdvdmVyUHJlZGljYXRlPFQ+IHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGBkcm9wUHJlZGljYXRlYCBmdW5jdGlvbiBldmFsdWF0aW9uIGNoYW5nZXMuXG4gICAgICogRW1pdHMgYHRydWVgIHdoZW4gZXZhbHVhdGlvbiBzdGFydGVkLCBhbmQgYGZhbHNlYCB3aGVuIGNvbXBsZXRlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBkcm9wUHJlZGljYXRlQ2FsY3VsYXRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogRXZlbnQgdGhhdCBpcyB0aHJvd24gd2hlbiBpdGVtcyBhcmUgcmVvcmRlcmVkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgaXRlbXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PFQ+PigpO1xuXG4gICAgLyoqIEV2ZW50IHRoYXQgaXMgdGhyb3duIHdoZW4gdGhlIGl0ZW0gaXMgZHJvcHBlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGl0ZW1Ecm9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGZERyb3BFdmVudDxUPj4oKTtcblxuICAgIC8qKiBFdmVudCB0aGF0IGlzIHRocm93biB3aGVuIHByZWRpY2F0ZSBmdW5jdGlvbiByZXR1cm5lZCBmYWxzZS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBkcm9wQ2FuY2VsbGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKERORF9JVEVNKVxuICAgIGRuZEl0ZW1zOiBRdWVyeUxpc3Q8RG5kSXRlbTxUPj47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VsZW1lbnRzQ29vcmRpbmF0ZXM6IEVsZW1lbnRDaG9yZFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jbG9zZXN0SXRlbUluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2xvc2VzdEl0ZW1Qb3NpdGlvbjogJ2JlZm9yZScgfCAnYWZ0ZXInIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBjdXJyZW50IGRhdGEgc3RyZWFtIChmb3IgdW5zdWJzY3JpYmluZykgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVmcmVzaCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICAqL1xuICAgIHByaXZhdGUgX2RuZEl0ZW1SZWZlcmVuY2U6IERuZEl0ZW1bXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZHJhZ2dhYmxlID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaW5pdGlhbENsYXNzID0gJ2ZkLWRuZC1saXN0JztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGV0ZWN0ZWREcm9wTW9kZTogJ3NoaWZ0JyB8ICdncm91cCc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpbmVzUmVtb3ZlZCA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luZGljYXRvcnNSZW1vdmVkID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZHJhZ2dlZEl0ZW06IFQgfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lnbm9yZURyb3AgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGFuZ2VEcmFnZ2FibGVTdGF0ZSh0aGlzLl9kcmFnZ2FibGUpO1xuICAgICAgICB0aGlzLmRuZEl0ZW1zLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksIHN0YXJ0V2l0aCgwKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3JlZnJlc2hRdWVyeUxpc3QoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGNhbGxlZCB3aGVuIHRoZSBpdGVtIGlzIGJlaW5nIG1vdmVkIGJ5IDEgcHggKi9cbiAgICBvbk1vdmUobW91c2VQb3NpdGlvbjogRWxlbWVudFBvc2l0aW9uLCBkcmFnZ2VkSXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgLyoqIFRlbXBvcmFyeSBvYmplY3QsIHRvIHN0b3JlIGxvd2VzdCBkaXN0YW5jZSB2YWx1ZXMgKi9cbiAgICAgICAgbGV0IGNsb3Nlc3RJdGVtSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGNvbnN0IGNsb3Nlc3REbmRJdGVtID0gdGhpcy5fZWxlbWVudHNDb29yZGluYXRlcy5maW5kKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgLyoqIENoZWNrIGlmIGFuIGVsZW1lbnQgY2FuIGJlIHJlcGxhY2VkICovXG4gICAgICAgICAgICBpZiAoIWVsZW1lbnQuc3RpY2tUb1Bvc2l0aW9uICYmIGNsb3Nlc3RJdGVtSW5kZXggIT09IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNNb3VzZU9uRWxlbWVudCA9IF9pc01vdXNlT25FbGVtZW50KGVsZW1lbnQsIG1vdXNlUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIGlmIChpc01vdXNlT25FbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RJdGVtSW5kZXggPSBpbmRleDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghY2xvc2VzdERuZEl0ZW0pIHtcbiAgICAgICAgICAgIGNsb3Nlc3RJdGVtSW5kZXggPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqIElmIHRoZSBjbG9zZXN0IGVsZW1lbnQgaXMgZGlmZmVyZW50IGZyb20gdGhlIG9sZCBvbmUsIHRoZSBuZXcgb25lIGlzIHBpY2tlZC4gSXQgcHJldmVudHMgZnJvbSBwZXJmb3JtYW5jZSBpc3N1ZXMgKi9cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGNsb3Nlc3RJdGVtSW5kZXggfHwgY2xvc2VzdEl0ZW1JbmRleCA9PT0gMCkgJiZcbiAgICAgICAgICAgIChjbG9zZXN0SXRlbUluZGV4ICE9PSB0aGlzLl9jbG9zZXN0SXRlbUluZGV4IHx8IHRoaXMuZHJvcE1vZGUgPT09ICdhdXRvJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW1vdmVBbGxMaW5lcygpO1xuICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQWxsUmVwbGFjZUluZGljYXRvcnMoKTtcbiAgICAgICAgICAgIHRoaXMuX2Nsb3Nlc3RJdGVtSW5kZXggPSBjbG9zZXN0SXRlbUluZGV4O1xuICAgICAgICAgICAgdGhpcy5fY2xvc2VzdEl0ZW1Qb3NpdGlvbiA9IHRoaXMuX2VsZW1lbnRzQ29vcmRpbmF0ZXNbY2xvc2VzdEl0ZW1JbmRleF0ucG9zaXRpb247XG4gICAgICAgICAgICBjb25zdCBjbG9zZXN0SXRlbSA9IHRoaXMuaXRlbXNbdGhpcy5fY2xvc2VzdEl0ZW1JbmRleF07XG4gICAgICAgICAgICAvLyBJZiBjbG9zZXN0IGl0ZW0gaW5kZXggaXMgc2FtZSBhcyBkcmFnZ2VkIGl0ZW0sIGp1c3QgcmVtb3ZlIGluZGljYXRvcnNcbiAgICAgICAgICAgIGlmIChjbG9zZXN0SXRlbUluZGV4ID09PSBkcmFnZ2VkSXRlbUluZGV4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQWxsTGluZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVBbGxSZXBsYWNlSW5kaWNhdG9ycygpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdvdmVyUHJlZGljYXRlICYmXG4gICAgICAgICAgICAgICAgdGhpcy5fZHJhZ2dlZEl0ZW0gJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5kcmFnb3ZlclByZWRpY2F0ZSh0aGlzLl9kcmFnZ2VkSXRlbSwgY2xvc2VzdEl0ZW0sIGRyYWdnZWRJdGVtSW5kZXgsIHRoaXMuX2Nsb3Nlc3RJdGVtSW5kZXgpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pZ25vcmVEcm9wID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXREaXNhYmxlZEl0ZW0odGhpcy5fY2xvc2VzdEl0ZW1JbmRleCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fc2V0RGlzYWJsZWRJdGVtKC0xKTtcbiAgICAgICAgICAgIC8qKiBHZW5lcmF0aW5nIGxpbmUsIHRoYXQgc2hvd3Mgd2hlcmUgdGhlIGVsZW1lbnQgd2lsbCBiZSBwbGFjZWQsIG9uIGEgZHJvcCAqL1xuICAgICAgICAgICAgaWYgKHRoaXMuZHJvcE1vZGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVSZXBsYWNlSW5kaWNhdG9yKHRoaXMuX2Nsb3Nlc3RJdGVtSW5kZXgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyb3BNb2RlID09PSAnc2hpZnQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlTGluZSh0aGlzLl9jbG9zZXN0SXRlbUluZGV4LCB0aGlzLl9jbG9zZXN0SXRlbVBvc2l0aW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0RHJvcE1vZGVJbmRpY2F0b3IoZHJhZ2dlZEl0ZW1JbmRleCwgY2xvc2VzdERuZEl0ZW0sIGNsb3Nlc3RJdGVtSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCBjYWxsZWQgd2hlbiBhbiBlbGVtZW50IGlzIHN0YXJ0ZWQgdG8gYmUgZHJhZ2dlZCAqL1xuICAgIGRyYWdTdGFydChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRyYWdnZWRJdGVtRWxlbWVudCA9IHRoaXMuX2RuZEl0ZW1SZWZlcmVuY2VbaW5kZXhdLmVsZW1lbnRSZWY7XG4gICAgICAgIHRoaXMuX2RyYWdnZWRJdGVtID0gdGhpcy5pdGVtc1tpbmRleF07XG4gICAgICAgIC8qKiBDb3VudGluZyBhbGwgdGhlIGVsZW1lbnQncyBjaG9yZHMgKi9cbiAgICAgICAgdGhpcy5fZWxlbWVudHNDb29yZGluYXRlcyA9IHRoaXMuX2RuZEl0ZW1SZWZlcmVuY2UubWFwKChpdGVtOiBEbmRJdGVtKSA9PlxuICAgICAgICAgICAgaXRlbS5nZXRFbGVtZW50Q29vcmRpbmF0ZXModGhpcy5faXNCZWZvcmUoZHJhZ2dlZEl0ZW1FbGVtZW50LCBpdGVtLmVsZW1lbnRSZWYpLCB0aGlzLmdyaWRNb2RlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgY2FsbGVkIHdoZW4gYW4gZWxlbWVudCBpcyByZWxlYXNlZCAqL1xuICAgIGFzeW5jIGRyYWdFbmQoZHJhZ2dlZEl0ZW1JbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuX2RyYWdnZWRJdGVtID0gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbXMuc2xpY2UoKTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWRJdGVtSW5kZXggPSB0aGlzLl9jbG9zZXN0SXRlbUluZGV4O1xuICAgICAgICB0aGlzLl9zZXREaXNhYmxlZEl0ZW0oLTEpO1xuXG4gICAgICAgIGlmICh0aGlzLl9pZ25vcmVEcm9wKSB7XG4gICAgICAgICAgICB0aGlzLl9pZ25vcmVEcm9wID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVwbGFjZWRJdGVtSW5kZXggPT09IG51bGwgfHwgcmVwbGFjZWRJdGVtSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkcmFnZ2VkRG5kSXRlbSA9IHRoaXMuZG5kSXRlbXMuZ2V0KGRyYWdnZWRJdGVtSW5kZXgpPy5pdGVtID8/IGl0ZW1zW2RyYWdnZWRJdGVtSW5kZXhdO1xuICAgICAgICBjb25zdCByZXBsYWNlZERuZEl0ZW0gPSB0aGlzLmRuZEl0ZW1zLmdldChyZXBsYWNlZEl0ZW1JbmRleCk/Lml0ZW0gPz8gaXRlbXNbcmVwbGFjZWRJdGVtSW5kZXhdO1xuXG4gICAgICAgIGNvbnN0IHByZWRpY2F0ZVN1YmogPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgICAgIGNvbnN0IGV2dDogRmREcm9wRXZlbnQ8VD4gPSB7XG4gICAgICAgICAgICByZXBsYWNlZEl0ZW1JbmRleCxcbiAgICAgICAgICAgIGRyYWdnZWRJdGVtSW5kZXgsXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIGluc2VydEF0OiB0aGlzLl9jbG9zZXN0SXRlbVBvc2l0aW9uLFxuICAgICAgICAgICAgbW9kZTogdGhpcy5kcm9wTW9kZSAhPT0gJ2F1dG8nID8gdGhpcy5kcm9wTW9kZSA6IHRoaXMuX2RldGVjdGVkRHJvcE1vZGVcbiAgICAgICAgfTtcblxuICAgICAgICBwcmVkaWNhdGVTdWJqLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3JlbW92ZUFsbExpbmVzKCk7XG4gICAgICAgICAgICB0aGlzLl9yZW1vdmVBbGxSZXBsYWNlSW5kaWNhdG9ycygpO1xuXG4gICAgICAgICAgICAvKiogUmVzZXQgKi9cbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRzQ29vcmRpbmF0ZXMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX2Nsb3Nlc3RJdGVtSW5kZXggPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fY2xvc2VzdEl0ZW1Qb3NpdGlvbiA9IG51bGw7XG5cbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wQ2FuY2VsbGVkLmVtaXQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkcmFnZ2VkSXRlbUluZGV4ICE9PSByZXBsYWNlZEl0ZW1JbmRleCkge1xuICAgICAgICAgICAgICAgIGlmIChkcmFnZ2VkSXRlbUluZGV4IDwgcmVwbGFjZWRJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IGRyYWdnZWRJdGVtSW5kZXg7IGkgPCByZXBsYWNlZEl0ZW1JbmRleDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtc1tpXSA9IGl0ZW1zW2kgKyAxXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBkcmFnZ2VkSXRlbUluZGV4OyBpID4gcmVwbGFjZWRJdGVtSW5kZXg7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNbaV0gPSBpdGVtc1tpIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvKiogUmVwbGFjaW5nIGl0ZW1zICovXG4gICAgICAgICAgICAgICAgaXRlbXNbcmVwbGFjZWRJdGVtSW5kZXhdID0gZHJhZ2dlZERuZEl0ZW07XG5cbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQoaXRlbXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLml0ZW1Ecm9wcGVkLmVtaXQoZXZ0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZHJvcFByZWRpY2F0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3BQcmVkaWNhdGVDYWxjdWxhdGluZy5lbWl0KHRydWUpO1xuICAgICAgICAgICAgY29uc3Qgb2JqID0gdGhpcy5kcm9wUHJlZGljYXRlKGRyYWdnZWREbmRJdGVtLCByZXBsYWNlZERuZEl0ZW0sIGV2dCk7XG4gICAgICAgICAgICBjb25zdCBzdHJhdGVneSA9IHNlbGVjdFN0cmF0ZWd5KG9iaik7XG5cbiAgICAgICAgICAgIGF3YWl0IHN0cmF0ZWd5LmNyZWF0ZVN1YnNjcmlwdGlvbihvYmosIChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVTdWJqLm5leHQocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB0aGlzLmRyb3BQcmVkaWNhdGVDYWxjdWxhdGluZy5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJlZGljYXRlU3Viai5uZXh0KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXREaXNhYmxlZEl0ZW0oaXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kbmRJdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaXRlbS5zZXREaXNhYmxlZFN0YXRlKGluZGV4ID09PSBpdGVtSW5kZXgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlbGVjdERyb3BNb2RlSW5kaWNhdG9yKFxuICAgICAgICBkcmFnZ2VkSXRlbUluZGV4OiBudW1iZXIsXG4gICAgICAgIGNsb3Nlc3RJdGVtOiBFbGVtZW50Q2hvcmQgfCB1bmRlZmluZWQsXG4gICAgICAgIGNsb3Nlc3RJdGVtSW5kZXg6IG51bWJlclxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAoIWNsb3Nlc3RJdGVtIHx8ICF0aGlzLl9kbmRJdGVtUmVmZXJlbmNlW2RyYWdnZWRJdGVtSW5kZXhdKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbmV3RGV0ZWN0ZWREcm9wTW9kZTogJ3NoaWZ0JyB8ICdncm91cCc7XG4gICAgICAgIGNvbnN0IGRyYWdnZWRFbG1Db29yZHMgPVxuICAgICAgICAgICAgdGhpcy5fZG5kSXRlbVJlZmVyZW5jZVtkcmFnZ2VkSXRlbUluZGV4XS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgY29uc3QgY2xvc2VzdEl0ZW1Cb3VuZGFyaWVzID0gZ2V0RWxlbWVudEJvdW5kYXJpZXMoY2xvc2VzdEl0ZW0sIHRoaXMudGhyZXNob2xkKTtcbiAgICAgICAgY29uc3QgZHJhZ2dlZEl0ZW1TdGFydENvb3JkcyA9IGdldEVsZW1lbnRTdGFydENvb3JkcyhkcmFnZ2VkRWxtQ29vcmRzLCBjbG9zZXN0SXRlbS5wb3NpdGlvbik7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgX2JldHdlZW4oZHJhZ2dlZEl0ZW1TdGFydENvb3Jkcy54LCBjbG9zZXN0SXRlbUJvdW5kYXJpZXMueC5zdGFydCwgY2xvc2VzdEl0ZW1Cb3VuZGFyaWVzLnguZW5kKSAmJlxuICAgICAgICAgICAgX2JldHdlZW4oZHJhZ2dlZEl0ZW1TdGFydENvb3Jkcy55LCBjbG9zZXN0SXRlbUJvdW5kYXJpZXMueS5zdGFydCwgY2xvc2VzdEl0ZW1Cb3VuZGFyaWVzLnkuZW5kKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIG5ld0RldGVjdGVkRHJvcE1vZGUgPSAnZ3JvdXAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3RGV0ZWN0ZWREcm9wTW9kZSA9ICdzaGlmdCc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3RGV0ZWN0ZWREcm9wTW9kZSA9PT0gdGhpcy5fZGV0ZWN0ZWREcm9wTW9kZSAmJiAoIXRoaXMuX2xpbmVzUmVtb3ZlZCB8fCAhdGhpcy5faW5kaWNhdG9yc1JlbW92ZWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kZXRlY3RlZERyb3BNb2RlID0gbmV3RGV0ZWN0ZWREcm9wTW9kZTtcblxuICAgICAgICBpZiAodGhpcy5fZGV0ZWN0ZWREcm9wTW9kZSA9PT0gJ3NoaWZ0Jykge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlTGluZShjbG9zZXN0SXRlbUluZGV4LCB0aGlzLl9lbGVtZW50c0Nvb3JkaW5hdGVzW2Nsb3Nlc3RJdGVtSW5kZXhdLnBvc2l0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVJlcGxhY2VJbmRpY2F0b3IoY2xvc2VzdEl0ZW1JbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlbW92ZUFsbExpbmVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saW5lc1JlbW92ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmRuZEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0ucmVtb3ZlTGluZSgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlbW92ZUFsbFJlcGxhY2VJbmRpY2F0b3JzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbmRpY2F0b3JzUmVtb3ZlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZG5kSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5yZW1vdmVSZXBsYWNlSW5kaWNhdG9yKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3JlYXRlTGluZShjbG9zZXN0SXRlbUluZGV4OiBudW1iZXIsIGxpbmtQb3NpdGlvbjogTGlua1Bvc2l0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbW92ZUFsbExpbmVzKCk7XG4gICAgICAgIHRoaXMuX3JlbW92ZUFsbFJlcGxhY2VJbmRpY2F0b3JzKCk7XG4gICAgICAgIHRoaXMuX2xpbmVzUmVtb3ZlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9kbmRJdGVtUmVmZXJlbmNlW2Nsb3Nlc3RJdGVtSW5kZXhdLmNyZWF0ZUxpbmUobGlua1Bvc2l0aW9uLCB0aGlzLmdyaWRNb2RlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NyZWF0ZVJlcGxhY2VJbmRpY2F0b3IoY2xvc2VzdEl0ZW1JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbW92ZUFsbExpbmVzKCk7XG4gICAgICAgIHRoaXMuX3JlbW92ZUFsbFJlcGxhY2VJbmRpY2F0b3JzKCk7XG4gICAgICAgIHRoaXMuX2luZGljYXRvcnNSZW1vdmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2RuZEl0ZW1SZWZlcmVuY2VbY2xvc2VzdEl0ZW1JbmRleF0uY3JlYXRlUmVwbGFjZUluZGljYXRvcigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaFF1ZXJ5TGlzdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVmcmVzaCQgPSBtZXJnZSh0aGlzLl9yZWZyZXNoJCwgdGhpcy5fb25EZXN0cm95JCk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2gkLm5leHQoKTtcblxuICAgICAgICB0aGlzLl9kbmRJdGVtUmVmZXJlbmNlID0gdGhpcy5kbmRJdGVtcy50b0FycmF5KCk7XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRHJhZ2dhYmxlU3RhdGUodGhpcy5fZHJhZ2dhYmxlKTtcblxuICAgICAgICB0aGlzLmRuZEl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpdGVtLm1vdmVkLnBpcGUodGFrZVVudGlsKHJlZnJlc2gkKSkuc3Vic2NyaWJlKChwb3NpdGlvbjogRWxlbWVudFBvc2l0aW9uKSA9PiB0aGlzLm9uTW92ZShwb3NpdGlvbiwgaW5kZXgpKTtcbiAgICAgICAgICAgIGl0ZW0uc3RhcnRlZC5waXBlKHRha2VVbnRpbChyZWZyZXNoJCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmRyYWdTdGFydChpbmRleCkpO1xuICAgICAgICAgICAgaXRlbS5yZWxlYXNlZC5waXBlKHRha2VVbnRpbChyZWZyZXNoJCkpLnN1YnNjcmliZShhc3luYyAoKSA9PiBhd2FpdCB0aGlzLmRyYWdFbmQoaW5kZXgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIEBoaWRkZW5cbiAgICAgKiBSZXR1cm4gaW5mb3JtYXRpb24gaWYgYW4gZWxlbWVudCBpcyBwbGFjZWQgYmVmb3JlIHRoZSBkcmFnZ2VkIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9pc0JlZm9yZShkcmFnZ2VkRWxlbWVudDogRWxlbWVudFJlZiwgdGFyZ2V0RWxlbWVudDogRWxlbWVudFJlZik6IGJvb2xlYW4ge1xuICAgICAgICAvKiogU29tZXRpbWVzIHRoZSBlbGVtZW50cyBhcmUgbm90IHN0cmFpZ2h0IGluIG9uZSBjb2x1bW4sIHRoYXQncyB3aHkgb2Zmc2V0IGlzIG5lZWRlZCAqL1xuICAgICAgICBjb25zdCBWRVJUSUNBTF9PRkZTRVQgPSAyMDtcblxuICAgICAgICAvKiogRGlzdGFuY2VzIGZyb20gdGhlIHRvcCBvZiB0aGUgc2NyZWVuICovXG4gICAgICAgIGNvbnN0IGRyYWdnZWRFbGVtZW50Qm91bmQgPSBkcmFnZ2VkRWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50Qm91bmQgPSB0YXJnZXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKGRyYWdnZWRFbGVtZW50Qm91bmQudG9wIC0gdGFyZ2V0RWxlbWVudEJvdW5kLnRvcCA+IFZFUlRJQ0FMX09GRlNFVCkge1xuICAgICAgICAgICAgLyoqIElmIGFuIGVsZW1lbnQgaXMgaGlnaGVyIHRoYW4gdGhlIGRyYWdnZWQgZWxlbWVudCwgaXQncyBmb3Igc3VyZSBiZWZvcmUgKi9cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRhcmdldEVsZW1lbnRCb3VuZC50b3AgLSBkcmFnZ2VkRWxlbWVudEJvdW5kLnRvcCA+IFZFUlRJQ0FMX09GRlNFVCkge1xuICAgICAgICAgICAgLyoqIElmIGFuIGVsZW1lbnQgaXMgbG93ZXIgdGhhbiB0aGUgZHJhZ2dlZCBlbGVtZW50LCBpdCdzIGZvciBzdXJlIGFmdGVyICovXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKiogSWYgZWxlbWVudHMgYXJlIGluIHNhbWUgbGV2ZWwsIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGRlY2lkZXMgaWYgaXQncyBiZWZvcmUvYWZ0ZXIgKi9cbiAgICAgICAgICAgIHJldHVybiBkcmFnZ2VkRWxlbWVudEJvdW5kLmxlZnQgLSB0YXJnZXRFbGVtZW50Qm91bmQubGVmdCA+IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NoYW5nZURyYWdnYWJsZVN0YXRlKGRyYWdnYWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kbmRJdGVtcykge1xuICAgICAgICAgICAgdGhpcy5kbmRJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5saXN0RHJhZ2dhYmxlID0gZHJhZ2dhYmxlO1xuICAgICAgICAgICAgICAgIGl0ZW0uY2hhbmdlQ0RLRHJhZ1N0YXRlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gX2lzTW91c2VPbkVsZW1lbnQoZWxlbWVudDogRWxlbWVudENob3JkLCBtb3VzZVBvc2l0aW9uOiBFbGVtZW50UG9zaXRpb24pOiBib29sZWFuIHtcbiAgICBjb25zdCBzdGFydFggPSBlbGVtZW50Lng7XG4gICAgY29uc3QgZW5kWCA9IGVsZW1lbnQueCArIGVsZW1lbnQud2lkdGg7XG5cbiAgICBjb25zdCBzdGFydFkgPSBlbGVtZW50Lnk7XG4gICAgY29uc3QgZW5kWSA9IGVsZW1lbnQueSArIGVsZW1lbnQuaGVpZ2h0O1xuXG4gICAgcmV0dXJuIF9iZXR3ZWVuKG1vdXNlUG9zaXRpb24ueCwgc3RhcnRYLCBlbmRYKSAmJiBfYmV0d2Vlbihtb3VzZVBvc2l0aW9uLnksIHN0YXJ0WSwgZW5kWSk7XG59XG5cbmZ1bmN0aW9uIF9iZXR3ZWVuKHg6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHggPj0gbWluICYmIHggPD0gbWF4O1xufVxuXG5pbnRlcmZhY2UgRWxlbWVudEJvdW5kYXJpZXMge1xuICAgIHg6IHtcbiAgICAgICAgc3RhcnQ6IG51bWJlcjtcbiAgICAgICAgZW5kOiBudW1iZXI7XG4gICAgfTtcbiAgICB5OiB7XG4gICAgICAgIHN0YXJ0OiBudW1iZXI7XG4gICAgICAgIGVuZDogbnVtYmVyO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGdldEVsZW1lbnRTdGFydENvb3JkcyhyZWN0OiBET01SZWN0LCBwb3NpdGlvbjogRWxlbWVudENob3JkWydwb3NpdGlvbiddKTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiBwb3NpdGlvbiA9PT0gJ2FmdGVyJyA/IHJlY3QueCArIHJlY3Qud2lkdGggOiByZWN0LngsXG4gICAgICAgIHk6IHBvc2l0aW9uID09PSAnYWZ0ZXInID8gcmVjdC55ICsgcmVjdC5oZWlnaHQgOiByZWN0LnlcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBnZXRFbGVtZW50Qm91bmRhcmllcyhjb29yZGluYXRlczogRWxlbWVudENob3JkLCB0aHJlc2hvbGQ6IG51bWJlcik6IEVsZW1lbnRCb3VuZGFyaWVzIHtcbiAgICBjb25zdCB3aWR0aE9mZnNldCA9IGNvb3JkaW5hdGVzLndpZHRoICogKGNvb3JkaW5hdGVzLnBvc2l0aW9uID09PSAnYWZ0ZXInID8gMSA6IC0xKTtcbiAgICBjb25zdCBoZWlnaHRPZmZzZXQgPSBjb29yZGluYXRlcy5oZWlnaHQgKiAoY29vcmRpbmF0ZXMucG9zaXRpb24gPT09ICdhZnRlcicgPyAxIDogLTEpO1xuICAgIGNvbnN0IHhTdGFydCA9IGNvb3JkaW5hdGVzLnBvc2l0aW9uID09PSAnYWZ0ZXInID8gY29vcmRpbmF0ZXMueCA6IGNvb3JkaW5hdGVzLnggKyBjb29yZGluYXRlcy53aWR0aDtcbiAgICBjb25zdCB4RW5kID0geFN0YXJ0ICsgd2lkdGhPZmZzZXQgKyAod2lkdGhPZmZzZXQgLyAyKSAqIHRocmVzaG9sZDtcbiAgICBjb25zdCB5U3RhcnQgPSBjb29yZGluYXRlcy5wb3NpdGlvbiA9PT0gJ2FmdGVyJyA/IGNvb3JkaW5hdGVzLnkgOiBjb29yZGluYXRlcy55ICsgY29vcmRpbmF0ZXMuaGVpZ2h0O1xuICAgIGNvbnN0IHlFbmQgPSB5U3RhcnQgKyBoZWlnaHRPZmZzZXQgKyAoaGVpZ2h0T2Zmc2V0IC8gMikgKiB0aHJlc2hvbGQ7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDoge1xuICAgICAgICAgICAgc3RhcnQ6IHhTdGFydCA+IHhFbmQgPyB4RW5kIDogeFN0YXJ0LFxuICAgICAgICAgICAgZW5kOiB4U3RhcnQgPiB4RW5kID8geFN0YXJ0IDogeEVuZFxuICAgICAgICB9LFxuICAgICAgICB5OiB7XG4gICAgICAgICAgICBzdGFydDogeVN0YXJ0ID4geUVuZCA/IHlFbmQgOiB5U3RhcnQsXG4gICAgICAgICAgICBlbmQ6IHlTdGFydCA+IHlFbmQgPyB5U3RhcnQgOiB5RW5kXG4gICAgICAgIH1cbiAgICB9O1xufVxuIl19
393
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kcmFnLWFuZC1kcm9wL2RuZC1saXN0L2RuZC1saXN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsZUFBZSxFQUNmLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFrQi9DLE1BQU0sT0FBTyxnQkFBZ0I7SUFKN0I7UUFLSTs7O1dBR0c7UUFFSCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCOzs7Ozs7Ozs7V0FTRztRQUVILGFBQVEsR0FBa0IsT0FBTyxDQUFDO1FBRWxDOztXQUVHO1FBRUgsY0FBUyxHQUFHLEdBQUcsQ0FBQztRQXFCaEIsY0FBYztRQUNOLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRTdCLDBDQUEwQztRQUUxQyxVQUFLLEdBQWEsRUFBRSxDQUFDO1FBb0JyQjs7O1dBR0c7UUFFSCw2QkFBd0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRXZELG9EQUFvRDtRQUUzQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFFcEQsb0RBQW9EO1FBRTNDLGdCQUFXLEdB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QVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztJQUNwRyxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsV0FBVyxHQUFHLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUNsRSxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO0lBQ3JHLE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxZQUFZLEdBQUcsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQ3BFLE9BQU87UUFDSCxDQUFDLEVBQUU7WUFDQyxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQ3BDLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDckM7UUFDRCxDQUFDLEVBQUU7WUFDQyxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQ3BDLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDckM7S0FDSixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB3YXJuT25jZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgc2VsZWN0U3RyYXRlZ3kgfSBmcm9tICcuLi8uLi9hc3luYy1zdHJhdGVneSc7XG5pbXBvcnQgeyBFbGVtZW50Q2hvcmQsIEZkRHJvcEV2ZW50LCBMaW5rUG9zaXRpb24sIEVsZW1lbnRQb3NpdGlvbiwgRG5kSXRlbSwgRmREbmREcm9wVHlwZSB9IGZyb20gJy4uL2RuZC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IERORF9JVEVNLCBETkRfTElTVCB9IGZyb20gJy4uL3Rva2Vucyc7XG5cbmV4cG9ydCB0eXBlIERyb3BQcmVkaWNhdGU8VD4gPSAoXG4gICAgZHJhZ0l0ZW06IFQsXG4gICAgZHJvcEl0ZW06IFQsXG4gICAgZXZlbnQ6IEZkRHJvcEV2ZW50PFQ+XG4pID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcbmV4cG9ydCB0eXBlIERyYWdvdmVyUHJlZGljYXRlPFQ+ID0gKFxuICAgIGRyYWdJdGVtOiBULFxuICAgIGRyYWdPdmVySXRlbTogVCxcbiAgICBkcmFnSXRlbUluZGV4OiBudW1iZXIsXG4gICAgZHJhZ092ZXJJdGVtSW5kZXg6IG51bWJlclxuKSA9PiBib29sZWFuO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtEbmRMaXN0XSwgW2ZkLWRuZC1saXN0XScsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBETkRfTElTVCwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRG5kTGlzdERpcmVjdGl2ZSkgfV1cbn0pXG5leHBvcnQgY2xhc3MgRG5kTGlzdERpcmVjdGl2ZTxUPiBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBpZiB0aGUgZWxlbWVudCBpcyBhbGxvd2VkIHRvIGJlIGRyYWdnZWQgaW4gMiBkaW1lbnNpb25zLFxuICAgICAqIFdoZW4gdHJ1ZSAtIHJlcGxhY2UgaW5kaWNhdG9yIHdpbGwgYmUgZGlzcGxheWVkIHZlcnRpY2FsbHlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdyaWRNb2RlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGRyb3Agc3RyYXRlZ3k6XG4gICAgICogKiBgc2hpZnRgIG1vZGUgd2lsbCBjcmVhdGUgbGluZSBhZnRlciB0aGUgY2xvc2VzdCBkcm9wIGVsZW1lbnQuXG4gICAgICogKiBgZ3JvdXBgIG1vZGUgd2lsbCBjcmVhdGUgcmVwbGFjZSBpbmRpY2F0b3Igb24gYSB3aG9sZSBjbG9zZXN0IGRyb3AgZWxlbWVudC5cbiAgICAgKiAqIGBhdXRvYCBtb2RlIHdpbGwgY3JlYXRlIGEgbGluZSBhZnRlciB0aGUgY2xvc2VzdCBkcm9wIGVsZW1lbnRcbiAgICAgKiBpZiBkcmFnZ2VkIGVsZW1lbnQgY29vcmRpbmF0ZXMgYXJlIHNoaWZ0ZWQgZm9yIDMwJSBmcm9tIHRoZSBjZW50ZXIgb2YgdGhlIGNsb3Nlc3QgZHJvcCBlbGVtZW50LlxuICAgICAqIE90aGVyd2lzZSwgaXQgd2lsbCBjcmVhdGUgcmVwbGFjZSBpbmRpY2F0b3Igb24gYSB3aG9sZSBjbG9zZXN0IGRyb3AgZWxlbWVudC5cbiAgICAgKlxuICAgICAqIGBzaGlmdGAgbW9kZSBpcyB0aGUgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRyb3BNb2RlOiBGZERuZERyb3BUeXBlID0gJ3NoaWZ0JztcblxuICAgIC8qKlxuICAgICAqIFRocmVzaG9sZCBvZiBkcmFnZ2VkIGl0ZW0gb3ZlciBhbm90aGVyIGl0ZW0gdG8gZGVmaW5lIHdoaWNoIHR5cGUgb2YgYGRyb3BNb2RlYCBzaG91bGQgYmUgdXNlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRocmVzaG9sZCA9IDAuMztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogVXNlIGBkcm9wTW9kZWAgcHJvcGVydHkgZm9yIGJldHRlciBjb25maWd1cmF0aW9uLlxuICAgICAqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogV2hlbiBlbmFibGVkLCB0aGUgUmVwbGFjZSBJbmRpY2F0b3Igd2lsbCBhcHBlYXIgb24gYSB3aG9sZSBlbGVtZW50LCBpbnN0ZWFkIG9mIGhvcml6b250YWwvdmVydGljYWwgbGluZSBiZWZvcmUvYWZ0ZXIgYW4gZWxlbWVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCByZXBsYWNlTW9kZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB3YXJuT25jZSgnYHJlcGxhY2VNb2RlYCBpbnB1dCBpcyBkZXByZWNhdGVkLiBVc2UgYGRyb3BNb2RlYCBwcm9wZXJ0eSBpbnN0ZWFkLicpO1xuICAgICAgICB0aGlzLl9yZXBsYWNlTW9kZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmRyb3BNb2RlID0gdmFsdWUgPyAnZ3JvdXAnIDogJ3NoaWZ0JztcbiAgICAgICAgdGhpcy5fZGV0ZWN0ZWREcm9wTW9kZSA9IHRoaXMuZHJvcE1vZGU7XG4gICAgfVxuXG4gICAgZ2V0IHJlcGxhY2VNb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVwbGFjZU1vZGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXBsYWNlTW9kZSA9IGZhbHNlO1xuXG4gICAgLyoqIEFycmF5IG9mIGl0ZW1zLCB0aGF0IHdpbGwgYmUgc29ydGVkICovXG4gICAgQElucHV0KClcbiAgICBpdGVtczogQXJyYXk8VD4gPSBbXTtcblxuICAgIC8qKiBEZWZpbmVzIGlmIGRyYWcgYW5kIGRyb3AgZmVhdHVyZSBzaG91bGQgYmUgZW5hYmxlZCBmb3IgbGlzdCBpdGVtcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRyYWdnYWJsZShkcmFnZ2FibGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZHJhZ2dhYmxlID0gZHJhZ2dhYmxlO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEcmFnZ2FibGVTdGF0ZShkcmFnZ2FibGUpO1xuICAgIH1cblxuICAgIC8qKiBQcmVkaWNhdGUgZnVuY3Rpb24gdGhhdCBjaGVja3Mgd2hldGhlciB0aGUgaXRlbSBjYW4gYmUgZHJvcHBlZCBvdmVyIGFub3RoZXIgaXRlbS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRyb3BQcmVkaWNhdGU6IERyb3BQcmVkaWNhdGU8VD4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBQcmVkaWNhdGUgZnVuY3Rpb24gdGhhdCBjaGVja3Mgd2hldGhlciB0aGUgaXRlbSBjYW4gYmUgZHJhZ2dlZCBvdmVyIGFub3RoZXIgaXRlbS5cbiAgICAgKiBJZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBgZmFsc2VgLCBkcmFnZ2VkIG92ZXIgaXRlbSB3aWxsIG5vdCBiZSBoaWdobGlnaHRlZCwgYW5kIGRyb3AgZXZlbnQgd2lsbCBiZSBjYW5jZWxlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRyYWdvdmVyUHJlZGljYXRlOiBEcmFnb3ZlclByZWRpY2F0ZTxUPiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBgZHJvcFByZWRpY2F0ZWAgZnVuY3Rpb24gZXZhbHVhdGlvbiBjaGFuZ2VzLlxuICAgICAqIEVtaXRzIGB0cnVlYCB3aGVuIGV2YWx1YXRpb24gc3RhcnRlZCwgYW5kIGBmYWxzZWAgd2hlbiBjb21wbGV0ZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgZHJvcFByZWRpY2F0ZUNhbGN1bGF0aW5nID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEV2ZW50IHRoYXQgaXMgdGhyb3duIHdoZW4gaXRlbXMgYXJlIHJlb3JkZXJlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGl0ZW1zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxUPj4oKTtcblxuICAgIC8qKiBFdmVudCB0aGF0IGlzIHRocm93biB3aGVuIHRoZSBpdGVtIGlzIGRyb3BwZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBpdGVtRHJvcHBlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmREcm9wRXZlbnQ8VD4+KCk7XG5cbiAgICAvKiogRXZlbnQgdGhhdCBpcyB0aHJvd24gd2hlbiBwcmVkaWNhdGUgZnVuY3Rpb24gcmV0dXJuZWQgZmFsc2UuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgZHJvcENhbmNlbGxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihETkRfSVRFTSlcbiAgICBkbmRJdGVtczogUXVlcnlMaXN0PERuZEl0ZW08VD4+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9lbGVtZW50c0Nvb3JkaW5hdGVzOiBFbGVtZW50Q2hvcmRbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2xvc2VzdEl0ZW1JbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Nsb3Nlc3RJdGVtUG9zaXRpb246ICdiZWZvcmUnIHwgJ2FmdGVyJyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEFuIFJ4SlMgU3ViamVjdCB0aGF0IHdpbGwga2lsbCB0aGUgY3VycmVudCBkYXRhIHN0cmVhbSAoZm9yIHVuc3Vic2NyaWJpbmcpICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlZnJlc2gkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAgKi9cbiAgICBwcml2YXRlIF9kbmRJdGVtUmVmZXJlbmNlOiBEbmRJdGVtW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RyYWdnYWJsZSA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2luaXRpYWxDbGFzcyA9ICdmZC1kbmQtbGlzdCc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RldGVjdGVkRHJvcE1vZGU6ICdzaGlmdCcgfCAnZ3JvdXAnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saW5lc1JlbW92ZWQgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbmRpY2F0b3JzUmVtb3ZlZCA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RyYWdnZWRJdGVtOiBUIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pZ25vcmVEcm9wID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRHJhZ2dhYmxlU3RhdGUodGhpcy5fZHJhZ2dhYmxlKTtcbiAgICAgICAgdGhpcy5kbmRJdGVtcy5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLCBzdGFydFdpdGgoMCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9yZWZyZXNoUXVlcnlMaXN0KCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCBjYWxsZWQgd2hlbiB0aGUgaXRlbSBpcyBiZWluZyBtb3ZlZCBieSAxIHB4ICovXG4gICAgb25Nb3ZlKG1vdXNlUG9zaXRpb246IEVsZW1lbnRQb3NpdGlvbiwgZHJhZ2dlZEl0ZW1JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIC8qKiBUZW1wb3Jhcnkgb2JqZWN0LCB0byBzdG9yZSBsb3dlc3QgZGlzdGFuY2UgdmFsdWVzICovXG4gICAgICAgIGxldCBjbG9zZXN0SXRlbUluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgICBjb25zdCBjbG9zZXN0RG5kSXRlbSA9IHRoaXMuX2VsZW1lbnRzQ29vcmRpbmF0ZXMuZmluZCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIC8qKiBDaGVjayBpZiBhbiBlbGVtZW50IGNhbiBiZSByZXBsYWNlZCAqL1xuICAgICAgICAgICAgaWYgKCFlbGVtZW50LnN0aWNrVG9Qb3NpdGlvbiAmJiBjbG9zZXN0SXRlbUluZGV4ICE9PSBpbmRleCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzTW91c2VPbkVsZW1lbnQgPSBfaXNNb3VzZU9uRWxlbWVudChlbGVtZW50LCBtb3VzZVBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNNb3VzZU9uRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0SXRlbUluZGV4ID0gaW5kZXg7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWNsb3Nlc3REbmRJdGVtKSB7XG4gICAgICAgICAgICBjbG9zZXN0SXRlbUluZGV4ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKiBJZiB0aGUgY2xvc2VzdCBlbGVtZW50IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvbGQgb25lLCB0aGUgbmV3IG9uZSBpcyBwaWNrZWQuIEl0IHByZXZlbnRzIGZyb20gcGVyZm9ybWFuY2UgaXNzdWVzICovXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIChjbG9zZXN0SXRlbUluZGV4IHx8IGNsb3Nlc3RJdGVtSW5kZXggPT09IDApICYmXG4gICAgICAgICAgICAoY2xvc2VzdEl0ZW1JbmRleCAhPT0gdGhpcy5fY2xvc2VzdEl0ZW1JbmRleCB8fCB0aGlzLmRyb3BNb2RlID09PSAnYXV0bycpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQWxsTGluZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3JlbW92ZUFsbFJlcGxhY2VJbmRpY2F0b3JzKCk7XG4gICAgICAgICAgICB0aGlzLl9jbG9zZXN0SXRlbUluZGV4ID0gY2xvc2VzdEl0ZW1JbmRleDtcbiAgICAgICAgICAgIHRoaXMuX2Nsb3Nlc3RJdGVtUG9zaXRpb24gPSB0aGlzLl9lbGVtZW50c0Nvb3JkaW5hdGVzW2Nsb3Nlc3RJdGVtSW5kZXhdLnBvc2l0aW9uO1xuICAgICAgICAgICAgY29uc3QgY2xvc2VzdEl0ZW0gPSB0aGlzLml0ZW1zW3RoaXMuX2Nsb3Nlc3RJdGVtSW5kZXhdO1xuICAgICAgICAgICAgLy8gSWYgY2xvc2VzdCBpdGVtIGluZGV4IGlzIHNhbWUgYXMgZHJhZ2dlZCBpdGVtLCBqdXN0IHJlbW92ZSBpbmRpY2F0b3JzXG4gICAgICAgICAgICBpZiAoY2xvc2VzdEl0ZW1JbmRleCA9PT0gZHJhZ2dlZEl0ZW1JbmRleCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUFsbExpbmVzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQWxsUmVwbGFjZUluZGljYXRvcnMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnb3ZlclByZWRpY2F0ZSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX2RyYWdnZWRJdGVtICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuZHJhZ292ZXJQcmVkaWNhdGUodGhpcy5fZHJhZ2dlZEl0ZW0sIGNsb3Nlc3RJdGVtLCBkcmFnZ2VkSXRlbUluZGV4LCB0aGlzLl9jbG9zZXN0SXRlbUluZGV4KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faWdub3JlRHJvcCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0RGlzYWJsZWRJdGVtKHRoaXMuX2Nsb3Nlc3RJdGVtSW5kZXgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3NldERpc2FibGVkSXRlbSgtMSk7XG4gICAgICAgICAgICAvKiogR2VuZXJhdGluZyBsaW5lLCB0aGF0IHNob3dzIHdoZXJlIHRoZSBlbGVtZW50IHdpbGwgYmUgcGxhY2VkLCBvbiBhIGRyb3AgKi9cbiAgICAgICAgICAgIGlmICh0aGlzLmRyb3BNb2RlID09PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlUmVwbGFjZUluZGljYXRvcih0aGlzLl9jbG9zZXN0SXRlbUluZGV4KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kcm9wTW9kZSA9PT0gJ3NoaWZ0Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUxpbmUodGhpcy5fY2xvc2VzdEl0ZW1JbmRleCwgdGhpcy5fY2xvc2VzdEl0ZW1Qb3NpdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdERyb3BNb2RlSW5kaWNhdG9yKGRyYWdnZWRJdGVtSW5kZXgsIGNsb3Nlc3REbmRJdGVtLCBjbG9zZXN0SXRlbUluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgY2FsbGVkIHdoZW4gYW4gZWxlbWVudCBpcyBzdGFydGVkIHRvIGJlIGRyYWdnZWQgKi9cbiAgICBkcmFnU3RhcnQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBkcmFnZ2VkSXRlbUVsZW1lbnQgPSB0aGlzLl9kbmRJdGVtUmVmZXJlbmNlW2luZGV4XS5lbGVtZW50UmVmO1xuICAgICAgICB0aGlzLl9kcmFnZ2VkSXRlbSA9IHRoaXMuaXRlbXNbaW5kZXhdO1xuICAgICAgICAvKiogQ291bnRpbmcgYWxsIHRoZSBlbGVtZW50J3MgY2hvcmRzICovXG4gICAgICAgIHRoaXMuX2VsZW1lbnRzQ29vcmRpbmF0ZXMgPSB0aGlzLl9kbmRJdGVtUmVmZXJlbmNlLm1hcCgoaXRlbTogRG5kSXRlbSkgPT5cbiAgICAgICAgICAgIGl0ZW0uZ2V0RWxlbWVudENvb3JkaW5hdGVzKHRoaXMuX2lzQmVmb3JlKGRyYWdnZWRJdGVtRWxlbWVudCwgaXRlbS5lbGVtZW50UmVmKSwgdGhpcy5ncmlkTW9kZSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGNhbGxlZCB3aGVuIGFuIGVsZW1lbnQgaXMgcmVsZWFzZWQgKi9cbiAgICBhc3luYyBkcmFnRW5kKGRyYWdnZWRJdGVtSW5kZXg6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl9kcmFnZ2VkSXRlbSA9IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zLnNsaWNlKCk7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkSXRlbUluZGV4ID0gdGhpcy5fY2xvc2VzdEl0ZW1JbmRleDtcbiAgICAgICAgdGhpcy5fc2V0RGlzYWJsZWRJdGVtKC0xKTtcblxuICAgICAgICBpZiAodGhpcy5faWdub3JlRHJvcCkge1xuICAgICAgICAgICAgdGhpcy5faWdub3JlRHJvcCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcGxhY2VkSXRlbUluZGV4ID09PSBudWxsIHx8IHJlcGxhY2VkSXRlbUluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZHJhZ2dlZERuZEl0ZW0gPSB0aGlzLmRuZEl0ZW1zLmdldChkcmFnZ2VkSXRlbUluZGV4KT8uaXRlbSA/PyBpdGVtc1tkcmFnZ2VkSXRlbUluZGV4XTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWREbmRJdGVtID0gdGhpcy5kbmRJdGVtcy5nZXQocmVwbGFjZWRJdGVtSW5kZXgpPy5pdGVtID8/IGl0ZW1zW3JlcGxhY2VkSXRlbUluZGV4XTtcblxuICAgICAgICBjb25zdCBwcmVkaWNhdGVTdWJqID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgICAgICBjb25zdCBldnQ6IEZkRHJvcEV2ZW50PFQ+ID0ge1xuICAgICAgICAgICAgcmVwbGFjZWRJdGVtSW5kZXgsXG4gICAgICAgICAgICBkcmFnZ2VkSXRlbUluZGV4LFxuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICBpbnNlcnRBdDogdGhpcy5fY2xvc2VzdEl0ZW1Qb3NpdGlvbixcbiAgICAgICAgICAgIG1vZGU6IHRoaXMuZHJvcE1vZGUgIT09ICdhdXRvJyA/IHRoaXMuZHJvcE1vZGUgOiB0aGlzLl9kZXRlY3RlZERyb3BNb2RlXG4gICAgICAgIH07XG5cbiAgICAgICAgcHJlZGljYXRlU3Viai5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9yZW1vdmVBbGxMaW5lcygpO1xuICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQWxsUmVwbGFjZUluZGljYXRvcnMoKTtcblxuICAgICAgICAgICAgLyoqIFJlc2V0ICovXG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50c0Nvb3JkaW5hdGVzID0gW107XG4gICAgICAgICAgICB0aGlzLl9jbG9zZXN0SXRlbUluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX2Nsb3Nlc3RJdGVtUG9zaXRpb24gPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcENhbmNlbGxlZC5lbWl0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZHJhZ2dlZEl0ZW1JbmRleCAhPT0gcmVwbGFjZWRJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBpZiAoZHJhZ2dlZEl0ZW1JbmRleCA8IHJlcGxhY2VkSXRlbUluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBkcmFnZ2VkSXRlbUluZGV4OyBpIDwgcmVwbGFjZWRJdGVtSW5kZXg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNbaV0gPSBpdGVtc1tpICsgMV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gZHJhZ2dlZEl0ZW1JbmRleDsgaSA+IHJlcGxhY2VkSXRlbUluZGV4OyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zW2ldID0gaXRlbXNbaSAtIDFdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLyoqIFJlcGxhY2luZyBpdGVtcyAqL1xuICAgICAgICAgICAgICAgIGl0ZW1zW3JlcGxhY2VkSXRlbUluZGV4XSA9IGRyYWdnZWREbmRJdGVtO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtc0NoYW5nZS5lbWl0KGl0ZW1zKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pdGVtRHJvcHBlZC5lbWl0KGV2dCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmRyb3BQcmVkaWNhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5kcm9wUHJlZGljYXRlQ2FsY3VsYXRpbmcuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgIGNvbnN0IG9iaiA9IHRoaXMuZHJvcFByZWRpY2F0ZShkcmFnZ2VkRG5kSXRlbSwgcmVwbGFjZWREbmRJdGVtLCBldnQpO1xuICAgICAgICAgICAgY29uc3Qgc3RyYXRlZ3kgPSBzZWxlY3RTdHJhdGVneShvYmopO1xuXG4gICAgICAgICAgICBhd2FpdCBzdHJhdGVneS5jcmVhdGVTdWJzY3JpcHRpb24ob2JqLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgcHJlZGljYXRlU3Viai5uZXh0KHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wUHJlZGljYXRlQ2FsY3VsYXRpbmcuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByZWRpY2F0ZVN1YmoubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0RGlzYWJsZWRJdGVtKGl0ZW1JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZG5kSXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGl0ZW0uc2V0RGlzYWJsZWRTdGF0ZShpbmRleCA9PT0gaXRlbUluZGV4KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWxlY3REcm9wTW9kZUluZGljYXRvcihcbiAgICAgICAgZHJhZ2dlZEl0ZW1JbmRleDogbnVtYmVyLFxuICAgICAgICBjbG9zZXN0SXRlbTogRWxlbWVudENob3JkIHwgdW5kZWZpbmVkLFxuICAgICAgICBjbG9zZXN0SXRlbUluZGV4OiBudW1iZXJcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjbG9zZXN0SXRlbSB8fCAhdGhpcy5fZG5kSXRlbVJlZmVyZW5jZVtkcmFnZ2VkSXRlbUluZGV4XSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5ld0RldGVjdGVkRHJvcE1vZGU6ICdzaGlmdCcgfCAnZ3JvdXAnO1xuICAgICAgICBjb25zdCBkcmFnZ2VkRWxtQ29vcmRzID1cbiAgICAgICAgICAgIHRoaXMuX2RuZEl0ZW1SZWZlcmVuY2VbZHJhZ2dlZEl0ZW1JbmRleF0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGNvbnN0IGNsb3Nlc3RJdGVtQm91bmRhcmllcyA9IGdldEVsZW1lbnRCb3VuZGFyaWVzKGNsb3Nlc3RJdGVtLCB0aGlzLnRocmVzaG9sZCk7XG4gICAgICAgIGNvbnN0IGRyYWdnZWRJdGVtU3RhcnRDb29yZHMgPSBnZXRFbGVtZW50U3RhcnRDb29yZHMoZHJhZ2dlZEVsbUNvb3JkcywgY2xvc2VzdEl0ZW0ucG9zaXRpb24pO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIF9iZXR3ZWVuKGRyYWdnZWRJdGVtU3RhcnRDb29yZHMueCwgY2xvc2VzdEl0ZW1Cb3VuZGFyaWVzLnguc3RhcnQsIGNsb3Nlc3RJdGVtQm91bmRhcmllcy54LmVuZCkgJiZcbiAgICAgICAgICAgIF9iZXR3ZWVuKGRyYWdnZWRJdGVtU3RhcnRDb29yZHMueSwgY2xvc2VzdEl0ZW1Cb3VuZGFyaWVzLnkuc3RhcnQsIGNsb3Nlc3RJdGVtQm91bmRhcmllcy55LmVuZClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBuZXdEZXRlY3RlZERyb3BNb2RlID0gJ2dyb3VwJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0RldGVjdGVkRHJvcE1vZGUgPSAnc2hpZnQnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld0RldGVjdGVkRHJvcE1vZGUgPT09IHRoaXMuX2RldGVjdGVkRHJvcE1vZGUgJiYgKCF0aGlzLl9saW5lc1JlbW92ZWQgfHwgIXRoaXMuX2luZGljYXRvcnNSZW1vdmVkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZGV0ZWN0ZWREcm9wTW9kZSA9IG5ld0RldGVjdGVkRHJvcE1vZGU7XG5cbiAgICAgICAgaWYgKHRoaXMuX2RldGVjdGVkRHJvcE1vZGUgPT09ICdzaGlmdCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUxpbmUoY2xvc2VzdEl0ZW1JbmRleCwgdGhpcy5fZWxlbWVudHNDb29yZGluYXRlc1tjbG9zZXN0SXRlbUluZGV4XS5wb3NpdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVSZXBsYWNlSW5kaWNhdG9yKGNsb3Nlc3RJdGVtSW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZW1vdmVBbGxMaW5lcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGluZXNSZW1vdmVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kbmRJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiBpdGVtLnJlbW92ZUxpbmUoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZW1vdmVBbGxSZXBsYWNlSW5kaWNhdG9ycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5kaWNhdG9yc1JlbW92ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmRuZEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0ucmVtb3ZlUmVwbGFjZUluZGljYXRvcigpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NyZWF0ZUxpbmUoY2xvc2VzdEl0ZW1JbmRleDogbnVtYmVyLCBsaW5rUG9zaXRpb246IExpbmtQb3NpdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVBbGxMaW5lcygpO1xuICAgICAgICB0aGlzLl9yZW1vdmVBbGxSZXBsYWNlSW5kaWNhdG9ycygpO1xuICAgICAgICB0aGlzLl9saW5lc1JlbW92ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fZG5kSXRlbVJlZmVyZW5jZVtjbG9zZXN0SXRlbUluZGV4XS5jcmVhdGVMaW5lKGxpbmtQb3NpdGlvbiwgdGhpcy5ncmlkTW9kZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jcmVhdGVSZXBsYWNlSW5kaWNhdG9yKGNsb3Nlc3RJdGVtSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVBbGxMaW5lcygpO1xuICAgICAgICB0aGlzLl9yZW1vdmVBbGxSZXBsYWNlSW5kaWNhdG9ycygpO1xuICAgICAgICB0aGlzLl9pbmRpY2F0b3JzUmVtb3ZlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9kbmRJdGVtUmVmZXJlbmNlW2Nsb3Nlc3RJdGVtSW5kZXhdLmNyZWF0ZVJlcGxhY2VJbmRpY2F0b3IoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hRdWVyeUxpc3QoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZnJlc2gkID0gbWVyZ2UodGhpcy5fcmVmcmVzaCQsIHRoaXMuX29uRGVzdHJveSQpO1xuICAgICAgICB0aGlzLl9yZWZyZXNoJC5uZXh0KCk7XG5cbiAgICAgICAgdGhpcy5fZG5kSXRlbVJlZmVyZW5jZSA9IHRoaXMuZG5kSXRlbXMudG9BcnJheSgpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5nZURyYWdnYWJsZVN0YXRlKHRoaXMuX2RyYWdnYWJsZSk7XG5cbiAgICAgICAgdGhpcy5kbmRJdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaXRlbS5tb3ZlZC5waXBlKHRha2VVbnRpbChyZWZyZXNoJCkpLnN1YnNjcmliZSgocG9zaXRpb246IEVsZW1lbnRQb3NpdGlvbikgPT4gdGhpcy5vbk1vdmUocG9zaXRpb24sIGluZGV4KSk7XG4gICAgICAgICAgICBpdGVtLnN0YXJ0ZWQucGlwZSh0YWtlVW50aWwocmVmcmVzaCQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5kcmFnU3RhcnQoaW5kZXgpKTtcbiAgICAgICAgICAgIGl0ZW0ucmVsZWFzZWQucGlwZSh0YWtlVW50aWwocmVmcmVzaCQpKS5zdWJzY3JpYmUoYXN5bmMgKCkgPT4gYXdhaXQgdGhpcy5kcmFnRW5kKGluZGV4KSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBAaGlkZGVuXG4gICAgICogUmV0dXJuIGluZm9ybWF0aW9uIGlmIGFuIGVsZW1lbnQgaXMgcGxhY2VkIGJlZm9yZSB0aGUgZHJhZ2dlZCBlbGVtZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBfaXNCZWZvcmUoZHJhZ2dlZEVsZW1lbnQ6IEVsZW1lbnRSZWYsIHRhcmdldEVsZW1lbnQ6IEVsZW1lbnRSZWYpOiBib29sZWFuIHtcbiAgICAgICAgLyoqIFNvbWV0aW1lcyB0aGUgZWxlbWVudHMgYXJlIG5vdCBzdHJhaWdodCBpbiBvbmUgY29sdW1uLCB0aGF0J3Mgd2h5IG9mZnNldCBpcyBuZWVkZWQgKi9cbiAgICAgICAgY29uc3QgVkVSVElDQUxfT0ZGU0VUID0gMjA7XG5cbiAgICAgICAgLyoqIERpc3RhbmNlcyBmcm9tIHRoZSB0b3Agb2YgdGhlIHNjcmVlbiAqL1xuICAgICAgICBjb25zdCBkcmFnZ2VkRWxlbWVudEJvdW5kID0gZHJhZ2dlZEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudEJvdW5kID0gdGFyZ2V0RWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGlmIChkcmFnZ2VkRWxlbWVudEJvdW5kLnRvcCAtIHRhcmdldEVsZW1lbnRCb3VuZC50b3AgPiBWRVJUSUNBTF9PRkZTRVQpIHtcbiAgICAgICAgICAgIC8qKiBJZiBhbiBlbGVtZW50IGlzIGhpZ2hlciB0aGFuIHRoZSBkcmFnZ2VkIGVsZW1lbnQsIGl0J3MgZm9yIHN1cmUgYmVmb3JlICovXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0YXJnZXRFbGVtZW50Qm91bmQudG9wIC0gZHJhZ2dlZEVsZW1lbnRCb3VuZC50b3AgPiBWRVJUSUNBTF9PRkZTRVQpIHtcbiAgICAgICAgICAgIC8qKiBJZiBhbiBlbGVtZW50IGlzIGxvd2VyIHRoYW4gdGhlIGRyYWdnZWQgZWxlbWVudCwgaXQncyBmb3Igc3VyZSBhZnRlciAqL1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLyoqIElmIGVsZW1lbnRzIGFyZSBpbiBzYW1lIGxldmVsLCB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBkZWNpZGVzIGlmIGl0J3MgYmVmb3JlL2FmdGVyICovXG4gICAgICAgICAgICByZXR1cm4gZHJhZ2dlZEVsZW1lbnRCb3VuZC5sZWZ0IC0gdGFyZ2V0RWxlbWVudEJvdW5kLmxlZnQgPiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jaGFuZ2VEcmFnZ2FibGVTdGF0ZShkcmFnZ2FibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZG5kSXRlbXMpIHtcbiAgICAgICAgICAgIHRoaXMuZG5kSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0ubGlzdERyYWdnYWJsZSA9IGRyYWdnYWJsZTtcbiAgICAgICAgICAgICAgICBpdGVtLmNoYW5nZUNES0RyYWdTdGF0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIF9pc01vdXNlT25FbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnRDaG9yZCwgbW91c2VQb3NpdGlvbjogRWxlbWVudFBvc2l0aW9uKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RhcnRYID0gZWxlbWVudC54O1xuICAgIGNvbnN0IGVuZFggPSBlbGVtZW50LnggKyBlbGVtZW50LndpZHRoO1xuXG4gICAgY29uc3Qgc3RhcnRZID0gZWxlbWVudC55O1xuICAgIGNvbnN0IGVuZFkgPSBlbGVtZW50LnkgKyBlbGVtZW50LmhlaWdodDtcblxuICAgIHJldHVybiBfYmV0d2Vlbihtb3VzZVBvc2l0aW9uLngsIHN0YXJ0WCwgZW5kWCkgJiYgX2JldHdlZW4obW91c2VQb3NpdGlvbi55LCBzdGFydFksIGVuZFkpO1xufVxuXG5mdW5jdGlvbiBfYmV0d2Vlbih4OiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB4ID49IG1pbiAmJiB4IDw9IG1heDtcbn1cblxuaW50ZXJmYWNlIEVsZW1lbnRCb3VuZGFyaWVzIHtcbiAgICB4OiB7XG4gICAgICAgIHN0YXJ0OiBudW1iZXI7XG4gICAgICAgIGVuZDogbnVtYmVyO1xuICAgIH07XG4gICAgeToge1xuICAgICAgICBzdGFydDogbnVtYmVyO1xuICAgICAgICBlbmQ6IG51bWJlcjtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBnZXRFbGVtZW50U3RhcnRDb29yZHMocmVjdDogRE9NUmVjdCwgcG9zaXRpb246IEVsZW1lbnRDaG9yZFsncG9zaXRpb24nXSk6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogcG9zaXRpb24gPT09ICdhZnRlcicgPyByZWN0LnggKyByZWN0LndpZHRoIDogcmVjdC54LFxuICAgICAgICB5OiBwb3NpdGlvbiA9PT0gJ2FmdGVyJyA/IHJlY3QueSArIHJlY3QuaGVpZ2h0IDogcmVjdC55XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RWxlbWVudEJvdW5kYXJpZXMoY29vcmRpbmF0ZXM6IEVsZW1lbnRDaG9yZCwgdGhyZXNob2xkOiBudW1iZXIpOiBFbGVtZW50Qm91bmRhcmllcyB7XG4gICAgY29uc3Qgd2lkdGhPZmZzZXQgPSBjb29yZGluYXRlcy53aWR0aCAqIChjb29yZGluYXRlcy5wb3NpdGlvbiA9PT0gJ2FmdGVyJyA/IDEgOiAtMSk7XG4gICAgY29uc3QgaGVpZ2h0T2Zmc2V0ID0gY29vcmRpbmF0ZXMuaGVpZ2h0ICogKGNvb3JkaW5hdGVzLnBvc2l0aW9uID09PSAnYWZ0ZXInID8gMSA6IC0xKTtcbiAgICBjb25zdCB4U3RhcnQgPSBjb29yZGluYXRlcy5wb3NpdGlvbiA9PT0gJ2FmdGVyJyA/IGNvb3JkaW5hdGVzLnggOiBjb29yZGluYXRlcy54ICsgY29vcmRpbmF0ZXMud2lkdGg7XG4gICAgY29uc3QgeEVuZCA9IHhTdGFydCArIHdpZHRoT2Zmc2V0ICsgKHdpZHRoT2Zmc2V0IC8gMikgKiB0aHJlc2hvbGQ7XG4gICAgY29uc3QgeVN0YXJ0ID0gY29vcmRpbmF0ZXMucG9zaXRpb24gPT09ICdhZnRlcicgPyBjb29yZGluYXRlcy55IDogY29vcmRpbmF0ZXMueSArIGNvb3JkaW5hdGVzLmhlaWdodDtcbiAgICBjb25zdCB5RW5kID0geVN0YXJ0ICsgaGVpZ2h0T2Zmc2V0ICsgKGhlaWdodE9mZnNldCAvIDIpICogdGhyZXNob2xkO1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHtcbiAgICAgICAgICAgIHN0YXJ0OiB4U3RhcnQgPiB4RW5kID8geEVuZCA6IHhTdGFydCxcbiAgICAgICAgICAgIGVuZDogeFN0YXJ0ID4geEVuZCA/IHhTdGFydCA6IHhFbmRcbiAgICAgICAgfSxcbiAgICAgICAgeToge1xuICAgICAgICAgICAgc3RhcnQ6IHlTdGFydCA+IHlFbmQgPyB5RW5kIDogeVN0YXJ0LFxuICAgICAgICAgICAgZW5kOiB5U3RhcnQgPiB5RW5kID8geVN0YXJ0IDogeUVuZFxuICAgICAgICB9XG4gICAgfTtcbn1cbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  export * from './range-selector';
2
2
  export * from './get-native-element';
3
3
  export * from './destroy-observable';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2hlbHBlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3JhbmdlLXNlbGVjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0LW5hdGl2ZS1lbGVtZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZGVzdHJveS1vYnNlcnZhYmxlJztcbiJdfQ==
4
+ export * from './warn-once';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2hlbHBlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3JhbmdlLXNlbGVjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0LW5hdGl2ZS1lbGVtZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZGVzdHJveS1vYnNlcnZhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vd2Fybi1vbmNlJztcbiJdfQ==
@@ -0,0 +1,9 @@
1
+ const messages = new Set();
2
+ /** @hidden */
3
+ export function warnOnce(message) {
4
+ if (!messages.has(message)) {
5
+ console.warn(message);
6
+ messages.add(message);
7
+ }
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Fybi1vbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9oZWxwZXJzL3dhcm4tb25jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0FBRW5DLGNBQWM7QUFDZCxNQUFNLFVBQVUsUUFBUSxDQUFDLE9BQWU7SUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QixRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3pCO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IG1lc3NhZ2VzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gd2Fybk9uY2UobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFtZXNzYWdlcy5oYXMobWVzc2FnZSkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICAgICAgICBtZXNzYWdlcy5hZGQobWVzc2FnZSk7XG4gICAgfVxufVxuIl19
@@ -2,6 +2,7 @@ import { Injectable, isDevMode } from '@angular/core';
2
2
  import { BehaviorSubject } from 'rxjs';
3
3
  import { distinctUntilChanged, map, startWith } from 'rxjs/operators';
4
4
  import { isCompactDensity } from '../functions/is-compact-density';
5
+ import { warnOnce } from '../helpers';
5
6
  import * as i0 from "@angular/core";
6
7
  export const DEFAULT_CONTENT_DENSITY = 'cozy';
7
8
  /**
@@ -13,7 +14,7 @@ export class ContentDensityService {
13
14
  /** Content Density BehaviourSubject */
14
15
  this.contentDensity = new BehaviorSubject(DEFAULT_CONTENT_DENSITY);
15
16
  if (isDevMode()) {
16
- console.warn(`[Deprecated] ContentDensityService is deprecated and will be removed in the next major version.
17
+ warnOnce(`[Deprecated] ContentDensityService is deprecated and will be removed in the next major version.
17
18
  Please use ContentDensityControllerService instead, or use the ContentDensityModule forRoot method.`);
18
19
  }
19
20
  }
@@ -31,4 +32,4 @@ export class ContentDensityService {
31
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ContentDensityService, decorators: [{
32
33
  type: Injectable
33
34
  }], ctorParameters: function () { return []; } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1kZW5zaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL3NlcnZpY2VzL2NvbnRlbnQtZGVuc2l0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFHbkUsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQW1CLE1BQU0sQ0FBQztBQUU5RDs7R0FFRztBQUVILE1BQU0sT0FBTyxxQkFBcUI7SUFJOUIsY0FBYztJQUNkO1FBSkEsdUNBQXVDO1FBQzlCLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUluRSxJQUFJLFNBQVMsRUFBRSxFQUFFO1lBQ2IsT0FBTyxDQUFDLElBQUksQ0FDUjtxSEFDcUcsQ0FDeEcsQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLHVCQUF1QjtRQUN2QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBSSxpQkFBaUI7UUFDakIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7OEdBdEJRLHFCQUFxQjtrSEFBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGlzQ29tcGFjdERlbnNpdHkgfSBmcm9tICcuLi9mdW5jdGlvbnMvaXMtY29tcGFjdC1kZW5zaXR5JztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb250ZW50LWRlbnNpdHknO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT05URU5UX0RFTlNJVFk6IENvbnRlbnREZW5zaXR5ID0gJ2NvenknO1xuXG4vKipcbiAqIFNlcnZpY2UgdGFraW5nIGNhcmUgb2YgQ29udGVudERlbnNpdHlcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbnRlbnREZW5zaXR5U2VydmljZSB7XG4gICAgLyoqIENvbnRlbnQgRGVuc2l0eSBCZWhhdmlvdXJTdWJqZWN0ICovXG4gICAgcmVhZG9ubHkgY29udGVudERlbnNpdHkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KERFRkFVTFRfQ09OVEVOVF9ERU5TSVRZKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgIGBbRGVwcmVjYXRlZF0gQ29udGVudERlbnNpdHlTZXJ2aWNlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uLlxuICAgICAgICAgICAgICAgICBQbGVhc2UgdXNlIENvbnRlbnREZW5zaXR5Q29udHJvbGxlclNlcnZpY2UgaW5zdGVhZCwgb3IgdXNlIHRoZSBDb250ZW50RGVuc2l0eU1vZHVsZSBmb3JSb290IG1ldGhvZC5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2NvbnRlbnREZW5zaXR5TGlzdGVuZXIoKTogT2JzZXJ2YWJsZTxDb250ZW50RGVuc2l0eT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50RGVuc2l0eS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHN0YXJ0V2l0aCh0aGlzLmNvbnRlbnREZW5zaXR5LmdldFZhbHVlKCkpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaXNDb21wYWN0RGVuc2l0eSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnREZW5zaXR5TGlzdGVuZXIucGlwZShtYXAoKGRlbnNpdHkpID0+IGlzQ29tcGFjdERlbnNpdHkoZGVuc2l0eSkpKTtcbiAgICB9XG59XG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1kZW5zaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL3NlcnZpY2VzL2NvbnRlbnQtZGVuc2l0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQUV0QyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBbUIsTUFBTSxDQUFDO0FBRTlEOztHQUVHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQUk5QixjQUFjO0lBQ2Q7UUFKQSx1Q0FBdUM7UUFDOUIsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBSW5FLElBQUksU0FBUyxFQUFFLEVBQUU7WUFDYixRQUFRLENBQ0o7cUhBQ3FHLENBQ3hHLENBQUM7U0FDTDtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBSSx1QkFBdUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDOzhHQXRCUSxxQkFBcUI7a0hBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0NvbXBhY3REZW5zaXR5IH0gZnJvbSAnLi4vZnVuY3Rpb25zL2lzLWNvbXBhY3QtZGVuc2l0eSc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IHdhcm5PbmNlIH0gZnJvbSAnLi4vaGVscGVycyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPTlRFTlRfREVOU0lUWTogQ29udGVudERlbnNpdHkgPSAnY296eSc7XG5cbi8qKlxuICogU2VydmljZSB0YWtpbmcgY2FyZSBvZiBDb250ZW50RGVuc2l0eVxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29udGVudERlbnNpdHlTZXJ2aWNlIHtcbiAgICAvKiogQ29udGVudCBEZW5zaXR5IEJlaGF2aW91clN1YmplY3QgKi9cbiAgICByZWFkb25seSBjb250ZW50RGVuc2l0eSA9IG5ldyBCZWhhdmlvclN1YmplY3QoREVGQVVMVF9DT05URU5UX0RFTlNJVFkpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgICAgICBgW0RlcHJlY2F0ZWRdIENvbnRlbnREZW5zaXR5U2VydmljZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbi5cbiAgICAgICAgICAgICAgICAgUGxlYXNlIHVzZSBDb250ZW50RGVuc2l0eUNvbnRyb2xsZXJTZXJ2aWNlIGluc3RlYWQsIG9yIHVzZSB0aGUgQ29udGVudERlbnNpdHlNb2R1bGUgZm9yUm9vdCBtZXRob2QuYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9jb250ZW50RGVuc2l0eUxpc3RlbmVyKCk6IE9ic2VydmFibGU8Q29udGVudERlbnNpdHk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudERlbnNpdHkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzdGFydFdpdGgodGhpcy5jb250ZW50RGVuc2l0eS5nZXRWYWx1ZSgpKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2lzQ29tcGFjdERlbnNpdHkoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50RGVuc2l0eUxpc3RlbmVyLnBpcGUobWFwKChkZW5zaXR5KSA9PiBpc0NvbXBhY3REZW5zaXR5KGRlbnNpdHkpKSk7XG4gICAgfVxufVxuIl19
@@ -1,5 +1,6 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { ReplaySubject } from 'rxjs';
3
+ import { warnOnce } from '../helpers';
3
4
  import * as i0 from "@angular/core";
4
5
  /**
5
6
  * @deprecated Use Angular's built-in `DestroyRef` and `takeUntilDestroyed` instead.
@@ -9,7 +10,7 @@ export class DestroyedService extends ReplaySubject {
9
10
  /** @hidden */
10
11
  constructor() {
11
12
  super(1);
12
- console.warn(`DestroyedService is deprecated. Use Angular's built-in 'DestroyRef' and 'takeUntilDestroyed' instead.`);
13
+ warnOnce(`DestroyedService is deprecated. Use Angular's built-in 'DestroyRef' and 'takeUntilDestroyed' instead.`);
13
14
  }
14
15
  /** @hidden */
15
16
  ngOnDestroy() {
@@ -22,4 +23,4 @@ export class DestroyedService extends ReplaySubject {
22
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: DestroyedService, decorators: [{
23
24
  type: Injectable
24
25
  }], ctorParameters: function () { return []; } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJveWVkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL3NlcnZpY2VzL2Rlc3Ryb3llZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFckM7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGFBQW1CO0lBQ3JELGNBQWM7SUFDZDtRQUNJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNULE9BQU8sQ0FBQyxJQUFJLENBQ1IsdUdBQXVHLENBQzFHLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQzs4R0FiUSxnQkFBZ0I7a0hBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBBbmd1bGFyJ3MgYnVpbHQtaW4gYERlc3Ryb3lSZWZgIGFuZCBgdGFrZVVudGlsRGVzdHJveWVkYCBpbnN0ZWFkLlxuICogV2lsbCBiZSByZW1vdmVkIGluIG5leHQgcmVsZWFzZVxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGVzdHJveWVkU2VydmljZSBleHRlbmRzIFJlcGxheVN1YmplY3Q8dm9pZD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKDEpO1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgRGVzdHJveWVkU2VydmljZSBpcyBkZXByZWNhdGVkLiBVc2UgQW5ndWxhcidzIGJ1aWx0LWluICdEZXN0cm95UmVmJyBhbmQgJ3Rha2VVbnRpbERlc3Ryb3llZCcgaW5zdGVhZC5gXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZXh0KCk7XG4gICAgICAgIHRoaXMuY29tcGxldGUoKTtcbiAgICB9XG59XG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJveWVkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL3NlcnZpY2VzL2Rlc3Ryb3llZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQUV0Qzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsYUFBbUI7SUFDckQsY0FBYztJQUNkO1FBQ0ksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1QsUUFBUSxDQUNKLHVHQUF1RyxDQUMxRyxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7OEdBYlEsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHdhcm5PbmNlIH0gZnJvbSAnLi4vaGVscGVycyc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFuZ3VsYXIncyBidWlsdC1pbiBgRGVzdHJveVJlZmAgYW5kIGB0YWtlVW50aWxEZXN0cm95ZWRgIGluc3RlYWQuXG4gKiBXaWxsIGJlIHJlbW92ZWQgaW4gbmV4dCByZWxlYXNlXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZXN0cm95ZWRTZXJ2aWNlIGV4dGVuZHMgUmVwbGF5U3ViamVjdDx2b2lkPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoMSk7XG4gICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgYERlc3Ryb3llZFNlcnZpY2UgaXMgZGVwcmVjYXRlZC4gVXNlIEFuZ3VsYXIncyBidWlsdC1pbiAnRGVzdHJveVJlZicgYW5kICd0YWtlVW50aWxEZXN0cm95ZWQnIGluc3RlYWQuYFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgICB0aGlzLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19
@@ -1,11 +1,10 @@
1
- import { __decorate, __metadata } from "tslib";
2
1
  import { Injectable, isDevMode, Optional } from '@angular/core';
3
2
  import { DomSanitizer } from '@angular/platform-browser';
4
3
  import { ActivatedRoute } from '@angular/router';
5
4
  import { filter, takeUntil } from 'rxjs/operators';
6
5
  import { Subject } from 'rxjs';
6
+ import { warnOnce } from '../helpers';
7
7
  import { THEME_SWITCHER_ROUTER_MISSING_ERROR } from '../consts';
8
- import deprecated from 'deprecated-decorator';
9
8
  import * as i0 from "@angular/core";
10
9
  import * as i1 from "@angular/router";
11
10
  import * as i2 from "@angular/platform-browser";
@@ -14,7 +13,7 @@ import * as i2 from "@angular/platform-browser";
14
13
  * Service providing theme switcher functionality.
15
14
  * Deprecated since 0.35.0 in favor of ThemingService from ThemingModule
16
15
  */
17
- export let ThemesService = class ThemesService {
16
+ export class ThemesService {
18
17
  /** @hidden */
19
18
  constructor(_activatedRoute, _sanitizer) {
20
19
  this._activatedRoute = _activatedRoute;
@@ -68,6 +67,7 @@ export let ThemesService = class ThemesService {
68
67
  this.onThemeQueryParamChange = new Subject();
69
68
  /** @hidden **/
70
69
  this._onDestroy$ = new Subject();
70
+ warnOnce('ThemesService is deprecated since 0.35.0 in favor of ThemingService from ThemingModule');
71
71
  }
72
72
  /**
73
73
  * Set theme according to additional URL parameter.
@@ -126,14 +126,10 @@ export let ThemesService = class ThemesService {
126
126
  }
127
127
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ThemesService, deps: [{ token: i1.ActivatedRoute, optional: true }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable }); }
128
128
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ThemesService }); }
129
- };
130
- ThemesService = __decorate([
131
- deprecated('ThemingService from ThemingModule'),
132
- __metadata("design:paramtypes", [ActivatedRoute, DomSanitizer])
133
- ], ThemesService);
129
+ }
134
130
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ThemesService, decorators: [{
135
131
  type: Injectable
136
132
  }], ctorParameters: function () { return [{ type: i1.ActivatedRoute, decorators: [{
137
133
  type: Optional
138
134
  }] }, { type: i2.DomSanitizer }]; } });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL3NlcnZpY2VzL3RoZW1lcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBbUIsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoRSxPQUFPLFVBQVUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQWE5Qzs7OztHQUlHO0FBR0ksV0FBTSxhQUFhLEdBQW5CLE1BQU0sYUFBYTtJQXFEdEIsY0FBYztJQUNkLFlBQWdDLGVBQStCLEVBQVUsVUFBd0I7UUFBakUsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBYztRQXJEakcsdUJBQXVCO1FBQ3ZCLFdBQU0sR0FBWTtZQUNkO2dCQUNJLEVBQUUsRUFBRSxhQUFhO2dCQUNqQixJQUFJLEVBQUUseUJBQXlCO2FBQ2xDO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLGtCQUFrQjtnQkFDdEIsSUFBSSxFQUFFLHdCQUF3QjthQUNqQztZQUNEO2dCQUNJLEVBQUUsRUFBRSxpQkFBaUI7Z0JBQ3JCLElBQUksRUFBRSw2QkFBNkI7Z0JBQ25DLFdBQVcsRUFBRSx5RUFBeUU7YUFDekY7WUFDRDtnQkFDSSxFQUFFLEVBQUUsaUJBQWlCO2dCQUNyQixJQUFJLEVBQUUscUNBQXFDO2dC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QU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxTQUFTLEdBQUcsbUJBQW1CLENBQUMsRUFDOUQsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGNBQWM7SUFDTixnQkFBZ0IsQ0FBQyxLQUFhO1FBQ2xDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUM7WUFDOUIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQzlCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztTQUM3QyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQTVIUSxhQUFhO2tIQUFiLGFBQWE7O0FBQWIsYUFBYTtJQUZ6QixVQUFVLENBQUMsbUNBQW1DLENBQUM7cUNBd0RLLGNBQWMsRUFBc0IsWUFBWTtHQXREeEYsYUFBYSxDQTZIekI7MkZBN0hZLGFBQWE7a0JBRHpCLFVBQVU7OzBCQXVETSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaXNEZXZNb2RlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUSEVNRV9TV0lUQ0hFUl9ST1VURVJfTUlTU0lOR19FUlJPUiB9IGZyb20gJy4uL2NvbnN0cyc7XG5pbXBvcnQgZGVwcmVjYXRlZCBmcm9tICdkZXByZWNhdGVkLWRlY29yYXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlbWVTZXJ2aWNlT3V0cHV0IHtcbiAgICB0aGVtZVVybDogU2FmZVJlc291cmNlVXJsO1xuICAgIGN1c3RvbVRoZW1lVXJsOiBTYWZlUmVzb3VyY2VVcmw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlbWUge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBTZXJ2aWNlIHByb3ZpZGluZyB0aGVtZSBzd2l0Y2hlciBmdW5jdGlvbmFsaXR5LlxuICogRGVwcmVjYXRlZCBzaW5jZSAwLjM1LjAgaW4gZmF2b3Igb2YgVGhlbWluZ1NlcnZpY2UgZnJvbSBUaGVtaW5nTW9kdWxlXG4gKi9cbkBkZXByZWNhdGVkKCdUaGVtaW5nU2VydmljZSBmcm9tIFRoZW1pbmdNb2R1bGUnKVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRoZW1lc1NlcnZpY2Uge1xuICAgIC8qKiBBdmFpbGFibGUgdGhlbWVzICovXG4gICAgdGhlbWVzOiBUaGVtZVtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3NhcF9ob3Jpem9uJyxcbiAgICAgICAgICAgIG5hbWU6ICdNb3JuaW5nIEhvcml6b24gKExpZ2h0KSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdzYXBfaG9yaXpvbl9kYXJrJyxcbiAgICAgICAgICAgIG5hbWU6ICdFdmVuaW5nIEhvcml6b24gKERhcmspJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3NhcF9ob3Jpem9uX2hjYicsXG4gICAgICAgICAgICBuYW1lOiAnSG9yaXpvbiBIaWdoIENvbnRyYXN0IEJsYWNrJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemVkIGNvbnRyYXN0IGFuZCBhY2Nlc3NpYmlsaXd0eSBmb3IgZXh0cmVtZWx5IGJyaWdodCBlbnZpcm9ubWVudHMnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnc2FwX2hvcml6b25faGN3JyxcbiAgICAgICAgICAgIG5hbWU6ICdIb3Jpem9uIEhpZ2ggQ29udHJhc3QgV2hpdGUgSG9yaXpvbicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplZCBjb250cmFzdCBhbmQgYWNjZXNzaWJpbGl0eSBmb3IgZXh0cmVtZWx5IGRhcmsgZW52aXJvbm1lbnRzJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3NhcF9maW9yaV8zJyxcbiAgICAgICAgICAgIG5hbWU6ICdRdWFydHogTGlnaHQnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2UgaW4gcmVndWxhciBvZmZpY2UgZW52aXJvbm1lbnQnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnc2FwX2Zpb3JpXzNfZGFyaycsXG4gICAgICAgICAgICBuYW1lOiAnUXVhcnR6IERhcmsnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2UgaW4gZGltbWVkIGVudmlyb25tZW50cydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdzYXBfZmlvcmlfM19oY2InLFxuICAgICAgICAgICAgbmFtZTogJ1F1YXJ0eiBIaWdoIENvbnRyYXN0IEJsYWNrJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemVkIGNvbnRyYXN0IGFuZCBhY2Nlc3NpYmlsaXR5IGZvciBleHRyZW1lbHkgYnJpZ2h0IGVudmlyb25tZW50cydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdzYXBfZmlvcmlfM19oY3cnLFxuICAgICAgICAgICAgbmFtZTogJ1F1YXJ0eiBIaWdoIENvbnRyYXN0IFdoaXRlJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemVkIGNvbnRyYXN0IGFuZCBhY2Nlc3NpYmlsaXR5IGZvciBleHRyZW1lbHkgZGFyayBlbnZpcm9ubWVudHMnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnc2FwX2Zpb3JpXzNfbGlnaHRfZGFyaycsXG4gICAgICAgICAgICBuYW1lOiAnUXVhcnR6IEF1dG8gKERlcGVuZGluZyBvbiB0aGUgT1MgU2V0dGluZ3MpJ1xuICAgICAgICB9XG4gICAgXTtcblxuICAgIC8qKiBTdWJqZWN0IHRyaWdnZXJlZCwgd2hlbiB0aGUgdGhlbWluZyBpcyBjaGFuZ2VkIGJ5IFVSTCBwYXJhbWV0ZXIgKi9cbiAgICByZWFkb25seSBvblRoZW1lUXVlcnlQYXJhbUNoYW5nZTogU3ViamVjdDxUaGVtZVNlcnZpY2VPdXRwdXQ+ID0gbmV3IFN1YmplY3Q8VGhlbWVTZXJ2aWNlT3V0cHV0PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKiovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByaXZhdGUgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlbWUgYWNjb3JkaW5nIHRvIGFkZGl0aW9uYWwgVVJMIHBhcmFtZXRlci5cbiAgICAgKiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgY2hhbmdlZCBpbiBmdW5jdGlvbiBhcmd1bWVudC5cbiAgICAgKiBCeSBkZWZhdWx0IGl0J3MgYHRoZW1lYC5cbiAgICAgKiovXG4gICAgc2V0VGhlbWVCeVJvdXRlKHRoZW1lUGFyYW1OYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhcmFtTmFtZSA9IHRoZW1lUGFyYW1OYW1lIHx8ICd0aGVtZSc7XG5cbiAgICAgICAgaWYgKCF0aGlzLl9hY3RpdmF0ZWRSb3V0ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFRIRU1FX1NXSVRDSEVSX1JPVVRFUl9NSVNTSU5HX0VSUk9SKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2FjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChwYXJhbSkgPT4gcGFyYW0gJiYgcGFyYW1bcGFyYW1OYW1lXSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHBhcmFtKSA9PiB0aGlzLl9wcm9wYWdhdGVUaGVtZXMocGFyYW1bcGFyYW1OYW1lXSkpO1xuXG4gICAgICAgIGNvbnN0IG5hdGl2ZVRoZW1lID0gdGhpcy5fZ2V0TmF0aXZlUGFyYW1ldGVyQnlOYW1lKHBhcmFtTmFtZSk7XG4gICAgICAgIGlmIChuYXRpdmVUaGVtZSkge1xuICAgICAgICAgICAgdGhpcy5fcHJvcGFnYXRlVGhlbWVzKG5hdGl2ZVRoZW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdG8gZ2V0IG9uY2UgdGhlbWUgb2JqZWN0IGRpcmVjdGx5IGZyb20gdXJsLiAqL1xuICAgIGdldFRoZW1lc0Zyb21VUkwocGFyYW0/OiBzdHJpbmcpOiBUaGVtZVNlcnZpY2VPdXRwdXQgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBwYXJhbU5hbWUgPSBwYXJhbSB8fCAndGhlbWUnO1xuXG4gICAgICAgIGNvbnN0IG5hdGl2ZVRoZW1lID0gdGhpcy5fZ2V0TmF0aXZlUGFyYW1ldGVyQnlOYW1lKHBhcmFtTmFtZSk7XG4gICAgICAgIGlmICghbmF0aXZlVGhlbWUgJiYgaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVGhlcmUgaXMgbm8gdGhlbWUgcGFyYW0gc2V0IG5hbWVkOiAnICsgcGFyYW0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRoZW1lVXJsOiB0aGlzLnNldFRoZW1lKG5hdGl2ZVRoZW1lKSxcbiAgICAgICAgICAgIGN1c3RvbVRoZW1lVXJsOiB0aGlzLnNldEN1c3RvbVRoZW1lKG5hdGl2ZVRoZW1lKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBBc3NpZ24gY3NzIGZpbGUgY29ycmVzcG9uZGluZyB0byBjaG9zZW4gdGhlbWUgZnJvbSBAc2FwLXRoZW1pbmcgKiovXG4gICAgc2V0VGhlbWUodGhlbWU6IHN0cmluZyk6IFNhZmVSZXNvdXJjZVVybCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKCdhc3NldHMvdGhlbWluZy1iYXNlLycgKyB0aGVtZSArICcvY3NzX3ZhcmlhYmxlcy5jc3MnKTtcbiAgICB9XG5cbiAgICAvKiogQXNzaWduIGNzcyBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gY2hvc2VuIHRoZW1lIGZ1bmRhbWVudGFsLXN0eWxlcyAqKi9cbiAgICBzZXRDdXN0b21UaGVtZSh0aGVtZTogc3RyaW5nKTogU2FmZVJlc291cmNlVXJsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoJ2Fzc2V0cy9mdW5kYW1lbnRhbC1zdHlsZXMtdGhlbWluZy8nICsgdGhlbWUgKyAnLmNzcycpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0TmF0aXZlUGFyYW1ldGVyQnlOYW1lKHBhcmFtTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcGFyYW1OYW1lID0gcGFyYW1OYW1lLnJlcGxhY2UoL1tbXFxdXS9nLCAnXFxcXCQmJyk7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCgnWz8mXScgKyBwYXJhbU5hbWUgKyAnKD0oW14mI10qKXwmfCN8JCknKSxcbiAgICAgICAgICAgIHJlc3VsdHMgPSByZWdleC5leGVjKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgaWYgKCFyZXN1bHRzIHx8ICFyZXN1bHRzWzJdKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRzWzJdLnJlcGxhY2UoL1xcKy9nLCAnICcpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Byb3BhZ2F0ZVRoZW1lcyh0aGVtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25UaGVtZVF1ZXJ5UGFyYW1DaGFuZ2UubmV4dCh7XG4gICAgICAgICAgICB0aGVtZVVybDogdGhpcy5zZXRUaGVtZSh0aGVtZSksXG4gICAgICAgICAgICBjdXN0b21UaGVtZVVybDogdGhpcy5zZXRDdXN0b21UaGVtZSh0aGVtZSlcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL3NlcnZpY2VzL3RoZW1lcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFtQixNQUFNLDJCQUEyQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV0QyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7QUFhaEU7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBcUR0QixjQUFjO0lBQ2QsWUFBZ0MsZUFBK0IsRUFBVSxVQUF3QjtRQUFqRSxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFjO1FBckRqRyx1QkFBdUI7UUFDdkIsV0FBTSxHQUFZO1lBQ2Q7Z0JBQ0ksRUFBRSxFQUFFLGFBQWE7Z0JBQ2pCLElBQUksRUFBRSx5QkFBeUI7YUFDbEM7WUFDRDtnQkFDSSxFQUFFLEVBQUUsa0JBQWtCO2dCQUN0QixJQUFJLEVBQUUsd0JBQXdCO2FBQ2pDO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLGlCQUFpQjtnQkFDckIsSUFBSSxFQUFFLDZCQUE2QjtnQkFDbkMsV0FBVyxFQUFFLHlFQUF5RTthQUN6RjtZQUNEO2dCQUNJLEVBQUUsRUFBRSxpQkFBaUI7Z0JBQ3JCLElBQUksRUFBRSxxQ0FBcUM7Z0JBQzNDLFdBQVcsRUFBRSxzRUFBc0U7YUFDdEY7WUFDRDtnQkFDSSxFQUFFLEVBQUUsYUFBYTtnQkFDakIsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLFdBQVcsRUFBRSxtQ0FBbUM7YUFDbkQ7WUFDRDtnQkFDSSxFQUFFLEVBQUUsa0JBQWtCO2dCQUN0QixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsV0FBVyxFQUFFLDRCQUE0QjthQUM1QztZQUNEO2dCQUNJLEVBQUUsRUFBRSxpQkFBaUI7Z0JBQ3JCLElBQUksRUFBRSw0QkFBNEI7Z0JBQ2xDLFdBQVcsRUFBRSx3RUFBd0U7YUFDeEY7WUFDRDtnQkFDSSxFQUFFLEVBQUUsaUJBQWlCO2dCQUNyQixJQUFJLEVBQUUsNEJBQTRCO2dCQUNsQyxXQUFXLEVBQUUsc0VBQXNFO2FBQ3RGO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLHdCQUF3QjtnQkFDNUIsSUFBSSxFQUFFLDRDQUE0QzthQUNyRDtTQUNKLENBQUM7UUFFRixzRUFBc0U7UUFDN0QsNEJBQXVCLEdBQWdDLElBQUksT0FBTyxFQUFzQixDQUFDO1FBRWxHLGVBQWU7UUFDRSxnQkFBVyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBSTlELFFBQVEsQ0FBQyx3RkFBd0YsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRDs7OztRQUlJO0lBQ0osZUFBZSxDQUFDLGNBQXVCO1FBQ25DLE1BQU0sU0FBUyxHQUFHLGNBQWMsSUFBSSxPQUFPLENBQUM7UUFFNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1NBQ3hEO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXO2FBQzNCLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUMzQixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDL0M7YUFDQSxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRW5FLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5RCxJQUFJLFdBQVcsRUFBRTtZQUNiLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUN0QztJQUNMLENBQUM7SUFFRCx5REFBeUQ7SUFDekQsZ0JBQWdCLENBQUMsS0FBYztRQUMzQixNQUFNLFNBQVMsR0FBRyxLQUFLLElBQUksT0FBTyxDQUFDO1FBRW5DLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsV0FBVyxJQUFJLFNBQVMsRUFBRSxFQUFFO1lBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMscUNBQXFDLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDNUQsT0FBTztTQUNWO1FBRUQsT0FBTztZQUNILFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUNwQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUM7U0FDbkQsQ0FBQztJQUNOLENBQUM7SUFFRCx1RUFBdUU7SUFDdkUsUUFBUSxDQUFDLEtBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLHNCQUFzQixHQUFHLEtBQUssR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2pILENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsY0FBYyxDQUFDLEtBQWE7UUFDeEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLG9DQUFvQyxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRUQsY0FBYztJQUNOLHlCQUF5QixDQUFDLFNBQWlCO1FBQy9DLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsU0FBUyxHQUFHLG1CQUFtQixDQUFDLEVBQzlELE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN6QixPQUFPLEVBQUUsQ0FBQztTQUNiO1FBQ0QsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxjQUFjO0lBQ04sZ0JBQWdCLENBQUMsS0FBYTtRQUNsQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDO1lBQzlCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUM5QixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7U0FDN0MsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0E5SFEsYUFBYTtrSEFBYixhQUFhOzsyRkFBYixhQUFhO2tCQUR6QixVQUFVOzswQkF1RE0sUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGlzRGV2TW9kZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHdhcm5PbmNlIH0gZnJvbSAnLi4vaGVscGVycyc7XG5cbmltcG9ydCB7IFRIRU1FX1NXSVRDSEVSX1JPVVRFUl9NSVNTSU5HX0VSUk9SIH0gZnJvbSAnLi4vY29uc3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBUaGVtZVNlcnZpY2VPdXRwdXQge1xuICAgIHRoZW1lVXJsOiBTYWZlUmVzb3VyY2VVcmw7XG4gICAgY3VzdG9tVGhlbWVVcmw6IFNhZmVSZXNvdXJjZVVybDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaGVtZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFNlcnZpY2UgcHJvdmlkaW5nIHRoZW1lIHN3aXRjaGVyIGZ1bmN0aW9uYWxpdHkuXG4gKiBEZXByZWNhdGVkIHNpbmNlIDAuMzUuMCBpbiBmYXZvciBvZiBUaGVtaW5nU2VydmljZSBmcm9tIFRoZW1pbmdNb2R1bGVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRoZW1lc1NlcnZpY2Uge1xuICAgIC8qKiBBdmFpbGFibGUgdGhlbWVzICovXG4gICAgdGhlbWVzOiBUaGVtZVtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3NhcF9ob3Jpem9uJyxcbiAgICAgICAgICAgIG5hbWU6ICdNb3JuaW5nIEhvcml6b24gKExpZ2h0KSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdzYXBfaG9yaXpvbl9kYXJrJyxcbiAgICAgICAgICAgIG5hbWU6ICdFdmVuaW5nIEhvcml6b24gKERhcmspJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3NhcF9ob3Jpem9uX2hjYicsXG4gICAgICAgICAgICBuYW1lOiAnSG9yaXpvbiBIaWdoIENvbnRyYXN0IEJsYWNrJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemVkIGNvbnRyYXN0IGFuZCBhY2Nlc3NpYmlsaXd0eSBmb3IgZXh0cmVtZWx5IGJyaWdodCBlbnZpcm9ubWVudHMnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnc2FwX2hvcml6b25faGN3JyxcbiAgICAgICAgICAgIG5hbWU6ICdIb3Jpem9uIEhpZ2ggQ29udHJhc3QgV2hpdGUgSG9yaXpvbicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplZCBjb250cmFzdCBhbmQgYWNjZXNzaWJpbGl0eSBmb3IgZXh0cmVtZWx5IGRhcmsgZW52aXJvbm1lbnRzJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3NhcF9maW9yaV8zJyxcbiAgICAgICAgICAgIG5hbWU6ICdRdWFydHogTGlnaHQnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2UgaW4gcmVndWxhciBvZmZpY2UgZW52aXJvbm1lbnQnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnc2FwX2Zpb3JpXzNfZGFyaycsXG4gICAgICAgICAgICBuYW1lOiAnUXVhcnR6IERhcmsnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2UgaW4gZGltbWVkIGVudmlyb25tZW50cydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdzYXBfZmlvcmlfM19oY2InLFxuICAgICAgICAgICAgbmFtZTogJ1F1YXJ0eiBIaWdoIENvbnRyYXN0IEJsYWNrJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemVkIGNvbnRyYXN0IGFuZCBhY2Nlc3NpYmlsaXR5IGZvciBleHRyZW1lbHkgYnJpZ2h0IGVudmlyb25tZW50cydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdzYXBfZmlvcmlfM19oY3cnLFxuICAgICAgICAgICAgbmFtZTogJ1F1YXJ0eiBIaWdoIENvbnRyYXN0IFdoaXRlJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemVkIGNvbnRyYXN0IGFuZCBhY2Nlc3NpYmlsaXR5IGZvciBleHRyZW1lbHkgZGFyayBlbnZpcm9ubWVudHMnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnc2FwX2Zpb3JpXzNfbGlnaHRfZGFyaycsXG4gICAgICAgICAgICBuYW1lOiAnUXVhcnR6IEF1dG8gKERlcGVuZGluZyBvbiB0aGUgT1MgU2V0dGluZ3MpJ1xuICAgICAgICB9XG4gICAgXTtcblxuICAgIC8qKiBTdWJqZWN0IHRyaWdnZXJlZCwgd2hlbiB0aGUgdGhlbWluZyBpcyBjaGFuZ2VkIGJ5IFVSTCBwYXJhbWV0ZXIgKi9cbiAgICByZWFkb25seSBvblRoZW1lUXVlcnlQYXJhbUNoYW5nZTogU3ViamVjdDxUaGVtZVNlcnZpY2VPdXRwdXQ+ID0gbmV3IFN1YmplY3Q8VGhlbWVTZXJ2aWNlT3V0cHV0PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKiovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByaXZhdGUgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcbiAgICAgICAgd2Fybk9uY2UoJ1RoZW1lc1NlcnZpY2UgaXMgZGVwcmVjYXRlZCBzaW5jZSAwLjM1LjAgaW4gZmF2b3Igb2YgVGhlbWluZ1NlcnZpY2UgZnJvbSBUaGVtaW5nTW9kdWxlJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZW1lIGFjY29yZGluZyB0byBhZGRpdGlvbmFsIFVSTCBwYXJhbWV0ZXIuXG4gICAgICogVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGNoYW5nZWQgaW4gZnVuY3Rpb24gYXJndW1lbnQuXG4gICAgICogQnkgZGVmYXVsdCBpdCdzIGB0aGVtZWAuXG4gICAgICoqL1xuICAgIHNldFRoZW1lQnlSb3V0ZSh0aGVtZVBhcmFtTmFtZT86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJhbU5hbWUgPSB0aGVtZVBhcmFtTmFtZSB8fCAndGhlbWUnO1xuXG4gICAgICAgIGlmICghdGhpcy5fYWN0aXZhdGVkUm91dGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihUSEVNRV9TV0lUQ0hFUl9ST1VURVJfTUlTU0lOR19FUlJPUik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigocGFyYW0pID0+IHBhcmFtICYmIHBhcmFtW3BhcmFtTmFtZV0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChwYXJhbSkgPT4gdGhpcy5fcHJvcGFnYXRlVGhlbWVzKHBhcmFtW3BhcmFtTmFtZV0pKTtcblxuICAgICAgICBjb25zdCBuYXRpdmVUaGVtZSA9IHRoaXMuX2dldE5hdGl2ZVBhcmFtZXRlckJ5TmFtZShwYXJhbU5hbWUpO1xuICAgICAgICBpZiAobmF0aXZlVGhlbWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3Byb3BhZ2F0ZVRoZW1lcyhuYXRpdmVUaGVtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHRvIGdldCBvbmNlIHRoZW1lIG9iamVjdCBkaXJlY3RseSBmcm9tIHVybC4gKi9cbiAgICBnZXRUaGVtZXNGcm9tVVJMKHBhcmFtPzogc3RyaW5nKTogVGhlbWVTZXJ2aWNlT3V0cHV0IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gcGFyYW0gfHwgJ3RoZW1lJztcblxuICAgICAgICBjb25zdCBuYXRpdmVUaGVtZSA9IHRoaXMuX2dldE5hdGl2ZVBhcmFtZXRlckJ5TmFtZShwYXJhbU5hbWUpO1xuICAgICAgICBpZiAoIW5hdGl2ZVRoZW1lICYmIGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1RoZXJlIGlzIG5vIHRoZW1lIHBhcmFtIHNldCBuYW1lZDogJyArIHBhcmFtKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aGVtZVVybDogdGhpcy5zZXRUaGVtZShuYXRpdmVUaGVtZSksXG4gICAgICAgICAgICBjdXN0b21UaGVtZVVybDogdGhpcy5zZXRDdXN0b21UaGVtZShuYXRpdmVUaGVtZSlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQXNzaWduIGNzcyBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gY2hvc2VuIHRoZW1lIGZyb20gQHNhcC10aGVtaW5nICoqL1xuICAgIHNldFRoZW1lKHRoZW1lOiBzdHJpbmcpOiBTYWZlUmVzb3VyY2VVcmwge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgnYXNzZXRzL3RoZW1pbmctYmFzZS8nICsgdGhlbWUgKyAnL2Nzc192YXJpYWJsZXMuY3NzJyk7XG4gICAgfVxuXG4gICAgLyoqIEFzc2lnbiBjc3MgZmlsZSBjb3JyZXNwb25kaW5nIHRvIGNob3NlbiB0aGVtZSBmdW5kYW1lbnRhbC1zdHlsZXMgKiovXG4gICAgc2V0Q3VzdG9tVGhlbWUodGhlbWU6IHN0cmluZyk6IFNhZmVSZXNvdXJjZVVybCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKCdhc3NldHMvZnVuZGFtZW50YWwtc3R5bGVzLXRoZW1pbmcvJyArIHRoZW1lICsgJy5jc3MnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldE5hdGl2ZVBhcmFtZXRlckJ5TmFtZShwYXJhbU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHBhcmFtTmFtZSA9IHBhcmFtTmFtZS5yZXBsYWNlKC9bW1xcXV0vZywgJ1xcXFwkJicpO1xuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoJ1s/Jl0nICsgcGFyYW1OYW1lICsgJyg9KFteJiNdKil8JnwjfCQpJyksXG4gICAgICAgICAgICByZXN1bHRzID0gcmVnZXguZXhlYyh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgICAgIGlmICghcmVzdWx0cyB8fCAhcmVzdWx0c1syXSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQocmVzdWx0c1syXS5yZXBsYWNlKC9cXCsvZywgJyAnKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcm9wYWdhdGVUaGVtZXModGhlbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVGhlbWVRdWVyeVBhcmFtQ2hhbmdlLm5leHQoe1xuICAgICAgICAgICAgdGhlbWVVcmw6IHRoaXMuc2V0VGhlbWUodGhlbWUpLFxuICAgICAgICAgICAgY3VzdG9tVGhlbWVVcmw6IHRoaXMuc2V0Q3VzdG9tVGhlbWUodGhlbWUpXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -3,6 +3,7 @@ import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
3
3
  import { Injectable, Injector, TemplateRef } from '@angular/core';
4
4
  import { Subject } from 'rxjs';
5
5
  import { takeUntil } from 'rxjs/operators';
6
+ import { warnOnce } from '../helpers';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@angular/cdk/overlay";
8
9
  export class BaseToastService {
@@ -39,7 +40,7 @@ export class BaseToastService {
39
40
  * Use `hideAll()` method instead.
40
41
  */
41
42
  dismissAll() {
42
- console.warn('dismissAll() is deprecated. Use hideAll() instead.');
43
+ warnOnce('dismissAll() is deprecated. Use hideAll() instead.');
43
44
  this.hideAll();
44
45
  }
45
46
  /**
@@ -272,4 +273,4 @@ export class BaseToastService {
272
273
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: BaseToastService, decorators: [{
273
274
  type: Injectable
274
275
  }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.Injector }]; } });
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b2FzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy90b2FzdC9iYXNlLXRvYXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlILE9BQU8sRUFDUCxhQUFhLEVBR2hCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBR0gsVUFBVSxFQUVWLFFBQVEsRUFHUixXQUFXLEVBR2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQVEzQyxNQUFNLE9BQWdCLGdCQUFnQjtJQThCbEMsY0FBYztJQUNkLFlBQTZCLE9BQWdCLEVBQVMsUUFBa0I7UUFBM0MsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUFTLGFBQVEsR0FBUixRQUFRLENBQVU7UUFmeEU7OztXQUdHO1FBQ08sWUFBTyxHQUFtQixFQUFFLENBQUM7UUFFdkM7O1dBRUc7UUFDTyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXFDLENBQUM7UUFFcEUsY0FBYztRQUNOLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBR21DLENBQUM7SUF5QzVFOztPQUVHO0lBQ0gsT0FBTztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxvQkFBb0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJ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NkJBQTZCO1FBQzdCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQzlELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyRCxLQUFLLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUV4QixPQUFPLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9HLENBQUM7SUFFRCxjQUFjO0lBQ04sc0JBQXNCLENBQUMsUUFBYTtRQUN4QyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7OEdBL1hpQixnQkFBZ0I7a0hBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50VHlwZSxcbiAgICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgR2xvYmFsUG9zaXRpb25TdHJhdGVneSxcbiAgICBPdmVybGF5LFxuICAgIE92ZXJsYXlDb25maWcsXG4gICAgT3ZlcmxheVJlZixcbiAgICBQb3NpdGlvblN0cmF0ZWd5XG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50UmVmLFxuICAgIEVtYmVkZGVkVmlld1JlZixcbiAgICBJbmplY3RhYmxlLFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBTdGF0aWNQcm92aWRlcixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBUeXBlLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYXNlVG9hc3RQb3NpdGlvbiwgVG9hc3RHbG9iYWxDb25uZWN0ZWRQb3NpdGlvbiwgVG9hc3RHbG9iYWxQb3NpdGlvbiB9IGZyb20gJy4vYmFzZS10b2FzdC1wb3NpdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVRvYXN0Q29uZmlnIH0gZnJvbSAnLi9jbGFzc2VzL2Jhc2UtdG9hc3QtY29uZmlnJztcbmltcG9ydCB7IEJhc2VUb2FzdFJlZiB9IGZyb20gJy4vY2xhc3Nlcy9iYXNlLXRvYXN0LXJlZic7XG5pbXBvcnQgeyBUb2FzdENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy90b2FzdC1jb250YWluZXItY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBUb2FzdFRleHRDb21wb25lbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvdG9hc3QtdGV4dC1jb21wb25lbnQuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VUb2FzdFNlcnZpY2U8XG4gICAgUCBleHRlbmRzIEJhc2VUb2FzdENvbmZpZyxcbiAgICBDIGV4dGVuZHMgVG9hc3RDb250YWluZXJDb21wb25lbnQ8UD4gPSBUb2FzdENvbnRhaW5lckNvbXBvbmVudDxQPlxuPiBpbXBsZW1lbnRzIE9uRGVzdHJveVxue1xuICAgIC8qKiBDb21wb25lbnQgZm9yIHNpbXBsZSB0ZXh0IHRvYXN0LiAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCB0b2FzdFRleHRDb21wb25lbnQ6IFR5cGU8VG9hc3RUZXh0Q29tcG9uZW50PjtcbiAgICAvKiogQ29tcG9uZW50IGZvciBUb2FzdCBDb250YWluZXIuICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHRvYXN0Q29udGFpbmVyQ29tcG9uZW50OiBUeXBlPEM+O1xuICAgIC8qKiBJbmplY3Rpb24gdG9rZW4gZm9yIFRvYXN0IERhdGEuICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHRvYXN0RGF0YUluamVjdGlvblRva2VuOiBJbmplY3Rpb25Ub2tlbjxhbnk+O1xuICAgIC8qKiBUb2FzdCBQb3NpdGlvbiBTdHJhdGVneS4gKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgdG9hc3RQb3NpdGlvblN0cmF0ZWd5OiBCYXNlVG9hc3RQb3NpdGlvbjtcbiAgICAvKiogVG9hc3QgZGVmYXVsdCBjb25maWcuICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGRlZmF1bHRDb25maWc6IFA7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQXJyYXkgb2YgYWxsIGN1cnJlbnQgdG9hc3RzLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdG9hc3RzOiBCYXNlVG9hc3RSZWZbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdG9hc3RzTWFwID0gbmV3IE1hcDxCYXNlVG9hc3RQb3NpdGlvbiwgQmFzZVRvYXN0UmVmW10+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHB1YmxpYyBvdmVybGF5OiBPdmVybGF5LCBwdWJsaWMgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBUb2FzdCBDb250YWluZXIgcHJvdmlkZXJzLlxuICAgICAqIEBwYXJhbSBjb25maWcgVG9hc3QgQ29uZmlnLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRDb250YWluZXJDb21wb25lbnRQcm92aWRlcnMoY29uZmlnOiBQKTogU3RhdGljUHJvdmlkZXJbXTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgVG9hc3QgQ29udGVudCBwcm92aWRlcnMuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUb2FzdCBDb25maWcuXG4gICAgICogQHBhcmFtIHRvYXN0UmVmIFRvYXN0IFJlZmVyZW5jZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0Q29udGVudENvbXBvbmVudFByb3ZpZGVyczxUPihjb25maWc6IFAsIHRvYXN0UmVmOiBCYXNlVG9hc3RSZWY8VD4pOiBTdGF0aWNQcm92aWRlcltdO1xuXG4gICAgLyoqXG4gICAgICogT3BlbnMgYSBUb2FzdCB3aXRoIHRoZSBwcm92aWRlZCBjb25maWd1cmF0aW9uLlxuICAgICAqIEBwYXJhbSB0b2FzdCBhY2NlcHRzIHN0cmluZywgQ29tcG9uZW50IG9yIFRlbXBsYXRlUmVmLlxuICAgICAqL1xuICAgIGFic3RyYWN0IG9wZW48VD4oXG4gICAgICAgIHRvYXN0OiBzdHJpbmcgfCBUeXBlPFQ+IHwgVGVtcGxhdGVSZWY8VD5cbiAgICApOiBCYXNlVG9hc3RSZWY8VG9hc3RUZXh0Q29tcG9uZW50IHwgVCB8IEVtYmVkZGVkVmlld1JlZjxUPiwgUD47XG5cbiAgICBhYnN0cmFjdCBvcGVuRnJvbVN0cmluZyhtZXNzYWdlOiBzdHJpbmcsIGNvbmZpZzogUCk6IEJhc2VUb2FzdFJlZjxUb2FzdFRleHRDb21wb25lbnQsIFA+O1xuXG4gICAgLyoqXG4gICAgICogT3BlbnMgYSBUb2FzdCB3aXRoIHByb3ZpZGVkIGNvbXBvbmVudCBpbnNpZGUuXG4gICAgICogQHBhcmFtIGNvbXBvbmVudCBDb21wb25lbnQgdG8gcmVuZGVyIGluc2lkZSBhIFRvYXN0LlxuICAgICAqIEBwYXJhbSBjb25maWcgVG9hc3QgY29uZmlndXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyBUb2FzdCByZWZlcmVuY2UuXG4gICAgICovXG4gICAgYWJzdHJhY3Qgb3BlbkZyb21Db21wb25lbnQ8VD4oY29tcG9uZW50OiBUeXBlPFQ+LCBjb25maWc6IFApOiBCYXNlVG9hc3RSZWY8VCwgUD47XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhIFRvYXN0IHdpdGggcHJvdmlkZWQgVGVtcGxhdGUgUmVmZXJlbmNlLlxuICAgICAqIEBwYXJhbSB0ZW1wbGF0ZSBUZW1wbGF0ZSBSZWZlcmVuY2UgdG8gcmVuZGVyIGluc2lkZSBhIFRvYXN0LlxuICAgICAqIEBwYXJhbSBjb25maWcgVG9hc3QgY29uZmlndXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyBUb2FzdCByZWZlcmVuY2UuXG4gICAgICovXG4gICAgYWJzdHJhY3Qgb3BlbkZyb21UZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiwgY29uZmlnOiBQKTogQmFzZVRvYXN0UmVmPEVtYmVkZGVkVmlld1JlZjxhbnk+PjtcblxuICAgIC8qKlxuICAgICAqIERpc21pc3NlcyBhbGwgVG9hc3RzLlxuICAgICAqL1xuICAgIGhpZGVBbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RvYXN0cy5mb3JFYWNoKCh0KSA9PiB0LmRpc21pc3MoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlcmUgYXJlIHNvbWUgbWVzc2FnZSB0b2FzdHMgY3VycmVudGx5IG9wZW4uIGBGYWxzZWAgb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIGhhc09wZW5NZXNzYWdlVG9hc3RzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG9hc3RzLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQuXG4gICAgICogVXNlIGBoaWRlQWxsKClgIG1ldGhvZCBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGRpc21pc3NBbGwoKTogdm9pZCB7XG4gICAgICAgIGNvbnNvbGUud2FybignZGlzbWlzc0FsbCgpIGlzIGRlcHJlY2F0ZWQuIFVzZSBoaWRlQWxsKCkgaW5zdGVhZC4nKTtcbiAgICAgICAgdGhpcy5oaWRlQWxsKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBuZXcgcG9zaXRpb24gc3RyYXRlZ3kgZm9yIGFsbCBUb2FzdCBpdGVtcy5cbiAgICAgKiBAcGFyYW0gbmV3U3RyYXRlZ3kgTmV3IFBvc2l0aW9uIFN0cmF0ZWd5XG4gICAgICovXG4gICAgc2V0TmV3UG9zaXRpb25TdHJhdGVneShuZXdTdHJhdGVneTogQmFzZVRvYXN0UG9zaXRpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKG5ld1N0cmF0ZWd5ID09PSB0aGlzLnRvYXN0UG9zaXRpb25TdHJhdGVneSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50b2FzdFBvc2l0aW9uU3RyYXRlZ3kgPSBuZXdTdHJhdGVneTtcblxuICAgICAgICB0aGlzLl9yZWZyZXNoT3ZlcmxheVBvc2l0aW9ucygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgVG9hc3QgUmVmZXJlbmNlIGZvciBwcm92aWRlZCBjb250YWluZXIgYW5kIG92ZXJsYXkuXG4gICAgICogQHBhcmFtIGNvbnRhaW5lclJlZiBDb250YWluZXIgcmVmZXJlbmNlLlxuICAgICAqIEBwYXJhbSBvdmVybGF5UmVmIE92ZXJsYXkgUmVmZXJlbmNlLlxuICAgICAqIEBwYXJhbSBwb3NpdGlvblN0cmF0ZWd5IFBvc2l0aW9uIFN0cmF0ZWd5XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFRvYXN0UmVmPFQ+KFxuICAgICAgICBjb250YWluZXJSZWY6IEMsXG4gICAgICAgIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYsXG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IEJhc2VUb2FzdFBvc2l0aW9uXG4gICAgKTogQmFzZVRvYXN0UmVmPFQgfCBFbWJlZGRlZFZpZXdSZWY8YW55PiwgUD47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUGxhY2VzIGEgbmV3IGNvbXBvbmVudCBvciBhIHRlbXBsYXRlIGFzIHRoZSBjb250ZW50IG9mIHRoZSBUb2FzdCBjb250YWluZXIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9hdHRhY2g8VD4oXG4gICAgICAgIGNvbnRlbnQ6IENvbXBvbmVudFR5cGU8VD4gfCBUZW1wbGF0ZVJlZjxUPixcbiAgICAgICAgdXNlckNvbmZpZz86IFBcbiAgICApOiBCYXNlVG9hc3RSZWY8VCB8IEVtYmVkZGVkVmlld1JlZjxhbnk+LCBQPiB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLCAuLi51c2VyQ29uZmlnIH07XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSBjb25maWcucG9zaXRpb25TdHJhdGVneSB8fCB0aGlzLnRvYXN0UG9zaXRpb25TdHJhdGVneTtcbiAgICAgICAgY29uc3QgeyBvdmVybGF5LCBpc0FuY2hvciB9ID0gdGhpcy5fY3JlYXRlT3ZlcmxheShwb3NpdGlvblN0cmF0ZWd5KTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyUmVmID0gdGhpcy5hdHRhY2hUb2FzdENvbnRhaW5lckNvbXBvbmVudChvdmVybGF5LCBjb25maWcpO1xuICAgICAgICBjb25zdCB0b2FzdFJlZiA9IHRoaXMuZ2V0VG9hc3RSZWY8VD4oY29udGFpbmVyUmVmLCBvdmVybGF5LCBwb3NpdGlvblN0cmF0ZWd5KTtcbiAgICAgICAgdG9hc3RSZWYuX2RlZmF1bHRQb3NpdGlvblN0cmF0ZWd5ID0gIWNvbmZpZy5wb3NpdGlvblN0cmF0ZWd5O1xuICAgICAgICB0b2FzdFJlZi5faXNBbmNob3IgPSBpc0FuY2hvcjtcblxuICAgICAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICAvLyBUZW1wbGF0ZVBvcnRhbCByZXF1aXJlcyB2aWV3Q29udGFpbmVyIHJlZlxuICAgICAgICAgICAgY29uc3Qgdmlld1JlZiA9IG51bGwgYXMgYW55IGFzIFZpZXdDb250YWluZXJSZWY7XG4gICAgICAgICAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwoY29udGVudCwgdmlld1JlZiwgeyAkaW1wbGljaXQ6IGNvbmZpZywgdG9hc3RSZWYgfSBhcyBhbnkpO1xuXG4gICAgICAgICAgICB0b2FzdFJlZi5pbnN0YW5jZSA9IGNvbnRhaW5lclJlZi5hdHRhY2hUZW1wbGF0ZVBvcnRhbChwb3J0YWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLmNyZWF0ZUNvbnRlbnRDb21wb25lbnRJbmplY3Rvcihjb25maWcsIHRvYXN0UmVmKTtcbiAgICAgICAgICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoY29udGVudCwgdW5kZWZpbmVkLCBpbmplY3Rvcik7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50UmVmID0gY29udGFpbmVyUmVmLmF0dGFjaENvbXBvbmVudFBvcnRhbDxUPihwb3J0YWwpO1xuXG4gICAgICAgICAgICAvLyBXZSBjYW4ndCBwYXNzIHRoaXMgdmlhIHRoZSBpbmplY3RvciwgYmVjYXVzZSB0aGUgaW5qZWN0b3IgaXMgY3JlYXRlZCBlYXJsaWVyLlxuICAgICAgICAgICAgdG9hc3RSZWYuaW5zdGFuY2UgPSBjb250ZW50UmVmLmluc3RhbmNlO1xuXG4gICAgICAgICAgICBjb250ZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFsbFRvYXN0cyA9IHRoaXMuX3RvYXN0c01hcC5nZXQocG9zaXRpb25TdHJhdGVneSkgfHwgW107XG4gICAgICAgIGFsbFRvYXN0cy5wdXNoKHRvYXN0UmVmKTtcbiAgICAgICAgdGhpcy5fdG9hc3RzLnB1c2godG9hc3RSZWYpO1xuICAgICAgICB0aGlzLl90b2FzdHNNYXAuc2V0KHBvc2l0aW9uU3RyYXRlZ3ksIGFsbFRvYXN0cyk7XG5cbiAgICAgICAgdGhpcy5hbmltYXRlVG9hc3Q8VD4odG9hc3RSZWYpO1xuXG4gICAgICAgIHJldHVybiB0b2FzdFJlZjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyB0aGUgVG9hc3QgY29udGFpbmVyIGNvbXBvbmVudCB0byB0aGUgb3ZlcmxheS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXR0YWNoVG9hc3RDb250YWluZXJDb21wb25lbnQob3ZlcmxheVJlZjogT3ZlcmxheVJlZiwgY29uZmlnOiBQKTogQyB7XG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgIHByb3ZpZGVyczogdGhpcy5nZXRDb250YWluZXJDb21wb25lbnRQcm92aWRlcnMoY29uZmlnKVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjb250YWluZXJQb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKHRoaXMudG9hc3RDb250YWluZXJDb21wb25lbnQsIG51bGwsIGluamVjdG9yKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyUmVmOiBDb21wb25lbnRSZWY8Qz4gPSBvdmVybGF5UmVmLmF0dGFjaChjb250YWluZXJQb3J0YWwpO1xuXG4gICAgICAgIGNvbnRhaW5lclJlZi5pbnN0YW5jZS5jb25maWcgPSBjb25maWc7XG4gICAgICAgIGNvbnRhaW5lclJlZi5pbnN0YW5jZS5vdmVybGF5UmVmID0gb3ZlcmxheVJlZjtcblxuICAgICAgICByZXR1cm4gY29udGFpbmVyUmVmLmluc3RhbmNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5qZWN0b3IgdG8gYmUgdXNlZCBpbnNpZGUgYSBUb2FzdCBjb21wb25lbnQuXG4gICAgICogQHBhcmFtIGNvbmZpZyBDb25maWcgdGhhdCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIFRvYXN0LlxuICAgICAqIEBwYXJhbSB0b2FzdFJlZiBSZWZlcmVuY2UgdG8gdGhlIFRvYXN0LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjcmVhdGVDb250ZW50Q29tcG9uZW50SW5qZWN0b3I8VD4oY29uZmlnOiBQLCB0b2FzdFJlZjogQmFzZVRvYXN0UmVmPFQ+KTogSW5qZWN0b3Ige1xuICAgICAgICByZXR1cm4gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgIHByb3ZpZGVyczogdGhpcy5nZXRDb250ZW50Q29tcG9uZW50UHJvdmlkZXJzKGNvbmZpZywgdG9hc3RSZWYpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbmltYXRlcyB0aGUgb2xkIFRvYXN0IG91dCBhbmQgdGhlIG5ldyBvbmUgaW4uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFuaW1hdGVUb2FzdDxUPih0b2FzdFJlZjogQmFzZVRvYXN0UmVmPFQgfCBFbWJlZGRlZFZpZXdSZWY8YW55PiwgUD4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRvYXN0UmVmLnBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgICAgIC8vIFdoZW4gdGhlIHRvYXN0IGlzIGRpc21pc3NlZCwgY2xlYXIgdGhlIHJlZmVyZW5jZSB0byBpdC5cbiAgICAgICAgdG9hc3RSZWZcbiAgICAgICAgICAgIC5hZnRlckRpc21pc3NlZCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxsVG9hc3RzID0gdGhpcy5fdG9hc3RzTWFwLmdldChwb3NpdGlvblN0cmF0ZWd5KSB8fCBbXTtcbiAgICAgICAgICAgICAgICBhbGxUb2FzdHMuc3BsaWNlKGFsbFRvYXN0cy5pbmRleE9mKHRvYXN0UmVmKSwgMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdG9hc3RzLnNwbGljZSh0aGlzLl90b2FzdHMuaW5kZXhPZih0b2FzdFJlZiksIDEpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3RvYXN0c01hcC5zZXQocG9zaXRpb25TdHJhdGVneSwgYWxsVG9hc3RzKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWZyZXNoT3ZlcmxheVBvc2l0aW9ucygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdG9hc3RSZWYuY29udGFpbmVySW5zdGFuY2UuZW50ZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3JlYXRlcyBhIG5ldyBvdmVybGF5IGFuZCBwbGFjZXMgaXQgaW4gdGhlIGNvcnJlY3QgbG9jYXRpb24uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY3JlYXRlT3ZlcmxheShwb3NpdGlvblN0cmF0ZWd5OiBCYXNlVG9hc3RQb3NpdGlvbik6IHsgb3ZlcmxheTogT3ZlcmxheVJlZjsgaXNBbmNob3I6IGJvb2xlYW4gfSB7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZygpO1xuICAgICAgICBvdmVybGF5Q29uZmlnLnNjcm9sbFN0cmF0ZWd5ID0gcG9zaXRpb25TdHJhdGVneS5zY3JvbGxQb3NpdGlvbiB8fCB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgeyBwb3NpdGlvbiwgaXNBbmNob3IgfSA9IHRoaXMuX2dldFBvc2l0aW9uU3RyYXRlZ3kocG9zaXRpb25TdHJhdGVneSk7XG5cbiAgICAgICAgb3ZlcmxheUNvbmZpZy5wb3NpdGlvblN0cmF0ZWd5ID0gcG9zaXRpb247XG4gICAgICAgIG92ZXJsYXlDb25maWcucGFuZWxDbGFzcyA9ICdmZC10b2FzdC1vdmVybGF5JztcbiAgICAgICAgcmV0dXJuIHsgb3ZlcmxheTogdGhpcy5vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKSwgaXNBbmNob3IgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHJldHVybnMgSW5pdGlhbCBQb3NpdGlvbiBTdHJhdGVneSBvZiB0aGUgVG9hc3QgT3ZlcmxheSBSZWZlcmVuY2UuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0UG9zaXRpb25TdHJhdGVneShwb3NpdGlvblN0cmF0ZWd5OiBCYXNlVG9hc3RQb3NpdGlvbik6IHtcbiAgICAgICAgcG9zaXRpb246IFBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgICAgIGlzQW5jaG9yOiBib29sZWFuO1xuICAgIH0ge1xuICAgICAgICBjb25zdCBsYXN0T3ZlcmxheSA9IHRoaXMuX2dldExhc3RUb2FzdFdpdGhTYW1lUG9zaXRpb24ocG9zaXRpb25TdHJhdGVneSk7XG5cbiAgICAgICAgY29uc3QgZ2xvYmFsT3ZlcmxheSA9IHRoaXMuX3RvYXN0c01hcC5nZXQocG9zaXRpb25TdHJhdGVneSk/LmZpbmQoKHsgX2lzQW5jaG9yIH0pID0+IF9pc0FuY2hvcik7XG5cbiAgICAgICAgaWYgKGxhc3RPdmVybGF5ICYmIGdsb2JhbE92ZXJsYXkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHRoaXMuX2NvbXBvc2VGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uKFxuICAgICAgICAgICAgICAgICAgICBsYXN0T3ZlcmxheS5vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBpc0FuY2hvcjogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyBwb3NpdGlvbjogdGhpcy5fY29tcG9zZUdsb2JhbFBvc2l0aW9uKHBvc2l0aW9uU3RyYXRlZ3kpLCBpc0FuY2hvcjogdHJ1ZSB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gbmVlZGxlUG9zaXRpb25cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldExhc3RUb2FzdFdpdGhTYW1lUG9zaXRpb24obmVlZGxlUG9zaXRpb246IEJhc2VUb2FzdFBvc2l0aW9uKTogQmFzZVRvYXN0UmVmPFAsIEM+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIFsuLi4odGhpcy5fdG9hc3RzTWFwLmdldChuZWVkbGVQb3NpdGlvbikgfHwgW10pXT8ucmV2ZXJzZSgpWzBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gY29ubmVjdGVkRWxtIGVsZW1lbnQgdG8gY29ubmVjdCB3aXRoLlxuICAgICAqIEBwYXJhbSBwb3NpdGlvblN0cmF0ZWd5IFBvc2l0aW9uIFN0cmF0ZWd5XG4gICAgICogQHJldHVybnMgRmxleGlibGUgQ29ubmVjdGVkIFBvc2l0aW9uIFN0cmF0ZWd5IGZvciBPdmVybGF5IFJlZmVyZW5jZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb21wb3NlRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvbihcbiAgICAgICAgY29ubmVjdGVkRWxtOiBIVE1MRWxlbWVudCxcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneTogQmFzZVRvYXN0UG9zaXRpb25cbiAgICApOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5ID0gcG9zaXRpb25TdHJhdGVneSB8fCB0aGlzLnRvYXN0UG9zaXRpb25TdHJhdGVneTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGNvbm5lY3RlZEVsbSlcbiAgICAgICAgICAgIC53aXRoUHVzaChmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtwb3NpdGlvblN0cmF0ZWd5LmNvbm5lY3RlZF0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcmV0dXJucyBEZWZhdWx0IEdsb2JhbCBQb3NpdGlvbiBmb3IgT3ZlcmxheSBSZWZlcmVuY2UuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29tcG9zZUdsb2JhbFBvc2l0aW9uKFxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiBCYXNlVG9hc3RQb3NpdGlvblxuICAgICk6IEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3kgfCBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICBsZXQgcG9zaXRpb246IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB8IEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgICAgIGlmICh0aGlzLl9pc0JvdW5kR2xvYmFsUG9zaXRpb24ocG9zaXRpb25TdHJhdGVneS5nbG9iYWwpKSB7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8ocG9zaXRpb25TdHJhdGVneS5nbG9iYWwuYm91bmRUbylcbiAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbcG9zaXRpb25TdHJhdGVneS5nbG9iYWxdKVxuICAgICAgICAgICAgICAgIC53aXRoUHVzaChmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpO1xuICAgICAgICAgICAgY29uc3QgZ2xvYmFsVG9hc3RQb3NpdGlvblN0cmF0ZWd5OiBUb2FzdEdsb2JhbFBvc2l0aW9uID0gcG9zaXRpb25TdHJhdGVneS5nbG9iYWw7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgW3BvcywgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGdsb2JhbFRvYXN0UG9zaXRpb25TdHJhdGVneSkpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHBvcykge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uLmxlZnQodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uLnJpZ2h0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24uYm90dG9tKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24udG9wKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24uY2VudGVySG9yaXpvbnRhbGx5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2VudGVyVmVydGljYWxseSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbi5jZW50ZXJWZXJ0aWNhbGx5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcG9zaXRpb247XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZWZyZXNoT3ZlcmxheVBvc2l0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdG9hc3RzTWFwLmZvckVhY2goKHRvYXN0cykgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlT3ZlcmxheVBvc2l0aW9uU3RyYXRlZ3kodG9hc3RzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF91cGRhdGVPdmVybGF5UG9zaXRpb25TdHJhdGVneSh0b2FzdHM6IEJhc2VUb2FzdFJlZltdKTogdm9pZCB7XG4gICAgICAgIHRvYXN0cy5mb3JFYWNoKCh0b2FzdFJlZikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuX3VwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodG9hc3RSZWYpO1xuICAgICAgICAgICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IHRvYXN0UmVmLm92ZXJsYXlSZWYuZ2V0Q29uZmlnKCk7XG5cbiAgICAgICAgICAgIHRvYXN0UmVmLm92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb25TdHJhdGVneShwb3NpdGlvblN0cmF0ZWd5KTtcbiAgICAgICAgICAgIG92ZXJsYXlDb25maWcucG9zaXRpb25TdHJhdGVneSA9IHBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBVcGRhdGVzIHRoZSBwb3NpdGlvbiBvZiBhIGN1cnJlbnQgT3ZlcmxheSBSZWZlcmVuY2UuXG4gICAgICogQHJldHVybnMgTmV3IFBvc2l0aW9uIFN0cmF0ZWd5LlxuICAgICAqIEBwYXJhbSB0b2FzdCBUb2FzdCBSZWZlcmVuY2VcbiAgICAgKi9cbiAgICBwcml2YXRlIF91cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRvYXN0OiBCYXNlVG9hc3RSZWYpOiBQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRvYXN0Ll9kZWZhdWx0UG9zaXRpb25TdHJhdGVneSA/IHRoaXMudG9hc3RQb3NpdGlvblN0cmF0ZWd5IDogdG9hc3QucG9zaXRpb25TdHJhdGVneTtcblxuICAgICAgICBpZiAodG9hc3QuX2lzQW5jaG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tcG9zZUdsb2JhbFBvc2l0aW9uKHBvc2l0aW9uU3RyYXRlZ3kpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG9hc3RzID0gdGhpcy5fdG9hc3RzTWFwLmdldChwb3NpdGlvblN0cmF0ZWd5KSB8fCBbXTtcblxuICAgICAgICBjb25zdCBnbG9iYWxPdmVybGF5ID0gdG9hc3RzPy5maW5kKCh7IF9pc0FuY2hvciB9KSA9PiBfaXNBbmNob3IpO1xuXG4gICAgICAgIGlmICghZ2xvYmFsT3ZlcmxheSkge1xuICAgICAgICAgICAgdG9hc3QuX2lzQW5jaG9yID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb21wb3NlR2xvYmFsUG9zaXRpb24ocG9zaXRpb25TdHJhdGVneSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXQgUHJldmlvdXMgb3ZlcmxheSBpdGVtLlxuICAgICAgICBjb25zdCBvdmVybGF5SXRlbUluZGV4ID0gdG9hc3RzLmZpbmRJbmRleCgodCkgPT4gdCA9PT0gdG9hc3QpO1xuICAgICAgICBjb25zdCBwcmV2aW91c092ZXJsYXkgPSB0b2FzdHNbb3ZlcmxheUl0ZW1JbmRleCAtIDFdO1xuICAgICAgICB0b2FzdC5faXNBbmNob3IgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fY29tcG9zZUZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb24ocHJldmlvdXNPdmVybGF5Lm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQsIHBvc2l0aW9uU3RyYXRlZ3kpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNCb3VuZEdsb2JhbFBvc2l0aW9uKHBvc2l0aW9uOiBhbnkpOiBwb3NpdGlvbiBpcyBUb2FzdEdsb2JhbENvbm5lY3RlZFBvc2l0aW9uIHtcbiAgICAgICAgcmV0dXJuICEhcG9zaXRpb24uYm91bmRUbztcbiAgICB9XG59XG4iXX0=
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b2FzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy90b2FzdC9iYXNlLXRvYXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlILE9BQU8sRUFDUCxhQUFhLEVBR2hCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBR0gsVUFBVSxFQUVWLFFBQVEsRUFHUixXQUFXLEVBR2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBR3RDLE1BQU0sT0FBZ0IsZ0JBQWdCO0lBOEJsQyxjQUFjO0lBQ2QsWUFBNkIsT0FBZ0IsRUFBUyxRQUFrQjtRQUEzQyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWZ4RTs7O1dBR0c7UUFDTyxZQUFPLEdBQW1CLEVBQUUsQ0FBQztRQUV2Qzs7V0FFRztRQUNPLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBcUMsQ0FBQztRQUVwRSxjQUFjO1FBQ04sY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFHbUMsQ0FBQztJQXlDNUU7O09BRUc7SUFDSCxPQUFPO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQjtRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFB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QUMsZ0JBQWdCLENBQUMsQ0FBQztTQUN4RDtRQUVELDZCQUE2QjtRQUM3QixNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztRQUM5RCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckQsS0FBSyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFeEIsT0FBTyxJQUFJLENBQUMsaUNBQWlDLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQsY0FBYztJQUNOLHNCQUFzQixDQUFDLFFBQWE7UUFDeEMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUM5QixDQUFDOzhHQS9YaUIsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudFR5cGUsXG4gICAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxuICAgIEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgT3ZlcmxheSxcbiAgICBPdmVybGF5Q29uZmlnLFxuICAgIE92ZXJsYXlSZWYsXG4gICAgUG9zaXRpb25TdHJhdGVneVxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudFJlZixcbiAgICBFbWJlZGRlZFZpZXdSZWYsXG4gICAgSW5qZWN0YWJsZSxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBJbmplY3RvcixcbiAgICBPbkRlc3Ryb3ksXG4gICAgU3RhdGljUHJvdmlkZXIsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVHlwZSxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFzZVRvYXN0UG9zaXRpb24sIFRvYXN0R2xvYmFsQ29ubmVjdGVkUG9zaXRpb24sIFRvYXN0R2xvYmFsUG9zaXRpb24gfSBmcm9tICcuL2Jhc2UtdG9hc3QtcG9zaXRpb25zJztcbmltcG9ydCB7IEJhc2VUb2FzdENvbmZpZyB9IGZyb20gJy4vY2xhc3Nlcy9iYXNlLXRvYXN0LWNvbmZpZyc7XG5pbXBvcnQgeyBCYXNlVG9hc3RSZWYgfSBmcm9tICcuL2NsYXNzZXMvYmFzZS10b2FzdC1yZWYnO1xuaW1wb3J0IHsgVG9hc3RDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvdG9hc3QtY29udGFpbmVyLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVG9hc3RUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3RvYXN0LXRleHQtY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyB3YXJuT25jZSB9IGZyb20gJy4uL2hlbHBlcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVRvYXN0U2VydmljZTxcbiAgICBQIGV4dGVuZHMgQmFzZVRvYXN0Q29uZmlnLFxuICAgIEMgZXh0ZW5kcyBUb2FzdENvbnRhaW5lckNvbXBvbmVudDxQPiA9IFRvYXN0Q29udGFpbmVyQ29tcG9uZW50PFA+XG4+IGltcGxlbWVudHMgT25EZXN0cm95XG57XG4gICAgLyoqIENvbXBvbmVudCBmb3Igc2ltcGxlIHRleHQgdG9hc3QuICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHRvYXN0VGV4dENvbXBvbmVudDogVHlwZTxUb2FzdFRleHRDb21wb25lbnQ+O1xuICAgIC8qKiBDb21wb25lbnQgZm9yIFRvYXN0IENvbnRhaW5lci4gKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgdG9hc3RDb250YWluZXJDb21wb25lbnQ6IFR5cGU8Qz47XG4gICAgLyoqIEluamVjdGlvbiB0b2tlbiBmb3IgVG9hc3QgRGF0YS4gKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgdG9hc3REYXRhSW5qZWN0aW9uVG9rZW46IEluamVjdGlvblRva2VuPGFueT47XG4gICAgLyoqIFRvYXN0IFBvc2l0aW9uIFN0cmF0ZWd5LiAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCB0b2FzdFBvc2l0aW9uU3RyYXRlZ3k6IEJhc2VUb2FzdFBvc2l0aW9uO1xuICAgIC8qKiBUb2FzdCBkZWZhdWx0IGNvbmZpZy4gKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZGVmYXVsdENvbmZpZzogUDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBBcnJheSBvZiBhbGwgY3VycmVudCB0b2FzdHMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF90b2FzdHM6IEJhc2VUb2FzdFJlZltdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF90b2FzdHNNYXAgPSBuZXcgTWFwPEJhc2VUb2FzdFBvc2l0aW9uLCBCYXNlVG9hc3RSZWZbXT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHVibGljIG92ZXJsYXk6IE92ZXJsYXksIHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIFRvYXN0IENvbnRhaW5lciBwcm92aWRlcnMuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUb2FzdCBDb25maWcuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldENvbnRhaW5lckNvbXBvbmVudFByb3ZpZGVycyhjb25maWc6IFApOiBTdGF0aWNQcm92aWRlcltdO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBUb2FzdCBDb250ZW50IHByb3ZpZGVycy5cbiAgICAgKiBAcGFyYW0gY29uZmlnIFRvYXN0IENvbmZpZy5cbiAgICAgKiBAcGFyYW0gdG9hc3RSZWYgVG9hc3QgUmVmZXJlbmNlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRDb250ZW50Q29tcG9uZW50UHJvdmlkZXJzPFQ+KGNvbmZpZzogUCwgdG9hc3RSZWY6IEJhc2VUb2FzdFJlZjxUPik6IFN0YXRpY1Byb3ZpZGVyW107XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhIFRvYXN0IHdpdGggdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24uXG4gICAgICogQHBhcmFtIHRvYXN0IGFjY2VwdHMgc3RyaW5nLCBDb21wb25lbnQgb3IgVGVtcGxhdGVSZWYuXG4gICAgICovXG4gICAgYWJzdHJhY3Qgb3BlbjxUPihcbiAgICAgICAgdG9hc3Q6IHN0cmluZyB8IFR5cGU8VD4gfCBUZW1wbGF0ZVJlZjxUPlxuICAgICk6IEJhc2VUb2FzdFJlZjxUb2FzdFRleHRDb21wb25lbnQgfCBUIHwgRW1iZWRkZWRWaWV3UmVmPFQ+LCBQPjtcblxuICAgIGFic3RyYWN0IG9wZW5Gcm9tU3RyaW5nKG1lc3NhZ2U6IHN0cmluZywgY29uZmlnOiBQKTogQmFzZVRvYXN0UmVmPFRvYXN0VGV4dENvbXBvbmVudCwgUD47XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhIFRvYXN0IHdpdGggcHJvdmlkZWQgY29tcG9uZW50IGluc2lkZS5cbiAgICAgKiBAcGFyYW0gY29tcG9uZW50IENvbXBvbmVudCB0byByZW5kZXIgaW5zaWRlIGEgVG9hc3QuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUb2FzdCBjb25maWd1cmF0aW9uLlxuICAgICAqIEByZXR1cm5zIFRvYXN0IHJlZmVyZW5jZS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBvcGVuRnJvbUNvbXBvbmVudDxUPihjb21wb25lbnQ6IFR5cGU8VD4sIGNvbmZpZzogUCk6IEJhc2VUb2FzdFJlZjxULCBQPjtcblxuICAgIC8qKlxuICAgICAqIE9wZW5zIGEgVG9hc3Qgd2l0aCBwcm92aWRlZCBUZW1wbGF0ZSBSZWZlcmVuY2UuXG4gICAgICogQHBhcmFtIHRlbXBsYXRlIFRlbXBsYXRlIFJlZmVyZW5jZSB0byByZW5kZXIgaW5zaWRlIGEgVG9hc3QuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUb2FzdCBjb25maWd1cmF0aW9uLlxuICAgICAqIEByZXR1cm5zIFRvYXN0IHJlZmVyZW5jZS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBvcGVuRnJvbVRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+LCBjb25maWc6IFApOiBCYXNlVG9hc3RSZWY8RW1iZWRkZWRWaWV3UmVmPGFueT4+O1xuXG4gICAgLyoqXG4gICAgICogRGlzbWlzc2VzIGFsbCBUb2FzdHMuXG4gICAgICovXG4gICAgaGlkZUFsbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdG9hc3RzLmZvckVhY2goKHQpID0+IHQuZGlzbWlzcygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGB0cnVlYCBpZiB0aGVyZSBhcmUgc29tZSBtZXNzYWdlIHRvYXN0cyBjdXJyZW50bHkgb3Blbi4gYEZhbHNlYCBvdGhlcndpc2UuXG4gICAgICovXG4gICAgaGFzT3Blbk1lc3NhZ2VUb2FzdHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90b2FzdHMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZC5cbiAgICAgKiBVc2UgYGhpZGVBbGwoKWAgbWV0aG9kIGluc3RlYWQuXG4gICAgICovXG4gICAgZGlzbWlzc0FsbCgpOiB2b2lkIHtcbiAgICAgICAgd2Fybk9uY2UoJ2Rpc21pc3NBbGwoKSBpcyBkZXByZWNhdGVkLiBVc2UgaGlkZUFsbCgpIGluc3RlYWQuJyk7XG4gICAgICAgIHRoaXMuaGlkZUFsbCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgbmV3IHBvc2l0aW9uIHN0cmF0ZWd5IGZvciBhbGwgVG9hc3QgaXRlbXMuXG4gICAgICogQHBhcmFtIG5ld1N0cmF0ZWd5IE5ldyBQb3NpdGlvbiBTdHJhdGVneVxuICAgICAqL1xuICAgIHNldE5ld1Bvc2l0aW9uU3RyYXRlZ3kobmV3U3RyYXRlZ3k6IEJhc2VUb2FzdFBvc2l0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmIChuZXdTdHJhdGVneSA9PT0gdGhpcy50b2FzdFBvc2l0aW9uU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9hc3RQb3NpdGlvblN0cmF0ZWd5ID0gbmV3U3RyYXRlZ3k7XG5cbiAgICAgICAgdGhpcy5fcmVmcmVzaE92ZXJsYXlQb3NpdGlvbnMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIFRvYXN0IFJlZmVyZW5jZSBmb3IgcHJvdmlkZWQgY29udGFpbmVyIGFuZCBvdmVybGF5LlxuICAgICAqIEBwYXJhbSBjb250YWluZXJSZWYgQ29udGFpbmVyIHJlZmVyZW5jZS5cbiAgICAgKiBAcGFyYW0gb3ZlcmxheVJlZiBPdmVybGF5IFJlZmVyZW5jZS5cbiAgICAgKiBAcGFyYW0gcG9zaXRpb25TdHJhdGVneSBQb3NpdGlvbiBTdHJhdGVneVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRUb2FzdFJlZjxUPihcbiAgICAgICAgY29udGFpbmVyUmVmOiBDLFxuICAgICAgICBvdmVybGF5UmVmOiBPdmVybGF5UmVmLFxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiBCYXNlVG9hc3RQb3NpdGlvblxuICAgICk6IEJhc2VUb2FzdFJlZjxUIHwgRW1iZWRkZWRWaWV3UmVmPGFueT4sIFA+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFBsYWNlcyBhIG5ldyBjb21wb25lbnQgb3IgYSB0ZW1wbGF0ZSBhcyB0aGUgY29udGVudCBvZiB0aGUgVG9hc3QgY29udGFpbmVyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfYXR0YWNoPFQ+KFxuICAgICAgICBjb250ZW50OiBDb21wb25lbnRUeXBlPFQ+IHwgVGVtcGxhdGVSZWY8VD4sXG4gICAgICAgIHVzZXJDb25maWc/OiBQXG4gICAgKTogQmFzZVRvYXN0UmVmPFQgfCBFbWJlZGRlZFZpZXdSZWY8YW55PiwgUD4ge1xuICAgICAgICBjb25zdCBjb25maWcgPSB7IC4uLnRoaXMuZGVmYXVsdENvbmZpZywgLi4udXNlckNvbmZpZyB9O1xuICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gY29uZmlnLnBvc2l0aW9uU3RyYXRlZ3kgfHwgdGhpcy50b2FzdFBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgICAgIGNvbnN0IHsgb3ZlcmxheSwgaXNBbmNob3IgfSA9IHRoaXMuX2NyZWF0ZU92ZXJsYXkocG9zaXRpb25TdHJhdGVneSk7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHRoaXMuYXR0YWNoVG9hc3RDb250YWluZXJDb21wb25lbnQob3ZlcmxheSwgY29uZmlnKTtcbiAgICAgICAgY29uc3QgdG9hc3RSZWYgPSB0aGlzLmdldFRvYXN0UmVmPFQ+KGNvbnRhaW5lclJlZiwgb3ZlcmxheSwgcG9zaXRpb25TdHJhdGVneSk7XG4gICAgICAgIHRvYXN0UmVmLl9kZWZhdWx0UG9zaXRpb25TdHJhdGVneSA9ICFjb25maWcucG9zaXRpb25TdHJhdGVneTtcbiAgICAgICAgdG9hc3RSZWYuX2lzQW5jaG9yID0gaXNBbmNob3I7XG5cbiAgICAgICAgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgLy8gVGVtcGxhdGVQb3J0YWwgcmVxdWlyZXMgdmlld0NvbnRhaW5lciByZWZcbiAgICAgICAgICAgIGNvbnN0IHZpZXdSZWYgPSBudWxsIGFzIGFueSBhcyBWaWV3Q29udGFpbmVyUmVmO1xuICAgICAgICAgICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKGNvbnRlbnQsIHZpZXdSZWYsIHsgJGltcGxpY2l0OiBjb25maWcsIHRvYXN0UmVmIH0gYXMgYW55KTtcblxuICAgICAgICAgICAgdG9hc3RSZWYuaW5zdGFuY2UgPSBjb250YWluZXJSZWYuYXR0YWNoVGVtcGxhdGVQb3J0YWwocG9ydGFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5jcmVhdGVDb250ZW50Q29tcG9uZW50SW5qZWN0b3IoY29uZmlnLCB0b2FzdFJlZik7XG4gICAgICAgICAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbnRlbnQsIHVuZGVmaW5lZCwgaW5qZWN0b3IpO1xuICAgICAgICAgICAgY29uc3QgY29udGVudFJlZiA9IGNvbnRhaW5lclJlZi5hdHRhY2hDb21wb25lbnRQb3J0YWw8VD4ocG9ydGFsKTtcblxuICAgICAgICAgICAgLy8gV2UgY2FuJ3QgcGFzcyB0aGlzIHZpYSB0aGUgaW5qZWN0b3IsIGJlY2F1c2UgdGhlIGluamVjdG9yIGlzIGNyZWF0ZWQgZWFybGllci5cbiAgICAgICAgICAgIHRvYXN0UmVmLmluc3RhbmNlID0gY29udGVudFJlZi5pbnN0YW5jZTtcblxuICAgICAgICAgICAgY29udGVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhbGxUb2FzdHMgPSB0aGlzLl90b2FzdHNNYXAuZ2V0KHBvc2l0aW9uU3RyYXRlZ3kpIHx8IFtdO1xuICAgICAgICBhbGxUb2FzdHMucHVzaCh0b2FzdFJlZik7XG4gICAgICAgIHRoaXMuX3RvYXN0cy5wdXNoKHRvYXN0UmVmKTtcbiAgICAgICAgdGhpcy5fdG9hc3RzTWFwLnNldChwb3NpdGlvblN0cmF0ZWd5LCBhbGxUb2FzdHMpO1xuXG4gICAgICAgIHRoaXMuYW5pbWF0ZVRvYXN0PFQ+KHRvYXN0UmVmKTtcblxuICAgICAgICByZXR1cm4gdG9hc3RSZWY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgdGhlIFRvYXN0IGNvbnRhaW5lciBjb21wb25lbnQgdG8gdGhlIG92ZXJsYXkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGF0dGFjaFRvYXN0Q29udGFpbmVyQ29tcG9uZW50KG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYsIGNvbmZpZzogUCk6IEMge1xuICAgICAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgICBwcm92aWRlcnM6IHRoaXMuZ2V0Q29udGFpbmVyQ29tcG9uZW50UHJvdmlkZXJzKGNvbmZpZylcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbCh0aGlzLnRvYXN0Q29udGFpbmVyQ29tcG9uZW50LCBudWxsLCBpbmplY3Rvcik7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZjogQ29tcG9uZW50UmVmPEM+ID0gb3ZlcmxheVJlZi5hdHRhY2goY29udGFpbmVyUG9ydGFsKTtcblxuICAgICAgICBjb250YWluZXJSZWYuaW5zdGFuY2UuY29uZmlnID0gY29uZmlnO1xuICAgICAgICBjb250YWluZXJSZWYuaW5zdGFuY2Uub3ZlcmxheVJlZiA9IG92ZXJsYXlSZWY7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lclJlZi5pbnN0YW5jZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluamVjdG9yIHRvIGJlIHVzZWQgaW5zaWRlIGEgVG9hc3QgY29tcG9uZW50LlxuICAgICAqIEBwYXJhbSBjb25maWcgQ29uZmlnIHRoYXQgd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSBUb2FzdC5cbiAgICAgKiBAcGFyYW0gdG9hc3RSZWYgUmVmZXJlbmNlIHRvIHRoZSBUb2FzdC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY3JlYXRlQ29udGVudENvbXBvbmVudEluamVjdG9yPFQ+KGNvbmZpZzogUCwgdG9hc3RSZWY6IEJhc2VUb2FzdFJlZjxUPik6IEluamVjdG9yIHtcbiAgICAgICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgICBwcm92aWRlcnM6IHRoaXMuZ2V0Q29udGVudENvbXBvbmVudFByb3ZpZGVycyhjb25maWcsIHRvYXN0UmVmKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW5pbWF0ZXMgdGhlIG9sZCBUb2FzdCBvdXQgYW5kIHRoZSBuZXcgb25lIGluLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhbmltYXRlVG9hc3Q8VD4odG9hc3RSZWY6IEJhc2VUb2FzdFJlZjxUIHwgRW1iZWRkZWRWaWV3UmVmPGFueT4sIFA+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0b2FzdFJlZi5wb3NpdGlvblN0cmF0ZWd5O1xuICAgICAgICAvLyBXaGVuIHRoZSB0b2FzdCBpcyBkaXNtaXNzZWQsIGNsZWFyIHRoZSByZWZlcmVuY2UgdG8gaXQuXG4gICAgICAgIHRvYXN0UmVmXG4gICAgICAgICAgICAuYWZ0ZXJEaXNtaXNzZWQoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFsbFRvYXN0cyA9IHRoaXMuX3RvYXN0c01hcC5nZXQocG9zaXRpb25TdHJhdGVneSkgfHwgW107XG4gICAgICAgICAgICAgICAgYWxsVG9hc3RzLnNwbGljZShhbGxUb2FzdHMuaW5kZXhPZih0b2FzdFJlZiksIDEpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3RvYXN0cy5zcGxpY2UodGhpcy5fdG9hc3RzLmluZGV4T2YodG9hc3RSZWYpLCAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLl90b2FzdHNNYXAuc2V0KHBvc2l0aW9uU3RyYXRlZ3ksIGFsbFRvYXN0cyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVmcmVzaE92ZXJsYXlQb3NpdGlvbnMoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRvYXN0UmVmLmNvbnRhaW5lckluc3RhbmNlLmVudGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENyZWF0ZXMgYSBuZXcgb3ZlcmxheSBhbmQgcGxhY2VzIGl0IGluIHRoZSBjb3JyZWN0IGxvY2F0aW9uLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NyZWF0ZU92ZXJsYXkocG9zaXRpb25TdHJhdGVneTogQmFzZVRvYXN0UG9zaXRpb24pOiB7IG92ZXJsYXk6IE92ZXJsYXlSZWY7IGlzQW5jaG9yOiBib29sZWFuIH0ge1xuICAgICAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoKTtcbiAgICAgICAgb3ZlcmxheUNvbmZpZy5zY3JvbGxTdHJhdGVneSA9IHBvc2l0aW9uU3RyYXRlZ3kuc2Nyb2xsUG9zaXRpb24gfHwgdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xuXG4gICAgICAgIGNvbnN0IHsgcG9zaXRpb24sIGlzQW5jaG9yIH0gPSB0aGlzLl9nZXRQb3NpdGlvblN0cmF0ZWd5KHBvc2l0aW9uU3RyYXRlZ3kpO1xuXG4gICAgICAgIG92ZXJsYXlDb25maWcucG9zaXRpb25TdHJhdGVneSA9IHBvc2l0aW9uO1xuICAgICAgICBvdmVybGF5Q29uZmlnLnBhbmVsQ2xhc3MgPSAnZmQtdG9hc3Qtb3ZlcmxheSc7XG4gICAgICAgIHJldHVybiB7IG92ZXJsYXk6IHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyksIGlzQW5jaG9yIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEByZXR1cm5zIEluaXRpYWwgUG9zaXRpb24gU3RyYXRlZ3kgb2YgdGhlIFRvYXN0IE92ZXJsYXkgUmVmZXJlbmNlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldFBvc2l0aW9uU3RyYXRlZ3kocG9zaXRpb25TdHJhdGVneTogQmFzZVRvYXN0UG9zaXRpb24pOiB7XG4gICAgICAgIHBvc2l0aW9uOiBQb3NpdGlvblN0cmF0ZWd5O1xuICAgICAgICBpc0FuY2hvcjogYm9vbGVhbjtcbiAgICB9IHtcbiAgICAgICAgY29uc3QgbGFzdE92ZXJsYXkgPSB0aGlzLl9nZXRMYXN0VG9hc3RXaXRoU2FtZVBvc2l0aW9uKHBvc2l0aW9uU3RyYXRlZ3kpO1xuXG4gICAgICAgIGNvbnN0IGdsb2JhbE92ZXJsYXkgPSB0aGlzLl90b2FzdHNNYXAuZ2V0KHBvc2l0aW9uU3RyYXRlZ3kpPy5maW5kKCh7IF9pc0FuY2hvciB9KSA9PiBfaXNBbmNob3IpO1xuXG4gICAgICAgIGlmIChsYXN0T3ZlcmxheSAmJiBnbG9iYWxPdmVybGF5KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB0aGlzLl9jb21wb3NlRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbGFzdE92ZXJsYXkub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaXNBbmNob3I6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgcG9zaXRpb246IHRoaXMuX2NvbXBvc2VHbG9iYWxQb3NpdGlvbihwb3NpdGlvblN0cmF0ZWd5KSwgaXNBbmNob3I6IHRydWUgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIG5lZWRsZVBvc2l0aW9uXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRMYXN0VG9hc3RXaXRoU2FtZVBvc2l0aW9uKG5lZWRsZVBvc2l0aW9uOiBCYXNlVG9hc3RQb3NpdGlvbik6IEJhc2VUb2FzdFJlZjxQLCBDPiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBbLi4uKHRoaXMuX3RvYXN0c01hcC5nZXQobmVlZGxlUG9zaXRpb24pIHx8IFtdKV0/LnJldmVyc2UoKVswXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIGNvbm5lY3RlZEVsbSBlbGVtZW50IHRvIGNvbm5lY3Qgd2l0aC5cbiAgICAgKiBAcGFyYW0gcG9zaXRpb25TdHJhdGVneSBQb3NpdGlvbiBTdHJhdGVneVxuICAgICAqIEByZXR1cm5zIEZsZXhpYmxlIENvbm5lY3RlZCBQb3NpdGlvbiBTdHJhdGVneSBmb3IgT3ZlcmxheSBSZWZlcmVuY2UuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29tcG9zZUZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb24oXG4gICAgICAgIGNvbm5lY3RlZEVsbTogSFRNTEVsZW1lbnQsXG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IEJhc2VUb2FzdFBvc2l0aW9uXG4gICAgKTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneSA9IHBvc2l0aW9uU3RyYXRlZ3kgfHwgdGhpcy50b2FzdFBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhjb25uZWN0ZWRFbG0pXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbcG9zaXRpb25TdHJhdGVneS5jb25uZWN0ZWRdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHJldHVybnMgRGVmYXVsdCBHbG9iYWwgUG9zaXRpb24gZm9yIE92ZXJsYXkgUmVmZXJlbmNlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbXBvc2VHbG9iYWxQb3NpdGlvbihcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneTogQmFzZVRvYXN0UG9zaXRpb25cbiAgICApOiBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5IHwgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICAgICAgbGV0IHBvc2l0aW9uOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kgfCBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5O1xuICAgICAgICBpZiAodGhpcy5faXNCb3VuZEdsb2JhbFBvc2l0aW9uKHBvc2l0aW9uU3RyYXRlZ3kuZ2xvYmFsKSkge1xuICAgICAgICAgICAgcG9zaXRpb24gPSB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHBvc2l0aW9uU3RyYXRlZ3kuZ2xvYmFsLmJvdW5kVG8pXG4gICAgICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW3Bvc2l0aW9uU3RyYXRlZ3kuZ2xvYmFsXSlcbiAgICAgICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9zaXRpb24gPSB0aGlzLm92ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKTtcbiAgICAgICAgICAgIGNvbnN0IGdsb2JhbFRvYXN0UG9zaXRpb25TdHJhdGVneTogVG9hc3RHbG9iYWxQb3NpdGlvbiA9IHBvc2l0aW9uU3RyYXRlZ3kuZ2xvYmFsO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtwb3MsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhnbG9iYWxUb2FzdFBvc2l0aW9uU3RyYXRlZ3kpKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChwb3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbi5sZWZ0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbi5yaWdodCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uLmJvdHRvbSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uLnRvcCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uLmNlbnRlckhvcml6b250YWxseSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NlbnRlclZlcnRpY2FsbHknOlxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24uY2VudGVyVmVydGljYWxseSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBvc2l0aW9uO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaE92ZXJsYXlQb3NpdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RvYXN0c01hcC5mb3JFYWNoKCh0b2FzdHMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5KHRvYXN0cyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlT3ZlcmxheVBvc2l0aW9uU3RyYXRlZ3kodG9hc3RzOiBCYXNlVG9hc3RSZWZbXSk6IHZvaWQge1xuICAgICAgICB0b2FzdHMuZm9yRWFjaCgodG9hc3RSZWYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLl91cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRvYXN0UmVmKTtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSB0b2FzdFJlZi5vdmVybGF5UmVmLmdldENvbmZpZygpO1xuXG4gICAgICAgICAgICB0b2FzdFJlZi5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kocG9zaXRpb25TdHJhdGVneSk7XG4gICAgICAgICAgICBvdmVybGF5Q29uZmlnLnBvc2l0aW9uU3RyYXRlZ3kgPSBwb3NpdGlvblN0cmF0ZWd5O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVXBkYXRlcyB0aGUgcG9zaXRpb24gb2YgYSBjdXJyZW50IE92ZXJsYXkgUmVmZXJlbmNlLlxuICAgICAqIEByZXR1cm5zIE5ldyBQb3NpdGlvbiBTdHJhdGVneS5cbiAgICAgKiBAcGFyYW0gdG9hc3QgVG9hc3QgUmVmZXJlbmNlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlUG9zaXRpb25TdHJhdGVneSh0b2FzdDogQmFzZVRvYXN0UmVmKTogUG9zaXRpb25TdHJhdGVneSB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0b2FzdC5fZGVmYXVsdFBvc2l0aW9uU3RyYXRlZ3kgPyB0aGlzLnRvYXN0UG9zaXRpb25TdHJhdGVneSA6IHRvYXN0LnBvc2l0aW9uU3RyYXRlZ3k7XG5cbiAgICAgICAgaWYgKHRvYXN0Ll9pc0FuY2hvcikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBvc2VHbG9iYWxQb3NpdGlvbihwb3NpdGlvblN0cmF0ZWd5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvYXN0cyA9IHRoaXMuX3RvYXN0c01hcC5nZXQocG9zaXRpb25TdHJhdGVneSkgfHwgW107XG5cbiAgICAgICAgY29uc3QgZ2xvYmFsT3ZlcmxheSA9IHRvYXN0cz8uZmluZCgoeyBfaXNBbmNob3IgfSkgPT4gX2lzQW5jaG9yKTtcblxuICAgICAgICBpZiAoIWdsb2JhbE92ZXJsYXkpIHtcbiAgICAgICAgICAgIHRvYXN0Ll9pc0FuY2hvciA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tcG9zZUdsb2JhbFBvc2l0aW9uKHBvc2l0aW9uU3RyYXRlZ3kpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2V0IFByZXZpb3VzIG92ZXJsYXkgaXRlbS5cbiAgICAgICAgY29uc3Qgb3ZlcmxheUl0ZW1JbmRleCA9IHRvYXN0cy5maW5kSW5kZXgoKHQpID0+IHQgPT09IHRvYXN0KTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNPdmVybGF5ID0gdG9hc3RzW292ZXJsYXlJdGVtSW5kZXggLSAxXTtcbiAgICAgICAgdG9hc3QuX2lzQW5jaG9yID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBvc2VGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uKHByZXZpb3VzT3ZlcmxheS5vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LCBwb3NpdGlvblN0cmF0ZWd5KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzQm91bmRHbG9iYWxQb3NpdGlvbihwb3NpdGlvbjogYW55KTogcG9zaXRpb24gaXMgVG9hc3RHbG9iYWxDb25uZWN0ZWRQb3NpdGlvbiB7XG4gICAgICAgIHJldHVybiAhIXBvc2l0aW9uLmJvdW5kVG87XG4gICAgfVxufVxuIl19