angular-three 2.0.0-beta.284 → 2.0.0-beta.286

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.
@@ -15,7 +15,6 @@ export class NgtCanvas {
15
15
  this.initRoot = injectCanvasRootInitializer();
16
16
  this.autoEffect = injectAutoEffect();
17
17
  this.host = inject(ElementRef);
18
- this.viewContainerRef = inject(ViewContainerRef);
19
18
  this.zone = inject(NgZone);
20
19
  this.environmentInjector = inject(EnvironmentInjector);
21
20
  this.injector = inject(Injector);
@@ -136,7 +135,7 @@ export class NgtCanvas {
136
135
  }
137
136
  untracked(() => {
138
137
  this.glEnvironmentInjector = createEnvironmentInjector([provideNgtRenderer(this.store)], this.environmentInjector);
139
- this.glRef = this.viewContainerRef.createComponent(untracked(this.sceneGraph), {
138
+ this.glRef = untracked(this.glCanvasViewContainerRef).createComponent(untracked(this.sceneGraph), {
140
139
  environmentInjector: this.glEnvironmentInjector,
141
140
  injector: this.injector,
142
141
  });
@@ -183,5 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
183
182
  changeDetection: ChangeDetectionStrategy.OnPush,
184
183
  }]
185
184
  }], ctorParameters: () => [] });
186
- export const injectRoot = injectCanvasRootInitializer;
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FudmFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsUUFBUSxFQUNSLHlCQUF5QixFQUN6QixVQUFVLEVBQ1YsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFFTixTQUFTLEVBQ1QsU0FBUyxFQUNULGdCQUFnQixHQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUErQixNQUFNLG1CQUFtQixDQUFDO0FBRWpHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEQsT0FBTyxFQUFFLDJCQUEyQixFQUF5QixNQUFNLFNBQVMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFcEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUF5QmhDLE1BQU0sT0FBTyxTQUFTO0lBc0RyQjtRQXJEUSxVQUFLLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFDdEIsYUFBUSxHQUFHLDJCQUEyQixFQUFFLENBQUM7UUFDekMsZUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFFaEMsU0FB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LElBQUk7Z0JBQ3ZCLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTthQUNsQixDQUFDO1lBQ25CLFlBQVksRUFBRTtTQUNkLGtPQWtEaUUsZ0JBQWdCLDZDQS9EeEU7Ozs7RUFJVCw0REFDUyxTQUFTOzsyRkFlUCxTQUFTO2tCQXZCckIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztFQUlUO29CQUNELE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQztvQkFDcEIsU0FBUyxFQUFFO3dCQUNWLG9CQUFvQixDQUFDOzRCQUNwQixVQUFVLEVBQUUsS0FBSzs0QkFDakIsaUJBQWlCLEVBQUUsSUFBSTs0QkFDdkIsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO3lCQUNsQixDQUFDO3dCQUNuQixZQUFZLEVBQUU7cUJBQ2Q7b0JBQ0QsSUFBSSxFQUFFO3dCQUNMLEtBQUssRUFBRSw4RUFBOEU7d0JBQ3JGLHVCQUF1QixFQUFFLG1CQUFtQjtxQkFDNUM7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DOztBQWdLRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdGJvb2xlYW5BdHRyaWJ1dGUsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdENvbXBvbmVudFJlZixcblx0Y29tcHV0ZWQsXG5cdGNyZWF0ZUVudmlyb25tZW50SW5qZWN0b3IsXG5cdERlc3Ryb3lSZWYsXG5cdEVsZW1lbnRSZWYsXG5cdEVudmlyb25tZW50SW5qZWN0b3IsXG5cdGluamVjdCxcblx0SW5qZWN0b3IsXG5cdGlucHV0LFxuXHROZ1pvbmUsXG5cdG91dHB1dCxcblx0c2lnbmFsLFxuXHRUeXBlLFxuXHR1bnRyYWNrZWQsXG5cdHZpZXdDaGlsZCxcblx0Vmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBvdXRwdXRGcm9tT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcbmltcG9ydCB7IE5neFJlc2l6ZSwgcHJvdmlkZVJlc2l6ZU9wdGlvbnMsIFJlc2l6ZU9wdGlvbnMsIFJlc2l6ZVJlc3VsdCB9IGZyb20gJ25neHRlbnNpb24vcmVzaXplJztcbmltcG9ydCB7IFJheWNhc3RlciwgU2NlbmUsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBjcmVhdGVQb2ludGVyRXZlbnRzIH0gZnJvbSAnLi9kb20vZXZlbnRzJztcbmltcG9ydCB7IHByb3ZpZGVOZ3RSZW5kZXJlciB9IGZyb20gJy4vcmVuZGVyZXInO1xuaW1wb3J0IHsgaW5qZWN0Q2FudmFzUm9vdEluaXRpYWxpemVyLCBOZ3RDYW52YXNDb25maWd1cmF0b3IgfSBmcm9tICcuL3Jvb3RzJztcbmltcG9ydCB7IE5ndFJvdXRlZFNjZW5lIH0gZnJvbSAnLi9yb3V0ZWQtc2NlbmUnO1xuaW1wb3J0IHsgaW5qZWN0U3RvcmUsIHByb3ZpZGVTdG9yZSB9IGZyb20gJy4vc3RvcmUnO1xuaW1wb3J0IHsgTmd0Q2FudmFzT3B0aW9ucywgTmd0RG9tRXZlbnQsIE5ndERwciwgTmd0R0xPcHRpb25zLCBOZ3RQZXJmb3JtYW5jZSwgTmd0U2l6ZSwgTmd0U3RhdGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi91dGlscy9pcyc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndC1jYW52YXMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxkaXYgKG5neFJlc2l6ZSk9XCJyZXNpemVSZXN1bHQuc2V0KCRldmVudClcIiBzdHlsZT1cImhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7XCI+XG5cdFx0XHQ8Y2FudmFzICNnbENhbnZhcyBzdHlsZT1cImRpc3BsYXk6IGJsb2NrO1wiPjwvY2FudmFzPlxuXHRcdDwvZGl2PlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd4UmVzaXplXSxcblx0cHJvdmlkZXJzOiBbXG5cdFx0cHJvdmlkZVJlc2l6ZU9wdGlvbnMoe1xuXHRcdFx0ZW1pdEluWm9uZTogZmFsc2UsXG5cdFx0XHRlbWl0SW5pdGlhbFJlc3VsdDogdHJ1ZSxcblx0XHRcdGRlYm91bmNlOiB7IHNjcm9sbDogNTAsIHJlc2l6ZTogMCB9LFxuXHRcdH0gYXMgUmVzaXplT3B0aW9ucyksXG5cdFx0cHJvdmlkZVN0b3JlKCksXG5cdF0sXG5cdGhvc3Q6IHtcblx0XHRzdHlsZTogJ2Rpc3BsYXk6IGJsb2NrO3Bvc2l0aW9uOiByZWxhdGl2ZTt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7b3ZlcmZsb3c6IGhpZGRlbjsnLFxuXHRcdCdbc3R5bGUucG9pbnRlckV2ZW50c10nOiAnaGJQb2ludGVyRXZlbnRzKCknLFxuXHR9LFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0Q2FudmFzIHtcblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdHByaXZhdGUgaW5pdFJvb3QgPSBpbmplY3RDYW52YXNSb290SW5pdGlhbGl6ZXIoKTtcblx0cHJpdmF0ZSBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdHByaXZhdGUgaG9zdCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cdHByaXZhdGUgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcblx0cHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cdHByaXZhdGUgZW52aXJvbm1lbnRJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcblx0cHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cblx0c2NlbmVHcmFwaCA9IGlucHV0LnJlcXVpcmVkPFR5cGU8YW55PiwgVHlwZTxhbnk+IHwgJ3JvdXRlZCc+KHtcblx0XHR0cmFuc2Zvcm06ICh2YWx1ZSkgPT4ge1xuXHRcdFx0aWYgKHZhbHVlID09PSAncm91dGVkJykgcmV0dXJuIE5ndFJvdXRlZFNjZW5lO1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH0sXG5cdH0pO1xuXHRnbCA9IGlucHV0PE5ndEdMT3B0aW9ucz4oKTtcblx0c2l6ZSA9IGlucHV0PE5ndFNpemU+KCk7XG5cdHNoYWRvd3MgPSBpbnB1dChmYWxzZSwge1xuXHRcdHRyYW5zZm9ybTogKHZhbHVlKSA9PiB7XG5cdFx0XHRpZiAodmFsdWUgPT09ICcnKSByZXR1cm4gYm9vbGVhbkF0dHJpYnV0ZSh2YWx1ZSk7XG5cdFx0XHRyZXR1cm4gdmFsdWUgYXMgTm9uTnVsbGFibGU8Tmd0Q2FudmFzT3B0aW9uc1snc2hhZG93cyddPjtcblx0XHR9LFxuXHR9KTtcblx0bGVnYWN5ID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXHRsaW5lYXIgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cdGZsYXQgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cdG9ydGhvZ3JhcGhpYyA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblx0ZnJhbWVsb29wID0gaW5wdXQ8Tm9uTnVsbGFibGU8Tmd0Q2FudmFzT3B0aW9uc1snZnJhbWVsb29wJ10+PignYWx3YXlzJyk7XG5cdHBlcmZvcm1hbmNlID0gaW5wdXQ8UGFydGlhbDxPbWl0PE5ndFBlcmZvcm1hbmNlLCAncmVncmVzcyc+Pj4oKTtcblx0ZHByID0gaW5wdXQ8Tmd0RHByPihbMSwgMl0pO1xuXHRyYXljYXN0ZXIgPSBpbnB1dDxQYXJ0aWFsPFJheWNhc3Rlcj4+KCk7XG5cdHNjZW5lID0gaW5wdXQ8U2NlbmUgfCBQYXJ0aWFsPFNjZW5lPj4oKTtcblx0Y2FtZXJhID0gaW5wdXQ8Tm9uTnVsbGFibGU8Tmd0Q2FudmFzT3B0aW9uc1snY2FtZXJhJ10+PigpO1xuXHRldmVudHMgPSBpbnB1dChjcmVhdGVQb2ludGVyRXZlbnRzKTtcblx0ZXZlbnRTb3VyY2UgPSBpbnB1dDxIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PigpO1xuXHRldmVudFByZWZpeCA9IGlucHV0PE5vbk51bGxhYmxlPE5ndENhbnZhc09wdGlvbnNbJ2V2ZW50UHJlZml4J10+Pignb2Zmc2V0Jyk7XG5cdGxvb2tBdCA9IGlucHV0PFZlY3RvcjMgfCBQYXJhbWV0ZXJzPFZlY3RvcjNbJ3NldCddPj4oKTtcblx0Y3JlYXRlZCA9IG91dHB1dDxOZ3RTdGF0ZT4oKTtcblx0cG9pbnRlck1pc3NlZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMuc3RvcmUuZ2V0KCdwb2ludGVyTWlzc2VkJCcpKTtcblxuXHRnbENhbnZhcyA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50Pj4oJ2dsQ2FudmFzJyk7XG5cdGdsQ2FudmFzVmlld0NvbnRhaW5lclJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZCgnZ2xDYW52YXMnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSk7XG5cblx0cHJvdGVjdGVkIGhiUG9pbnRlckV2ZW50cyA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmV2ZW50U291cmNlKCkgPyAnbm9uZScgOiAnYXV0bycpKTtcblxuXHQvLyBOT1RFOiB0aGlzIHNpZ25hbCBpcyB1cGRhdGVkIG91dHNpZGUgb2YgWm9uZVxuXHRwcm90ZWN0ZWQgcmVzaXplUmVzdWx0ID0gc2lnbmFsPFJlc2l6ZVJlc3VsdD4oe30gYXMgUmVzaXplUmVzdWx0LCB7IGVxdWFsOiBPYmplY3QuaXMgfSk7XG5cblx0cHJpdmF0ZSBjb25maWd1cmF0b3I/OiBOZ3RDYW52YXNDb25maWd1cmF0b3I7XG5cdHByaXZhdGUgZ2xFbnZpcm9ubWVudEluamVjdG9yPzogRW52aXJvbm1lbnRJbmplY3Rvcjtcblx0cHJpdmF0ZSBnbFJlZj86IENvbXBvbmVudFJlZjx1bmtub3duPjtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0dGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcblx0XHRcdFx0dGhpcy5jb25maWd1cmF0b3IgPSB0aGlzLmluaXRSb290KHRoaXMuZ2xDYW52YXMoKS5uYXRpdmVFbGVtZW50KTtcblx0XHRcdFx0dGhpcy5ub1pvbmVSZXNpemVFZmZlY3QoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0aW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiB7XG5cdFx0XHR0aGlzLmdsUmVmPy5kZXN0cm95KCk7XG5cdFx0XHR0aGlzLmdsRW52aXJvbm1lbnRJbmplY3Rvcj8uZGVzdHJveSgpO1xuXHRcdFx0dGhpcy5jb25maWd1cmF0b3I/LmRlc3Ryb3koKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgbm9ab25lUmVzaXplRWZmZWN0KCkge1xuXHRcdHRoaXMuYXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCByZXNpemVSZXN1bHQgPSB0aGlzLnJlc2l6ZVJlc3VsdCgpO1xuXHRcdFx0aWYgKHJlc2l6ZVJlc3VsdC53aWR0aCA+IDAgJiYgcmVzaXplUmVzdWx0LmhlaWdodCA+IDApIHtcblx0XHRcdFx0aWYgKCF0aGlzLmNvbmZpZ3VyYXRvcikgdGhpcy5jb25maWd1cmF0b3IgPSB0aGlzLmluaXRSb290KHRoaXMuZ2xDYW52YXMoKS5uYXRpdmVFbGVtZW50KTtcblx0XHRcdFx0dGhpcy5jb25maWd1cmF0b3IuY29uZmlndXJlKHtcblx0XHRcdFx0XHRnbDogdGhpcy5nbCgpLFxuXHRcdFx0XHRcdHNoYWRvd3M6IHRoaXMuc2hhZG93cygpLFxuXHRcdFx0XHRcdGxlZ2FjeTogdGhpcy5sZWdhY3koKSxcblx0XHRcdFx0XHRsaW5lYXI6IHRoaXMubGluZWFyKCksXG5cdFx0XHRcdFx0ZmxhdDogdGhpcy5mbGF0KCksXG5cdFx0XHRcdFx0b3J0aG9ncmFwaGljOiB0aGlzLm9ydGhvZ3JhcGhpYygpLFxuXHRcdFx0XHRcdGZyYW1lbG9vcDogdGhpcy5mcmFtZWxvb3AoKSxcblx0XHRcdFx0XHRwZXJmb3JtYW5jZTogdGhpcy5wZXJmb3JtYW5jZSgpLFxuXHRcdFx0XHRcdGRwcjogdGhpcy5kcHIoKSxcblx0XHRcdFx0XHRyYXljYXN0ZXI6IHRoaXMucmF5Y2FzdGVyKCksXG5cdFx0XHRcdFx0c2NlbmU6IHRoaXMuc2NlbmUoKSxcblx0XHRcdFx0XHRjYW1lcmE6IHRoaXMuY2FtZXJhKCksXG5cdFx0XHRcdFx0ZXZlbnRzOiB0aGlzLmV2ZW50cygpLFxuXHRcdFx0XHRcdGV2ZW50U291cmNlOiB0aGlzLmV2ZW50U291cmNlKCksXG5cdFx0XHRcdFx0ZXZlbnRQcmVmaXg6IHRoaXMuZXZlbnRQcmVmaXgoKSxcblx0XHRcdFx0XHRsb29rQXQ6IHRoaXMubG9va0F0KCksXG5cdFx0XHRcdFx0c2l6ZTogcmVzaXplUmVzdWx0LFxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLmdsUmVmKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmdsUmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5ub1pvbmVSZW5kZXIoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBub1pvbmVSZW5kZXIoKSB7XG5cdFx0Ly8gTk9URTogZGVzdHJveSBwcmV2aW91cyBpbnN0YW5jZXMgaWYgZXhpc3RlZFxuXHRcdHRoaXMuZ2xFbnZpcm9ubWVudEluamVjdG9yPy5kZXN0cm95KCk7XG5cdFx0dGhpcy5nbFJlZj8uZGVzdHJveSgpO1xuXG5cdFx0Ly8gTk9URTogRmxhZyB0aGUgY2FudmFzIGFjdGl2ZSwgcmVuZGVyaW5nIHdpbGwgbm93IGJlZ2luXG5cdFx0dGhpcy5zdG9yZS51cGRhdGUoKHN0YXRlKSA9PiAoeyBpbnRlcm5hbDogeyAuLi5zdGF0ZS5pbnRlcm5hbCwgYWN0aXZlOiB0cnVlIH0gfSkpO1xuXG5cdFx0Y29uc3QgW3N0YXRlLCBldmVudFNvdXJjZSwgZXZlbnRQcmVmaXhdID0gW1xuXHRcdFx0dGhpcy5zdG9yZS5zbmFwc2hvdCxcblx0XHRcdHVudHJhY2tlZCh0aGlzLmV2ZW50U291cmNlKSxcblx0XHRcdHVudHJhY2tlZCh0aGlzLmV2ZW50UHJlZml4KSxcblx0XHRdO1xuXG5cdFx0Ly8gY29ubmVjdCB0byBldmVudCBzb3VyY2Vcblx0XHRzdGF0ZS5ldmVudHMuY29ubmVjdD8uKFxuXHRcdFx0ZXZlbnRTb3VyY2UgPyAoaXMucmVmKGV2ZW50U291cmNlKSA/IGV2ZW50U291cmNlLm5hdGl2ZUVsZW1lbnQgOiBldmVudFNvdXJjZSkgOiB0aGlzLmhvc3QubmF0aXZlRWxlbWVudCxcblx0XHQpO1xuXG5cdFx0Ly8gc2V0dXAgY29tcHV0ZSBmb3IgZXZlbnRQcmVmaXhcblx0XHRpZiAoZXZlbnRQcmVmaXgpIHtcblx0XHRcdHN0YXRlLnNldEV2ZW50cyh7XG5cdFx0XHRcdGNvbXB1dGU6IChldmVudCwgc3RvcmUpID0+IHtcblx0XHRcdFx0XHRjb25zdCB7IHBvaW50ZXIsIHJheWNhc3RlciwgY2FtZXJhLCBzaXplIH0gPSBzdG9yZS5zbmFwc2hvdDtcblx0XHRcdFx0XHRjb25zdCB4ID0gZXZlbnRbKGV2ZW50UHJlZml4ICsgJ1gnKSBhcyBrZXlvZiBOZ3REb21FdmVudF0gYXMgbnVtYmVyO1xuXHRcdFx0XHRcdGNvbnN0IHkgPSBldmVudFsoZXZlbnRQcmVmaXggKyAnWScpIGFzIGtleW9mIE5ndERvbUV2ZW50XSBhcyBudW1iZXI7XG5cdFx0XHRcdFx0cG9pbnRlci5zZXQoKHggLyBzaXplLndpZHRoKSAqIDIgLSAxLCAtKHkgLyBzaXplLmhlaWdodCkgKiAyICsgMSk7XG5cdFx0XHRcdFx0cmF5Y2FzdGVyLnNldEZyb21DYW1lcmEocG9pbnRlciwgY2FtZXJhKTtcblx0XHRcdFx0fSxcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdC8vIGVtaXQgY3JlYXRlZCBldmVudCBpZiBvYnNlcnZlZFxuXHRcdHRoaXMuY3JlYXRlZC5lbWl0KHRoaXMuc3RvcmUuc25hcHNob3QpO1xuXG5cdFx0aWYgKCF0aGlzLnN0b3JlLmdldCgnZXZlbnRzJywgJ2Nvbm5lY3RlZCcpKSB7XG5cdFx0XHR0aGlzLnN0b3JlLmdldCgnZXZlbnRzJykuY29ubmVjdD8uKHVudHJhY2tlZCh0aGlzLmdsQ2FudmFzKS5uYXRpdmVFbGVtZW50KTtcblx0XHR9XG5cblx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0dGhpcy5nbEVudmlyb25tZW50SW5qZWN0b3IgPSBjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yKFxuXHRcdFx0XHRbcHJvdmlkZU5ndFJlbmRlcmVyKHRoaXMuc3RvcmUpXSxcblx0XHRcdFx0dGhpcy5lbnZpcm9ubWVudEluamVjdG9yLFxuXHRcdFx0KTtcblx0XHRcdHRoaXMuZ2xSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KHVudHJhY2tlZCh0aGlzLnNjZW5lR3JhcGgpLCB7XG5cdFx0XHRcdGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuZ2xFbnZpcm9ubWVudEluamVjdG9yLFxuXHRcdFx0XHRpbmplY3RvcjogdGhpcy5pbmplY3Rvcixcblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLmdsUmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgY29uc3QgaW5qZWN0Um9vdCA9IGluamVjdENhbnZhc1Jvb3RJbml0aWFsaXplcjtcbiJdfQ==
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FudmFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsUUFBUSxFQUNSLHlCQUF5QixFQUN6QixVQUFVLEVBQ1YsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFFTixTQUFTLEVBQ1QsU0FBUyxFQUNULGdCQUFnQixHQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUErQixNQUFNLG1CQUFtQixDQUFDO0FBRWpHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEQsT0FBTyxFQUFFLDJCQUEyQixFQUF5QixNQUFNLFNBQVMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFcEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUF5QmhDLE1BQU0sT0FBTyxTQUFTO0lBcURyQjtRQXBEUSxVQUFLLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFDdEIsYUFBUSxHQUFHLDJCQUEyQixFQUFFLENBQUM7UUFDekMsZUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFFaEMsU0FB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QU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTthQUNsQixDQUFDO1lBQ25CLFlBQVksRUFBRTtTQUNkLGtPQWlEaUUsZ0JBQWdCLDZDQTlEeEU7Ozs7RUFJVCw0REFDUyxTQUFTOzsyRkFlUCxTQUFTO2tCQXZCckIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztFQUlUO29CQUNELE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQztvQkFDcEIsU0FBUyxFQUFFO3dCQUNWLG9CQUFvQixDQUFDOzRCQUNwQixVQUFVLEVBQUUsS0FBSzs0QkFDakIsaUJBQWlCLEVBQUUsSUFBSTs0QkFDdkIsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO3lCQUNsQixDQUFDO3dCQUNuQixZQUFZLEVBQUU7cUJBQ2Q7b0JBQ0QsSUFBSSxFQUFFO3dCQUNMLEtBQUssRUFBRSw4RUFBOEU7d0JBQ3JGLHVCQUF1QixFQUFFLG1CQUFtQjtxQkFDNUM7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0YWZ0ZXJOZXh0UmVuZGVyLFxuXHRib29sZWFuQXR0cmlidXRlLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRDb21wb25lbnRSZWYsXG5cdGNvbXB1dGVkLFxuXHRjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yLFxuXHREZXN0cm95UmVmLFxuXHRFbGVtZW50UmVmLFxuXHRFbnZpcm9ubWVudEluamVjdG9yLFxuXHRpbmplY3QsXG5cdEluamVjdG9yLFxuXHRpbnB1dCxcblx0Tmdab25lLFxuXHRvdXRwdXQsXG5cdHNpZ25hbCxcblx0VHlwZSxcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG5cdFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgb3V0cHV0RnJvbU9ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBpbmplY3RBdXRvRWZmZWN0IH0gZnJvbSAnbmd4dGVuc2lvbi9hdXRvLWVmZmVjdCc7XG5pbXBvcnQgeyBOZ3hSZXNpemUsIHByb3ZpZGVSZXNpemVPcHRpb25zLCBSZXNpemVPcHRpb25zLCBSZXNpemVSZXN1bHQgfSBmcm9tICduZ3h0ZW5zaW9uL3Jlc2l6ZSc7XG5pbXBvcnQgeyBSYXljYXN0ZXIsIFNjZW5lLCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgY3JlYXRlUG9pbnRlckV2ZW50cyB9IGZyb20gJy4vZG9tL2V2ZW50cyc7XG5pbXBvcnQgeyBwcm92aWRlTmd0UmVuZGVyZXIgfSBmcm9tICcuL3JlbmRlcmVyJztcbmltcG9ydCB7IGluamVjdENhbnZhc1Jvb3RJbml0aWFsaXplciwgTmd0Q2FudmFzQ29uZmlndXJhdG9yIH0gZnJvbSAnLi9yb290cyc7XG5pbXBvcnQgeyBOZ3RSb3V0ZWRTY2VuZSB9IGZyb20gJy4vcm91dGVkLXNjZW5lJztcbmltcG9ydCB7IGluamVjdFN0b3JlLCBwcm92aWRlU3RvcmUgfSBmcm9tICcuL3N0b3JlJztcbmltcG9ydCB7IE5ndENhbnZhc09wdGlvbnMsIE5ndERvbUV2ZW50LCBOZ3REcHIsIE5ndEdMT3B0aW9ucywgTmd0UGVyZm9ybWFuY2UsIE5ndFNpemUsIE5ndFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vdXRpbHMvaXMnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3QtY2FudmFzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8ZGl2IChuZ3hSZXNpemUpPVwicmVzaXplUmVzdWx0LnNldCgkZXZlbnQpXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlO1wiPlxuXHRcdFx0PGNhbnZhcyAjZ2xDYW52YXMgc3R5bGU9XCJkaXNwbGF5OiBibG9jaztcIj48L2NhbnZhcz5cblx0XHQ8L2Rpdj5cblx0YCxcblx0aW1wb3J0czogW05neFJlc2l6ZV0sXG5cdHByb3ZpZGVyczogW1xuXHRcdHByb3ZpZGVSZXNpemVPcHRpb25zKHtcblx0XHRcdGVtaXRJblpvbmU6IGZhbHNlLFxuXHRcdFx0ZW1pdEluaXRpYWxSZXN1bHQ6IHRydWUsXG5cdFx0XHRkZWJvdW5jZTogeyBzY3JvbGw6IDUwLCByZXNpemU6IDAgfSxcblx0XHR9IGFzIFJlc2l6ZU9wdGlvbnMpLFxuXHRcdHByb3ZpZGVTdG9yZSgpLFxuXHRdLFxuXHRob3N0OiB7XG5cdFx0c3R5bGU6ICdkaXNwbGF5OiBibG9jaztwb3NpdGlvbjogcmVsYXRpdmU7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO292ZXJmbG93OiBoaWRkZW47Jyxcblx0XHQnW3N0eWxlLnBvaW50ZXJFdmVudHNdJzogJ2hiUG9pbnRlckV2ZW50cygpJyxcblx0fSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndENhbnZhcyB7XG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIGluaXRSb290ID0gaW5qZWN0Q2FudmFzUm9vdEluaXRpYWxpemVyKCk7XG5cdHByaXZhdGUgYXV0b0VmZmVjdCA9IGluamVjdEF1dG9FZmZlY3QoKTtcblxuXHRwcml2YXRlIGhvc3QgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXHRwcml2YXRlIHpvbmUgPSBpbmplY3QoTmdab25lKTtcblx0cHJpdmF0ZSBlbnZpcm9ubWVudEluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuXHRwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuXHRzY2VuZUdyYXBoID0gaW5wdXQucmVxdWlyZWQ8VHlwZTxhbnk+LCBUeXBlPGFueT4gfCAncm91dGVkJz4oe1xuXHRcdHRyYW5zZm9ybTogKHZhbHVlKSA9PiB7XG5cdFx0XHRpZiAodmFsdWUgPT09ICdyb3V0ZWQnKSByZXR1cm4gTmd0Um91dGVkU2NlbmU7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fSxcblx0fSk7XG5cdGdsID0gaW5wdXQ8Tmd0R0xPcHRpb25zPigpO1xuXHRzaXplID0gaW5wdXQ8Tmd0U2l6ZT4oKTtcblx0c2hhZG93cyA9IGlucHV0KGZhbHNlLCB7XG5cdFx0dHJhbnNmb3JtOiAodmFsdWUpID0+IHtcblx0XHRcdGlmICh2YWx1ZSA9PT0gJycpIHJldHVybiBib29sZWFuQXR0cmlidXRlKHZhbHVlKTtcblx0XHRcdHJldHVybiB2YWx1ZSBhcyBOb25OdWxsYWJsZTxOZ3RDYW52YXNPcHRpb25zWydzaGFkb3dzJ10+O1xuXHRcdH0sXG5cdH0pO1xuXHRsZWdhY3kgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cdGxpbmVhciA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblx0ZmxhdCA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblx0b3J0aG9ncmFwaGljID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXHRmcmFtZWxvb3AgPSBpbnB1dDxOb25OdWxsYWJsZTxOZ3RDYW52YXNPcHRpb25zWydmcmFtZWxvb3AnXT4+KCdhbHdheXMnKTtcblx0cGVyZm9ybWFuY2UgPSBpbnB1dDxQYXJ0aWFsPE9taXQ8Tmd0UGVyZm9ybWFuY2UsICdyZWdyZXNzJz4+PigpO1xuXHRkcHIgPSBpbnB1dDxOZ3REcHI+KFsxLCAyXSk7XG5cdHJheWNhc3RlciA9IGlucHV0PFBhcnRpYWw8UmF5Y2FzdGVyPj4oKTtcblx0c2NlbmUgPSBpbnB1dDxTY2VuZSB8IFBhcnRpYWw8U2NlbmU+PigpO1xuXHRjYW1lcmEgPSBpbnB1dDxOb25OdWxsYWJsZTxOZ3RDYW52YXNPcHRpb25zWydjYW1lcmEnXT4+KCk7XG5cdGV2ZW50cyA9IGlucHV0KGNyZWF0ZVBvaW50ZXJFdmVudHMpO1xuXHRldmVudFNvdXJjZSA9IGlucHV0PEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCk7XG5cdGV2ZW50UHJlZml4ID0gaW5wdXQ8Tm9uTnVsbGFibGU8Tmd0Q2FudmFzT3B0aW9uc1snZXZlbnRQcmVmaXgnXT4+KCdvZmZzZXQnKTtcblx0bG9va0F0ID0gaW5wdXQ8VmVjdG9yMyB8IFBhcmFtZXRlcnM8VmVjdG9yM1snc2V0J10+PigpO1xuXHRjcmVhdGVkID0gb3V0cHV0PE5ndFN0YXRlPigpO1xuXHRwb2ludGVyTWlzc2VkID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5zdG9yZS5nZXQoJ3BvaW50ZXJNaXNzZWQkJykpO1xuXG5cdGdsQ2FudmFzID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+PignZ2xDYW52YXMnKTtcblx0Z2xDYW52YXNWaWV3Q29udGFpbmVyUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkKCdnbENhbnZhcycsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KTtcblxuXHRwcm90ZWN0ZWQgaGJQb2ludGVyRXZlbnRzID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuZXZlbnRTb3VyY2UoKSA/ICdub25lJyA6ICdhdXRvJykpO1xuXG5cdC8vIE5PVEU6IHRoaXMgc2lnbmFsIGlzIHVwZGF0ZWQgb3V0c2lkZSBvZiBab25lXG5cdHByb3RlY3RlZCByZXNpemVSZXN1bHQgPSBzaWduYWw8UmVzaXplUmVzdWx0Pih7fSBhcyBSZXNpemVSZXN1bHQsIHsgZXF1YWw6IE9iamVjdC5pcyB9KTtcblxuXHRwcml2YXRlIGNvbmZpZ3VyYXRvcj86IE5ndENhbnZhc0NvbmZpZ3VyYXRvcjtcblx0cHJpdmF0ZSBnbEVudmlyb25tZW50SW5qZWN0b3I/OiBFbnZpcm9ubWVudEluamVjdG9yO1xuXHRwcml2YXRlIGdsUmVmPzogQ29tcG9uZW50UmVmPHVua25vd24+O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG5cdFx0XHR0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmNvbmZpZ3VyYXRvciA9IHRoaXMuaW5pdFJvb3QodGhpcy5nbENhbnZhcygpLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdFx0XHR0aGlzLm5vWm9uZVJlc2l6ZUVmZmVjdCgpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcblx0XHRcdHRoaXMuZ2xSZWY/LmRlc3Ryb3koKTtcblx0XHRcdHRoaXMuZ2xFbnZpcm9ubWVudEluamVjdG9yPy5kZXN0cm95KCk7XG5cdFx0XHR0aGlzLmNvbmZpZ3VyYXRvcj8uZGVzdHJveSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBub1pvbmVSZXNpemVFZmZlY3QoKSB7XG5cdFx0dGhpcy5hdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IHJlc2l6ZVJlc3VsdCA9IHRoaXMucmVzaXplUmVzdWx0KCk7XG5cdFx0XHRpZiAocmVzaXplUmVzdWx0LndpZHRoID4gMCAmJiByZXNpemVSZXN1bHQuaGVpZ2h0ID4gMCkge1xuXHRcdFx0XHRpZiAoIXRoaXMuY29uZmlndXJhdG9yKSB0aGlzLmNvbmZpZ3VyYXRvciA9IHRoaXMuaW5pdFJvb3QodGhpcy5nbENhbnZhcygpLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdFx0XHR0aGlzLmNvbmZpZ3VyYXRvci5jb25maWd1cmUoe1xuXHRcdFx0XHRcdGdsOiB0aGlzLmdsKCksXG5cdFx0XHRcdFx0c2hhZG93czogdGhpcy5zaGFkb3dzKCksXG5cdFx0XHRcdFx0bGVnYWN5OiB0aGlzLmxlZ2FjeSgpLFxuXHRcdFx0XHRcdGxpbmVhcjogdGhpcy5saW5lYXIoKSxcblx0XHRcdFx0XHRmbGF0OiB0aGlzLmZsYXQoKSxcblx0XHRcdFx0XHRvcnRob2dyYXBoaWM6IHRoaXMub3J0aG9ncmFwaGljKCksXG5cdFx0XHRcdFx0ZnJhbWVsb29wOiB0aGlzLmZyYW1lbG9vcCgpLFxuXHRcdFx0XHRcdHBlcmZvcm1hbmNlOiB0aGlzLnBlcmZvcm1hbmNlKCksXG5cdFx0XHRcdFx0ZHByOiB0aGlzLmRwcigpLFxuXHRcdFx0XHRcdHJheWNhc3RlcjogdGhpcy5yYXljYXN0ZXIoKSxcblx0XHRcdFx0XHRzY2VuZTogdGhpcy5zY2VuZSgpLFxuXHRcdFx0XHRcdGNhbWVyYTogdGhpcy5jYW1lcmEoKSxcblx0XHRcdFx0XHRldmVudHM6IHRoaXMuZXZlbnRzKCksXG5cdFx0XHRcdFx0ZXZlbnRTb3VyY2U6IHRoaXMuZXZlbnRTb3VyY2UoKSxcblx0XHRcdFx0XHRldmVudFByZWZpeDogdGhpcy5ldmVudFByZWZpeCgpLFxuXHRcdFx0XHRcdGxvb2tBdDogdGhpcy5sb29rQXQoKSxcblx0XHRcdFx0XHRzaXplOiByZXNpemVSZXN1bHQsXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuZ2xSZWYpIHtcblx0XHRcdFx0XHRcdHRoaXMuZ2xSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzLm5vWm9uZVJlbmRlcigpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIG5vWm9uZVJlbmRlcigpIHtcblx0XHQvLyBOT1RFOiBkZXN0cm95IHByZXZpb3VzIGluc3RhbmNlcyBpZiBleGlzdGVkXG5cdFx0dGhpcy5nbEVudmlyb25tZW50SW5qZWN0b3I/LmRlc3Ryb3koKTtcblx0XHR0aGlzLmdsUmVmPy5kZXN0cm95KCk7XG5cblx0XHQvLyBOT1RFOiBGbGFnIHRoZSBjYW52YXMgYWN0aXZlLCByZW5kZXJpbmcgd2lsbCBub3cgYmVnaW5cblx0XHR0aGlzLnN0b3JlLnVwZGF0ZSgoc3RhdGUpID0+ICh7IGludGVybmFsOiB7IC4uLnN0YXRlLmludGVybmFsLCBhY3RpdmU6IHRydWUgfSB9KSk7XG5cblx0XHRjb25zdCBbc3RhdGUsIGV2ZW50U291cmNlLCBldmVudFByZWZpeF0gPSBbXG5cdFx0XHR0aGlzLnN0b3JlLnNuYXBzaG90LFxuXHRcdFx0dW50cmFja2VkKHRoaXMuZXZlbnRTb3VyY2UpLFxuXHRcdFx0dW50cmFja2VkKHRoaXMuZXZlbnRQcmVmaXgpLFxuXHRcdF07XG5cblx0XHQvLyBjb25uZWN0IHRvIGV2ZW50IHNvdXJjZVxuXHRcdHN0YXRlLmV2ZW50cy5jb25uZWN0Py4oXG5cdFx0XHRldmVudFNvdXJjZSA/IChpcy5yZWYoZXZlbnRTb3VyY2UpID8gZXZlbnRTb3VyY2UubmF0aXZlRWxlbWVudCA6IGV2ZW50U291cmNlKSA6IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LFxuXHRcdCk7XG5cblx0XHQvLyBzZXR1cCBjb21wdXRlIGZvciBldmVudFByZWZpeFxuXHRcdGlmIChldmVudFByZWZpeCkge1xuXHRcdFx0c3RhdGUuc2V0RXZlbnRzKHtcblx0XHRcdFx0Y29tcHV0ZTogKGV2ZW50LCBzdG9yZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHsgcG9pbnRlciwgcmF5Y2FzdGVyLCBjYW1lcmEsIHNpemUgfSA9IHN0b3JlLnNuYXBzaG90O1xuXHRcdFx0XHRcdGNvbnN0IHggPSBldmVudFsoZXZlbnRQcmVmaXggKyAnWCcpIGFzIGtleW9mIE5ndERvbUV2ZW50XSBhcyBudW1iZXI7XG5cdFx0XHRcdFx0Y29uc3QgeSA9IGV2ZW50WyhldmVudFByZWZpeCArICdZJykgYXMga2V5b2YgTmd0RG9tRXZlbnRdIGFzIG51bWJlcjtcblx0XHRcdFx0XHRwb2ludGVyLnNldCgoeCAvIHNpemUud2lkdGgpICogMiAtIDEsIC0oeSAvIHNpemUuaGVpZ2h0KSAqIDIgKyAxKTtcblx0XHRcdFx0XHRyYXljYXN0ZXIuc2V0RnJvbUNhbWVyYShwb2ludGVyLCBjYW1lcmEpO1xuXHRcdFx0XHR9LFxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Ly8gZW1pdCBjcmVhdGVkIGV2ZW50IGlmIG9ic2VydmVkXG5cdFx0dGhpcy5jcmVhdGVkLmVtaXQodGhpcy5zdG9yZS5zbmFwc2hvdCk7XG5cblx0XHRpZiAoIXRoaXMuc3RvcmUuZ2V0KCdldmVudHMnLCAnY29ubmVjdGVkJykpIHtcblx0XHRcdHRoaXMuc3RvcmUuZ2V0KCdldmVudHMnKS5jb25uZWN0Py4odW50cmFja2VkKHRoaXMuZ2xDYW52YXMpLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdH1cblxuXHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHR0aGlzLmdsRW52aXJvbm1lbnRJbmplY3RvciA9IGNyZWF0ZUVudmlyb25tZW50SW5qZWN0b3IoXG5cdFx0XHRcdFtwcm92aWRlTmd0UmVuZGVyZXIodGhpcy5zdG9yZSldLFxuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50SW5qZWN0b3IsXG5cdFx0XHQpO1xuXHRcdFx0dGhpcy5nbFJlZiA9IHVudHJhY2tlZCh0aGlzLmdsQ2FudmFzVmlld0NvbnRhaW5lclJlZikuY3JlYXRlQ29tcG9uZW50KHVudHJhY2tlZCh0aGlzLnNjZW5lR3JhcGgpLCB7XG5cdFx0XHRcdGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuZ2xFbnZpcm9ubWVudEluamVjdG9yLFxuXHRcdFx0XHRpbmplY3RvcjogdGhpcy5pbmplY3Rvcixcblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLmdsUmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblx0XHR9KTtcblx0fVxufVxuIl19
@@ -27,6 +27,7 @@ export class NgtHTML {
27
27
  Object.assign(this.host.nativeElement, { __ngt_dom_parent__: this.domElement });
28
28
  }
29
29
  this.destroyRef.onDestroy(() => {
30
+ this.host.nativeElement['__ngt_dom_parent__'] = null;
30
31
  delete this.host.nativeElement['__ngt_dom_parent__'];
31
32
  });
32
33
  }
@@ -36,4 +37,4 @@ export class NgtHTML {
36
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtHTML, decorators: [{
37
38
  type: Directive
38
39
  }], ctorParameters: () => [] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2h0bWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sY0FBYyxHQUlkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFHdEMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsc0JBQXNCLENBQUMsQ0FBQztBQVM1RixNQUFNLFVBQVUscUJBQXFCLENBQUMsR0FBRyxJQUFXO0lBQ25ELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBRUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUM5RSxDQUFDO0FBR0QsTUFBTSxPQUFnQixPQUFPO2tCQUNwQixJQUFJO2FBQUwsUUFBTSxHQUFHLElBQUksQUFBUCxDQUFRO0lBT3JCO1FBTFUsVUFBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ3RCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsU0FBSSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDbkQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFHbkYsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYTthQUNuRSxDQUFDLENBQUM7UUFDSixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDOUIsT0FBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQThCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBcEJvQixPQUFPO2tHQUFQLE9BQU87OzJGQUFQLE9BQU87a0JBRDVCLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRBYnN0cmFjdFR5cGUsXG5cdERlc3Ryb3lSZWYsXG5cdERpcmVjdGl2ZSxcblx0RWxlbWVudFJlZixcblx0aW5qZWN0LFxuXHRJbmplY3Rpb25Ub2tlbixcblx0UHJvdmlkZXIsXG5cdFByb3ZpZGVyVG9rZW4sXG5cdFR5cGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSFRNTCB9IGZyb20gJy4vcmVuZGVyZXInO1xuaW1wb3J0IHsgaW5qZWN0U3RvcmUgfSBmcm9tICcuL3N0b3JlJztcbmltcG9ydCB7IE5ndEFueVJlY29yZCB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBOR1RfSFRNTF9ET01fRUxFTUVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjwnZ2wnIHwgSFRNTEVsZW1lbnQ+KCdOR1RfSFRNTF9ET01fRUxFTUVOVCcpO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUhUTUxEb21FbGVtZW50KCk6IFByb3ZpZGVyO1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVIVE1MRG9tRWxlbWVudDxcblx0VERlcHMgZXh0ZW5kcyBBcnJheTxQcm92aWRlclRva2VuPGFueT4+LFxuXHRUVmFsdWVzIGV4dGVuZHMge1xuXHRcdFtLIGluIGtleW9mIFREZXBzXTogVERlcHNbS10gZXh0ZW5kcyBUeXBlPGluZmVyIFQ+IHwgQWJzdHJhY3RUeXBlPGluZmVyIFQ+IHwgSW5qZWN0aW9uVG9rZW48aW5mZXIgVD4gPyBUIDogbmV2ZXI7XG5cdH0sXG4+KGRlcHM6IFREZXBzLCBmYWN0b3J5OiAoLi4uYXJnczogVFZhbHVlcykgPT4gSFRNTEVsZW1lbnQpOiBQcm92aWRlcjtcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSFRNTERvbUVsZW1lbnQoLi4uYXJnczogYW55W10pIHtcblx0aWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG5cdFx0cmV0dXJuIHsgcHJvdmlkZTogTkdUX0hUTUxfRE9NX0VMRU1FTlQsIHVzZUZhY3Rvcnk6ICgpID0+ICdnbCcgfTtcblx0fVxuXG5cdHJldHVybiB7IHByb3ZpZGU6IE5HVF9IVE1MX0RPTV9FTEVNRU5ULCB1c2VGYWN0b3J5OiBhcmdzLnBvcCgpLCBkZXBzOiBhcmdzIH07XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5ndEhUTUwge1xuXHRzdGF0aWMgW0hUTUxdID0gdHJ1ZTtcblxuXHRwcm90ZWN0ZWQgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcm90ZWN0ZWQgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblx0cHJvdGVjdGVkIGhvc3QgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXHRwcm90ZWN0ZWQgZG9tRWxlbWVudCA9IGluamVjdChOR1RfSFRNTF9ET01fRUxFTUVOVCwgeyBzZWxmOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSB9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpZiAodGhpcy5kb21FbGVtZW50ID09PSAnZ2wnKSB7XG5cdFx0XHRPYmplY3QuYXNzaWduKHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCB7XG5cdFx0XHRcdF9fbmd0X2RvbV9wYXJlbnRfXzogdGhpcy5zdG9yZS5zbmFwc2hvdC5nbC5kb21FbGVtZW50LnBhcmVudEVsZW1lbnQsXG5cdFx0XHR9KTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuZG9tRWxlbWVudCkge1xuXHRcdFx0T2JqZWN0LmFzc2lnbih0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwgeyBfX25ndF9kb21fcGFyZW50X186IHRoaXMuZG9tRWxlbWVudCB9KTtcblx0XHR9XG5cblx0XHR0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcblx0XHRcdGRlbGV0ZSAodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfZG9tX3BhcmVudF9fJ107XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2h0bWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sY0FBYyxHQUlkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFHdEMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsc0JBQXNCLENBQUMsQ0FBQztBQVM1RixNQUFNLFVBQVUscUJBQXFCLENBQUMsR0FBRyxJQUFXO0lBQ25ELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBRUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUM5RSxDQUFDO0FBR0QsTUFBTSxPQUFnQixPQUFPO2tCQUNwQixJQUFJO2FBQUwsUUFBTSxHQUFHLElBQUksQUFBUCxDQUFRO0lBT3JCO1FBTFUsVUFBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ3RCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsU0FBSSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDbkQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFHbkYsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYTthQUNuRSxDQUFDLENBQUM7UUFDSixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUE4QixDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3ZFLE9BQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUE4QixDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQXJCb0IsT0FBTztrR0FBUCxPQUFPOzsyRkFBUCxPQUFPO2tCQUQ1QixTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0QWJzdHJhY3RUeXBlLFxuXHREZXN0cm95UmVmLFxuXHREaXJlY3RpdmUsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0SW5qZWN0aW9uVG9rZW4sXG5cdFByb3ZpZGVyLFxuXHRQcm92aWRlclRva2VuLFxuXHRUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEhUTUwgfSBmcm9tICcuL3JlbmRlcmVyJztcbmltcG9ydCB7IGluamVjdFN0b3JlIH0gZnJvbSAnLi9zdG9yZSc7XG5pbXBvcnQgeyBOZ3RBbnlSZWNvcmQgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgTkdUX0hUTUxfRE9NX0VMRU1FTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48J2dsJyB8IEhUTUxFbGVtZW50PignTkdUX0hUTUxfRE9NX0VMRU1FTlQnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVIVE1MRG9tRWxlbWVudCgpOiBQcm92aWRlcjtcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSFRNTERvbUVsZW1lbnQ8XG5cdFREZXBzIGV4dGVuZHMgQXJyYXk8UHJvdmlkZXJUb2tlbjxhbnk+Pixcblx0VFZhbHVlcyBleHRlbmRzIHtcblx0XHRbSyBpbiBrZXlvZiBURGVwc106IFREZXBzW0tdIGV4dGVuZHMgVHlwZTxpbmZlciBUPiB8IEFic3RyYWN0VHlwZTxpbmZlciBUPiB8IEluamVjdGlvblRva2VuPGluZmVyIFQ+ID8gVCA6IG5ldmVyO1xuXHR9LFxuPihkZXBzOiBURGVwcywgZmFjdG9yeTogKC4uLmFyZ3M6IFRWYWx1ZXMpID0+IEhUTUxFbGVtZW50KTogUHJvdmlkZXI7XG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUhUTUxEb21FbGVtZW50KC4uLmFyZ3M6IGFueVtdKSB7XG5cdGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiB7IHByb3ZpZGU6IE5HVF9IVE1MX0RPTV9FTEVNRU5ULCB1c2VGYWN0b3J5OiAoKSA9PiAnZ2wnIH07XG5cdH1cblxuXHRyZXR1cm4geyBwcm92aWRlOiBOR1RfSFRNTF9ET01fRUxFTUVOVCwgdXNlRmFjdG9yeTogYXJncy5wb3AoKSwgZGVwczogYXJncyB9O1xufVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ3RIVE1MIHtcblx0c3RhdGljIFtIVE1MXSA9IHRydWU7XG5cblx0cHJvdGVjdGVkIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJvdGVjdGVkIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cdHByb3RlY3RlZCBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblx0cHJvdGVjdGVkIGRvbUVsZW1lbnQgPSBpbmplY3QoTkdUX0hUTUxfRE9NX0VMRU1FTlQsIHsgc2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0aWYgKHRoaXMuZG9tRWxlbWVudCA9PT0gJ2dsJykge1xuXHRcdFx0T2JqZWN0LmFzc2lnbih0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwge1xuXHRcdFx0XHRfX25ndF9kb21fcGFyZW50X186IHRoaXMuc3RvcmUuc25hcHNob3QuZ2wuZG9tRWxlbWVudC5wYXJlbnRFbGVtZW50LFxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmRvbUVsZW1lbnQpIHtcblx0XHRcdE9iamVjdC5hc3NpZ24odGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsIHsgX19uZ3RfZG9tX3BhcmVudF9fOiB0aGlzLmRvbUVsZW1lbnQgfSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG5cdFx0XHQodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfZG9tX3BhcmVudF9fJ10gPSBudWxsO1xuXHRcdFx0ZGVsZXRlICh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCBhcyBOZ3RBbnlSZWNvcmQpWydfX25ndF9kb21fcGFyZW50X18nXTtcblx0XHR9KTtcblx0fVxufVxuIl19
@@ -138,4 +138,4 @@ function createLoop(roots) {
138
138
  return { loop, invalidate, advance };
139
139
  }
140
140
  export const [injectLoop] = createInjectionToken(() => createLoop(roots));
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2xvb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFJekUsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUE4QyxDQUFDO0FBSTNFLFNBQVMsVUFBVSxDQUFDLFFBQWlDLEVBQUUsSUFBa0I7SUFDeEUsTUFBTSxHQUFHLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sYUFBYSxHQUFpQixJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzlDLE1BQU0sa0JBQWtCLEdBQWlCLElBQUksR0FBRyxFQUFFLENBQUM7QUFDbkQsTUFBTSxpQkFBaUIsR0FBaUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUVsRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFpQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBRXBHOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFFBQWlDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztBQUU5Rzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUFpQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFFdEcsU0FBUyxHQUFHLENBQUMsT0FBcUIsRUFBRSxTQUFpQjtJ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QUFDLENBQUM7O1lBQ2xFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLElBQUksZ0JBQWdCO1lBQUUsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUluamVjdGlvblRva2VuIH0gZnJvbSAnbmd4dGVuc2lvbi9jcmVhdGUtaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCB7IE5ndENhbnZhc0VsZW1lbnQsIE5ndEdsb2JhbFJlbmRlckNhbGxiYWNrLCBOZ3RTdGF0ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTmd0U2lnbmFsU3RvcmUgfSBmcm9tICcuL3V0aWxzL3NpZ25hbC1zdG9yZSc7XG5cbmV4cG9ydCBjb25zdCByb290cyA9IG5ldyBNYXA8Tmd0Q2FudmFzRWxlbWVudCwgTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+PigpO1xuXG50eXBlIFN1Ykl0ZW0gPSB7IGNhbGxiYWNrOiBOZ3RHbG9iYWxSZW5kZXJDYWxsYmFjayB9O1xuXG5mdW5jdGlvbiBjcmVhdGVTdWJzKGNhbGxiYWNrOiBOZ3RHbG9iYWxSZW5kZXJDYWxsYmFjaywgc3ViczogU2V0PFN1Ykl0ZW0+KTogKCkgPT4gdm9pZCB7XG5cdGNvbnN0IHN1YiA9IHsgY2FsbGJhY2sgfTtcblx0c3Vicy5hZGQoc3ViKTtcblx0cmV0dXJuICgpID0+IHZvaWQgc3Vicy5kZWxldGUoc3ViKTtcbn1cblxuY29uc3QgZ2xvYmFsRWZmZWN0czogU2V0PFN1Ykl0ZW0+ID0gbmV3IFNldCgpO1xuY29uc3QgZ2xvYmFsQWZ0ZXJFZmZlY3RzOiBTZXQ8U3ViSXRlbT4gPSBuZXcgU2V0KCk7XG5jb25zdCBnbG9iYWxUYWlsRWZmZWN0czogU2V0PFN1Ykl0ZW0+ID0gbmV3IFNldCgpO1xuXG4vKipcbiAqIEFkZHMgYSBnbG9iYWwgcmVuZGVyIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBlYWNoIGZyYW1lLlxuICogQHNlZSBodHRwczovL2RvY3MucG1uZC5ycy9yZWFjdC10aHJlZS1maWJlci9hcGkvYWRkaXRpb25hbC1leHBvcnRzI2FkZEVmZmVjdFxuICovXG5leHBvcnQgY29uc3QgYWRkRWZmZWN0ID0gKGNhbGxiYWNrOiBOZ3RHbG9iYWxSZW5kZXJDYWxsYmFjaykgPT4gY3JlYXRlU3VicyhjYWxsYmFjaywgZ2xvYmFsRWZmZWN0cyk7XG5cbi8qKlxuICogQWRkcyBhIGdsb2JhbCBhZnRlci1yZW5kZXIgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGVhY2ggZnJhbWUuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5wbW5kLnJzL3JlYWN0LXRocmVlLWZpYmVyL2FwaS9hZGRpdGlvbmFsLWV4cG9ydHMjYWRkQWZ0ZXJFZmZlY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEFmdGVyRWZmZWN0ID0gKGNhbGxiYWNrOiBOZ3RHbG9iYWxSZW5kZXJDYWxsYmFjaykgPT4gY3JlYXRlU3VicyhjYWxsYmFjaywgZ2xvYmFsQWZ0ZXJFZmZlY3RzKTtcblxuLyoqXG4gKiBBZGRzIGEgZ2xvYmFsIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHJlbmRlcmluZyBzdG9wcy5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLnBtbmQucnMvcmVhY3QtdGhyZWUtZmliZXIvYXBpL2FkZGl0aW9uYWwtZXhwb3J0cyNhZGRUYWlsXG4gKi9cbmV4cG9ydCBjb25zdCBhZGRUYWlsID0gKGNhbGxiYWNrOiBOZ3RHbG9iYWxSZW5kZXJDYWxsYmFjaykgPT4gY3JlYXRlU3VicyhjYWxsYmFjaywgZ2xvYmFsVGFpbEVmZmVjdHMpO1xuXG5mdW5jdGlvbiBydW4oZWZmZWN0czogU2V0PFN1Ykl0ZW0+LCB0aW1lc3RhbXA6IG51bWJlcikge1xuXHRpZiAoIWVmZmVjdHMuc2l6ZSkgcmV0dXJuO1xuXHRmb3IgKGNvbnN0IHsgY2FsbGJhY2sgfSBvZiBlZmZlY3RzLnZhbHVlcygpKSB7XG5cdFx0Y2FsbGJhY2sodGltZXN0YW1wKTtcblx0fVxufVxuXG5leHBvcnQgdHlwZSBOZ3RHbG9iYWxFZmZlY3RUeXBlID0gJ2JlZm9yZScgfCAnYWZ0ZXInIHwgJ3RhaWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gZmx1c2hHbG9iYWxFZmZlY3RzKHR5cGU6IE5ndEdsb2JhbEVmZmVjdFR5cGUsIHRpbWVzdGFtcDogbnVtYmVyKTogdm9pZCB7XG5cdHN3aXRjaCAodHlwZSkge1xuXHRcdGNhc2UgJ2JlZm9yZSc6XG5cdFx0XHRyZXR1cm4gcnVuKGdsb2JhbEVmZmVjdHMsIHRpbWVzdGFtcCk7XG5cdFx0Y2FzZSAnYWZ0ZXInOlxuXHRcdFx0cmV0dXJuIHJ1bihnbG9iYWxBZnRlckVmZmVjdHMsIHRpbWVzdGFtcCk7XG5cdFx0Y2FzZSAndGFpbCc6XG5cdFx0XHRyZXR1cm4gcnVuKGdsb2JhbFRhaWxFZmZlY3RzLCB0aW1lc3RhbXApO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHJlbmRlcih0aW1lc3RhbXA6IG51bWJlciwgc3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPiwgZnJhbWU/OiBYUkZyYW1lKSB7XG5cdGNvbnN0IHN0YXRlID0gc3RvcmUuc25hcHNob3Q7XG5cdC8vIFJ1biBsb2NhbCBlZmZlY3RzXG5cdGxldCBkZWx0YSA9IHN0YXRlLmNsb2NrLmdldERlbHRhKCk7XG5cdC8vIEluIGZyYW1lbG9vcD0nbmV2ZXInIG1vZGUsIGNsb2NrIHRpbWVzIGFyZSB1cGRhdGVkIHVzaW5nIHRoZSBwcm92aWRlZCB0aW1lc3RhbXBcblx0aWYgKHN0YXRlLmZyYW1lbG9vcCA9PT0gJ25ldmVyJyAmJiB0eXBlb2YgdGltZXN0YW1wID09PSAnbnVtYmVyJykge1xuXHRcdGRlbHRhID0gdGltZXN0YW1wIC0gc3RhdGUuY2xvY2suZWxhcHNlZFRpbWU7XG5cdFx0c3RhdGUuY2xvY2sub2xkVGltZSA9IHN0YXRlLmNsb2NrLmVsYXBzZWRUaW1lO1xuXHRcdHN0YXRlLmNsb2NrLmVsYXBzZWRUaW1lID0gdGltZXN0YW1wO1xuXHR9XG5cdC8vIENhbGwgc3Vic2NyaWJlcnMgKGJlZm9yZVJlbmRlcilcblx0Y29uc3Qgc3Vic2NyaWJlcnMgPSBzdGF0ZS5pbnRlcm5hbC5zdWJzY3JpYmVycztcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzdWJzY3JpYmVycy5sZW5ndGg7IGkrKykge1xuXHRcdGNvbnN0IHN1YnNjcmlwdGlvbiA9IHN1YnNjcmliZXJzW2ldO1xuXHRcdHN1YnNjcmlwdGlvbi5jYWxsYmFjayh7IC4uLnN1YnNjcmlwdGlvbi5zdG9yZS5zbmFwc2hvdCwgZGVsdGEsIGZyYW1lIH0pO1xuXHR9XG5cdC8vIFJlbmRlciBjb250ZW50XG5cdGlmICghc3RhdGUuaW50ZXJuYWwucHJpb3JpdHkgJiYgc3RhdGUuZ2wucmVuZGVyKSBzdGF0ZS5nbC5yZW5kZXIoc3RhdGUuc2NlbmUsIHN0YXRlLmNhbWVyYSk7XG5cdC8vIERlY3JlYXNlIGZyYW1lIGNvdW50XG5cdHN0YXRlLmludGVybmFsLmZyYW1lcyA9IE1hdGgubWF4KDAsIHN0YXRlLmludGVybmFsLmZyYW1lcyAtIDEpO1xuXHRyZXR1cm4gc3RhdGUuZnJhbWVsb29wID09PSAnYWx3YXlzJyA/IDEgOiBzdGF0ZS5pbnRlcm5hbC5mcmFtZXM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvb3A8VENhbnZhcz4ocm9vdHM6IE1hcDxUQ2FudmFzLCBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT4+KSB7XG5cdGxldCBydW5uaW5nID0gZmFsc2U7XG5cdGxldCByZXBlYXQ6IG51bWJlcjtcblx0bGV0IGZyYW1lOiBudW1iZXI7XG5cdGxldCBiZWZvcmVSZW5kZXJJblByb2dyZXNzID0gZmFsc2U7XG5cblx0ZnVuY3Rpb24gbG9vcCh0aW1lc3RhbXA6IG51bWJlcik6IHZvaWQge1xuXHRcdGZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGxvb3ApO1xuXHRcdHJ1bm5pbmcgPSB0cnVlO1xuXHRcdHJlcGVhdCA9IDA7XG5cblx0XHQvLyBSdW4gZWZmZWN0c1xuXHRcdGZsdXNoR2xvYmFsRWZmZWN0cygnYmVmb3JlJywgdGltZXN0YW1wKTtcblxuXHRcdC8vIFJlbmRlciBhbGwgcm9vdHNcblx0XHRiZWZvcmVSZW5kZXJJblByb2dyZXNzID0gdHJ1ZTtcblx0XHRmb3IgKGNvbnN0IHJvb3Qgb2Ygcm9vdHMudmFsdWVzKCkpIHtcblx0XHRcdGNvbnN0IHN0YXRlID0gcm9vdC5zbmFwc2hvdDtcblx0XHRcdC8vIElmIHRoZSBmcmFtZWxvb3AgaXMgaW52YWxpZGF0ZWQsIGRvIG5vdCBydW4gYW5vdGhlciBmcmFtZVxuXHRcdFx0aWYgKFxuXHRcdFx0XHRzdGF0ZS5pbnRlcm5hbC5hY3RpdmUgJiZcblx0XHRcdFx0KHN0YXRlLmZyYW1lbG9vcCA9PT0gJ2Fsd2F5cycgfHwgc3RhdGUuaW50ZXJuYWwuZnJhbWVzID4gMCkgJiZcblx0XHRcdFx0IXN0YXRlLmdsLnhyPy5pc1ByZXNlbnRpbmdcblx0XHRcdCkge1xuXHRcdFx0XHRyZXBlYXQgKz0gcmVuZGVyKHRpbWVzdGFtcCwgcm9vdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGJlZm9yZVJlbmRlckluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuXHRcdC8vIFJ1biBhZnRlci1lZmZlY3RzXG5cdFx0Zmx1c2hHbG9iYWxFZmZlY3RzKCdhZnRlcicsIHRpbWVzdGFtcCk7XG5cblx0XHQvLyBTdG9wIHRoZSBsb29wIGlmIG5vdGhpbmcgaW52YWxpZGF0ZXMgaXRcblx0XHRpZiAocmVwZWF0ID09PSAwKSB7XG5cdFx0XHQvLyBUYWlsIGNhbGwgZWZmZWN0cywgdGhleSBhcmUgY2FsbGVkIHdoZW4gcmVuZGVyaW5nIHN0b3BzXG5cdFx0XHRmbHVzaEdsb2JhbEVmZmVjdHMoJ3RhaWwnLCB0aW1lc3RhbXApO1xuXG5cdFx0XHQvLyBGbGFnIGVuZCBvZiBvcGVyYXRpb25cblx0XHRcdHJ1bm5pbmcgPSBmYWxzZTtcblx0XHRcdHJldHVybiBjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZSk7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gaW52YWxpZGF0ZShzdG9yZT86IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPiwgZnJhbWVzID0gMSk6IHZvaWQge1xuXHRcdGNvbnN0IHN0YXRlID0gc3RvcmU/LnNuYXBzaG90O1xuXHRcdGlmICghc3RhdGUpIHJldHVybiByb290cy5mb3JFYWNoKChyb290KSA9PiBpbnZhbGlkYXRlKHJvb3QsIGZyYW1lcykpO1xuXHRcdGlmIChzdGF0ZS5nbC54cj8uaXNQcmVzZW50aW5nIHx8ICFzdGF0ZS5pbnRlcm5hbC5hY3RpdmUgfHwgc3RhdGUuZnJhbWVsb29wID09PSAnbmV2ZXInKSByZXR1cm47XG5cdFx0aWYgKGZyYW1lcyA+IDEpIHtcblx0XHRcdC8vIGxlZ2FjeSBzdXBwb3J0IGZvciBwZW9wbGUgdXNpbmcgZnJhbWVzIHBhcmFtZXRlcnNcblx0XHRcdC8vIEluY3JlYXNlIGZyYW1lcywgZG8gbm90IGdvIGhpZ2hlciB0aGFuIDYwXG5cdFx0XHRzdGF0ZS5pbnRlcm5hbC5mcmFtZXMgPSBNYXRoLm1pbig2MCwgc3RhdGUuaW50ZXJuYWwuZnJhbWVzICsgZnJhbWVzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKGJlZm9yZVJlbmRlckluUHJvZ3Jlc3MpIHtcblx0XHRcdFx0Ly9jYWxsZWQgZnJvbSB3aXRoaW4gYSBiZWZvcmVSZW5kZXIsIGl0IG1lYW5zIHRoZSB1c2VyIHdhbnRzIGFuIGFkZGl0aW9uYWwgZnJhbWVcblx0XHRcdFx0c3RhdGUuaW50ZXJuYWwuZnJhbWVzID0gMjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vdGhlIHVzZXIgbmVlZCBhIG5ldyBmcmFtZSwgbm8gbmVlZCB0byBpbmNyZW1lbnQgZnVydGhlciB0aGFuIDFcblx0XHRcdFx0c3RhdGUuaW50ZXJuYWwuZnJhbWVzID0gMTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBJZiB0aGUgcmVuZGVyLWxvb3AgaXNuJ3QgYWN0aXZlLCBzdGFydCBpdFxuXHRcdGlmICghcnVubmluZykge1xuXHRcdFx0cnVubmluZyA9IHRydWU7XG5cdFx0XHRyZXF1ZXN0QW5pbWF0aW9uRnJhbWUobG9vcCk7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gYWR2YW5jZShcblx0XHR0aW1lc3RhbXA6IG51bWJlcixcblx0XHRydW5HbG9iYWxFZmZlY3RzOiBib29sZWFuID0gdHJ1ZSxcblx0XHRzdG9yZT86IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPixcblx0XHRmcmFtZT86IFhSRnJhbWUsXG5cdCk6IHZvaWQge1xuXHRcdGlmIChydW5HbG9iYWxFZmZlY3RzKSBmbHVzaEdsb2JhbEVmZmVjdHMoJ2JlZm9yZScsIHRpbWVzdGFtcCk7XG5cdFx0aWYgKCFzdG9yZSkgZm9yIChjb25zdCByb290IG9mIHJvb3RzLnZhbHVlcygpKSByZW5kZXIodGltZXN0YW1wLCByb290KTtcblx0XHRlbHNlIHJlbmRlcih0aW1lc3RhbXAsIHN0b3JlLCBmcmFtZSk7XG5cdFx0aWYgKHJ1bkdsb2JhbEVmZmVjdHMpIGZsdXNoR2xvYmFsRWZmZWN0cygnYWZ0ZXInLCB0aW1lc3RhbXApO1xuXHR9XG5cblx0cmV0dXJuIHsgbG9vcCwgaW52YWxpZGF0ZSwgYWR2YW5jZSB9O1xufVxuXG5leHBvcnQgY29uc3QgW2luamVjdExvb3BdID0gY3JlYXRlSW5qZWN0aW9uVG9rZW4oKCkgPT4gY3JlYXRlTG9vcChyb290cykpO1xuIl19
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2xvb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFJekUsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUE4QyxDQUFDO0FBSTNFLFNBQVMsVUFBVSxDQUFDLFFBQWlDLEVBQUUsSUFBa0I7SUFDeEUsTUFBTSxHQUFHLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sYUFBYSxHQUFpQixJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzlDLE1BQU0sa0JBQWtCLEdBQWlCLElBQUksR0FBRyxFQUFFLENBQUM7QUFDbkQsTUFBTSxpQkFBaUIsR0FBaUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUVsRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFpQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBRXBHOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFFBQWlDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztBQUU5Rzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUFpQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFFdEcsU0FBUyxHQUFHLENBQUMsT0FBcUIsRUFBRSxTQUFpQjtJ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QUFJLENBQUMsQ0FBQzs7WUFDbEUsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckMsSUFBSSxnQkFBZ0I7WUFBRSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQ3RDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSW5qZWN0aW9uVG9rZW4gfSBmcm9tICduZ3h0ZW5zaW9uL2NyZWF0ZS1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHsgTmd0Q2FudmFzRWxlbWVudCwgTmd0R2xvYmFsUmVuZGVyQ2FsbGJhY2ssIE5ndFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBOZ3RTaWduYWxTdG9yZSB9IGZyb20gJy4vdXRpbHMvc2lnbmFsLXN0b3JlJztcblxuZXhwb3J0IGNvbnN0IHJvb3RzID0gbmV3IE1hcDxOZ3RDYW52YXNFbGVtZW50LCBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT4+KCk7XG5cbnR5cGUgU3ViSXRlbSA9IHsgY2FsbGJhY2s6IE5ndEdsb2JhbFJlbmRlckNhbGxiYWNrIH07XG5cbmZ1bmN0aW9uIGNyZWF0ZVN1YnMoY2FsbGJhY2s6IE5ndEdsb2JhbFJlbmRlckNhbGxiYWNrLCBzdWJzOiBTZXQ8U3ViSXRlbT4pOiAoKSA9PiB2b2lkIHtcblx0Y29uc3Qgc3ViID0geyBjYWxsYmFjayB9O1xuXHRzdWJzLmFkZChzdWIpO1xuXHRyZXR1cm4gKCkgPT4gdm9pZCBzdWJzLmRlbGV0ZShzdWIpO1xufVxuXG5jb25zdCBnbG9iYWxFZmZlY3RzOiBTZXQ8U3ViSXRlbT4gPSBuZXcgU2V0KCk7XG5jb25zdCBnbG9iYWxBZnRlckVmZmVjdHM6IFNldDxTdWJJdGVtPiA9IG5ldyBTZXQoKTtcbmNvbnN0IGdsb2JhbFRhaWxFZmZlY3RzOiBTZXQ8U3ViSXRlbT4gPSBuZXcgU2V0KCk7XG5cbi8qKlxuICogQWRkcyBhIGdsb2JhbCByZW5kZXIgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGVhY2ggZnJhbWUuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5wbW5kLnJzL3JlYWN0LXRocmVlLWZpYmVyL2FwaS9hZGRpdGlvbmFsLWV4cG9ydHMjYWRkRWZmZWN0XG4gKi9cbmV4cG9ydCBjb25zdCBhZGRFZmZlY3QgPSAoY2FsbGJhY2s6IE5ndEdsb2JhbFJlbmRlckNhbGxiYWNrKSA9PiBjcmVhdGVTdWJzKGNhbGxiYWNrLCBnbG9iYWxFZmZlY3RzKTtcblxuLyoqXG4gKiBBZGRzIGEgZ2xvYmFsIGFmdGVyLXJlbmRlciBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgZWFjaCBmcmFtZS5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLnBtbmQucnMvcmVhY3QtdGhyZWUtZmliZXIvYXBpL2FkZGl0aW9uYWwtZXhwb3J0cyNhZGRBZnRlckVmZmVjdFxuICovXG5leHBvcnQgY29uc3QgYWRkQWZ0ZXJFZmZlY3QgPSAoY2FsbGJhY2s6IE5ndEdsb2JhbFJlbmRlckNhbGxiYWNrKSA9PiBjcmVhdGVTdWJzKGNhbGxiYWNrLCBnbG9iYWxBZnRlckVmZmVjdHMpO1xuXG4vKipcbiAqIEFkZHMgYSBnbG9iYWwgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gcmVuZGVyaW5nIHN0b3BzLlxuICogQHNlZSBodHRwczovL2RvY3MucG1uZC5ycy9yZWFjdC10aHJlZS1maWJlci9hcGkvYWRkaXRpb25hbC1leHBvcnRzI2FkZFRhaWxcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZFRhaWwgPSAoY2FsbGJhY2s6IE5ndEdsb2JhbFJlbmRlckNhbGxiYWNrKSA9PiBjcmVhdGVTdWJzKGNhbGxiYWNrLCBnbG9iYWxUYWlsRWZmZWN0cyk7XG5cbmZ1bmN0aW9uIHJ1bihlZmZlY3RzOiBTZXQ8U3ViSXRlbT4sIHRpbWVzdGFtcDogbnVtYmVyKSB7XG5cdGlmICghZWZmZWN0cy5zaXplKSByZXR1cm47XG5cdGZvciAoY29uc3QgeyBjYWxsYmFjayB9IG9mIGVmZmVjdHMudmFsdWVzKCkpIHtcblx0XHRjYWxsYmFjayh0aW1lc3RhbXApO1xuXHR9XG59XG5cbmV4cG9ydCB0eXBlIE5ndEdsb2JhbEVmZmVjdFR5cGUgPSAnYmVmb3JlJyB8ICdhZnRlcicgfCAndGFpbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmbHVzaEdsb2JhbEVmZmVjdHModHlwZTogTmd0R2xvYmFsRWZmZWN0VHlwZSwgdGltZXN0YW1wOiBudW1iZXIpOiB2b2lkIHtcblx0c3dpdGNoICh0eXBlKSB7XG5cdFx0Y2FzZSAnYmVmb3JlJzpcblx0XHRcdHJldHVybiBydW4oZ2xvYmFsRWZmZWN0cywgdGltZXN0YW1wKTtcblx0XHRjYXNlICdhZnRlcic6XG5cdFx0XHRyZXR1cm4gcnVuKGdsb2JhbEFmdGVyRWZmZWN0cywgdGltZXN0YW1wKTtcblx0XHRjYXNlICd0YWlsJzpcblx0XHRcdHJldHVybiBydW4oZ2xvYmFsVGFpbEVmZmVjdHMsIHRpbWVzdGFtcCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gcmVuZGVyKHRpbWVzdGFtcDogbnVtYmVyLCBzdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+LCBmcmFtZT86IFhSRnJhbWUpIHtcblx0Y29uc3Qgc3RhdGUgPSBzdG9yZS5zbmFwc2hvdDtcblx0Ly8gUnVuIGxvY2FsIGVmZmVjdHNcblx0bGV0IGRlbHRhID0gc3RhdGUuY2xvY2suZ2V0RGVsdGEoKTtcblx0Ly8gSW4gZnJhbWVsb29wPSduZXZlcicgbW9kZSwgY2xvY2sgdGltZXMgYXJlIHVwZGF0ZWQgdXNpbmcgdGhlIHByb3ZpZGVkIHRpbWVzdGFtcFxuXHRpZiAoc3RhdGUuZnJhbWVsb29wID09PSAnbmV2ZXInICYmIHR5cGVvZiB0aW1lc3RhbXAgPT09ICdudW1iZXInKSB7XG5cdFx0ZGVsdGEgPSB0aW1lc3RhbXAgLSBzdGF0ZS5jbG9jay5lbGFwc2VkVGltZTtcblx0XHRzdGF0ZS5jbG9jay5vbGRUaW1lID0gc3RhdGUuY2xvY2suZWxhcHNlZFRpbWU7XG5cdFx0c3RhdGUuY2xvY2suZWxhcHNlZFRpbWUgPSB0aW1lc3RhbXA7XG5cdH1cblx0Ly8gQ2FsbCBzdWJzY3JpYmVycyAoYmVmb3JlUmVuZGVyKVxuXHRjb25zdCBzdWJzY3JpYmVycyA9IHN0YXRlLmludGVybmFsLnN1YnNjcmliZXJzO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IHN1YnNjcmliZXJzLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3Qgc3Vic2NyaXB0aW9uID0gc3Vic2NyaWJlcnNbaV07XG5cdFx0c3Vic2NyaXB0aW9uLmNhbGxiYWNrKHsgLi4uc3Vic2NyaXB0aW9uLnN0b3JlLnNuYXBzaG90LCBkZWx0YSwgZnJhbWUgfSk7XG5cdH1cblx0Ly8gUmVuZGVyIGNvbnRlbnRcblx0aWYgKCFzdGF0ZS5pbnRlcm5hbC5wcmlvcml0eSAmJiBzdGF0ZS5nbC5yZW5kZXIpIHN0YXRlLmdsLnJlbmRlcihzdGF0ZS5zY2VuZSwgc3RhdGUuY2FtZXJhKTtcblx0Ly8gRGVjcmVhc2UgZnJhbWUgY291bnRcblx0c3RhdGUuaW50ZXJuYWwuZnJhbWVzID0gTWF0aC5tYXgoMCwgc3RhdGUuaW50ZXJuYWwuZnJhbWVzIC0gMSk7XG5cdHJldHVybiBzdGF0ZS5mcmFtZWxvb3AgPT09ICdhbHdheXMnID8gMSA6IHN0YXRlLmludGVybmFsLmZyYW1lcztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTG9vcDxUQ2FudmFzPihyb290czogTWFwPFRDYW52YXMsIE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPj4pIHtcblx0bGV0IHJ1bm5pbmcgPSBmYWxzZTtcblx0bGV0IHJlcGVhdDogbnVtYmVyO1xuXHRsZXQgZnJhbWU6IG51bWJlcjtcblx0bGV0IGJlZm9yZVJlbmRlckluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuXHRmdW5jdGlvbiBsb29wKHRpbWVzdGFtcDogbnVtYmVyKTogdm9pZCB7XG5cdFx0ZnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUobG9vcCk7XG5cdFx0cnVubmluZyA9IHRydWU7XG5cdFx0cmVwZWF0ID0gMDtcblxuXHRcdC8vIFJ1biBlZmZlY3RzXG5cdFx0Zmx1c2hHbG9iYWxFZmZlY3RzKCdiZWZvcmUnLCB0aW1lc3RhbXApO1xuXG5cdFx0Ly8gUmVuZGVyIGFsbCByb290c1xuXHRcdGJlZm9yZVJlbmRlckluUHJvZ3Jlc3MgPSB0cnVlO1xuXHRcdGZvciAoY29uc3Qgcm9vdCBvZiByb290cy52YWx1ZXMoKSkge1xuXHRcdFx0Y29uc3Qgc3RhdGUgPSByb290LnNuYXBzaG90O1xuXHRcdFx0Ly8gSWYgdGhlIGZyYW1lbG9vcCBpcyBpbnZhbGlkYXRlZCwgZG8gbm90IHJ1biBhbm90aGVyIGZyYW1lXG5cdFx0XHRpZiAoXG5cdFx0XHRcdHN0YXRlLmludGVybmFsLmFjdGl2ZSAmJlxuXHRcdFx0XHQoc3RhdGUuZnJhbWVsb29wID09PSAnYWx3YXlzJyB8fCBzdGF0ZS5pbnRlcm5hbC5mcmFtZXMgPiAwKSAmJlxuXHRcdFx0XHQhc3RhdGUuZ2wueHI/LmlzUHJlc2VudGluZ1xuXHRcdFx0KSB7XG5cdFx0XHRcdHJlcGVhdCArPSByZW5kZXIodGltZXN0YW1wLCByb290KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0YmVmb3JlUmVuZGVySW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG5cdFx0Ly8gUnVuIGFmdGVyLWVmZmVjdHNcblx0XHRmbHVzaEdsb2JhbEVmZmVjdHMoJ2FmdGVyJywgdGltZXN0YW1wKTtcblxuXHRcdC8vIFN0b3AgdGhlIGxvb3AgaWYgbm90aGluZyBpbnZhbGlkYXRlcyBpdFxuXHRcdGlmIChyZXBlYXQgPT09IDApIHtcblx0XHRcdC8vIFRhaWwgY2FsbCBlZmZlY3RzLCB0aGV5IGFyZSBjYWxsZWQgd2hlbiByZW5kZXJpbmcgc3RvcHNcblx0XHRcdGZsdXNoR2xvYmFsRWZmZWN0cygndGFpbCcsIHRpbWVzdGFtcCk7XG5cblx0XHRcdC8vIEZsYWcgZW5kIG9mIG9wZXJhdGlvblxuXHRcdFx0cnVubmluZyA9IGZhbHNlO1xuXHRcdFx0cmV0dXJuIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lKTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBpbnZhbGlkYXRlKHN0b3JlPzogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+LCBmcmFtZXMgPSAxKTogdm9pZCB7XG5cdFx0Y29uc3Qgc3RhdGUgPSBzdG9yZT8uc25hcHNob3Q7XG5cdFx0aWYgKCFzdGF0ZSkgcmV0dXJuIHJvb3RzLmZvckVhY2goKHJvb3QpID0+IGludmFsaWRhdGUocm9vdCwgZnJhbWVzKSk7XG5cdFx0aWYgKHN0YXRlLmdsLnhyPy5pc1ByZXNlbnRpbmcgfHwgIXN0YXRlLmludGVybmFsLmFjdGl2ZSB8fCBzdGF0ZS5mcmFtZWxvb3AgPT09ICduZXZlcicpIHJldHVybjtcblx0XHRpZiAoZnJhbWVzID4gMSkge1xuXHRcdFx0Ly8gbGVnYWN5IHN1cHBvcnQgZm9yIHBlb3BsZSB1c2luZyBmcmFtZXMgcGFyYW1ldGVyc1xuXHRcdFx0Ly8gSW5jcmVhc2UgZnJhbWVzLCBkbyBub3QgZ28gaGlnaGVyIHRoYW4gNjBcblx0XHRcdHN0YXRlLmludGVybmFsLmZyYW1lcyA9IE1hdGgubWluKDYwLCBzdGF0ZS5pbnRlcm5hbC5mcmFtZXMgKyBmcmFtZXMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoYmVmb3JlUmVuZGVySW5Qcm9ncmVzcykge1xuXHRcdFx0XHQvL2NhbGxlZCBmcm9tIHdpdGhpbiBhIGJlZm9yZVJlbmRlciwgaXQgbWVhbnMgdGhlIHVzZXIgd2FudHMgYW4gYWRkaXRpb25hbCBmcmFtZVxuXHRcdFx0XHRzdGF0ZS5pbnRlcm5hbC5mcmFtZXMgPSAyO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly90aGUgdXNlciBuZWVkIGEgbmV3IGZyYW1lLCBubyBuZWVkIHRvIGluY3JlbWVudCBmdXJ0aGVyIHRoYW4gMVxuXHRcdFx0XHRzdGF0ZS5pbnRlcm5hbC5mcmFtZXMgPSAxO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIElmIHRoZSByZW5kZXItbG9vcCBpc24ndCBhY3RpdmUsIHN0YXJ0IGl0XG5cdFx0aWYgKCFydW5uaW5nKSB7XG5cdFx0XHRydW5uaW5nID0gdHJ1ZTtcblx0XHRcdHJlcXVlc3RBbmltYXRpb25GcmFtZShsb29wKTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBhZHZhbmNlKFxuXHRcdHRpbWVzdGFtcDogbnVtYmVyLFxuXHRcdHJ1bkdsb2JhbEVmZmVjdHMgPSB0cnVlLFxuXHRcdHN0b3JlPzogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+LFxuXHRcdGZyYW1lPzogWFJGcmFtZSxcblx0KTogdm9pZCB7XG5cdFx0aWYgKHJ1bkdsb2JhbEVmZmVjdHMpIGZsdXNoR2xvYmFsRWZmZWN0cygnYmVmb3JlJywgdGltZXN0YW1wKTtcblx0XHRpZiAoIXN0b3JlKSBmb3IgKGNvbnN0IHJvb3Qgb2Ygcm9vdHMudmFsdWVzKCkpIHJlbmRlcih0aW1lc3RhbXAsIHJvb3QpO1xuXHRcdGVsc2UgcmVuZGVyKHRpbWVzdGFtcCwgc3RvcmUsIGZyYW1lKTtcblx0XHRpZiAocnVuR2xvYmFsRWZmZWN0cykgZmx1c2hHbG9iYWxFZmZlY3RzKCdhZnRlcicsIHRpbWVzdGFtcCk7XG5cdH1cblxuXHRyZXR1cm4geyBsb29wLCBpbnZhbGlkYXRlLCBhZHZhbmNlIH07XG59XG5cbmV4cG9ydCBjb25zdCBbaW5qZWN0TG9vcF0gPSBjcmVhdGVJbmplY3Rpb25Ub2tlbigoKSA9PiBjcmVhdGVMb29wKHJvb3RzKSk7XG4iXX0=
@@ -99,7 +99,7 @@ export class NgtRenderer {
99
99
  if (!injectedArgs[0])
100
100
  throw new Error(`[NGT] ngt-primitive without args is invalid`);
101
101
  const object = injectedArgs[0];
102
- let localState = getLocalState(object);
102
+ const localState = getLocalState(object);
103
103
  if (!localState) {
104
104
  // NOTE: if an object isn't already "prepared", we prepare it
105
105
  prepare(object, { store: this.rootStore, primitive: true });
@@ -260,7 +260,7 @@ export class NgtRenderer {
260
260
  return rS[1 /* NgtRendererClassId.parent */];
261
261
  return this.delegate.parentNode(node);
262
262
  }
263
- setAttributeInternal(el, name, value, namespace) {
263
+ setAttributeInternal(el, name, value, _namespace) {
264
264
  const rS = el.__ngt_renderer__;
265
265
  if (rS[3 /* NgtRendererClassId.destroyed */])
266
266
  return false;
@@ -542,4 +542,4 @@ export function provideNgtRenderer(store) {
542
542
  }
543
543
  export { extend } from './catalogue';
544
544
  export { HTML, ROUTED_SCENE } from './constants';
545
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yZW5kZXJlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNOLFVBQVUsRUFFVixnQkFBZ0IsRUFFaEIsWUFBWSxFQUNaLE1BQU0sRUFDTix3QkFBd0IsR0FDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BFLE9BQU8sRUFBcUIsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSw0QkFBNEIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwSCxPQUFPLEVBR04sUUFBUSxFQUNSLFVBQVUsRUFDViw0QkFBNEIsRUFDNUIsS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEdBQ1QsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFzQixnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBR25ILE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFUyw0QkFBdUIsR0FBRyxNQUFN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YyxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztnQkFDakIsTUFBTTtZQUNQLENBQUM7WUFDRCxDQUFDLEVBQUUsQ0FBQztRQUNMLENBQUM7UUFFRCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ2hDLENBQUM7SUFZRCxJQUFJLElBQUk7UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7Q0FDRDtBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUErQjtJQUNqRSxNQUFNLFNBQVMsR0FBRztRQUNqQixrQkFBa0I7UUFDbEIsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFO1FBQzlELFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7S0FDekIsQ0FBQztJQUVGLE9BQU8sd0JBQXdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRJbmplY3RhYmxlLFxuXHRSZW5kZXJlcjIsXG5cdFJlbmRlcmVyRmFjdG9yeTIsXG5cdFJlbmRlcmVyVHlwZTIsXG5cdGdldERlYnVnTm9kZSxcblx0aW5qZWN0LFxuXHRtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncyB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvYXJncyc7XG5pbXBvcnQgeyBnZXRMb2NhbFN0YXRlLCBwcmVwYXJlIH0gZnJvbSAnLi4vaW5zdGFuY2UnO1xuaW1wb3J0IHsgTkdUX1NUT1JFLCBpbmplY3RTdG9yZSwgcHJvdmlkZVN0b3JlIH0gZnJvbSAnLi4vc3RvcmUnO1xuaW1wb3J0IHsgTmd0QW55UmVjb3JkLCBOZ3RJbnN0YW5jZU5vZGUsIE5ndExvY2FsU3RhdGUsIE5ndFN0YXRlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgYXBwbHlQcm9wcyB9IGZyb20gJy4uL3V0aWxzL2FwcGx5LXByb3BzJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgTmd0U2lnbmFsU3RvcmUsIHNpZ25hbFN0b3JlIH0gZnJvbSAnLi4vdXRpbHMvc2lnbmFsLXN0b3JlJztcbmltcG9ydCB7IE5ndEFueUNvbnN0cnVjdG9yLCBpbmplY3RDYXRhbG9ndWUgfSBmcm9tICcuL2NhdGFsb2d1ZSc7XG5pbXBvcnQgeyBIVE1MLCBST1VURURfU0NFTkUsIFNQRUNJQUxfRE9NX1RBRywgU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVCwgU1BFQ0lBTF9QUk9QRVJUSUVTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcblx0Tmd0UmVuZGVyZXJOb2RlLFxuXHROZ3RSZW5kZXJlclN0YXRlLFxuXHRhZGRDaGlsZCxcblx0Y3JlYXRlTm9kZSxcblx0Z2V0Q2xvc2VzdFBhcmVudFdpdGhJbnN0YW5jZSxcblx0aXNET00sXG5cdHJlbW92ZUNoaWxkLFxuXHRzZXRQYXJlbnQsXG59IGZyb20gJy4vc3RhdGUnO1xuaW1wb3J0IHsgTmd0UmVuZGVyZXJDbGFzc0lkLCBhdHRhY2hUaHJlZUNoaWxkLCBrZWJhYlRvUGFzY2FsLCBwcm9jZXNzVGhyZWVFdmVudCwgcmVtb3ZlVGhyZWVDaGlsZCB9IGZyb20gJy4vdXRpbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmd0UmVuZGVyZXJGYWN0b3J5IGltcGxlbWVudHMgUmVuZGVyZXJGYWN0b3J5MiB7XG5cdHByaXZhdGUgZGVsZWdhdGVSZW5kZXJlckZhY3RvcnkgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5MiwgeyBza2lwU2VsZjogdHJ1ZSB9KTtcblx0cHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cdHByaXZhdGUgY2F0YWxvZ3VlID0gaW5qZWN0Q2F0YWxvZ3VlKCk7XG5cdHByaXZhdGUgcm9vdFN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblxuXHRwcml2YXRlIHBvcnRhbENvbW1lbnRzTm9kZXM6IEFycmF5PE5ndFJlbmRlcmVyTm9kZT4gPSBbXTtcblx0cHJpdmF0ZSByZW5kZXJlck1hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZW5kZXJlcjI+KCk7XG5cdHByaXZhdGUgcm91dGVkU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cblx0Y3JlYXRlUmVuZGVyZXIoaG9zdEVsZW1lbnQ6IGFueSwgdHlwZTogUmVuZGVyZXJUeXBlMiB8IG51bGwpOiBSZW5kZXJlcjIge1xuXHRcdGNvbnN0IGRlbGVnYXRlUmVuZGVyZXIgPSB0aGlzLmRlbGVnYXRlUmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKGhvc3RFbGVtZW50LCB0eXBlKTtcblxuXHRcdGlmICghdHlwZSkgcmV0dXJuIGRlbGVnYXRlUmVuZGVyZXI7XG5cblx0XHQvLyBOT1RFOiBtaWdodCBuZWVkIHRvIHJldmlzaXQgdGhpc1xuXHRcdGlmICgodHlwZSBhcyBOZ3RBbnlSZWNvcmQpWyd0eXBlJ11bSFRNTF0pIHtcblx0XHRcdHRoaXMucmVuZGVyZXJNYXAuc2V0KHR5cGUuaWQsIGRlbGVnYXRlUmVuZGVyZXIpO1xuXHRcdFx0cmV0dXJuIGRlbGVnYXRlUmVuZGVyZXI7XG5cdFx0fVxuXG5cdFx0aWYgKCh0eXBlIGFzIE5ndEFueVJlY29yZClbJ3R5cGUnXVtST1VURURfU0NFTkVdKSB7XG5cdFx0XHR0aGlzLnJvdXRlZFNldC5hZGQodHlwZS5pZCk7XG5cdFx0fVxuXG5cdFx0bGV0IHJlbmRlcmVyID0gdGhpcy5yZW5kZXJlck1hcC5nZXQodHlwZS5pZCk7XG5cdFx0aWYgKCFyZW5kZXJlcikge1xuXHRcdFx0dGhpcy5yZW5kZXJlck1hcC5zZXQoXG5cdFx0XHRcdHR5cGUuaWQsXG5cdFx0XHRcdChyZW5kZXJlciA9IG5ldyBOZ3RSZW5kZXJlcihcblx0XHRcdFx0XHRkZWxlZ2F0ZVJlbmRlcmVyLFxuXHRcdFx0XHRcdHRoaXMucm9vdFN0b3JlLFxuXHRcdFx0XHRcdHRoaXMuZG9jdW1lbnQsXG5cdFx0XHRcdFx0dGhpcy5wb3J0YWxDb21tZW50c05vZGVzLFxuXHRcdFx0XHRcdHRoaXMuY2F0YWxvZ3VlLFxuXHRcdFx0XHRcdC8vIHNldHRpbmcgcm9vdCBzY2VuZSBpZiB0aGVyZSdzIG5vIHJvdXRlZCBzY2VuZSBPUiB0aGlzIGNvbXBvbmVudCBpcyB0aGUgcm91dGVkIFNjZW5lXG5cdFx0XHRcdFx0IWhvc3RFbGVtZW50ICYmICh0aGlzLnJvdXRlZFNldC5zaXplID09PSAwIHx8IHRoaXMucm91dGVkU2V0Lmhhcyh0eXBlLmlkKSksXG5cdFx0XHRcdCkpLFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlbmRlcmVyO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBOZ3RSZW5kZXJlciBpbXBsZW1lbnRzIFJlbmRlcmVyMiB7XG5cdHByaXZhdGUgYXJnc0NvbW1lbnROb2RlczogQXJyYXk8Tmd0UmVuZGVyZXJOb2RlPiA9IFtdO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgZGVsZWdhdGU6IFJlbmRlcmVyMixcblx0XHRwcml2YXRlIHJvb3RTdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+LFxuXHRcdHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuXHRcdHByaXZhdGUgcG9ydGFsQ29tbWVudHNOb2RlczogQXJyYXk8Tmd0UmVuZGVyZXJOb2RlPixcblx0XHRwcml2YXRlIGNhdGFsb2d1ZTogUmVjb3JkPHN0cmluZywgTmd0QW55Q29uc3RydWN0b3I+LFxuXHRcdHByaXZhdGUgaXNSb290ID0gdHJ1ZSxcblx0KSB7fVxuXG5cdGNyZWF0ZUVsZW1lbnQobmFtZTogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG5cdFx0Y29uc3QgZWxlbWVudCA9IHRoaXMuZGVsZWdhdGUuY3JlYXRlRWxlbWVudChuYW1lLCBuYW1lc3BhY2UpO1xuXG5cdFx0Ly8gb24gZmlyc3QgcGFzcywgd2UgcmV0dXJuIHRoZSBSb290IFNjZW5lIGFzIHRoZSByb290IG5vZGVcblx0XHRpZiAodGhpcy5pc1Jvb3QpIHtcblx0XHRcdHRoaXMuaXNSb290ID0gZmFsc2U7XG5cdFx0XHRjb25zdCBub2RlID0gY3JlYXRlTm9kZSgndGhyZWUnLCB0aGlzLnJvb3RTdG9yZS5zbmFwc2hvdC5zY2VuZSwgdGhpcy5kb2N1bWVudCk7XG5cdFx0XHRub2RlLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmluamVjdG9yRmFjdG9yeV0gPSAoKSA9PiBnZXREZWJ1Z05vZGUoZWxlbWVudCk/LmluamVjdG9yO1xuXHRcdFx0cmV0dXJuIG5vZGU7XG5cdFx0fVxuXG5cdFx0aWYgKG5hbWUgPT09IFNQRUNJQUxfRE9NX1RBRy5OR1RfUE9SVEFMKSB7XG5cdFx0XHRyZXR1cm4gY3JlYXRlTm9kZSgncG9ydGFsJywgZWxlbWVudCwgdGhpcy5kb2N1bWVudCk7XG5cdFx0fVxuXG5cdFx0aWYgKG5hbWUgPT09IFNQRUNJQUxfRE9NX1RBRy5OR1RfVkFMVUUpIHtcblx0XHRcdGNvbnN0IGluc3RhbmNlU3RvcmUgPSBzaWduYWxTdG9yZSh7IHBhcmVudDogbnVsbCwgb2JqZWN0czogW10sIG5vbk9iamVjdHM6IFtdIH0pO1xuXHRcdFx0cmV0dXJuIGNyZWF0ZU5vZGUoXG5cdFx0XHRcdCd0aHJlZScsXG5cdFx0XHRcdE9iamVjdC5hc3NpZ24oXG5cdFx0XHRcdFx0eyBfX25ndF9yZW5kZXJlcl9fOiB7IHJhd1ZhbHVlOiB1bmRlZmluZWQgfSB9LFxuXHRcdFx0XHRcdC8vIE5PVEU6IHdlIGFzc2lnbiB0aGlzIG1hbnVhbGx5IHRvIGEgcmF3IHZhbHVlIG5vZGVcblx0XHRcdFx0XHQvLyBiZWNhdXNlIHdlIHNheSBpdCBpcyBhICd0aHJlZScgbm9kZSBidXQgd2UncmUgbm90IHVzaW5nIHByZXBhcmUoKVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdF9fbmd0X186IHtcblx0XHRcdFx0XHRcdFx0aXNSYXc6IHRydWUsXG5cdFx0XHRcdFx0XHRcdGluc3RhbmNlU3RvcmUsXG5cdFx0XHRcdFx0XHRcdHNldFBhcmVudChwYXJlbnQ6IE5ndEluc3RhbmNlTm9kZSkge1xuXHRcdFx0XHRcdFx0XHRcdGluc3RhbmNlU3RvcmUudXBkYXRlKHsgcGFyZW50IH0pO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHQpLFxuXHRcdFx0XHR0aGlzLmRvY3VtZW50LFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRjb25zdCBbaW5qZWN0ZWRBcmdzXSA9IFt0aGlzLmdldE5ndEFyZ3MoKT8udmFsdWUgfHwgW11dO1xuXG5cdFx0aWYgKG5hbWUgPT09IFNQRUNJQUxfRE9NX1RBRy5OR1RfUFJJTUlUSVZFKSB7XG5cdFx0XHRpZiAoIWluamVjdGVkQXJnc1swXSkgdGhyb3cgbmV3IEVycm9yKGBbTkdUXSBuZ3QtcHJpbWl0aXZlIHdpdGhvdXQgYXJncyBpcyBpbnZhbGlkYCk7XG5cdFx0XHRjb25zdCBvYmplY3QgPSBpbmplY3RlZEFyZ3NbMF07XG5cdFx0XHRsZXQgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUob2JqZWN0KTtcblx0XHRcdGlmICghbG9jYWxTdGF0ZSkge1xuXHRcdFx0XHQvLyBOT1RFOiBpZiBhbiBvYmplY3QgaXNuJ3QgYWxyZWFkeSBcInByZXBhcmVkXCIsIHdlIHByZXBhcmUgaXRcblx0XHRcdFx0cHJlcGFyZShvYmplY3QsIHsgc3RvcmU6IHRoaXMucm9vdFN0b3JlLCBwcmltaXRpdmU6IHRydWUgfSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY3JlYXRlTm9kZSgndGhyZWUnLCBvYmplY3QsIHRoaXMuZG9jdW1lbnQpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHRocmVlTmFtZSA9IGtlYmFiVG9QYXNjYWwobmFtZS5zdGFydHNXaXRoKCduZ3QtJykgPyBuYW1lLnNsaWNlKDQpIDogbmFtZSk7XG5cdFx0Y29uc3QgdGhyZWVUYXJnZXQgPSB0aGlzLmNhdGFsb2d1ZVt0aHJlZU5hbWVdO1xuXG5cdFx0Ly8gd2UgaGF2ZSB0aGUgVEhSRUUgY29uc3RydWN0b3IgaGVyZSwgaGFuZGxlIGl0XG5cdFx0aWYgKHRocmVlVGFyZ2V0KSB7XG5cdFx0XHRjb25zdCBpbnN0YW5jZSA9IHByZXBhcmUobmV3IHRocmVlVGFyZ2V0KC4uLmluamVjdGVkQXJncyksIHsgc3RvcmU6IHRoaXMucm9vdFN0b3JlIH0pO1xuXHRcdFx0Y29uc3Qgbm9kZSA9IGNyZWF0ZU5vZGUoJ3RocmVlJywgaW5zdGFuY2UsIHRoaXMuZG9jdW1lbnQpO1xuXHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpIGFzIE5ndExvY2FsU3RhdGU7XG5cblx0XHRcdC8vIGF1dG8tYXR0YWNoIGZvciBnZW9tZXRyeSBhbmQgbWF0ZXJpYWxcblx0XHRcdGlmIChpcy5nZW9tZXRyeShpbnN0YW5jZSkpIHtcblx0XHRcdFx0bG9jYWxTdGF0ZS5hdHRhY2ggPSBbJ2dlb21ldHJ5J107XG5cdFx0XHR9IGVsc2UgaWYgKGlzLm1hdGVyaWFsKGluc3RhbmNlKSkge1xuXHRcdFx0XHRsb2NhbFN0YXRlLmF0dGFjaCA9IFsnbWF0ZXJpYWwnXTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG5vZGU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNyZWF0ZU5vZGUoJ2RvbScsIGVsZW1lbnQsIHRoaXMuZG9jdW1lbnQpO1xuXHR9XG5cblx0Y3JlYXRlQ29tbWVudCh2YWx1ZTogc3RyaW5nKSB7XG5cdFx0Y29uc3QgY29tbWVudCA9IHRoaXMuZGVsZWdhdGUuY3JlYXRlQ29tbWVudCh2YWx1ZSk7XG5cblx0XHQvLyBOT1RFOiB3ZSBhdHRhY2ggYW4gYXJyb3cgZnVuY3Rpb24gdG8gdGhlIENvbW1lbnQgbm9kZVxuXHRcdC8vIEluIG91ciBkaXJlY3RpdmVzLCB3ZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHRoZW4gc3RhcnQgdHJhY2tpbmcgdGhlIFJlbmRlcmVyTm9kZVxuXHRcdC8vIHRoaXMgaXMgZG9uZSB0byBsaW1pdCB0aGUgYW1vdW50IG9mIE5vZGVzIHdlIG5lZWQgdG8gcHJvY2VzcyBmb3IgZ2V0Q3JlYXRpb25TdGF0ZVxuXHRcdGNvbW1lbnRbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF0gPSAobm9kZTogTmd0UmVuZGVyZXJOb2RlIHwgJ2FyZ3MnKSA9PiB7XG5cdFx0XHRpZiAobm9kZSA9PT0gJ2FyZ3MnKSB7XG5cdFx0XHRcdHRoaXMuYXJnc0NvbW1lbnROb2Rlcy5wdXNoKGNvbW1lbnQpO1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0dGhpcy5wb3J0YWxDb21tZW50c05vZGVzLnB1c2gobm9kZSk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdHJldHVybiBjcmVhdGVOb2RlKCdjb21tZW50JywgY29tbWVudCwgdGhpcy5kb2N1bWVudCk7XG5cdH1cblxuXHRhcHBlbmRDaGlsZChwYXJlbnQ6IE5ndFJlbmRlcmVyTm9kZSwgbmV3Q2hpbGQ6IE5ndFJlbmRlcmVyTm9kZSk6IHZvaWQge1xuXHRcdGNvbnN0IHBSUyA9IHBhcmVudC5fX25ndF9yZW5kZXJlcl9fO1xuXHRcdGNvbnN0IGNSUyA9IG5ld0NoaWxkLl9fbmd0X3JlbmRlcmVyX187XG5cblx0XHRpZiAoXG5cdFx0XHRwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnZG9tJyAmJlxuXHRcdFx0KG5ld0NoaWxkIGluc3RhbmNlb2YgVGV4dCB8fCBjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnZG9tJylcblx0XHQpIHtcblx0XHRcdGFkZENoaWxkKHBhcmVudCwgbmV3Q2hpbGQpO1xuXG5cdFx0XHRpZiAobmV3Q2hpbGRbJ19fbmd0X2RvbV9wYXJlbnRfXyddICYmIG5ld0NoaWxkWydfX25ndF9kb21fcGFyZW50X18nXSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG5cdFx0XHRcdHRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQobmV3Q2hpbGRbJ19fbmd0X2RvbV9wYXJlbnRfXyddLCBuZXdDaGlsZCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZChwYXJlbnQsIG5ld0NoaWxkKTtcblx0XHRcdGlmIChjUlMpIHtcblx0XHRcdFx0c2V0UGFyZW50KG5ld0NoaWxkLCBwYXJlbnQpO1xuXHRcdFx0XHRpZiAodGhpcy5zaG91bGRGaW5kR3JhbmRwYXJlbnRJbnN0YW5jZShwUlMsIGNSUywgbmV3Q2hpbGQpKSB7XG5cdFx0XHRcdFx0Ly8gd2UnbGwgdHJ5IHRvIGdldCB0aGUgZ3JhbmRwYXJlbnQgaW5zdGFuY2UgaGVyZSBzbyB0aGF0IHdlIGNhbiBydW4gYXBwZW5kQ2hpbGQgd2l0aCBib3RoIGluc3RhbmNlc1xuXHRcdFx0XHRcdGNvbnN0IGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlID0gZ2V0Q2xvc2VzdFBhcmVudFdpdGhJbnN0YW5jZShwYXJlbnQpO1xuXHRcdFx0XHRcdGlmIChjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSkgdGhpcy5hcHBlbmRDaGlsZChjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSwgbmV3Q2hpbGQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoY1JTPy5bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnY29tbWVudCcpIHtcblx0XHRcdHNldFBhcmVudChuZXdDaGlsZCwgcGFyZW50KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRzZXRQYXJlbnQobmV3Q2hpbGQsIHBhcmVudCk7XG5cdFx0YWRkQ2hpbGQocGFyZW50LCBuZXdDaGlsZCk7XG5cblx0XHQvLyBpZiBuZXcgY2hpbGQgaXMgYSBwb3J0YWxcblx0XHRpZiAoY1JTPy5bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAncG9ydGFsJykge1xuXHRcdFx0aWYgKCFjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0pIHRoaXMucHJvY2Vzc1BvcnRhbENvbnRhaW5lcihuZXdDaGlsZCk7XG5cdFx0XHRpZiAoY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdKSB7XG5cdFx0XHRcdHRoaXMuYXBwZW5kQ2hpbGQocGFyZW50LCBjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0pO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIGlmIHBhcmVudCBpcyBhIHBvcnRhbFxuXHRcdGlmIChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAncG9ydGFsJykge1xuXHRcdFx0aWYgKCFwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0pIHRoaXMucHJvY2Vzc1BvcnRhbENvbnRhaW5lcihwYXJlbnQpO1xuXG5cdFx0XHRpZiAocFJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdKSB7XG5cdFx0XHRcdHRoaXMuYXBwZW5kQ2hpbGQocFJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdLCBuZXdDaGlsZCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gaWYgYm90aCBhcmUgdGhyZWUgaW5zdGFuY2VzLCBzdHJhaWdodGZvcndhcmQgY2FzZVxuXHRcdGlmIChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnICYmIGNSUz8uW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuXHRcdFx0Y29uc3QgY0xTID0gZ2V0TG9jYWxTdGF0ZShuZXdDaGlsZCk7XG5cblx0XHRcdC8vIGlmIGNoaWxkIGFscmVhZHkgYXR0YWNoZWQgdG8gYSBwYXJlbnQsIHNraXBcblx0XHRcdGlmIChjTFM/Lmluc3RhbmNlU3RvcmU/LmdldCgncGFyZW50JykpIHJldHVybjtcblx0XHRcdGlmIChwYXJlbnQgPT09IG5ld0NoaWxkKSByZXR1cm47XG5cblx0XHRcdC8vIGF0dGFjaCBUSFJFRSBjaGlsZFxuXHRcdFx0YXR0YWNoVGhyZWVDaGlsZChwYXJlbnQsIG5ld0NoaWxkKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBpZiBvbmx5IHRoZSBwYXJlbnQgaXMgdGhlIFRIUkVFIGluc3RhbmNlXG5cdFx0aWYgKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScpIHtcblx0XHRcdGZvciAoY29uc3QgcmVuZGVyQ2hpbGQgb2YgY1JTPy5bTmd0UmVuZGVyZXJDbGFzc0lkLmNoaWxkcmVuXSB8fCBbXSkge1xuXHRcdFx0XHR0aGlzLmFwcGVuZENoaWxkKHBhcmVudCwgcmVuZGVyQ2hpbGQpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLnNob3VsZEZpbmRHcmFuZHBhcmVudEluc3RhbmNlKHBSUywgY1JTLCBuZXdDaGlsZCkpIHtcblx0XHRcdC8vIHdlJ2xsIHRyeSB0byBnZXQgdGhlIGdyYW5kcGFyZW50IGluc3RhbmNlIGhlcmUgc28gdGhhdCB3ZSBjYW4gcnVuIGFwcGVuZENoaWxkIHdpdGggYm90aCBpbnN0YW5jZXNcblx0XHRcdGNvbnN0IGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlID0gZ2V0Q2xvc2VzdFBhcmVudFdpdGhJbnN0YW5jZShwYXJlbnQpO1xuXHRcdFx0aWYgKGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlKSB0aGlzLmFwcGVuZENoaWxkKGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlLCBuZXdDaGlsZCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHR9XG5cblx0aW5zZXJ0QmVmb3JlKFxuXHRcdHBhcmVudDogTmd0UmVuZGVyZXJOb2RlLFxuXHRcdG5ld0NoaWxkOiBOZ3RSZW5kZXJlck5vZGUsXG5cdFx0Ly8gVE9ETzogd2UgbWlnaHQgbmVlZCB0aGVzZT9cblx0XHQvLyBfcmVmQ2hpbGQ6IE5ndFJlbmRlcmVyTm9kZSxcblx0XHQvLyBfaXNNb3ZlPzogYm9vbGVhbiB8IHVuZGVmaW5lZCxcblx0KTogdm9pZCB7XG5cdFx0Ly8gTk9URTogbm90IHN1cmUgd2h5IHRoaXMgaXMgaGVyZS4gaW52ZXN0aWdhdGUgd2hlbiB3ZSBoYXZlIHRpbWVcblx0XHQvLyBpZiAocGFyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgKG5ld0NoaWxkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgbmV3Q2hpbGQgaW5zdGFuY2VvZiBUZXh0KSkge1xuXHRcdC8vIFx0cmV0dXJuIHRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQocGFyZW50LCBuZXdDaGlsZCk7XG5cdFx0Ly8gfVxuXG5cdFx0aWYgKHBhcmVudCA9PSBudWxsIHx8ICFwYXJlbnQuX19uZ3RfcmVuZGVyZXJfXyB8fCBwYXJlbnQgPT09IG5ld0NoaWxkKSByZXR1cm47XG5cdFx0dGhpcy5hcHBlbmRDaGlsZChwYXJlbnQsIG5ld0NoaWxkKTtcblx0fVxuXG5cdHJlbW92ZUNoaWxkKHBhcmVudDogTmd0UmVuZGVyZXJOb2RlLCBvbGRDaGlsZDogTmd0UmVuZGVyZXJOb2RlLCBpc0hvc3RFbGVtZW50PzogYm9vbGVhbiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuXHRcdGNvbnN0IHBSUyA9IHBhcmVudC5fX25ndF9yZW5kZXJlcl9fO1xuXHRcdGNvbnN0IGNSUyA9IG9sZENoaWxkLl9fbmd0X3JlbmRlcmVyX187XG5cblx0XHRpZiAoXG5cdFx0XHQoIWNSUyB8fCAhcFJTKSAmJlxuXHRcdFx0cGFyZW50IGluc3RhbmNlb2YgRWxlbWVudCAmJlxuXHRcdFx0KG9sZENoaWxkIGluc3RhbmNlb2YgRWxlbWVudCB8fCBvbGRDaGlsZCBpbnN0YW5jZW9mIFRleHQgfHwgb2xkQ2hpbGQgaW5zdGFuY2VvZiBDb21tZW50KVxuXHRcdCkge1xuXHRcdFx0dGhpcy5kZWxlZ2F0ZS5yZW1vdmVDaGlsZChwYXJlbnQsIG9sZENoaWxkKTtcblx0XHRcdHRoaXMuZGVzdHJveUludGVybmFsKG9sZENoaWxkLCBwYXJlbnQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnZG9tJyAmJiAoIXBSUyB8fCBwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnZG9tJykpIHtcblx0XHRcdHRoaXMuZGVsZWdhdGUucmVtb3ZlQ2hpbGQocGFyZW50LCBvbGRDaGlsZCk7XG5cdFx0XHR0aGlzLmRlc3Ryb3lJbnRlcm5hbChvbGRDaGlsZCwgcGFyZW50KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAocFJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJyAmJiBjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG5cdFx0XHRyZW1vdmVUaHJlZUNoaWxkKHBhcmVudCwgb2xkQ2hpbGQsIHRydWUpO1xuXHRcdFx0dGhpcy5kZXN0cm95SW50ZXJuYWwob2xkQ2hpbGQsIHBhcmVudCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0cFJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3BvcnRhbCcgJiZcblx0XHRcdHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQucG9ydGFsQ29udGFpbmVyXT8uX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZSdcblx0XHQpIHtcblx0XHRcdHRoaXMucmVtb3ZlQ2hpbGQocFJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdLCBvbGRDaGlsZCwgaXNIb3N0RWxlbWVudCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScpIHtcblx0XHRcdHRoaXMuZGVzdHJveUludGVybmFsKG9sZENoaWxkLCBwYXJlbnQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlID0gZ2V0Q2xvc2VzdFBhcmVudFdpdGhJbnN0YW5jZShwYXJlbnQpO1xuXHRcdGlmIChjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSkgdGhpcy5yZW1vdmVDaGlsZChjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSwgb2xkQ2hpbGQsIGlzSG9zdEVsZW1lbnQpO1xuXHRcdHRoaXMuZGVzdHJveUludGVybmFsKG9sZENoaWxkLCBjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSBhcyBOZ3RSZW5kZXJlck5vZGUpO1xuXHR9XG5cblx0cGFyZW50Tm9kZShub2RlOiBOZ3RSZW5kZXJlck5vZGUpIHtcblx0XHRjb25zdCByUyA9IG5vZGUuX19uZ3RfcmVuZGVyZXJfXztcblx0XHRpZiAoclM/LltOZ3RSZW5kZXJlckNsYXNzSWQucGFyZW50XSkgcmV0dXJuIHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wYXJlbnRdO1xuXHRcdHJldHVybiB0aGlzLmRlbGVnYXRlLnBhcmVudE5vZGUobm9kZSk7XG5cdH1cblxuXHRwcml2YXRlIHNldEF0dHJpYnV0ZUludGVybmFsKFxuXHRcdGVsOiBOZ3RSZW5kZXJlck5vZGUsXG5cdFx0bmFtZTogc3RyaW5nLFxuXHRcdHZhbHVlOiBzdHJpbmcsXG5cdFx0bmFtZXNwYWNlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcblx0KTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgclMgPSBlbC5fX25ndF9yZW5kZXJlcl9fO1xuXHRcdGlmIChyU1tOZ3RSZW5kZXJlckNsYXNzSWQuZGVzdHJveWVkXSkgcmV0dXJuIGZhbHNlO1xuXG5cdFx0aWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuXHRcdFx0aWYgKG5hbWUgPT09IFNQRUNJQUxfUFJPUEVSVElFUy5SRU5ERVJfUFJJT1JJVFkpIHtcblx0XHRcdFx0Ly8gTk9URTogcHJpb3JpdHkgbmVlZHMgdG8gYmUgc2V0IGFzIGFuIGF0dHJpYnV0ZSBzdHJpbmcgc28gdGhhdCB0aGV5IGNhbiBiZSBzZXQgYXMgZWFybHkgYXMgcG9zc2libGVcblx0XHRcdFx0Ly8gd2UgY29udmVydCB0aGF0IHN0cmluZyB0byBhIG51bWJlci4gaWYgaXQncyBpbnZhbGlkLCBkZWZhdWx0IDBcblx0XHRcdFx0bGV0IHByaW9yaXR5ID0gTnVtYmVyKHZhbHVlKTtcblx0XHRcdFx0aWYgKGlzTmFOKHByaW9yaXR5KSkge1xuXHRcdFx0XHRcdHByaW9yaXR5ID0gMDtcblx0XHRcdFx0XHRjb25zb2xlLndhcm4oYFtOR1RdIFwicHJpb3JpdHlcIiBpcyBhbiBpbnZhbGlkIG51bWJlciwgZGVmYXVsdCB0byAwYCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoZWwpO1xuXHRcdFx0XHRpZiAobG9jYWxTdGF0ZSkgbG9jYWxTdGF0ZS5wcmlvcml0eSA9IHByaW9yaXR5O1xuXHRcdFx0fSBlbHNlIGlmIChuYW1lID09PSBTUEVDSUFMX1BST1BFUlRJRVMuQVRUQUNIKSB7XG5cdFx0XHRcdC8vIE5PVEU6IGhhbmRsZSBhdHRhY2ggYXMgc3RyaW5nXG5cdFx0XHRcdGNvbnN0IHBhdGhzID0gdmFsdWUuc3BsaXQoJy4nKTtcblx0XHRcdFx0aWYgKHBhdGhzLmxlbmd0aCkge1xuXHRcdFx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGVsKTtcblx0XHRcdFx0XHRpZiAobG9jYWxTdGF0ZSkgbG9jYWxTdGF0ZS5hdHRhY2ggPSBwYXRocztcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChuYW1lID09PSBTUEVDSUFMX1BST1BFUlRJRVMuUkFXX1ZBTFVFKSB7XG5cdFx0XHRcdC8vIE5PVEU6IGNvZXJjaW9uXG5cdFx0XHRcdGxldCBtYXliZUNvZXJjZWQ6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gPSB2YWx1ZTtcblx0XHRcdFx0aWYgKG1heWJlQ29lcmNlZCA9PT0gJycgfHwgbWF5YmVDb2VyY2VkID09PSAndHJ1ZScgfHwgbWF5YmVDb2VyY2VkID09PSAnZmFsc2UnKSB7XG5cdFx0XHRcdFx0bWF5YmVDb2VyY2VkID0gbWF5YmVDb2VyY2VkID09PSAndHJ1ZScgfHwgbWF5YmVDb2VyY2VkID09PSAnJztcblx0XHRcdFx0fSBlbHNlIGlmICghaXNOYU4oTnVtYmVyKG1heWJlQ29lcmNlZCkpKSB7XG5cdFx0XHRcdFx0bWF5YmVDb2VyY2VkID0gTnVtYmVyKG1heWJlQ29lcmNlZCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0clNbTmd0UmVuZGVyZXJDbGFzc0lkLnJhd1ZhbHVlXSA9IG1heWJlQ29lcmNlZDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFwcGx5UHJvcHMoZWwsIHsgW25hbWVdOiB2YWx1ZSB9KTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0c2V0QXR0cmlidXRlKGVsOiBOZ3RSZW5kZXJlck5vZGUsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbmFtZXNwYWNlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuXHRcdGNvbnN0IHVzZURlbGVnYXRlID0gdGhpcy5zZXRBdHRyaWJ1dGVJbnRlcm5hbChlbCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG5cblx0XHRpZiAodXNlRGVsZWdhdGUpIHtcblx0XHRcdHRoaXMuZGVsZWdhdGUuc2V0QXR0cmlidXRlKGVsLCBuYW1lLCB2YWx1ZSk7XG5cdFx0fVxuXHR9XG5cblx0cmVtb3ZlQXR0cmlidXRlKGVsOiBOZ3RSZW5kZXJlck5vZGUsIG5hbWU6IHN0cmluZywgbmFtZXNwYWNlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuXHRcdGNvbnN0IHVzZURlbGVnYXRlID0gdGhpcy5zZXRBdHRyaWJ1dGVJbnRlcm5hbChlbCwgbmFtZSwgdW5kZWZpbmVkISwgbmFtZXNwYWNlKTtcblxuXHRcdGlmICh1c2VEZWxlZ2F0ZSkge1xuXHRcdFx0dGhpcy5kZWxlZ2F0ZS5yZW1vdmVBdHRyaWJ1dGUoZWwsIG5hbWUsIG5hbWVzcGFjZSk7XG5cdFx0fVxuXHR9XG5cblx0c2V0UHJvcGVydHkoZWw6IE5ndFJlbmRlcmVyTm9kZSwgbmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG5cdFx0Y29uc3QgclMgPSBlbC5fX25ndF9yZW5kZXJlcl9fO1xuXHRcdGlmICghclMgfHwgclNbTmd0UmVuZGVyZXJDbGFzc0lkLmRlc3Ryb3llZF0pIHJldHVybjtcblxuXHRcdGlmIChyU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScpIHtcblx0XHRcdGlmIChuYW1lID09PSBTUEVDSUFMX1BST1BFUlRJRVMuUEFSQU1FVEVSUykge1xuXHRcdFx0XHRhcHBseVByb3BzKGVsLCB2YWx1ZSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoZWwpO1xuXHRcdFx0Y29uc3QgcGFyZW50ID0gbG9jYWxTdGF0ZT8uaW5zdGFuY2VTdG9yZS5nZXQoJ3BhcmVudCcpIHx8IHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wYXJlbnRdO1xuXG5cdFx0XHQvLyBbcmF3VmFsdWVdXG5cdFx0XHRpZiAobG9jYWxTdGF0ZT8uaXNSYXcgJiYgbmFtZSA9PT0gU1BFQ0lBTF9QUk9QRVJUSUVTLlJBV19WQUxVRSkge1xuXHRcdFx0XHRyU1tOZ3RSZW5kZXJlckNsYXNzSWQucmF3VmFsdWVdID0gdmFsdWU7XG5cdFx0XHRcdGlmIChwYXJlbnQpIGF0dGFjaFRocmVlQ2hpbGQocGFyZW50LCBlbCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gW2F0dGFjaF1cblx0XHRcdGlmIChuYW1lID09PSBTUEVDSUFMX1BST1BFUlRJRVMuQVRUQUNIKSB7XG5cdFx0XHRcdGlmIChsb2NhbFN0YXRlKVxuXHRcdFx0XHRcdGxvY2FsU3RhdGUuYXR0YWNoID0gQXJyYXkuaXNBcnJheSh2YWx1ZSlcblx0XHRcdFx0XHRcdD8gdmFsdWUubWFwKCh2KSA9PiB2LnRvU3RyaW5nKCkpXG5cdFx0XHRcdFx0XHQ6IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJ1xuXHRcdFx0XHRcdFx0XHQ/IHZhbHVlXG5cdFx0XHRcdFx0XHRcdDogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJ1xuXHRcdFx0XHRcdFx0XHRcdD8gdmFsdWUuc3BsaXQoJy4nKVxuXHRcdFx0XHRcdFx0XHRcdDogW3ZhbHVlXTtcblx0XHRcdFx0aWYgKHBhcmVudCkgYXR0YWNoVGhyZWVDaGlsZChwYXJlbnQsIGVsKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRhcHBseVByb3BzKGVsLCB7IFtuYW1lXTogdmFsdWUgfSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZGVsZWdhdGUuc2V0UHJvcGVydHkoZWwsIG5hbWUsIHZhbHVlKTtcblx0fVxuXG5cdGxpc3Rlbih0YXJnZXQ6IE5ndFJlbmRlcmVyTm9kZSwgZXZlbnROYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoZXZlbnQ6IGFueSkgPT4gYm9vbGVhbiB8IHZvaWQpOiAoKSA9PiB2b2lkIHtcblx0XHRjb25zdCByUyA9IHRhcmdldC5fX25ndF9yZW5kZXJlcl9fO1xuXG5cdFx0Ly8gaWYgdGhlIHRhcmdldCBkb2Vzbid0IGhhdmUgX19uZ3RfcmVuZGVyZXJfXywgd2UgZGVsZWdhdGVcblx0XHQvLyBpZiB0YXJnZXQgaXMgRE9NIG5vZGUsIHdlIGRlbGVnYXRlXG5cdFx0aWYgKCFyUyB8fCBpc0RPTSh0YXJnZXQpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5saXN0ZW4odGFyZ2V0LCBldmVudE5hbWUsIGNhbGxiYWNrKTtcblx0XHR9XG5cblx0XHRpZiAoclNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG5cdFx0XHRjb25zdCBpbnN0YW5jZSA9IHRhcmdldDtcblx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKTtcblx0XHRcdGNvbnN0IHByaW9yaXR5ID0gbG9jYWxTdGF0ZT8ucHJpb3JpdHkgPz8gMDtcblx0XHRcdHJldHVybiBwcm9jZXNzVGhyZWVFdmVudChpbnN0YW5jZSwgcHJpb3JpdHksIGV2ZW50TmFtZSwgY2FsbGJhY2spO1xuXHRcdH1cblxuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgLSB3ZSBrbm93IHRoYXQgdGFyZ2V0IGlzIG5vdCBET00gbm9kZVxuXHRcdGlmICh0YXJnZXQgPT09IHRoaXMucm9vdFN0b3JlLnNuYXBzaG90LnNjZW5lKSB7XG5cdFx0XHRsZXQgW2RvbVRhcmdldCwgZXZlbnRdID0gZXZlbnROYW1lLnNwbGl0KCc6Jyk7XG5cdFx0XHRpZiAoZXZlbnQgPT0gbnVsbCkge1xuXHRcdFx0XHRldmVudCA9IGRvbVRhcmdldDtcblx0XHRcdFx0ZG9tVGFyZ2V0ID0gJyc7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBldmVudFRhcmdldCA9XG5cdFx0XHRcdGRvbVRhcmdldCA9PT0gJ3dpbmRvdydcblx0XHRcdFx0XHQ/ICh0YXJnZXQgYXMgTmd0QW55UmVjb3JkKVsnb3duZXJEb2N1bWVudCddWydkZWZhdWx0VmlldyddXG5cdFx0XHRcdFx0OiAodGFyZ2V0IGFzIE5ndEFueVJlY29yZClbJ293bmVyRG9jdW1lbnQnXTtcblx0XHRcdHJldHVybiB0aGlzLmRlbGVnYXRlLmxpc3RlbihldmVudFRhcmdldCwgZXZlbnQsIGNhbGxiYWNrKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gKCkgPT4ge307XG5cdH1cblxuXHRwcml2YXRlIGRlc3Ryb3lJbnRlcm5hbChub2RlOiBOZ3RSZW5kZXJlck5vZGUsIHBhcmVudD86IE5ndFJlbmRlcmVyTm9kZSkge1xuXHRcdGNvbnN0IHJTID0gbm9kZS5fX25ndF9yZW5kZXJlcl9fO1xuXHRcdGlmICghclMgfHwgclNbTmd0UmVuZGVyZXJDbGFzc0lkLmRlc3Ryb3llZF0pIHJldHVybjtcblx0XHRpZiAoclNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG5cdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShub2RlKTtcblx0XHRcdGlmIChsb2NhbFN0YXRlPy5pbnN0YW5jZVN0b3JlKSB7XG5cdFx0XHRcdGxvY2FsU3RhdGUuaW5zdGFuY2VTdG9yZS5nZXQoJ29iamVjdHMnKS5mb3JFYWNoKChvYmopID0+IHRoaXMuZGVzdHJveUludGVybmFsKG9iaiwgcGFyZW50KSk7XG5cdFx0XHRcdGxvY2FsU3RhdGUuaW5zdGFuY2VTdG9yZS5nZXQoJ25vbk9iamVjdHMnKS5mb3JFYWNoKChvYmopID0+IHRoaXMuZGVzdHJveUludGVybmFsKG9iaiwgcGFyZW50KSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChsb2NhbFN0YXRlPy5vblVwZGF0ZSkgZGVsZXRlIGxvY2FsU3RhdGUub25VcGRhdGU7XG5cdFx0XHRpZiAobG9jYWxTdGF0ZT8ub25BdHRhY2gpIGRlbGV0ZSBsb2NhbFN0YXRlLm9uQXR0YWNoO1xuXG5cdFx0XHRkZWxldGUgKGxvY2FsU3RhdGUgYXMgTmd0QW55UmVjb3JkKVsnb2JqZWN0cyddO1xuXHRcdFx0ZGVsZXRlIChsb2NhbFN0YXRlIGFzIE5ndEFueVJlY29yZClbJ25vbk9iamVjdHMnXTtcblx0XHRcdGRlbGV0ZSAobG9jYWxTdGF0ZSBhcyBOZ3RBbnlSZWNvcmQpWydwYXJlbnQnXTtcblx0XHRcdGRlbGV0ZSAobG9jYWxTdGF0ZSBhcyBOZ3RBbnlSZWNvcmQpWydhZGQnXTtcblx0XHRcdGRlbGV0ZSAobG9jYWxTdGF0ZSBhcyBOZ3RBbnlSZWNvcmQpWydyZW1vdmUnXTtcblx0XHRcdGRlbGV0ZSAobG9jYWxTdGF0ZSBhcyBOZ3RBbnlSZWNvcmQpWydzdG9yZSddO1xuXHRcdFx0ZGVsZXRlIChsb2NhbFN0YXRlIGFzIE5ndEFueVJlY29yZClbJ2hhbmRsZXJzJ107XG5cblx0XHRcdGlmICghbG9jYWxTdGF0ZT8ucHJpbWl0aXZlKSB7XG5cdFx0XHRcdGRlbGV0ZSAobm9kZSBhcyBOZ3RBbnlSZWNvcmQpWydfX25ndF9fJ107XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2NvbW1lbnQnKSB7XG5cdFx0XHRyU1tOZ3RSZW5kZXJlckNsYXNzSWQuaW5qZWN0b3JGYWN0b3J5XSA9IG51bGwhO1xuXHRcdFx0ZGVsZXRlIChub2RlIGFzIE5ndEFueVJlY29yZClbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF07XG5cdFx0XHR0aGlzLnJlbW92ZUNvbW1lbnROb2RlKG5vZGUsIHRoaXMuYXJnc0NvbW1lbnROb2Rlcyk7XG5cdFx0fVxuXG5cdFx0aWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3BvcnRhbCcpIHtcblx0XHRcdHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5pbmplY3RvckZhY3RvcnldID0gbnVsbCE7XG5cdFx0XHR0aGlzLnJlbW92ZUNvbW1lbnROb2RlKG5vZGUsIHRoaXMucG9ydGFsQ29tbWVudHNOb2Rlcyk7XG5cdFx0fVxuXG5cdFx0Ly8gbnVsbGlmeSBwYXJlbnRcblx0XHRyU1tOZ3RSZW5kZXJlckNsYXNzSWQucGFyZW50XSA9IG51bGw7XG5cdFx0Zm9yIChjb25zdCByZW5kZXJDaGlsZCBvZiByU1tOZ3RSZW5kZXJlckNsYXNzSWQuY2hpbGRyZW5dIHx8IFtdKSB7XG5cdFx0XHRpZiAocmVuZGVyQ2hpbGQuX19uZ3RfcmVuZGVyZXJfXz8uW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJyAmJiBwYXJlbnQpIHtcblx0XHRcdFx0aWYgKHBhcmVudC5fX25ndF9yZW5kZXJlcl9fPy5bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG5cdFx0XHRcdFx0cmVtb3ZlVGhyZWVDaGlsZChwYXJlbnQsIHJlbmRlckNoaWxkLCB0cnVlKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGNsb3Nlc3RJbnN0YW5jZSA9IGdldENsb3Nlc3RQYXJlbnRXaXRoSW5zdGFuY2UocGFyZW50KTtcblx0XHRcdFx0aWYgKGNsb3Nlc3RJbnN0YW5jZSkge1xuXHRcdFx0XHRcdHJlbW92ZVRocmVlQ2hpbGQoY2xvc2VzdEluc3RhbmNlLCByZW5kZXJDaGlsZCwgdHJ1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMuZGVzdHJveUludGVybmFsKHJlbmRlckNoaWxkLCBwYXJlbnQpO1xuXHRcdH1cblxuXHRcdHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5jaGlsZHJlbl0gPSBbXTtcblx0XHRyU1tOZ3RSZW5kZXJlckNsYXNzSWQuZGVzdHJveWVkXSA9IHRydWU7XG5cdFx0aWYgKHBhcmVudCkge1xuXHRcdFx0cmVtb3ZlQ2hpbGQocGFyZW50LCBub2RlKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlbW92ZUNvbW1lbnROb2RlKG5vZGU6IE5ndFJlbmRlcmVyTm9kZSwgbm9kZXM6IE5ndFJlbmRlcmVyTm9kZVtdKSB7XG5cdFx0Y29uc3QgaW5kZXggPSBub2Rlcy5maW5kSW5kZXgoKGNvbW1lbnQpID0+IGNvbW1lbnQgPT09IG5vZGUpO1xuXHRcdGlmIChpbmRleCA+IC0xKSB7XG5cdFx0XHRub2Rlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgcHJvY2Vzc1BvcnRhbENvbnRhaW5lcihwb3J0YWw6IE5ndFJlbmRlcmVyTm9kZSkge1xuXHRcdGNvbnN0IGluamVjdG9yID0gcG9ydGFsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmluamVjdG9yRmFjdG9yeV0/LigpO1xuXHRcdGlmICghaW5qZWN0b3IpIHJldHVybjtcblxuXHRcdGNvbnN0IHBvcnRhbFN0b3JlID0gaW5qZWN0b3IuZ2V0KE5HVF9TVE9SRSwgbnVsbCk7XG5cdFx0aWYgKCFwb3J0YWxTdG9yZSkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgcG9ydGFsQ29udGFpbmVyID0gcG9ydGFsU3RvcmUuZ2V0KCdzY2VuZScpO1xuXHRcdGlmICghcG9ydGFsQ29udGFpbmVyKSByZXR1cm47XG5cblx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShwb3J0YWxDb250YWluZXIpO1xuXHRcdGlmIChsb2NhbFN0YXRlKSB7XG5cdFx0XHRsb2NhbFN0YXRlLnN0b3JlID0gcG9ydGFsU3RvcmU7XG5cdFx0fVxuXG5cdFx0cG9ydGFsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0gPSBjcmVhdGVOb2RlKCd0aHJlZScsIHBvcnRhbENvbnRhaW5lciwgdGhpcy5kb2N1bWVudCk7XG5cdH1cblxuXHRwcml2YXRlIHNob3VsZEZpbmRHcmFuZHBhcmVudEluc3RhbmNlKHBSUzogTmd0UmVuZGVyZXJTdGF0ZSwgY1JTOiBOZ3RSZW5kZXJlclN0YXRlLCBjaGlsZDogTmd0UmVuZGVyZXJOb2RlKSB7XG5cdFx0Y29uc3QgcFR5cGUgPSBwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdO1xuXHRcdGNvbnN0IGNUeXBlID0gY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXTtcblxuXHRcdGNvbnN0IGNMUyA9IGdldExvY2FsU3RhdGUoY2hpbGQpO1xuXHRcdC8vIGlmIGNoaWxkIGlzIHRocmVlIGJ1dCBoYXZlbid0IGJlZW4gYXR0YWNoZWQgdG8gYSBwYXJlbnQgeWV0XG5cdFx0Y29uc3QgaXNEYW5nbGluZ1RocmVlQ2hpbGQgPSBjVHlwZSA9PT0gJ3RocmVlJyAmJiAhY0xTPy5pbnN0YW5jZVN0b3JlPy5nZXQoJ3BhcmVudCcpO1xuXHRcdC8vIG9yIGJvdGggcGFyZW50IGFuZCBjaGlsZCBhcmUgRE9NIGVsZW1lbnRzXG5cdFx0Ly8gb3IgdGhleSBhcmUgY29tcG91bmQgQU5EIGhhdmVuJ3QgaGFkIGEgVEhSRUUgaW5zdGFuY2UgeWV0XG5cdFx0Y29uc3QgaXNQYXJlbnRTdGlsbERPTSA9IHBUeXBlID09PSAnZG9tJztcblx0XHRjb25zdCBpc0NoaWxkU3RpbGxET00gPSBjVHlwZSA9PT0gJ2RvbSc7XG5cblx0XHRyZXR1cm4gaXNEYW5nbGluZ1RocmVlQ2hpbGQgfHwgKGlzUGFyZW50U3RpbGxET00gJiYgaXNDaGlsZFN0aWxsRE9NKSB8fCBpc1BhcmVudFN0aWxsRE9NO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXROZ3RBcmdzKCkge1xuXHRcdGxldCBkaXJlY3RpdmU6IE5ndEFyZ3MgfCB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBkZXN0cm95ZWQgPSBbXTtcblxuXHRcdGxldCBpID0gdGhpcy5hcmdzQ29tbWVudE5vZGVzLmxlbmd0aCAtIDE7XG5cdFx0d2hpbGUgKGkgPj0gMCkge1xuXHRcdFx0Y29uc3QgY29tbWVudCA9IHRoaXMuYXJnc0NvbW1lbnROb2Rlc1tpXTtcblx0XHRcdGlmIChjb21tZW50Ll9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmRlc3Ryb3llZF0pIHtcblx0XHRcdFx0ZGVzdHJveWVkLnB1c2goaSk7XG5cdFx0XHRcdGktLTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBpbmplY3RvciA9IGNvbW1lbnQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuaW5qZWN0b3JGYWN0b3J5XSgpO1xuXHRcdFx0aWYgKCFpbmplY3Rvcikge1xuXHRcdFx0XHRpLS07XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgaW5zdGFuY2UgPSBpbmplY3Rvci5nZXQoTmd0QXJncywgbnVsbCk7XG5cdFx0XHRpZiAoaW5zdGFuY2UgJiYgaW5zdGFuY2UudmFsaWRhdGUoKSkge1xuXHRcdFx0XHRkaXJlY3RpdmUgPSBpbnN0YW5jZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdGktLTtcblx0XHR9XG5cblx0XHRkZXN0cm95ZWQuZm9yRWFjaCgoaW5kZXgpID0+IHtcblx0XHRcdHRoaXMuYXJnc0NvbW1lbnROb2Rlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIGRpcmVjdGl2ZTtcblx0fVxuXG5cdHByaXZhdGUgdHJ5R2V0UG9ydGFsU3RvcmUoKSB7XG5cdFx0bGV0IHN0b3JlOiBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT4gfCB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgZGVzdHJveWVkID0gW107XG5cdFx0Ly8gd2Ugb25seSBjYXJlIGFib3V0IHRoZSBwb3J0YWwgc3RhdGVzIGJlY2F1c2UgTmd0U3RvcmUgb25seSBkaWZmZXJzIHBlciBQb3J0YWxcblx0XHRsZXQgaSA9IHRoaXMucG9ydGFsQ29tbWVudHNOb2Rlcy5sZW5ndGggLSAxO1xuXHRcdHdoaWxlIChpID49IDApIHtcblx0XHRcdC8vIGxvb3AgdGhyb3VnaCB0aGUgcG9ydGFsIHN0YXRlIGJhY2t3YXJkcyB0byBmaW5kIHRoZSBjbG9zZXN0IE5ndFN0b3JlXG5cdFx0XHRjb25zdCBwb3J0YWwgPSB0aGlzLnBvcnRhbENvbW1lbnRzTm9kZXNbaV07XG5cdFx0XHRpZiAocG9ydGFsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmRlc3Ryb3llZF0pIHtcblx0XHRcdFx0ZGVzdHJveWVkLnB1c2goaSk7XG5cdFx0XHRcdGktLTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGluamVjdG9yID0gcG9ydGFsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmluamVjdG9yRmFjdG9yeV0oKTtcblx0XHRcdGlmICghaW5qZWN0b3IpIHtcblx0XHRcdFx0aS0tO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGluc3RhbmNlID0gaW5qZWN0b3IuZ2V0KE5HVF9TVE9SRSwgbnVsbCk7XG5cdFx0XHQvLyBvbmx5IHRoZSBpbnN0YW5jZSB3aXRoIHByZXZpb3VzUm9vdCBzaG91bGQgcGFzc1xuXHRcdFx0aWYgKGluc3RhbmNlICYmIGluc3RhbmNlLmdldCgncHJldmlvdXNSb290JykpIHtcblx0XHRcdFx0c3RvcmUgPSBpbnN0YW5jZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpLS07XG5cdFx0fVxuXG5cdFx0ZGVzdHJveWVkLmZvckVhY2goKGluZGV4KSA9PiB7XG5cdFx0XHR0aGlzLnBvcnRhbENvbW1lbnRzTm9kZXMuc3BsaWNlKGluZGV4LCAxKTtcblx0XHR9KTtcblxuXHRcdHJldHVybiBzdG9yZSB8fCB0aGlzLnJvb3RTdG9yZTtcblx0fVxuXG5cdGNyZWF0ZVRleHQgPSB0aGlzLmRlbGVnYXRlLmNyZWF0ZVRleHQuYmluZCh0aGlzLmRlbGVnYXRlKTtcblx0ZGVzdHJveSA9IHRoaXMuZGVsZWdhdGUuZGVzdHJveS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuXHRkZXN0cm95Tm9kZTogKChub2RlOiBhbnkpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cdHNlbGVjdFJvb3RFbGVtZW50ID0gdGhpcy5kZWxlZ2F0ZS5zZWxlY3RSb290RWxlbWVudC5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuXHRuZXh0U2libGluZyA9IHRoaXMuZGVsZWdhdGUubmV4dFNpYmxpbmcuYmluZCh0aGlzLmRlbGVnYXRlKTtcblx0YWRkQ2xhc3MgPSB0aGlzLmRlbGVnYXRlLmFkZENsYXNzLmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG5cdHJlbW92ZUNsYXNzID0gdGhpcy5kZWxlZ2F0ZS5yZW1vdmVDbGFzcy5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuXHRzZXRTdHlsZSA9IHRoaXMuZGVsZWdhdGUuc2V0U3R5bGUuYmluZCh0aGlzLmRlbGVnYXRlKTtcblx0cmVtb3ZlU3R5bGUgPSB0aGlzLmRlbGVnYXRlLnJlbW92ZVN0eWxlLmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG5cdHNldFZhbHVlID0gdGhpcy5kZWxlZ2F0ZS5zZXRWYWx1ZS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuXHRnZXQgZGF0YSgpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcblx0XHRyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5kYXRhO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTmd0UmVuZGVyZXIoc3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPikge1xuXHRjb25zdCBwcm92aWRlcnMgPSBbXG5cdFx0Tmd0UmVuZGVyZXJGYWN0b3J5LFxuXHRcdHsgcHJvdmlkZTogUmVuZGVyZXJGYWN0b3J5MiwgdXNlRXhpc3Rpbmc6IE5ndFJlbmRlcmVyRmFjdG9yeSB9LFxuXHRcdHByb3ZpZGVTdG9yZSgoKSA9PiBzdG9yZSksXG5cdF07XG5cblx0cmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhwcm92aWRlcnMpO1xufVxuXG5leHBvcnQgeyBleHRlbmQgfSBmcm9tICcuL2NhdGFsb2d1ZSc7XG5leHBvcnQgeyBIVE1MLCBST1VURURfU0NFTkUgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4iXX0=
545
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yZW5kZXJlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNOLFVBQVUsRUFFVixnQkFBZ0IsRUFFaEIsWUFBWSxFQUNaLE1BQU0sRUFDTix3QkFBd0IsR0FDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BFLE9BQU8sRUFBcUIsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSw0QkFBNEIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwSCxPQUFPLEVBR04sUUFBUSxFQUNSLFVBQVUsRUFDViw0QkFBNEIsRUFDNUIsS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEdBQ1QsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFzQixnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBR25ILE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFUyw0QkFBdUIsR0FBRyxNQUFN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YyxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztnQkFDakIsTUFBTTtZQUNQLENBQUM7WUFDRCxDQUFDLEVBQUUsQ0FBQztRQUNMLENBQUM7UUFFRCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ2hDLENBQUM7SUFZRCxJQUFJLElBQUk7UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7Q0FDRDtBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUErQjtJQUNqRSxNQUFNLFNBQVMsR0FBRztRQUNqQixrQkFBa0I7UUFDbEIsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFO1FBQzlELFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7S0FDekIsQ0FBQztJQUVGLE9BQU8sd0JBQXdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRJbmplY3RhYmxlLFxuXHRSZW5kZXJlcjIsXG5cdFJlbmRlcmVyRmFjdG9yeTIsXG5cdFJlbmRlcmVyVHlwZTIsXG5cdGdldERlYnVnTm9kZSxcblx0aW5qZWN0LFxuXHRtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncyB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvYXJncyc7XG5pbXBvcnQgeyBnZXRMb2NhbFN0YXRlLCBwcmVwYXJlIH0gZnJvbSAnLi4vaW5zdGFuY2UnO1xuaW1wb3J0IHsgTkdUX1NUT1JFLCBpbmplY3RTdG9yZSwgcHJvdmlkZVN0b3JlIH0gZnJvbSAnLi4vc3RvcmUnO1xuaW1wb3J0IHsgTmd0QW55UmVjb3JkLCBOZ3RJbnN0YW5jZU5vZGUsIE5ndExvY2FsU3RhdGUsIE5ndFN0YXRlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgYXBwbHlQcm9wcyB9IGZyb20gJy4uL3V0aWxzL2FwcGx5LXByb3BzJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgTmd0U2lnbmFsU3RvcmUsIHNpZ25hbFN0b3JlIH0gZnJvbSAnLi4vdXRpbHMvc2lnbmFsLXN0b3JlJztcbmltcG9ydCB7IE5ndEFueUNvbnN0cnVjdG9yLCBpbmplY3RDYXRhbG9ndWUgfSBmcm9tICcuL2NhdGFsb2d1ZSc7XG5pbXBvcnQgeyBIVE1MLCBST1VURURfU0NFTkUsIFNQRUNJQUxfRE9NX1RBRywgU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVCwgU1BFQ0lBTF9QUk9QRVJUSUVTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcblx0Tmd0UmVuZGVyZXJOb2RlLFxuXHROZ3RSZW5kZXJlclN0YXRlLFxuXHRhZGRDaGlsZCxcblx0Y3JlYXRlTm9kZSxcblx0Z2V0Q2xvc2VzdFBhcmVudFdpdGhJbnN0YW5jZSxcblx0aXNET00sXG5cdHJlbW92ZUNoaWxkLFxuXHRzZXRQYXJlbnQsXG59IGZyb20gJy4vc3RhdGUnO1xuaW1wb3J0IHsgTmd0UmVuZGVyZXJDbGFzc0lkLCBhdHRhY2hUaHJlZUNoaWxkLCBrZWJhYlRvUGFzY2FsLCBwcm9jZXNzVGhyZWVFdmVudCwgcmVtb3ZlVGhyZWVDaGlsZCB9IGZyb20gJy4vdXRpbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmd0UmVuZGVyZXJGYWN0b3J5IGltcGxlbWVudHMgUmVuZGVyZXJGYWN0b3J5MiB7XG5cdHByaXZhdGUgZGVsZWdhdGVSZW5kZXJlckZhY3RvcnkgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5MiwgeyBza2lwU2VsZjogdHJ1ZSB9KTtcblx0cHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cdHByaXZhdGUgY2F0YWxvZ3VlID0gaW5qZWN0Q2F0YWxvZ3VlKCk7XG5cdHByaXZhdGUgcm9vdFN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblxuXHRwcml2YXRlIHBvcnRhbENvbW1lbnRzTm9kZXM6IEFycmF5PE5ndFJlbmRlcmVyTm9kZT4gPSBbXTtcblx0cHJpdmF0ZSByZW5kZXJlck1hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZW5kZXJlcjI+KCk7XG5cdHByaXZhdGUgcm91dGVkU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cblx0Y3JlYXRlUmVuZGVyZXIoaG9zdEVsZW1lbnQ6IGFueSwgdHlwZTogUmVuZGVyZXJUeXBlMiB8IG51bGwpOiBSZW5kZXJlcjIge1xuXHRcdGNvbnN0IGRlbGVnYXRlUmVuZGVyZXIgPSB0aGlzLmRlbGVnYXRlUmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKGhvc3RFbGVtZW50LCB0eXBlKTtcblxuXHRcdGlmICghdHlwZSkgcmV0dXJuIGRlbGVnYXRlUmVuZGVyZXI7XG5cblx0XHQvLyBOT1RFOiBtaWdodCBuZWVkIHRvIHJldmlzaXQgdGhpc1xuXHRcdGlmICgodHlwZSBhcyBOZ3RBbnlSZWNvcmQpWyd0eXBlJ11bSFRNTF0pIHtcblx0XHRcdHRoaXMucmVuZGVyZXJNYXAuc2V0KHR5cGUuaWQsIGRlbGVnYXRlUmVuZGVyZXIpO1xuXHRcdFx0cmV0dXJuIGRlbGVnYXRlUmVuZGVyZXI7XG5cdFx0fVxuXG5cdFx0aWYgKCh0eXBlIGFzIE5ndEFueVJlY29yZClbJ3R5cGUnXVtST1VURURfU0NFTkVdKSB7XG5cdFx0XHR0aGlzLnJvdXRlZFNldC5hZGQodHlwZS5pZCk7XG5cdFx0fVxuXG5cdFx0bGV0IHJlbmRlcmVyID0gdGhpcy5yZW5kZXJlck1hcC5nZXQodHlwZS5pZCk7XG5cdFx0aWYgKCFyZW5kZXJlcikge1xuXHRcdFx0dGhpcy5yZW5kZXJlck1hcC5zZXQoXG5cdFx0XHRcdHR5cGUuaWQsXG5cdFx0XHRcdChyZW5kZXJlciA9IG5ldyBOZ3RSZW5kZXJlcihcblx0XHRcdFx0XHRkZWxlZ2F0ZVJlbmRlcmVyLFxuXHRcdFx0XHRcdHRoaXMucm9vdFN0b3JlLFxuXHRcdFx0XHRcdHRoaXMuZG9jdW1lbnQsXG5cdFx0XHRcdFx0dGhpcy5wb3J0YWxDb21tZW50c05vZGVzLFxuXHRcdFx0XHRcdHRoaXMuY2F0YWxvZ3VlLFxuXHRcdFx0XHRcdC8vIHNldHRpbmcgcm9vdCBzY2VuZSBpZiB0aGVyZSdzIG5vIHJvdXRlZCBzY2VuZSBPUiB0aGlzIGNvbXBvbmVudCBpcyB0aGUgcm91dGVkIFNjZW5lXG5cdFx0XHRcdFx0IWhvc3RFbGVtZW50ICYmICh0aGlzLnJvdXRlZFNldC5zaXplID09PSAwIHx8IHRoaXMucm91dGVkU2V0Lmhhcyh0eXBlLmlkKSksXG5cdFx0XHRcdCkpLFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlbmRlcmVyO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBOZ3RSZW5kZXJlciBpbXBsZW1lbnRzIFJlbmRlcmVyMiB7XG5cdHByaXZhdGUgYXJnc0NvbW1lbnROb2RlczogQXJyYXk8Tmd0UmVuZGVyZXJOb2RlPiA9IFtdO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgZGVsZWdhdGU6IFJlbmRlcmVyMixcblx0XHRwcml2YXRlIHJvb3RTdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+LFxuXHRcdHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuXHRcdHByaXZhdGUgcG9ydGFsQ29tbWVudHNOb2RlczogQXJyYXk8Tmd0UmVuZGVyZXJOb2RlPixcblx0XHRwcml2YXRlIGNhdGFsb2d1ZTogUmVjb3JkPHN0cmluZywgTmd0QW55Q29uc3RydWN0b3I+LFxuXHRcdHByaXZhdGUgaXNSb290ID0gdHJ1ZSxcblx0KSB7fVxuXG5cdGNyZWF0ZUVsZW1lbnQobmFtZTogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG5cdFx0Y29uc3QgZWxlbWVudCA9IHRoaXMuZGVsZWdhdGUuY3JlYXRlRWxlbWVudChuYW1lLCBuYW1lc3BhY2UpO1xuXG5cdFx0Ly8gb24gZmlyc3QgcGFzcywgd2UgcmV0dXJuIHRoZSBSb290IFNjZW5lIGFzIHRoZSByb290IG5vZGVcblx0XHRpZiAodGhpcy5pc1Jvb3QpIHtcblx0XHRcdHRoaXMuaXNSb290ID0gZmFsc2U7XG5cdFx0XHRjb25zdCBub2RlID0gY3JlYXRlTm9kZSgndGhyZWUnLCB0aGlzLnJvb3RTdG9yZS5zbmFwc2hvdC5zY2VuZSwgdGhpcy5kb2N1bWVudCk7XG5cdFx0XHRub2RlLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmluamVjdG9yRmFjdG9yeV0gPSAoKSA9PiBnZXREZWJ1Z05vZGUoZWxlbWVudCk/LmluamVjdG9yO1xuXHRcdFx0cmV0dXJuIG5vZGU7XG5cdFx0fVxuXG5cdFx0aWYgKG5hbWUgPT09IFNQRUNJQUxfRE9NX1RBRy5OR1RfUE9SVEFMKSB7XG5cdFx0XHRyZXR1cm4gY3JlYXRlTm9kZSgncG9ydGFsJywgZWxlbWVudCwgdGhpcy5kb2N1bWVudCk7XG5cdFx0fVxuXG5cdFx0aWYgKG5hbWUgPT09IFNQRUNJQUxfRE9NX1RBRy5OR1RfVkFMVUUpIHtcblx0XHRcdGNvbnN0IGluc3RhbmNlU3RvcmUgPSBzaWduYWxTdG9yZSh7IHBhcmVudDogbnVsbCwgb2JqZWN0czogW10sIG5vbk9iamVjdHM6IFtdIH0pO1xuXHRcdFx0cmV0dXJuIGNyZWF0ZU5vZGUoXG5cdFx0XHRcdCd0aHJlZScsXG5cdFx0XHRcdE9iamVjdC5hc3NpZ24oXG5cdFx0XHRcdFx0eyBfX25ndF9yZW5kZXJlcl9fOiB7IHJhd1ZhbHVlOiB1bmRlZmluZWQgfSB9LFxuXHRcdFx0XHRcdC8vIE5PVEU6IHdlIGFzc2lnbiB0aGlzIG1hbnVhbGx5IHRvIGEgcmF3IHZhbHVlIG5vZGVcblx0XHRcdFx0XHQvLyBiZWNhdXNlIHdlIHNheSBpdCBpcyBhICd0aHJlZScgbm9kZSBidXQgd2UncmUgbm90IHVzaW5nIHByZXBhcmUoKVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdF9fbmd0X186IHtcblx0XHRcdFx0XHRcdFx0aXNSYXc6IHRydWUsXG5cdFx0XHRcdFx0XHRcdGluc3RhbmNlU3RvcmUsXG5cdFx0XHRcdFx0XHRcdHNldFBhcmVudChwYXJlbnQ6IE5ndEluc3RhbmNlTm9kZSkge1xuXHRcdFx0XHRcdFx0XHRcdGluc3RhbmNlU3RvcmUudXBkYXRlKHsgcGFyZW50IH0pO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHQpLFxuXHRcdFx0XHR0aGlzLmRvY3VtZW50LFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRjb25zdCBbaW5qZWN0ZWRBcmdzXSA9IFt0aGlzLmdldE5ndEFyZ3MoKT8udmFsdWUgfHwgW11dO1xuXG5cdFx0aWYgKG5hbWUgPT09IFNQRUNJQUxfRE9NX1RBRy5OR1RfUFJJTUlUSVZFKSB7XG5cdFx0XHRpZiAoIWluamVjdGVkQXJnc1swXSkgdGhyb3cgbmV3IEVycm9yKGBbTkdUXSBuZ3QtcHJpbWl0aXZlIHdpdGhvdXQgYXJncyBpcyBpbnZhbGlkYCk7XG5cdFx0XHRjb25zdCBvYmplY3QgPSBpbmplY3RlZEFyZ3NbMF07XG5cdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShvYmplY3QpO1xuXHRcdFx0aWYgKCFsb2NhbFN0YXRlKSB7XG5cdFx0XHRcdC8vIE5PVEU6IGlmIGFuIG9iamVjdCBpc24ndCBhbHJlYWR5IFwicHJlcGFyZWRcIiwgd2UgcHJlcGFyZSBpdFxuXHRcdFx0XHRwcmVwYXJlKG9iamVjdCwgeyBzdG9yZTogdGhpcy5yb290U3RvcmUsIHByaW1pdGl2ZTogdHJ1ZSB9KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBjcmVhdGVOb2RlKCd0aHJlZScsIG9iamVjdCwgdGhpcy5kb2N1bWVudCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdGhyZWVOYW1lID0ga2ViYWJUb1Bhc2NhbChuYW1lLnN0YXJ0c1dpdGgoJ25ndC0nKSA/IG5hbWUuc2xpY2UoNCkgOiBuYW1lKTtcblx0XHRjb25zdCB0aHJlZVRhcmdldCA9IHRoaXMuY2F0YWxvZ3VlW3RocmVlTmFtZV07XG5cblx0XHQvLyB3ZSBoYXZlIHRoZSBUSFJFRSBjb25zdHJ1Y3RvciBoZXJlLCBoYW5kbGUgaXRcblx0XHRpZiAodGhyZWVUYXJnZXQpIHtcblx0XHRcdGNvbnN0IGluc3RhbmNlID0gcHJlcGFyZShuZXcgdGhyZWVUYXJnZXQoLi4uaW5qZWN0ZWRBcmdzKSwgeyBzdG9yZTogdGhpcy5yb290U3RvcmUgfSk7XG5cdFx0XHRjb25zdCBub2RlID0gY3JlYXRlTm9kZSgndGhyZWUnLCBpbnN0YW5jZSwgdGhpcy5kb2N1bWVudCk7XG5cdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShpbnN0YW5jZSkgYXMgTmd0TG9jYWxTdGF0ZTtcblxuXHRcdFx0Ly8gYXV0by1hdHRhY2ggZm9yIGdlb21ldHJ5IGFuZCBtYXRlcmlhbFxuXHRcdFx0aWYgKGlzLmdlb21ldHJ5KGluc3RhbmNlKSkge1xuXHRcdFx0XHRsb2NhbFN0YXRlLmF0dGFjaCA9IFsnZ2VvbWV0cnknXTtcblx0XHRcdH0gZWxzZSBpZiAoaXMubWF0ZXJpYWwoaW5zdGFuY2UpKSB7XG5cdFx0XHRcdGxvY2FsU3RhdGUuYXR0YWNoID0gWydtYXRlcmlhbCddO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbm9kZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gY3JlYXRlTm9kZSgnZG9tJywgZWxlbWVudCwgdGhpcy5kb2N1bWVudCk7XG5cdH1cblxuXHRjcmVhdGVDb21tZW50KHZhbHVlOiBzdHJpbmcpIHtcblx0XHRjb25zdCBjb21tZW50ID0gdGhpcy5kZWxlZ2F0ZS5jcmVhdGVDb21tZW50KHZhbHVlKTtcblxuXHRcdC8vIE5PVEU6IHdlIGF0dGFjaCBhbiBhcnJvdyBmdW5jdGlvbiB0byB0aGUgQ29tbWVudCBub2RlXG5cdFx0Ly8gSW4gb3VyIGRpcmVjdGl2ZXMsIHdlIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gdGhlbiBzdGFydCB0cmFja2luZyB0aGUgUmVuZGVyZXJOb2RlXG5cdFx0Ly8gdGhpcyBpcyBkb25lIHRvIGxpbWl0IHRoZSBhbW91bnQgb2YgTm9kZXMgd2UgbmVlZCB0byBwcm9jZXNzIGZvciBnZXRDcmVhdGlvblN0YXRlXG5cdFx0Y29tbWVudFtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXSA9IChub2RlOiBOZ3RSZW5kZXJlck5vZGUgfCAnYXJncycpID0+IHtcblx0XHRcdGlmIChub2RlID09PSAnYXJncycpIHtcblx0XHRcdFx0dGhpcy5hcmdzQ29tbWVudE5vZGVzLnB1c2goY29tbWVudCk7XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBub2RlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHR0aGlzLnBvcnRhbENvbW1lbnRzTm9kZXMucHVzaChub2RlKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0cmV0dXJuIGNyZWF0ZU5vZGUoJ2NvbW1lbnQnLCBjb21tZW50LCB0aGlzLmRvY3VtZW50KTtcblx0fVxuXG5cdGFwcGVuZENoaWxkKHBhcmVudDogTmd0UmVuZGVyZXJOb2RlLCBuZXdDaGlsZDogTmd0UmVuZGVyZXJOb2RlKTogdm9pZCB7XG5cdFx0Y29uc3QgcFJTID0gcGFyZW50Ll9fbmd0X3JlbmRlcmVyX187XG5cdFx0Y29uc3QgY1JTID0gbmV3Q2hpbGQuX19uZ3RfcmVuZGVyZXJfXztcblxuXHRcdGlmIChcblx0XHRcdHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdkb20nICYmXG5cdFx0XHQobmV3Q2hpbGQgaW5zdGFuY2VvZiBUZXh0IHx8IGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdkb20nKVxuXHRcdCkge1xuXHRcdFx0YWRkQ2hpbGQocGFyZW50LCBuZXdDaGlsZCk7XG5cblx0XHRcdGlmIChuZXdDaGlsZFsnX19uZ3RfZG9tX3BhcmVudF9fJ10gJiYgbmV3Q2hpbGRbJ19fbmd0X2RvbV9wYXJlbnRfXyddIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcblx0XHRcdFx0dGhpcy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZChuZXdDaGlsZFsnX19uZ3RfZG9tX3BhcmVudF9fJ10sIG5ld0NoaWxkKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmRlbGVnYXRlLmFwcGVuZENoaWxkKHBhcmVudCwgbmV3Q2hpbGQpO1xuXHRcdFx0aWYgKGNSUykge1xuXHRcdFx0XHRzZXRQYXJlbnQobmV3Q2hpbGQsIHBhcmVudCk7XG5cdFx0XHRcdGlmICh0aGlzLnNob3VsZEZpbmRHcmFuZHBhcmVudEluc3RhbmNlKHBSUywgY1JTLCBuZXdDaGlsZCkpIHtcblx0XHRcdFx0XHQvLyB3ZSdsbCB0cnkgdG8gZ2V0IHRoZSBncmFuZHBhcmVudCBpbnN0YW5jZSBoZXJlIHNvIHRoYXQgd2UgY2FuIHJ1biBhcHBlbmRDaGlsZCB3aXRoIGJvdGggaW5zdGFuY2VzXG5cdFx0XHRcdFx0Y29uc3QgY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UgPSBnZXRDbG9zZXN0UGFyZW50V2l0aEluc3RhbmNlKHBhcmVudCk7XG5cdFx0XHRcdFx0aWYgKGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlKSB0aGlzLmFwcGVuZENoaWxkKGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlLCBuZXdDaGlsZCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChjUlM/LltOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdjb21tZW50Jykge1xuXHRcdFx0c2V0UGFyZW50KG5ld0NoaWxkLCBwYXJlbnQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHNldFBhcmVudChuZXdDaGlsZCwgcGFyZW50KTtcblx0XHRhZGRDaGlsZChwYXJlbnQsIG5ld0NoaWxkKTtcblxuXHRcdC8vIGlmIG5ldyBjaGlsZCBpcyBhIHBvcnRhbFxuXHRcdGlmIChjUlM/LltOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdwb3J0YWwnKSB7XG5cdFx0XHRpZiAoIWNSU1tOZ3RSZW5kZXJlckNsYXNzSWQucG9ydGFsQ29udGFpbmVyXSkgdGhpcy5wcm9jZXNzUG9ydGFsQ29udGFpbmVyKG5ld0NoaWxkKTtcblx0XHRcdGlmIChjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0pIHtcblx0XHRcdFx0dGhpcy5hcHBlbmRDaGlsZChwYXJlbnQsIGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQucG9ydGFsQ29udGFpbmVyXSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gaWYgcGFyZW50IGlzIGEgcG9ydGFsXG5cdFx0aWYgKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdwb3J0YWwnKSB7XG5cdFx0XHRpZiAoIXBSU1tOZ3RSZW5kZXJlckNsYXNzSWQucG9ydGFsQ29udGFpbmVyXSkgdGhpcy5wcm9jZXNzUG9ydGFsQ29udGFpbmVyKHBhcmVudCk7XG5cblx0XHRcdGlmIChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0pIHtcblx0XHRcdFx0dGhpcy5hcHBlbmRDaGlsZChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0sIG5ld0NoaWxkKTtcblx0XHRcdH1cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBpZiBib3RoIGFyZSB0aHJlZSBpbnN0YW5jZXMsIHN0cmFpZ2h0Zm9yd2FyZCBjYXNlXG5cdFx0aWYgKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScgJiYgY1JTPy5bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG5cdFx0XHRjb25zdCBjTFMgPSBnZXRMb2NhbFN0YXRlKG5ld0NoaWxkKTtcblxuXHRcdFx0Ly8gaWYgY2hpbGQgYWxyZWFkeSBhdHRhY2hlZCB0byBhIHBhcmVudCwgc2tpcFxuXHRcdFx0aWYgKGNMUz8uaW5zdGFuY2VTdG9yZT8uZ2V0KCdwYXJlbnQnKSkgcmV0dXJuO1xuXHRcdFx0aWYgKHBhcmVudCA9PT0gbmV3Q2hpbGQpIHJldHVybjtcblxuXHRcdFx0Ly8gYXR0YWNoIFRIUkVFIGNoaWxkXG5cdFx0XHRhdHRhY2hUaHJlZUNoaWxkKHBhcmVudCwgbmV3Q2hpbGQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIGlmIG9ubHkgdGhlIHBhcmVudCBpcyB0aGUgVEhSRUUgaW5zdGFuY2Vcblx0XHRpZiAocFJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuXHRcdFx0Zm9yIChjb25zdCByZW5kZXJDaGlsZCBvZiBjUlM/LltOZ3RSZW5kZXJlckNsYXNzSWQuY2hpbGRyZW5dIHx8IFtdKSB7XG5cdFx0XHRcdHRoaXMuYXBwZW5kQ2hpbGQocGFyZW50LCByZW5kZXJDaGlsZCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuc2hvdWxkRmluZEdyYW5kcGFyZW50SW5zdGFuY2UocFJTLCBjUlMsIG5ld0NoaWxkKSkge1xuXHRcdFx0Ly8gd2UnbGwgdHJ5IHRvIGdldCB0aGUgZ3JhbmRwYXJlbnQgaW5zdGFuY2UgaGVyZSBzbyB0aGF0IHdlIGNhbiBydW4gYXBwZW5kQ2hpbGQgd2l0aCBib3RoIGluc3RhbmNlc1xuXHRcdFx0Y29uc3QgY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UgPSBnZXRDbG9zZXN0UGFyZW50V2l0aEluc3RhbmNlKHBhcmVudCk7XG5cdFx0XHRpZiAoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UpIHRoaXMuYXBwZW5kQ2hpbGQoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UsIG5ld0NoaWxkKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdH1cblxuXHRpbnNlcnRCZWZvcmUoXG5cdFx0cGFyZW50OiBOZ3RSZW5kZXJlck5vZGUsXG5cdFx0bmV3Q2hpbGQ6IE5ndFJlbmRlcmVyTm9kZSxcblx0XHQvLyBUT0RPOiB3ZSBtaWdodCBuZWVkIHRoZXNlP1xuXHRcdC8vIF9yZWZDaGlsZDogTmd0UmVuZGVyZXJOb2RlLFxuXHRcdC8vIF9pc01vdmU/OiBib29sZWFuIHwgdW5kZWZpbmVkLFxuXHQpOiB2b2lkIHtcblx0XHQvLyBOT1RFOiBub3Qgc3VyZSB3aHkgdGhpcyBpcyBoZXJlLiBpbnZlc3RpZ2F0ZSB3aGVuIHdlIGhhdmUgdGltZVxuXHRcdC8vIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiAobmV3Q2hpbGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCB8fCBuZXdDaGlsZCBpbnN0YW5jZW9mIFRleHQpKSB7XG5cdFx0Ly8gXHRyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZChwYXJlbnQsIG5ld0NoaWxkKTtcblx0XHQvLyB9XG5cblx0XHRpZiAocGFyZW50ID09IG51bGwgfHwgIXBhcmVudC5fX25ndF9yZW5kZXJlcl9fIHx8IHBhcmVudCA9PT0gbmV3Q2hpbGQpIHJldHVybjtcblx0XHR0aGlzLmFwcGVuZENoaWxkKHBhcmVudCwgbmV3Q2hpbGQpO1xuXHR9XG5cblx0cmVtb3ZlQ2hpbGQocGFyZW50OiBOZ3RSZW5kZXJlck5vZGUsIG9sZENoaWxkOiBOZ3RSZW5kZXJlck5vZGUsIGlzSG9zdEVsZW1lbnQ/OiBib29sZWFuIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdFx0Y29uc3QgcFJTID0gcGFyZW50Ll9fbmd0X3JlbmRlcmVyX187XG5cdFx0Y29uc3QgY1JTID0gb2xkQ2hpbGQuX19uZ3RfcmVuZGVyZXJfXztcblxuXHRcdGlmIChcblx0XHRcdCghY1JTIHx8ICFwUlMpICYmXG5cdFx0XHRwYXJlbnQgaW5zdGFuY2VvZiBFbGVtZW50ICYmXG5cdFx0XHQob2xkQ2hpbGQgaW5zdGFuY2VvZiBFbGVtZW50IHx8IG9sZENoaWxkIGluc3RhbmNlb2YgVGV4dCB8fCBvbGRDaGlsZCBpbnN0YW5jZW9mIENvbW1lbnQpXG5cdFx0KSB7XG5cdFx0XHR0aGlzLmRlbGVnYXRlLnJlbW92ZUNoaWxkKHBhcmVudCwgb2xkQ2hpbGQpO1xuXHRcdFx0dGhpcy5kZXN0cm95SW50ZXJuYWwob2xkQ2hpbGQsIHBhcmVudCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdkb20nICYmICghcFJTIHx8IHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdkb20nKSkge1xuXHRcdFx0dGhpcy5kZWxlZ2F0ZS5yZW1vdmVDaGlsZChwYXJlbnQsIG9sZENoaWxkKTtcblx0XHRcdHRoaXMuZGVzdHJveUludGVybmFsKG9sZENoaWxkLCBwYXJlbnQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnICYmIGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScpIHtcblx0XHRcdHJlbW92ZVRocmVlQ2hpbGQocGFyZW50LCBvbGRDaGlsZCwgdHJ1ZSk7XG5cdFx0XHR0aGlzLmRlc3Ryb3lJbnRlcm5hbChvbGRDaGlsZCwgcGFyZW50KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoXG5cdFx0XHRwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAncG9ydGFsJyAmJlxuXHRcdFx0cFJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdPy5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJ1xuXHRcdCkge1xuXHRcdFx0dGhpcy5yZW1vdmVDaGlsZChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0sIG9sZENoaWxkLCBpc0hvc3RFbGVtZW50KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAocFJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuXHRcdFx0dGhpcy5kZXN0cm95SW50ZXJuYWwob2xkQ2hpbGQsIHBhcmVudCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UgPSBnZXRDbG9zZXN0UGFyZW50V2l0aEluc3RhbmNlKHBhcmVudCk7XG5cdFx0aWYgKGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlKSB0aGlzLnJlbW92ZUNoaWxkKGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlLCBvbGRDaGlsZCwgaXNIb3N0RWxlbWVudCk7XG5cdFx0dGhpcy5kZXN0cm95SW50ZXJuYWwob2xkQ2hpbGQsIGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlIGFzIE5ndFJlbmRlcmVyTm9kZSk7XG5cdH1cblxuXHRwYXJlbnROb2RlKG5vZGU6IE5ndFJlbmRlcmVyTm9kZSkge1xuXHRcdGNvbnN0IHJTID0gbm9kZS5fX25ndF9yZW5kZXJlcl9fO1xuXHRcdGlmIChyUz8uW05ndFJlbmRlcmVyQ2xhc3NJZC5wYXJlbnRdKSByZXR1cm4gclNbTmd0UmVuZGVyZXJDbGFzc0lkLnBhcmVudF07XG5cdFx0cmV0dXJuIHRoaXMuZGVsZWdhdGUucGFyZW50Tm9kZShub2RlKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0QXR0cmlidXRlSW50ZXJuYWwoXG5cdFx0ZWw6IE5ndFJlbmRlcmVyTm9kZSxcblx0XHRuYW1lOiBzdHJpbmcsXG5cdFx0dmFsdWU6IHN0cmluZyxcblx0XHRfbmFtZXNwYWNlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcblx0KTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgclMgPSBlbC5fX25ndF9yZW5kZXJlcl9fO1xuXHRcdGlmIChyU1tOZ3RSZW5kZXJlckNsYXNzSWQuZGVzdHJveWVkXSkgcmV0dXJuIGZhbHNlO1xuXG5cdFx0aWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuXHRcdFx0aWYgKG5hbWUgPT09IFNQRUNJQUxfUFJPUEVSVElFUy5SRU5ERVJfUFJJT1JJVFkpIHtcblx0XHRcdFx0Ly8gTk9URTogcHJpb3JpdHkgbmVlZHMgdG8gYmUgc2V0IGFzIGFuIGF0dHJpYnV0ZSBzdHJpbmcgc28gdGhhdCB0aGV5IGNhbiBiZSBzZXQgYXMgZWFybHkgYXMgcG9zc2libGVcblx0XHRcdFx0Ly8gd2UgY29udmVydCB0aGF0IHN0cmluZyB0byBhIG51bWJlci4gaWYgaXQncyBpbnZhbGlkLCBkZWZhdWx0IDBcblx0XHRcdFx0bGV0IHByaW9yaXR5ID0gTnVtYmVyKHZhbHVlKTtcblx0XHRcdFx0aWYgKGlzTmFOKHByaW9yaXR5KSkge1xuXHRcdFx0XHRcdHByaW9yaXR5ID0gMDtcblx0XHRcdFx0XHRjb25zb2xlLndhcm4oYFtOR1RdIFwicHJpb3JpdHlcIiBpcyBhbiBpbnZhbGlkIG51bWJlciwgZGVmYXVsdCB0byAwYCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoZWwpO1xuXHRcdFx0XHRpZiAobG9jYWxTdGF0ZSkgbG9jYWxTdGF0ZS5wcmlvcml0eSA9IHByaW9yaXR5O1xuXHRcdFx0fSBlbHNlIGlmIChuYW1lID09PSBTUEVDSUFMX1BST1BFUlRJRVMuQVRUQUNIKSB7XG5cdFx0XHRcdC8vIE5PVEU6IGhhbmRsZSBhdHRhY2ggYXMgc3RyaW5nXG5cdFx0XHRcdGNvbnN0IHBhdGhzID0gdmFsdWUuc3BsaXQoJy4nKTtcblx0XHRcdFx0aWYgKHBhdGhzLmxlbmd0aCkge1xuXHRcdFx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGVsKTtcblx0XHRcdFx0XHRpZiAobG9jYWxTdGF0ZSkgbG9jYWxTdGF0ZS5hdHRhY2ggPSBwYXRocztcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChuYW1lID09PSBTUEVDSUFMX1BST1BFUlRJRVMuUkFXX1ZBTFVFKSB7XG5cdFx0XHRcdC8vIE5PVEU6IGNvZXJjaW9uXG5cdFx0XHRcdGxldCBtYXliZUNvZXJjZWQ6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gPSB2YWx1ZTtcblx0XHRcdFx0aWYgKG1heWJlQ29lcmNlZCA9PT0gJycgfHwgbWF5YmVDb2VyY2VkID09PSAndHJ1ZScgfHwgbWF5YmVDb2VyY2VkID09PSAnZmFsc2UnKSB7XG5cdFx0XHRcdFx0bWF5YmVDb2VyY2VkID0gbWF5YmVDb2VyY2VkID09PSAndHJ1ZScgfHwgbWF5YmVDb2VyY2VkID09PSAnJztcblx0XHRcdFx0fSBlbHNlIGlmICghaXNOYU4oTnVtYmVyKG1heWJlQ29lcmNlZCkpKSB7XG5cdFx0XHRcdFx0bWF5YmVDb2VyY2VkID0gTnVtYmVyKG1heWJlQ29lcmNlZCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0clNbTmd0UmVuZGVyZXJDbGFzc0lkLnJhd1ZhbHVlXSA9IG1heWJlQ29lcmNlZDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFwcGx5UHJvcHMoZWwsIHsgW25hbWVdOiB2YWx1ZSB9KTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0c2V0QXR0cmlidXRlKGVsOiBOZ3RSZW5kZXJlck5vZGUsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbmFtZXNwYWNlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuXHRcdGNvbnN0IHVzZURlbGVnYXRlID0gdGhpcy5zZXRBdHRyaWJ1dGVJbnRlcm5hbChlbCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG5cblx0XHRpZiAodXNlRGVsZWdhdGUpIHtcblx0XHRcdHRoaXMuZGVsZWdhdGUuc2V0QXR0cmlidXRlKGVsLCBuYW1lLCB2YWx1ZSk7XG5cdFx0fVxuXHR9XG5cblx0cmVtb3ZlQXR0cmlidXRlKGVsOiBOZ3RSZW5kZXJlck5vZGUsIG5hbWU6IHN0cmluZywgbmFtZXNwYWNlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuXHRcdGNvbnN0IHVzZURlbGVnYXRlID0gdGhpcy5zZXRBdHRyaWJ1dGVJbnRlcm5hbChlbCwgbmFtZSwgdW5kZWZpbmVkISwgbmFtZXNwYWNlKTtcblxuXHRcdGlmICh1c2VEZWxlZ2F0ZSkge1xuXHRcdFx0dGhpcy5kZWxlZ2F0ZS5yZW1vdmVBdHRyaWJ1dGUoZWwsIG5hbWUsIG5hbWVzcGFjZSk7XG5cdFx0fVxuXHR9XG5cblx0c2V0UHJvcGVydHkoZWw6IE5ndFJlbmRlcmVyTm9kZSwgbmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG5cdFx0Y29uc3QgclMgPSBlbC5fX25ndF9yZW5kZXJlcl9fO1xuXHRcdGlmICghclMgfHwgclNbTmd0UmVuZGVyZXJDbGFzc0lkLmRlc3Ryb3llZF0pIHJldHVybjtcblxuXHRcdGlmIChyU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScpIHtcblx0XHRcdGlmIChuYW1lID09PSBTUEVDSUFMX1BST1BFUlRJRVMuUEFSQU1FVEVSUykge1xuXHRcdFx0XHRhcHBseVByb3BzKGVsLCB2YWx1ZSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoZWwpO1xuXHRcdFx0Y29uc3QgcGFyZW50ID0gbG9jYWxTdGF0ZT8uaW5zdGFuY2VTdG9yZS5nZXQoJ3BhcmVudCcpIHx8IHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wYXJlbnRdO1xuXG5cdFx0XHQvLyBbcmF3VmFsdWVdXG5cdFx0XHRpZiAobG9jYWxTdGF0ZT8uaXNSYXcgJiYgbmFtZSA9PT0gU1BFQ0lBTF9QUk9QRVJUSUVTLlJBV19WQUxVRSkge1xuXHRcdFx0XHRyU1tOZ3RSZW5kZXJlckNsYXNzSWQucmF3VmFsdWVdID0gdmFsdWU7XG5cdFx0XHRcdGlmIChwYXJlbnQpIGF0dGFjaFRocmVlQ2hpbGQocGFyZW50LCBlbCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gW2F0dGFjaF1cblx0XHRcdGlmIChuYW1lID09PSBTUEVDSUFMX1BST1BFUlRJRVMuQVRUQUNIKSB7XG5cdFx0XHRcdGlmIChsb2NhbFN0YXRlKVxuXHRcdFx0XHRcdGxvY2FsU3RhdGUuYXR0YWNoID0gQXJyYXkuaXNBcnJheSh2YWx1ZSlcblx0XHRcdFx0XHRcdD8gdmFsdWUubWFwKCh2KSA9PiB2LnRvU3RyaW5nKCkpXG5cdFx0XHRcdFx0XHQ6IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJ1xuXHRcdFx0XHRcdFx0XHQ/IHZhbHVlXG5cdFx0XHRcdFx0XHRcdDogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJ1xuXHRcdFx0XHRcdFx0XHRcdD8gdmFsdWUuc3BsaXQoJy4nKVxuXHRcdFx0XHRcdFx0XHRcdDogW3ZhbHVlXTtcblx0XHRcdFx0aWYgKHBhcmVudCkgYXR0YWNoVGhyZWVDaGlsZChwYXJlbnQsIGVsKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRhcHBseVByb3BzKGVsLCB7IFtuYW1lXTogdmFsdWUgfSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZGVsZWdhdGUuc2V0UHJvcGVydHkoZWwsIG5hbWUsIHZhbHVlKTtcblx0fVxuXG5cdGxpc3Rlbih0YXJnZXQ6IE5ndFJlbmRlcmVyTm9kZSwgZXZlbnROYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoZXZlbnQ6IGFueSkgPT4gYm9vbGVhbiB8IHZvaWQpOiAoKSA9PiB2b2lkIHtcblx0XHRjb25zdCByUyA9IHRhcmdldC5fX25ndF9yZW5kZXJlcl9fO1xuXG5cdFx0Ly8gaWYgdGhlIHRhcmdldCBkb2Vzbid0IGhhdmUgX19uZ3RfcmVuZGVyZXJfXywgd2UgZGVsZWdhdGVcblx0XHQvLyBpZiB0YXJnZXQgaXMgRE9NIG5vZGUsIHdlIGRlbGVnYXRlXG5cdFx0aWYgKCFyUyB8fCBpc0RPTSh0YXJnZXQpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5saXN0ZW4odGFyZ2V0LCBldmVudE5hbWUsIGNhbGxiYWNrKTtcblx0XHR9XG5cblx0XHRpZiAoclNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG5cdFx0XHRjb25zdCBpbnN0YW5jZSA9IHRhcmdldDtcblx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKTtcblx0XHRcdGNvbnN0IHByaW9yaXR5ID0gbG9jYWxTdGF0ZT8ucHJpb3JpdHkgPz8gMDtcblx0XHRcdHJldHVybiBwcm9jZXNzVGhyZWVFdmVudChpbnN0YW5jZSwgcHJpb3JpdHksIGV2ZW50TmFtZSwgY2FsbGJhY2spO1xuXHRcdH1cblxuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgLSB3ZSBrbm93IHRoYXQgdGFyZ2V0IGlzIG5vdCBET00gbm9kZVxuXHRcdGlmICh0YXJnZXQgPT09IHRoaXMucm9vdFN0b3JlLnNuYXBzaG90LnNjZW5lKSB7XG5cdFx0XHRsZXQgW2RvbVRhcmdldCwgZXZlbnRdID0gZXZlbnROYW1lLnNwbGl0KCc6Jyk7XG5cdFx0XHRpZiAoZXZlbnQgPT0gbnVsbCkge1xuXHRcdFx0XHRldmVudCA9IGRvbVRhcmdldDtcblx0XHRcdFx0ZG9tVGFyZ2V0ID0gJyc7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBldmVudFRhcmdldCA9XG5cdFx0XHRcdGRvbVRhcmdldCA9PT0gJ3dpbmRvdydcblx0XHRcdFx0XHQ/ICh0YXJnZXQgYXMgTmd0QW55UmVjb3JkKVsnb3duZXJEb2N1bWVudCddWydkZWZhdWx0VmlldyddXG5cdFx0XHRcdFx0OiAodGFyZ2V0IGFzIE5ndEFueVJlY29yZClbJ293bmVyRG9jdW1lbnQnXTtcblx0XHRcdHJldHVybiB0aGlzLmRlbGVnYXRlLmxpc3RlbihldmVudFRhcmdldCwgZXZlbnQsIGNhbGxiYWNrKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gKCkgPT4ge307XG5cdH1cblxuXHRwcml2YXRlIGRlc3Ryb3lJbnRlcm5hbChub2RlOiBOZ3RSZW5kZXJlck5vZGUsIHBhcmVudD86IE5ndFJlbmRlcmVyTm9kZSkge1xuXHRcdGNvbnN0IHJTID0gbm9kZS5fX25ndF9yZW5kZXJlcl9fO1xuXHRcdGlmICghclMgfHwgclNbTmd0UmVuZGVyZXJDbGFzc0lkLmRlc3Ryb3llZF0pIHJldHVybjtcblx0XHRpZiAoclNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG5cdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShub2RlKTtcblx0XHRcdGlmIChsb2NhbFN0YXRlPy5pbnN0YW5jZVN0b3JlKSB7XG5cdFx0XHRcdGxvY2FsU3RhdGUuaW5zdGFuY2VTdG9yZS5nZXQoJ29iamVjdHMnKS5mb3JFYWNoKChvYmopID0+IHRoaXMuZGVzdHJveUludGVybmFsKG9iaiwgcGFyZW50KSk7XG5cdFx0XHRcdGxvY2FsU3RhdGUuaW5zdGFuY2VTdG9yZS5nZXQoJ25vbk9iamVjdHMnKS5mb3JFYWNoKChvYmopID0+IHRoaXMuZGVzdHJveUludGVybmFsKG9iaiwgcGFyZW50KSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChsb2NhbFN0YXRlPy5vblVwZGF0ZSkgZGVsZXRlIGxvY2FsU3RhdGUub25VcGRhdGU7XG5cdFx0XHRpZiAobG9jYWxTdGF0ZT8ub25BdHRhY2gpIGRlbGV0ZSBsb2NhbFN0YXRlLm9uQXR0YWNoO1xuXG5cdFx0XHRkZWxldGUgKGxvY2FsU3RhdGUgYXMgTmd0QW55UmVjb3JkKVsnb2JqZWN0cyddO1xuXHRcdFx0ZGVsZXRlIChsb2NhbFN0YXRlIGFzIE5ndEFueVJlY29yZClbJ25vbk9iamVjdHMnXTtcblx0XHRcdGRlbGV0ZSAobG9jYWxTdGF0ZSBhcyBOZ3RBbnlSZWNvcmQpWydwYXJlbnQnXTtcblx0XHRcdGRlbGV0ZSAobG9jYWxTdGF0ZSBhcyBOZ3RBbnlSZWNvcmQpWydhZGQnXTtcblx0XHRcdGRlbGV0ZSAobG9jYWxTdGF0ZSBhcyBOZ3RBbnlSZWNvcmQpWydyZW1vdmUnXTtcblx0XHRcdGRlbGV0ZSAobG9jYWxTdGF0ZSBhcyBOZ3RBbnlSZWNvcmQpWydzdG9yZSddO1xuXHRcdFx0ZGVsZXRlIChsb2NhbFN0YXRlIGFzIE5ndEFueVJlY29yZClbJ2hhbmRsZXJzJ107XG5cblx0XHRcdGlmICghbG9jYWxTdGF0ZT8ucHJpbWl0aXZlKSB7XG5cdFx0XHRcdGRlbGV0ZSAobm9kZSBhcyBOZ3RBbnlSZWNvcmQpWydfX25ndF9fJ107XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2NvbW1lbnQnKSB7XG5cdFx0XHRyU1tOZ3RSZW5kZXJlckNsYXNzSWQuaW5qZWN0b3JGYWN0b3J5XSA9IG51bGwhO1xuXHRcdFx0ZGVsZXRlIChub2RlIGFzIE5ndEFueVJlY29yZClbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF07XG5cdFx0XHR0aGlzLnJlbW92ZUNvbW1lbnROb2RlKG5vZGUsIHRoaXMuYXJnc0NvbW1lbnROb2Rlcyk7XG5cdFx0fVxuXG5cdFx0aWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3BvcnRhbCcpIHtcblx0XHRcdHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5pbmplY3RvckZhY3RvcnldID0gbnVsbCE7XG5cdFx0XHR0aGlzLnJlbW92ZUNvbW1lbnROb2RlKG5vZGUsIHRoaXMucG9ydGFsQ29tbWVudHNOb2Rlcyk7XG5cdFx0fVxuXG5cdFx0Ly8gbnVsbGlmeSBwYXJlbnRcblx0XHRyU1tOZ3RSZW5kZXJlckNsYXNzSWQucGFyZW50XSA9IG51bGw7XG5cdFx0Zm9yIChjb25zdCByZW5kZXJDaGlsZCBvZiByU1tOZ3RSZW5kZXJlckNsYXNzSWQuY2hpbGRyZW5dIHx8IFtdKSB7XG5cdFx0XHRpZiAocmVuZGVyQ2hpbGQuX19uZ3RfcmVuZGVyZXJfXz8uW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJyAmJiBwYXJlbnQpIHtcblx0XHRcdFx0aWYgKHBhcmVudC5fX25ndF9yZW5kZXJlcl9fPy5bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG5cdFx0XHRcdFx0cmVtb3ZlVGhyZWVDaGlsZChwYXJlbnQsIHJlbmRlckNoaWxkLCB0cnVlKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGNsb3Nlc3RJbnN0YW5jZSA9IGdldENsb3Nlc3RQYXJlbnRXaXRoSW5zdGFuY2UocGFyZW50KTtcblx0XHRcdFx0aWYgKGNsb3Nlc3RJbnN0YW5jZSkge1xuXHRcdFx0XHRcdHJlbW92ZVRocmVlQ2hpbGQoY2xvc2VzdEluc3RhbmNlLCByZW5kZXJDaGlsZCwgdHJ1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMuZGVzdHJveUludGVybmFsKHJlbmRlckNoaWxkLCBwYXJlbnQpO1xuXHRcdH1cblxuXHRcdHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5jaGlsZHJlbl0gPSBbXTtcblx0XHRyU1tOZ3RSZW5kZXJlckNsYXNzSWQuZGVzdHJveWVkXSA9IHRydWU7XG5cdFx0aWYgKHBhcmVudCkge1xuXHRcdFx0cmVtb3ZlQ2hpbGQocGFyZW50LCBub2RlKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlbW92ZUNvbW1lbnROb2RlKG5vZGU6IE5ndFJlbmRlcmVyTm9kZSwgbm9kZXM6IE5ndFJlbmRlcmVyTm9kZVtdKSB7XG5cdFx0Y29uc3QgaW5kZXggPSBub2Rlcy5maW5kSW5kZXgoKGNvbW1lbnQpID0+IGNvbW1lbnQgPT09IG5vZGUpO1xuXHRcdGlmIChpbmRleCA+IC0xKSB7XG5cdFx0XHRub2Rlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgcHJvY2Vzc1BvcnRhbENvbnRhaW5lcihwb3J0YWw6IE5ndFJlbmRlcmVyTm9kZSkge1xuXHRcdGNvbnN0IGluamVjdG9yID0gcG9ydGFsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmluamVjdG9yRmFjdG9yeV0/LigpO1xuXHRcdGlmICghaW5qZWN0b3IpIHJldHVybjtcblxuXHRcdGNvbnN0IHBvcnRhbFN0b3JlID0gaW5qZWN0b3IuZ2V0KE5HVF9TVE9SRSwgbnVsbCk7XG5cdFx0aWYgKCFwb3J0YWxTdG9yZSkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgcG9ydGFsQ29udGFpbmVyID0gcG9ydGFsU3RvcmUuZ2V0KCdzY2VuZScpO1xuXHRcdGlmICghcG9ydGFsQ29udGFpbmVyKSByZXR1cm47XG5cblx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShwb3J0YWxDb250YWluZXIpO1xuXHRcdGlmIChsb2NhbFN0YXRlKSB7XG5cdFx0XHRsb2NhbFN0YXRlLnN0b3JlID0gcG9ydGFsU3RvcmU7XG5cdFx0fVxuXG5cdFx0cG9ydGFsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0gPSBjcmVhdGVOb2RlKCd0aHJlZScsIHBvcnRhbENvbnRhaW5lciwgdGhpcy5kb2N1bWVudCk7XG5cdH1cblxuXHRwcml2YXRlIHNob3VsZEZpbmRHcmFuZHBhcmVudEluc3RhbmNlKHBSUzogTmd0UmVuZGVyZXJTdGF0ZSwgY1JTOiBOZ3RSZW5kZXJlclN0YXRlLCBjaGlsZDogTmd0UmVuZGVyZXJOb2RlKSB7XG5cdFx0Y29uc3QgcFR5cGUgPSBwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdO1xuXHRcdGNvbnN0IGNUeXBlID0gY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXTtcblxuXHRcdGNvbnN0IGNMUyA9IGdldExvY2FsU3RhdGUoY2hpbGQpO1xuXHRcdC8vIGlmIGNoaWxkIGlzIHRocmVlIGJ1dCBoYXZlbid0IGJlZW4gYXR0YWNoZWQgdG8gYSBwYXJlbnQgeWV0XG5cdFx0Y29uc3QgaXNEYW5nbGluZ1RocmVlQ2hpbGQgPSBjVHlwZSA9PT0gJ3RocmVlJyAmJiAhY0xTPy5pbnN0YW5jZVN0b3JlPy5nZXQoJ3BhcmVudCcpO1xuXHRcdC8vIG9yIGJvdGggcGFyZW50IGFuZCBjaGlsZCBhcmUgRE9NIGVsZW1lbnRzXG5cdFx0Ly8gb3IgdGhleSBhcmUgY29tcG91bmQgQU5EIGhhdmVuJ3QgaGFkIGEgVEhSRUUgaW5zdGFuY2UgeWV0XG5cdFx0Y29uc3QgaXNQYXJlbnRTdGlsbERPTSA9IHBUeXBlID09PSAnZG9tJztcblx0XHRjb25zdCBpc0NoaWxkU3RpbGxET00gPSBjVHlwZSA9PT0gJ2RvbSc7XG5cblx0XHRyZXR1cm4gaXNEYW5nbGluZ1RocmVlQ2hpbGQgfHwgKGlzUGFyZW50U3RpbGxET00gJiYgaXNDaGlsZFN0aWxsRE9NKSB8fCBpc1BhcmVudFN0aWxsRE9NO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXROZ3RBcmdzKCkge1xuXHRcdGxldCBkaXJlY3RpdmU6IE5ndEFyZ3MgfCB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBkZXN0cm95ZWQgPSBbXTtcblxuXHRcdGxldCBpID0gdGhpcy5hcmdzQ29tbWVudE5vZGVzLmxlbmd0aCAtIDE7XG5cdFx0d2hpbGUgKGkgPj0gMCkge1xuXHRcdFx0Y29uc3QgY29tbWVudCA9IHRoaXMuYXJnc0NvbW1lbnROb2Rlc1tpXTtcblx0XHRcdGlmIChjb21tZW50Ll9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmRlc3Ryb3llZF0pIHtcblx0XHRcdFx0ZGVzdHJveWVkLnB1c2goaSk7XG5cdFx0XHRcdGktLTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBpbmplY3RvciA9IGNvbW1lbnQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuaW5qZWN0b3JGYWN0b3J5XSgpO1xuXHRcdFx0aWYgKCFpbmplY3Rvcikge1xuXHRcdFx0XHRpLS07XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgaW5zdGFuY2UgPSBpbmplY3Rvci5nZXQoTmd0QXJncywgbnVsbCk7XG5cdFx0XHRpZiAoaW5zdGFuY2UgJiYgaW5zdGFuY2UudmFsaWRhdGUoKSkge1xuXHRcdFx0XHRkaXJlY3RpdmUgPSBpbnN0YW5jZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdGktLTtcblx0XHR9XG5cblx0XHRkZXN0cm95ZWQuZm9yRWFjaCgoaW5kZXgpID0+IHtcblx0XHRcdHRoaXMuYXJnc0NvbW1lbnROb2Rlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIGRpcmVjdGl2ZTtcblx0fVxuXG5cdHByaXZhdGUgdHJ5R2V0UG9ydGFsU3RvcmUoKSB7XG5cdFx0bGV0IHN0b3JlOiBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT4gfCB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgZGVzdHJveWVkID0gW107XG5cdFx0Ly8gd2Ugb25seSBjYXJlIGFib3V0IHRoZSBwb3J0YWwgc3RhdGVzIGJlY2F1c2UgTmd0U3RvcmUgb25seSBkaWZmZXJzIHBlciBQb3J0YWxcblx0XHRsZXQgaSA9IHRoaXMucG9ydGFsQ29tbWVudHNOb2Rlcy5sZW5ndGggLSAxO1xuXHRcdHdoaWxlIChpID49IDApIHtcblx0XHRcdC8vIGxvb3AgdGhyb3VnaCB0aGUgcG9ydGFsIHN0YXRlIGJhY2t3YXJkcyB0byBmaW5kIHRoZSBjbG9zZXN0IE5ndFN0b3JlXG5cdFx0XHRjb25zdCBwb3J0YWwgPSB0aGlzLnBvcnRhbENvbW1lbnRzTm9kZXNbaV07XG5cdFx0XHRpZiAocG9ydGFsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmRlc3Ryb3llZF0pIHtcblx0XHRcdFx0ZGVzdHJveWVkLnB1c2goaSk7XG5cdFx0XHRcdGktLTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGluamVjdG9yID0gcG9ydGFsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmluamVjdG9yRmFjdG9yeV0oKTtcblx0XHRcdGlmICghaW5qZWN0b3IpIHtcblx0XHRcdFx0aS0tO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGluc3RhbmNlID0gaW5qZWN0b3IuZ2V0KE5HVF9TVE9SRSwgbnVsbCk7XG5cdFx0XHQvLyBvbmx5IHRoZSBpbnN0YW5jZSB3aXRoIHByZXZpb3VzUm9vdCBzaG91bGQgcGFzc1xuXHRcdFx0aWYgKGluc3RhbmNlICYmIGluc3RhbmNlLmdldCgncHJldmlvdXNSb290JykpIHtcblx0XHRcdFx0c3RvcmUgPSBpbnN0YW5jZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpLS07XG5cdFx0fVxuXG5cdFx0ZGVzdHJveWVkLmZvckVhY2goKGluZGV4KSA9PiB7XG5cdFx0XHR0aGlzLnBvcnRhbENvbW1lbnRzTm9kZXMuc3BsaWNlKGluZGV4LCAxKTtcblx0XHR9KTtcblxuXHRcdHJldHVybiBzdG9yZSB8fCB0aGlzLnJvb3RTdG9yZTtcblx0fVxuXG5cdGNyZWF0ZVRleHQgPSB0aGlzLmRlbGVnYXRlLmNyZWF0ZVRleHQuYmluZCh0aGlzLmRlbGVnYXRlKTtcblx0ZGVzdHJveSA9IHRoaXMuZGVsZWdhdGUuZGVzdHJveS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuXHRkZXN0cm95Tm9kZTogKChub2RlOiBhbnkpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cdHNlbGVjdFJvb3RFbGVtZW50ID0gdGhpcy5kZWxlZ2F0ZS5zZWxlY3RSb290RWxlbWVudC5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuXHRuZXh0U2libGluZyA9IHRoaXMuZGVsZWdhdGUubmV4dFNpYmxpbmcuYmluZCh0aGlzLmRlbGVnYXRlKTtcblx0YWRkQ2xhc3MgPSB0aGlzLmRlbGVnYXRlLmFkZENsYXNzLmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG5cdHJlbW92ZUNsYXNzID0gdGhpcy5kZWxlZ2F0ZS5yZW1vdmVDbGFzcy5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuXHRzZXRTdHlsZSA9IHRoaXMuZGVsZWdhdGUuc2V0U3R5bGUuYmluZCh0aGlzLmRlbGVnYXRlKTtcblx0cmVtb3ZlU3R5bGUgPSB0aGlzLmRlbGVnYXRlLnJlbW92ZVN0eWxlLmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG5cdHNldFZhbHVlID0gdGhpcy5kZWxlZ2F0ZS5zZXRWYWx1ZS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuXHRnZXQgZGF0YSgpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcblx0XHRyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5kYXRhO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTmd0UmVuZGVyZXIoc3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPikge1xuXHRjb25zdCBwcm92aWRlcnMgPSBbXG5cdFx0Tmd0UmVuZGVyZXJGYWN0b3J5LFxuXHRcdHsgcHJvdmlkZTogUmVuZGVyZXJGYWN0b3J5MiwgdXNlRXhpc3Rpbmc6IE5ndFJlbmRlcmVyRmFjdG9yeSB9LFxuXHRcdHByb3ZpZGVTdG9yZSgoKSA9PiBzdG9yZSksXG5cdF07XG5cblx0cmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhwcm92aWRlcnMpO1xufVxuXG5leHBvcnQgeyBleHRlbmQgfSBmcm9tICcuL2NhdGFsb2d1ZSc7XG5leHBvcnQgeyBIVE1MLCBST1VURURfU0NFTkUgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4iXX0=