Socket
Socket
Sign inDemoInstall

spinque-angular-ui

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

spinque-angular-ui - npm Package Compare versions

Comparing version 12.0.7 to 12.1.0

6

bundles/spinque-angular-ui-location.umd.js

@@ -38,3 +38,3 @@ (function (global, factory) {

/**
* Given a stringified query stack, decode back to SpinqueQuery[]
* Given a stringified query stack, decode back to SpinqueQueryStack
*/

@@ -59,6 +59,6 @@ SpinqueLocationService.prototype.decode = function (stringified) {

/**
* Given a SpinqueQuery[], encode into a stringified query stack
* Given a SpinqueQueryStack, encode into a stringified query stack
*/
SpinqueLocationService.prototype.encode = function (queryStack) {
var endpointString = queryStack.map(function (f) { return [f.endpoint, f.parameters]; });
var endpointString = queryStack.map(function (f) { return ['endpoint' in f ? f.endpoint : f.commit, f.parameters]; });
return JSON.stringify(endpointString);

@@ -65,0 +65,0 @@ };

@@ -434,3 +434,3 @@ (function (global, factory) {

/**
* Fetches query results of a SpinqueQuery or SpinqueQuery[]
* Fetches query results of a SpinqueQuery or SpinqueQueryStack
*/

@@ -511,5 +511,11 @@ SpinqueRestService.prototype.getResults = function (query, options) {

// 1. Build the query url by combining the configured base with the context, query path and operation
var api = this.apiOverride || queryStack[0].api || this.apiConfig.api;
var workspace = this.workspaceOverride || queryStack[0].workspace || this.apiConfig.workspace;
var base = this.apiConfig.baseUrl + "/" + this.apiConfig.version + "/" + workspace + "/api/" + api;
var base = this.apiConfig.baseUrl + "/" + this.apiConfig.version + "/" + workspace;
if ('endpoint' in queryStack[0]) {
var api = this.apiOverride || queryStack[0].api || this.apiConfig.api;
base += "/api/" + api;
}
else {
base += "/standalone";
}
var queryPath = this.decodeString(queryStack);

@@ -535,3 +541,3 @@ var url = "" + base + queryPath + "/" + operation;

/**
* Takes a SpinqueQuery object and stringifies it.
* Takes a SpinqueQueryStack object and stringifies it.
* See https://docs.spinque.com/2.4/rest/basic.html for more information.

@@ -556,3 +562,3 @@ */

var parameterString = this.getParameterString(query.parameters);
return "/q/" + encodeURIComponent(query.endpoint) + parameterString;
return "/q/" + encodeURIComponent('endpoint' in query ? query.endpoint : query.commit) + parameterString;
};

@@ -633,2 +639,5 @@ /**

// This would actually be more correct but does not work currently:
// https://github.com/microsoft/TypeScript/issues/33591
// export type SpinqueQueryStack = SpinqueApiQuery[] | SpinqueStrategyQuery[];
/**

@@ -645,4 +654,6 @@ * SpinqueQueryService provides methods that take SpinqueQuery objects and transform them into

*/
SpinqueQueryService.prototype.getQuery = function (queryStack, endpoint) {
return queryStack.find(function (e) { return e.endpoint === endpoint; });
SpinqueQueryService.prototype.getQuery = function (queryStack, endpointOrCommit) {
return queryStack.find(function (e) {
return 'endpoint' in e && e.endpoint === endpointOrCommit || 'commit' in e && e.commit === endpointOrCommit;
});
};

@@ -667,12 +678,13 @@ /**

*/
SpinqueQueryService.prototype.updateQuery = function (queryStack, endpoint, parameters) {
SpinqueQueryService.prototype.updateQuery = function (queryStack, endpointOrCommit, parameters) {
if (parameters === void 0) { parameters = {}; }
return immer.produce(queryStack, function (draftStack) {
var query = { endpoint: endpoint, parameters: parameters };
var index = queryStack.findIndex(function (e) { return e.endpoint === endpoint; });
var index = queryStack.findIndex(function (e) {
return 'endpoint' in e && e.endpoint === endpointOrCommit || 'commit' in e && e.commit === endpointOrCommit;
});
if (index >= 0) {
draftStack[index] = query;
draftStack[index] = Object.assign(Object.assign({}, queryStack[index]), { parameters: parameters });
}
else {
draftStack.push(query);
draftStack.push(Object.assign(Object.assign({}, queryStack[index]), { parameters: parameters }));
}

@@ -684,5 +696,7 @@ });

*/
SpinqueQueryService.prototype.removeQuery = function (queryStack, endpoint) {
SpinqueQueryService.prototype.removeQuery = function (queryStack, endpointOrCommit) {
return immer.produce(queryStack, function (draftStack) {
var index = queryStack.findIndex(function (e) { return e.endpoint === endpoint; });
var index = queryStack.findIndex(function (e) {
return 'endpoint' in e && e.endpoint === endpointOrCommit || 'commit' in e && e.commit === endpointOrCommit;
});
if (index >= 0) {

@@ -713,6 +727,8 @@ draftStack = draftStack.splice(index, 1);

*/
SpinqueQueryService.prototype.setParameter = function (queryStack, paramName, value, endpoint) {
SpinqueQueryService.prototype.setParameter = function (queryStack, paramName, value, endpointOrCommit) {
var endpointIndex = queryStack.length - 1;
if (!!endpoint) {
endpointIndex = queryStack.findIndex(function (e) { return e.endpoint === endpoint; });
if (!!endpointOrCommit) {
endpointIndex = queryStack.findIndex(function (e) {
return 'endpoint' in e && e.endpoint === endpointOrCommit || 'commit' in e && e.commit === endpointOrCommit;
});
}

@@ -719,0 +735,0 @@ return immer.produce(queryStack, function (draftStack) {

import { AfterViewInit, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
import * as d3 from 'd3';
import { SpinqueQuery, SpinqueRestService, SpinqueResultItem } from 'spinque-angular-ui';
import { SpinqueQueryStack, SpinqueRestService, SpinqueResultItem } from 'spinque-angular-ui';
import * as i0 from "@angular/core";

@@ -11,4 +11,4 @@ export interface DateCount {

private rest;
dataQuery: SpinqueQuery[];
eventsQuery: SpinqueQuery[];
dataQuery: SpinqueQueryStack;
eventsQuery: SpinqueQueryStack;
count: number;

@@ -15,0 +15,0 @@ startDate?: Date;

@@ -289,2 +289,2 @@ import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';

}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1ncmFwaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvZGF0ZS1ncmFwaC9zcmMvZGF0ZS1ncmFwaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvZGF0ZS1ncmFwaC9zcmMvZGF0ZS1ncmFwaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ1UsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsU0FBUyxFQUN6RyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQXlCMUMsTUFBTSxPQUFPLHlCQUF5QjtJQTRDcEMsWUFBb0IsSUFBd0I7UUFBeEIsU0FBSSxHQUFKLElBQUksQ0FBb0I7UUF6Q25DLFVBQUssR0FBRyxJQUFJLENBQUM7UUFHYixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUM3QiwyQkFBMkI7UUFDakIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUIsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUE4QyxDQUFDO1FBTWxGLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsV0FBTSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDOUMsY0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxD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QkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFFYSxZQUFZO3NCQUEvQixTQUFTO3VCQUFDLE9BQU87Z0JBeUJULFdBQVc7c0JBQW5CLEtBQUs7Z0JBZ1FOLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFNwaW5xdWVRdWVyeSwgU3BpbnF1ZVJlc3RTZXJ2aWNlLCBTcGlucXVlUmVzdWx0SXRlbSB9IGZyb20gJ3NwaW5xdWUtYW5ndWxhci11aSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZUNvdW50IHtcbiAgZGF0ZTogRGF0ZSB8IG51bGw7XG4gIGNvdW50OiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwaW5xdWUtZGF0ZS1ncmFwaCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWdyYXBoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWluLWhlaWdodDogMTAwcHg7XG4gICAgICAgIG1pbi13aWR0aDogMTAwcHg7XG4gICAgICB9XG4gICAgICBkaXYge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNwaW5xdWVEYXRlR3JhcGhDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBkYXRhUXVlcnkhOiBTcGlucXVlUXVlcnlbXTtcbiAgQElucHV0KCkgZXZlbnRzUXVlcnkhOiBTcGlucXVlUXVlcnlbXTtcbiAgQElucHV0KCkgY291bnQgPSAxMDAwO1xuICBASW5wdXQoKSBzdGFydERhdGU/OiBEYXRlO1xuICBASW5wdXQoKSBlbmREYXRlPzogRGF0ZTtcbiAgQElucHV0KCkgaW50ZXJwb2xhdGUgPSBmYWxzZTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSB6b29tID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgbG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGRhdGFDb3VudDogbnVtYmVyOyBldmVudHNDb3VudDogbnVtYmVyIH0+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZ3JhcGgnKSBncmFwaEVsZW1lbnQhOiBhbnk7XG5cbiAgZGF0YSE6IERhdGVDb3VudFtdO1xuICBldmVudHMhOiBEYXRlQ291bnRbXTtcbiAgZ3JhcGhJbml0ID0gZmFsc2U7XG5cbiAgYmlzZWN0ID0gZDMuYmlzZWN0b3IoKGQ6IGFueSkgPT4gZC5kYXRlKS5sZWZ0O1xuICBwYXJzZURhdGUgPSBkMy50aW1lUGFyc2UoJyVZLSVtLSVkJyk7XG4gIGZvcm1hdERhdGUgPSBkMy50aW1lRm9ybWF0KCclWS0lbS0lZCcpO1xuXG4gIGQzbm9kZSE6IGFueTtcbiAgc3ZnITogZDMuU2VsZWN0aW9uPGFueSwgYW55LCBhbnksIGFueT47XG4gIHghOiBkMy5TY2FsZVRpbWU8bnVtYmVyLCBudW1iZXI+O1xuICB4dCE6IGQzLlNjYWxlVGltZTxudW1iZXIsIG51bWJlcj47XG4gIHkhOiBkMy5TY2FsZUxpbmVhcjxudW1iZXIsIG51bWJlcj47XG4gIG92ZXJsYXkhOiBkMy5TZWxlY3Rpb248YW55LCBhbnksIGFueSwgYW55PjtcbiAgY2hhcnQhOiBkMy5TZWxlY3Rpb248YW55LCBhbnksIGFueSwgYW55PjtcbiAgYXJlYSE6IGQzLkFyZWE8W251bWJlciwgbnVtYmVyXT47XG4gIGZvY3VzITogZDMuU2VsZWN0aW9uPGFueSwgYW55LCBhbnksIGFueT47XG4gIHZhbHVlbGluZSE6IGQzLkxpbmU8W251bWJlciwgbnVtYmVyXT47XG4gIGdYITogZDMuU2VsZWN0aW9uPGFueSwgYW55LCBhbnksIGFueT47XG4gIHhBeGlzITogZDMuQXhpczx7IHZhbHVlT2YoKTogbnVtYmVyIH0+O1xuICB5QXhpcyE6IGQzLkF4aXM8eyB2YWx1ZU9mKCk6IG51bWJlciB9PjtcbiAgbWFyZ2luID0geyB0b3A6IDYsIHJpZ2h0OiAxMCwgYm90dG9tOiAyMCwgbGVmdDogMCB9O1xuXG4gIEBJbnB1dCgpIGl0ZW1NYXBwaW5nOiAoaXRlbTogU3BpbnF1ZVJlc3VsdEl0ZW0pID0+IERhdGVDb3VudCA9IChpdGVtKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGU6IHRoaXMucGFyc2VEYXRlKGl0ZW0udHVwbGVbMF0pLFxuICAgICAgY291bnQ6IHBhcnNlRmxvYXQoYCR7aXRlbS5wcm9iYWJpbGl0eX1gKSxcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzdDogU3BpbnF1ZVJlc3RTZXJ2aWNlKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCByZXF1ZXN0cyA9IFtdO1xuXG4gICAgaWYgKGNoYW5nZXMuZGF0YVF1ZXJ5KSB7XG4gICAgICBjb25zdCBkYXRhUmVxdWVzdCA9IHRoaXMucmVzdC5nZXRSZXN1bHRzKHRoaXMuZGF0YVF1ZXJ5LCB7IGNvdW50OiB0aGlzLmNvdW50IH0pLnBpcGUoXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXRlbXMubWFwKHRoaXMuaXRlbU1hcHBpbmcpKSxcbiAgICAgICAgdGFwKChpdGVtcykgPT4ge1xuICAgICAgICAgIGxldCBkYXRhID0gaXRlbXMuc29ydCgoYSwgYikgPT4gKGEuZGF0ZSAmJiBiLmRhdGUgPyBhLmRhdGUudmFsdWVPZigpIC0gYi5kYXRlLnZhbHVlT2YoKSA6IDApKTtcbiAgICAgICAgICBpZiAoIXRoaXMuaW50ZXJwb2xhdGUpIHtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLmFkZE1pc3NpbmdEYXRlcyhkYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIHJlcXVlc3RzLnB1c2goZGF0YVJlcXVlc3QpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmV2ZW50c1F1ZXJ5KSB7XG4gICAgICBjb25zdCBldmVudHNSZXF1ZXN0ID0gdGhpcy5yZXN0LmdldFJlc3VsdHModGhpcy5ldmVudHNRdWVyeSwgeyBjb3VudDogdGhpcy5jb3VudCB9KS5waXBlKFxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4gcmVzdWx0Lml0ZW1zLm1hcCh0aGlzLml0ZW1NYXBwaW5nKSksXG4gICAgICAgIHRhcCgoaXRlbXMpID0+IHtcbiAgICAgICAgICB0aGlzLmV2ZW50cyA9IGl0ZW1zLnNvcnQoKGEsIGIpID0+IChhLmRhdGUgJiYgYi5kYXRlID8gYS5kYXRlLnZhbHVlT2YoKSAtIGIuZGF0ZS52YWx1ZU9mKCkgOiAwKSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgcmVxdWVzdHMucHVzaChldmVudHNSZXF1ZXN0KTtcbiAgICB9XG5cbiAgICBjb21iaW5lTGF0ZXN0KHJlcXVlc3RzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkZWQuZW1pdCh7IGRhdGFDb3VudDogdGhpcy5kYXRhID8gdGhpcy5kYXRhLmxlbmd0aCA6IDAsIGV2ZW50c0NvdW50OiAwIH0pO1xuICAgICAgdGhpcy51cGRhdGVHcmFwaCgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuZDNub2RlID0gdGhpcy5ncmFwaEVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5kM25vZGUub2Zmc2V0V2lkdGggLSB0aGlzLm1hcmdpbi5sZWZ0IC0gdGhpcy5tYXJnaW4ucmlnaHQ7XG4gICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5kM25vZGUub2Zmc2V0SGVpZ2h0IC0gdGhpcy5tYXJnaW4udG9wIC0gdGhpcy5tYXJnaW4uYm90dG9tO1xuXG4gICAgdGhpcy5zdmcgPSBkM1xuICAgICAgLnNlbGVjdCh0aGlzLmQzbm9kZSlcbiAgICAgIC5hcHBlbmQoJ3N2ZycpXG4gICAgICAuYXR0cignd2lkdGgnLCB3aWR0aCArIHRoaXMubWFyZ2luLmxlZnQgKyB0aGlzLm1hcmdpbi5yaWdodClcbiAgICAgIC5hdHRyKCdoZWlnaHQnLCBoZWlnaHQgKyB0aGlzLm1hcmdpbi50b3AgKyB0aGlzLm1hcmdpbi5ib3R0b20pO1xuXG4gICAgdGhpcy5jaGFydCA9IHRoaXMuc3ZnLmFwcGVuZCgnZycpLmF0dHIoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoJyArIHRoaXMubWFyZ2luLmxlZnQgKyAnLCcgKyB0aGlzLm1hcmdpbi50b3AgKyAnKScpO1xuXG4gICAgY29uc3QgZyA9IHRoaXMuc3ZnLmFwcGVuZCgnZycpLmF0dHIoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoJyArIHRoaXMubWFyZ2luLmxlZnQgKyAnLCcgKyB0aGlzLm1hcmdpbi50b3AgKyAnKScpO1xuXG4gICAgdGhpcy5mb2N1cyA9IGcuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCAnZm9jdXMnKTtcblxuICAgIHRoaXMuc3ZnXG4gICAgICAuYXBwZW5kKCdkZWZzJylcbiAgICAgIC5hcHBlbmQoJ2NsaXBQYXRoJylcbiAgICAgIC5hdHRyKCdpZCcsICdjbGlwJylcbiAgICAgIC5hcHBlbmQoJ3JlY3QnKVxuICAgICAgLmF0dHIoJ3dpZHRoJywgd2lkdGgpXG4gICAgICAuYXR0cignaGVpZ2h0JywgaGVpZ2h0KTtcblxuICAgIHRoaXMuZm9jdXNcbiAgICAgIC5hcHBlbmQoJ2xpbmUnKVxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ3gtaG92ZXItbGluZSBob3Zlci1saW5lJylcbiAgICAgIC5hdHRyKCd5MScsIDApXG4gICAgICAuYXR0cigneTInLCBoZWlnaHQpXG4gICAgICAuc3R5bGUoJ3N0cm9rZScsICcjZWVlJylcbiAgICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgJzFweCcpXG4gICAgICAuc3R5bGUoJ3N0cm9rZS1kYXNoYXJyYXknLCAnMSwxJyk7XG4gICAgdGhpcy5mb2N1c1xuICAgICAgLmFwcGVuZCgnY2lyY2xlJylcbiAgICAgIC5hdHRyKCdyJywgNSlcbiAgICAgIC5zdHlsZSgnZmlsbCcsICdyZ2JhKDI0MywgMTQ2LCAxNDYsIDAuNzc0KScpXG4gICAgICAuc3R5bGUoJ3N0cm9rZScsICdyZ2IoMTk3LCAxOCwgMTgpJylcbiAgICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgJzFweCcpO1xuXG4gICAgdGhpcy5mb2N1cy5hcHBlbmQoJ3RleHQnKS5hdHRyKCd4JywgNikuYXR0cigneScsIDEyKS5zdHlsZSgnZm9udC1zaXplJywgJzEycHgnKTtcblxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5vdmVybGF5ID0gZ1xuICAgICAgLmFwcGVuZCgncmVjdCcpXG4gICAgICAuYXR0cignY2xhc3MnLCAnb3ZlcmxheScpXG4gICAgICAuYXR0cignd2lkdGgnLCB3aWR0aClcbiAgICAgIC5hdHRyKCdoZWlnaHQnLCBoZWlnaHQpXG4gICAgICAuc3R5bGUoJ2ZpbGwnLCAnbm9uZScpXG4gICAgICAuc3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgJ2FsbCcpXG4gICAgICAub24oJ21vdXNlbW92ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgeDAgPSBzZWxmLnh0LmludmVydChkMy5tb3VzZSh0aGlzKVswXSk7XG4gICAgICAgIGNvbnN0IGQgPSBzZWxmLmRhdGFbc2VsZi5iaXNlY3Qoc2VsZi5kYXRhLCB4MCwgMSkgLSAxXTtcblxuICAgICAgICBpZiAoZCAmJiBkLmRhdGUgIT09IG51bGwpIHtcbiAgICAgICAgICBzZWxmLmZvY3VzLnNlbGVjdCgndGV4dCcpLnRleHQoYCR7ZC5jb3VudH0gKCR7c2VsZi5mb3JtYXREYXRlKGQuZGF0ZSl9KWApO1xuICAgICAgICAgIHNlbGYuZm9jdXMuYXR0cigndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZSgnICsgc2VsZi54dChkLmRhdGUpICsgJywnICsgMCArICcpJyk7XG4gICAgICAgICAgc2VsZi5mb2N1cy5zZWxlY3QoJ2NpcmNsZScpLmF0dHIoJ2N5Jywgc2VsZi55KGQuY291bnQpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBzZWxmLnh0LmludmVydChkMy5tb3VzZSh0aGlzKVswXSk7XG4gICAgICAgIHNlbGYuc2VsZWN0LmVtaXQoc2VsZi5mb3JtYXREYXRlKGRhdGUpKTtcbiAgICAgIH0pO1xuXG4gICAgbGV0IHpvb21UaW1lb3V0OiBhbnk7XG5cbiAgICAvLyBab29tIEZ1bmN0aW9uXG4gICAgY29uc3Qgem9vbSA9IGQzXG4gICAgICAuem9vbSgpXG4gICAgICAuc2NhbGVFeHRlbnQoWzEsIDEwMF0pXG4gICAgICAudHJhbnNsYXRlRXh0ZW50KFtcbiAgICAgICAgWzAsIDBdLFxuICAgICAgICBbd2lkdGgsIGhlaWdodF0sXG4gICAgICBdKVxuICAgICAgLmV4dGVudChbXG4gICAgICAgIFswLCAwXSxcbiAgICAgICAgW3dpZHRoLCBoZWlnaHRdLFxuICAgICAgXSlcbiAgICAgIC5vbignem9vbScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHpvb21UaW1lb3V0KTtcblxuICAgICAgICBjb25zdCB0ID0gZDMuZXZlbnQudHJhbnNmb3JtO1xuICAgICAgICBzZWxmLnh0ID0gdC5yZXNjYWxlWChzZWxmLngpO1xuXG4gICAgICAgIHNlbGYuY2hhcnQuc2VsZWN0KCcubGluZScpLmF0dHIoXG4gICAgICAgICAgJ2QnLFxuICAgICAgICAgIHNlbGYudmFsdWVsaW5lLngoKGQ6IGFueSkgPT4gc2VsZi54dChkLmRhdGUpKVxuICAgICAgICApO1xuICAgICAgICBzZWxmLmNoYXJ0LnNlbGVjdCgnLmFyZWEnKS5hdHRyKFxuICAgICAgICAgICdkJyxcbiAgICAgICAgICBzZWxmLmFyZWEueCgoZDogYW55KSA9PiBzZWxmLnh0KGQuZGF0ZSkpXG4gICAgICAgICk7XG4gICAgICAgIHNlbGYuY2hhcnRcbiAgICAgICAgICAuc2VsZWN0QWxsKCcuZXZlbnQnKVxuICAgICAgICAgIC5hdHRyKCd4JywgKGQ6IGFueSkgPT4gc2VsZi54KGQuZW5kKSAtIDEwKVxuICAgICAgICAgIC5hdHRyKCd3aWR0aCcsICgpID0+IDEwKTtcbiAgICAgICAgc2VsZi5nWC5jYWxsKHNlbGYueEF4aXMuc2NhbGUoc2VsZi54dCkpO1xuXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gc2VsZi54dC5pbnZlcnQoMCk7XG4gICAgICAgIGNvbnN0IGVuZCA9IHNlbGYueHQuaW52ZXJ0KHdpZHRoKTtcblxuICAgICAgICB6b29tVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHNlbGYuem9vbS5lbWl0KHsgc3RhcnQ6IHNlbGYuZm9ybWF0RGF0ZShzdGFydCksIGVuZDogc2VsZi5mb3JtYXREYXRlKGVuZCkgfSk7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuc3ZnLmNhbGwoem9vbSk7XG5cbiAgICB0aGlzLnggPSBkMy5zY2FsZVRpbWUoKS5yYW5nZShbMCwgd2lkdGhdKTtcbiAgICB0aGlzLnkgPSBkMy5zY2FsZUxpbmVhcigpLnJhbmdlKFtoZWlnaHQsIDBdKTtcblxuICAgIHRoaXMueEF4aXMgPSBkMy5heGlzQm90dG9tKHRoaXMueCk7XG4gICAgdGhpcy55QXhpcyA9IGQzLmF4aXNMZWZ0KHRoaXMueSk7XG5cbiAgICB0aGlzLmdYID0gdGhpcy5jaGFydC5hcHBlbmQoJ2cnKS5hdHRyKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKDAsJyArIGhlaWdodCArICcpJyk7XG5cbiAgICBzZWxmLnh0ID0gdGhpcy54O1xuXG4gICAgLy8gZGVmaW5lIHRoZSBhcmVhXG4gICAgdGhpcy5hcmVhID0gZDNcbiAgICAgIC5hcmVhKClcbiAgICAgIC54KChkOiBhbnkpID0+IGQuZGF0ZSlcbiAgICAgIC55MChoZWlnaHQpXG4gICAgICAueTEoKGQ6IGFueSkgPT4gdGhpcy55KGQuY291bnQpKTtcblxuICAgIC8vIGRlZmluZSB0aGUgbGluZVxuICAgIHRoaXMudmFsdWVsaW5lID0gZDNcbiAgICAgIC5saW5lKClcbiAgICAgIC54KChkOiBhbnkpID0+IHRoaXMueChkLmRhdGUpKVxuICAgICAgLnkoKGQ6IGFueSkgPT4gdGhpcy55KGQuY291bnQpKTtcblxuICAgIC8vIGxldCBsaW5lUGF0aCwgYXJlYVBhdGg7XG5cbiAgICB0aGlzLmdyYXBoSW5pdCA9IHRydWU7XG4gIH1cblxuICB1cGRhdGVHcmFwaCgpIHtcbiAgICAvLyBzY2FsZSB0aGUgcmFuZ2Ugb2YgdGhlIGRhdGFcbiAgICBjb25zdCB4RG9tYWluID0gZDMuZXh0ZW50KHRoaXMuZGF0YSwgKGQ6IERhdGVDb3VudCkgPT4gZC5kYXRlKSBhcyBbRGF0ZSwgRGF0ZV07XG4gICAgaWYgKHRoaXMuc3RhcnREYXRlICYmIHRoaXMuc3RhcnREYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4oK3RoaXMuc3RhcnREYXRlKSAmJiArdGhpcy5zdGFydERhdGUgPiAreERvbWFpblswXSkge1xuICAgICAgeERvbWFpblswXSA9IHRoaXMuc3RhcnREYXRlO1xuICAgIH1cbiAgICBpZiAodGhpcy5lbmREYXRlICYmIHRoaXMuZW5kRGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKCt0aGlzLmVuZERhdGUpICYmICt0aGlzLmVuZERhdGUgPCAreERvbWFpblsxXSkge1xuICAgICAgeERvbWFpblsxXSA9IHRoaXMuZW5kRGF0ZTtcbiAgICB9XG4gICAgdGhpcy54LmRvbWFpbih4RG9tYWluKTtcbiAgICB0aGlzLnkuZG9tYWluKFswLCBNYXRoLm1pbig1MDAsIE1hdGgubWF4KC4uLnRoaXMuZGF0YS5tYXAoKGQpID0+IGQuY291bnQpKSldKTtcblxuICAgIC8vIGFkZCB0aGUgYXJlYVxuICAgIGNvbnN0IGFyZWFQYXRoID0gdGhpcy5jaGFydC5zZWxlY3RBbGwoJy5hcmVhJykuZGF0YShbdGhpcy5kYXRhXSk7XG4gICAgYXJlYVBhdGhcbiAgICAgIC5lbnRlcigpXG4gICAgICAuYXBwZW5kKCdwYXRoJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdhcmVhJylcbiAgICAgIC5hdHRyKCdkJywgdGhpcy5hcmVhIGFzIGFueSlcbiAgICAgIC5zdHlsZSgnZmlsbCcsICdyZ2JhKDI0MywgMTQ2LCAxNDYsIDAuNzc0KScpXG4gICAgICAuc3R5bGUoJ2NsaXAtcGF0aCcsICd1cmwoI2NsaXApJyk7XG4gICAgYXJlYVBhdGhcbiAgICAgIC50cmFuc2l0aW9uKClcbiAgICAgIC5kdXJhdGlvbig1MDApXG4gICAgICAuYXR0cignZCcsIHRoaXMuYXJlYSBhcyBhbnkpO1xuXG4gICAgdGhpcy5jaGFydC5zZWxlY3QoJy5hcmVhJykuYXR0cihcbiAgICAgICdkJyxcbiAgICAgIHRoaXMuYXJlYS54KChkOiBhbnkpID0+IHRoaXMueHQoZC5kYXRlKSlcbiAgICApO1xuXG4gICAgLy8gYWRkIHRoZSB2YWx1ZWxpbmUgcGF0aC5cbiAgICBjb25zdCBsaW5lUGF0aCA9IHRoaXMuY2hhcnQuc2VsZWN0QWxsKCcubGluZScpLmRhdGEoW3RoaXMuZGF0YV0pO1xuICAgIGxpbmVQYXRoXG4gICAgICAuZW50ZXIoKVxuICAgICAgLmFwcGVuZCgncGF0aCcpXG4gICAgICAuYXR0cignY2xhc3MnLCAnbGluZScpXG4gICAgICAuYXR0cignZCcsIHRoaXMudmFsdWVsaW5lIGFzIGFueSlcbiAgICAgIC5zdHlsZSgnZmlsbCcsICdub25lJylcbiAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJ3JnYigxOTcsIDE4LCAxOCknKVxuICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAnMXB4JylcbiAgICAgIC5zdHlsZSgnY2xpcC1wYXRoJywgJ3VybCgjY2xpcCknKTtcbiAgICBsaW5lUGF0aFxuICAgICAgLnRyYW5zaXRpb24oKVxuICAgICAgLmR1cmF0aW9uKDUwMClcbiAgICAgIC5hdHRyKCdkJywgdGhpcy52YWx1ZWxpbmUgYXMgYW55KTtcblxuICAgIHRoaXMuZ1guY2FsbCh0aGlzLnhBeGlzKTtcblxuICAgIC8vIEZPUiBFVkVOVFNcblxuICAgIC8vIGRhdGEuZm9yRWFjaChmdW5jdGlvbihkKSB7XG4gICAgLy8gICBkLnN0YXJ0ID0gcGFyc2VEYXRlKGQuc3RhcnQpO1xuICAgIC8vICAgZC5lbmQgPSBwYXJzZURhdGUoZC5lbmQpO1xuICAgIC8vIH0pO1xuXG4gICAgLy8gLy8gYWRkIHRoZSB2YWx1ZWxpbmUgcGF0aC5cbiAgICAvLyBldmVudCA9IGNoYXJ0LnNlbGVjdEFsbChcIi5ldmVudFwiKVxuICAgIC8vICAgLmRhdGEoZGF0YSk7XG5cbiAgICAvLyBldmVudC5lbnRlcigpLmFwcGVuZChcInJlY3RcIilcbiAgICAvLyAgIC5hdHRyKFwiY2xhc3NcIiwgXCJldmVudFwiKVxuICAgIC8vICAgLmF0dHIoXCJ4XCIsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHgoZC5lbmQpLTEwOyB9KVxuICAgIC8vICAgLmF0dHIoXCJ3aWR0aFwiLCBmdW5jdGlvbihkKSB7IHJldHVybiAxMDsgfSlcbiAgICAvLyAgIC5hdHRyKFwieVwiLCBoZWlnaHQtMTApXG4gICAgLy8gICAuYXR0cihcImhlaWdodFwiLCAxMCk7XG5cbiAgICAvLyBldmVudC50cmFuc2l0aW9uKClcbiAgICAvLyAgIC5kdXJhdGlvbig1MDApXG4gICAgLy8gICAuYXR0cihcInhcIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4geChkLmVuZCktMTA7IH0pXG4gICAgLy8gICAuYXR0cihcIndpZHRoXCIsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIDEwOyB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICBvblJlc2l6ZSgpIHtcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMuZDNub2RlLm9mZnNldFdpZHRoIC0gdGhpcy5tYXJnaW4ubGVmdCAtIHRoaXMubWFyZ2luLnJpZ2h0O1xuICAgIHRoaXMuc3ZnLmF0dHIoJ3dpZHRoJywgd2lkdGggKyB0aGlzLm1hcmdpbi5sZWZ0ICsgdGhpcy5tYXJnaW4ucmlnaHQpO1xuICAgIHRoaXMub3ZlcmxheS5hdHRyKCd3aWR0aCcsIHdpZHRoKTtcbiAgICB0aGlzLngucmFuZ2UoWzAsIHdpZHRoXSk7XG4gICAgdGhpcy51cGRhdGVHcmFwaCgpO1xuICB9XG5cbiAgYWRkTWlzc2luZ0RhdGVzKGRhdGE6IERhdGVDb3VudFtdKSB7XG4gICAgY29uc3QgZGF5ID0gMTAwMCAqIDYwICogNjAgKiAyNDtcbiAgICBjb25zdCBtaXNzaW5nRGF0ZXMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGNvbnN0IGRhdGUxID0gZGF0YVtpXS5kYXRlO1xuICAgICAgY29uc3QgZGF0ZTIgPSBkYXRhW2kgKyAxXS5kYXRlO1xuXG4gICAgICBpZiAoZGF0ZTEgIT09IG51bGwgJiYgZGF0ZTIgIT09IG51bGwpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDE7IGogPD0gTWF0aC5mbG9vcihNYXRoLmFicygrZGF0ZTEgLSArZGF0ZTIpIC8gZGF5KTsgaisrKSB7XG4gICAgICAgICAgbWlzc2luZ0RhdGVzLnB1c2gobmV3IERhdGUoK2RhdGUxICsgaiAqIGRheSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZGF0YSA9IGRhdGEuY29uY2F0KG1pc3NpbmdEYXRlcy5tYXAoKGRhdGUpID0+ICh7IGRhdGUsIGNvdW50OiAwIH0pKSk7XG4gICAgZGF0YSA9IGRhdGEuc29ydCgoYSwgYikgPT4gKGEuZGF0ZSAmJiBiLmRhdGUgPyBhLmRhdGUudmFsdWVPZigpIC0gYi5kYXRlLnZhbHVlT2YoKSA6IDApKTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCI8ZGl2ICNncmFwaD48L2Rpdj4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1ncmFwaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvZGF0ZS1ncmFwaC9zcmMvZGF0ZS1ncmFwaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvZGF0ZS1ncmFwaC9zcmMvZGF0ZS1ncmFwaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ1UsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsU0FBUyxFQUN6RyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQXlCMUMsTUFBTSxPQUFPLHlCQUF5QjtJQTRDcEMsWUFBb0IsSUFBd0I7UUFBeEIsU0FBSSxHQUFKLElBQUksQ0FBb0I7UUF6Q25DLFVBQUssR0FBRyxJQUFJLENBQUM7UUFHYixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUM3QiwyQkFBMkI7UUFDakIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUIsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUE4QyxDQUFDO1FBTWxGLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsV0FBTSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDOUMsY0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxD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QkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFFYSxZQUFZO3NCQUEvQixTQUFTO3VCQUFDLE9BQU87Z0JBeUJULFdBQVc7c0JBQW5CLEtBQUs7Z0JBZ1FOLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFNwaW5xdWVRdWVyeSwgU3BpbnF1ZVF1ZXJ5U3RhY2ssIFNwaW5xdWVSZXN0U2VydmljZSwgU3BpbnF1ZVJlc3VsdEl0ZW0gfSBmcm9tICdzcGlucXVlLWFuZ3VsYXItdWknO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVDb3VudCB7XG4gIGRhdGU6IERhdGUgfCBudWxsO1xuICBjb3VudDogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcGlucXVlLWRhdGUtZ3JhcGgnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1ncmFwaC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDEwMHB4O1xuICAgICAgICBtaW4td2lkdGg6IDEwMHB4O1xuICAgICAgfVxuICAgICAgZGl2IHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTcGlucXVlRGF0ZUdyYXBoQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgZGF0YVF1ZXJ5ITogU3BpbnF1ZVF1ZXJ5U3RhY2s7XG4gIEBJbnB1dCgpIGV2ZW50c1F1ZXJ5ITogU3BpbnF1ZVF1ZXJ5U3RhY2s7XG4gIEBJbnB1dCgpIGNvdW50ID0gMTAwMDtcbiAgQElucHV0KCkgc3RhcnREYXRlPzogRGF0ZTtcbiAgQElucHV0KCkgZW5kRGF0ZT86IERhdGU7XG4gIEBJbnB1dCgpIGludGVycG9sYXRlID0gZmFsc2U7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICBAT3V0cHV0KCkgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgem9vbSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBkYXRhQ291bnQ6IG51bWJlcjsgZXZlbnRzQ291bnQ6IG51bWJlciB9PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2dyYXBoJykgZ3JhcGhFbGVtZW50ITogYW55O1xuXG4gIGRhdGEhOiBEYXRlQ291bnRbXTtcbiAgZXZlbnRzITogRGF0ZUNvdW50W107XG4gIGdyYXBoSW5pdCA9IGZhbHNlO1xuXG4gIGJpc2VjdCA9IGQzLmJpc2VjdG9yKChkOiBhbnkpID0+IGQuZGF0ZSkubGVmdDtcbiAgcGFyc2VEYXRlID0gZDMudGltZVBhcnNlKCclWS0lbS0lZCcpO1xuICBmb3JtYXREYXRlID0gZDMudGltZUZvcm1hdCgnJVktJW0tJWQnKTtcblxuICBkM25vZGUhOiBhbnk7XG4gIHN2ZyE6IGQzLlNlbGVjdGlvbjxhbnksIGFueSwgYW55LCBhbnk+O1xuICB4ITogZDMuU2NhbGVUaW1lPG51bWJlciwgbnVtYmVyPjtcbiAgeHQhOiBkMy5TY2FsZVRpbWU8bnVtYmVyLCBudW1iZXI+O1xuICB5ITogZDMuU2NhbGVMaW5lYXI8bnVtYmVyLCBudW1iZXI+O1xuICBvdmVybGF5ITogZDMuU2VsZWN0aW9uPGFueSwgYW55LCBhbnksIGFueT47XG4gIGNoYXJ0ITogZDMuU2VsZWN0aW9uPGFueSwgYW55LCBhbnksIGFueT47XG4gIGFyZWEhOiBkMy5BcmVhPFtudW1iZXIsIG51bWJlcl0+O1xuICBmb2N1cyE6IGQzLlNlbGVjdGlvbjxhbnksIGFueSwgYW55LCBhbnk+O1xuICB2YWx1ZWxpbmUhOiBkMy5MaW5lPFtudW1iZXIsIG51bWJlcl0+O1xuICBnWCE6IGQzLlNlbGVjdGlvbjxhbnksIGFueSwgYW55LCBhbnk+O1xuICB4QXhpcyE6IGQzLkF4aXM8eyB2YWx1ZU9mKCk6IG51bWJlciB9PjtcbiAgeUF4aXMhOiBkMy5BeGlzPHsgdmFsdWVPZigpOiBudW1iZXIgfT47XG4gIG1hcmdpbiA9IHsgdG9wOiA2LCByaWdodDogMTAsIGJvdHRvbTogMjAsIGxlZnQ6IDAgfTtcblxuICBASW5wdXQoKSBpdGVtTWFwcGluZzogKGl0ZW06IFNwaW5xdWVSZXN1bHRJdGVtKSA9PiBEYXRlQ291bnQgPSAoaXRlbSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRlOiB0aGlzLnBhcnNlRGF0ZShpdGVtLnR1cGxlWzBdKSxcbiAgICAgIGNvdW50OiBwYXJzZUZsb2F0KGAke2l0ZW0ucHJvYmFiaWxpdHl9YCksXG4gICAgfTtcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3Q6IFNwaW5xdWVSZXN0U2VydmljZSkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgcmVxdWVzdHMgPSBbXTtcblxuICAgIGlmIChjaGFuZ2VzLmRhdGFRdWVyeSkge1xuICAgICAgY29uc3QgZGF0YVJlcXVlc3QgPSB0aGlzLnJlc3QuZ2V0UmVzdWx0cyh0aGlzLmRhdGFRdWVyeSwgeyBjb3VudDogdGhpcy5jb3VudCB9KS5waXBlKFxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4gcmVzdWx0Lml0ZW1zLm1hcCh0aGlzLml0ZW1NYXBwaW5nKSksXG4gICAgICAgIHRhcCgoaXRlbXMpID0+IHtcbiAgICAgICAgICBsZXQgZGF0YSA9IGl0ZW1zLnNvcnQoKGEsIGIpID0+IChhLmRhdGUgJiYgYi5kYXRlID8gYS5kYXRlLnZhbHVlT2YoKSAtIGIuZGF0ZS52YWx1ZU9mKCkgOiAwKSk7XG4gICAgICAgICAgaWYgKCF0aGlzLmludGVycG9sYXRlKSB7XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5hZGRNaXNzaW5nRGF0ZXMoZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgICByZXF1ZXN0cy5wdXNoKGRhdGFSZXF1ZXN0KTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5ldmVudHNRdWVyeSkge1xuICAgICAgY29uc3QgZXZlbnRzUmVxdWVzdCA9IHRoaXMucmVzdC5nZXRSZXN1bHRzKHRoaXMuZXZlbnRzUXVlcnksIHsgY291bnQ6IHRoaXMuY291bnQgfSkucGlwZShcbiAgICAgICAgbWFwKChyZXN1bHQpID0+IHJlc3VsdC5pdGVtcy5tYXAodGhpcy5pdGVtTWFwcGluZykpLFxuICAgICAgICB0YXAoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgdGhpcy5ldmVudHMgPSBpdGVtcy5zb3J0KChhLCBiKSA9PiAoYS5kYXRlICYmIGIuZGF0ZSA/IGEuZGF0ZS52YWx1ZU9mKCkgLSBiLmRhdGUudmFsdWVPZigpIDogMCkpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHJlcXVlc3RzLnB1c2goZXZlbnRzUmVxdWVzdCk7XG4gICAgfVxuXG4gICAgY29tYmluZUxhdGVzdChyZXF1ZXN0cykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubG9hZGVkLmVtaXQoeyBkYXRhQ291bnQ6IHRoaXMuZGF0YSA/IHRoaXMuZGF0YS5sZW5ndGggOiAwLCBldmVudHNDb3VudDogMCB9KTtcbiAgICAgIHRoaXMudXBkYXRlR3JhcGgoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmQzbm9kZSA9IHRoaXMuZ3JhcGhFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjb25zdCB3aWR0aCA9IHRoaXMuZDNub2RlLm9mZnNldFdpZHRoIC0gdGhpcy5tYXJnaW4ubGVmdCAtIHRoaXMubWFyZ2luLnJpZ2h0O1xuICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuZDNub2RlLm9mZnNldEhlaWdodCAtIHRoaXMubWFyZ2luLnRvcCAtIHRoaXMubWFyZ2luLmJvdHRvbTtcblxuICAgIHRoaXMuc3ZnID0gZDNcbiAgICAgIC5zZWxlY3QodGhpcy5kM25vZGUpXG4gICAgICAuYXBwZW5kKCdzdmcnKVxuICAgICAgLmF0dHIoJ3dpZHRoJywgd2lkdGggKyB0aGlzLm1hcmdpbi5sZWZ0ICsgdGhpcy5tYXJnaW4ucmlnaHQpXG4gICAgICAuYXR0cignaGVpZ2h0JywgaGVpZ2h0ICsgdGhpcy5tYXJnaW4udG9wICsgdGhpcy5tYXJnaW4uYm90dG9tKTtcblxuICAgIHRoaXMuY2hhcnQgPSB0aGlzLnN2Zy5hcHBlbmQoJ2cnKS5hdHRyKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKCcgKyB0aGlzLm1hcmdpbi5sZWZ0ICsgJywnICsgdGhpcy5tYXJnaW4udG9wICsgJyknKTtcblxuICAgIGNvbnN0IGcgPSB0aGlzLnN2Zy5hcHBlbmQoJ2cnKS5hdHRyKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKCcgKyB0aGlzLm1hcmdpbi5sZWZ0ICsgJywnICsgdGhpcy5tYXJnaW4udG9wICsgJyknKTtcblxuICAgIHRoaXMuZm9jdXMgPSBnLmFwcGVuZCgnZycpLmF0dHIoJ2NsYXNzJywgJ2ZvY3VzJyk7XG5cbiAgICB0aGlzLnN2Z1xuICAgICAgLmFwcGVuZCgnZGVmcycpXG4gICAgICAuYXBwZW5kKCdjbGlwUGF0aCcpXG4gICAgICAuYXR0cignaWQnLCAnY2xpcCcpXG4gICAgICAuYXBwZW5kKCdyZWN0JylcbiAgICAgIC5hdHRyKCd3aWR0aCcsIHdpZHRoKVxuICAgICAgLmF0dHIoJ2hlaWdodCcsIGhlaWdodCk7XG5cbiAgICB0aGlzLmZvY3VzXG4gICAgICAuYXBwZW5kKCdsaW5lJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICd4LWhvdmVyLWxpbmUgaG92ZXItbGluZScpXG4gICAgICAuYXR0cigneTEnLCAwKVxuICAgICAgLmF0dHIoJ3kyJywgaGVpZ2h0KVxuICAgICAgLnN0eWxlKCdzdHJva2UnLCAnI2VlZScpXG4gICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsICcxcHgnKVxuICAgICAgLnN0eWxlKCdzdHJva2UtZGFzaGFycmF5JywgJzEsMScpO1xuICAgIHRoaXMuZm9jdXNcbiAgICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgICAuYXR0cigncicsIDUpXG4gICAgICAuc3R5bGUoJ2ZpbGwnLCAncmdiYSgyNDMsIDE0NiwgMTQ2LCAwLjc3NCknKVxuICAgICAgLnN0eWxlKCdzdHJva2UnLCAncmdiKDE5NywgMTgsIDE4KScpXG4gICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsICcxcHgnKTtcblxuICAgIHRoaXMuZm9jdXMuYXBwZW5kKCd0ZXh0JykuYXR0cigneCcsIDYpLmF0dHIoJ3knLCAxMikuc3R5bGUoJ2ZvbnQtc2l6ZScsICcxMnB4Jyk7XG5cbiAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgIHRoaXMub3ZlcmxheSA9IGdcbiAgICAgIC5hcHBlbmQoJ3JlY3QnKVxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ292ZXJsYXknKVxuICAgICAgLmF0dHIoJ3dpZHRoJywgd2lkdGgpXG4gICAgICAuYXR0cignaGVpZ2h0JywgaGVpZ2h0KVxuICAgICAgLnN0eWxlKCdmaWxsJywgJ25vbmUnKVxuICAgICAgLnN0eWxlKCdwb2ludGVyLWV2ZW50cycsICdhbGwnKVxuICAgICAgLm9uKCdtb3VzZW1vdmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHgwID0gc2VsZi54dC5pbnZlcnQoZDMubW91c2UodGhpcylbMF0pO1xuICAgICAgICBjb25zdCBkID0gc2VsZi5kYXRhW3NlbGYuYmlzZWN0KHNlbGYuZGF0YSwgeDAsIDEpIC0gMV07XG5cbiAgICAgICAgaWYgKGQgJiYgZC5kYXRlICE9PSBudWxsKSB7XG4gICAgICAgICAgc2VsZi5mb2N1cy5zZWxlY3QoJ3RleHQnKS50ZXh0KGAke2QuY291bnR9ICgke3NlbGYuZm9ybWF0RGF0ZShkLmRhdGUpfSlgKTtcbiAgICAgICAgICBzZWxmLmZvY3VzLmF0dHIoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoJyArIHNlbGYueHQoZC5kYXRlKSArICcsJyArIDAgKyAnKScpO1xuICAgICAgICAgIHNlbGYuZm9jdXMuc2VsZWN0KCdjaXJjbGUnKS5hdHRyKCdjeScsIHNlbGYueShkLmNvdW50KSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBkYXRlID0gc2VsZi54dC5pbnZlcnQoZDMubW91c2UodGhpcylbMF0pO1xuICAgICAgICBzZWxmLnNlbGVjdC5lbWl0KHNlbGYuZm9ybWF0RGF0ZShkYXRlKSk7XG4gICAgICB9KTtcblxuICAgIGxldCB6b29tVGltZW91dDogYW55O1xuXG4gICAgLy8gWm9vbSBGdW5jdGlvblxuICAgIGNvbnN0IHpvb20gPSBkM1xuICAgICAgLnpvb20oKVxuICAgICAgLnNjYWxlRXh0ZW50KFsxLCAxMDBdKVxuICAgICAgLnRyYW5zbGF0ZUV4dGVudChbXG4gICAgICAgIFswLCAwXSxcbiAgICAgICAgW3dpZHRoLCBoZWlnaHRdLFxuICAgICAgXSlcbiAgICAgIC5leHRlbnQoW1xuICAgICAgICBbMCwgMF0sXG4gICAgICAgIFt3aWR0aCwgaGVpZ2h0XSxcbiAgICAgIF0pXG4gICAgICAub24oJ3pvb20nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh6b29tVGltZW91dCk7XG5cbiAgICAgICAgY29uc3QgdCA9IGQzLmV2ZW50LnRyYW5zZm9ybTtcbiAgICAgICAgc2VsZi54dCA9IHQucmVzY2FsZVgoc2VsZi54KTtcblxuICAgICAgICBzZWxmLmNoYXJ0LnNlbGVjdCgnLmxpbmUnKS5hdHRyKFxuICAgICAgICAgICdkJyxcbiAgICAgICAgICBzZWxmLnZhbHVlbGluZS54KChkOiBhbnkpID0+IHNlbGYueHQoZC5kYXRlKSlcbiAgICAgICAgKTtcbiAgICAgICAgc2VsZi5jaGFydC5zZWxlY3QoJy5hcmVhJykuYXR0cihcbiAgICAgICAgICAnZCcsXG4gICAgICAgICAgc2VsZi5hcmVhLngoKGQ6IGFueSkgPT4gc2VsZi54dChkLmRhdGUpKVxuICAgICAgICApO1xuICAgICAgICBzZWxmLmNoYXJ0XG4gICAgICAgICAgLnNlbGVjdEFsbCgnLmV2ZW50JylcbiAgICAgICAgICAuYXR0cigneCcsIChkOiBhbnkpID0+IHNlbGYueChkLmVuZCkgLSAxMClcbiAgICAgICAgICAuYXR0cignd2lkdGgnLCAoKSA9PiAxMCk7XG4gICAgICAgIHNlbGYuZ1guY2FsbChzZWxmLnhBeGlzLnNjYWxlKHNlbGYueHQpKTtcblxuICAgICAgICBjb25zdCBzdGFydCA9IHNlbGYueHQuaW52ZXJ0KDApO1xuICAgICAgICBjb25zdCBlbmQgPSBzZWxmLnh0LmludmVydCh3aWR0aCk7XG5cbiAgICAgICAgem9vbVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBzZWxmLnpvb20uZW1pdCh7IHN0YXJ0OiBzZWxmLmZvcm1hdERhdGUoc3RhcnQpLCBlbmQ6IHNlbGYuZm9ybWF0RGF0ZShlbmQpIH0pO1xuICAgICAgICB9LCA1MDApO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnN2Zy5jYWxsKHpvb20pO1xuXG4gICAgdGhpcy54ID0gZDMuc2NhbGVUaW1lKCkucmFuZ2UoWzAsIHdpZHRoXSk7XG4gICAgdGhpcy55ID0gZDMuc2NhbGVMaW5lYXIoKS5yYW5nZShbaGVpZ2h0LCAwXSk7XG5cbiAgICB0aGlzLnhBeGlzID0gZDMuYXhpc0JvdHRvbSh0aGlzLngpO1xuICAgIHRoaXMueUF4aXMgPSBkMy5heGlzTGVmdCh0aGlzLnkpO1xuXG4gICAgdGhpcy5nWCA9IHRoaXMuY2hhcnQuYXBwZW5kKCdnJykuYXR0cigndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZSgwLCcgKyBoZWlnaHQgKyAnKScpO1xuXG4gICAgc2VsZi54dCA9IHRoaXMueDtcblxuICAgIC8vIGRlZmluZSB0aGUgYXJlYVxuICAgIHRoaXMuYXJlYSA9IGQzXG4gICAgICAuYXJlYSgpXG4gICAgICAueCgoZDogYW55KSA9PiBkLmRhdGUpXG4gICAgICAueTAoaGVpZ2h0KVxuICAgICAgLnkxKChkOiBhbnkpID0+IHRoaXMueShkLmNvdW50KSk7XG5cbiAgICAvLyBkZWZpbmUgdGhlIGxpbmVcbiAgICB0aGlzLnZhbHVlbGluZSA9IGQzXG4gICAgICAubGluZSgpXG4gICAgICAueCgoZDogYW55KSA9PiB0aGlzLngoZC5kYXRlKSlcbiAgICAgIC55KChkOiBhbnkpID0+IHRoaXMueShkLmNvdW50KSk7XG5cbiAgICAvLyBsZXQgbGluZVBhdGgsIGFyZWFQYXRoO1xuXG4gICAgdGhpcy5ncmFwaEluaXQgPSB0cnVlO1xuICB9XG5cbiAgdXBkYXRlR3JhcGgoKSB7XG4gICAgLy8gc2NhbGUgdGhlIHJhbmdlIG9mIHRoZSBkYXRhXG4gICAgY29uc3QgeERvbWFpbiA9IGQzLmV4dGVudCh0aGlzLmRhdGEsIChkOiBEYXRlQ291bnQpID0+IGQuZGF0ZSkgYXMgW0RhdGUsIERhdGVdO1xuICAgIGlmICh0aGlzLnN0YXJ0RGF0ZSAmJiB0aGlzLnN0YXJ0RGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKCt0aGlzLnN0YXJ0RGF0ZSkgJiYgK3RoaXMuc3RhcnREYXRlID4gK3hEb21haW5bMF0pIHtcbiAgICAgIHhEb21haW5bMF0gPSB0aGlzLnN0YXJ0RGF0ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZW5kRGF0ZSAmJiB0aGlzLmVuZERhdGUgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTigrdGhpcy5lbmREYXRlKSAmJiArdGhpcy5lbmREYXRlIDwgK3hEb21haW5bMV0pIHtcbiAgICAgIHhEb21haW5bMV0gPSB0aGlzLmVuZERhdGU7XG4gICAgfVxuICAgIHRoaXMueC5kb21haW4oeERvbWFpbik7XG4gICAgdGhpcy55LmRvbWFpbihbMCwgTWF0aC5taW4oNTAwLCBNYXRoLm1heCguLi50aGlzLmRhdGEubWFwKChkKSA9PiBkLmNvdW50KSkpXSk7XG5cbiAgICAvLyBhZGQgdGhlIGFyZWFcbiAgICBjb25zdCBhcmVhUGF0aCA9IHRoaXMuY2hhcnQuc2VsZWN0QWxsKCcuYXJlYScpLmRhdGEoW3RoaXMuZGF0YV0pO1xuICAgIGFyZWFQYXRoXG4gICAgICAuZW50ZXIoKVxuICAgICAgLmFwcGVuZCgncGF0aCcpXG4gICAgICAuYXR0cignY2xhc3MnLCAnYXJlYScpXG4gICAgICAuYXR0cignZCcsIHRoaXMuYXJlYSBhcyBhbnkpXG4gICAgICAuc3R5bGUoJ2ZpbGwnLCAncmdiYSgyNDMsIDE0NiwgMTQ2LCAwLjc3NCknKVxuICAgICAgLnN0eWxlKCdjbGlwLXBhdGgnLCAndXJsKCNjbGlwKScpO1xuICAgIGFyZWFQYXRoXG4gICAgICAudHJhbnNpdGlvbigpXG4gICAgICAuZHVyYXRpb24oNTAwKVxuICAgICAgLmF0dHIoJ2QnLCB0aGlzLmFyZWEgYXMgYW55KTtcblxuICAgIHRoaXMuY2hhcnQuc2VsZWN0KCcuYXJlYScpLmF0dHIoXG4gICAgICAnZCcsXG4gICAgICB0aGlzLmFyZWEueCgoZDogYW55KSA9PiB0aGlzLnh0KGQuZGF0ZSkpXG4gICAgKTtcblxuICAgIC8vIGFkZCB0aGUgdmFsdWVsaW5lIHBhdGguXG4gICAgY29uc3QgbGluZVBhdGggPSB0aGlzLmNoYXJ0LnNlbGVjdEFsbCgnLmxpbmUnKS5kYXRhKFt0aGlzLmRhdGFdKTtcbiAgICBsaW5lUGF0aFxuICAgICAgLmVudGVyKClcbiAgICAgIC5hcHBlbmQoJ3BhdGgnKVxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ2xpbmUnKVxuICAgICAgLmF0dHIoJ2QnLCB0aGlzLnZhbHVlbGluZSBhcyBhbnkpXG4gICAgICAuc3R5bGUoJ2ZpbGwnLCAnbm9uZScpXG4gICAgICAuc3R5bGUoJ3N0cm9rZScsICdyZ2IoMTk3LCAxOCwgMTgpJylcbiAgICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgJzFweCcpXG4gICAgICAuc3R5bGUoJ2NsaXAtcGF0aCcsICd1cmwoI2NsaXApJyk7XG4gICAgbGluZVBhdGhcbiAgICAgIC50cmFuc2l0aW9uKClcbiAgICAgIC5kdXJhdGlvbig1MDApXG4gICAgICAuYXR0cignZCcsIHRoaXMudmFsdWVsaW5lIGFzIGFueSk7XG5cbiAgICB0aGlzLmdYLmNhbGwodGhpcy54QXhpcyk7XG5cbiAgICAvLyBGT1IgRVZFTlRTXG5cbiAgICAvLyBkYXRhLmZvckVhY2goZnVuY3Rpb24oZCkge1xuICAgIC8vICAgZC5zdGFydCA9IHBhcnNlRGF0ZShkLnN0YXJ0KTtcbiAgICAvLyAgIGQuZW5kID0gcGFyc2VEYXRlKGQuZW5kKTtcbiAgICAvLyB9KTtcblxuICAgIC8vIC8vIGFkZCB0aGUgdmFsdWVsaW5lIHBhdGguXG4gICAgLy8gZXZlbnQgPSBjaGFydC5zZWxlY3RBbGwoXCIuZXZlbnRcIilcbiAgICAvLyAgIC5kYXRhKGRhdGEpO1xuXG4gICAgLy8gZXZlbnQuZW50ZXIoKS5hcHBlbmQoXCJyZWN0XCIpXG4gICAgLy8gICAuYXR0cihcImNsYXNzXCIsIFwiZXZlbnRcIilcbiAgICAvLyAgIC5hdHRyKFwieFwiLCBmdW5jdGlvbihkKSB7IHJldHVybiB4KGQuZW5kKS0xMDsgfSlcbiAgICAvLyAgIC5hdHRyKFwid2lkdGhcIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gMTA7IH0pXG4gICAgLy8gICAuYXR0cihcInlcIiwgaGVpZ2h0LTEwKVxuICAgIC8vICAgLmF0dHIoXCJoZWlnaHRcIiwgMTApO1xuXG4gICAgLy8gZXZlbnQudHJhbnNpdGlvbigpXG4gICAgLy8gICAuZHVyYXRpb24oNTAwKVxuICAgIC8vICAgLmF0dHIoXCJ4XCIsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHgoZC5lbmQpLTEwOyB9KVxuICAgIC8vICAgLmF0dHIoXCJ3aWR0aFwiLCBmdW5jdGlvbihkKSB7IHJldHVybiAxMDsgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgb25SZXNpemUoKSB7XG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLmQzbm9kZS5vZmZzZXRXaWR0aCAtIHRoaXMubWFyZ2luLmxlZnQgLSB0aGlzLm1hcmdpbi5yaWdodDtcbiAgICB0aGlzLnN2Zy5hdHRyKCd3aWR0aCcsIHdpZHRoICsgdGhpcy5tYXJnaW4ubGVmdCArIHRoaXMubWFyZ2luLnJpZ2h0KTtcbiAgICB0aGlzLm92ZXJsYXkuYXR0cignd2lkdGgnLCB3aWR0aCk7XG4gICAgdGhpcy54LnJhbmdlKFswLCB3aWR0aF0pO1xuICAgIHRoaXMudXBkYXRlR3JhcGgoKTtcbiAgfVxuXG4gIGFkZE1pc3NpbmdEYXRlcyhkYXRhOiBEYXRlQ291bnRbXSkge1xuICAgIGNvbnN0IGRheSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG4gICAgY29uc3QgbWlzc2luZ0RhdGVzID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBjb25zdCBkYXRlMSA9IGRhdGFbaV0uZGF0ZTtcbiAgICAgIGNvbnN0IGRhdGUyID0gZGF0YVtpICsgMV0uZGF0ZTtcblxuICAgICAgaWYgKGRhdGUxICE9PSBudWxsICYmIGRhdGUyICE9PSBudWxsKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAxOyBqIDw9IE1hdGguZmxvb3IoTWF0aC5hYnMoK2RhdGUxIC0gK2RhdGUyKSAvIGRheSk7IGorKykge1xuICAgICAgICAgIG1pc3NpbmdEYXRlcy5wdXNoKG5ldyBEYXRlKCtkYXRlMSArIGogKiBkYXkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGRhdGEgPSBkYXRhLmNvbmNhdChtaXNzaW5nRGF0ZXMubWFwKChkYXRlKSA9PiAoeyBkYXRlLCBjb3VudDogMCB9KSkpO1xuICAgIGRhdGEgPSBkYXRhLnNvcnQoKGEsIGIpID0+IChhLmRhdGUgJiYgYi5kYXRlID8gYS5kYXRlLnZhbHVlT2YoKSAtIGIuZGF0ZS52YWx1ZU9mKCkgOiAwKSk7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxufVxuIiwiPGRpdiAjZ3JhcGg+PC9kaXY+Il19

@@ -152,2 +152,2 @@ import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';

}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kYWJsZS10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwaW5xdWUtYW5ndWxhci11aS9leHBhbmRhYmxlLXRyZWUvc3JjL2V4cGFuZGFibGUtdHJlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvZXhwYW5kYWJsZS10cmVlL3NyYy9leHBhbmRhYmxlLXRyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBNENyQyxNQUFNLE9BQU8sOEJBQThCO0lBcUJ6QyxZQUFvQixJQUF3QixFQUFVLEtBQTBCO1FBQTVELFNBQUksR0FBSixJQUFJLENBQW9CO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBcUI7UUFwQmhGLFNBQUksR0FBVSxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUlSLHdCQUFtQixHQUFXLElBQUksQ0FBQztRQUNuQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixvQkFBZSxHQUFHLElBQUksQ0FBQztRQUN0QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFFcEUsY0FBUyxHQUFlLEVBQUUsQ0FBQztRQUlsQixnQkFBVyxHQUFxQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQy9ELGdDQUEyQixHQUFxQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUss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O3NCQUFiLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNO2dCQUlvQixRQUFRO3NCQUFsQyxZQUFZO3VCQUFDLFdBQVc7Z0JBRWhCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csMkJBQTJCO3NCQUFuQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3BpbnF1ZVJlc3RTZXJ2aWNlLCBTcGlucXVlUmVzdWx0SXRlbSwgU3BpbnF1ZVF1ZXJ5LCBTcGlucXVlUXVlcnlTZXJ2aWNlIH0gZnJvbSAnc3BpbnF1ZS1hbmd1bGFyLXVpJztcblxuZXhwb3J0IGludGVyZmFjZSBUcmVlTm9kZSB7XG4gIGNoaWxkcmVuPzogVHJlZU5vZGVbXTtcbiAgaXRlbTogU3BpbnF1ZVJlc3VsdEl0ZW07XG4gIGlzRXhwYW5kZWQ6IGJvb2xlYW47XG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3BpbnF1ZS1leHBhbmRhYmxlLXRyZWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZXhwYW5kYWJsZS10cmVlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnNwaW5uZXIge1xuICAgICAgICBwYWRkaW5nOiAyNHB4IDA7XG4gICAgICB9XG4gICAgICAubm9kZSB7XG4gICAgICAgIHBhZGRpbmc6IDRweCAxMnB4O1xuICAgICAgfVxuICAgICAgLmNoaWxkcmVuIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDI0cHg7XG4gICAgICB9XG4gICAgICAubm9kZS1idXR0b24ge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDEycHg7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW4tbGVmdDogLThweDtcbiAgICAgIH1cbiAgICAgIC5oZWFkZXIge1xuICAgICAgICBtaW4taGVpZ2h0OiA0OXB4O1xuICAgICAgICBwYWRkaW5nOiA0cHggMTJweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAxKTtcbiAgICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTcGlucXVlRXhwYW5kYWJsZVRyZWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICB0cmVlOiBhbnlbXSA9IFtdO1xuICBpc0xvYWRpbmcgPSB0cnVlO1xuXG4gIEBJbnB1dCgpIG5vZGVzUXVlcnkhOiBTcGlucXVlUXVlcnlbXTtcbiAgQElucHV0KCkgcm9vdE5vZGVzUXVlcnkhOiBTcGlucXVlUXVlcnlbXTtcbiAgQElucHV0KCkgY2hpbGROb2Rlc1BhcmFtZXRlcjogc3RyaW5nID0gJ2lkJztcbiAgQElucHV0KCkgc2hvd1Njb3JlID0gdHJ1ZTtcbiAgQElucHV0KCkgc2VsZWN0YWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSB0ZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGNvdW50OiBudW1iZXIgPSAyMDtcbiAgQElucHV0KCkgaW5saW5lRXhwYW5zaW9uID0gdHJ1ZTtcbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFNwaW5xdWVSZXN1bHRJdGVtIHwgbnVsbD4oKTtcblxuICBub2Rlc1BhdGg6IFRyZWVOb2RlW10gPSBbXTtcblxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQElucHV0KCkgaXRlbU1hcHBpbmc6IChpdGVtOiBTcGlucXVlUmVzdWx0SXRlbSkgPT4gYW55ID0gKGl0ZW0pID0+IGl0ZW07XG4gIEBJbnB1dCgpIGNoaWxkTm9kZXNQYXJhbWV0ZXJGcm9tSXRlbTogKGl0ZW06IFNwaW5xdWVSZXN1bHRJdGVtKSA9PiBhbnkgPSAoaXRlbSkgPT4gaXRlbS50dXBsZVswXS5pZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3Q6IFNwaW5xdWVSZXN0U2VydmljZSwgcHJpdmF0ZSBxdWVyeTogU3BpbnF1ZVF1ZXJ5U2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMucm9vdE5vZGVzUXVlcnkgfHwgdGhpcy5ub2Rlc1F1ZXJ5O1xuICAgIHRoaXMucmVzdFxuICAgICAgLmdldFJlc3VsdHMocXVlcnksIHsgY291bnQ6IHRoaXMuY291bnQgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzdWx0KSA9PiAoeyAuLi5yZXN1bHQsIGl0ZW1zOiByZXN1bHQuaXRlbXMubWFwKChpdGVtKSA9PiB0aGlzLml0ZW1NYXBwaW5nKGl0ZW0pKSB9KSkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAocmVzdWx0cykgPT4ge1xuICAgICAgICAgIGNvbnN0IGl0ZW1zID0gcmVzdWx0cy5pdGVtcztcbiAgICAgICAgICB0aGlzLnRyZWUgPSB0aGlzLnRvVHJlZU5vZGVzKGl0ZW1zKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGV4cGFuZE5vZGUobm9kZTogVHJlZU5vZGUpIHtcbiAgICBub2RlLmlzRXhwYW5kZWQgPSAhbm9kZS5pc0V4cGFuZGVkO1xuICAgIGlmIChub2RlLmlzTG9hZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAobm9kZS5jaGlsZHJlbiAhPT0gdW5kZWZpbmVkICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChub2RlLmNoaWxkcmVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubm9kZXNQYXRoLnB1c2gobm9kZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbm9kZS5pc0xvYWRpbmcgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuY2hpbGROb2Rlc1BhcmFtZXRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdjaGlsZE5vZGVzUGFyYW1ldGVyIGlzIHJlcXVpcmVkIGZvciBjaGlsZCBub2RlIHJldHJpZXZhbCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jaGlsZE5vZGVzUGFyYW1ldGVyRnJvbUl0ZW0obm9kZS5pdGVtKTtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMucXVlcnkuc2V0UGFyYW1ldGVyKHRoaXMubm9kZXNRdWVyeSwgdGhpcy5jaGlsZE5vZGVzUGFyYW1ldGVyLCB2YWx1ZSk7XG4gICAgdGhpcy5yZXN0XG4gICAgICAuZ2V0UmVzdWx0cyhxdWVyeSwgeyBjb3VudDogdGhpcy5jb3VudCB9KVxuICAgICAgLnBpcGUobWFwKChyZXN1bHQpID0+ICh7IC4uLnJlc3VsdCwgaXRlbXM6IHJlc3VsdC5pdGVtcy5tYXAoKGl0ZW0pID0+IHRoaXMuaXRlbU1hcHBpbmcoaXRlbSkpIH0pKSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChyZXN1bHRzKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXRlbXMgPSByZXN1bHRzLml0ZW1zO1xuICAgICAgICAgIG5vZGUuY2hpbGRyZW4gPSB0aGlzLnRvVHJlZU5vZGVzKGl0ZW1zKTtcbiAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm5vZGVzUGF0aC5wdXNoKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBub2RlLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgbm9kZS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGxldmVsVXAoKSB7XG4gICAgdGhpcy5ub2Rlc1BhdGgucG9wKCk7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZXNQYXRoW3RoaXMubm9kZXNQYXRoLmxlbmd0aC0xXTtcbiAgICB0aGlzLml0ZW1TZWxlY3QuZW1pdChub2RlID8gbm9kZS5pdGVtIDogbnVsbCk7XG4gIH1cblxuICB0b1RyZWVOb2RlcyhpdGVtczogU3BpbnF1ZVJlc3VsdEl0ZW1bXSk6IFRyZWVOb2RlW10ge1xuICAgIHJldHVybiBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGl0ZW0sXG4gICAgICAgIGlzRXhwYW5kZWQ6IGZhbHNlLFxuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImlubGluZUV4cGFuc2lvblwiPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBub2RlIG9mIHRyZWVcIiBjbGFzcz1cIm5vZGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZUlubGluZVRlbXBsYXRlOyBjb250ZXh0OiB7IG5vZGU6IG5vZGUgfVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNwaW5uZXJcIiAqbmdJZj1cImlzTG9hZGluZ1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG4gICAgPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCI1MFwiIGFyaWEtbGFiZWw9XCJMb2FkaW5nXCI+PC9tYXQtc3Bpbm5lcj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbmxpbmVFeHBhbnNpb25cIj5cbiAgPGRpdiBjbGFzcz1cImhlYWRlclwiIGZ4TGF5b3V0PVwicm93XCI+XG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCJub2Rlc1BhdGggJiYgbm9kZXNQYXRoLmxlbmd0aCA+IDBcIiAoY2xpY2spPVwibGV2ZWxVcCgpXCIgYXJpYS1sYWJlbD1cIkdvIG9uZSBsZXZlbCB1cFwiPlxuICAgICAgPG1hdC1pY29uPmFycm93X2JhY2s8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJub2RlLWJ1dHRvblwiIG1hdC1idXR0b24gKm5nSWY9XCJub2Rlc1BhdGggJiYgbm9kZXNQYXRoLmxlbmd0aCA+IDBcIiAoY2xpY2spPVwibGV2ZWxVcCgpXCIgYXJpYS1sYWJlbD1cIkdvIG9uZSBsZXZlbCB1cFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlUmVmID8gdGVtcGxhdGVSZWYgOiB0ZW1wbGF0ZSA/IHRlbXBsYXRlIDogZGVmYXVsdE5vZGVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGVzUGF0aFtub2Rlc1BhdGgubGVuZ3RoIC0gMV0uaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBub2RlIG9mIChub2Rlc1BhdGgubGVuZ3RoID4gMCA/IG5vZGVzUGF0aFtub2Rlc1BhdGgubGVuZ3RoIC0gMV0uY2hpbGRyZW4gOiB0cmVlKVwiIGNsYXNzPVwibm9kZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub2RlVGVtcGxhdGU7IGNvbnRleHQ6IHsgbm9kZTogbm9kZSB9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3Bpbm5lclwiICpuZ0lmPVwiaXNMb2FkaW5nXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cbiAgICA8bWF0LXNwaW5uZXIgW2RpYW1ldGVyXT1cIjUwXCIgYXJpYS1sYWJlbD1cIkxvYWRpbmdcIj48L21hdC1zcGlubmVyPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG5cbjxuZy10ZW1wbGF0ZSAjbm9kZUlubGluZVRlbXBsYXRlIGxldC1ub2RlPVwibm9kZVwiPlxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCI+XG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiIW5vZGUuaXNFeHBhbmRlZFwiIChjbGljayk9XCJleHBhbmROb2RlKG5vZGUpXCIgYXJpYS1sYWJlbD1cIkV4cGFuZCBub2RlXCI+XG4gICAgICA8bWF0LWljb24+Y2hldnJvbl9yaWdodDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgXG4gICAgPG1hdC1zcGlubmVyICpuZ0lmPVwibm9kZS5pc0V4cGFuZGVkICYmIG5vZGUuaXNMb2FkaW5nXCIgW2RpYW1ldGVyXT1cIjE2XCIgc3R5bGU9XCJtYXJnaW46IDEycHggMTNweCAxMnB4IDEycHg7XCIgYXJpYS1sYWJlbD1cIkxvYWRpbmdcIj48L21hdC1zcGlubmVyPlxuICAgIFxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIm5vZGUuaXNFeHBhbmRlZCAmJiAhbm9kZS5pc0xvYWRpbmcgJiYgbm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDBcIiAoY2xpY2spPVwibm9kZS5pc0V4cGFuZGVkID0gZmFsc2VcIiBhcmlhLWxhYmVsPVwiRXhwYW5kIG5vZGVcIj5cbiAgICAgIDxtYXQtaWNvbj5leHBhbmRfbW9yZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgXG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwXCJcbiAgICAgIHN0eWxlPVwid2lkdGg6IDQycHg7IGhlaWdodDogNDBweFwiPlxuICAgIDwvZGl2PlxuXG4gICAgPG1hdC1jaGVja2JveFxuICAgICAgKm5nSWY9XCJzZWxlY3RhYmxlXCJcbiAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxNnB4OyBsaW5lLWhlaWdodDogNDBweFwiPlxuICAgIDwvbWF0LWNoZWNrYm94PlxuXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwibm9kZS1idXR0b25cIiAoY2xpY2spPVwiaXRlbVNlbGVjdC5lbWl0KG5vZGUuaXRlbSlcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZVJlZiA/IHRlbXBsYXRlUmVmIDogdGVtcGxhdGUgPyB0ZW1wbGF0ZSA6IGRlZmF1bHROb2RlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBub2RlLml0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvYnV0dG9uPlxuXG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJub2RlLmlzRXhwYW5kZWRcIiBjbGFzcz1cImNoaWxkcmVuXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgbm9kZSBvZiBub2RlLmNoaWxkcmVuXCIgY2xhc3M9XCJub2RlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZUlubGluZVRlbXBsYXRlOyBjb250ZXh0OiB7IG5vZGU6IG5vZGUgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub2RlVGVtcGxhdGUgbGV0LW5vZGU9XCJub2RlXCI+XG4gIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cIm5vZGUtYnV0dG9uXCIgKGNsaWNrKT1cIml0ZW1TZWxlY3QuZW1pdChub2RlLml0ZW0pOyBleHBhbmROb2RlKG5vZGUpXCIgYXJpYS1sYWJlbD1cIkV4cGFuZCBub2RlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVSZWYgPyB0ZW1wbGF0ZVJlZiA6IHRlbXBsYXRlID8gdGVtcGxhdGUgOiBkZWZhdWx0Tm9kZVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbm9kZS5pdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIiFub2RlLmlzTG9hZGluZ1wiIFtkaXNhYmxlZF09XCJub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwXCIgYXJpYS1sYWJlbD1cIkV4cGFuZCBub2RlXCI+XG4gICAgICA8bWF0LWljb24+Y2hldnJvbl9yaWdodDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgXG4gICAgPG1hdC1zcGlubmVyICpuZ0lmPVwibm9kZS5pc0xvYWRpbmdcIiBbZGlhbWV0ZXJdPVwiMTZcIiBzdHlsZT1cIm1hcmdpbjogMTJweCAxM3B4IDEycHggMTJweDtcIiBhcmlhLWxhYmVsPVwiTG9hZGluZ1wiPjwvbWF0LXNwaW5uZXI+XG5cbiAgPC9kaXY+XG5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtaXRlbSAjZGVmYXVsdE5vZGVUZW1wbGF0ZT5cbiAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXJcIiBmeEZsZXg+XG4gICAge3sgaXRlbS50dXBsZVswXS5pZCB9fVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kYWJsZS10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwaW5xdWUtYW5ndWxhci11aS9leHBhbmRhYmxlLXRyZWUvc3JjL2V4cGFuZGFibGUtdHJlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvZXhwYW5kYWJsZS10cmVlL3NyYy9leHBhbmRhYmxlLXRyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBNENyQyxNQUFNLE9BQU8sOEJBQThCO0lBcUJ6QyxZQUFvQixJQUF3QixFQUFVLEtBQTBCO1FBQTVELFNBQUksR0FBSixJQUFJLENBQW9CO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBcUI7UUFwQmhGLFNBQUksR0FBVSxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUlSLHdCQUFtQixHQUFXLElBQUksQ0FBQztRQUNuQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixvQkFBZSxHQUFHLElBQUksQ0FBQztRQUN0QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFFcEUsY0FBUyxHQUFlLEVBQUUsQ0FBQztRQUlsQixnQkFBVyxHQUFxQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQy9ELGdDQUEyQixHQUFxQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUss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O3NCQUFiLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNO2dCQUlvQixRQUFRO3NCQUFsQyxZQUFZO3VCQUFDLFdBQVc7Z0JBRWhCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csMkJBQTJCO3NCQUFuQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3BpbnF1ZVJlc3RTZXJ2aWNlLCBTcGlucXVlUmVzdWx0SXRlbSwgU3BpbnF1ZVF1ZXJ5LCBTcGlucXVlUXVlcnlTZXJ2aWNlLCBTcGlucXVlUXVlcnlTdGFjayB9IGZyb20gJ3NwaW5xdWUtYW5ndWxhci11aSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJlZU5vZGUge1xuICBjaGlsZHJlbj86IFRyZWVOb2RlW107XG4gIGl0ZW06IFNwaW5xdWVSZXN1bHRJdGVtO1xuICBpc0V4cGFuZGVkOiBib29sZWFuO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwaW5xdWUtZXhwYW5kYWJsZS10cmVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2V4cGFuZGFibGUtdHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5zcGlubmVyIHtcbiAgICAgICAgcGFkZGluZzogMjRweCAwO1xuICAgICAgfVxuICAgICAgLm5vZGUge1xuICAgICAgICBwYWRkaW5nOiA0cHggMTJweDtcbiAgICAgIH1cbiAgICAgIC5jaGlsZHJlbiB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAyNHB4O1xuICAgICAgfVxuICAgICAgLm5vZGUtYnV0dG9uIHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgcGFkZGluZzogMTJweCAxMnB4O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC04cHg7XG4gICAgICB9XG4gICAgICAuaGVhZGVyIHtcbiAgICAgICAgbWluLWhlaWdodDogNDlweDtcbiAgICAgICAgcGFkZGluZzogNHB4IDEycHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wMSk7XG4gICAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU3BpbnF1ZUV4cGFuZGFibGVUcmVlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgdHJlZTogYW55W10gPSBbXTtcbiAgaXNMb2FkaW5nID0gdHJ1ZTtcblxuICBASW5wdXQoKSBub2Rlc1F1ZXJ5ITogU3BpbnF1ZVF1ZXJ5U3RhY2s7XG4gIEBJbnB1dCgpIHJvb3ROb2Rlc1F1ZXJ5ITogU3BpbnF1ZVF1ZXJ5U3RhY2s7XG4gIEBJbnB1dCgpIGNoaWxkTm9kZXNQYXJhbWV0ZXI6IHN0cmluZyA9ICdpZCc7XG4gIEBJbnB1dCgpIHNob3dTY29yZSA9IHRydWU7XG4gIEBJbnB1dCgpIHNlbGVjdGFibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgdGVtcGxhdGVSZWYhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBjb3VudDogbnVtYmVyID0gMjA7XG4gIEBJbnB1dCgpIGlubGluZUV4cGFuc2lvbiA9IHRydWU7XG4gIEBPdXRwdXQoKSBpdGVtU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxTcGlucXVlUmVzdWx0SXRlbSB8IG51bGw+KCk7XG5cbiAgbm9kZXNQYXRoOiBUcmVlTm9kZVtdID0gW107XG5cbiAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgdGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpIGl0ZW1NYXBwaW5nOiAoaXRlbTogU3BpbnF1ZVJlc3VsdEl0ZW0pID0+IGFueSA9IChpdGVtKSA9PiBpdGVtO1xuICBASW5wdXQoKSBjaGlsZE5vZGVzUGFyYW1ldGVyRnJvbUl0ZW06IChpdGVtOiBTcGlucXVlUmVzdWx0SXRlbSkgPT4gYW55ID0gKGl0ZW0pID0+IGl0ZW0udHVwbGVbMF0uaWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0OiBTcGlucXVlUmVzdFNlcnZpY2UsIHByaXZhdGUgcXVlcnk6IFNwaW5xdWVRdWVyeVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLnJvb3ROb2Rlc1F1ZXJ5IHx8IHRoaXMubm9kZXNRdWVyeTtcbiAgICB0aGlzLnJlc3RcbiAgICAgIC5nZXRSZXN1bHRzKHF1ZXJ5LCB7IGNvdW50OiB0aGlzLmNvdW50IH0pXG4gICAgICAucGlwZShtYXAoKHJlc3VsdCkgPT4gKHsgLi4ucmVzdWx0LCBpdGVtczogcmVzdWx0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gdGhpcy5pdGVtTWFwcGluZyhpdGVtKSkgfSkpKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKHJlc3VsdHMpID0+IHtcbiAgICAgICAgICBjb25zdCBpdGVtcyA9IHJlc3VsdHMuaXRlbXM7XG4gICAgICAgICAgdGhpcy50cmVlID0gdGhpcy50b1RyZWVOb2RlcyhpdGVtcyk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBleHBhbmROb2RlKG5vZGU6IFRyZWVOb2RlKSB7XG4gICAgbm9kZS5pc0V4cGFuZGVkID0gIW5vZGUuaXNFeHBhbmRlZDtcbiAgICBpZiAobm9kZS5pc0xvYWRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKG5vZGUuY2hpbGRyZW4gIT09IHVuZGVmaW5lZCAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAobm9kZS5jaGlsZHJlbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm5vZGVzUGF0aC5wdXNoKG5vZGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG5vZGUuaXNMb2FkaW5nID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLmNoaWxkTm9kZXNQYXJhbWV0ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS5lcnJvcignY2hpbGROb2Rlc1BhcmFtZXRlciBpcyByZXF1aXJlZCBmb3IgY2hpbGQgbm9kZSByZXRyaWV2YWwnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY2hpbGROb2Rlc1BhcmFtZXRlckZyb21JdGVtKG5vZGUuaXRlbSk7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLnF1ZXJ5LnNldFBhcmFtZXRlcih0aGlzLm5vZGVzUXVlcnksIHRoaXMuY2hpbGROb2Rlc1BhcmFtZXRlciwgdmFsdWUpO1xuICAgIHRoaXMucmVzdFxuICAgICAgLmdldFJlc3VsdHMocXVlcnksIHsgY291bnQ6IHRoaXMuY291bnQgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzdWx0KSA9PiAoeyAuLi5yZXN1bHQsIGl0ZW1zOiByZXN1bHQuaXRlbXMubWFwKChpdGVtKSA9PiB0aGlzLml0ZW1NYXBwaW5nKGl0ZW0pKSB9KSkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAocmVzdWx0cykgPT4ge1xuICAgICAgICAgIGNvbnN0IGl0ZW1zID0gcmVzdWx0cy5pdGVtcztcbiAgICAgICAgICBub2RlLmNoaWxkcmVuID0gdGhpcy50b1RyZWVOb2RlcyhpdGVtcyk7XG4gICAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ub2Rlc1BhdGgucHVzaChub2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbm9kZS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIG5vZGUuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBsZXZlbFVwKCkge1xuICAgIHRoaXMubm9kZXNQYXRoLnBvcCgpO1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGVzUGF0aFt0aGlzLm5vZGVzUGF0aC5sZW5ndGgtMV07XG4gICAgdGhpcy5pdGVtU2VsZWN0LmVtaXQobm9kZSA/IG5vZGUuaXRlbSA6IG51bGwpO1xuICB9XG5cbiAgdG9UcmVlTm9kZXMoaXRlbXM6IFNwaW5xdWVSZXN1bHRJdGVtW10pOiBUcmVlTm9kZVtdIHtcbiAgICByZXR1cm4gaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpdGVtLFxuICAgICAgICBpc0V4cGFuZGVkOiBmYWxzZSxcbiAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpbmxpbmVFeHBhbnNpb25cIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgbm9kZSBvZiB0cmVlXCIgY2xhc3M9XCJub2RlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vZGVJbmxpbmVUZW1wbGF0ZTsgY29udGV4dDogeyBub2RlOiBub2RlIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzcGlubmVyXCIgKm5nSWY9XCJpc0xvYWRpbmdcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiNTBcIiBhcmlhLWxhYmVsPVwiTG9hZGluZ1wiPjwvbWF0LXNwaW5uZXI+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5saW5lRXhwYW5zaW9uXCI+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXJcIiBmeExheW91dD1cInJvd1wiPlxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwibm9kZXNQYXRoICYmIG5vZGVzUGF0aC5sZW5ndGggPiAwXCIgKGNsaWNrKT1cImxldmVsVXAoKVwiIGFyaWEtbGFiZWw9XCJHbyBvbmUgbGV2ZWwgdXBcIj5cbiAgICAgIDxtYXQtaWNvbj5hcnJvd19iYWNrPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwibm9kZS1idXR0b25cIiBtYXQtYnV0dG9uICpuZ0lmPVwibm9kZXNQYXRoICYmIG5vZGVzUGF0aC5sZW5ndGggPiAwXCIgKGNsaWNrKT1cImxldmVsVXAoKVwiIGFyaWEtbGFiZWw9XCJHbyBvbmUgbGV2ZWwgdXBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZVJlZiA/IHRlbXBsYXRlUmVmIDogdGVtcGxhdGUgPyB0ZW1wbGF0ZSA6IGRlZmF1bHROb2RlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBub2Rlc1BhdGhbbm9kZXNQYXRoLmxlbmd0aCAtIDFdLml0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgbm9kZSBvZiAobm9kZXNQYXRoLmxlbmd0aCA+IDAgPyBub2Rlc1BhdGhbbm9kZXNQYXRoLmxlbmd0aCAtIDFdLmNoaWxkcmVuIDogdHJlZSlcIiBjbGFzcz1cIm5vZGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZVRlbXBsYXRlOyBjb250ZXh0OiB7IG5vZGU6IG5vZGUgfVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNwaW5uZXJcIiAqbmdJZj1cImlzTG9hZGluZ1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG4gICAgPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCI1MFwiIGFyaWEtbGFiZWw9XCJMb2FkaW5nXCI+PC9tYXQtc3Bpbm5lcj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuXG48bmctdGVtcGxhdGUgI25vZGVJbmxpbmVUZW1wbGF0ZSBsZXQtbm9kZT1cIm5vZGVcIj5cbiAgPGRpdiBmeExheW91dD1cInJvd1wiPlxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIiFub2RlLmlzRXhwYW5kZWRcIiAoY2xpY2spPVwiZXhwYW5kTm9kZShub2RlKVwiIGFyaWEtbGFiZWw9XCJFeHBhbmQgbm9kZVwiPlxuICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIFxuICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cIm5vZGUuaXNFeHBhbmRlZCAmJiBub2RlLmlzTG9hZGluZ1wiIFtkaWFtZXRlcl09XCIxNlwiIHN0eWxlPVwibWFyZ2luOiAxMnB4IDEzcHggMTJweCAxMnB4O1wiIGFyaWEtbGFiZWw9XCJMb2FkaW5nXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICBcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJub2RlLmlzRXhwYW5kZWQgJiYgIW5vZGUuaXNMb2FkaW5nICYmIG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwXCIgKGNsaWNrKT1cIm5vZGUuaXNFeHBhbmRlZCA9IGZhbHNlXCIgYXJpYS1sYWJlbD1cIkV4cGFuZCBub2RlXCI+XG4gICAgICA8bWF0LWljb24+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIFxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwibm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMFwiXG4gICAgICBzdHlsZT1cIndpZHRoOiA0MnB4OyBoZWlnaHQ6IDQwcHhcIj5cbiAgICA8L2Rpdj5cblxuICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICpuZ0lmPVwic2VsZWN0YWJsZVwiXG4gICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTZweDsgbGluZS1oZWlnaHQ6IDQwcHhcIj5cbiAgICA8L21hdC1jaGVja2JveD5cblxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cIm5vZGUtYnV0dG9uXCIgKGNsaWNrKT1cIml0ZW1TZWxlY3QuZW1pdChub2RlLml0ZW0pXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVSZWYgPyB0ZW1wbGF0ZVJlZiA6IHRlbXBsYXRlID8gdGVtcGxhdGUgOiBkZWZhdWx0Tm9kZVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbm9kZS5pdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2J1dHRvbj5cblxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwibm9kZS5pc0V4cGFuZGVkXCIgY2xhc3M9XCJjaGlsZHJlblwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IG5vZGUgb2Ygbm9kZS5jaGlsZHJlblwiIGNsYXNzPVwibm9kZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vZGVJbmxpbmVUZW1wbGF0ZTsgY29udGV4dDogeyBub2RlOiBub2RlIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm9kZVRlbXBsYXRlIGxldC1ub2RlPVwibm9kZVwiPlxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJub2RlLWJ1dHRvblwiIChjbGljayk9XCJpdGVtU2VsZWN0LmVtaXQobm9kZS5pdGVtKTsgZXhwYW5kTm9kZShub2RlKVwiIGFyaWEtbGFiZWw9XCJFeHBhbmQgbm9kZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlUmVmID8gdGVtcGxhdGVSZWYgOiB0ZW1wbGF0ZSA/IHRlbXBsYXRlIDogZGVmYXVsdE5vZGVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUuaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCIhbm9kZS5pc0xvYWRpbmdcIiBbZGlzYWJsZWRdPVwibm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMFwiIGFyaWEtbGFiZWw9XCJFeHBhbmQgbm9kZVwiPlxuICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIFxuICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cIm5vZGUuaXNMb2FkaW5nXCIgW2RpYW1ldGVyXT1cIjE2XCIgc3R5bGU9XCJtYXJnaW46IDEycHggMTNweCAxMnB4IDEycHg7XCIgYXJpYS1sYWJlbD1cIkxvYWRpbmdcIj48L21hdC1zcGlubmVyPlxuXG4gIDwvZGl2PlxuXG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgbGV0LWl0ZW0gI2RlZmF1bHROb2RlVGVtcGxhdGU+XG4gIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyXCIgZnhGbGV4PlxuICAgIHt7IGl0ZW0udHVwbGVbMF0uaWQgfX1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19

@@ -147,2 +147,2 @@ import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';

}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtZXhwYW5kYWJsZS10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwaW5xdWUtYW5ndWxhci11aS9mYWNldC9zcmMvZmFjZXQtZXhwYW5kYWJsZS10cmVlL2ZhY2V0LWV4cGFuZGFibGUtdHJlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvZmFjZXQvc3JjL2ZhY2V0LWV4cGFuZGFibGUtdHJlZS9mYWNldC1leHBhbmRhYmxlLXRyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUNyQyxLQUFLLEVBR0wsTUFBTSxFQUNTLFdBQVcsRUFDM0IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQW9DdkMsTUFBTSxPQUFPLDRCQUE0QjtJQXlCdkMsWUFBb0IsSUFBd0IsRUFBVSxFQUF1QjtRQUF6RCxTQUFJLEdBQUosSUFBSSxDQUFvQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBdEJwRSxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixVQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ1osU0FBSSxHQUFxQixPQUFPLENBQUM7UUFDakMsY0FBUyxHQUFtQixLQUFLLENBQUM7UUFFbEMsY0FBUyxHQUFHLElBQUksQ0FBQztRQUduQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsYUFBUSxHQUFvQyxFQUFFLENBQUM7UUFNdEQsa0dBQWtHO1FBQ2xHLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXpDLG1CQUFjLEdBQUcsSUFB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QztvQkFDckQsTUFBTSxFQUFFO3dCQUNOOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBeUJDO3FCQUNGO2lCQUNGOzJJQUVVLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS3FCLFFBQVE7c0JBQWxDLFlBQVk7dUJBQUMsV0FBVztnQkFPZixjQUFjO3NCQUF2QixNQUFNO2dCQUVFLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3BpbnF1ZVJlc3RTZXJ2aWNlLCBTcGlucXVlUXVlcnksIFNwaW5xdWVRdWVyeVNlcnZpY2UgfSBmcm9tICdzcGlucXVlLWFuZ3VsYXItdWknO1xuaW1wb3J0IHsgU3BpbnF1ZUZhY2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vZmFjZXQtY29tcG9uZW50LmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwaW5xdWUtZmFjZXQtZXhwYW5kYWJsZS10cmVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZhY2V0LWV4cGFuZGFibGUtdHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5zcGlucXVlLWZhY2V0LW9wdGlvbnMge1xuICAgICAgICBtYXgtaGVpZ2h0OiA1MDBweDtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICB9XG4gICAgICA6Om5nLWRlZXAgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCB7XG4gICAgICAgIHBhZGRpbmc6IDAgMTJweDtcbiAgICAgIH1cbiAgICAgIDo6bmctZGVlcCAubWF0LWZvcm0tZmllbGQtaW5maXgge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICB9XG4gICAgICA6Om5nLWRlZXAgLm1hdC1mb3JtLWZpZWxkIGlucHV0IHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMycHg7XG4gICAgICB9XG4gICAgICAubG9hZGluZyB7XG4gICAgICAgIHBhZGRpbmc6IDIwcHggMDtcbiAgICAgIH1cbiAgICAgIC5zcGlucXVlLWZhY2V0LW9wdGlvbi1sYWJlbCB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7XG4gICAgICB9XG4gICAgICAuc3BpbnF1ZS1mYWNldC1vcHRpb24tY291bnQge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gICAgICAgIGNvbG9yOiAjODg4O1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZhY2V0RXhwYW5kYWJsZVRyZWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgU3BpbnF1ZUZhY2V0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgZmFjZXRJZDogc3RyaW5nO1xuICBASW5wdXQoKSBxdWVyeVN0YWNrPzogU3BpbnF1ZVF1ZXJ5W107XG4gIEBJbnB1dCgpIHNjcm9sbE9mZnNldCA9IDUwO1xuICBASW5wdXQoKSBjb3VudCA9IDIwMDtcbiAgQElucHV0KCkgc29ydDogJ25hbWUnIHwgJ3Njb3JlJyA9ICdzY29yZSc7XG4gIEBJbnB1dCgpIHNvcnRPcmRlcjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJztcbiAgQElucHV0KCkgc29ydEZuOiAoYTogb2JqZWN0LCBiOiBvYmplY3QpID0+IG51bWJlcjtcbiAgQElucHV0KCkgc2hvd1Njb3JlID0gdHJ1ZTtcbiAgQElucHV0KCkgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHVibGljIHZpc2libGUgPSB0cnVlO1xuICBwdWJsaWMgc2VsZWN0ZWQ6IHsgaWQ6IHN0cmluZzsgdGl0bGU6IHN0cmluZyB9W10gPSBbXTtcblxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcm9vdE5vZGVzITogU3BpbnF1ZVF1ZXJ5W107XG5cbiAgLy8gV2UgdXNlIGFuIG9ic2VydmFibGUgc28gdGhhdCB3ZSBjYW4gY2FuY2VsIHByZXZpb3VzIHJlcXVlc3RzIGZvciBvcHRpb25zIHRoYXQgYXJlIHN0aWxsIHJ1bm5pbmdcbiAgcXVlcnlDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMucXVlcnlTdGFjayk7XG5cbiAgQE91dHB1dCgpIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZhY2V0SWQ6IHN0cmluZzsgc2VsZWN0ZWQ6IHsgaWQ6IHN0cmluZzsgdGl0bGU6IHN0cmluZyB9W10gfT4oKTtcblxuICBASW5wdXQoKSBvcHRpb25NYXBwaW5nID0gKG9wdGlvbjogYW55KSA9PiBvcHRpb247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0OiBTcGlucXVlUmVzdFNlcnZpY2UsIHByaXZhdGUgcXM6IFNwaW5xdWVRdWVyeVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yb290Tm9kZXMgPSBbeyBlbmRwb2ludDogdGhpcy5mYWNldElkIH1dO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnN0IHF1ZXJ5Q2hhbmdlZCA9IGNoYW5nZXMucXVlcnlTdGFjayAmJiB0aGlzLmhhc1JlbGV2YW50Q2hhbmdlKGNoYW5nZXMucXVlcnlTdGFjayk7XG4gICAgY29uc3QgZmFjZXRJZENoYW5nZWQgPSBjaGFuZ2VzLmZhY2V0SWQgJiYgY2hhbmdlcy5mYWNldElkLmN1cnJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZpbHRlckVuZHBvaW50ID0gYCR7dGhpcy5mYWNldElkfTpGSUxURVJgO1xuXG4gICAgLy8gcmVtb3ZlIHRoZSBvbGQgZmFjZXRJZFxuICAgIGlmIChmYWNldElkQ2hhbmdlZCAmJiBjaGFuZ2VzLmZhY2V0SWQucHJldmlvdXNWYWx1ZSkge1xuICAgICAgdGhpcy5xdWVyeVN0YWNrID0gdGhpcy5xcy5yZW1vdmVRdWVyeSh0aGlzLnF1ZXJ5U3RhY2ssIGNoYW5nZXMuZmFjZXRJZC5wcmV2aW91c1ZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBFeHRyYWN0IHNlbGVjdGVkIG9wdGlvbnMgZnJvbSBGSUxURVIgZW5kcG9pbnRcbiAgICBjb25zdCBmYWNldCA9IHRoaXMucXMuZ2V0UXVlcnkodGhpcy5xdWVyeVN0YWNrLCBmaWx0ZXJFbmRwb2ludCk7XG4gICAgdGhpcy5zZWxlY3RlZCA9IGZhY2V0ID8gZmFjZXQucGFyYW1ldGVycy52YWx1ZSA6IFtdO1xuXG4gICAgLy8gTm93IHJlbW92ZSB0aGUgZmlsdGVyIGFzIHdlIGRvIG5vdCBuZWVkIGl0IGluIG11bHRpc2VsZWN0IGNhc2VcbiAgICB0aGlzLnF1ZXJ5U3RhY2sgPSB0aGlzLnFzLnJlbW92ZVF1ZXJ5KHRoaXMucXVlcnlTdGFjaywgZmlsdGVyRW5kcG9pbnQpO1xuXG4gICAgLy8gQWRkIHRoZSBlbmRwb2ludCB0byBmZXRjaCB0aGUgZmFjZXQgb3B0aW9uc1xuICAgIHRoaXMucXVlcnlTdGFjayA9IHRoaXMucXMuYWRkUXVlcnkodGhpcy5xdWVyeVN0YWNrLCB0aGlzLmZhY2V0SWQpO1xuXG4gICAgaWYgKHF1ZXJ5Q2hhbmdlZCB8fCBmYWNldElkQ2hhbmdlZCkge1xuICAgICAgdGhpcy5xdWVyeUNoYW5nZS5uZXh0KHRoaXMucXVlcnlTdGFjayk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoeyBmYWNldElkOiB0aGlzLmZhY2V0SWQsIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZSgpIHtcbiAgICB0aGlzLnF1ZXJ5Q2hhbmdlLm5leHQodGhpcy5xdWVyeVN0YWNrKTtcbiAgfVxuXG4gIGhhc1JlbGV2YW50Q2hhbmdlKHF1ZXJ5Q2hhbmdlKSB7XG4gICAgY29uc3QgZmlsdGVyRW5kcG9pbnQgPSBgJHt0aGlzLmZhY2V0SWR9OkZJTFRFUmA7XG5cbiAgICAvLyB0aGUgZmlyc3QgY2hhbmdlIGlzIGFsd2F5cyByZWxldmFudFxuICAgIGlmIChxdWVyeUNoYW5nZS5maXJzdENoYW5nZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gbWF5YmUgdGhlIHF1ZXJ5IG9iamVjdCB0dXJucyBvdXQgdGhlIHNhbWVcbiAgICBjb25zdCBwcmV2ID0gcXVlcnlDaGFuZ2UucHJldmlvdXNWYWx1ZTtcbiAgICBjb25zdCBjdXJyZW50ID0gcXVlcnlDaGFuZ2UuY3VycmVudFZhbHVlO1xuICAgIGlmIChpc0VxdWFsKHByZXYsIGN1cnJlbnQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHByZXYuYXBpTmFtZSAhPT0gY3VycmVudC5hcGlOYW1lKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2RmlsdGVyID0gdGhpcy5xcy5nZXRRdWVyeShwcmV2LCBmaWx0ZXJFbmRwb2ludCk7XG4gICAgY29uc3QgY3VycmVudEZpbHRlciA9IHRoaXMucXMuZ2V0UXVlcnkoY3VycmVudCwgZmlsdGVyRW5kcG9pbnQpO1xuICAgIGlmICghaXNFcXVhbChwcmV2RmlsdGVyLCBjdXJyZW50RmlsdGVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29tcGFyZU9wdGlvbihvMTogYW55LCBvMjogYW55KSB7XG4gICAgcmV0dXJuIG8xICYmIG8yICYmIG8xLmlkID09PSBvMi5pZDtcbiAgfVxuXG4gIHNlbGVjdGlvbkNoYW5nZShvKSB7XG4gICAgY29uc3Qgb3B0aW9uID0gby5vcHRpb24uX3ZhbHVlO1xuICAgIGNvbnN0IHNlbGVjdGVkID0gby5vcHRpb24uX3NlbGVjdGVkO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZCA/IFsuLi50aGlzLnNlbGVjdGVkLCBvcHRpb25dIDogdGhpcy5zZWxlY3RlZC5maWx0ZXIoKG8pID0+IG8uaWQgIT09IG9wdGlvbi5pZCk7XG4gICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHsgZmFjZXRJZDogdGhpcy5mYWNldElkLCBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCB9KTtcbiAgfVxufVxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiPlxuICA8c3BpbnF1ZS1leHBhbmRhYmxlLXRyZWVcbiAgICBbcm9vdE5vZGVzUXVlcnldPVwicm9vdE5vZGVzXCJcbiAgICBbc2VsZWN0YWJsZV09XCJ0cnVlXCJcbiAgICBbdGVtcGxhdGVSZWZdPVwidGVtcGxhdGVcIj5cbiAgPC9zcGlucXVlLWV4cGFuZGFibGUtdHJlZT5cbjwvZGl2PlxuXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtZXhwYW5kYWJsZS10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwaW5xdWUtYW5ndWxhci11aS9mYWNldC9zcmMvZmFjZXQtZXhwYW5kYWJsZS10cmVlL2ZhY2V0LWV4cGFuZGFibGUtdHJlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvZmFjZXQvc3JjL2ZhY2V0LWV4cGFuZGFibGUtdHJlZS9mYWNldC1leHBhbmRhYmxlLXRyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUNyQyxLQUFLLEVBR0wsTUFBTSxFQUNTLFdBQVcsRUFDM0IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQW9DdkMsTUFBTSxPQUFPLDRCQUE0QjtJQXlCdkMsWUFBb0IsSUFBd0IsRUFBVSxFQUF1QjtRQUF6RCxTQUFJLEdBQUosSUFBSSxDQUFvQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBdEJwRSxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixVQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ1osU0FBSSxHQUFxQixPQUFPLENBQUM7UUFDakMsY0FBUyxHQUFtQixLQUFLLENBQUM7UUFFbEMsY0FBUyxHQUFHLElBQUksQ0FBQztRQUduQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsYUFBUSxHQUFvQyxFQUFFLENBQUM7UUFNdEQsa0dBQWtHO1FBQ2xHLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXpDLG1CQUFjLEdBQUcsSUFB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QztvQkFDckQsTUFBTSxFQUFFO3dCQUNOOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBeUJDO3FCQUNGO2lCQUNGOzJJQUVVLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS3FCLFFBQVE7c0JBQWxDLFlBQVk7dUJBQUMsV0FBVztnQkFPZixjQUFjO3NCQUF2QixNQUFNO2dCQUVFLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3BpbnF1ZVJlc3RTZXJ2aWNlLCBTcGlucXVlUXVlcnlTZXJ2aWNlLCBTcGlucXVlUXVlcnlTdGFjayB9IGZyb20gJ3NwaW5xdWUtYW5ndWxhci11aSc7XG5pbXBvcnQgeyBTcGlucXVlRmFjZXRDb21wb25lbnQgfSBmcm9tICcuLi9mYWNldC1jb21wb25lbnQuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3BpbnF1ZS1mYWNldC1leHBhbmRhYmxlLXRyZWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmFjZXQtZXhwYW5kYWJsZS10cmVlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnNwaW5xdWUtZmFjZXQtb3B0aW9ucyB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDUwMHB4O1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgIH1cbiAgICAgIDo6bmctZGVlcCAubWF0LWZvcm0tZmllbGQtcHJlZml4IHtcbiAgICAgICAgcGFkZGluZzogMCAxMnB4O1xuICAgICAgfVxuICAgICAgOjpuZy1kZWVwIC5tYXQtZm9ybS1maWVsZC1pbmZpeCB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIH1cbiAgICAgIDo6bmctZGVlcCAubWF0LWZvcm0tZmllbGQgaW5wdXQge1xuICAgICAgICBsaW5lLWhlaWdodDogMzJweDtcbiAgICAgIH1cbiAgICAgIC5sb2FkaW5nIHtcbiAgICAgICAgcGFkZGluZzogMjBweCAwO1xuICAgICAgfVxuICAgICAgLnNwaW5xdWUtZmFjZXQtb3B0aW9uLWxhYmVsIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTZweDtcbiAgICAgIH1cbiAgICAgIC5zcGlucXVlLWZhY2V0LW9wdGlvbi1jb3VudCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDRweDtcbiAgICAgICAgY29sb3I6ICM4ODg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmFjZXRFeHBhbmRhYmxlVHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBTcGlucXVlRmFjZXRDb21wb25lbnQge1xuICBASW5wdXQoKSBmYWNldElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHF1ZXJ5U3RhY2s/OiBTcGlucXVlUXVlcnlTdGFjaztcbiAgQElucHV0KCkgc2Nyb2xsT2Zmc2V0ID0gNTA7XG4gIEBJbnB1dCgpIGNvdW50ID0gMjAwO1xuICBASW5wdXQoKSBzb3J0OiAnbmFtZScgfCAnc2NvcmUnID0gJ3Njb3JlJztcbiAgQElucHV0KCkgc29ydE9yZGVyOiAnYXNjJyB8ICdkZXNjJyA9ICdhc2MnO1xuICBASW5wdXQoKSBzb3J0Rm46IChhOiBvYmplY3QsIGI6IG9iamVjdCkgPT4gbnVtYmVyO1xuICBASW5wdXQoKSBzaG93U2NvcmUgPSB0cnVlO1xuICBASW5wdXQoKSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwdWJsaWMgdmlzaWJsZSA9IHRydWU7XG4gIHB1YmxpYyBzZWxlY3RlZDogeyBpZDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH1bXSA9IFtdO1xuXG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpIHRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICByb290Tm9kZXMhOiBTcGlucXVlUXVlcnlTdGFjaztcblxuICAvLyBXZSB1c2UgYW4gb2JzZXJ2YWJsZSBzbyB0aGF0IHdlIGNhbiBjYW5jZWwgcHJldmlvdXMgcmVxdWVzdHMgZm9yIG9wdGlvbnMgdGhhdCBhcmUgc3RpbGwgcnVubmluZ1xuICBxdWVyeUNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5xdWVyeVN0YWNrKTtcblxuICBAT3V0cHV0KCkgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmFjZXRJZDogc3RyaW5nOyBzZWxlY3RlZDogeyBpZDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH1bXSB9PigpO1xuXG4gIEBJbnB1dCgpIG9wdGlvbk1hcHBpbmcgPSAob3B0aW9uOiBhbnkpID0+IG9wdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3Q6IFNwaW5xdWVSZXN0U2VydmljZSwgcHJpdmF0ZSBxczogU3BpbnF1ZVF1ZXJ5U2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJvb3ROb2RlcyA9IFt7IGVuZHBvaW50OiB0aGlzLmZhY2V0SWQgfV07XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgcXVlcnlDaGFuZ2VkID0gY2hhbmdlcy5xdWVyeVN0YWNrICYmIHRoaXMuaGFzUmVsZXZhbnRDaGFuZ2UoY2hhbmdlcy5xdWVyeVN0YWNrKTtcbiAgICBjb25zdCBmYWNldElkQ2hhbmdlZCA9IGNoYW5nZXMuZmFjZXRJZCAmJiBjaGFuZ2VzLmZhY2V0SWQuY3VycmVudFZhbHVlICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmlsdGVyRW5kcG9pbnQgPSBgJHt0aGlzLmZhY2V0SWR9OkZJTFRFUmA7XG5cbiAgICAvLyByZW1vdmUgdGhlIG9sZCBmYWNldElkXG4gICAgaWYgKGZhY2V0SWRDaGFuZ2VkICYmIGNoYW5nZXMuZmFjZXRJZC5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLnF1ZXJ5U3RhY2sgPSB0aGlzLnFzLnJlbW92ZVF1ZXJ5KHRoaXMucXVlcnlTdGFjaywgY2hhbmdlcy5mYWNldElkLnByZXZpb3VzVmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEV4dHJhY3Qgc2VsZWN0ZWQgb3B0aW9ucyBmcm9tIEZJTFRFUiBlbmRwb2ludFxuICAgIGNvbnN0IGZhY2V0ID0gdGhpcy5xcy5nZXRRdWVyeSh0aGlzLnF1ZXJ5U3RhY2ssIGZpbHRlckVuZHBvaW50KTtcbiAgICB0aGlzLnNlbGVjdGVkID0gZmFjZXQgPyBmYWNldC5wYXJhbWV0ZXJzLnZhbHVlIDogW107XG5cbiAgICAvLyBOb3cgcmVtb3ZlIHRoZSBmaWx0ZXIgYXMgd2UgZG8gbm90IG5lZWQgaXQgaW4gbXVsdGlzZWxlY3QgY2FzZVxuICAgIHRoaXMucXVlcnlTdGFjayA9IHRoaXMucXMucmVtb3ZlUXVlcnkodGhpcy5xdWVyeVN0YWNrLCBmaWx0ZXJFbmRwb2ludCk7XG5cbiAgICAvLyBBZGQgdGhlIGVuZHBvaW50IHRvIGZldGNoIHRoZSBmYWNldCBvcHRpb25zXG4gICAgdGhpcy5xdWVyeVN0YWNrID0gdGhpcy5xcy5hZGRRdWVyeSh0aGlzLnF1ZXJ5U3RhY2ssIHRoaXMuZmFjZXRJZCk7XG5cbiAgICBpZiAocXVlcnlDaGFuZ2VkIHx8IGZhY2V0SWRDaGFuZ2VkKSB7XG4gICAgICB0aGlzLnF1ZXJ5Q2hhbmdlLm5leHQodGhpcy5xdWVyeVN0YWNrKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh7IGZhY2V0SWQ6IHRoaXMuZmFjZXRJZCwgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlKCkge1xuICAgIHRoaXMucXVlcnlDaGFuZ2UubmV4dCh0aGlzLnF1ZXJ5U3RhY2spO1xuICB9XG5cbiAgaGFzUmVsZXZhbnRDaGFuZ2UocXVlcnlDaGFuZ2UpIHtcbiAgICBjb25zdCBmaWx0ZXJFbmRwb2ludCA9IGAke3RoaXMuZmFjZXRJZH06RklMVEVSYDtcblxuICAgIC8vIHRoZSBmaXJzdCBjaGFuZ2UgaXMgYWx3YXlzIHJlbGV2YW50XG4gICAgaWYgKHF1ZXJ5Q2hhbmdlLmZpcnN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBtYXliZSB0aGUgcXVlcnkgb2JqZWN0IHR1cm5zIG91dCB0aGUgc2FtZVxuICAgIGNvbnN0IHByZXYgPSBxdWVyeUNoYW5nZS5wcmV2aW91c1ZhbHVlO1xuICAgIGNvbnN0IGN1cnJlbnQgPSBxdWVyeUNoYW5nZS5jdXJyZW50VmFsdWU7XG4gICAgaWYgKGlzRXF1YWwocHJldiwgY3VycmVudCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAocHJldi5hcGlOYW1lICE9PSBjdXJyZW50LmFwaU5hbWUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZGaWx0ZXIgPSB0aGlzLnFzLmdldFF1ZXJ5KHByZXYsIGZpbHRlckVuZHBvaW50KTtcbiAgICBjb25zdCBjdXJyZW50RmlsdGVyID0gdGhpcy5xcy5nZXRRdWVyeShjdXJyZW50LCBmaWx0ZXJFbmRwb2ludCk7XG4gICAgaWYgKCFpc0VxdWFsKHByZXZGaWx0ZXIsIGN1cnJlbnRGaWx0ZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb21wYXJlT3B0aW9uKG8xOiBhbnksIG8yOiBhbnkpIHtcbiAgICByZXR1cm4gbzEgJiYgbzIgJiYgbzEuaWQgPT09IG8yLmlkO1xuICB9XG5cbiAgc2VsZWN0aW9uQ2hhbmdlKG8pIHtcbiAgICBjb25zdCBvcHRpb24gPSBvLm9wdGlvbi5fdmFsdWU7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBvLm9wdGlvbi5fc2VsZWN0ZWQ7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkID8gWy4uLnRoaXMuc2VsZWN0ZWQsIG9wdGlvbl0gOiB0aGlzLnNlbGVjdGVkLmZpbHRlcigobykgPT4gby5pZCAhPT0gb3B0aW9uLmlkKTtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoeyBmYWNldElkOiB0aGlzLmZhY2V0SWQsIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkIH0pO1xuICB9XG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCI+XG4gIDxzcGlucXVlLWV4cGFuZGFibGUtdHJlZVxuICAgIFtyb290Tm9kZXNRdWVyeV09XCJyb290Tm9kZXNcIlxuICAgIFtzZWxlY3RhYmxlXT1cInRydWVcIlxuICAgIFt0ZW1wbGF0ZVJlZl09XCJ0ZW1wbGF0ZVwiPlxuICA8L3NwaW5xdWUtZXhwYW5kYWJsZS10cmVlPlxuPC9kaXY+XG5cbiJdfQ==

@@ -237,2 +237,2 @@ import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';

}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtbXVsdGktbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvZmFjZXQvc3JjL2ZhY2V0LW11bHRpLWxpc3QvZmFjZXQtbXVsdGktbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvZmFjZXQvc3JjL2ZhY2V0LW11bHRpLWxpc3QvZmFjZXQtbXVsdGktbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQ3JDLEtBQUssRUFHTCxNQUFNLEVBQ1MsV0FBVyxFQUMzQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZUFBZSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7OztBQTJCekUsTUFBTSxPQUFPLHVCQUF1QjtJQWtDbEMsWUFBb0IsSUFBd0IsRUFBVSxFQUF1QjtRQUF6RCxTQUFJLEdBQUosSUFBSSxDQUFvQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBOUJwRSxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixVQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2IsU0FBSSxHQUFxQixPQUFPLENBQUM7UUFDakMsY0FBUyxHQUFtQixLQUFLLENBQUM7UUFFbEMsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVqQixXQUFNLEdBQUcsS0FBSyxDQUFD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QWdCQztxQkFDRjtpQkFDRjsySUFFVSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBY0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRW9CLFFBQVE7c0JBQWxDLFlBQVk7dUJBQUMsV0FBVztnQkFFaEIsYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFNwaW5xdWVGYWNldCwgU3BpbnF1ZVF1ZXJ5LCBTcGlucXVlUXVlcnlQYXJhbWV0ZXJzLCBTcGlucXVlUXVlcnlTZXJ2aWNlLCBTcGlucXVlUmVzdFNlcnZpY2UgfSBmcm9tICdzcGlucXVlLWFuZ3VsYXItdWknO1xuaW1wb3J0IHsgU3BpbnF1ZUZhY2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vZmFjZXQtY29tcG9uZW50LmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwaW5xdWUtZmFjZXQtbXVsdGktbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mYWNldC1tdWx0aS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnNwaW5xdWUtZmFjZXQtb3B0aW9ucyB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDUwMHB4O1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgIH1cbiAgICAgIC5sb2FkaW5nIHtcbiAgICAgICAgcGFkZGluZzogMjBweCAwO1xuICAgICAgfVxuICAgICAgLnNwaW5xdWUtZmFjZXQtb3B0aW9uLWxhYmVsIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTZweDtcbiAgICAgIH1cbiAgICAgIC5zcGlucXVlLWZhY2V0LW9wdGlvbi1jb3VudCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDRweDtcbiAgICAgICAgY29sb3I6ICM4ODg7XG4gICAgICB9XG4gICAgYFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZhY2V0TXVsdGlMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIFNwaW5xdWVGYWNldENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGZhY2V0SWQ6IHN0cmluZztcbiAgQElucHV0KCkgZmFjZXRQYXJhbWV0ZXJzOiBTcGlucXVlUXVlcnlQYXJhbWV0ZXJzW107XG4gIEBJbnB1dCgpIHF1ZXJ5U3RhY2s6IFNwaW5xdWVRdWVyeVtdO1xuICBASW5wdXQoKSBzY3JvbGxPZmZzZXQgPSA1MDtcbiAgQElucHV0KCkgY291bnQgPSAxMDI0O1xuICBASW5wdXQoKSBzb3J0OiAnbmFtZScgfCAnc2NvcmUnID0gJ3Njb3JlJztcbiAgQElucHV0KCkgc29ydE9yZGVyOiAnYXNjJyB8ICdkZXNjJyA9ICdhc2MnO1xuICBASW5wdXQoKSBzb3J0Rm46IChhOiBvYmplY3QsIGI6IG9iamVjdCkgPT4gbnVtYmVyO1xuICBASW5wdXQoKSBzaG93U2NvcmUgPSB0cnVlO1xuICBASW5wdXQoKSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgc2VhcmNoID0gZmFsc2U7XG5cbiAgQElucHV0KCkgaW5pdGlhbFN0YXRlOiAnc2VsZWN0ZWQnIHwgJ2Rlc2VsZWN0ZWQnID0gJ2Rlc2VsZWN0ZWQnO1xuXG4gIHB1YmxpYyB2aXNpYmxlID0gdHJ1ZTtcbiAgcHVibGljIG9wdGlvbnMgPSBbXTtcbiAgcHVibGljIHNlbGVjdGVkOiB7IGlkOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfVtdID0gW107XG4gIHB1YmxpYyBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgcHVibGljIGFsbExvYWRlZCA9IGZhbHNlO1xuICBwdWJsaWMgcXVlcnlDb250cm9sO1xuXG4gIGVycm9yO1xuXG4gIC8vIFdlIHVzZSBhbiBvYnNlcnZhYmxlIHNvIHRoYXQgd2UgY2FuIGNhbmNlbCBwcmV2aW91cyByZXF1ZXN0cyBmb3Igb3B0aW9ucyB0aGF0IGFyZSBzdGlsbCBydW5uaW5nXG4gIHF1ZXJ5Q2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmYWNldElkOiBzdHJpbmc7IHNlbGVjdGVkOiB7IGlkOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfVtdIH0+KCk7XG4gIEBPdXRwdXQoKSBkZXNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZhY2V0SWQ6IHN0cmluZzsgZGVzZWxlY3RlZDogc3RyaW5nW10gfT4oKTtcblxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBASW5wdXQoKSBvcHRpb25NYXBwaW5nID0gb3B0aW9uID0+IG9wdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3Q6IFNwaW5xdWVSZXN0U2VydmljZSwgcHJpdmF0ZSBxczogU3BpbnF1ZVF1ZXJ5U2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnF1ZXJ5Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICAgIHRoaXMucXVlcnlDaGFuZ2VcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy52aXNpYmxlKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBbXTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRGYWNldE9wdGlvbnMoMCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBkYXRhLm9wdGlvbnM7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxTdGF0ZSA9PT0gJ3NlbGVjdGVkJykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLm9wdGlvbnMubWFwKG8gPT4gKHsgaWQ6IG8uaWQsIHRpdGxlOiBvLnRpdGxlIH0pKVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCBxdWVyeUNoYW5nZWQgPSBjaGFuZ2VzLnF1ZXJ5U3RhY2sgJiYgdGhpcy5oYXNSZWxldmFudENoYW5nZShjaGFuZ2VzLnF1ZXJ5U3RhY2spO1xuICAgIGNvbnN0IGZhY2V0SWRDaGFuZ2VkID0gY2hhbmdlcy5mYWNldElkICYmIGNoYW5nZXMuZmFjZXRJZC5jdXJyZW50VmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmYWNldFBhcmFtZXRlcnNDaGFuZ2VkID0gY2hhbmdlcy5mYWNldFBhcmFtZXRlcnMgJiYgY2hhbmdlcy5mYWNldFBhcmFtZXRlcnMuY3VycmVudFZhbHVlICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmlsdGVyRW5kcG9pbnQgPSBgJHt0aGlzLmZhY2V0SWR9OkZJTFRFUmA7XG5cbiAgICAvLyByZW1vdmUgdGhlIG9sZCBmYWNldElkXG4gICAgaWYgKGZhY2V0SWRDaGFuZ2VkICYmIGNoYW5nZXMuZmFjZXRJZC5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLnF1ZXJ5U3RhY2sgPSB0aGlzLnFzLnJlbW92ZVF1ZXJ5KHRoaXMucXVlcnlTdGFjaywgY2hhbmdlcy5mYWNldElkLnByZXZpb3VzVmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoZmFjZXRQYXJhbWV0ZXJzQ2hhbmdlZCkge1xuICAgICAgdGhpcy5xdWVyeVN0YWNrID0gdGhpcy5xcy5yZW1vdmVRdWVyeSh0aGlzLnF1ZXJ5U3RhY2ssIHRoaXMuZmFjZXRJZCk7XG4gICAgfVxuXG4gICAgLy8gRXh0cmFjdCBzZWxlY3RlZCBvcHRpb25zIGZyb20gRklMVEVSIGVuZHBvaW50XG4gICAgY29uc3QgZmFjZXQgPSB0aGlzLnFzLmdldFF1ZXJ5KHRoaXMucXVlcnlTdGFjaywgZmlsdGVyRW5kcG9pbnQpO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWNldCA/IGZhY2V0LnBhcmFtZXRlcnMudmFsdWUgOiBbXTtcblxuICAgIC8vIE5vdyByZW1vdmUgdGhlIGZpbHRlciBhcyB3ZSBkbyBub3QgbmVlZCBpdCBpbiBtdWx0aXNlbGVjdCBjYXNlXG4gICAgdGhpcy5xdWVyeVN0YWNrID0gdGhpcy5xcy5yZW1vdmVRdWVyeSh0aGlzLnF1ZXJ5U3RhY2ssIGZpbHRlckVuZHBvaW50KTtcblxuICAgIC8vIEFkZCB0aGUgZW5kcG9pbnQgdG8gZmV0Y2ggdGhlIGZhY2V0IG9wdGlvbnNcbiAgICB0aGlzLnF1ZXJ5U3RhY2sgPSB0aGlzLnFzLmFkZFF1ZXJ5KHRoaXMucXVlcnlTdGFjaywgdGhpcy5mYWNldElkLCB0aGlzLmZhY2V0UGFyYW1ldGVycyk7XG5cbiAgICBpZiAocXVlcnlDaGFuZ2VkIHx8IGZhY2V0SWRDaGFuZ2VkIHx8IGZhY2V0UGFyYW1ldGVyc0NoYW5nZWQpIHtcbiAgICAgIHRoaXMucXVlcnlDaGFuZ2UubmV4dCh0aGlzLnF1ZXJ5U3RhY2spO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICB0aGlzLnNlbGVjdGVkID0gW107XG4gICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHsgZmFjZXRJZDogdGhpcy5mYWNldElkLCBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGUoKSB7XG4gICAgdGhpcy5xdWVyeUNoYW5nZS5uZXh0KHRoaXMucXVlcnlTdGFjayk7XG4gIH1cblxuICBoYXNSZWxldmFudENoYW5nZShxdWVyeUNoYW5nZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpbHRlckVuZHBvaW50ID0gYCR7dGhpcy5mYWNldElkfTpGSUxURVJgO1xuXG4gICAgLy8gdGhlIGZpcnN0IGNoYW5nZSBpcyBhbHdheXMgcmVsZXZhbnRcbiAgICBpZiAocXVlcnlDaGFuZ2UuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIG1heWJlIHRoZSBxdWVyeSBvYmplY3QgdHVybnMgb3V0IHRoZSBzYW1lXG4gICAgY29uc3QgcHJldiA9IHF1ZXJ5Q2hhbmdlLnByZXZpb3VzVmFsdWU7XG4gICAgY29uc3QgY3VycmVudCA9IHF1ZXJ5Q2hhbmdlLmN1cnJlbnRWYWx1ZTtcbiAgICBpZiAoaXNFcXVhbChwcmV2LCBjdXJyZW50KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChwcmV2LmFwaU5hbWUgIT09IGN1cnJlbnQuYXBpTmFtZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgcHJldkZpbHRlciA9IHRoaXMucXMuZ2V0UXVlcnkocHJldiwgZmlsdGVyRW5kcG9pbnQpO1xuICAgIGNvbnN0IGN1cnJlbnRGaWx0ZXIgPSB0aGlzLnFzLmdldFF1ZXJ5KGN1cnJlbnQsIGZpbHRlckVuZHBvaW50KTtcbiAgICBpZiAoIWlzRXF1YWwocHJldkZpbHRlciwgY3VycmVudEZpbHRlcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldEZhY2V0T3B0aW9ucyhvZmZzZXQ/KTogT2JzZXJ2YWJsZTxTcGlucXVlRmFjZXQ+IHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBjb3VudDogdGhpcy5jb3VudCxcbiAgICAgIG9mZnNldFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMucmVzdC5nZXRPcHRpb25zKHRoaXMucXVlcnlTdGFjaywgY29uZmlnKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoeyAuLi5yZXN1bHQsIG9wdGlvbnM6IHJlc3VsdC5vcHRpb25zLm1hcChvcHRpb24gPT4gdGhpcy5vcHRpb25NYXBwaW5nKG9wdGlvbikpIH0pKSxcbiAgICAgIHRhcChkYXRhID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5hbGxMb2FkZWQgPSBkYXRhLm9wdGlvbnMubGVuZ3RoIDwgdGhpcy5jb3VudDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IFsuLi50aGlzLnNlbGVjdGVkXTsgLy8gVGhlIG1hdC1saXN0LW9wdGlvbiBuZWVkcyBhIHJlc2V0IG9mIHRoaXNcbiAgICAgICAgaWYgKHRoaXMuc29ydEZuKSB7XG4gICAgICAgICAgZGF0YS5vcHRpb25zLnNvcnQodGhpcy5zb3J0Rm4pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc29ydCA9PT0gJ25hbWUnKSB7XG4gICAgICAgICAgZGF0YS5vcHRpb25zID1cbiAgICAgICAgICAgIHRoaXMuc29ydE9yZGVyID09PSAnZGVzYydcbiAgICAgICAgICAgICAgPyBkYXRhLm9wdGlvbnMuc29ydCgoYSwgYikgPT4gYi50aXRsZS50b1N0cmluZygpLmxvY2FsZUNvbXBhcmUoYS50aXRsZS50b1N0cmluZygpLCAnZW4tVVMnKSlcbiAgICAgICAgICAgICAgOiBkYXRhLm9wdGlvbnMuc29ydCgoYSwgYikgPT4gYS50aXRsZS50b1N0cmluZygpLmxvY2FsZUNvbXBhcmUoYi50aXRsZS50b1N0cmluZygpLCAnZW4tVVMnKSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yLmVycm9yIHx8IGVycm9yO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjb21wYXJlT3B0aW9uKG8xLCBvMikge1xuICAgIHJldHVybiBvMSAmJiBvMiAmJiBvMS5pZCA9PT0gbzIuaWQ7XG4gIH1cblxuICBzZWxlY3Rpb25DaGFuZ2Uobykge1xuICAgIGNvbnN0IG9wdGlvbiA9IG8ub3B0aW9uLl92YWx1ZTtcbiAgICBjb25zdCBzZWxlY3RlZCA9IG8ub3B0aW9uLl9zZWxlY3RlZDtcbiAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQgPyBbLi4udGhpcy5zZWxlY3RlZCwgb3B0aW9uXSA6IHRoaXMuc2VsZWN0ZWQuZmlsdGVyKG8gPT4gby5pZCAhPT0gb3B0aW9uLmlkKTtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoeyBmYWNldElkOiB0aGlzLmZhY2V0SWQsIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkIH0pO1xuICAgIGNvbnN0IGRlc2VsZWN0ZWQgPSB0aGlzLm9wdGlvbnMubWFwKG8gPT4gby5pZCkuZmlsdGVyKG8gPT4gIXRoaXMuc2VsZWN0ZWQuZmluZChzID0+IHMuaWQgPT09IG8pKTtcbiAgICB0aGlzLmRlc2VsZWN0ZWRDaGFuZ2UuZW1pdCh7IGZhY2V0SWQ6IHRoaXMuZmFjZXRJZCwgZGVzZWxlY3RlZCB9KTtcbiAgfVxuXG4gIHNldFNlbGVjdGlvbihvcHRpb25zOiBhbnlbXSkge1xuICAgIGNvbnN0IG9sZFNlbGVjdGVkID0gSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZCk7XG5cbiAgICBvcHRpb25zLmZvckVhY2gobyA9PiB7XG4gICAgICBjb25zdCBvcHRpb24gPSBvLm9wdGlvbi5fdmFsdWU7XG4gICAgICBpZiAoby5vcHRpb24uX3NlbGVjdGVkKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaWQgPT09IG9wdGlvbi5pZCkgPT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IFsuLi50aGlzLnNlbGVjdGVkLCBvcHRpb25dO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkLmZpbHRlcihvID0+IG8uaWQgIT09IG9wdGlvbi5pZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAob2xkU2VsZWN0ZWQgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoeyBmYWNldElkOiB0aGlzLmZhY2V0SWQsIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkIH0pO1xuICAgICAgY29uc3QgZGVzZWxlY3RlZCA9IHRoaXMub3B0aW9ucy5tYXAobyA9PiBvLmlkKS5maWx0ZXIobyA9PiAhdGhpcy5zZWxlY3RlZC5maW5kKHMgPT4gcy5pZCA9PT0gbykpO1xuICAgICAgdGhpcy5kZXNlbGVjdGVkQ2hhbmdlLmVtaXQoeyBmYWNldElkOiB0aGlzLmZhY2V0SWQsIGRlc2VsZWN0ZWQgfSk7XG4gICAgfVxuICB9XG5cbiAgbGlzdFNjcm9sbChldmVudCkge1xuICAgIGlmICh0aGlzLmlzTG9hZGluZyB8fCB0aGlzLmFsbExvYWRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBlbCA9IGV2ZW50LnRhcmdldDtcbiAgICBpZiAoZWwuc2Nyb2xsVG9wID4gMCAmJiBlbC5zY3JvbGxUb3AgKyBlbC5vZmZzZXRIZWlnaHQgPj0gZWwuc2Nyb2xsSGVpZ2h0IC0gdGhpcy5zY3JvbGxPZmZzZXQpIHtcbiAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMub3B0aW9ucy5sZW5ndGg7XG4gICAgICB0aGlzLmdldEZhY2V0T3B0aW9ucyhvZmZzZXQpXG4gICAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gKHsgLi4ucmVzdWx0LCBvcHRpb25zOiByZXN1bHQub3B0aW9ucy5tYXAob3B0aW9uID0+IHRoaXMub3B0aW9uTWFwcGluZyhvcHRpb24pKSB9KSkpXG4gICAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gWy4uLnRoaXMub3B0aW9ucywgLi4uZGF0YS5vcHRpb25zXTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCI+XG4gIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cInNlYXJjaFwiPlxuICAgIDxtYXQtbGFiZWw+PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwiU2VhcmNoIGluIHRoZSBmaWx0ZXIgb3B0aW9uc1wiIFtmb3JtQ29udHJvbF09XCJxdWVyeUNvbnRyb2xcIj5cbiAgICA8bWF0LWljb24gbWF0UHJlZml4PnNlYXJjaDwvbWF0LWljb24+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG4gIFxuICA8ZGl2IGNsYXNzPVwibG9hZGluZ1wiICpuZ0lmPVwiaXNMb2FkaW5nICYmICghb3B0aW9ucyB8fCBvcHRpb25zLmxlbmd0aCA9PT0gMClcIiBmeEZsZXggZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiNTBcIiBhcmlhLWxhYmVsPVwiTG9hZGluZyBvcHRpb25zXCI+PC9tYXQtc3Bpbm5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNwaW5xdWUtZmFjZXQtb3B0aW9uc1wiIChzY3JvbGwpPVwibGlzdFNjcm9sbCgkZXZlbnQpXCI+XG4gICAgPG1hdC1zZWxlY3Rpb24tbGlzdCBbbmdNb2RlbF09XCJzZWxlY3RlZFwiIFtjb21wYXJlV2l0aF09XCJjb21wYXJlT3B0aW9uXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgPG1hdC1saXN0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zXCIgW3ZhbHVlXT1cIntpZDogaXRlbS5pZCwgdGl0bGU6IGl0ZW0udGl0bGV9XCIgY2hlY2tib3hQb3NpdGlvbj1cImJlZm9yZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVSZWYgPyB0ZW1wbGF0ZVJlZiA6IHRlbXBsYXRlID8gdGVtcGxhdGUgOiBkZWZhdWx0VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuICAgIDwvbWF0LXNlbGVjdGlvbi1saXN0PlxuICA8L2Rpdj5cblxuXG4gIDxkaXYgY2xhc3M9XCJlcnJvclwiICpuZ0lmPVwiIWlzTG9hZGluZyAmJiBlcnJvclwiPlxuICAgIDxoMz5ObyByZXN1bHRzPC9oMz5cbiAgICA8cD5cbiAgICAgIENvdWxkIG5vdCBmZXRjaCBmYWNldCBvcHRpb25zLlxuICAgIDwvcD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlIGxldC1pdGVtICNkZWZhdWx0VGVtcGxhdGU+XG4gIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3BpbnF1ZS1mYWNldC1vcHRpb24tbGFiZWxcIiBmeEZsZXg+e3sgaXRlbS50aXRsZSB9fTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzcGlucXVlLWZhY2V0LW9wdGlvbi1jb3VudFwiICpuZ0lmPVwic2hvd1Njb3JlXCI+e3sgaXRlbS5zY29yZSB8IG51bWJlciB9fTwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtbXVsdGktbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvZmFjZXQvc3JjL2ZhY2V0LW11bHRpLWxpc3QvZmFjZXQtbXVsdGktbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvZmFjZXQvc3JjL2ZhY2V0LW11bHRpLWxpc3QvZmFjZXQtbXVsdGktbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQ3JDLEtBQUssRUFHTCxNQUFNLEVBQ1MsV0FBVyxFQUMzQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZUFBZSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7OztBQTJCekUsTUFBTSxPQUFPLHVCQUF1QjtJQWtDbEMsWUFBb0IsSUFBd0IsRUFBVSxFQUF1QjtRQUF6RCxTQUFJLEdBQUosSUFBSSxDQUFvQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBOUJwRSxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixVQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2IsU0FBSSxHQUFxQixPQUFPLENBQUM7UUFDakMsY0FBUyxHQUFtQixLQUFLLENBQUM7UUFFbEMsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVqQixXQUFNLEdBQUcsS0FBSyxDQUFD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QWdCQztxQkFDRjtpQkFDRjsySUFFVSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBY0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRW9CLFFBQVE7c0JBQWxDLFlBQVk7dUJBQUMsV0FBVztnQkFFaEIsYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFNwaW5xdWVGYWNldCwgU3BpbnF1ZVF1ZXJ5LCBTcGlucXVlUXVlcnlQYXJhbWV0ZXJzLCBTcGlucXVlUXVlcnlTZXJ2aWNlLCBTcGlucXVlUXVlcnlTdGFjaywgU3BpbnF1ZVJlc3RTZXJ2aWNlIH0gZnJvbSAnc3BpbnF1ZS1hbmd1bGFyLXVpJztcbmltcG9ydCB7IFNwaW5xdWVGYWNldENvbXBvbmVudCB9IGZyb20gJy4uL2ZhY2V0LWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcGlucXVlLWZhY2V0LW11bHRpLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmFjZXQtbXVsdGktbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5zcGlucXVlLWZhY2V0LW9wdGlvbnMge1xuICAgICAgICBtYXgtaGVpZ2h0OiA1MDBweDtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICB9XG4gICAgICAubG9hZGluZyB7XG4gICAgICAgIHBhZGRpbmc6IDIwcHggMDtcbiAgICAgIH1cbiAgICAgIC5zcGlucXVlLWZhY2V0LW9wdGlvbi1sYWJlbCB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7XG4gICAgICB9XG4gICAgICAuc3BpbnF1ZS1mYWNldC1vcHRpb24tY291bnQge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gICAgICAgIGNvbG9yOiAjODg4O1xuICAgICAgfVxuICAgIGBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBGYWNldE11bHRpTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBTcGlucXVlRmFjZXRDb21wb25lbnQge1xuICBASW5wdXQoKSBmYWNldElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZhY2V0UGFyYW1ldGVyczogU3BpbnF1ZVF1ZXJ5UGFyYW1ldGVyc1tdO1xuICBASW5wdXQoKSBxdWVyeVN0YWNrOiBTcGlucXVlUXVlcnlTdGFjaztcbiAgQElucHV0KCkgc2Nyb2xsT2Zmc2V0ID0gNTA7XG4gIEBJbnB1dCgpIGNvdW50ID0gMTAyNDtcbiAgQElucHV0KCkgc29ydDogJ25hbWUnIHwgJ3Njb3JlJyA9ICdzY29yZSc7XG4gIEBJbnB1dCgpIHNvcnRPcmRlcjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJztcbiAgQElucHV0KCkgc29ydEZuOiAoYTogb2JqZWN0LCBiOiBvYmplY3QpID0+IG51bWJlcjtcbiAgQElucHV0KCkgc2hvd1Njb3JlID0gdHJ1ZTtcbiAgQElucHV0KCkgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIHNlYXJjaCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGluaXRpYWxTdGF0ZTogJ3NlbGVjdGVkJyB8ICdkZXNlbGVjdGVkJyA9ICdkZXNlbGVjdGVkJztcblxuICBwdWJsaWMgdmlzaWJsZSA9IHRydWU7XG4gIHB1YmxpYyBvcHRpb25zID0gW107XG4gIHB1YmxpYyBzZWxlY3RlZDogeyBpZDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH1bXSA9IFtdO1xuICBwdWJsaWMgaXNMb2FkaW5nID0gZmFsc2U7XG4gIHB1YmxpYyBhbGxMb2FkZWQgPSBmYWxzZTtcbiAgcHVibGljIHF1ZXJ5Q29udHJvbDtcblxuICBlcnJvcjtcblxuICAvLyBXZSB1c2UgYW4gb2JzZXJ2YWJsZSBzbyB0aGF0IHdlIGNhbiBjYW5jZWwgcHJldmlvdXMgcmVxdWVzdHMgZm9yIG9wdGlvbnMgdGhhdCBhcmUgc3RpbGwgcnVubmluZ1xuICBxdWVyeUNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3QodW5kZWZpbmVkKTtcblxuICBAT3V0cHV0KCkgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmFjZXRJZDogc3RyaW5nOyBzZWxlY3RlZDogeyBpZDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH1bXSB9PigpO1xuICBAT3V0cHV0KCkgZGVzZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmYWNldElkOiBzdHJpbmc7IGRlc2VsZWN0ZWQ6IHN0cmluZ1tdIH0+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQElucHV0KCkgb3B0aW9uTWFwcGluZyA9IG9wdGlvbiA9PiBvcHRpb247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0OiBTcGlucXVlUmVzdFNlcnZpY2UsIHByaXZhdGUgcXM6IFNwaW5xdWVRdWVyeVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5xdWVyeUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICB0aGlzLnF1ZXJ5Q2hhbmdlXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMudmlzaWJsZSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gW107XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RmFjZXRPcHRpb25zKDApO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gZGF0YS5vcHRpb25zO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsU3RhdGUgPT09ICdzZWxlY3RlZCcpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5vcHRpb25zLm1hcChvID0+ICh7IGlkOiBvLmlkLCB0aXRsZTogby50aXRsZSB9KSlcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgcXVlcnlDaGFuZ2VkID0gY2hhbmdlcy5xdWVyeVN0YWNrICYmIHRoaXMuaGFzUmVsZXZhbnRDaGFuZ2UoY2hhbmdlcy5xdWVyeVN0YWNrKTtcbiAgICBjb25zdCBmYWNldElkQ2hhbmdlZCA9IGNoYW5nZXMuZmFjZXRJZCAmJiBjaGFuZ2VzLmZhY2V0SWQuY3VycmVudFZhbHVlICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmFjZXRQYXJhbWV0ZXJzQ2hhbmdlZCA9IGNoYW5nZXMuZmFjZXRQYXJhbWV0ZXJzICYmIGNoYW5nZXMuZmFjZXRQYXJhbWV0ZXJzLmN1cnJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZpbHRlckVuZHBvaW50ID0gYCR7dGhpcy5mYWNldElkfTpGSUxURVJgO1xuXG4gICAgLy8gcmVtb3ZlIHRoZSBvbGQgZmFjZXRJZFxuICAgIGlmIChmYWNldElkQ2hhbmdlZCAmJiBjaGFuZ2VzLmZhY2V0SWQucHJldmlvdXNWYWx1ZSkge1xuICAgICAgdGhpcy5xdWVyeVN0YWNrID0gdGhpcy5xcy5yZW1vdmVRdWVyeSh0aGlzLnF1ZXJ5U3RhY2ssIGNoYW5nZXMuZmFjZXRJZC5wcmV2aW91c1ZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKGZhY2V0UGFyYW1ldGVyc0NoYW5nZWQpIHtcbiAgICAgIHRoaXMucXVlcnlTdGFjayA9IHRoaXMucXMucmVtb3ZlUXVlcnkodGhpcy5xdWVyeVN0YWNrLCB0aGlzLmZhY2V0SWQpO1xuICAgIH1cblxuICAgIC8vIEV4dHJhY3Qgc2VsZWN0ZWQgb3B0aW9ucyBmcm9tIEZJTFRFUiBlbmRwb2ludFxuICAgIGNvbnN0IGZhY2V0ID0gdGhpcy5xcy5nZXRRdWVyeSh0aGlzLnF1ZXJ5U3RhY2ssIGZpbHRlckVuZHBvaW50KTtcbiAgICB0aGlzLnNlbGVjdGVkID0gZmFjZXQgPyBmYWNldC5wYXJhbWV0ZXJzLnZhbHVlIDogW107XG5cbiAgICAvLyBOb3cgcmVtb3ZlIHRoZSBmaWx0ZXIgYXMgd2UgZG8gbm90IG5lZWQgaXQgaW4gbXVsdGlzZWxlY3QgY2FzZVxuICAgIHRoaXMucXVlcnlTdGFjayA9IHRoaXMucXMucmVtb3ZlUXVlcnkodGhpcy5xdWVyeVN0YWNrLCBmaWx0ZXJFbmRwb2ludCk7XG5cbiAgICAvLyBBZGQgdGhlIGVuZHBvaW50IHRvIGZldGNoIHRoZSBmYWNldCBvcHRpb25zXG4gICAgdGhpcy5xdWVyeVN0YWNrID0gdGhpcy5xcy5hZGRRdWVyeSh0aGlzLnF1ZXJ5U3RhY2ssIHRoaXMuZmFjZXRJZCwgdGhpcy5mYWNldFBhcmFtZXRlcnMpO1xuXG4gICAgaWYgKHF1ZXJ5Q2hhbmdlZCB8fCBmYWNldElkQ2hhbmdlZCB8fCBmYWNldFBhcmFtZXRlcnNDaGFuZ2VkKSB7XG4gICAgICB0aGlzLnF1ZXJ5Q2hhbmdlLm5leHQodGhpcy5xdWVyeVN0YWNrKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh7IGZhY2V0SWQ6IHRoaXMuZmFjZXRJZCwgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlKCkge1xuICAgIHRoaXMucXVlcnlDaGFuZ2UubmV4dCh0aGlzLnF1ZXJ5U3RhY2spO1xuICB9XG5cbiAgaGFzUmVsZXZhbnRDaGFuZ2UocXVlcnlDaGFuZ2UpOiBib29sZWFuIHtcbiAgICBjb25zdCBmaWx0ZXJFbmRwb2ludCA9IGAke3RoaXMuZmFjZXRJZH06RklMVEVSYDtcblxuICAgIC8vIHRoZSBmaXJzdCBjaGFuZ2UgaXMgYWx3YXlzIHJlbGV2YW50XG4gICAgaWYgKHF1ZXJ5Q2hhbmdlLmZpcnN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBtYXliZSB0aGUgcXVlcnkgb2JqZWN0IHR1cm5zIG91dCB0aGUgc2FtZVxuICAgIGNvbnN0IHByZXYgPSBxdWVyeUNoYW5nZS5wcmV2aW91c1ZhbHVlO1xuICAgIGNvbnN0IGN1cnJlbnQgPSBxdWVyeUNoYW5nZS5jdXJyZW50VmFsdWU7XG4gICAgaWYgKGlzRXF1YWwocHJldiwgY3VycmVudCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAocHJldi5hcGlOYW1lICE9PSBjdXJyZW50LmFwaU5hbWUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZGaWx0ZXIgPSB0aGlzLnFzLmdldFF1ZXJ5KHByZXYsIGZpbHRlckVuZHBvaW50KTtcbiAgICBjb25zdCBjdXJyZW50RmlsdGVyID0gdGhpcy5xcy5nZXRRdWVyeShjdXJyZW50LCBmaWx0ZXJFbmRwb2ludCk7XG4gICAgaWYgKCFpc0VxdWFsKHByZXZGaWx0ZXIsIGN1cnJlbnRGaWx0ZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRGYWNldE9wdGlvbnMob2Zmc2V0Pyk6IE9ic2VydmFibGU8U3BpbnF1ZUZhY2V0PiB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuZXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgY291bnQ6IHRoaXMuY291bnQsXG4gICAgICBvZmZzZXRcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnJlc3QuZ2V0T3B0aW9ucyh0aGlzLnF1ZXJ5U3RhY2ssIGNvbmZpZykucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gKHsgLi4ucmVzdWx0LCBvcHRpb25zOiByZXN1bHQub3B0aW9ucy5tYXAob3B0aW9uID0+IHRoaXMub3B0aW9uTWFwcGluZyhvcHRpb24pKSB9KSksXG4gICAgICB0YXAoZGF0YSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuYWxsTG9hZGVkID0gZGF0YS5vcHRpb25zLmxlbmd0aCA8IHRoaXMuY291bnQ7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBbLi4udGhpcy5zZWxlY3RlZF07IC8vIFRoZSBtYXQtbGlzdC1vcHRpb24gbmVlZHMgYSByZXNldCBvZiB0aGlzXG4gICAgICAgIGlmICh0aGlzLnNvcnRGbikge1xuICAgICAgICAgIGRhdGEub3B0aW9ucy5zb3J0KHRoaXMuc29ydEZuKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNvcnQgPT09ICduYW1lJykge1xuICAgICAgICAgIGRhdGEub3B0aW9ucyA9XG4gICAgICAgICAgICB0aGlzLnNvcnRPcmRlciA9PT0gJ2Rlc2MnXG4gICAgICAgICAgICAgID8gZGF0YS5vcHRpb25zLnNvcnQoKGEsIGIpID0+IGIudGl0bGUudG9TdHJpbmcoKS5sb2NhbGVDb21wYXJlKGEudGl0bGUudG9TdHJpbmcoKSwgJ2VuLVVTJykpXG4gICAgICAgICAgICAgIDogZGF0YS5vcHRpb25zLnNvcnQoKGEsIGIpID0+IGEudGl0bGUudG9TdHJpbmcoKS5sb2NhbGVDb21wYXJlKGIudGl0bGUudG9TdHJpbmcoKSwgJ2VuLVVTJykpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvci5lcnJvciB8fCBlcnJvcjtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY29tcGFyZU9wdGlvbihvMSwgbzIpIHtcbiAgICByZXR1cm4gbzEgJiYgbzIgJiYgbzEuaWQgPT09IG8yLmlkO1xuICB9XG5cbiAgc2VsZWN0aW9uQ2hhbmdlKG8pIHtcbiAgICBjb25zdCBvcHRpb24gPSBvLm9wdGlvbi5fdmFsdWU7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBvLm9wdGlvbi5fc2VsZWN0ZWQ7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkID8gWy4uLnRoaXMuc2VsZWN0ZWQsIG9wdGlvbl0gOiB0aGlzLnNlbGVjdGVkLmZpbHRlcihvID0+IG8uaWQgIT09IG9wdGlvbi5pZCk7XG4gICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHsgZmFjZXRJZDogdGhpcy5mYWNldElkLCBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCB9KTtcbiAgICBjb25zdCBkZXNlbGVjdGVkID0gdGhpcy5vcHRpb25zLm1hcChvID0+IG8uaWQpLmZpbHRlcihvID0+ICF0aGlzLnNlbGVjdGVkLmZpbmQocyA9PiBzLmlkID09PSBvKSk7XG4gICAgdGhpcy5kZXNlbGVjdGVkQ2hhbmdlLmVtaXQoeyBmYWNldElkOiB0aGlzLmZhY2V0SWQsIGRlc2VsZWN0ZWQgfSk7XG4gIH1cblxuICBzZXRTZWxlY3Rpb24ob3B0aW9uczogYW55W10pIHtcbiAgICBjb25zdCBvbGRTZWxlY3RlZCA9IEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWQpO1xuXG4gICAgb3B0aW9ucy5mb3JFYWNoKG8gPT4ge1xuICAgICAgY29uc3Qgb3B0aW9uID0gby5vcHRpb24uX3ZhbHVlO1xuICAgICAgaWYgKG8ub3B0aW9uLl9zZWxlY3RlZCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09PSBvcHRpb24uaWQpID09PSAtMSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBbLi4udGhpcy5zZWxlY3RlZCwgb3B0aW9uXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5maWx0ZXIobyA9PiBvLmlkICE9PSBvcHRpb24uaWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKG9sZFNlbGVjdGVkICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHsgZmFjZXRJZDogdGhpcy5mYWNldElkLCBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCB9KTtcbiAgICAgIGNvbnN0IGRlc2VsZWN0ZWQgPSB0aGlzLm9wdGlvbnMubWFwKG8gPT4gby5pZCkuZmlsdGVyKG8gPT4gIXRoaXMuc2VsZWN0ZWQuZmluZChzID0+IHMuaWQgPT09IG8pKTtcbiAgICAgIHRoaXMuZGVzZWxlY3RlZENoYW5nZS5lbWl0KHsgZmFjZXRJZDogdGhpcy5mYWNldElkLCBkZXNlbGVjdGVkIH0pO1xuICAgIH1cbiAgfVxuXG4gIGxpc3RTY3JvbGwoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc0xvYWRpbmcgfHwgdGhpcy5hbGxMb2FkZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZWwgPSBldmVudC50YXJnZXQ7XG4gICAgaWYgKGVsLnNjcm9sbFRvcCA+IDAgJiYgZWwuc2Nyb2xsVG9wICsgZWwub2Zmc2V0SGVpZ2h0ID49IGVsLnNjcm9sbEhlaWdodCAtIHRoaXMuc2Nyb2xsT2Zmc2V0KSB7XG4gICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLm9wdGlvbnMubGVuZ3RoO1xuICAgICAgdGhpcy5nZXRGYWNldE9wdGlvbnMob2Zmc2V0KVxuICAgICAgICAucGlwZShtYXAocmVzdWx0ID0+ICh7IC4uLnJlc3VsdCwgb3B0aW9uczogcmVzdWx0Lm9wdGlvbnMubWFwKG9wdGlvbiA9PiB0aGlzLm9wdGlvbk1hcHBpbmcob3B0aW9uKSkgfSkpKVxuICAgICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgIHRoaXMub3B0aW9ucyA9IFsuLi50aGlzLm9wdGlvbnMsIC4uLmRhdGEub3B0aW9uc107XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiPlxuICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJzZWFyY2hcIj5cbiAgICA8bWF0LWxhYmVsPjwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBpbiB0aGUgZmlsdGVyIG9wdGlvbnNcIiBbZm9ybUNvbnRyb2xdPVwicXVlcnlDb250cm9sXCI+XG4gICAgPG1hdC1pY29uIG1hdFByZWZpeD5zZWFyY2g8L21hdC1pY29uPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuICBcbiAgPGRpdiBjbGFzcz1cImxvYWRpbmdcIiAqbmdJZj1cImlzTG9hZGluZyAmJiAoIW9wdGlvbnMgfHwgb3B0aW9ucy5sZW5ndGggPT09IDApXCIgZnhGbGV4IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cbiAgICA8bWF0LXNwaW5uZXIgW2RpYW1ldGVyXT1cIjUwXCIgYXJpYS1sYWJlbD1cIkxvYWRpbmcgb3B0aW9uc1wiPjwvbWF0LXNwaW5uZXI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzcGlucXVlLWZhY2V0LW9wdGlvbnNcIiAoc2Nyb2xsKT1cImxpc3RTY3JvbGwoJGV2ZW50KVwiPlxuICAgIDxtYXQtc2VsZWN0aW9uLWxpc3QgW25nTW9kZWxdPVwic2VsZWN0ZWRcIiBbY29tcGFyZVdpdGhdPVwiY29tcGFyZU9wdGlvblwiIChzZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDxtYXQtbGlzdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9uc1wiIFt2YWx1ZV09XCJ7aWQ6IGl0ZW0uaWQsIHRpdGxlOiBpdGVtLnRpdGxlfVwiIGNoZWNrYm94UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlUmVmID8gdGVtcGxhdGVSZWYgOiB0ZW1wbGF0ZSA/IHRlbXBsYXRlIDogZGVmYXVsdFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L21hdC1saXN0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cbiAgPC9kaXY+XG5cblxuICA8ZGl2IGNsYXNzPVwiZXJyb3JcIiAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgZXJyb3JcIj5cbiAgICA8aDM+Tm8gcmVzdWx0czwvaDM+XG4gICAgPHA+XG4gICAgICBDb3VsZCBub3QgZmV0Y2ggZmFjZXQgb3B0aW9ucy5cbiAgICA8L3A+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtaXRlbSAjZGVmYXVsdFRlbXBsYXRlPlxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cInNwaW5xdWUtZmFjZXQtb3B0aW9uLWxhYmVsXCIgZnhGbGV4Pnt7IGl0ZW0udGl0bGUgfX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3BpbnF1ZS1mYWNldC1vcHRpb24tY291bnRcIiAqbmdJZj1cInNob3dTY29yZVwiPnt7IGl0ZW0uc2NvcmUgfCBudW1iZXIgfX08L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19

@@ -156,2 +156,2 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';

}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwaW5xdWUtYW5ndWxhci11aS9mYWNldC9zcmMvZmFjZXQtc2xpZGVyL2ZhY2V0LXNsaWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvZmFjZXQvc3JjL2ZhY2V0LXNsaWRlci9mYWNldC1zbGlkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVU3RCxNQUFNLE9BQU8sMkJBQTJCO0lBc0J0QyxZQUFvQixJQUF3QixFQUFVLEVBQXVCO1FBQXpELFNBQUksR0FBSixJQUFJLENBQW9CO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBcUI7UUFsQnBFLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDM0IsMENBQTBDO1FBQ2pDLGtCQUFhLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLFVBQUssR0FBRyxhQUFhLENBQUM7UUFFL0Isa0JBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxrR0FBa0c7UUFDbEcsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV0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O29CQUNoQyxXQUFXLEVBQUUsK0JBQStCO29CQUM1QyxNQUFNLEVBQUUsRUFBRTtpQkFDWDsySUFFVSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBV0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFRSxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgJ2hhbW1lcmpzJztcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTcGlucXVlRmFjZXQsIFNwaW5xdWVSZXN0U2VydmljZSwgU3BpbnF1ZVF1ZXJ5LCBTcGlucXVlUXVlcnlQYXJhbWV0ZXJzLCBTcGlucXVlUXVlcnlTZXJ2aWNlIH0gZnJvbSAnc3BpbnF1ZS1hbmd1bGFyLXVpJztcbmltcG9ydCB7IFNwaW5xdWVGYWNldENvbXBvbmVudCB9IGZyb20gJy4uL2ZhY2V0LWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwaW5xdWUtZmFjZXQtc2xpZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZhY2V0LXNsaWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgU3BpbnF1ZUZhY2V0U2xpZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIFNwaW5xdWVGYWNldENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGZhY2V0SWQ6IHN0cmluZztcbiAgQElucHV0KCkgZmFjZXRQYXJhbWV0ZXJzOiBTcGlucXVlUXVlcnlQYXJhbWV0ZXJzW107XG4gIEBJbnB1dCgpIHF1ZXJ5U3RhY2s6IFNwaW5xdWVRdWVyeVtdO1xuICBASW5wdXQoKSBzaG93TGFiZWxzID0gdHJ1ZTtcbiAgLy8gQElucHV0KCkgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIHBhcmFtZXRlck5hbWUgPSAndmFsdWUnO1xuICBASW5wdXQoKSBsYWJlbCA9ICdQaWNrIGEgZGF0ZSc7XG5cbiAgZGF0ZUZvcm1GaWVsZCA9IG5ldyBGb3JtQ29udHJvbCgwKTtcbiAgLy8gV2UgdXNlIGFuIG9ic2VydmFibGUgc28gdGhhdCB3ZSBjYW4gY2FuY2VsIHByZXZpb3VzIHJlcXVlc3RzIGZvciBvcHRpb25zIHRoYXQgYXJlIHN0aWxsIHJ1bm5pbmdcbiAgcXVlcnlDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XG5cbiAgcHVibGljIHZpc2libGUgPSB0cnVlO1xuICBwdWJsaWMgb3B0aW9ucyA9IFtdO1xuICBwdWJsaWMgaXNMb2FkaW5nID0gZmFsc2U7XG4gIHB1YmxpYyBzZWxlY3RlZCA9IFtdO1xuXG4gIEBPdXRwdXQoKSBkYXRlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmYWNldElkOiBzdHJpbmc7IGRhdGU6IHN0cmluZzsgfT4oKTtcblxuICBASW5wdXQoKSBvcHRpb25NYXBwaW5nID0gb3B0aW9uID0+IG9wdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3Q6IFNwaW5xdWVSZXN0U2VydmljZSwgcHJpdmF0ZSBxczogU3BpbnF1ZVF1ZXJ5U2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmRhdGVGb3JtRmllbGQuZGlzYWJsZSgpO1xuXG4gICAgdGhpcy5kYXRlRm9ybUZpZWxkLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGRhdGUpID0+IHtcbiAgICAgIGlmICh0aGlzLmdldFJlYWxEYXRlKGRhdGUpLmdldFRpbWUoKSA9PT0gdGhpcy5taW4pIHtcbiAgICAgICAgdGhpcy5kYXRlQ2hhbmdlZC5lbWl0KHsgZmFjZXRJZDogdGhpcy5mYWNldElkLCBkYXRlOiB1bmRlZmluZWQgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGF0ZUNoYW5nZWQuZW1pdCh7IGZhY2V0SWQ6IHRoaXMuZmFjZXRJZCwgZGF0ZTogdGhpcy5mb3JtYXQoZGF0ZSkgfSlcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucXVlcnlDaGFuZ2VcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy52aXNpYmxlKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBbXTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRGYWNldE9wdGlvbnMoMCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICB0aGlzLmRhdGVGb3JtRmllbGQuZW5hYmxlKCk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IGRhdGEub3B0aW9ucztcbiAgICAgICAgdGhpcy5kYXRlRm9ybUZpZWxkLnBhdGNoVmFsdWUodGhpcy5tYXggLSB0aGlzLm1pbik7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCBxdWVyeUNoYW5nZWQgPSBjaGFuZ2VzLnF1ZXJ5U3RhY2sgJiYgdGhpcy5oYXNSZWxldmFudENoYW5nZShjaGFuZ2VzLnF1ZXJ5U3RhY2spO1xuICAgIGNvbnN0IGZhY2V0SWRDaGFuZ2VkID0gY2hhbmdlcy5mYWNldElkICYmIGNoYW5nZXMuZmFjZXRJZC5jdXJyZW50VmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmYWNldFBhcmFtZXRlcnNDaGFuZ2VkID0gY2hhbmdlcy5mYWNldFBhcmFtZXRlcnMgJiYgY2hhbmdlcy5mYWNldFBhcmFtZXRlcnMuY3VycmVudFZhbHVlICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmlsdGVyRW5kcG9pbnQgPSBgJHt0aGlzLmZhY2V0SWR9OkZJTFRFUmA7XG5cbiAgICAvLyByZW1vdmUgdGhlIG9sZCBmYWNldElkXG4gICAgaWYgKGZhY2V0SWRDaGFuZ2VkICYmIGNoYW5nZXMuZmFjZXRJZC5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLnF1ZXJ5U3RhY2sgPSB0aGlzLnFzLnJlbW92ZVF1ZXJ5KHRoaXMucXVlcnlTdGFjaywgY2hhbmdlcy5mYWNldElkLnByZXZpb3VzVmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoZmFjZXRQYXJhbWV0ZXJzQ2hhbmdlZCkge1xuICAgICAgdGhpcy5xdWVyeVN0YWNrID0gdGhpcy5xcy5yZW1vdmVRdWVyeSh0aGlzLnF1ZXJ5U3RhY2ssIHRoaXMuZmFjZXRJZCk7XG4gICAgfVxuXG4gICAgLy8gLy8gRXh0cmFjdCBzZWxlY3RlZCBvcHRpb25zIGZyb20gRklMVEVSIGVuZHBvaW50XG4gICAgLy8gY29uc3QgZmFjZXQgPSB0aGlzLnFzLmdldFF1ZXJ5KHRoaXMucXVlcnlTdGFjaywgZmlsdGVyRW5kcG9pbnQpO1xuICAgIC8vIHRoaXMuc2VsZWN0ZWQgPSBmYWNldCA/IGZhY2V0LnBhcmFtZXRlcnNbdGhpcy5wYXJhbWV0ZXJOYW1lXSA6IFtdO1xuXG4gICAgLy8gTm93IHJlbW92ZSB0aGUgZmlsdGVyIGFzIHdlIGRvIG5vdCBuZWVkIGl0IGluIG11bHRpc2VsZWN0IGNhc2VcbiAgICB0aGlzLnF1ZXJ5U3RhY2sgPSB0aGlzLnFzLnJlbW92ZVF1ZXJ5KHRoaXMucXVlcnlTdGFjaywgZmlsdGVyRW5kcG9pbnQpO1xuXG4gICAgLy8gQWRkIHRoZSBlbmRwb2ludCB0byBmZXRjaCB0aGUgZmFjZXQgb3B0aW9uc1xuICAgIHRoaXMucXVlcnlTdGFjayA9IHRoaXMucXMuYWRkUXVlcnkodGhpcy5xdWVyeVN0YWNrLCB0aGlzLmZhY2V0SWQsIHRoaXMuZmFjZXRQYXJhbWV0ZXJzKTtcblxuICAgIGlmIChxdWVyeUNoYW5nZWQgfHwgZmFjZXRJZENoYW5nZWQgfHwgZmFjZXRQYXJhbWV0ZXJzQ2hhbmdlZCkge1xuICAgICAgdGhpcy5xdWVyeUNoYW5nZS5uZXh0KHRoaXMucXVlcnlTdGFjayk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZSgpIHtcbiAgICAvLyB0aGlzLnF1ZXJ5Q2hhbmdlLm5leHQodGhpcy5xdWVyeVN0YWNrKTtcbiAgfVxuXG4gIGhhc1JlbGV2YW50Q2hhbmdlKHF1ZXJ5Q2hhbmdlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZmlsdGVyRW5kcG9pbnQgPSBgJHt0aGlzLmZhY2V0SWR9OkZJTFRFUmA7XG5cbiAgICAvLyB0aGUgZmlyc3QgY2hhbmdlIGlzIGFsd2F5cyByZWxldmFudFxuICAgIGlmIChxdWVyeUNoYW5nZS5maXJzdENoYW5nZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gbWF5YmUgdGhlIHF1ZXJ5IG9iamVjdCB0dXJucyBvdXQgdGhlIHNhbWVcbiAgICBjb25zdCBwcmV2ID0gcXVlcnlDaGFuZ2UucHJldmlvdXNWYWx1ZTtcbiAgICBjb25zdCBjdXJyZW50ID0gcXVlcnlDaGFuZ2UuY3VycmVudFZhbHVlO1xuICAgIGlmIChpc0VxdWFsKHByZXYsIGN1cnJlbnQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHByZXYuYXBpTmFtZSAhPT0gY3VycmVudC5hcGlOYW1lKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2RmlsdGVyID0gdGhpcy5xcy5nZXRRdWVyeShwcmV2LCBmaWx0ZXJFbmRwb2ludCk7XG4gICAgY29uc3QgY3VycmVudEZpbHRlciA9IHRoaXMucXMuZ2V0UXVlcnkoY3VycmVudCwgZmlsdGVyRW5kcG9pbnQpO1xuICAgIGlmICghaXNFcXVhbChwcmV2RmlsdGVyLCBjdXJyZW50RmlsdGVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2xlYXIoKSB7fVxuXG4gIGdldEZhY2V0T3B0aW9ucyhvZmZzZXQ/KTogT2JzZXJ2YWJsZTxTcGlucXVlRmFjZXQ+IHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5yZXN0LmdldE9wdGlvbnModGhpcy5xdWVyeVN0YWNrKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoeyAuLi5yZXN1bHQsIG9wdGlvbnM6IHJlc3VsdC5vcHRpb25zLm1hcChvcHRpb24gPT4gdGhpcy5vcHRpb25NYXBwaW5nKG9wdGlvbikpIH0pKSxcbiAgICAgIHRhcChkYXRhID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGNvbXBhcmVPcHRpb24obzEsIG8yKSB7XG4gICAgcmV0dXJuIG8xICYmIG8yICYmIG8xLmlkID09PSBvMi5pZDtcbiAgfVxuXG4gIGdldCBtaW4oKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucyB8fCB0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgubWluKC4uLnRoaXMub3B0aW9ucy5tYXAobyA9PiAobmV3IERhdGUoby50aXRsZSkpLmdldFRpbWUoKSkpO1xuICB9XG5cbiAgZ2V0IG1heCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5vcHRpb25zIHx8IHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5tYXgoLi4udGhpcy5vcHRpb25zLm1hcChvID0+IChuZXcgRGF0ZShvLnRpdGxlKSkuZ2V0VGltZSgpKSk7XG4gIH1cblxuICBnZXRSZWFsRGF0ZSh2YWx1ZTogbnVtYmVyKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMubWluICsgLTEgKiAodmFsdWUgLSAodGhpcy5tYXggLSB0aGlzLm1pbikpKTtcbiAgfVxuXG4gIGZvcm1hdCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRlID0gdGhpcy5nZXRSZWFsRGF0ZSh2YWx1ZSk7XG4gICAgcmV0dXJuIGAke2RhdGUuZ2V0RnVsbFllYXIoKX0tJHtkYXRlLmdldE1vbnRoKCkgPCA5ID8gJzAnIDogJyd9JHtkYXRlLmdldE1vbnRoKCkrMX0tJHtkYXRlLmdldERhdGUoKSA8IDkgPyAnMCcgOiAnJ30ke2RhdGUuZ2V0RGF0ZSgpfWA7XG4gIH1cblxufVxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiPlxuXG4gIDxkaXYgc3R5bGU9XCJmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjMzMzOyBtYXJnaW46IDMycHggMCAxNnB4XCI+e3sgbGFiZWwgfX08L2Rpdj5cblxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgc3R5bGU9XCJmb250LXNpemU6IDEycHg7IGNvbG9yOiAjOTk5OyBwYWRkaW5nOiAwIDhweFwiPlxuICAgIDxzcGFuICpuZ0lmPVwiIWlzTG9hZGluZyAmJiBkYXRlRm9ybUZpZWxkLnZhbHVlICE9PSB1bmRlZmluZWRcIj57eyBnZXRSZWFsRGF0ZShkYXRlRm9ybUZpZWxkLnZhbHVlKSB8IGRhdGU6J2QgTU1NTSB5eXl5JyB9fTwvc3Bhbj5cbiAgICAmbmJzcDtcbiAgPC9kaXY+XG5cbiAgPG1hdC1zbGlkZXJcbiAgICBbZm9ybUNvbnRyb2xdPVwiZGF0ZUZvcm1GaWVsZFwiXG4gICAgW2ludmVydF09XCJ0cnVlXCJcbiAgICBbc3RlcF09XCIxMDAwICogNjAgKiA2MCAqIDI0XCJcbiAgICBbbWluXT1cIjBcIlxuICAgIFttYXhdPVwibWF4IC0gbWluXCJcbiAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cbiAgPC9tYXQtc2xpZGVyPlxuXG4gIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBzdGFydFwiIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzk5OTsgcGFkZGluZzogMCA4cHhcIiAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cbiAgICA8ZGl2Pnt7IG1pbiB8IGRhdGU6J2QgTU1NTSB5eXl5JyB9fTwvZGl2PlxuICAgIDxkaXY+e3sgbWF4IHwgZGF0ZTonZCBNTU1NIHl5eXknIH19PC9kaXY+ICBcbiAgPC9kaXY+XG5cbjwvZGl2PlxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwaW5xdWUtYW5ndWxhci11aS9mYWNldC9zcmMvZmFjZXQtc2xpZGVyL2ZhY2V0LXNsaWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvZmFjZXQvc3JjL2ZhY2V0LXNsaWRlci9mYWNldC1zbGlkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVU3RCxNQUFNLE9BQU8sMkJBQTJCO0lBc0J0QyxZQUFvQixJQUF3QixFQUFVLEVBQXVCO1FBQXpELFNBQUksR0FBSixJQUFJLENBQW9CO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBcUI7UUFsQnBFLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDM0IsMENBQTBDO1FBQ2pDLGtCQUFhLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLFVBQUssR0FBRyxhQUFhLENBQUM7UUFFL0Isa0JBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxrR0FBa0c7UUFDbEcsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV0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O29CQUNoQyxXQUFXLEVBQUUsK0JBQStCO29CQUM1QyxNQUFNLEVBQUUsRUFBRTtpQkFDWDsySUFFVSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBV0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFRSxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgJ2hhbW1lcmpzJztcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTcGlucXVlRmFjZXQsIFNwaW5xdWVSZXN0U2VydmljZSwgU3BpbnF1ZVF1ZXJ5LCBTcGlucXVlUXVlcnlQYXJhbWV0ZXJzLCBTcGlucXVlUXVlcnlTZXJ2aWNlLCBTcGlucXVlUXVlcnlTdGFjayB9IGZyb20gJ3NwaW5xdWUtYW5ndWxhci11aSc7XG5pbXBvcnQgeyBTcGlucXVlRmFjZXRDb21wb25lbnQgfSBmcm9tICcuLi9mYWNldC1jb21wb25lbnQuaW50ZXJmYWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcGlucXVlLWZhY2V0LXNsaWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mYWNldC1zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIFNwaW5xdWVGYWNldFNsaWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBTcGlucXVlRmFjZXRDb21wb25lbnQge1xuICBASW5wdXQoKSBmYWNldElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZhY2V0UGFyYW1ldGVyczogU3BpbnF1ZVF1ZXJ5UGFyYW1ldGVyc1tdO1xuICBASW5wdXQoKSBxdWVyeVN0YWNrOiBTcGlucXVlUXVlcnlTdGFjaztcbiAgQElucHV0KCkgc2hvd0xhYmVscyA9IHRydWU7XG4gIC8vIEBJbnB1dCgpIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBwYXJhbWV0ZXJOYW1lID0gJ3ZhbHVlJztcbiAgQElucHV0KCkgbGFiZWwgPSAnUGljayBhIGRhdGUnO1xuXG4gIGRhdGVGb3JtRmllbGQgPSBuZXcgRm9ybUNvbnRyb2woMCk7XG4gIC8vIFdlIHVzZSBhbiBvYnNlcnZhYmxlIHNvIHRoYXQgd2UgY2FuIGNhbmNlbCBwcmV2aW91cyByZXF1ZXN0cyBmb3Igb3B0aW9ucyB0aGF0IGFyZSBzdGlsbCBydW5uaW5nXG4gIHF1ZXJ5Q2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyB2aXNpYmxlID0gdHJ1ZTtcbiAgcHVibGljIG9wdGlvbnMgPSBbXTtcbiAgcHVibGljIGlzTG9hZGluZyA9IGZhbHNlO1xuICBwdWJsaWMgc2VsZWN0ZWQgPSBbXTtcblxuICBAT3V0cHV0KCkgZGF0ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmFjZXRJZDogc3RyaW5nOyBkYXRlOiBzdHJpbmc7IH0+KCk7XG5cbiAgQElucHV0KCkgb3B0aW9uTWFwcGluZyA9IG9wdGlvbiA9PiBvcHRpb247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0OiBTcGlucXVlUmVzdFNlcnZpY2UsIHByaXZhdGUgcXM6IFNwaW5xdWVRdWVyeVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kYXRlRm9ybUZpZWxkLmRpc2FibGUoKTtcblxuICAgIHRoaXMuZGF0ZUZvcm1GaWVsZC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChkYXRlKSA9PiB7XG4gICAgICBpZiAodGhpcy5nZXRSZWFsRGF0ZShkYXRlKS5nZXRUaW1lKCkgPT09IHRoaXMubWluKSB7XG4gICAgICAgIHRoaXMuZGF0ZUNoYW5nZWQuZW1pdCh7IGZhY2V0SWQ6IHRoaXMuZmFjZXRJZCwgZGF0ZTogdW5kZWZpbmVkIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGVDaGFuZ2VkLmVtaXQoeyBmYWNldElkOiB0aGlzLmZhY2V0SWQsIGRhdGU6IHRoaXMuZm9ybWF0KGRhdGUpIH0pXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnF1ZXJ5Q2hhbmdlXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMudmlzaWJsZSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gW107XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RmFjZXRPcHRpb25zKDApO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgdGhpcy5kYXRlRm9ybUZpZWxkLmVuYWJsZSgpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBkYXRhLm9wdGlvbnM7XG4gICAgICAgIHRoaXMuZGF0ZUZvcm1GaWVsZC5wYXRjaFZhbHVlKHRoaXMubWF4IC0gdGhpcy5taW4pO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgcXVlcnlDaGFuZ2VkID0gY2hhbmdlcy5xdWVyeVN0YWNrICYmIHRoaXMuaGFzUmVsZXZhbnRDaGFuZ2UoY2hhbmdlcy5xdWVyeVN0YWNrKTtcbiAgICBjb25zdCBmYWNldElkQ2hhbmdlZCA9IGNoYW5nZXMuZmFjZXRJZCAmJiBjaGFuZ2VzLmZhY2V0SWQuY3VycmVudFZhbHVlICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmFjZXRQYXJhbWV0ZXJzQ2hhbmdlZCA9IGNoYW5nZXMuZmFjZXRQYXJhbWV0ZXJzICYmIGNoYW5nZXMuZmFjZXRQYXJhbWV0ZXJzLmN1cnJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZpbHRlckVuZHBvaW50ID0gYCR7dGhpcy5mYWNldElkfTpGSUxURVJgO1xuXG4gICAgLy8gcmVtb3ZlIHRoZSBvbGQgZmFjZXRJZFxuICAgIGlmIChmYWNldElkQ2hhbmdlZCAmJiBjaGFuZ2VzLmZhY2V0SWQucHJldmlvdXNWYWx1ZSkge1xuICAgICAgdGhpcy5xdWVyeVN0YWNrID0gdGhpcy5xcy5yZW1vdmVRdWVyeSh0aGlzLnF1ZXJ5U3RhY2ssIGNoYW5nZXMuZmFjZXRJZC5wcmV2aW91c1ZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKGZhY2V0UGFyYW1ldGVyc0NoYW5nZWQpIHtcbiAgICAgIHRoaXMucXVlcnlTdGFjayA9IHRoaXMucXMucmVtb3ZlUXVlcnkodGhpcy5xdWVyeVN0YWNrLCB0aGlzLmZhY2V0SWQpO1xuICAgIH1cblxuICAgIC8vIC8vIEV4dHJhY3Qgc2VsZWN0ZWQgb3B0aW9ucyBmcm9tIEZJTFRFUiBlbmRwb2ludFxuICAgIC8vIGNvbnN0IGZhY2V0ID0gdGhpcy5xcy5nZXRRdWVyeSh0aGlzLnF1ZXJ5U3RhY2ssIGZpbHRlckVuZHBvaW50KTtcbiAgICAvLyB0aGlzLnNlbGVjdGVkID0gZmFjZXQgPyBmYWNldC5wYXJhbWV0ZXJzW3RoaXMucGFyYW1ldGVyTmFtZV0gOiBbXTtcblxuICAgIC8vIE5vdyByZW1vdmUgdGhlIGZpbHRlciBhcyB3ZSBkbyBub3QgbmVlZCBpdCBpbiBtdWx0aXNlbGVjdCBjYXNlXG4gICAgdGhpcy5xdWVyeVN0YWNrID0gdGhpcy5xcy5yZW1vdmVRdWVyeSh0aGlzLnF1ZXJ5U3RhY2ssIGZpbHRlckVuZHBvaW50KTtcblxuICAgIC8vIEFkZCB0aGUgZW5kcG9pbnQgdG8gZmV0Y2ggdGhlIGZhY2V0IG9wdGlvbnNcbiAgICB0aGlzLnF1ZXJ5U3RhY2sgPSB0aGlzLnFzLmFkZFF1ZXJ5KHRoaXMucXVlcnlTdGFjaywgdGhpcy5mYWNldElkLCB0aGlzLmZhY2V0UGFyYW1ldGVycyk7XG5cbiAgICBpZiAocXVlcnlDaGFuZ2VkIHx8IGZhY2V0SWRDaGFuZ2VkIHx8IGZhY2V0UGFyYW1ldGVyc0NoYW5nZWQpIHtcbiAgICAgIHRoaXMucXVlcnlDaGFuZ2UubmV4dCh0aGlzLnF1ZXJ5U3RhY2spO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGUoKSB7XG4gICAgLy8gdGhpcy5xdWVyeUNoYW5nZS5uZXh0KHRoaXMucXVlcnlTdGFjayk7XG4gIH1cblxuICBoYXNSZWxldmFudENoYW5nZShxdWVyeUNoYW5nZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpbHRlckVuZHBvaW50ID0gYCR7dGhpcy5mYWNldElkfTpGSUxURVJgO1xuXG4gICAgLy8gdGhlIGZpcnN0IGNoYW5nZSBpcyBhbHdheXMgcmVsZXZhbnRcbiAgICBpZiAocXVlcnlDaGFuZ2UuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIG1heWJlIHRoZSBxdWVyeSBvYmplY3QgdHVybnMgb3V0IHRoZSBzYW1lXG4gICAgY29uc3QgcHJldiA9IHF1ZXJ5Q2hhbmdlLnByZXZpb3VzVmFsdWU7XG4gICAgY29uc3QgY3VycmVudCA9IHF1ZXJ5Q2hhbmdlLmN1cnJlbnRWYWx1ZTtcbiAgICBpZiAoaXNFcXVhbChwcmV2LCBjdXJyZW50KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChwcmV2LmFwaU5hbWUgIT09IGN1cnJlbnQuYXBpTmFtZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgcHJldkZpbHRlciA9IHRoaXMucXMuZ2V0UXVlcnkocHJldiwgZmlsdGVyRW5kcG9pbnQpO1xuICAgIGNvbnN0IGN1cnJlbnRGaWx0ZXIgPSB0aGlzLnFzLmdldFF1ZXJ5KGN1cnJlbnQsIGZpbHRlckVuZHBvaW50KTtcbiAgICBpZiAoIWlzRXF1YWwocHJldkZpbHRlciwgY3VycmVudEZpbHRlcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNsZWFyKCkge31cblxuICBnZXRGYWNldE9wdGlvbnMob2Zmc2V0Pyk6IE9ic2VydmFibGU8U3BpbnF1ZUZhY2V0PiB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5nZXRPcHRpb25zKHRoaXMucXVlcnlTdGFjaykucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gKHsgLi4ucmVzdWx0LCBvcHRpb25zOiByZXN1bHQub3B0aW9ucy5tYXAob3B0aW9uID0+IHRoaXMub3B0aW9uTWFwcGluZyhvcHRpb24pKSB9KSksXG4gICAgICB0YXAoZGF0YSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjb21wYXJlT3B0aW9uKG8xLCBvMikge1xuICAgIHJldHVybiBvMSAmJiBvMiAmJiBvMS5pZCA9PT0gbzIuaWQ7XG4gIH1cblxuICBnZXQgbWluKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMgfHwgdGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLm1pbiguLi50aGlzLm9wdGlvbnMubWFwKG8gPT4gKG5ldyBEYXRlKG8udGl0bGUpKS5nZXRUaW1lKCkpKTtcbiAgfVxuXG4gIGdldCBtYXgoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucyB8fCB0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgubWF4KC4uLnRoaXMub3B0aW9ucy5tYXAobyA9PiAobmV3IERhdGUoby50aXRsZSkpLmdldFRpbWUoKSkpO1xuICB9XG5cbiAgZ2V0UmVhbERhdGUodmFsdWU6IG51bWJlcik6IERhdGUge1xuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLm1pbiArIC0xICogKHZhbHVlIC0gKHRoaXMubWF4IC0gdGhpcy5taW4pKSk7XG4gIH1cblxuICBmb3JtYXQodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuZ2V0UmVhbERhdGUodmFsdWUpO1xuICAgIHJldHVybiBgJHtkYXRlLmdldEZ1bGxZZWFyKCl9LSR7ZGF0ZS5nZXRNb250aCgpIDwgOSA/ICcwJyA6ICcnfSR7ZGF0ZS5nZXRNb250aCgpKzF9LSR7ZGF0ZS5nZXREYXRlKCkgPCA5ID8gJzAnIDogJyd9JHtkYXRlLmdldERhdGUoKX1gO1xuICB9XG5cbn1cbiIsIjxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cblxuICA8ZGl2IHN0eWxlPVwiZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzMzMzsgbWFyZ2luOiAzMnB4IDAgMTZweFwiPnt7IGxhYmVsIH19PC9kaXY+XG5cbiAgPGRpdiBmeExheW91dD1cInJvd1wiIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzk5OTsgcGFkZGluZzogMCA4cHhcIj5cbiAgICA8c3BhbiAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgZGF0ZUZvcm1GaWVsZC52YWx1ZSAhPT0gdW5kZWZpbmVkXCI+e3sgZ2V0UmVhbERhdGUoZGF0ZUZvcm1GaWVsZC52YWx1ZSkgfCBkYXRlOidkIE1NTU0geXl5eScgfX08L3NwYW4+XG4gICAgJm5ic3A7XG4gIDwvZGl2PlxuXG4gIDxtYXQtc2xpZGVyXG4gICAgW2Zvcm1Db250cm9sXT1cImRhdGVGb3JtRmllbGRcIlxuICAgIFtpbnZlcnRdPVwidHJ1ZVwiXG4gICAgW3N0ZXBdPVwiMTAwMCAqIDYwICogNjAgKiAyNFwiXG4gICAgW21pbl09XCIwXCJcbiAgICBbbWF4XT1cIm1heCAtIG1pblwiXG4gICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XG4gIDwvbWF0LXNsaWRlcj5cblxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gc3RhcnRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICM5OTk7IHBhZGRpbmc6IDAgOHB4XCIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XG4gICAgPGRpdj57eyBtaW4gfCBkYXRlOidkIE1NTU0geXl5eScgfX08L2Rpdj5cbiAgICA8ZGl2Pnt7IG1heCB8IGRhdGU6J2QgTU1NTSB5eXl5JyB9fTwvZGl2PiAgXG4gIDwvZGl2PlxuXG48L2Rpdj5cbiJdfQ==

@@ -54,2 +54,2 @@ import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';

}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtdG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwaW5xdWUtYW5ndWxhci11aS9mYWNldC9zcmMvZmFjZXQtdG9nZ2xlL2ZhY2V0LXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvZmFjZXQvc3JjL2ZhY2V0LXRvZ2dsZS9mYWNldC10b2dnbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQUdsRzs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sMkJBQTJCO0lBTHhDO1FBaUNXLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFMUI7O1dBRUc7UUFDTyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFrRSxDQUFDO1FBSXJHLGtCQUFhLEdBQXdCLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO0tBQ2hFOzt3SEF0Q1ksMkJBQTJCOzRHQUEzQiwyQkFBMkIsMlVBbUN4QixXQUFXLGdEQy9DM0IsK3JCQWlCeUI7MkZETFosMkJBQTJCO2tCQUx2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFdBQVcsRUFBRSwrQkFBK0I7b0JBQzVDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztpQkFDYjs4QkFLVSxPQUFPO3NCQUFmLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0ksY0FBYztzQkFBdkIsTUFBTTtnQkFFb0IsUUFBUTtzQkFBbEMsWUFBWTt1QkFBQyxXQUFXO2dCQUVoQixhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNwaW5xdWVRdWVyeSB9IGZyb20gJ3NwaW5xdWUtYW5ndWxhci11aSc7XG5cbi8qKlxuICogU2ltcGxlIGNvbXBvbmVudCB0aGF0IGNvbWJpbmVzIGEgYnV0dG9uLCBTcGlucXVlRmFjZXREcm9wZG93biBhbmQgU3BpbnF1ZUZhY2V0TXVsdGlMaXN0IGludG8gb25lIHNpbmdsZVxuICogYnV0dG9uIHRoYXQgdG9nZ2xlcyBhIGRyb3Bkb3duIGNvbnRhaW5pbmcgYSBtdWx0aWxpc3QgZmFjZXQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwaW5xdWUtZmFjZXQtdG9nZ2xlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZhY2V0LXRvZ2dsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW2BgXVxufSlcbmV4cG9ydCBjbGFzcyBTcGlucXVlRmFjZXRUb2dnbGVDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBmYWNldCB0byBkaXNwbGF5XG4gICAqL1xuICBASW5wdXQoKSBmYWNldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIHRvZ2dsZSBidXR0b25cbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0eSB0byBzb3J0IHRoZSBvcHRpb25zIG9uXG4gICAqL1xuICBASW5wdXQoKSBzb3J0OiAnbmFtZScgfCAnc2NvcmUnO1xuXG4gIC8qKlxuICAgKiBUaGUgb3JkZXIgKGFzY2VuZGluZyBvciBkZXNjZW5kaW5nKSB0byBzb3J0IHRoZSBpdGVtcyBpblxuICAgKi9cbiAgQElucHV0KCkgc29ydE9yZGVyOiAnYXNjJyB8ICdkZXNjJztcblxuICBASW5wdXQoKSBzb3J0Rm46IChhOiBvYmplY3QsIGI6IG9iamVjdCkgPT4gbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgUXVlcnlTdGFjayB0byBnZXQgdGhlIGZhY2V0IG9wdGlvbnMgZm9yXG4gICAqL1xuICBASW5wdXQoKSBxdWVyeVN0YWNrOiBTcGlucXVlUXVlcnlbXTtcblxuICBASW5wdXQoKSBzaG93U2NvcmUgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzZWxlY3Rpb24gb2YgdGhlIGZhY2V0IGhhcyBjaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmFjZXRJZDogc3RyaW5nOyBzZWxlY3RlZDogeyBpZDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH1bXSB9PigpO1xuXG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpIG9wdGlvbk1hcHBpbmc6IChpbnB1dDogYW55KSA9PiBhbnkgPSBvcHRpb24gPT4gb3B0aW9uO1xufVxuIiwiPGJ1dHRvbiBjbGFzcz1cInNwaW5xdWUtZmFjZXQtYnV0dG9uXCIgYXJpYS1sYWJlbD1cIk9wZW4gZmFjZXRcIiBtYXQtc3Ryb2tlZC1idXR0b24gW3NwaW5xdWVGYWNldERyb3Bkb3duVHJpZ2dlcl09XCJkcm9wZG93blwiPlxuICA8c3BpbnF1ZS1mYWNldC1sYWJlbCBbZmFjZXRdPVwiZmFjZXRcIj57eyBsYWJlbCB9fTwvc3BpbnF1ZS1mYWNldC1sYWJlbD5cbiAgPG1hdC1pY29uPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XG48L2J1dHRvbj5cbjxzcGlucXVlLWZhY2V0LWRyb3Bkb3duIFtmYWNldF09XCJmYWNldFwiICNkcm9wZG93bj5cbiAgPHNwaW5xdWUtZmFjZXQtbXVsdGktbGlzdFxuICAgIFtmYWNldElkXT1cImZhY2V0SWRcIlxuICAgIFtzb3J0XT1cInNvcnRcIlxuICAgIFtzb3J0T3JkZXJdPVwic29ydE9yZGVyXCJcbiAgICBbc29ydEZuXT1cInNvcnRGblwiXG4gICAgW3F1ZXJ5U3RhY2tdPVwicXVlcnlTdGFja1wiXG4gICAgW29wdGlvbk1hcHBpbmddPVwib3B0aW9uTWFwcGluZ1wiXG4gICAgW3Nob3dTY29yZV09XCJzaG93U2NvcmVcIlxuICAgIFt0ZW1wbGF0ZVJlZl09XCJ0ZW1wbGF0ZVwiXG4gICAgKHNlbGVjdGVkQ2hhbmdlKT1cInNlbGVjdGVkQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgI2ZhY2V0PlxuICA8L3NwaW5xdWUtZmFjZXQtbXVsdGktbGlzdD5cbjwvc3BpbnF1ZS1mYWNldC1kcm9wZG93bj4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtdG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwaW5xdWUtYW5ndWxhci11aS9mYWNldC9zcmMvZmFjZXQtdG9nZ2xlL2ZhY2V0LXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvZmFjZXQvc3JjL2ZhY2V0LXRvZ2dsZS9mYWNldC10b2dnbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQUdsRzs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sMkJBQTJCO0lBTHhDO1FBaUNXLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFMUI7O1dBRUc7UUFDTyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFrRSxDQUFDO1FBSXJHLGtCQUFhLEdBQXdCLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO0tBQ2hFOzt3SEF0Q1ksMkJBQTJCOzRHQUEzQiwyQkFBMkIsMlVBbUN4QixXQUFXLGdEQy9DM0IsK3JCQWlCeUI7MkZETFosMkJBQTJCO2tCQUx2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFdBQVcsRUFBRSwrQkFBK0I7b0JBQzVDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztpQkFDYjs4QkFLVSxPQUFPO3NCQUFmLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0ksY0FBYztzQkFBdkIsTUFBTTtnQkFFb0IsUUFBUTtzQkFBbEMsWUFBWTt1QkFBQyxXQUFXO2dCQUVoQixhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNwaW5xdWVRdWVyeSwgU3BpbnF1ZVF1ZXJ5U3RhY2sgfSBmcm9tICdzcGlucXVlLWFuZ3VsYXItdWknO1xuXG4vKipcbiAqIFNpbXBsZSBjb21wb25lbnQgdGhhdCBjb21iaW5lcyBhIGJ1dHRvbiwgU3BpbnF1ZUZhY2V0RHJvcGRvd24gYW5kIFNwaW5xdWVGYWNldE11bHRpTGlzdCBpbnRvIG9uZSBzaW5nbGVcbiAqIGJ1dHRvbiB0aGF0IHRvZ2dsZXMgYSBkcm9wZG93biBjb250YWluaW5nIGEgbXVsdGlsaXN0IGZhY2V0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcGlucXVlLWZhY2V0LXRvZ2dsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mYWNldC10b2dnbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtgYF1cbn0pXG5leHBvcnQgY2xhc3MgU3BpbnF1ZUZhY2V0VG9nZ2xlQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgZmFjZXQgdG8gZGlzcGxheVxuICAgKi9cbiAgQElucHV0KCkgZmFjZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGluIHRoZSB0b2dnbGUgYnV0dG9uXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvcGVydHkgdG8gc29ydCB0aGUgb3B0aW9ucyBvblxuICAgKi9cbiAgQElucHV0KCkgc29ydDogJ25hbWUnIHwgJ3Njb3JlJztcblxuICAvKipcbiAgICogVGhlIG9yZGVyIChhc2NlbmRpbmcgb3IgZGVzY2VuZGluZykgdG8gc29ydCB0aGUgaXRlbXMgaW5cbiAgICovXG4gIEBJbnB1dCgpIHNvcnRPcmRlcjogJ2FzYycgfCAnZGVzYyc7XG5cbiAgQElucHV0KCkgc29ydEZuOiAoYTogb2JqZWN0LCBiOiBvYmplY3QpID0+IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIFF1ZXJ5U3RhY2sgdG8gZ2V0IHRoZSBmYWNldCBvcHRpb25zIGZvclxuICAgKi9cbiAgQElucHV0KCkgcXVlcnlTdGFjazogU3BpbnF1ZVF1ZXJ5U3RhY2s7XG5cbiAgQElucHV0KCkgc2hvd1Njb3JlID0gdHJ1ZTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgc2VsZWN0aW9uIG9mIHRoZSBmYWNldCBoYXMgY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZhY2V0SWQ6IHN0cmluZzsgc2VsZWN0ZWQ6IHsgaWQ6IHN0cmluZzsgdGl0bGU6IHN0cmluZyB9W10gfT4oKTtcblxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBASW5wdXQoKSBvcHRpb25NYXBwaW5nOiAoaW5wdXQ6IGFueSkgPT4gYW55ID0gb3B0aW9uID0+IG9wdGlvbjtcbn1cbiIsIjxidXR0b24gY2xhc3M9XCJzcGlucXVlLWZhY2V0LWJ1dHRvblwiIGFyaWEtbGFiZWw9XCJPcGVuIGZhY2V0XCIgbWF0LXN0cm9rZWQtYnV0dG9uIFtzcGlucXVlRmFjZXREcm9wZG93blRyaWdnZXJdPVwiZHJvcGRvd25cIj5cbiAgPHNwaW5xdWUtZmFjZXQtbGFiZWwgW2ZhY2V0XT1cImZhY2V0XCI+e3sgbGFiZWwgfX08L3NwaW5xdWUtZmFjZXQtbGFiZWw+XG4gIDxtYXQtaWNvbj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuPC9idXR0b24+XG48c3BpbnF1ZS1mYWNldC1kcm9wZG93biBbZmFjZXRdPVwiZmFjZXRcIiAjZHJvcGRvd24+XG4gIDxzcGlucXVlLWZhY2V0LW11bHRpLWxpc3RcbiAgICBbZmFjZXRJZF09XCJmYWNldElkXCJcbiAgICBbc29ydF09XCJzb3J0XCJcbiAgICBbc29ydE9yZGVyXT1cInNvcnRPcmRlclwiXG4gICAgW3NvcnRGbl09XCJzb3J0Rm5cIlxuICAgIFtxdWVyeVN0YWNrXT1cInF1ZXJ5U3RhY2tcIlxuICAgIFtvcHRpb25NYXBwaW5nXT1cIm9wdGlvbk1hcHBpbmdcIlxuICAgIFtzaG93U2NvcmVdPVwic2hvd1Njb3JlXCJcbiAgICBbdGVtcGxhdGVSZWZdPVwidGVtcGxhdGVcIlxuICAgIChzZWxlY3RlZENoYW5nZSk9XCJzZWxlY3RlZENoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICNmYWNldD5cbiAgPC9zcGlucXVlLWZhY2V0LW11bHRpLWxpc3Q+XG48L3NwaW5xdWUtZmFjZXQtZHJvcGRvd24+Il19

@@ -10,3 +10,3 @@ import { Injectable } from '@angular/core';

/**
* Given a stringified query stack, decode back to SpinqueQuery[]
* Given a stringified query stack, decode back to SpinqueQueryStack
*/

@@ -31,6 +31,6 @@ decode(stringified) {

/**
* Given a SpinqueQuery[], encode into a stringified query stack
* Given a SpinqueQueryStack, encode into a stringified query stack
*/
encode(queryStack) {
const endpointString = queryStack.map(f => [f.endpoint, f.parameters]);
const endpointString = queryStack.map(f => ['endpoint' in f ? f.endpoint : f.commit, f.parameters]);
return JSON.stringify(endpointString);

@@ -47,2 +47,2 @@ }

}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BpbnF1ZS1sb2NhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BpbnF1ZS1hbmd1bGFyLXVpL2xvY2F0aW9uL3NyYy9zcGlucXVlLWxvY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0M7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFDakM7O09BRUc7SUFDSCxNQUFNLENBQUMsV0FBbUI7UUFDeEIsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsSUFBSTtZQUNGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDMUMsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN2QixPQUFPO29CQUNMLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNkLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNqQixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsT0FBTyxFQUFFLENBQUM7U0FDWDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxVQUEwQjtRQUMvQixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxDQUFDOzttSEEzQlUsc0JBQXNCO3VIQUF0QixzQkFBc0IsY0FGckIsTUFBTTsyRkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3BpbnF1ZVF1ZXJ5IH0gZnJvbSAnc3BpbnF1ZS1hbmd1bGFyLXVpJztcblxuLyoqXG4gKiBNZXRob2RzIHRvIGVuY29kZSBhbmQgZGVjb2RlIHRoZSBzdGF0ZSBvZiBhIHF1ZXJ5IHN0YWNrIHNvIHRoYXQgaXQgY2FuIGJlXG4gKiBzdG9yZWQgaW4gdGhlIFVSTC4gVXNlIHRoaXMgc2VydmljZSBpZiB5b3Ugd2FudCB0byByZWZsZWN0IHRoZSBxdWFyeSBzdGFja1xuICogc3RhdGUgaW4gdGhlIGJyb3dzZXJzIFVSTCBiYXIuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNwaW5xdWVMb2NhdGlvblNlcnZpY2Uge1xuICAvKipcbiAgICogR2l2ZW4gYSBzdHJpbmdpZmllZCBxdWVyeSBzdGFjaywgZGVjb2RlIGJhY2sgdG8gU3BpbnF1ZVF1ZXJ5W11cbiAgICovXG4gIGRlY29kZShzdHJpbmdpZmllZDogc3RyaW5nKTogU3BpbnF1ZVF1ZXJ5W10ge1xuICAgIGlmICghc3RyaW5naWZpZWQpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGVuZHBvaW50cyA9IEpTT04ucGFyc2Uoc3RyaW5naWZpZWQpO1xuICAgICAgcmV0dXJuIGVuZHBvaW50cy5tYXAoZSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW5kcG9pbnQ6IGVbMF0sXG4gICAgICAgICAgcGFyYW1ldGVyczogZVsxXVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBTcGlucXVlUXVlcnlbXSwgZW5jb2RlIGludG8gYSBzdHJpbmdpZmllZCBxdWVyeSBzdGFja1xuICAgKi9cbiAgZW5jb2RlKHF1ZXJ5U3RhY2s6IFNwaW5xdWVRdWVyeVtdKTogc3RyaW5nIHtcbiAgICBjb25zdCBlbmRwb2ludFN0cmluZyA9IHF1ZXJ5U3RhY2subWFwKGYgPT4gW2YuZW5kcG9pbnQsIGYucGFyYW1ldGVyc10pO1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShlbmRwb2ludFN0cmluZyk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BpbnF1ZS1sb2NhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BpbnF1ZS1hbmd1bGFyLXVpL2xvY2F0aW9uL3NyYy9zcGlucXVlLWxvY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0M7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFDakM7O09BRUc7SUFDSCxNQUFNLENBQUMsV0FBbUI7UUFDeEIsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsSUFBSTtZQUNGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDMUMsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN2QixPQUFPO29CQUNMLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNkLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNqQixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsT0FBTyxFQUFFLENBQUM7U0FDWDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxVQUE2QjtRQUNsQyxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3BHLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxDQUFDOzttSEEzQlUsc0JBQXNCO3VIQUF0QixzQkFBc0IsY0FGckIsTUFBTTsyRkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3BpbnF1ZVF1ZXJ5U3RhY2sgfSBmcm9tICdzcGlucXVlLWFuZ3VsYXItdWknO1xuXG4vKipcbiAqIE1ldGhvZHMgdG8gZW5jb2RlIGFuZCBkZWNvZGUgdGhlIHN0YXRlIG9mIGEgcXVlcnkgc3RhY2sgc28gdGhhdCBpdCBjYW4gYmVcbiAqIHN0b3JlZCBpbiB0aGUgVVJMLiBVc2UgdGhpcyBzZXJ2aWNlIGlmIHlvdSB3YW50IHRvIHJlZmxlY3QgdGhlIHF1YXJ5IHN0YWNrXG4gKiBzdGF0ZSBpbiB0aGUgYnJvd3NlcnMgVVJMIGJhci5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3BpbnF1ZUxvY2F0aW9uU2VydmljZSB7XG4gIC8qKlxuICAgKiBHaXZlbiBhIHN0cmluZ2lmaWVkIHF1ZXJ5IHN0YWNrLCBkZWNvZGUgYmFjayB0byBTcGlucXVlUXVlcnlTdGFja1xuICAgKi9cbiAgZGVjb2RlKHN0cmluZ2lmaWVkOiBzdHJpbmcpOiBTcGlucXVlUXVlcnlTdGFjayB7XG4gICAgaWYgKCFzdHJpbmdpZmllZCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgZW5kcG9pbnRzID0gSlNPTi5wYXJzZShzdHJpbmdpZmllZCk7XG4gICAgICByZXR1cm4gZW5kcG9pbnRzLm1hcChlID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbmRwb2ludDogZVswXSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiBlWzFdXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIFNwaW5xdWVRdWVyeVN0YWNrLCBlbmNvZGUgaW50byBhIHN0cmluZ2lmaWVkIHF1ZXJ5IHN0YWNrXG4gICAqL1xuICBlbmNvZGUocXVlcnlTdGFjazogU3BpbnF1ZVF1ZXJ5U3RhY2spOiBzdHJpbmcge1xuICAgIGNvbnN0IGVuZHBvaW50U3RyaW5nID0gcXVlcnlTdGFjay5tYXAoZiA9PiBbJ2VuZHBvaW50JyBpbiBmID8gZi5lbmRwb2ludCA6IGYuY29tbWl0LCBmLnBhcmFtZXRlcnNdKTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZW5kcG9pbnRTdHJpbmcpO1xuICB9XG59XG4iXX0=

@@ -72,2 +72,2 @@ import { Input, Output, EventEmitter, Directive } from '@angular/core';

}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BpbnF1ZS1hbmd1bGFyLXVpL3Jlc3VsdC1iYXNlL3NyYy9yZXN1bHQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBNEIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBR3REOzs7R0FHRztBQUVILE1BQU0sT0FBTywwQkFBMEI7SUE4QnJDLFlBQW1CLElBQXdCO1FBQXhCLFNBQUksR0FBSixJQUFJLENBQW9CO1FBN0IzQyxtQkFBbUI7UUFDbkIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR2xCLG9DQUFvQztRQUNwQyxVQUFLLEdBQVUsRUFBRSxDQUFDO1FBRWxCLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFFWCxjQUFTLEdBQUcsVUFBUyxJQUFJLElBQUcsQ0FBQyxDQUFDO1FBRTlCOztXQUVHO1FBQ00sVUFBSyxHQUFHLEVBQUUsQ0FBQztRQU9WLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUV6RDs7V0FFRztRQUNNLGdCQUFXLEdBQXFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFFMUIsQ0FBQztJQUUvQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFO1lBQ3pELElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBRWhCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDakQsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDdkIsTUFBTSxPQUFPLEdBQUc7WUFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsTUFBTTtTQUNQLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUN4RCxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLGlDQUFNLE1BQU0sS0FBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBRyxDQUFDLEVBQzNGLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztZQUNsQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7dUhBakVVLDBCQUEwQjsyR0FBMUIsMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBRHRDLFNBQVM7eUdBaUJDLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFLRSxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTcGlucXVlUXVlcnksIFNwaW5xdWVSZXN0U2VydmljZSwgU3BpbnF1ZVJlc3VsdEl0ZW0gfSBmcm9tICdzcGlucXVlLWFuZ3VsYXItdWknO1xuXG4vKipcbiAqIEJhc2UgZnVuY3Rpb25hbGl0eSBmb3IgY29tcG9uZW50cyB0aGF0IHdhbnQgdG8gZGlzcGxheSBhIGN1c3RvbSByZXN1bHQgdmlldy5cbiAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBPbkNoYW5nZXMsIHNvIGl0IGlzIGltcG9ydGFudCB0byBjYWxsIHN1cGVyLm5nT25DaGFuZ2VzIHdoZW4gaW1wbGVtZW50aW5nIE9uQ2hhbmdlcyB5b3Vyc2VsZiBhcyB3ZWxsLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBTcGlucXVlUmVzdWx0Q29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8vIFN0YXR1cyB2YXJpYWJsZXNcbiAgYWxsTG9hZGVkID0gZmFsc2U7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBlcnJvcjogYW55O1xuXG4gIC8vIEFycmF5IGNvbnRhaW5pbmcgYWxsIHJlc3VsdCBpdGVtc1xuICBpdGVtczogYW55W10gPSBbXTtcblxuICBvZmZzZXQgPSAwO1xuXG4gIGFmdGVyTG9hZCA9IGZ1bmN0aW9uKGRhdGEpIHt9O1xuXG4gIC8qKlxuICAgKiBIb3cgbWFueSBpdGVtcyBzaG91bGQgYmUgZGlzcGxheWVkXG4gICAqL1xuICBASW5wdXQoKSBjb3VudCA9IDQwO1xuXG4gIC8qKlxuICAgKiBUaGUgU3BpbnF1ZVF1ZXJ5IGZvciB3aGljaCB0aGUgcmVzdWx0cyBzaG91bGQgYmUgZGlzcGxheWVkXG4gICAqL1xuICBASW5wdXQoKSBxdWVyeVN0YWNrOiBTcGlucXVlUXVlcnlbXTtcblxuICBAT3V0cHV0KCkgbG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGNvdW50OiBudW1iZXIgfT4oKTtcblxuICAvKipcbiAgICogQSBtYXBwaW5nIHRoYXQgaXMgdG8gYmUgYXBwbGllZCB0byB0aGUgU3BpbnF1ZVJlc3VsdEl0ZW1zIGluIG9yZGVyIHRvIGdldCBhIGN1c3RvbSBmb3JtYXRcbiAgICovXG4gIEBJbnB1dCgpIGl0ZW1NYXBwaW5nOiAoaXRlbTogU3BpbnF1ZVJlc3VsdEl0ZW0pID0+IGFueSA9IChpdGVtKSA9PiBpdGVtO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZXN0OiBTcGlucXVlUmVzdFNlcnZpY2UpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLnF1ZXJ5U3RhY2sgJiYgY2hhbmdlcy5xdWVyeVN0YWNrLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuXG4gICAgICB0aGlzLmdldFJlc3VsdHMoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgdGhpcy5pdGVtcyA9IGRhdGEuaXRlbXM7XG4gICAgICAgIHRoaXMubG9hZGVkLmVtaXQoeyBjb3VudDogdGhpcy5pdGVtcy5sZW5ndGggfSk7XG4gICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UmVzdWx0cyhvZmZzZXQgPSAwKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuZXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIGNvdW50OiB0aGlzLmNvdW50LFxuICAgICAgb2Zmc2V0LFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMucmVzdC5nZXRSZXN1bHRzKHRoaXMucXVlcnlTdGFjaywgb3B0aW9ucykucGlwZShcbiAgICAgIG1hcCgocmVzdWx0KSA9PiAoeyAuLi5yZXN1bHQsIGl0ZW1zOiByZXN1bHQuaXRlbXMubWFwKChpdGVtKSA9PiB0aGlzLml0ZW1NYXBwaW5nKGl0ZW0pKSB9KSksXG4gICAgICB0YXAoKGRhdGEpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hbGxMb2FkZWQgPSBkYXRhLml0ZW1zLmxlbmd0aCA8IHRoaXMuY291bnQ7XG4gICAgICAgIHRoaXMuYWZ0ZXJMb2FkKGRhdGEpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVycm9yID0gZXJyb3IuZXJyb3IgfHwgZXJyb3I7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BpbnF1ZS1hbmd1bGFyLXVpL3Jlc3VsdC1iYXNlL3NyYy9yZXN1bHQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBNEIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBR3REOzs7R0FHRztBQUVILE1BQU0sT0FBTywwQkFBMEI7SUE4QnJDLFlBQW1CLElBQXdCO1FBQXhCLFNBQUksR0FBSixJQUFJLENBQW9CO1FBN0IzQyxtQkFBbUI7UUFDbkIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR2xCLG9DQUFvQztRQUNwQyxVQUFLLEdBQVUsRUFBRSxDQUFDO1FBRWxCLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFFWCxjQUFTLEdBQUcsVUFBUyxJQUFJLElBQUcsQ0FBQyxDQUFDO1FBRTlCOztXQUVHO1FBQ00sVUFBSyxHQUFHLEVBQUUsQ0FBQztRQU9WLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUV6RDs7V0FFRztRQUNNLGdCQUFXLEdBQXFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFFMUIsQ0FBQztJQUUvQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFO1lBQ3pELElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBRWhCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDakQsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDdkIsTUFBTSxPQUFPLEdBQUc7WUFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsTUFBTTtTQUNQLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUN4RCxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLGlDQUFNLE1BQU0sS0FBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBRyxDQUFDLEVBQzNGLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztZQUNsQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7dUhBakVVLDBCQUEwQjsyR0FBMUIsMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBRHRDLFNBQVM7eUdBaUJDLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFLRSxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTcGlucXVlUXVlcnlTdGFjaywgU3BpbnF1ZVJlc3RTZXJ2aWNlLCBTcGlucXVlUmVzdWx0SXRlbSB9IGZyb20gJ3NwaW5xdWUtYW5ndWxhci11aSc7XG5cbi8qKlxuICogQmFzZSBmdW5jdGlvbmFsaXR5IGZvciBjb21wb25lbnRzIHRoYXQgd2FudCB0byBkaXNwbGF5IGEgY3VzdG9tIHJlc3VsdCB2aWV3LlxuICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgc28gaXQgaXMgaW1wb3J0YW50IHRvIGNhbGwgc3VwZXIubmdPbkNoYW5nZXMgd2hlbiBpbXBsZW1lbnRpbmcgT25DaGFuZ2VzIHlvdXJzZWxmIGFzIHdlbGwuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIFNwaW5xdWVSZXN1bHRDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLy8gU3RhdHVzIHZhcmlhYmxlc1xuICBhbGxMb2FkZWQgPSBmYWxzZTtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIGVycm9yOiBhbnk7XG5cbiAgLy8gQXJyYXkgY29udGFpbmluZyBhbGwgcmVzdWx0IGl0ZW1zXG4gIGl0ZW1zOiBhbnlbXSA9IFtdO1xuXG4gIG9mZnNldCA9IDA7XG5cbiAgYWZ0ZXJMb2FkID0gZnVuY3Rpb24oZGF0YSkge307XG5cbiAgLyoqXG4gICAqIEhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBkaXNwbGF5ZWRcbiAgICovXG4gIEBJbnB1dCgpIGNvdW50ID0gNDA7XG5cbiAgLyoqXG4gICAqIFRoZSBTcGlucXVlUXVlcnkgZm9yIHdoaWNoIHRoZSByZXN1bHRzIHNob3VsZCBiZSBkaXNwbGF5ZWRcbiAgICovXG4gIEBJbnB1dCgpIHF1ZXJ5U3RhY2s6IFNwaW5xdWVRdWVyeVN0YWNrO1xuXG4gIEBPdXRwdXQoKSBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgY291bnQ6IG51bWJlciB9PigpO1xuXG4gIC8qKlxuICAgKiBBIG1hcHBpbmcgdGhhdCBpcyB0byBiZSBhcHBsaWVkIHRvIHRoZSBTcGlucXVlUmVzdWx0SXRlbXMgaW4gb3JkZXIgdG8gZ2V0IGEgY3VzdG9tIGZvcm1hdFxuICAgKi9cbiAgQElucHV0KCkgaXRlbU1hcHBpbmc6IChpdGVtOiBTcGlucXVlUmVzdWx0SXRlbSkgPT4gYW55ID0gKGl0ZW0pID0+IGl0ZW07XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlc3Q6IFNwaW5xdWVSZXN0U2VydmljZSkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMucXVlcnlTdGFjayAmJiBjaGFuZ2VzLnF1ZXJ5U3RhY2suY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLml0ZW1zID0gW107XG5cbiAgICAgIHRoaXMuZ2V0UmVzdWx0cygpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLml0ZW1zID0gZGF0YS5pdGVtcztcbiAgICAgICAgdGhpcy5sb2FkZWQuZW1pdCh7IGNvdW50OiB0aGlzLml0ZW1zLmxlbmd0aCB9KTtcbiAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRSZXN1bHRzKG9mZnNldCA9IDApIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgY291bnQ6IHRoaXMuY291bnQsXG4gICAgICBvZmZzZXQsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5yZXN0LmdldFJlc3VsdHModGhpcy5xdWVyeVN0YWNrLCBvcHRpb25zKS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQpID0+ICh7IC4uLnJlc3VsdCwgaXRlbXM6IHJlc3VsdC5pdGVtcy5tYXAoKGl0ZW0pID0+IHRoaXMuaXRlbU1hcHBpbmcoaXRlbSkpIH0pKSxcbiAgICAgIHRhcCgoZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmFsbExvYWRlZCA9IGRhdGEuaXRlbXMubGVuZ3RoIDwgdGhpcy5jb3VudDtcbiAgICAgICAgdGhpcy5hZnRlckxvYWQoZGF0YSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvci5lcnJvciB8fCBlcnJvcjtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=

@@ -38,2 +38,2 @@ import { Component, Input } from '@angular/core';

}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LXN0YXRpc3RpY3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BpbnF1ZS1hbmd1bGFyLXVpL3Jlc3VsdC1zdGF0aXN0aWNzL3NyYy9yZXN1bHQtc3RhdGlzdGljcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvcmVzdWx0LXN0YXRpc3RpY3Mvc3JjL3Jlc3VsdC1zdGF0aXN0aWNzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQzs7OztBQUczRTs7R0FFRztBQWNILE1BQU0sT0FBTyxnQ0FBZ0M7SUFLM0MsWUFBb0IsSUFBd0I7UUFBeEIsU0FBSSxHQUFKLElBQUksQ0FBb0I7SUFBRyxDQUFDO0lBRWhELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUU7WUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQ2hFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEVBQ2hDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDOzs2SEFiVSxnQ0FBZ0M7aUhBQWhDLGdDQUFnQyw0SENuQjdDLDhMQUVNOzJGRGlCTyxnQ0FBZ0M7a0JBYjVDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsV0FBVyxFQUFFLG9DQUFvQztvQkFDakQsTUFBTSxFQUFFO3dCQUNOOzs7Ozs7S0FNQztxQkFDRjtpQkFDRjt5R0FJVSxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTcGlucXVlUmVzdFNlcnZpY2UsIFNwaW5xdWVTdGF0aXN0aWNzLCBTcGlucXVlUXVlcnkgfSBmcm9tICdzcGlucXVlLWFuZ3VsYXItdWknO1xuXG4vKipcbiAqIERpc3BsYXkgYSBzaG9ydCwgdGV4dHVhbCBzdW1tYXJ5IG9mIHRoZSBzZWFyY2ggcmVzdWx0cy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3BpbnF1ZS1yZXN1bHQtc3RhdGlzdGljcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN1bHQtc3RhdGlzdGljcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5zcC1yZXN1bHQtc3RhdHVzIHtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBjb2xvcjogIzU0NTQ1NDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gICAgICB9XG4gICAgYFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNwaW5xdWVSZXN1bHRTdGF0aXN0aWNzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgc3RhdGlzdGljczogU3BpbnF1ZVN0YXRpc3RpY3M7XG5cbiAgQElucHV0KCkgcXVlcnlTdGFjazogU3BpbnF1ZVF1ZXJ5W107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0OiBTcGlucXVlUmVzdFNlcnZpY2UpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLnF1ZXJ5U3RhY2sgJiYgY2hhbmdlcy5xdWVyeVN0YWNrLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5yZXN0LmdldFN0YXRpc3RpY3MoY2hhbmdlcy5xdWVyeVN0YWNrLmN1cnJlbnRWYWx1ZSkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzKSA9PiAodGhpcy5zdGF0aXN0aWNzID0gcmVzKSxcbiAgICAgICAgKGVycm9yKSA9PiBjb25zb2xlLmxvZyhlcnJvcikpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNwLXJlc3VsdC1zdGF0dXNcIiAqbmdJZj1cInN0YXRpc3RpY3NcIiByb2xlPVwiY29tcGxlbWVudGFyeVwiPlxuICB7eyBzdGF0aXN0aWNzLnRvdGFsIHwgbnVtYmVyfX0gcmVzdWx0PG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXRpc3RpY3MudG90YWwgIT09IDFcIj5zPC9uZy1jb250YWluZXI+XG48L2Rpdj4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LXN0YXRpc3RpY3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BpbnF1ZS1hbmd1bGFyLXVpL3Jlc3VsdC1zdGF0aXN0aWNzL3NyYy9yZXN1bHQtc3RhdGlzdGljcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvcmVzdWx0LXN0YXRpc3RpY3Mvc3JjL3Jlc3VsdC1zdGF0aXN0aWNzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQzs7OztBQUczRTs7R0FFRztBQWNILE1BQU0sT0FBTyxnQ0FBZ0M7SUFLM0MsWUFBb0IsSUFBd0I7UUFBeEIsU0FBSSxHQUFKLElBQUksQ0FBb0I7SUFBRyxDQUFDO0lBRWhELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUU7WUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQ2hFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEVBQ2hDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDOzs2SEFiVSxnQ0FBZ0M7aUhBQWhDLGdDQUFnQyw0SENuQjdDLDhMQUVNOzJGRGlCTyxnQ0FBZ0M7a0JBYjVDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsV0FBVyxFQUFFLG9DQUFvQztvQkFDakQsTUFBTSxFQUFFO3dCQUNOOzs7Ozs7S0FNQztxQkFDRjtpQkFDRjt5R0FJVSxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTcGlucXVlUmVzdFNlcnZpY2UsIFNwaW5xdWVTdGF0aXN0aWNzLCBTcGlucXVlUXVlcnlTdGFjayB9IGZyb20gJ3NwaW5xdWUtYW5ndWxhci11aSc7XG5cbi8qKlxuICogRGlzcGxheSBhIHNob3J0LCB0ZXh0dWFsIHN1bW1hcnkgb2YgdGhlIHNlYXJjaCByZXN1bHRzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcGlucXVlLXJlc3VsdC1zdGF0aXN0aWNzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3VsdC1zdGF0aXN0aWNzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnNwLXJlc3VsdC1zdGF0dXMge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGNvbG9yOiAjNTQ1NDU0O1xuICAgICAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICAgIH1cbiAgICBgXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU3BpbnF1ZVJlc3VsdFN0YXRpc3RpY3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBzdGF0aXN0aWNzOiBTcGlucXVlU3RhdGlzdGljcztcblxuICBASW5wdXQoKSBxdWVyeVN0YWNrOiBTcGlucXVlUXVlcnlTdGFjaztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3Q6IFNwaW5xdWVSZXN0U2VydmljZSkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMucXVlcnlTdGFjayAmJiBjaGFuZ2VzLnF1ZXJ5U3RhY2suY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnJlc3QuZ2V0U3RhdGlzdGljcyhjaGFuZ2VzLnF1ZXJ5U3RhY2suY3VycmVudFZhbHVlKS5zdWJzY3JpYmUoXG4gICAgICAgIChyZXMpID0+ICh0aGlzLnN0YXRpc3RpY3MgPSByZXMpLFxuICAgICAgICAoZXJyb3IpID0+IGNvbnNvbGUubG9nKGVycm9yKSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic3AtcmVzdWx0LXN0YXR1c1wiICpuZ0lmPVwic3RhdGlzdGljc1wiIHJvbGU9XCJjb21wbGVtZW50YXJ5XCI+XG4gIHt7IHN0YXRpc3RpY3MudG90YWwgfCBudW1iZXJ9fSByZXN1bHQ8bmctY29udGFpbmVyICpuZ0lmPVwic3RhdGlzdGljcy50b3RhbCAhPT0gMVwiPnM8L25nLWNvbnRhaW5lcj5cbjwvZGl2PiJdfQ==
import { Injectable } from '@angular/core';
import { produce } from 'immer';
import * as i0 from "@angular/core";
// This would actually be more correct but does not work currently:
// https://github.com/microsoft/TypeScript/issues/33591
// export type SpinqueQueryStack = SpinqueApiQuery[] | SpinqueStrategyQuery[];
/**

@@ -13,4 +16,6 @@ * SpinqueQueryService provides methods that take SpinqueQuery objects and transform them into

*/
getQuery(queryStack, endpoint) {
return queryStack.find(e => e.endpoint === endpoint);
getQuery(queryStack, endpointOrCommit) {
return queryStack.find(e => {
return 'endpoint' in e && e.endpoint === endpointOrCommit || 'commit' in e && e.commit === endpointOrCommit;
});
}

@@ -34,11 +39,12 @@ /**

*/
updateQuery(queryStack, endpoint, parameters = {}) {
updateQuery(queryStack, endpointOrCommit, parameters = {}) {
return produce(queryStack, draftStack => {
const query = { endpoint, parameters };
const index = queryStack.findIndex(e => e.endpoint === endpoint);
const index = queryStack.findIndex(e => {
return 'endpoint' in e && e.endpoint === endpointOrCommit || 'commit' in e && e.commit === endpointOrCommit;
});
if (index >= 0) {
draftStack[index] = query;
draftStack[index] = Object.assign(Object.assign({}, queryStack[index]), { parameters });
}
else {
draftStack.push(query);
draftStack.push(Object.assign(Object.assign({}, queryStack[index]), { parameters }));
}

@@ -50,5 +56,7 @@ });

*/
removeQuery(queryStack, endpoint) {
removeQuery(queryStack, endpointOrCommit) {
return produce(queryStack, draftStack => {
const index = queryStack.findIndex(e => e.endpoint === endpoint);
const index = queryStack.findIndex(e => {
return 'endpoint' in e && e.endpoint === endpointOrCommit || 'commit' in e && e.commit === endpointOrCommit;
});
if (index >= 0) {

@@ -79,6 +87,8 @@ draftStack = draftStack.splice(index, 1);

*/
setParameter(queryStack, paramName, value, endpoint) {
setParameter(queryStack, paramName, value, endpointOrCommit) {
let endpointIndex = queryStack.length - 1;
if (!!endpoint) {
endpointIndex = queryStack.findIndex(e => e.endpoint === endpoint);
if (!!endpointOrCommit) {
endpointIndex = queryStack.findIndex(e => {
return 'endpoint' in e && e.endpoint === endpointOrCommit || 'commit' in e && e.commit === endpointOrCommit;
});
}

@@ -106,2 +116,2 @@ return produce(queryStack, draftStack => {

}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BpbnF1ZS1xdWVyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvc3BpbnF1ZS1hbmd1bGFyLXVpL3NyYy9zcGlucXVlLXF1ZXJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQWVoQzs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLG1CQUFtQjtJQUM5Qjs7T0FFRztJQUNILFFBQVEsQ0FBQyxVQUEwQixFQUFFLFFBQWdCO1FBQ25ELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLFVBQTBCO1FBQ3JDLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLFVBQTBCLEVBQUUsUUFBZ0IsRUFBRSxhQUFxQyxFQUFFO1FBQzVGLE9BQU8sT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsRUFBRTtZQUN0QyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQUMsVUFBMEIsRUFBRSxRQUFnQixFQUFFLGFBQXFDLEVBQUU7UUFDL0YsT0FBTyxPQUFPLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sS0FBSyxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQ2pFLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtnQkFDZCxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO2FBQzNCO2lCQUFNO2dCQUNMLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDeEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxVQUEwQixFQUFFLFFBQWdCO1FBQ3RELE9BQU8sT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsRUFBRTtZQUN0QyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQztZQUNqRSxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7Z0JBQ2QsVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxVQUEwQixFQUFFLEtBQXFCO1FBQ2hFLE9BQU8sT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsRUFBRTtZQUN0QyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLFVBQTBCO1FBQ2pDLE9BQU8sT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsRUFBRTtZQUN0QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLFVBQTBCLEVBQUUsU0FBaUIsRUFBRSxLQUFVLEVBQUUsUUFBaUI7UUFDdkYsSUFBSSxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ2QsYUFBYSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1NBQ3BFO1FBQ0QsT0FBTyxPQUFPLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsS0FBSyxFQUFHO2dCQUNYLE9BQU87YUFDUjtZQUNELElBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFHO2dCQUN2QixLQUFLLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQzthQUN2QjtZQUNELEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3BDLFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztnSEF6RlUsbUJBQW1CO29IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcHJvZHVjZSB9IGZyb20gJ2ltbWVyJztcblxuZXhwb3J0IGludGVyZmFjZSBTcGlucXVlUXVlcnlQYXJhbWV0ZXJzIHtcbiAgW25hbWU6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTcGlucXVlUXVlcnkge1xuICByZWFkb25seSBlbmRwb2ludDogc3RyaW5nO1xuICByZWFkb25seSBwYXJhbWV0ZXJzPzogU3BpbnF1ZVF1ZXJ5UGFyYW1ldGVycztcblxuICByZWFkb25seSB3b3Jrc3BhY2U/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFwaT86IHN0cmluZztcbiAgcmVhZG9ubHkgY29uZmlnPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNwaW5xdWVRdWVyeVNlcnZpY2UgcHJvdmlkZXMgbWV0aG9kcyB0aGF0IHRha2UgU3BpbnF1ZVF1ZXJ5IG9iamVjdHMgYW5kIHRyYW5zZm9ybSB0aGVtIGludG9cbiAqIG5ldyBTcGlucXVlUXVlcnkgb2JqZWN0cy4gVGhpcyB3YXkgcXVlcmllcyBjYW4gYmUgY29uc3RydWN0ZWQgYW5kIG1hbmlwdWxhdGVkIGluIGFuIGltbXV0YWJsZSBtYW5uZXIuXG4gKiBUaGlzIHNlcnZpY2UgaXMgY2VudHJhbCBpbiBtb3N0IGFwcGxpY2F0aW9ucy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3BpbnF1ZVF1ZXJ5U2VydmljZSB7XG4gIC8qKlxuICAgKiBHZXQgYSBTcGlucXVlUXVlcnkgZnJvbSBhIHN0YWNrZWQgcXVlcnkgYnkgZW5kcG9pbnQgbmFtZVxuICAgKi9cbiAgZ2V0UXVlcnkocXVlcnlTdGFjazogU3BpbnF1ZVF1ZXJ5W10sIGVuZHBvaW50OiBzdHJpbmcpOiBTcGlucXVlUXVlcnkge1xuICAgIHJldHVybiBxdWVyeVN0YWNrLmZpbmQoZSA9PiBlLmVuZHBvaW50ID09PSBlbmRwb2ludCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsYXN0IHF1ZXJ5IG9mIGEgcXVlcnkgc3RhY2tcbiAgICovXG4gIGdldExhc3RRdWVyeShxdWVyeVN0YWNrOiBTcGlucXVlUXVlcnlbXSk6IFNwaW5xdWVRdWVyeSB7XG4gICAgcmV0dXJuIHF1ZXJ5U3RhY2tbcXVlcnlTdGFjay5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBxdWVyeSB3aXRoIG9wdGlvbmFsIHBhcmFtZXRlciB0byB0aGUgcXVlcnkuXG4gICAqL1xuICBhZGRRdWVyeShxdWVyeVN0YWNrOiBTcGlucXVlUXVlcnlbXSwgZW5kcG9pbnQ6IHN0cmluZywgcGFyYW1ldGVyczogU3BpbnF1ZVF1ZXJ5UGFyYW1ldGVycyA9IHt9KTogU3BpbnF1ZVF1ZXJ5W10ge1xuICAgIHJldHVybiBwcm9kdWNlKHF1ZXJ5U3RhY2ssIGRyYWZ0U3RhY2sgPT4ge1xuICAgICAgZHJhZnRTdGFjay5wdXNoKHsgZW5kcG9pbnQsIHBhcmFtZXRlcnMgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZCB0aGUgcXVlcnkgd2l0aCB0aGUgZ2l2ZW4gZW5kcG9pbnQgbmFtZSBhbmQgdXBkYXRlIGl0cyBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgdXBkYXRlUXVlcnkocXVlcnlTdGFjazogU3BpbnF1ZVF1ZXJ5W10sIGVuZHBvaW50OiBzdHJpbmcsIHBhcmFtZXRlcnM6IFNwaW5xdWVRdWVyeVBhcmFtZXRlcnMgPSB7fSk6IFNwaW5xdWVRdWVyeVtdIHtcbiAgICByZXR1cm4gcHJvZHVjZShxdWVyeVN0YWNrLCBkcmFmdFN0YWNrID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0geyBlbmRwb2ludCwgcGFyYW1ldGVycyB9O1xuICAgICAgY29uc3QgaW5kZXggPSBxdWVyeVN0YWNrLmZpbmRJbmRleChlID0+IGUuZW5kcG9pbnQgPT09IGVuZHBvaW50KTtcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIGRyYWZ0U3RhY2tbaW5kZXhdID0gcXVlcnk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkcmFmdFN0YWNrLnB1c2gocXVlcnkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgZW5kcG9pbnQgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBmcm9tIHRoZSBxdWVyeS5cbiAgICovXG4gIHJlbW92ZVF1ZXJ5KHF1ZXJ5U3RhY2s6IFNwaW5xdWVRdWVyeVtdLCBlbmRwb2ludDogc3RyaW5nKTogU3BpbnF1ZVF1ZXJ5W10ge1xuICAgIHJldHVybiBwcm9kdWNlKHF1ZXJ5U3RhY2ssIGRyYWZ0U3RhY2sgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBxdWVyeVN0YWNrLmZpbmRJbmRleChlID0+IGUuZW5kcG9pbnQgPT09IGVuZHBvaW50KTtcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIGRyYWZ0U3RhY2sgPSBkcmFmdFN0YWNrLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSB0aGUgd2hvbGUgc2V0IG9mIHF1ZXJ5IGVuZHBvaW50cyBpbiBhIHF1ZXJ5IGF0IG9uY2UuXG4gICAqL1xuICB1cGRhdGVRdWVyeVN0YWNrKHF1ZXJ5U3RhY2s6IFNwaW5xdWVRdWVyeVtdLCBzdGFjazogU3BpbnF1ZVF1ZXJ5W10pOiBTcGlucXVlUXVlcnlbXSB7XG4gICAgcmV0dXJuIHByb2R1Y2UocXVlcnlTdGFjaywgZHJhZnRTdGFjayA9PiB7XG4gICAgICBkcmFmdFN0YWNrID0gc3RhY2s7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSBsYXN0IGVuZHBvaW50IGZyb20gdGhlIHF1ZXJ5LlxuICAgKi9cbiAgcG9wUXVlcnkocXVlcnlTdGFjazogU3BpbnF1ZVF1ZXJ5W10pOiBTcGlucXVlUXVlcnlbXSB7XG4gICAgcmV0dXJuIHByb2R1Y2UocXVlcnlTdGFjaywgZHJhZnRTdGFjayA9PiB7XG4gICAgICBkcmFmdFN0YWNrLnBvcCgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciB3aXRoIHRoZSBnaXZlbiBuYW1lLiBJZiBubyBlbmRwb2ludCBuYW1lIGlzIGdpdmVuLCB0aGUgbGFzdCBlbmRwb2ludCBpcyB0YWtlblxuICAgKiB0byBiZSB0aGUgZW5kcG9pbnQgZm9yIHdoaWNoIHRoZSBwYXJhbWV0ZXIgaXMgY2hhbmdlZC5cbiAgICovXG4gIHNldFBhcmFtZXRlcihxdWVyeVN0YWNrOiBTcGlucXVlUXVlcnlbXSwgcGFyYW1OYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIGVuZHBvaW50Pzogc3RyaW5nKTogU3BpbnF1ZVF1ZXJ5W10ge1xuICAgIGxldCBlbmRwb2ludEluZGV4ID0gcXVlcnlTdGFjay5sZW5ndGggLSAxO1xuICAgIGlmICghIWVuZHBvaW50KSB7XG4gICAgICBlbmRwb2ludEluZGV4ID0gcXVlcnlTdGFjay5maW5kSW5kZXgoZSA9PiBlLmVuZHBvaW50ID09PSBlbmRwb2ludCk7XG4gICAgfVxuICAgIHJldHVybiBwcm9kdWNlKHF1ZXJ5U3RhY2ssIGRyYWZ0U3RhY2sgPT4ge1xuICAgICAgY29uc3QgcXVlcnkgPSBkcmFmdFN0YWNrW2VuZHBvaW50SW5kZXhdO1xuICAgICAgaWYgKCFxdWVyeSApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCAhcXVlcnkucGFyYW1ldGVycyApIHtcbiAgICAgICAgcXVlcnkucGFyYW1ldGVycyA9IHt9O1xuICAgICAgfVxuICAgICAgcXVlcnkucGFyYW1ldGVyc1twYXJhbU5hbWVdID0gdmFsdWU7XG4gICAgICBkcmFmdFN0YWNrW2VuZHBvaW50SW5kZXhdID0gcXVlcnk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BpbnF1ZS1xdWVyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvc3BpbnF1ZS1hbmd1bGFyLXVpL3NyYy9zcGlucXVlLXF1ZXJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQXdCaEMsbUVBQW1FO0FBQ25FLHVEQUF1RDtBQUN2RCw4RUFBOEU7QUFFOUU7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxtQkFBbUI7SUFDOUI7O09BRUc7SUFDSCxRQUFRLENBQUMsVUFBNkIsRUFBRSxnQkFBd0I7UUFDOUQsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxLQUFLLGdCQUFnQixJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQTtRQUM3RyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxVQUE2QjtRQUN4QyxPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVEsQ0FBQyxVQUE2QixFQUFFLFFBQWdCLEVBQUUsYUFBcUMsRUFBRTtRQUMvRixPQUFPLE9BQU8sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDdEMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLFVBQTZCLEVBQUUsZ0JBQXdC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LEdBQUcsS0FBSyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Z0hBaEdVLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHByb2R1Y2UgfSBmcm9tICdpbW1lcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BpbnF1ZVF1ZXJ5UGFyYW1ldGVycyB7XG4gIFtuYW1lOiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BpbnF1ZUFwaVF1ZXJ5IHtcbiAgcmVhZG9ubHkgd29ya3NwYWNlPzogc3RyaW5nO1xuICByZWFkb25seSBhcGk/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGVuZHBvaW50OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM/OiBTcGlucXVlUXVlcnlQYXJhbWV0ZXJzO1xuICByZWFkb25seSBjb25maWc/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BpbnF1ZVN0cmF0ZWd5UXVlcnkge1xuICByZWFkb25seSB3b3Jrc3BhY2U/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbW1pdDogc3RyaW5nO1xuICByZWFkb25seSBwYXJhbWV0ZXJzPzogU3BpbnF1ZVF1ZXJ5UGFyYW1ldGVycztcbiAgcmVhZG9ubHkgY29uZmlnPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBTcGlucXVlUXVlcnkgPSBTcGlucXVlQXBpUXVlcnkgfCBTcGlucXVlU3RyYXRlZ3lRdWVyeTtcbmV4cG9ydCB0eXBlIFNwaW5xdWVRdWVyeVN0YWNrID0gU3BpbnF1ZVF1ZXJ5W107XG5cbi8vIFRoaXMgd291bGQgYWN0dWFsbHkgYmUgbW9yZSBjb3JyZWN0IGJ1dCBkb2VzIG5vdCB3b3JrIGN1cnJlbnRseTpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMzM1OTFcbi8vIGV4cG9ydCB0eXBlIFNwaW5xdWVRdWVyeVN0YWNrID0gU3BpbnF1ZUFwaVF1ZXJ5W10gfCBTcGlucXVlU3RyYXRlZ3lRdWVyeVtdO1xuXG4vKipcbiAqIFNwaW5xdWVRdWVyeVNlcnZpY2UgcHJvdmlkZXMgbWV0aG9kcyB0aGF0IHRha2UgU3BpbnF1ZVF1ZXJ5IG9iamVjdHMgYW5kIHRyYW5zZm9ybSB0aGVtIGludG9cbiAqIG5ldyBTcGlucXVlUXVlcnkgb2JqZWN0cy4gVGhpcyB3YXkgcXVlcmllcyBjYW4gYmUgY29uc3RydWN0ZWQgYW5kIG1hbmlwdWxhdGVkIGluIGFuIGltbXV0YWJsZSBtYW5uZXIuXG4gKiBUaGlzIHNlcnZpY2UgaXMgY2VudHJhbCBpbiBtb3N0IGFwcGxpY2F0aW9ucy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3BpbnF1ZVF1ZXJ5U2VydmljZSB7XG4gIC8qKlxuICAgKiBHZXQgYSBTcGlucXVlUXVlcnkgZnJvbSBhIHN0YWNrZWQgcXVlcnkgYnkgZW5kcG9pbnQgbmFtZVxuICAgKi9cbiAgZ2V0UXVlcnkocXVlcnlTdGFjazogU3BpbnF1ZVF1ZXJ5U3RhY2ssIGVuZHBvaW50T3JDb21taXQ6IHN0cmluZyk6IFNwaW5xdWVRdWVyeSB7XG4gICAgcmV0dXJuIHF1ZXJ5U3RhY2suZmluZChlID0+IHtcbiAgICAgIHJldHVybiAnZW5kcG9pbnQnIGluIGUgJiYgZS5lbmRwb2ludCA9PT0gZW5kcG9pbnRPckNvbW1pdCB8fCAnY29tbWl0JyBpbiBlICYmIGUuY29tbWl0ID09PSBlbmRwb2ludE9yQ29tbWl0XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsYXN0IHF1ZXJ5IG9mIGEgcXVlcnkgc3RhY2tcbiAgICovXG4gIGdldExhc3RRdWVyeShxdWVyeVN0YWNrOiBTcGlucXVlUXVlcnlTdGFjayk6IFNwaW5xdWVRdWVyeSB7XG4gICAgcmV0dXJuIHF1ZXJ5U3RhY2tbcXVlcnlTdGFjay5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBxdWVyeSB3aXRoIG9wdGlvbmFsIHBhcmFtZXRlciB0byB0aGUgcXVlcnkuXG4gICAqL1xuICBhZGRRdWVyeShxdWVyeVN0YWNrOiBTcGlucXVlUXVlcnlTdGFjaywgZW5kcG9pbnQ6IHN0cmluZywgcGFyYW1ldGVyczogU3BpbnF1ZVF1ZXJ5UGFyYW1ldGVycyA9IHt9KTogU3BpbnF1ZVF1ZXJ5U3RhY2sge1xuICAgIHJldHVybiBwcm9kdWNlKHF1ZXJ5U3RhY2ssIGRyYWZ0U3RhY2sgPT4ge1xuICAgICAgZHJhZnRTdGFjay5wdXNoKHsgZW5kcG9pbnQsIHBhcmFtZXRlcnMgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZCB0aGUgcXVlcnkgd2l0aCB0aGUgZ2l2ZW4gZW5kcG9pbnQgbmFtZSBhbmQgdXBkYXRlIGl0cyBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgdXBkYXRlUXVlcnkocXVlcnlTdGFjazogU3BpbnF1ZVF1ZXJ5U3RhY2ssIGVuZHBvaW50T3JDb21taXQ6IHN0cmluZywgcGFyYW1ldGVyczogU3BpbnF1ZVF1ZXJ5UGFyYW1ldGVycyA9IHt9KTogU3BpbnF1ZVF1ZXJ5U3RhY2sge1xuICAgIHJldHVybiBwcm9kdWNlKHF1ZXJ5U3RhY2ssIGRyYWZ0U3RhY2sgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBxdWVyeVN0YWNrLmZpbmRJbmRleChlID0+IHtcbiAgICAgICAgcmV0dXJuICdlbmRwb2ludCcgaW4gZSAmJiBlLmVuZHBvaW50ID09PSBlbmRwb2ludE9yQ29tbWl0IHx8ICdjb21taXQnIGluIGUgJiYgZS5jb21taXQgPT09IGVuZHBvaW50T3JDb21taXRcbiAgICAgIH0pO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgZHJhZnRTdGFja1tpbmRleF0gPSB7IC4uLnF1ZXJ5U3RhY2tbaW5kZXhdLCBwYXJhbWV0ZXJzIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkcmFmdFN0YWNrLnB1c2goeyAuLi5xdWVyeVN0YWNrW2luZGV4XSwgcGFyYW1ldGVycyB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIGVuZHBvaW50IHdpdGggdGhlIGdpdmVuIG5hbWUgZnJvbSB0aGUgcXVlcnkuXG4gICAqL1xuICByZW1vdmVRdWVyeShxdWVyeVN0YWNrOiBTcGlucXVlUXVlcnlTdGFjaywgZW5kcG9pbnRPckNvbW1pdDogc3RyaW5nKTogU3BpbnF1ZVF1ZXJ5U3RhY2sge1xuICAgIHJldHVybiBwcm9kdWNlKHF1ZXJ5U3RhY2ssIGRyYWZ0U3RhY2sgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBxdWVyeVN0YWNrLmZpbmRJbmRleChlID0+IHtcbiAgICAgICAgcmV0dXJuICdlbmRwb2ludCcgaW4gZSAmJiBlLmVuZHBvaW50ID09PSBlbmRwb2ludE9yQ29tbWl0IHx8ICdjb21taXQnIGluIGUgJiYgZS5jb21taXQgPT09IGVuZHBvaW50T3JDb21taXRcbiAgICAgIH0pO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgZHJhZnRTdGFjayA9IGRyYWZ0U3RhY2suc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIHRoZSB3aG9sZSBzZXQgb2YgcXVlcnkgZW5kcG9pbnRzIGluIGEgcXVlcnkgYXQgb25jZS5cbiAgICovXG4gIHVwZGF0ZVF1ZXJ5U3RhY2socXVlcnlTdGFjazogU3BpbnF1ZVF1ZXJ5U3RhY2ssIHN0YWNrOiBTcGlucXVlUXVlcnlTdGFjayk6IFNwaW5xdWVRdWVyeVN0YWNrIHtcbiAgICByZXR1cm4gcHJvZHVjZShxdWVyeVN0YWNrLCBkcmFmdFN0YWNrID0+IHtcbiAgICAgIGRyYWZ0U3RhY2sgPSBzdGFjaztcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIGxhc3QgZW5kcG9pbnQgZnJvbSB0aGUgcXVlcnkuXG4gICAqL1xuICBwb3BRdWVyeShxdWVyeVN0YWNrOiBTcGlucXVlUXVlcnlTdGFjayk6IFNwaW5xdWVRdWVyeVN0YWNrIHtcbiAgICByZXR1cm4gcHJvZHVjZShxdWVyeVN0YWNrLCBkcmFmdFN0YWNrID0+IHtcbiAgICAgIGRyYWZ0U3RhY2sucG9wKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyIHdpdGggdGhlIGdpdmVuIG5hbWUuIElmIG5vIGVuZHBvaW50IG5hbWUgaXMgZ2l2ZW4sIHRoZSBsYXN0IGVuZHBvaW50IGlzIHRha2VuXG4gICAqIHRvIGJlIHRoZSBlbmRwb2ludCBmb3Igd2hpY2ggdGhlIHBhcmFtZXRlciBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgc2V0UGFyYW1ldGVyKHF1ZXJ5U3RhY2s6IFNwaW5xdWVRdWVyeVN0YWNrLCBwYXJhbU5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgZW5kcG9pbnRPckNvbW1pdD86IHN0cmluZyk6IFNwaW5xdWVRdWVyeVN0YWNrIHtcbiAgICBsZXQgZW5kcG9pbnRJbmRleCA9IHF1ZXJ5U3RhY2subGVuZ3RoIC0gMTtcbiAgICBpZiAoISFlbmRwb2ludE9yQ29tbWl0KSB7XG4gICAgICBlbmRwb2ludEluZGV4ID0gcXVlcnlTdGFjay5maW5kSW5kZXgoZSA9PiB7XG4gICAgICAgIHJldHVybiAnZW5kcG9pbnQnIGluIGUgJiYgZS5lbmRwb2ludCA9PT0gZW5kcG9pbnRPckNvbW1pdCB8fCAnY29tbWl0JyBpbiBlICYmIGUuY29tbWl0ID09PSBlbmRwb2ludE9yQ29tbWl0XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHByb2R1Y2UocXVlcnlTdGFjaywgZHJhZnRTdGFjayA9PiB7XG4gICAgICBjb25zdCBxdWVyeSA9IGRyYWZ0U3RhY2tbZW5kcG9pbnRJbmRleF07XG4gICAgICBpZiAoIXF1ZXJ5ICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoICFxdWVyeS5wYXJhbWV0ZXJzICkge1xuICAgICAgICBxdWVyeS5wYXJhbWV0ZXJzID0ge307XG4gICAgICB9XG4gICAgICBxdWVyeS5wYXJhbWV0ZXJzW3BhcmFtTmFtZV0gPSB2YWx1ZTtcbiAgICAgIGRyYWZ0U3RhY2tbZW5kcG9pbnRJbmRleF0gPSBxdWVyeTtcbiAgICB9KTtcbiAgfVxufVxuIl19

@@ -54,3 +54,3 @@ import { Inject, Injectable } from '@angular/core';

/**
* Fetches query results of a SpinqueQuery or SpinqueQuery[]
* Fetches query results of a SpinqueQuery or SpinqueQueryStack
*/

@@ -129,5 +129,11 @@ getResults(query, options) {

// 1. Build the query url by combining the configured base with the context, query path and operation
const api = this.apiOverride || queryStack[0].api || this.apiConfig.api;
const workspace = this.workspaceOverride || queryStack[0].workspace || this.apiConfig.workspace;
const base = `${this.apiConfig.baseUrl}/${this.apiConfig.version}/${workspace}/api/${api}`;
let base = `${this.apiConfig.baseUrl}/${this.apiConfig.version}/${workspace}`;
if ('endpoint' in queryStack[0]) {
const api = this.apiOverride || queryStack[0].api || this.apiConfig.api;
base += `/api/${api}`;
}
else {
base += `/standalone`;
}
const queryPath = this.decodeString(queryStack);

@@ -153,3 +159,3 @@ const url = `${base}${queryPath}/${operation}`;

/**
* Takes a SpinqueQuery object and stringifies it.
* Takes a SpinqueQueryStack object and stringifies it.
* See https://docs.spinque.com/2.4/rest/basic.html for more information.

@@ -173,3 +179,3 @@ */

const parameterString = this.getParameterString(query.parameters);
return `/q/${encodeURIComponent(query.endpoint)}${parameterString}`;
return `/q/${encodeURIComponent('endpoint' in query ? query.endpoint : query.commit)}${parameterString}`;
}

@@ -240,2 +246,2 @@ /**

}] }, { type: i1.HttpClient }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BpbnF1ZS1yZXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvc3JjL3NwaW5xdWUtcmVzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQW9CLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQThEL0U7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGtCQUFrQjtJQU83QixZQUFtRCxTQUEyQixFQUFVLElBQWdCO1FBQXJELGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUZoRyx1QkFBa0IsR0FBNEIsRUFBRSxDQUFDO0lBRWtELENBQUM7SUFFNUc7O09BRUc7SUFDSSxjQUFjLENBQUMsTUFBYztRQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxvQkFBb0I7UUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVyxDQUFDLEdBQVc7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksaUJBQWlCO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNJLGlCQUFpQixDQUFDLFNBQWlCO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsR0FB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QUMzQjthQUFNLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRTtZQUNwQixNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQztZQUNwQyxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztTQUMzQjtJQUNILENBQUM7OytHQTFQVSxrQkFBa0Isa0JBT1QscUJBQXFCO21IQVA5QixrQkFBa0IsY0FGakIsTUFBTTsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFRYyxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3BpbnF1ZUFwaUNvbmZpZywgU3BpbnF1ZUFwaUNvbmZpZ1ZhbHVlIH0gZnJvbSAnLi9zcGlucXVlLWFwaS5jb25maWcnO1xuaW1wb3J0IHsgU3BpbnF1ZVF1ZXJ5LCBTcGlucXVlUXVlcnlQYXJhbWV0ZXJzIH0gZnJvbSAnLi9zcGlucXVlLXF1ZXJ5LnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNwaW5xdWVDb250ZXh0IHtcbiAgW3BhcmFtZXRlck5hbWU6IHN0cmluZ106IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTcGlucXVlUmVzdWx0IHtcbiAgaXRlbXM6IFNwaW5xdWVSZXN1bHRJdGVtW107XG4gIHR5cGU6IFtdO1xuICBjb3VudDogbnVtYmVyO1xuICBvZmZzZXQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTcGlucXVlU3RhdGlzdGljcyB7XG4gIHRvdGFsOiBudW1iZXI7XG4gIHN0YXRzOiB7XG4gICAgY3V0b2ZmOiBzdHJpbmc7XG4gICAgbnVtUmVzdWx0czogbnVtYmVyO1xuICB9W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BpbnF1ZVJlc3VsdEl0ZW0ge1xuICB0dXBsZTogYW55W107XG4gIHJhbms6IG51bWJlcjtcbiAgcHJvYmFiaWxpdHk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTcGlucXVlUmVzdWx0SXRlbVR1cGxlIHtcbiAgaWQ6IHN0cmluZztcbiAgY2xhc3M6IHN0cmluZ1tdO1xuICBhdHRyaWJ1dGVzOiBvYmplY3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BpbnF1ZUZhY2V0IHtcbiAgc2VsZWN0ZWQ6IFNwaW5xdWVGYWNldE9wdGlvbltdO1xuICBvcHRpb25zOiBTcGlucXVlRmFjZXRPcHRpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTcGlucXVlRmFjZXRPcHRpb24ge1xuICBpZDogc3RyaW5nO1xuICBzY29yZTogbnVtYmVyO1xuICB0aXRsZT86IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTcGlucXVlUXVlcnlQYXJhbXMge1xuICBbbmFtZTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RFbnJpY2htZW50IHtcbiAgcGFyYW1zPzogSHR0cFBhcmFtcyB8IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIGhlYWRlcnM/OiB7IEF1dGhvcml6YXRpb246IHN0cmluZyB9O1xuICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBSZXF1ZXN0RW5yaWNobWVudEhvb2sgPSAoXG4gIHF1ZXJ5U3RhY2s6IFNwaW5xdWVRdWVyeVtdLFxuICBvcGVyYXRpb246IHN0cmluZyxcbiAgb3B0aW9uczogeyBbbmFtZTogc3RyaW5nXTogYW55IH1cbikgPT4gT2JzZXJ2YWJsZTxSZXF1ZXN0RW5yaWNobWVudD47XG5cbi8qKlxuICogU3BpbnF1ZVJlc3RTZXJ2aWNlIHByb3ZpZGVzIG1ldGhvZHMgdGhhdCB0YWtlIFNwaW5xdWVRdWVyeSBvYmplY3RzLCBldmFsdWF0ZSB0aGVtIHVzaW5nIHRoZSBTcGlucXVlIFJFU1QgQVBJIGFuZCByZXR1cm4gdGhlIG91dHB1dC5cbiAqIEluIGFsbCBzZWFyY2ggYXBwbGljYXRpb25zLCB0aGlzIHNlcnZpY2UgaXMgYXQgdGhlIGFic29sdXRlIGNvcmUuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTcGlucXVlUmVzdFNlcnZpY2Uge1xuICBwcml2YXRlIGNvbmZpZ092ZXJyaWRlOiBzdHJpbmc7XG4gIHByaXZhdGUgYXBpT3ZlcnJpZGU6IHN0cmluZztcbiAgcHJpdmF0ZSB3b3Jrc3BhY2VPdmVycmlkZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgZW5yaWNoUmVxdWVzdEhvb2tzOiBSZXF1ZXN0RW5yaWNobWVudEhvb2tbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoU3BpbnF1ZUFwaUNvbmZpZ1ZhbHVlKSBwcml2YXRlIGFwaUNvbmZpZzogU3BpbnF1ZUFwaUNvbmZpZywgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxuXG4gIC8qKlxuICAgKiBUZW1wb3JhcmlseSBvdmVycmlkZSB0aGUgJ2NvbmZpZycgdmFsdWUgZnJvbSB0aGUgQVBJIGNvbmZpZ3VyYXRpb24gc2V0IGF0IGluaXRpYWxpc2F0aW9uXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGVDb25maWcoY29uZmlnOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbmZpZ092ZXJyaWRlID0gY29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbnkgdGVtcG9yYXJ5IG92ZXJyaWRlcyBvZiB0aGUgJ2NvbmZpZycgdmFsdWUgZnJvbSB0aGUgQVBJIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHB1YmxpYyBmb3JnZXRDb25maWdPdmVycmlkZSgpIHtcbiAgICB0aGlzLmNvbmZpZ092ZXJyaWRlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBvcmFyaWx5IG92ZXJyaWRlIHRoZSAnYXBpJyB2YWx1ZSBmcm9tIHRoZSBBUEkgY29uZmlndXJhdGlvbiBzZXQgYXQgaW5pdGlhbGlzYXRpb25cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZUFwaShhcGk6IHN0cmluZykge1xuICAgIHRoaXMuYXBpT3ZlcnJpZGUgPSBhcGk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFueSB0ZW1wb3Jhcnkgb3ZlcnJpZGVzIG9mIHRoZSAnYXBpJyB2YWx1ZSBmcm9tIHRoZSBBUEkgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIGZvcmdldEFwaU92ZXJyaWRlKCkge1xuICAgIHRoaXMuYXBpT3ZlcnJpZGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGVtcG9yYXJpbHkgb3ZlcnJpZGUgdGhlICd3b3Jrc3BhY2UnIHZhbHVlIGZyb20gdGhlIEFQSSBjb25maWd1cmF0aW9uIHNldCBhdCBpbml0aWFsaXNhdGlvblxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlV29ya3NwYWNlKHdvcmtzcGFjZTogc3RyaW5nKSB7XG4gICAgdGhpcy53b3Jrc3BhY2VPdmVycmlkZSA9IHdvcmtzcGFjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW55IHRlbXBvcmFyeSBvdmVycmlkZXMgb2YgdGhlICd3b3Jrc3BhY2UnIHZhbHVlIGZyb20gdGhlIEFQSSBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwdWJsaWMgZm9yZ2V0V29ya3NwYWNlT3ZlcnJpZGUoKSB7XG4gICAgdGhpcy53b3Jrc3BhY2VPdmVycmlkZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHF1ZXJ5IHJlc3VsdHMgb2YgYSBTcGlucXVlUXVlcnkgb3IgU3BpbnF1ZVF1ZXJ5W11cbiAgICovXG4gIHB1YmxpYyBnZXRSZXN1bHRzKFxuICAgIHF1ZXJ5OiBTcGlucXVlUXVlcnkgfCBTcGlucXVlUXVlcnlbXSxcbiAgICBvcHRpb25zPzogeyBbbmFtZTogc3RyaW5nXTogYW55IH1cbiAgKTogT2JzZXJ2YWJsZTxTcGlucXVlUmVzdWx0PiB7XG4gICAgY29uc3QgcXVlcnlTdGFjayA9IHF1ZXJ5IGluc3RhbmNlb2YgQXJyYXkgPyBxdWVyeSA6IFtxdWVyeV07XG4gICAgcmV0dXJuIHRoaXMuZ2V0KHF1ZXJ5U3RhY2ssICdyZXN1bHRzJywgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBxdWVyeSBzdGF0aXN0aWNzXG4gICAqL1xuICBwdWJsaWMgZ2V0U3RhdGlzdGljcyhxdWVyeTogU3BpbnF1ZVF1ZXJ5IHwgU3BpbnF1ZVF1ZXJ5W10pOiBPYnNlcnZhYmxlPFNwaW5xdWVTdGF0aXN0aWNzPiB7XG4gICAgY29uc3QgcXVlcnlTdGFjayA9IHF1ZXJ5IGluc3RhbmNlb2YgQXJyYXkgPyBxdWVyeSA6IFtxdWVyeV07XG4gICAgcmV0dXJuIHRoaXMuZ2V0PFNwaW5xdWVTdGF0aXN0aWNzPihxdWVyeVN0YWNrLCAnc3RhdGlzdGljcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgcXVlcnkgb3B0aW9uc1xuICAgKlxuICAgKiBXZSBjb25zaWRlciB0aHJlZSB0eXBlcyBvZiBvcHRpb25zXG4gICAqIDEuIGEgc2luZ2xlIGF0b21pYyB2YWx1ZSAoc3RyaW5nLCBudW1iZXIgb3IgZGF0ZSlcbiAgICogMi4gYW4gb2JqZWN0LXN0cmluZyBwYWlyLlxuICAgKiAgICBJbiB0aGlzIGNhc2Ugd2Ugb25seSByZXR1cm4gdGhlIGlkIG9mIHRoZSBvYmplY3QgYW5kIHRoZSBzdHJpbmcgaXMgY29uc2lkZXJlZCBhcyB0aGUgdGl0bGVcbiAgICogMy4gYSB0dXBsZSB3aXRoIG9uZSBvciBtb3JlIG9iamVjdHNcbiAgICogICAgVGhlIGlkIG9mIHRoZSBmaXJzdCBpdGVtIGluIHRoZSB0dXBsZSBpcyB1c2VkIGFzIHRoZSB2YWx1ZVxuICAgKiAgICBSZXR1cm4gdGhlIGZ1bGwgdHVwbGUgYXMgdGhlIHZhbHVlLCB0aGUgY2xpZW50IHNob3VsZCBmaWd1cmUgb3V0IGhvdyB0byBwcmVzZW50IHRoZW1cbiAgICovXG4gIHB1YmxpYyBnZXRPcHRpb25zKHF1ZXJ5OiBTcGlucXVlUXVlcnkgfCBTcGlucXVlUXVlcnlbXSwgb3B0aW9ucz8pOiBPYnNlcnZhYmxlPFNwaW5xdWVGYWNldD4ge1xuICAgIGNvbnN0IHF1ZXJ5U3RhY2sgPSBxdWVyeSBpbnN0YW5jZW9mIEFycmF5ID8gcXVlcnkgOiBbcXVlcnldO1xuICAgIC8vIFRPRE86IGFmdGVyIGEgYmFja2VuZCBjaGFuZ2UsIHRoaXMgd2lsbCBiZWNvbWU6XG4gICAgLy8gcmV0dXJuIHRoaXMuZ2V0KHF1ZXJ5LCAnb3B0aW9ucycpO1xuICAgIC8vIFRPRE86IHRoZW4gdGhpcyBjYW4gYmUgcmVtb3ZlZDpcbiAgICByZXR1cm4gdGhpcy5nZXQocXVlcnlTdGFjaywgJ3Jlc3VsdHMnLCBvcHRpb25zKS5waXBlKFxuICAgICAgbWFwKChkYXRhKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc2VsZWN0ZWQ6IFtdLCAvLyB3ZSBkbyBub3QgaGF2ZSB0aGVzZSBpbiAyLjUuIEluIDMuMCB3ZSB3aWxsIGdldCB0aGVzZSBiYWNrLlxuICAgICAgICAgIG9wdGlvbnM6IChkYXRhLml0ZW1zID8gZGF0YS5pdGVtcyA6IFtdKS5tYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHVwbGUgPSByZXN1bHQudHVwbGU7XG4gICAgICAgICAgICBpZiAodHVwbGUubGVuZ3RoID09PSAxICYmICh0eXBlb2YgdHVwbGVbMF0gPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB0dXBsZVswXSA9PT0gJ251bWJlcicpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2NvcmU6IHJlc3VsdC5wcm9iYWJpbGl0eSxcbiAgICAgICAgICAgICAgICBpZDogdHVwbGVbMF0sXG4gICAgICAgICAgICAgICAgdGl0bGU6IHR1cGxlWzBdLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgdHVwbGUubGVuZ3RoID09PSAyICYmXG4gICAgICAgICAgICAgIHR1cGxlWzBdIGluc3RhbmNlb2YgT2JqZWN0ICYmXG4gICAgICAgICAgICAgICh0eXBlb2YgdHVwbGVbMV0gPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB0dXBsZVsxXSA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzY29yZTogcmVzdWx0LnByb2JhYmlsaXR5LFxuICAgICAgICAgICAgICAgIGlkOiB0dXBsZVswXS5pZCxcbiAgICAgICAgICAgICAgICB0aXRsZTogdHVwbGVbMV0sXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNjb3JlOiByZXN1bHQucHJvYmFiaWxpdHksXG4gICAgICAgICAgICAgICAgaWQ6IHR1cGxlWzBdLmlkLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0dXBsZSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRFbnJpY2hSZXF1ZXN0SG9vayhob29rOiBSZXF1ZXN0RW5yaWNobWVudEhvb2spOiB2b2lkIHtcbiAgICB0aGlzLmVucmljaFJlcXVlc3RIb29rcy5wdXNoKGhvb2spO1xuICB9XG5cbiAgLyogUHJpdmF0ZSBmdW5jdGlvbnMgKi9cblxuICAvKipcbiAgICogVGFrZXMgYSBxdWVyeSBhbmQgb3BlcmF0aW9uIChyZXN1bHRzLCBzdGF0aXN0aWNzLCBldGMpIGFuZCByZXR1cm4gYW4gT2JzZXJ2YWJsZSB3aXRoIHRoZSByZXN1bHRzXG4gICAqL1xuICBwcml2YXRlIGdldDxUID0gYW55PihcbiAgICBxdWVyeVN0YWNrOiBTcGlucXVlUXVlcnlbXSxcbiAgICBvcGVyYXRpb246IHN0cmluZyxcbiAgICBvcHRpb25zOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8VD4ge1xuICAgIGlmIChxdWVyeVN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyAxLiBCdWlsZCB0aGUgcXVlcnkgdXJsIGJ5IGNvbWJpbmluZyB0aGUgY29uZmlndXJlZCBiYXNlIHdpdGggdGhlIGNvbnRleHQsIHF1ZXJ5IHBhdGggYW5kIG9wZXJhdGlvblxuICAgIGNvbnN0IGFwaSA9IHRoaXMuYXBpT3ZlcnJpZGUgfHwgcXVlcnlTdGFja1swXS5hcGkgfHwgdGhpcy5hcGlDb25maWcuYXBpO1xuICAgIGNvbnN0IHdvcmtzcGFjZSA9IHRoaXMud29ya3NwYWNlT3ZlcnJpZGUgfHwgcXVlcnlTdGFja1swXS53b3Jrc3BhY2UgfHwgdGhpcy5hcGlDb25maWcud29ya3NwYWNlO1xuICAgIGNvbnN0IGJhc2UgPSBgJHt0aGlzLmFwaUNvbmZpZy5iYXNlVXJsfS8ke3RoaXMuYXBpQ29uZmlnLnZlcnNpb259LyR7d29ya3NwYWNlfS9hcGkvJHthcGl9YDtcbiAgICBjb25zdCBxdWVyeVBhdGggPSB0aGlzLmRlY29kZVN0cmluZyhxdWVyeVN0YWNrKTtcbiAgICBjb25zdCB1cmwgPSBgJHtiYXNlfSR7cXVlcnlQYXRofS8ke29wZXJhdGlvbn1gO1xuXG4gICAgLy8gMi4gR2V0IHF1ZXJ5IHBhcmFtZXRlcnMgYnkgZXh0ZW5kaW5nIHRoZSBBUEkgY29uZmlnIGJhc2Ugd2l0aCB0aGUgcGFzc2VkIG9wdGlvbnNcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ092ZXJyaWRlIHx8IHF1ZXJ5U3RhY2tbMF0uY29uZmlnIHx8IHRoaXMuYXBpQ29uZmlnLmNvbmZpZztcbiAgICBjb25zdCBwYXJhbXMgPSB7IGNvbmZpZywgLi4ub3B0aW9ucywgdmVyc2lvbjogdGhpcy5hcGlDb25maWcuYXBwVmVyc2lvbiB9O1xuXG4gICAgbGV0IGVucmljaG1lbnQkOiBPYnNlcnZhYmxlPFJlcXVlc3RFbnJpY2htZW50PjtcbiAgICBpZiAodGhpcy5lbnJpY2hSZXF1ZXN0SG9va3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGVucmljaG1lbnQkID0gY29tYmluZUxhdGVzdChcbiAgICAgICAgLy8gRXhlY3V0ZSBhbnkgaG9va3MgdGhhdCBtYXkgaGF2ZSByZWdpc3RlcmVkIChjdXJyZW50bHkgb25seSBzcGlucXVlLWFuZ3VsYXItdWkvYXV0aCByZWdpc3RlcnMgb25lKVxuICAgICAgICB0aGlzLmVucmljaFJlcXVlc3RIb29rcy5tYXAoKGZuKSA9PiBmbihxdWVyeVN0YWNrLCBvcGVyYXRpb24sIG9wdGlvbnMpKVxuICAgICAgKS5waXBlKG1hcCgocmVzdWx0cykgPT4gcmVzdWx0cy5yZWR1Y2UoKGFjYywgY3VyKSA9PiAoeyAuLi5hY2MsIC4uLmN1ciB9KSwge30pKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVucmljaG1lbnQkID0gb2Yoe30pO1xuICAgIH1cblxuICAgIHJldHVybiBlbnJpY2htZW50JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChlbnJpY2htZW50KSA9PiB0aGlzLmh0dHAuZ2V0PFQ+KHVybCwgeyBwYXJhbXMsIC4uLmVucmljaG1lbnQgfSkpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlcyBhIFNwaW5xdWVRdWVyeSBvYmplY3QgYW5kIHN0cmluZ2lmaWVzIGl0LlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLnNwaW5xdWUuY29tLzIuNC9yZXN0L2Jhc2ljLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqL1xuICBkZWNvZGVTdHJpbmcocXVlcnlTdGFjazogU3BpbnF1ZVF1ZXJ5W10pOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbnRleHRTdHJpbmcgPSB0aGlzLmdldENvbnRleHRTdHJpbmcoKTtcbiAgICByZXR1cm4gY29udGV4dFN0cmluZyArIHF1ZXJ5U3RhY2subWFwKChxKSA9PiB0aGlzLmdldFF1ZXJ5U3RyaW5nKHEpKS5qb2luKCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb250ZXh0IHN0cmluZyAod2l0aCBwYXJhbWV0ZXIgZGVmYXVsdHMpXG4gICAqL1xuICBnZXRDb250ZXh0U3RyaW5nKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuYXBpQ29uZmlnLmNvbnRleHQgfHwge307XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGNvbnRleHQpLnJlZHVjZShcbiAgICAgIChhY2MsIGN1cikgPT4gYCR7YWNjfS9jLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGN1clswXSl9LyR7ZW5jb2RlVVJJQ29tcG9uZW50KGN1clsxXSl9YCxcbiAgICAgICcnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlcyBhIFNwaW5xdWVFbmRwb2ludCBhbmQgc3RyaW5naWZpZXMgaXQuXG4gICAqL1xuICBnZXRRdWVyeVN0cmluZyhxdWVyeTogU3BpbnF1ZVF1ZXJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJTdHJpbmcgPSB0aGlzLmdldFBhcmFtZXRlclN0cmluZyhxdWVyeS5wYXJhbWV0ZXJzKTtcbiAgICByZXR1cm4gYC9xLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5LmVuZHBvaW50KX0ke3BhcmFtZXRlclN0cmluZ31gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVuZHBvaW50J3MgcGFyYW1ldGVycyBhcyBhIHN0cmluZyAoL3Ave2tleTF9L3t2YWx1ZTF9L3Ave2tleTJ9L3t2YWx1ZTJ9Ly4uKVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRQYXJhbWV0ZXJTdHJpbmcocGFyYW1ldGVyczogU3BpbnF1ZVF1ZXJ5UGFyYW1ldGVycyk6IHN0cmluZyB7XG4gICAgaWYgKCFwYXJhbWV0ZXJzKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICBPYmplY3QuZW50cmllcyhwYXJhbWV0ZXJzKVxuICAgICAgICAvLyBQYXJhbWV0ZXIgdmFsdWUgbXVzdCBiZSBmaWxsZWRcbiAgICAgICAgLmZpbHRlcigoW3BhcmFtLCB2YWx1ZV0pID0+ICF0aGlzLmlzRW1wdHlWYWx1ZSh2YWx1ZSkpXG4gICAgICAgIC5yZWR1Y2UoKHBhcmFtU3RyaW5nLCBbcGFyYW0sIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIHZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuZ2V0VmFsdWVTdHJpbmcodmFsdWUpKTtcbiAgICAgICAgICByZXR1cm4gYCR7cGFyYW1TdHJpbmd9L3AvJHtlbmNvZGVVUklDb21wb25lbnQocGFyYW0pfS8ke3ZhbHVlfWA7XG4gICAgICAgIH0sICcnKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gdmFsdWUgaXMgZW1wdHlcbiAgICovXG4gIHByaXZhdGUgaXNFbXB0eVZhbHVlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFsdWVTdHJpbmcodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGNvbnN0IHR1cGxlcyA9IHZhbHVlLm1hcCgodikgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUdXBsZVN0cmluZyh2KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHR1cGxlcy5qb2luKCd8Jyk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VHVwbGVTdHJpbmcodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgZm9ybWF0dGVkIHZlcnNpb24gb2YgYSB0dXBsZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRUdXBsZVN0cmluZyhcbiAgICBvOiB7IHR1cGxlOiBzdHJpbmdbXTsgcHJvYmFiaWxpdHk6IG51bWJlciB8IHN0cmluZyB9IHwgeyBpZDogc3RyaW5nOyBwcm9iYWJpbGl0eTogbnVtYmVyIHwgc3RyaW5nIH0gfCBzdHJpbmdcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gYDEuMCgke299KWA7XG4gICAgfSBlbHNlIGlmICgndHVwbGUnIGluIG8pIHtcbiAgICAgIGNvbnN0IHByb2IgPSBvLnByb2JhYmlsaXR5IHx8ICcxLjAnO1xuICAgICAgY29uc3QgdHVwbGVTdHJpbmcgPSBgJHtwcm9ifSgke28udHVwbGUuam9pbignLCcpfSlgO1xuICAgICAgcmV0dXJuIHByb2IgKyB0dXBsZVN0cmluZztcbiAgICB9IGVsc2UgaWYgKCdpZCcgaW4gbykge1xuICAgICAgY29uc3QgcHJvYiA9IG8ucHJvYmFiaWxpdHkgfHwgJzEuMCc7XG4gICAgICByZXR1cm4gYCR7cHJvYn0oJHtvLmlkfSlgO1xuICAgIH1cbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BpbnF1ZS1yZXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9zcGlucXVlLWFuZ3VsYXItdWkvc3JjL3NwaW5xdWUtcmVzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQW9CLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQThEL0U7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGtCQUFrQjtJQU83QixZQUFtRCxTQUEyQixFQUFVLElBQWdCO1FBQXJELGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUZoRyx1QkFBa0IsR0FBNEIsRUFBRSxDQUFDO0lBRWtELENBQUM7SUFFNUc7O09BRUc7SUFDSSxjQUFjLENBQUMsTUFBYztRQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxvQkFBb0I7UUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVyxDQUFDLEdBQVc7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksaUJBQWlCO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNJLGlCQUFpQixDQUFDLFNBQWlCO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsR0FB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QUFFO1lBQ3ZCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDcEQsT0FBTyxJQUFJLEdBQUcsV0FBVyxDQUFDO1NBQzNCO2FBQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDO1lBQ3BDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQzs7K0dBL1BVLGtCQUFrQixrQkFPVCxxQkFBcUI7bUhBUDlCLGtCQUFrQixjQUZqQixNQUFNOzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVFjLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3BpbnF1ZUFwaUNvbmZpZywgU3BpbnF1ZUFwaUNvbmZpZ1ZhbHVlIH0gZnJvbSAnLi9zcGlucXVlLWFwaS5jb25maWcnO1xuaW1wb3J0IHsgU3BpbnF1ZVF1ZXJ5LCBTcGlucXVlUXVlcnlTdGFjaywgU3BpbnF1ZVF1ZXJ5UGFyYW1ldGVycyB9IGZyb20gJy4vc3BpbnF1ZS1xdWVyeS5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTcGlucXVlQ29udGV4dCB7XG4gIFtwYXJhbWV0ZXJOYW1lOiBzdHJpbmddOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BpbnF1ZVJlc3VsdCB7XG4gIGl0ZW1zOiBTcGlucXVlUmVzdWx0SXRlbVtdO1xuICB0eXBlOiBbXTtcbiAgY291bnQ6IG51bWJlcjtcbiAgb2Zmc2V0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BpbnF1ZVN0YXRpc3RpY3Mge1xuICB0b3RhbDogbnVtYmVyO1xuICBzdGF0czoge1xuICAgIGN1dG9mZjogc3RyaW5nO1xuICAgIG51bVJlc3VsdHM6IG51bWJlcjtcbiAgfVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNwaW5xdWVSZXN1bHRJdGVtIHtcbiAgdHVwbGU6IGFueVtdO1xuICByYW5rOiBudW1iZXI7XG4gIHByb2JhYmlsaXR5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BpbnF1ZVJlc3VsdEl0ZW1UdXBsZSB7XG4gIGlkOiBzdHJpbmc7XG4gIGNsYXNzOiBzdHJpbmdbXTtcbiAgYXR0cmlidXRlczogb2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNwaW5xdWVGYWNldCB7XG4gIHNlbGVjdGVkOiBTcGlucXVlRmFjZXRPcHRpb25bXTtcbiAgb3B0aW9uczogU3BpbnF1ZUZhY2V0T3B0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BpbnF1ZUZhY2V0T3B0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgc2NvcmU6IG51bWJlcjtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BpbnF1ZVF1ZXJ5UGFyYW1zIHtcbiAgW25hbWU6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0RW5yaWNobWVudCB7XG4gIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICBoZWFkZXJzPzogeyBBdXRob3JpemF0aW9uOiBzdHJpbmcgfTtcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgUmVxdWVzdEVucmljaG1lbnRIb29rID0gKFxuICBxdWVyeVN0YWNrOiBTcGlucXVlUXVlcnlTdGFjayxcbiAgb3BlcmF0aW9uOiBzdHJpbmcsXG4gIG9wdGlvbnM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9XG4pID0+IE9ic2VydmFibGU8UmVxdWVzdEVucmljaG1lbnQ+O1xuXG4vKipcbiAqIFNwaW5xdWVSZXN0U2VydmljZSBwcm92aWRlcyBtZXRob2RzIHRoYXQgdGFrZSBTcGlucXVlUXVlcnkgb2JqZWN0cywgZXZhbHVhdGUgdGhlbSB1c2luZyB0aGUgU3BpbnF1ZSBSRVNUIEFQSSBhbmQgcmV0dXJuIHRoZSBvdXRwdXQuXG4gKiBJbiBhbGwgc2VhcmNoIGFwcGxpY2F0aW9ucywgdGhpcyBzZXJ2aWNlIGlzIGF0IHRoZSBhYnNvbHV0ZSBjb3JlLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU3BpbnF1ZVJlc3RTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb25maWdPdmVycmlkZTogc3RyaW5nO1xuICBwcml2YXRlIGFwaU92ZXJyaWRlOiBzdHJpbmc7XG4gIHByaXZhdGUgd29ya3NwYWNlT3ZlcnJpZGU6IHN0cmluZztcblxuICBwcml2YXRlIGVucmljaFJlcXVlc3RIb29rczogUmVxdWVzdEVucmljaG1lbnRIb29rW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFNwaW5xdWVBcGlDb25maWdWYWx1ZSkgcHJpdmF0ZSBhcGlDb25maWc6IFNwaW5xdWVBcGlDb25maWcsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cblxuICAvKipcbiAgICogVGVtcG9yYXJpbHkgb3ZlcnJpZGUgdGhlICdjb25maWcnIHZhbHVlIGZyb20gdGhlIEFQSSBjb25maWd1cmF0aW9uIHNldCBhdCBpbml0aWFsaXNhdGlvblxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlQ29uZmlnKGNvbmZpZzogc3RyaW5nKSB7XG4gICAgdGhpcy5jb25maWdPdmVycmlkZSA9IGNvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW55IHRlbXBvcmFyeSBvdmVycmlkZXMgb2YgdGhlICdjb25maWcnIHZhbHVlIGZyb20gdGhlIEFQSSBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwdWJsaWMgZm9yZ2V0Q29uZmlnT3ZlcnJpZGUoKSB7XG4gICAgdGhpcy5jb25maWdPdmVycmlkZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZW1wb3JhcmlseSBvdmVycmlkZSB0aGUgJ2FwaScgdmFsdWUgZnJvbSB0aGUgQVBJIGNvbmZpZ3VyYXRpb24gc2V0IGF0IGluaXRpYWxpc2F0aW9uXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGVBcGkoYXBpOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFwaU92ZXJyaWRlID0gYXBpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbnkgdGVtcG9yYXJ5IG92ZXJyaWRlcyBvZiB0aGUgJ2FwaScgdmFsdWUgZnJvbSB0aGUgQVBJIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHB1YmxpYyBmb3JnZXRBcGlPdmVycmlkZSgpIHtcbiAgICB0aGlzLmFwaU92ZXJyaWRlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBvcmFyaWx5IG92ZXJyaWRlIHRoZSAnd29ya3NwYWNlJyB2YWx1ZSBmcm9tIHRoZSBBUEkgY29uZmlndXJhdGlvbiBzZXQgYXQgaW5pdGlhbGlzYXRpb25cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZVdvcmtzcGFjZSh3b3Jrc3BhY2U6IHN0cmluZykge1xuICAgIHRoaXMud29ya3NwYWNlT3ZlcnJpZGUgPSB3b3Jrc3BhY2U7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFueSB0ZW1wb3Jhcnkgb3ZlcnJpZGVzIG9mIHRoZSAnd29ya3NwYWNlJyB2YWx1ZSBmcm9tIHRoZSBBUEkgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIGZvcmdldFdvcmtzcGFjZU92ZXJyaWRlKCkge1xuICAgIHRoaXMud29ya3NwYWNlT3ZlcnJpZGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBxdWVyeSByZXN1bHRzIG9mIGEgU3BpbnF1ZVF1ZXJ5IG9yIFNwaW5xdWVRdWVyeVN0YWNrXG4gICAqL1xuICBwdWJsaWMgZ2V0UmVzdWx0cyhcbiAgICBxdWVyeTogU3BpbnF1ZVF1ZXJ5IHwgU3BpbnF1ZVF1ZXJ5U3RhY2ssXG4gICAgb3B0aW9ucz86IHsgW25hbWU6IHN0cmluZ106IGFueSB9XG4gICk6IE9ic2VydmFibGU8U3BpbnF1ZVJlc3VsdD4ge1xuICAgIGNvbnN0IHF1ZXJ5U3RhY2sgPSBxdWVyeSBpbnN0YW5jZW9mIEFycmF5ID8gcXVlcnkgOiBbcXVlcnldO1xuICAgIHJldHVybiB0aGlzLmdldChxdWVyeVN0YWNrLCAncmVzdWx0cycsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgcXVlcnkgc3RhdGlzdGljc1xuICAgKi9cbiAgcHVibGljIGdldFN0YXRpc3RpY3MocXVlcnk6IFNwaW5xdWVRdWVyeSB8IFNwaW5xdWVRdWVyeVN0YWNrKTogT2JzZXJ2YWJsZTxTcGlucXVlU3RhdGlzdGljcz4ge1xuICAgIGNvbnN0IHF1ZXJ5U3RhY2sgPSBxdWVyeSBpbnN0YW5jZW9mIEFycmF5ID8gcXVlcnkgOiBbcXVlcnldO1xuICAgIHJldHVybiB0aGlzLmdldDxTcGlucXVlU3RhdGlzdGljcz4ocXVlcnlTdGFjaywgJ3N0YXRpc3RpY3MnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHF1ZXJ5IG9wdGlvbnNcbiAgICpcbiAgICogV2UgY29uc2lkZXIgdGhyZWUgdHlwZXMgb2Ygb3B0aW9uc1xuICAgKiAxLiBhIHNpbmdsZSBhdG9taWMgdmFsdWUgKHN0cmluZywgbnVtYmVyIG9yIGRhdGUpXG4gICAqIDIuIGFuIG9iamVjdC1zdHJpbmcgcGFpci5cbiAgICogICAgSW4gdGhpcyBjYXNlIHdlIG9ubHkgcmV0dXJuIHRoZSBpZCBvZiB0aGUgb2JqZWN0IGFuZCB0aGUgc3RyaW5nIGlzIGNvbnNpZGVyZWQgYXMgdGhlIHRpdGxlXG4gICAqIDMuIGEgdHVwbGUgd2l0aCBvbmUgb3IgbW9yZSBvYmplY3RzXG4gICAqICAgIFRoZSBpZCBvZiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgdHVwbGUgaXMgdXNlZCBhcyB0aGUgdmFsdWVcbiAgICogICAgUmV0dXJuIHRoZSBmdWxsIHR1cGxlIGFzIHRoZSB2YWx1ZSwgdGhlIGNsaWVudCBzaG91bGQgZmlndXJlIG91dCBob3cgdG8gcHJlc2VudCB0aGVtXG4gICAqL1xuICBwdWJsaWMgZ2V0T3B0aW9ucyhxdWVyeTogU3BpbnF1ZVF1ZXJ5IHwgU3BpbnF1ZVF1ZXJ5U3RhY2ssIG9wdGlvbnM/KTogT2JzZXJ2YWJsZTxTcGlucXVlRmFjZXQ+IHtcbiAgICBjb25zdCBxdWVyeVN0YWNrID0gcXVlcnkgaW5zdGFuY2VvZiBBcnJheSA/IHF1ZXJ5IDogW3F1ZXJ5XTtcbiAgICAvLyBUT0RPOiBhZnRlciBhIGJhY2tlbmQgY2hhbmdlLCB0aGlzIHdpbGwgYmVjb21lOlxuICAgIC8vIHJldHVybiB0aGlzLmdldChxdWVyeSwgJ29wdGlvbnMnKTtcbiAgICAvLyBUT0RPOiB0aGVuIHRoaXMgY2FuIGJlIHJlbW92ZWQ6XG4gICAgcmV0dXJuIHRoaXMuZ2V0KHF1ZXJ5U3RhY2ssICdyZXN1bHRzJywgb3B0aW9ucykucGlwZShcbiAgICAgIG1hcCgoZGF0YSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNlbGVjdGVkOiBbXSwgLy8gd2UgZG8gbm90IGhhdmUgdGhlc2UgaW4gMi41LiBJbiAzLjAgd2Ugd2lsbCBnZXQgdGhlc2UgYmFjay5cbiAgICAgICAgICBvcHRpb25zOiAoZGF0YS5pdGVtcyA/IGRhdGEuaXRlbXMgOiBbXSkubWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHR1cGxlID0gcmVzdWx0LnR1cGxlO1xuICAgICAgICAgICAgaWYgKHR1cGxlLmxlbmd0aCA9PT0gMSAmJiAodHlwZW9mIHR1cGxlWzBdID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdHVwbGVbMF0gPT09ICdudW1iZXInKSkge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNjb3JlOiByZXN1bHQucHJvYmFiaWxpdHksXG4gICAgICAgICAgICAgICAgaWQ6IHR1cGxlWzBdLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0dXBsZVswXSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgIHR1cGxlLmxlbmd0aCA9PT0gMiAmJlxuICAgICAgICAgICAgICB0dXBsZVswXSBpbnN0YW5jZW9mIE9iamVjdCAmJlxuICAgICAgICAgICAgICAodHlwZW9mIHR1cGxlWzFdID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdHVwbGVbMV0gPT09ICdudW1iZXInKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2NvcmU6IHJlc3VsdC5wcm9iYWJpbGl0eSxcbiAgICAgICAgICAgICAgICBpZDogdHVwbGVbMF0uaWQsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHR1cGxlWzFdLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzY29yZTogcmVzdWx0LnByb2JhYmlsaXR5LFxuICAgICAgICAgICAgICAgIGlkOiB0dXBsZVswXS5pZCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdHVwbGUsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkRW5yaWNoUmVxdWVzdEhvb2soaG9vazogUmVxdWVzdEVucmljaG1lbnRIb29rKTogdm9pZCB7XG4gICAgdGhpcy5lbnJpY2hSZXF1ZXN0SG9va3MucHVzaChob29rKTtcbiAgfVxuXG4gIC8qIFByaXZhdGUgZnVuY3Rpb25zICovXG5cbiAgLyoqXG4gICAqIFRha2VzIGEgcXVlcnkgYW5kIG9wZXJhdGlvbiAocmVzdWx0cywgc3RhdGlzdGljcywgZXRjKSBhbmQgcmV0dXJuIGFuIE9ic2VydmFibGUgd2l0aCB0aGUgcmVzdWx0c1xuICAgKi9cbiAgcHJpdmF0ZSBnZXQ8VCA9IGFueT4oXG4gICAgcXVlcnlTdGFjazogU3BpbnF1ZVF1ZXJ5U3RhY2ssXG4gICAgb3BlcmF0aW9uOiBzdHJpbmcsXG4gICAgb3B0aW9uczogeyBbbmFtZTogc3RyaW5nXTogYW55IH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBpZiAocXVlcnlTdGFjay5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gMS4gQnVpbGQgdGhlIHF1ZXJ5IHVybCBieSBjb21iaW5pbmcgdGhlIGNvbmZpZ3VyZWQgYmFzZSB3aXRoIHRoZSBjb250ZXh0LCBxdWVyeSBwYXRoIGFuZCBvcGVyYXRpb25cbiAgICBjb25zdCB3b3Jrc3BhY2UgPSB0aGlzLndvcmtzcGFjZU92ZXJyaWRlIHx8IHF1ZXJ5U3RhY2tbMF0ud29ya3NwYWNlIHx8IHRoaXMuYXBpQ29uZmlnLndvcmtzcGFjZTtcbiAgICBsZXQgYmFzZSA9IGAke3RoaXMuYXBpQ29uZmlnLmJhc2VVcmx9LyR7dGhpcy5hcGlDb25maWcudmVyc2lvbn0vJHt3b3Jrc3BhY2V9YDtcbiAgICBpZiAoJ2VuZHBvaW50JyBpbiBxdWVyeVN0YWNrWzBdKSB7XG4gICAgICBjb25zdCBhcGkgPSB0aGlzLmFwaU92ZXJyaWRlIHx8IHF1ZXJ5U3RhY2tbMF0uYXBpIHx8IHRoaXMuYXBpQ29uZmlnLmFwaTtcbiAgICAgIGJhc2UgKz0gYC9hcGkvJHthcGl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgYmFzZSArPSBgL3N0YW5kYWxvbmVgXG4gICAgfVxuICAgIGNvbnN0IHF1ZXJ5UGF0aCA9IHRoaXMuZGVjb2RlU3RyaW5nKHF1ZXJ5U3RhY2spO1xuICAgIGNvbnN0IHVybCA9IGAke2Jhc2V9JHtxdWVyeVBhdGh9LyR7b3BlcmF0aW9ufWA7XG5cbiAgICAvLyAyLiBHZXQgcXVlcnkgcGFyYW1ldGVycyBieSBleHRlbmRpbmcgdGhlIEFQSSBjb25maWcgYmFzZSB3aXRoIHRoZSBwYXNzZWQgb3B0aW9uc1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnT3ZlcnJpZGUgfHwgcXVlcnlTdGFja1swXS5jb25maWcgfHwgdGhpcy5hcGlDb25maWcuY29uZmlnO1xuICAgIGNvbnN0IHBhcmFtcyA9IHsgY29uZmlnLCAuLi5vcHRpb25zLCB2ZXJzaW9uOiB0aGlzLmFwaUNvbmZpZy5hcHBWZXJzaW9uIH07XG5cbiAgICBsZXQgZW5yaWNobWVudCQ6IE9ic2VydmFibGU8UmVxdWVzdEVucmljaG1lbnQ+O1xuICAgIGlmICh0aGlzLmVucmljaFJlcXVlc3RIb29rcz8ubGVuZ3RoID4gMCkge1xuICAgICAgZW5yaWNobWVudCQgPSBjb21iaW5lTGF0ZXN0KFxuICAgICAgICAvLyBFeGVjdXRlIGFueSBob29rcyB0aGF0IG1heSBoYXZlIHJlZ2lzdGVyZWQgKGN1cnJlbnRseSBvbmx5IHNwaW5xdWUtYW5ndWxhci11aS9hdXRoIHJlZ2lzdGVycyBvbmUpXG4gICAgICAgIHRoaXMuZW5yaWNoUmVxdWVzdEhvb2tzLm1hcCgoZm4pID0+IGZuKHF1ZXJ5U3RhY2ssIG9wZXJhdGlvbiwgb3B0aW9ucykpXG4gICAgICApLnBpcGUobWFwKChyZXN1bHRzKSA9PiByZXN1bHRzLnJlZHVjZSgoYWNjLCBjdXIpID0+ICh7IC4uLmFjYywgLi4uY3VyIH0pLCB7fSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW5yaWNobWVudCQgPSBvZih7fSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVucmljaG1lbnQkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGVucmljaG1lbnQpID0+IHRoaXMuaHR0cC5nZXQ8VD4odXJsLCB7IHBhcmFtcywgLi4uZW5yaWNobWVudCB9KSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRha2VzIGEgU3BpbnF1ZVF1ZXJ5U3RhY2sgb2JqZWN0IGFuZCBzdHJpbmdpZmllcyBpdC5cbiAgICogU2VlIGh0dHBzOi8vZG9jcy5zcGlucXVlLmNvbS8yLjQvcmVzdC9iYXNpYy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgZGVjb2RlU3RyaW5nKHF1ZXJ5U3RhY2s6IFNwaW5xdWVRdWVyeVN0YWNrKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb250ZXh0U3RyaW5nID0gdGhpcy5nZXRDb250ZXh0U3RyaW5nKCk7XG4gICAgcmV0dXJuIGNvbnRleHRTdHJpbmcgKyBxdWVyeVN0YWNrLm1hcCgocSkgPT4gdGhpcy5nZXRRdWVyeVN0cmluZyhxKSkuam9pbignJyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29udGV4dCBzdHJpbmcgKHdpdGggcGFyYW1ldGVyIGRlZmF1bHRzKVxuICAgKi9cbiAgZ2V0Q29udGV4dFN0cmluZygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmFwaUNvbmZpZy5jb250ZXh0IHx8IHt9O1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhjb250ZXh0KS5yZWR1Y2UoXG4gICAgICAoYWNjLCBjdXIpID0+IGAke2FjY30vYy8ke2VuY29kZVVSSUNvbXBvbmVudChjdXJbMF0pfS8ke2VuY29kZVVSSUNvbXBvbmVudChjdXJbMV0pfWAsXG4gICAgICAnJ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGFrZXMgYSBTcGlucXVlRW5kcG9pbnQgYW5kIHN0cmluZ2lmaWVzIGl0LlxuICAgKi9cbiAgZ2V0UXVlcnlTdHJpbmcocXVlcnk6IFNwaW5xdWVRdWVyeSk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyYW1ldGVyU3RyaW5nID0gdGhpcy5nZXRQYXJhbWV0ZXJTdHJpbmcocXVlcnkucGFyYW1ldGVycyk7XG4gICAgcmV0dXJuIGAvcS8ke2VuY29kZVVSSUNvbXBvbmVudCgnZW5kcG9pbnQnIGluIHF1ZXJ5ID8gcXVlcnkuZW5kcG9pbnQgOiBxdWVyeS5jb21taXQpfSR7cGFyYW1ldGVyU3RyaW5nfWA7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZW5kcG9pbnQncyBwYXJhbWV0ZXJzIGFzIGEgc3RyaW5nICgvcC97a2V5MX0ve3ZhbHVlMX0vcC97a2V5Mn0ve3ZhbHVlMn0vLi4pXG4gICAqL1xuICBwcml2YXRlIGdldFBhcmFtZXRlclN0cmluZyhwYXJhbWV0ZXJzOiBTcGlucXVlUXVlcnlQYXJhbWV0ZXJzKTogc3RyaW5nIHtcbiAgICBpZiAoIXBhcmFtZXRlcnMpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBhcmFtZXRlcnMpXG4gICAgICAgIC8vIFBhcmFtZXRlciB2YWx1ZSBtdXN0IGJlIGZpbGxlZFxuICAgICAgICAuZmlsdGVyKChbcGFyYW0sIHZhbHVlXSkgPT4gIXRoaXMuaXNFbXB0eVZhbHVlKHZhbHVlKSlcbiAgICAgICAgLnJlZHVjZSgocGFyYW1TdHJpbmcsIFtwYXJhbSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgdmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodGhpcy5nZXRWYWx1ZVN0cmluZyh2YWx1ZSkpO1xuICAgICAgICAgIHJldHVybiBgJHtwYXJhbVN0cmluZ30vcC8ke2VuY29kZVVSSUNvbXBvbmVudChwYXJhbSl9LyR7dmFsdWV9YDtcbiAgICAgICAgfSwgJycpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiB2YWx1ZSBpcyBlbXB0eVxuICAgKi9cbiAgcHJpdmF0ZSBpc0VtcHR5VmFsdWUodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYWx1ZVN0cmluZyh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgY29uc3QgdHVwbGVzID0gdmFsdWUubWFwKCh2KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFR1cGxlU3RyaW5nKHYpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdHVwbGVzLmpvaW4oJ3wnKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRUdXBsZVN0cmluZyh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyBmb3JtYXR0ZWQgdmVyc2lvbiBvZiBhIHR1cGxlXG4gICAqL1xuICBwcml2YXRlIGdldFR1cGxlU3RyaW5nKFxuICAgIG86IHsgdHVwbGU6IHN0cmluZ1tdOyBwcm9iYWJpbGl0eTogbnVtYmVyIHwgc3RyaW5nIH0gfCB7IGlkOiBzdHJpbmc7IHByb2JhYmlsaXR5OiBudW1iZXIgfCBzdHJpbmcgfSB8IHN0cmluZ1xuICApOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBgMS4wKCR7b30pYDtcbiAgICB9IGVsc2UgaWYgKCd0dXBsZScgaW4gbykge1xuICAgICAgY29uc3QgcHJvYiA9IG8ucHJvYmFiaWxpdHkgfHwgJzEuMCc7XG4gICAgICBjb25zdCB0dXBsZVN0cmluZyA9IGAke3Byb2J9KCR7by50dXBsZS5qb2luKCcsJyl9KWA7XG4gICAgICByZXR1cm4gcHJvYiArIHR1cGxlU3RyaW5nO1xuICAgIH0gZWxzZSBpZiAoJ2lkJyBpbiBvKSB7XG4gICAgICBjb25zdCBwcm9iID0gby5wcm9iYWJpbGl0eSB8fCAnMS4wJztcbiAgICAgIHJldHVybiBgJHtwcm9ifSgke28uaWR9KWA7XG4gICAgfVxuICB9XG59XG4iXX0=
import { EventEmitter, OnInit, TemplateRef } from '@angular/core';
import { SpinqueRestService, SpinqueResultItem, SpinqueQuery, SpinqueQueryService } from 'spinque-angular-ui';
import { SpinqueRestService, SpinqueResultItem, SpinqueQueryService, SpinqueQueryStack } from 'spinque-angular-ui';
import * as i0 from "@angular/core";

@@ -15,4 +15,4 @@ export interface TreeNode {

isLoading: boolean;
nodesQuery: SpinqueQuery[];
rootNodesQuery: SpinqueQuery[];
nodesQuery: SpinqueQueryStack;
rootNodesQuery: SpinqueQueryStack;
childNodesParameter: string;

@@ -19,0 +19,0 @@ showScore: boolean;

import { EventEmitter, OnChanges, OnInit, SimpleChanges, TemplateRef } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { SpinqueRestService, SpinqueQuery, SpinqueQueryService } from 'spinque-angular-ui';
import { SpinqueRestService, SpinqueQueryService, SpinqueQueryStack } from 'spinque-angular-ui';
import { SpinqueFacetComponent } from '../facet-component.interface';

@@ -10,3 +10,3 @@ import * as i0 from "@angular/core";

facetId: string;
queryStack?: SpinqueQuery[];
queryStack?: SpinqueQueryStack;
scrollOffset: number;

@@ -25,4 +25,4 @@ count: number;

template: TemplateRef<any>;
rootNodes: SpinqueQuery[];
queryChange: BehaviorSubject<SpinqueQuery[]>;
rootNodes: SpinqueQueryStack;
queryChange: BehaviorSubject<SpinqueQueryStack>;
selectedChange: EventEmitter<{

@@ -29,0 +29,0 @@ facetId: string;

import { EventEmitter, OnChanges, OnInit, SimpleChanges, TemplateRef } from '@angular/core';
import { BehaviorSubject, Observable } from 'rxjs';
import { SpinqueFacet, SpinqueQuery, SpinqueQueryParameters, SpinqueQueryService, SpinqueRestService } from 'spinque-angular-ui';
import { SpinqueFacet, SpinqueQueryParameters, SpinqueQueryService, SpinqueQueryStack, SpinqueRestService } from 'spinque-angular-ui';
import { SpinqueFacetComponent } from '../facet-component.interface';

@@ -11,3 +11,3 @@ import * as i0 from "@angular/core";

facetParameters: SpinqueQueryParameters[];
queryStack: SpinqueQuery[];
queryStack: SpinqueQueryStack;
scrollOffset: number;

@@ -14,0 +14,0 @@ count: number;

@@ -5,3 +5,3 @@ import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';

import { BehaviorSubject, Observable } from 'rxjs';
import { SpinqueFacet, SpinqueRestService, SpinqueQuery, SpinqueQueryParameters, SpinqueQueryService } from 'spinque-angular-ui';
import { SpinqueFacet, SpinqueRestService, SpinqueQueryParameters, SpinqueQueryService, SpinqueQueryStack } from 'spinque-angular-ui';
import { SpinqueFacetComponent } from '../facet-component.interface';

@@ -14,3 +14,3 @@ import * as i0 from "@angular/core";

facetParameters: SpinqueQueryParameters[];
queryStack: SpinqueQuery[];
queryStack: SpinqueQueryStack;
showLabels: boolean;

@@ -17,0 +17,0 @@ parameterName: string;

import { EventEmitter, TemplateRef } from '@angular/core';
import { SpinqueQuery } from 'spinque-angular-ui';
import { SpinqueQueryStack } from 'spinque-angular-ui';
import * as i0 from "@angular/core";

@@ -29,3 +29,3 @@ /**

*/
queryStack: SpinqueQuery[];
queryStack: SpinqueQueryStack;
showScore: boolean;

@@ -32,0 +32,0 @@ /**

@@ -11,3 +11,3 @@ import * as i0 from '@angular/core';

/**
* Given a stringified query stack, decode back to SpinqueQuery[]
* Given a stringified query stack, decode back to SpinqueQueryStack
*/

@@ -32,6 +32,6 @@ decode(stringified) {

/**
* Given a SpinqueQuery[], encode into a stringified query stack
* Given a SpinqueQueryStack, encode into a stringified query stack
*/
encode(queryStack) {
const endpointString = queryStack.map(f => [f.endpoint, f.parameters]);
const endpointString = queryStack.map(f => ['endpoint' in f ? f.endpoint : f.commit, f.parameters]);
return JSON.stringify(endpointString);

@@ -38,0 +38,0 @@ }

@@ -91,3 +91,3 @@ import * as i0 from '@angular/core';

/**
* Fetches query results of a SpinqueQuery or SpinqueQuery[]
* Fetches query results of a SpinqueQuery or SpinqueQueryStack
*/

@@ -166,5 +166,11 @@ getResults(query, options) {

// 1. Build the query url by combining the configured base with the context, query path and operation
const api = this.apiOverride || queryStack[0].api || this.apiConfig.api;
const workspace = this.workspaceOverride || queryStack[0].workspace || this.apiConfig.workspace;
const base = `${this.apiConfig.baseUrl}/${this.apiConfig.version}/${workspace}/api/${api}`;
let base = `${this.apiConfig.baseUrl}/${this.apiConfig.version}/${workspace}`;
if ('endpoint' in queryStack[0]) {
const api = this.apiOverride || queryStack[0].api || this.apiConfig.api;
base += `/api/${api}`;
}
else {
base += `/standalone`;
}
const queryPath = this.decodeString(queryStack);

@@ -190,3 +196,3 @@ const url = `${base}${queryPath}/${operation}`;

/**
* Takes a SpinqueQuery object and stringifies it.
* Takes a SpinqueQueryStack object and stringifies it.
* See https://docs.spinque.com/2.4/rest/basic.html for more information.

@@ -210,3 +216,3 @@ */

const parameterString = this.getParameterString(query.parameters);
return `/q/${encodeURIComponent(query.endpoint)}${parameterString}`;
return `/q/${encodeURIComponent('endpoint' in query ? query.endpoint : query.commit)}${parameterString}`;
}

@@ -278,2 +284,5 @@ /**

// This would actually be more correct but does not work currently:
// https://github.com/microsoft/TypeScript/issues/33591
// export type SpinqueQueryStack = SpinqueApiQuery[] | SpinqueStrategyQuery[];
/**

@@ -288,4 +297,6 @@ * SpinqueQueryService provides methods that take SpinqueQuery objects and transform them into

*/
getQuery(queryStack, endpoint) {
return queryStack.find(e => e.endpoint === endpoint);
getQuery(queryStack, endpointOrCommit) {
return queryStack.find(e => {
return 'endpoint' in e && e.endpoint === endpointOrCommit || 'commit' in e && e.commit === endpointOrCommit;
});
}

@@ -309,11 +320,12 @@ /**

*/
updateQuery(queryStack, endpoint, parameters = {}) {
updateQuery(queryStack, endpointOrCommit, parameters = {}) {
return produce(queryStack, draftStack => {
const query = { endpoint, parameters };
const index = queryStack.findIndex(e => e.endpoint === endpoint);
const index = queryStack.findIndex(e => {
return 'endpoint' in e && e.endpoint === endpointOrCommit || 'commit' in e && e.commit === endpointOrCommit;
});
if (index >= 0) {
draftStack[index] = query;
draftStack[index] = Object.assign(Object.assign({}, queryStack[index]), { parameters });
}
else {
draftStack.push(query);
draftStack.push(Object.assign(Object.assign({}, queryStack[index]), { parameters }));
}

@@ -325,5 +337,7 @@ });

*/
removeQuery(queryStack, endpoint) {
removeQuery(queryStack, endpointOrCommit) {
return produce(queryStack, draftStack => {
const index = queryStack.findIndex(e => e.endpoint === endpoint);
const index = queryStack.findIndex(e => {
return 'endpoint' in e && e.endpoint === endpointOrCommit || 'commit' in e && e.commit === endpointOrCommit;
});
if (index >= 0) {

@@ -354,6 +368,8 @@ draftStack = draftStack.splice(index, 1);

*/
setParameter(queryStack, paramName, value, endpoint) {
setParameter(queryStack, paramName, value, endpointOrCommit) {
let endpointIndex = queryStack.length - 1;
if (!!endpoint) {
endpointIndex = queryStack.findIndex(e => e.endpoint === endpoint);
if (!!endpointOrCommit) {
endpointIndex = queryStack.findIndex(e => {
return 'endpoint' in e && e.endpoint === endpointOrCommit || 'commit' in e && e.commit === endpointOrCommit;
});
}

@@ -360,0 +376,0 @@ return produce(queryStack, draftStack => {

@@ -1,2 +0,2 @@

import { SpinqueQuery } from 'spinque-angular-ui';
import { SpinqueQueryStack } from 'spinque-angular-ui';
import * as i0 from "@angular/core";

@@ -10,11 +10,11 @@ /**

/**
* Given a stringified query stack, decode back to SpinqueQuery[]
* Given a stringified query stack, decode back to SpinqueQueryStack
*/
decode(stringified: string): SpinqueQuery[];
decode(stringified: string): SpinqueQueryStack;
/**
* Given a SpinqueQuery[], encode into a stringified query stack
* Given a SpinqueQueryStack, encode into a stringified query stack
*/
encode(queryStack: SpinqueQuery[]): string;
encode(queryStack: SpinqueQueryStack): string;
static ɵfac: i0.ɵɵFactoryDeclaration<SpinqueLocationService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<SpinqueLocationService>;
}
{
"name": "spinque-angular-ui",
"version": "12.0.7",
"version": "12.1.0",
"description": "Library containing Angular components to rapidly develop applications on top of Spinque APIs.",

@@ -5,0 +5,0 @@ "author": "Spinque B.V.",

import { OnChanges, SimpleChanges, EventEmitter } from '@angular/core';
import { SpinqueQuery, SpinqueRestService, SpinqueResultItem } from 'spinque-angular-ui';
import { SpinqueQueryStack, SpinqueRestService, SpinqueResultItem } from 'spinque-angular-ui';
import * as i0 from "@angular/core";

@@ -23,3 +23,3 @@ /**

*/
queryStack: SpinqueQuery[];
queryStack: SpinqueQueryStack;
loaded: EventEmitter<{

@@ -26,0 +26,0 @@ count: number;

import { OnChanges, SimpleChanges } from '@angular/core';
import { SpinqueRestService, SpinqueStatistics, SpinqueQuery } from 'spinque-angular-ui';
import { SpinqueRestService, SpinqueStatistics, SpinqueQueryStack } from 'spinque-angular-ui';
import * as i0 from "@angular/core";

@@ -10,3 +10,3 @@ /**

statistics: SpinqueStatistics;
queryStack: SpinqueQuery[];
queryStack: SpinqueQueryStack;
constructor(rest: SpinqueRestService);

@@ -13,0 +13,0 @@ ngOnChanges(changes: SimpleChanges): void;

@@ -5,9 +5,17 @@ import * as i0 from "@angular/core";

}
export interface SpinqueQuery {
export interface SpinqueApiQuery {
readonly workspace?: string;
readonly api?: string;
readonly endpoint: string;
readonly parameters?: SpinqueQueryParameters;
readonly config?: string;
}
export interface SpinqueStrategyQuery {
readonly workspace?: string;
readonly api?: string;
readonly commit: string;
readonly parameters?: SpinqueQueryParameters;
readonly config?: string;
}
export declare type SpinqueQuery = SpinqueApiQuery | SpinqueStrategyQuery;
export declare type SpinqueQueryStack = SpinqueQuery[];
/**

@@ -22,27 +30,27 @@ * SpinqueQueryService provides methods that take SpinqueQuery objects and transform them into

*/
getQuery(queryStack: SpinqueQuery[], endpoint: string): SpinqueQuery;
getQuery(queryStack: SpinqueQueryStack, endpointOrCommit: string): SpinqueQuery;
/**
* Get the last query of a query stack
*/
getLastQuery(queryStack: SpinqueQuery[]): SpinqueQuery;
getLastQuery(queryStack: SpinqueQueryStack): SpinqueQuery;
/**
* Add a query with optional parameter to the query.
*/
addQuery(queryStack: SpinqueQuery[], endpoint: string, parameters?: SpinqueQueryParameters): SpinqueQuery[];
addQuery(queryStack: SpinqueQueryStack, endpoint: string, parameters?: SpinqueQueryParameters): SpinqueQueryStack;
/**
* Find the query with the given endpoint name and update its parameters.
*/
updateQuery(queryStack: SpinqueQuery[], endpoint: string, parameters?: SpinqueQueryParameters): SpinqueQuery[];
updateQuery(queryStack: SpinqueQueryStack, endpointOrCommit: string, parameters?: SpinqueQueryParameters): SpinqueQueryStack;
/**
* Remove the endpoint with the given name from the query.
*/
removeQuery(queryStack: SpinqueQuery[], endpoint: string): SpinqueQuery[];
removeQuery(queryStack: SpinqueQueryStack, endpointOrCommit: string): SpinqueQueryStack;
/**
* Replace the whole set of query endpoints in a query at once.
*/
updateQueryStack(queryStack: SpinqueQuery[], stack: SpinqueQuery[]): SpinqueQuery[];
updateQueryStack(queryStack: SpinqueQueryStack, stack: SpinqueQueryStack): SpinqueQueryStack;
/**
* Remove the last endpoint from the query.
*/
popQuery(queryStack: SpinqueQuery[]): SpinqueQuery[];
popQuery(queryStack: SpinqueQueryStack): SpinqueQueryStack;
/**

@@ -52,5 +60,5 @@ * Set the value of the parameter with the given name. If no endpoint name is given, the last endpoint is taken

*/
setParameter(queryStack: SpinqueQuery[], paramName: string, value: any, endpoint?: string): SpinqueQuery[];
setParameter(queryStack: SpinqueQueryStack, paramName: string, value: any, endpointOrCommit?: string): SpinqueQueryStack;
static ɵfac: i0.ɵɵFactoryDeclaration<SpinqueQueryService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<SpinqueQueryService>;
}
import { HttpClient, HttpParams } from '@angular/common/http';
import { Observable } from 'rxjs';
import { SpinqueApiConfig } from './spinque-api.config';
import { SpinqueQuery } from './spinque-query.service';
import { SpinqueQuery, SpinqueQueryStack } from './spinque-query.service';
import * as i0 from "@angular/core";

@@ -54,3 +54,3 @@ export interface SpinqueContext {

}
export declare type RequestEnrichmentHook = (queryStack: SpinqueQuery[], operation: string, options: {
export declare type RequestEnrichmentHook = (queryStack: SpinqueQueryStack, operation: string, options: {
[name: string]: any;

@@ -95,5 +95,5 @@ }) => Observable<RequestEnrichment>;

/**
* Fetches query results of a SpinqueQuery or SpinqueQuery[]
* Fetches query results of a SpinqueQuery or SpinqueQueryStack
*/
getResults(query: SpinqueQuery | SpinqueQuery[], options?: {
getResults(query: SpinqueQuery | SpinqueQueryStack, options?: {
[name: string]: any;

@@ -104,3 +104,3 @@ }): Observable<SpinqueResult>;

*/
getStatistics(query: SpinqueQuery | SpinqueQuery[]): Observable<SpinqueStatistics>;
getStatistics(query: SpinqueQuery | SpinqueQueryStack): Observable<SpinqueStatistics>;
/**

@@ -117,3 +117,3 @@ * Fetches query options

*/
getOptions(query: SpinqueQuery | SpinqueQuery[], options?: any): Observable<SpinqueFacet>;
getOptions(query: SpinqueQuery | SpinqueQueryStack, options?: any): Observable<SpinqueFacet>;
addEnrichRequestHook(hook: RequestEnrichmentHook): void;

@@ -125,6 +125,6 @@ /**

/**
* Takes a SpinqueQuery object and stringifies it.
* Takes a SpinqueQueryStack object and stringifies it.
* See https://docs.spinque.com/2.4/rest/basic.html for more information.
*/
decodeString(queryStack: SpinqueQuery[]): string;
decodeString(queryStack: SpinqueQueryStack): string;
/**

@@ -131,0 +131,0 @@ * Returns the context string (with parameter defaults)

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc