@sabstravtech/obtservices 0.0.22051001 → 0.0.26051001
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/angular/components/basket-panel.d.ts +1 -0
- package/angular/fetchers.d.ts +3 -0
- package/angular/lib/vendor/fetchers/get-companies.fetcher.d.ts +7 -0
- package/angular/lib/vendor/fetchers/get-company.fetcher.d.ts +7 -0
- package/angular/lib/vendor/fetchers/get-user-guests.fetcher.d.ts +7 -0
- package/angular/lib/vendor/services/enterprise-basket.service.d.ts +2 -1
- package/angular/lib/vendor/services/logon.service.d.ts +2 -1
- package/angular/lib/vendor/services/user.service.d.ts +7 -3
- package/angular/lib/vendor/types/graphql.angular.types.d.ts +268 -85
- package/angular/lib/vendor/updaters/create-guest-updater.d.ts +6 -0
- package/angular/sabstravtech-obtservices-angular.metadata.json +1 -1
- package/angular/updaters.d.ts +1 -0
- package/base/fetchers.d.ts +3 -0
- package/base/lib/vendor/classes/base-enterprise.d.ts +5 -1
- package/base/lib/vendor/classes/basket-info-mi-details.impl.d.ts +2 -0
- package/base/lib/vendor/classes/bookable-basket.d.ts +2 -0
- package/base/lib/vendor/classes/cabhire-enterprise-search.d.ts +4 -3
- package/base/lib/vendor/classes/carhire-enterprise-search.d.ts +4 -3
- package/base/lib/vendor/classes/eurostar-enterprise-search.d.ts +4 -4
- package/base/lib/vendor/classes/fast-track-enterprise-search.d.ts +3 -3
- package/base/lib/vendor/classes/flight-enterprise-search.d.ts +5 -5
- package/base/lib/vendor/classes/helpers.d.ts +6 -1
- package/base/lib/vendor/classes/hotel-enterprise-search.d.ts +6 -3
- package/base/lib/vendor/classes/irl-enterprise-search.d.ts +4 -4
- package/base/lib/vendor/classes/lounges-enterprise-search.d.ts +3 -3
- package/base/lib/vendor/classes/management-info-and-valid.d.ts +1 -1
- package/base/lib/vendor/classes/modal-types.enum.d.ts +1 -0
- package/base/lib/vendor/classes/parking-enterprise-search.d.ts +3 -3
- package/base/lib/vendor/classes/rail-enterprise-search.d.ts +9 -7
- package/base/lib/vendor/classes/supplementary-booking-info-impl.d.ts +5 -3
- package/base/lib/vendor/fetchers/get-companies.fetcher.d.ts +21 -0
- package/base/lib/vendor/fetchers/get-company.fetcher.d.ts +20 -0
- package/base/lib/vendor/fetchers/get-user-guests.fetcher.d.ts +20 -0
- package/base/lib/vendor/interfaces/Icabhire-enterprise-search.d.ts +1 -0
- package/base/lib/vendor/interfaces/Icarhire-enterprise-search.d.ts +3 -2
- package/base/lib/vendor/interfaces/Ienterprise-basket.service.d.ts +6 -5
- package/base/lib/vendor/interfaces/Ieurostar-enterprise-search.d.ts +1 -0
- package/base/lib/vendor/interfaces/Ifast-track-enterprise-search.d.ts +7 -5
- package/base/lib/vendor/interfaces/Iflight-enterprise-search.d.ts +2 -1
- package/base/lib/vendor/interfaces/Ihotel-enterprise-search.d.ts +5 -2
- package/base/lib/vendor/interfaces/Iirl-enterprise-search.d.ts +4 -3
- package/base/lib/vendor/interfaces/Ilounges-enterprise-search.d.ts +1 -0
- package/base/lib/vendor/interfaces/Iparking-enterprise-search.d.ts +1 -0
- package/base/lib/vendor/interfaces/Irail-enterprise-search.d.ts +5 -2
- package/base/lib/vendor/interfaces/Isearch.service.d.ts +4 -2
- package/base/lib/vendor/interfaces/Isupplementary-booking-info-impl.d.ts +3 -2
- package/base/lib/vendor/interfaces/Iuser.service.d.ts +1 -0
- package/base/lib/vendor/interfaces/car-hire-search-arg.interface.d.ts +2 -3
- package/base/lib/vendor/interfaces/summary-interface.d.ts +2 -0
- package/base/lib/vendor/interfaces/user.data.d.ts +1 -0
- package/base/lib/vendor/models/traveller.object.d.ts +1 -1
- package/base/lib/vendor/services/enterprise-basket.service.d.ts +18 -7
- package/base/lib/vendor/services/logon.service.d.ts +5 -1
- package/base/lib/vendor/services/search.service.d.ts +25 -22
- package/base/lib/vendor/services/url.service.d.ts +2 -0
- package/base/lib/vendor/services/user.service.d.ts +21 -5
- package/base/lib/vendor/services/webtoken.service.d.ts +4 -0
- package/base/lib/vendor/types/graphql.types.d.ts +245 -84
- package/base/lib/vendor/types/types.d.ts +16 -2
- package/base/lib/vendor/updaters/create-guest-updater.d.ts +19 -0
- package/base/sabstravtech-obtservices-base.d.ts +1 -1
- package/base/sabstravtech-obtservices-base.metadata.json +1 -1
- package/base/updaters.d.ts +1 -0
- package/bundles/sabstravtech-obtservices-angular.umd.js +366 -176
- package/bundles/sabstravtech-obtservices-angular.umd.js.map +1 -1
- package/bundles/sabstravtech-obtservices-angular.umd.min.js +1 -1
- package/bundles/sabstravtech-obtservices-angular.umd.min.js.map +1 -1
- package/bundles/sabstravtech-obtservices-base.umd.js +2019 -956
- package/bundles/sabstravtech-obtservices-base.umd.js.map +1 -1
- package/bundles/sabstravtech-obtservices-base.umd.min.js +2 -2
- package/bundles/sabstravtech-obtservices-base.umd.min.js.map +1 -1
- package/esm2015/angular/components/basket-panel.js +16 -7
- package/esm2015/angular/fetchers.js +4 -1
- package/esm2015/angular/lib/vendor/fetchers/get-companies.fetcher.js +25 -0
- package/esm2015/angular/lib/vendor/fetchers/get-company.fetcher.js +25 -0
- package/esm2015/angular/lib/vendor/fetchers/get-user-guests.fetcher.js +25 -0
- package/esm2015/angular/lib/vendor/services/enterprise-basket.service.js +8 -5
- package/esm2015/angular/lib/vendor/services/http-call.service.js +1 -1
- package/esm2015/angular/lib/vendor/services/logon.service.js +8 -5
- package/esm2015/angular/lib/vendor/services/search.service.js +1 -1
- package/esm2015/angular/lib/vendor/services/user.service.js +21 -9
- package/esm2015/angular/lib/vendor/services/webtoken.service.js +6 -2
- package/esm2015/angular/lib/vendor/types/graphql.angular.types.js +296 -70
- package/esm2015/angular/lib/vendor/updaters/create-guest-updater.js +22 -0
- package/esm2015/angular/updaters.js +2 -1
- package/esm2015/base/fetchers.js +4 -1
- package/esm2015/base/lib/vendor/classes/base-enterprise.js +8 -2
- package/esm2015/base/lib/vendor/classes/basket-info-mi-details.impl.js +14 -1
- package/esm2015/base/lib/vendor/classes/bookable-basket.js +27 -6
- package/esm2015/base/lib/vendor/classes/cabhire-enterprise-search.js +66 -11
- package/esm2015/base/lib/vendor/classes/carhire-enterprise-search.js +108 -61
- package/esm2015/base/lib/vendor/classes/eurostar-enterprise-search.js +115 -33
- package/esm2015/base/lib/vendor/classes/fast-track-enterprise-search.js +31 -10
- package/esm2015/base/lib/vendor/classes/flight-enterprise-search.js +196 -57
- package/esm2015/base/lib/vendor/classes/helpers.js +19 -3
- package/esm2015/base/lib/vendor/classes/hotel-enterprise-search.js +145 -36
- package/esm2015/base/lib/vendor/classes/irl-enterprise-search.js +100 -30
- package/esm2015/base/lib/vendor/classes/lounges-enterprise-search.js +40 -8
- package/esm2015/base/lib/vendor/classes/management-info-and-valid.js +13 -9
- package/esm2015/base/lib/vendor/classes/modal-types.enum.js +2 -1
- package/esm2015/base/lib/vendor/classes/parking-enterprise-search.js +39 -7
- package/esm2015/base/lib/vendor/classes/rail-enterprise-search.js +131 -20
- package/esm2015/base/lib/vendor/classes/supplementary-booking-info-impl.js +42 -4
- package/esm2015/base/lib/vendor/fetchers/get-companies.fetcher.js +11 -0
- package/esm2015/base/lib/vendor/fetchers/get-company.fetcher.js +11 -0
- package/esm2015/base/lib/vendor/fetchers/get-user-guests.fetcher.js +11 -0
- package/esm2015/base/lib/vendor/interfaces/Icabhire-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Icarhire-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Ienterprise-basket.service.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Ieurostar-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Ifast-track-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Iflight-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Ihotel-enterprise-search.js +2 -1
- package/esm2015/base/lib/vendor/interfaces/Iirl-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Ilounges-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Iparking-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Irail-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Isearch.service.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Isupplementary-booking-info-impl.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Iuser.service.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/car-hire-search-arg.interface.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/summary-interface.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/user.data.js +1 -1
- package/esm2015/base/lib/vendor/models/traveller.object.js +1 -1
- package/esm2015/base/lib/vendor/services/enterprise-basket.service.js +93 -30
- package/esm2015/base/lib/vendor/services/http-call.service.js +1 -1
- package/esm2015/base/lib/vendor/services/logon.service.js +37 -3
- package/esm2015/base/lib/vendor/services/requires-reason.service.js +14 -10
- package/esm2015/base/lib/vendor/services/search.service.js +77 -102
- package/esm2015/base/lib/vendor/services/url.service.js +3 -1
- package/esm2015/base/lib/vendor/services/user.service.js +45 -11
- package/esm2015/base/lib/vendor/services/webtoken.service.js +8 -1
- package/esm2015/base/lib/vendor/types/graphql.types.js +7 -2
- package/esm2015/base/lib/vendor/types/types.js +31 -14
- package/esm2015/base/lib/vendor/updaters/create-guest-updater.js +11 -0
- package/esm2015/base/sabstravtech-obtservices-base.js +1 -1
- package/esm2015/base/updaters.js +2 -1
- package/fesm2015/sabstravtech-obtservices-angular.js +449 -141
- package/fesm2015/sabstravtech-obtservices-angular.js.map +1 -1
- package/fesm2015/sabstravtech-obtservices-base.js +1383 -410
- package/fesm2015/sabstravtech-obtservices-base.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,13 +2,13 @@ import { __awaiter } from "tslib";
|
|
|
2
2
|
import { BaseEnterpriseSearch } from './base-enterprise';
|
|
3
3
|
import { BehaviorSubject } from 'rxjs';
|
|
4
4
|
import moment from 'moment';
|
|
5
|
+
import { DifferentInvokdedUserReasons } from '../types/types';
|
|
5
6
|
import { ServiceType } from '../types/graphql.types';
|
|
6
7
|
export class LoungesEnterpriseSearch extends BaseEnterpriseSearch {
|
|
7
8
|
constructor(loungefetcher, helpers, basketService, storageService, searchService) {
|
|
8
|
-
super(storageService, helpers);
|
|
9
|
+
super(storageService, helpers, searchService);
|
|
9
10
|
this.loungefetcher = loungefetcher;
|
|
10
11
|
this.basketService = basketService;
|
|
11
|
-
this.searchService = searchService;
|
|
12
12
|
this.type = ServiceType.Lounge;
|
|
13
13
|
this.terminals = new BehaviorSubject([]);
|
|
14
14
|
this._flightNumber = null;
|
|
@@ -293,17 +293,45 @@ export class LoungesEnterpriseSearch extends BaseEnterpriseSearch {
|
|
|
293
293
|
}
|
|
294
294
|
}
|
|
295
295
|
}
|
|
296
|
+
updateSearchFromExpiredBasketItem(basketItem) {
|
|
297
|
+
const searchLoungesQuery = basketItem.searchQuery;
|
|
298
|
+
if (searchLoungesQuery) {
|
|
299
|
+
this.arrivalDatetime = moment(searchLoungesQuery.arrivalDatetime);
|
|
300
|
+
this.terminal = searchLoungesQuery.terminal;
|
|
301
|
+
this.searchService
|
|
302
|
+
.getAirportByCode(searchLoungesQuery.locationCode)
|
|
303
|
+
.subscribe((airport) => {
|
|
304
|
+
var _a, _b, _c, _d, _e, _f;
|
|
305
|
+
if (airport) {
|
|
306
|
+
this.locationCode = {
|
|
307
|
+
country: (_b = (_a = airport.iataMatch) === null || _a === void 0 ? void 0 : _a.locationDetails) === null || _b === void 0 ? void 0 : _b.country,
|
|
308
|
+
countryCode: (_d = (_c = airport.iataMatch) === null || _c === void 0 ? void 0 : _c.locationDetails) === null || _d === void 0 ? void 0 : _d.countryCode,
|
|
309
|
+
destination: airport.iataMatch.name,
|
|
310
|
+
gateway: airport.iataMatch.iata,
|
|
311
|
+
postcode: (_f = (_e = airport.iataMatch) === null || _e === void 0 ? void 0 : _e.locationDetails) === null || _f === void 0 ? void 0 : _f.postcode,
|
|
312
|
+
terminals: this.searchService.processTerminals(airport.iataMatch.terminals)
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
// add Travellers
|
|
318
|
+
if (basketItem.users) {
|
|
319
|
+
basketItem.users.forEach((user) => {
|
|
320
|
+
this.searchService.addTraveller(user);
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
}
|
|
296
324
|
addLoungeToBasket(loungeQuote, loungeQuery) {
|
|
297
325
|
var _a;
|
|
298
326
|
return __awaiter(this, void 0, void 0, function* () {
|
|
299
327
|
if (loungeQuote.unavailable) {
|
|
300
|
-
return Promise.resolve(
|
|
328
|
+
return Promise.resolve(DifferentInvokdedUserReasons.cancel);
|
|
301
329
|
}
|
|
302
330
|
const intBasket = yield this.basketService.getDefaultBasket();
|
|
303
331
|
const basket = intBasket === null || intBasket === void 0 ? void 0 : intBasket.subject.value;
|
|
304
332
|
const termsAndConditions = this.getTermsAndCond(loungeQuote);
|
|
305
333
|
if (basket) {
|
|
306
|
-
|
|
334
|
+
const whatHappened = yield this.basketService.addToBasket({
|
|
307
335
|
adults: loungeQuery.adults,
|
|
308
336
|
children: loungeQuery.children,
|
|
309
337
|
infants: loungeQuery.infants,
|
|
@@ -334,8 +362,12 @@ export class LoungesEnterpriseSearch extends BaseEnterpriseSearch {
|
|
|
334
362
|
searchQuery: loungeQuery,
|
|
335
363
|
outboundDate: loungeQuery.arrivalDatetime.format()
|
|
336
364
|
}, intBasket, this.searchService, this.travellers, loungeQuote.requiresReason);
|
|
365
|
+
if (whatHappened === DifferentInvokdedUserReasons.research) {
|
|
366
|
+
this.performSearch();
|
|
367
|
+
}
|
|
368
|
+
return whatHappened;
|
|
337
369
|
}
|
|
338
|
-
return
|
|
370
|
+
return DifferentInvokdedUserReasons.cancel; // TODO should this throw an error?
|
|
339
371
|
});
|
|
340
372
|
}
|
|
341
373
|
getTermsAndCond(loungeQuote) {
|
|
@@ -426,8 +458,8 @@ export class LoungesEnterpriseSearch extends BaseEnterpriseSearch {
|
|
|
426
458
|
}
|
|
427
459
|
applyFavourite(fav) {
|
|
428
460
|
return __awaiter(this, void 0, void 0, function* () {
|
|
429
|
-
this.searchService.getAirportsList(fav.locationCode).subscribe(a => {
|
|
430
|
-
this.locationCode = a.find(a => a.gateway == fav.locationCode);
|
|
461
|
+
this.searchService.getAirportsList(fav.locationCode).subscribe((a) => {
|
|
462
|
+
this.locationCode = a.find((a) => a.gateway == fav.locationCode);
|
|
431
463
|
this.terminal = fav.terminal;
|
|
432
464
|
});
|
|
433
465
|
this.adults = fav.adults;
|
|
@@ -438,4 +470,4 @@ export class LoungesEnterpriseSearch extends BaseEnterpriseSearch {
|
|
|
438
470
|
}
|
|
439
471
|
LoungesEnterpriseSearch.STORAGE_SESSION_PARAMS = 'search_lounge';
|
|
440
472
|
LoungesEnterpriseSearch.STORAGE_SESSION_RESULTS = 'results_lounge';
|
|
441
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG91bmdlcy1lbnRlcnByaXNlLXNlYXJjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29idHNlcnZpY2VzL2Jhc2Uvc3JjL2xpYi92ZW5kb3IvY2xhc3Nlcy9sb3VuZ2VzLWVudGVycHJpc2Utc2VhcmNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQWE1QixPQUFPLEVBT0wsV0FBVyxFQUNaLE1BQU0sd0JBQXdCLENBQUM7QUFlaEMsTUFBTSxPQUFPLHVCQUNYLFNBQVEsb0JBSVA7SUFtS0QsWUFDVSxhQUEyQyxFQUNuRCxPQUEyQixFQUNuQixhQUErQyxFQUN2RCxjQUFrQyxFQUMxQixhQUErQztRQUV2RCxLQUFLLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBTnZCLGtCQUFhLEdBQWIsYUFBYSxDQUE4QjtRQUUzQyxrQkFBYSxHQUFiLGFBQWEsQ0FBa0M7UUFFL0Msa0JBQWEsR0FBYixhQUFhLENBQWtDO1FBbktsRCxTQUFJLEdBQWdCLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDdkMsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQStCcEQsa0JBQWEsR0FBVyxJQUFJLENBQUM7UUFvRTdCLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQVV2QyxtQkFBbUI7UUFDWixhQUFRLEdBQUc7WUFDaEIsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRTtZQUNyQixLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztZQUMzQixHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFO1NBQ3JCLENBQUM7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QUFFO2dCQUNqRSxJQUFJLENBQUMsWUFBWSxHQUFJLENBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQTtnQkFDekUsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFBO1lBQzlCLENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQTtZQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUE7UUFDNUIsQ0FBQztLQUFBOztBQXhnQmUsOENBQXNCLEdBQUcsZUFBZSxDQUFDO0FBQ3pDLCtDQUF1QixHQUFHLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUVudGVycHJpc2VTZWFyY2ggfSBmcm9tICcuL2Jhc2UtZW50ZXJwcmlzZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IEJhc2VTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VIZWxwZXJSb3V0aW5lcyB9IGZyb20gJy4vaGVscGVycyc7XHJcbmltcG9ydCB7IFRyYXZlbGxlciB9IGZyb20gJy4uL21vZGVscy90cmF2ZWxsZXIub2JqZWN0JztcclxuaW1wb3J0IHtcclxuICBMb3VuZ2VRdW90ZVJlc3VsdCxcclxuICBMb3VuZ2VRdW90ZVJlc3VsdEFycmF5LFxyXG4gIE5nYkRhdGVTdHJ1Y3QsXHJcbiAgT0JUQWlycG9ydERldGFpbHMsXHJcbiAgUmVjZW50U2VhcmNoLFxyXG4gIFNhdmVGYXZvdXJpdGVTZWFyY2hSZXN1bHQsXHJcbiAgVGVybWluYWxzVHlwZVxyXG59IGZyb20gJy4uL3R5cGVzL3R5cGVzJztcclxuaW1wb3J0IHtcclxuICBBaXJwb3J0UmVzdWx0cyxcclxuICBCYXNrZXRJdGVtLFxyXG4gIExvdW5nZVF1b3RlLFxyXG4gIFNhdmVSZWNlbnRTZWFyY2hNdXRhdGlvblZhcmlhYmxlcyxcclxuICBTZWFyY2hGbGlnaHRzVjJRdWVyeVZhcmlhYmxlcyxcclxuICBTZWFyY2hMb3VuZ2VzUXVlcnlWYXJpYWJsZXMsXHJcbiAgU2VydmljZVR5cGVcclxufSBmcm9tICcuLi90eXBlcy9ncmFwaHFsLnR5cGVzJztcclxuaW1wb3J0IHtcclxuICBCYXNlTG91bmdlUXVvdGVGZXRjaGVyLFxyXG4gIExvdW5nZVF1b3RlRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi9mZXRjaGVycy9sb3VuZ2UtcXVvdGUuZmV0Y2hlcic7XHJcbmltcG9ydCB7XHJcbiAgRW50ZXJwcmlzZUJhc2tldFNlcnZpY2VJbnRlcmZhY2UsXHJcbiAgSW50ZXJuYWxCYXNrZXRJbnRlcmZhY2VcclxufSBmcm9tICcuLi9pbnRlcmZhY2VzL0llbnRlcnByaXNlLWJhc2tldC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW50ZXJwcmlzZVNlYXJjaFNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lzZWFyY2guc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgTG91bmdlc0VudGVycHJpc2VTZWFyY2hJbnRlcmZhY2UsXHJcbiAgTG91bmdlc1RlbXBQYXJhbXNcclxufSBmcm9tICcuLi9pbnRlcmZhY2VzL0lsb3VuZ2VzLWVudGVycHJpc2Utc2VhcmNoJztcclxuaW1wb3J0IHsgSUNoZWFwZXN0UHJpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NoZWFwZXN0LXByaWNlJztcclxuZXhwb3J0IGNsYXNzIExvdW5nZXNFbnRlcnByaXNlU2VhcmNoPExRX1EgZXh0ZW5kcyBMb3VuZ2VRdW90ZUZldGNoZXJUeXBlPlxyXG4gIGV4dGVuZHMgQmFzZUVudGVycHJpc2VTZWFyY2g8XHJcbiAgICBMb3VuZ2VzVGVtcFBhcmFtcyxcclxuICAgIExvdW5nZVF1b3RlUmVzdWx0QXJyYXksXHJcbiAgICBMb3VuZ2VRdW90ZVJlc3VsdEFycmF5XHJcbiAgPlxyXG4gIGltcGxlbWVudHMgTG91bmdlc0VudGVycHJpc2VTZWFyY2hJbnRlcmZhY2Vcclxue1xyXG4gIHN0YXRpYyByZWFkb25seSBTVE9SQUdFX1NFU1NJT05fUEFSQU1TID0gJ3NlYXJjaF9sb3VuZ2UnO1xyXG4gIHN0YXRpYyByZWFkb25seSBTVE9SQUdFX1NFU1NJT05fUkVTVUxUUyA9ICdyZXN1bHRzX2xvdW5nZSc7XHJcbiAgcHVibGljIHR5cGU6IFNlcnZpY2VUeXBlID0gU2VydmljZVR5cGUuTG91bmdlO1xyXG4gIHB1YmxpYyB0ZXJtaW5hbHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlcm1pbmFsc1R5cGVbXT4oW10pO1xyXG5cclxuICBwcml2YXRlIHRyYXZlbGxlcnM6IFRyYXZlbGxlcltdO1xyXG4gIHByaXZhdGUgX2xvY2F0aW9uQ29kZTogc3RyaW5nO1xyXG5cclxuICBnZXQgYWR1bHRzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wUGFyYW1zLmFkdWx0cztcclxuICB9XHJcblxyXG4gIHNldCBhZHVsdHModmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy50ZW1wUGFyYW1zLmFkdWx0cyA9IHZhbHVlO1xyXG4gICAgdGhpcy5faXNWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNoaWxkcmVuKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wUGFyYW1zLmNoaWxkcmVuO1xyXG4gIH1cclxuXHJcbiAgc2V0IGNoaWxkcmVuKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMudGVtcFBhcmFtcy5jaGlsZHJlbiA9IHZhbHVlO1xyXG4gICAgdGhpcy5faXNWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGluZmFudHMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBQYXJhbXMuaW5mYW50cztcclxuICB9XHJcblxyXG4gIHNldCBpbmZhbnRzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMudGVtcFBhcmFtcy5pbmZhbnRzID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mbGlnaHROdW1iZXI6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIGdldCBmbGlnaHROdW1iZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9mbGlnaHROdW1iZXI7XHJcbiAgfVxyXG5cclxuICBzZXQgZmxpZ2h0TnVtYmVyKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2ZsaWdodE51bWJlciA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxvY2F0aW9uQ29kZSgpOiBzdHJpbmcgfCBPQlRBaXJwb3J0RGV0YWlscyB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wUGFyYW1zLmxvY2F0aW9uQ29kZTtcclxuICB9XHJcblxyXG4gIHNldCBsb2NhdGlvbkNvZGUodmFsdWU6IHN0cmluZyB8IE9CVEFpcnBvcnREZXRhaWxzKSB7XHJcbiAgICB0aGlzLnRlbXBQYXJhbXMubG9jYXRpb25Db2RlID0gdmFsdWU7XHJcbiAgICBjb25zdCB0ZXJtaW5hbHNUeXBlOiBUZXJtaW5hbHNUeXBlW10gPSB0aGlzLnRlcm1pbmFscz8udmFsdWU7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICB0aGlzLl9sb2NhdGlvbkNvZGUgPSAnJztcclxuICAgICAgdGhpcy50ZXJtaW5hbCA9IG51bGw7XHJcbiAgICAgIHRoaXMudGVybWluYWxzLm5leHQoW10pO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVGVybWluYWwgPSBudWxsO1xyXG4gICAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgICB9IGVsc2UgaWYgKHZhbHVlICYmIHZhbHVlLmdhdGV3YXkpIHtcclxuICAgICAgdGhpcy5fbG9jYXRpb25Db2RlID0gdmFsdWUuZ2F0ZXdheTtcclxuICAgICAgdGhpcy50ZXJtaW5hbCA9IG51bGw7XHJcbiAgICAgIHRoaXMudGVybWluYWxzLm5leHQodmFsdWUudGVybWluYWxzKTtcclxuICAgICAgaWYgKHRlcm1pbmFsc1R5cGUubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRlcm1pbmFsID0gdGVybWluYWxzVHlwZVswXS5rZXk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5faXNWYWxpZCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbG9jYXRpb25Db2RlID0gbnVsbDtcclxuICAgICAgdGhpcy50ZXJtaW5hbCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUZXJtaW5hbCA9IG51bGw7XHJcbiAgICAgIHRoaXMudGVybWluYWxzLm5leHQoW10pO1xyXG4gICAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgdGVybWluYWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBQYXJhbXMudGVybWluYWxcclxuICAgICAgPyB0aGlzLnRlbXBQYXJhbXMudGVybWluYWwudG9TdHJpbmcoKVxyXG4gICAgICA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBzZXQgdGVybWluYWwoaW5wdXQ6IHN0cmluZykge1xyXG4gICAgdGhpcy50ZW1wUGFyYW1zLnRlcm1pbmFsID0gaW5wdXQ7XHJcbiAgICBjb25zdCBmb3VuZDogVGVybWluYWxzVHlwZSA9IHRoaXMudGVybWluYWxzLnZhbHVlLmZpbmQoXHJcbiAgICAgICh0ZXJtaW5hbDogVGVybWluYWxzVHlwZSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGlmICh0ZXJtaW5hbC52YWx1ZSA9PT0gaW5wdXQpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoZm91bmQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRlcm1pbmFsID0gZm91bmQua2V5O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMudGVybWluYWxzLnZhbHVlICYmIHRoaXMudGVybWluYWxzLnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGVybWluYWwgPSB0aGlzLnRlcm1pbmFscy52YWx1ZVswXS5rZXk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRlcm1pbmFsID0gJ0FueSBUZXJtaW5hbCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX2lzVmFsaWQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NlbGVjdGVkVGVybWluYWw6IHN0cmluZyA9ICcnO1xyXG4gIHNldCBzZWxlY3RlZFRlcm1pbmFsKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkVGVybWluYWwgPSB2YWx1ZTtcclxuICAgIHRoaXMuX2lzVmFsaWQoKTtcclxuICB9XHJcblxyXG4gIGdldCBzZWxlY3RlZFRlcm1pbmFsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRUZXJtaW5hbDtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyB2YXJpYWJsZXNcclxuICBwdWJsaWMgbWluX2RhdGUgPSB7XHJcbiAgICB5ZWFyOiBtb21lbnQoKS55ZWFyKCksXHJcbiAgICBtb250aDogbW9tZW50KCkubW9udGgoKSArIDEsIC8vIG5nYkRhdGUgbW9udGhzIGFyZSBub3QgMCBpbmRleGVkXHJcbiAgICBkYXk6IG1vbWVudCgpLmRhdGUoKVxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgX2RhdGU6IE5nYkRhdGVTdHJ1Y3QgPSBudWxsO1xyXG4gIGdldCBkYXRlKCk6IE5nYkRhdGVTdHJ1Y3Qge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGU7XHJcbiAgfVxyXG5cclxuICBzZXQgZGF0ZSh2YWx1ZTogTmdiRGF0ZVN0cnVjdCkge1xyXG4gICAgdGhpcy5fZGF0ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5fdXBkYXRlRGF0ZVRpbWUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RpbWU6IHN0cmluZyA9IG51bGw7XHJcbiAgZ2V0IHRpbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90aW1lO1xyXG4gIH1cclxuXHJcbiAgc2V0IHRpbWUodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdGltZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5fdXBkYXRlRGF0ZVRpbWUoKTtcclxuICB9XHJcblxyXG4gIGdldCBhcnJpdmFsRGF0ZXRpbWUoKTogbW9tZW50Lk1vbWVudCB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wUGFyYW1zLmFycml2YWxEYXRldGltZTtcclxuICB9XHJcblxyXG4gIHNldCBhcnJpdmFsRGF0ZXRpbWUodmFsdWU6IG1vbWVudC5Nb21lbnQpIHtcclxuICAgIGlmICh2YWx1ZS5pc1ZhbGlkKCkpIHtcclxuICAgICAgdGhpcy50ZW1wUGFyYW1zLmFycml2YWxEYXRldGltZSA9IHZhbHVlO1xyXG5cclxuICAgICAgdGhpcy5fZGF0ZSA9IHRoaXMuaGVscGVycy5tb21lbnRUb05nRGF0ZSh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuX3RpbWUgPSB0aGlzLmhlbHBlcnMuZm9ybWF0VGltZUNvbG9uKHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGVtcFBhcmFtcy5hcnJpdmFsRGF0ZXRpbWUgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5faXNWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHJlc3VsdHNTZXNzaW9uTmFtZSA9XHJcbiAgICBMb3VuZ2VzRW50ZXJwcmlzZVNlYXJjaC5TVE9SQUdFX1NFU1NJT05fUkVTVUxUUztcclxuICBwcm90ZWN0ZWQgbXVsdGlSZXN1bHRzU2Vzc2lvbk5hbWUgPVxyXG4gICAgTG91bmdlc0VudGVycHJpc2VTZWFyY2guU1RPUkFHRV9TRVNTSU9OX1JFU1VMVFM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsb3VuZ2VmZXRjaGVyOiBCYXNlTG91bmdlUXVvdGVGZXRjaGVyPExRX1E+LFxyXG4gICAgaGVscGVyczogQmFzZUhlbHBlclJvdXRpbmVzLFxyXG4gICAgcHJpdmF0ZSBiYXNrZXRTZXJ2aWNlOiBFbnRlcnByaXNlQmFza2V0U2VydmljZUludGVyZmFjZSxcclxuICAgIHN0b3JhZ2VTZXJ2aWNlOiBCYXNlU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IEVudGVycHJpc2VTZWFyY2hTZXJ2aWNlSW50ZXJmYWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihzdG9yYWdlU2VydmljZSwgaGVscGVycyk7XHJcbiAgICBjb25zdCBkYXRhOiB7XHJcbiAgICAgIHRlbXBQYXJhbXM6IExvdW5nZXNUZW1wUGFyYW1zO1xyXG4gICAgfSA9IHN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25JdGVtKFxyXG4gICAgICBMb3VuZ2VzRW50ZXJwcmlzZVNlYXJjaC5TVE9SQUdFX1NFU1NJT05fUEFSQU1TXHJcbiAgICApIHx8IHtcclxuICAgICAgdGVtcFBhcmFtczoge30gYXMgTG91bmdlc1RlbXBQYXJhbXNcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy51cGRhdGVUZW1wUGFyYW1zKHNlYXJjaFNlcnZpY2UubWFrZUxvdW5nZXNRdWVyeShkYXRhLnRlbXBQYXJhbXMpKTtcclxuXHJcbiAgICBpZiAoc2VhcmNoU2VydmljZS5zaG91bGRBZGRUcmF2ZWxsZXJTdWJzY3JpcHRpb24oKSkge1xyXG4gICAgICBzZWFyY2hTZXJ2aWNlLnRyYXZlbGxlckluZm9ybWF0aW9uLnN1YnNjcmliZShcclxuICAgICAgICAodHJhdmVsbGVyczogVHJhdmVsbGVyW10pID0+IHtcclxuICAgICAgICAgIGNvbnN0IHNwbGl0VHJhdmVsbGVycyA9IHRoaXMuaGVscGVycy5zZWxlY3RlZFRyYXZlbGxlcnMoXHJcbiAgICAgICAgICAgIHRyYXZlbGxlcnMsXHJcbiAgICAgICAgICAgIFNlcnZpY2VUeXBlLkxvdW5nZVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnRlbXBQYXJhbXMuYWR1bHRzID0gc3BsaXRUcmF2ZWxsZXJzLmFkdWx0cy5sZW5ndGg7XHJcbiAgICAgICAgICB0aGlzLnRlbXBQYXJhbXMuY2hpbGRyZW4gPSBzcGxpdFRyYXZlbGxlcnMuY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICAgICAgdGhpcy50cmF2ZWxsZXJzID0gdHJhdmVsbGVycztcclxuXHJcbiAgICAgICAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzdWx0cyA9XHJcbiAgICAgIHN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25JdGVtQXNMaXN0PExvdW5nZVF1b3RlUmVzdWx0QXJyYXk+KFxyXG4gICAgICAgIHRoaXMucmVzdWx0c1Nlc3Npb25OYW1lXHJcbiAgICAgICkgfHwgW107XHJcbiAgICAvLyBpZiAocmVzdWx0cyA9PSBudWxsICYmIHRoaXMuaXNWYWxpZCkge1xyXG4gICAgLy8gICBzZWFyY2hTZXJ2aWNlLnN0YXJ0U2VhcmNoZXMoKTtcclxuICAgIC8vIH1cclxuICAgIHRoaXMuX2NoZWFwZXN0UmVzdWx0UHJpY2UgPSB0aGlzLnVwZGF0ZUxvd2VzdFByaWNlKHJlc3VsdHMpO1xyXG4gICAgdGhpcy5yZXN1bHRzLm5leHQocmVzdWx0cyB8fCBbXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVzZXRRdWVyeSgpIHtcclxuICAgIHRoaXMudXBkYXRlVGVtcFBhcmFtcyh0aGlzLnNlYXJjaFNlcnZpY2UubWFrZUxvdW5nZXNRdWVyeSgpKTtcclxuICAgIHRoaXMuX2lzVmFsaWQoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFF1ZXJ5KCk6IFNlYXJjaExvdW5nZXNRdWVyeVZhcmlhYmxlcyB7XHJcbiAgICBjb25zdCBxdWVyeTogU2VhcmNoTG91bmdlc1F1ZXJ5VmFyaWFibGVzID0ge1xyXG4gICAgICBhZHVsdHM6IHRoaXMudGVtcFBhcmFtcy5hZHVsdHMsXHJcbiAgICAgIGNoaWxkcmVuOiB0aGlzLnRlbXBQYXJhbXMuY2hpbGRyZW4sXHJcbiAgICAgIGluZmFudHM6IHRoaXMudGVtcFBhcmFtcy5pbmZhbnRzLFxyXG4gICAgICBsb2NhdGlvbkNvZGU6IHRoaXMuX2xvY2F0aW9uQ29kZSxcclxuICAgICAgdGVybWluYWw6XHJcbiAgICAgICAgdGhpcy50ZW1wUGFyYW1zLnRlcm1pbmFsID09PSAnQW55JyA/IG51bGwgOiB0aGlzLnRlbXBQYXJhbXMudGVybWluYWwsXHJcbiAgICAgIGFycml2YWxEYXRldGltZTogdGhpcy50ZW1wUGFyYW1zLmFycml2YWxEYXRldGltZVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmhlbHBlcnMucmVtb3ZlTnVsbHM8U2VhcmNoTG91bmdlc1F1ZXJ5VmFyaWFibGVzPihxdWVyeSk7XHJcbiAgfVxyXG5cclxuICAvLyBQcml2YXRlIE1ldGhvZHNcclxuXHJcbiAgcHJpdmF0ZSBfaXNWYWxpZCgpIHtcclxuICAgIGlmICghdGhpcy5kb0NoZWNrcykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFNlc3Npb25JdGVtKFxyXG4gICAgICBMb3VuZ2VzRW50ZXJwcmlzZVNlYXJjaC5TVE9SQUdFX1NFU1NJT05fUEFSQU1TLFxyXG4gICAgICB7XHJcbiAgICAgICAgdGVtcFBhcmFtczogdGhpcy50ZW1wUGFyYW1zLFxyXG4gICAgICAgIHRyYXZlbGxlcnM6IHRoaXMudHJhdmVsbGVyc1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VzID0gW107XHJcbiAgICBpZiAoIXRoaXMuX2xvY2F0aW9uQ29kZSB8fCB0aGlzLl9sb2NhdGlvbkNvZGUgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VzLnB1c2goJ1lvdSBtdXN0IHNlbGVjdCBhaXJwb3J0IGZpcnN0LicpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmICghdGhpcy5xdWVyeS50ZXJtaW5hbCkge1xyXG4gICAgLy8gICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlcy5wdXNoKCdUZXJtaW5hbCBjYW4gbm90IGJlIGVtcHR5LicpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLnRlbXBQYXJhbXMuYXJyaXZhbERhdGV0aW1lLnVuaXgoKSA8IG1vbWVudCgpLnVuaXgoKSkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlcy5wdXNoKCdPdXR3YXJkIGpvdXJuZXkgY2Fubm90IGJlIGluIHRoZSBwYXN0LicpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNWYWxpZC5uZXh0KHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VzLmxlbmd0aCA9PT0gMCk7XHJcbiAgICB0aGlzLm1lc3NhZ2VzLm5leHQodGhpcy52YWxpZGF0aW9uTWVzc2FnZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlRGF0ZVRpbWUoKSB7XHJcbiAgICBpZiAodGhpcy5fZGF0ZSAmJiB0aGlzLl90aW1lKSB7XHJcbiAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLmhlbHBlcnMubmdEYXRlVG9Nb21lbnQodGhpcy5fZGF0ZSwgdGhpcy5fdGltZSk7XHJcbiAgICAgIHRoaXMudGVtcFBhcmFtcy5hcnJpdmFsRGF0ZXRpbWUgPSB0aW1lLmlzVmFsaWQoKSA/IHRpbWUgOiBudWxsO1xyXG4gICAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGFydFNlYXJjaCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHRoaXMucmVzdWx0cy5uZXh0KFtdKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc1ZhbGlkLnZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5nZXRTZWFyY2hRdWVyeSgpO1xyXG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc2F2ZVJlY2VudFNlYXJjaCh0aGlzLmdldFJlY2VudFNlYXJjaFF1ZXJ5KHF1ZXJ5KSk7XHJcbiAgICAgIHJldHVybiB0aGlzLl9zdGFydFNlYXJjaChcclxuICAgICAgICB0aGlzLmxvdW5nZWZldGNoZXIuZmV0Y2hMaXN0KFxyXG4gICAgICAgICAgdGhpcy5oZWxwZXJzLnJlbW92ZU51bGxzPFNlYXJjaExvdW5nZXNRdWVyeVZhcmlhYmxlcz4ocXVlcnkpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRSZWNlbnRTZWFyY2hRdWVyeShcclxuICAgIHF1ZXJ5OiBTZWFyY2hMb3VuZ2VzUXVlcnlWYXJpYWJsZXNcclxuICApOiBTYXZlUmVjZW50U2VhcmNoTXV0YXRpb25WYXJpYWJsZXMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2VydmljZVR5cGU6IFNlcnZpY2VUeXBlLkxvdW5nZSxcclxuICAgICAgc2VhcmNoQXJnczogcXVlcnksXHJcbiAgICAgIHRyYXZlbERhdGU6IHRoaXMuYXJyaXZhbERhdGV0aW1lLmZvcm1hdCgpLFxyXG4gICAgICB0cmF2ZWxsZXJzOiB0aGlzLmhlbHBlcnMuZ2V0VHJhdmVsbGVyc0lkKHRoaXMudHJhdmVsbGVycylcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhcnRSZWNlbnRTZWFyY2gocmVjZW50U2VhcmNoOiBSZWNlbnRTZWFyY2gpOiB2b2lkIHtcclxuICAgIHRoaXMuYXJyaXZhbERhdGV0aW1lID0gbW9tZW50KHJlY2VudFNlYXJjaC5zZWFyY2hBcmdzLmFycml2YWxEYXRldGltZSk7XHJcbiAgICB0aGlzLnRlcm1pbmFsID0gcmVjZW50U2VhcmNoLnNlYXJjaEFyZ3MudGVybWluYWw7XHJcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2VcclxuICAgICAgLmdldEFpcnBvcnRCeUNvZGUocmVjZW50U2VhcmNoLnNlYXJjaEFyZ3MubG9jYXRpb25Db2RlKVxyXG4gICAgICAuc3Vic2NyaWJlKChhaXJwb3J0OiBBaXJwb3J0UmVzdWx0cykgPT4ge1xyXG4gICAgICAgIGlmIChhaXJwb3J0KSB7XHJcbiAgICAgICAgICB0aGlzLmxvY2F0aW9uQ29kZSA9IHtcclxuICAgICAgICAgICAgY291bnRyeTogYWlycG9ydC5pYXRhTWF0Y2g/LmxvY2F0aW9uRGV0YWlscz8uY291bnRyeSxcclxuICAgICAgICAgICAgY291bnRyeUNvZGU6IGFpcnBvcnQuaWF0YU1hdGNoPy5sb2NhdGlvbkRldGFpbHM/LmNvdW50cnlDb2RlLFxyXG4gICAgICAgICAgICBkZXN0aW5hdGlvbjogYWlycG9ydC5pYXRhTWF0Y2gubmFtZSxcclxuICAgICAgICAgICAgZ2F0ZXdheTogYWlycG9ydC5pYXRhTWF0Y2guaWF0YSxcclxuICAgICAgICAgICAgcG9zdGNvZGU6IGFpcnBvcnQuaWF0YU1hdGNoPy5sb2NhdGlvbkRldGFpbHM/LnBvc3Rjb2RlLFxyXG4gICAgICAgICAgICB0ZXJtaW5hbHM6IHRoaXMuc2VhcmNoU2VydmljZS5wcm9jZXNzVGVybWluYWxzKFxyXG4gICAgICAgICAgICAgIGFpcnBvcnQuaWF0YU1hdGNoLnRlcm1pbmFsc1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy50ZXJtaW5hbCA9IHJlY2VudFNlYXJjaC5zZWFyY2hBcmdzLnRlcm1pbmFsO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnN0YXJ0U2VhcmNoZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnN0YXJ0U2VhcmNoZXMoKTtcclxuICB9XHJcblxyXG4gIHNvcnRCeVByaWNlKGFzYz86IGJvb2xlYW4sIHJlc3VsdEFycmF5OiBMb3VuZ2VRdW90ZVtdID0gW10pIHtcclxuICAgIGxldCBzb3J0UmVzdWx0cyA9IFsuLi50aGlzLmZ1bGxSZXN1bHRzXSBhcyBMb3VuZ2VRdW90ZVtdO1xyXG4gICAgaWYgKCFzb3J0UmVzdWx0cy5sZW5ndGgpIHtcclxuICAgICAgc29ydFJlc3VsdHMgPSByZXN1bHRBcnJheTtcclxuICAgIH1cclxuICAgIHNvcnRSZXN1bHRzID0gdGhpcy5zb3J0UmVzdWx0c1ByaWNlKHNvcnRSZXN1bHRzLCBhc2MpO1xyXG4gICAgdGhpcy5yZXN1bHRzLm5leHQoc29ydFJlc3VsdHMpO1xyXG4gIH1cclxuXHJcbiAgc29ydFJlc3VsdHNQcmljZShyZXN1bHRBcnJheTogTG91bmdlUXVvdGVbXSwgYXNjPzogYm9vbGVhbik6IExvdW5nZVF1b3RlW10ge1xyXG4gICAgbGV0IHJlc3VsdHMgPSBbLi4ucmVzdWx0QXJyYXldO1xyXG4gICAgaWYgKGFzYykge1xyXG4gICAgICByZXN1bHRzID0gcmVzdWx0cy5zb3J0KFxyXG4gICAgICAgIChhOiBMb3VuZ2VRdW90ZVJlc3VsdCwgYjogTG91bmdlUXVvdGVSZXN1bHQpID0+IGIucHJpY2UgLSBhLnByaWNlXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXN1bHRzID0gcmVzdWx0cy5zb3J0KFxyXG4gICAgICAgIChhOiBMb3VuZ2VRdW90ZVJlc3VsdCwgYjogTG91bmdlUXVvdGVSZXN1bHQpID0+IGEucHJpY2UgLSBiLnByaWNlXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIHNvcnRCeVRlcm1pbmFsKHJlc3VsdEFycmF5OiBMb3VuZ2VRdW90ZVtdID0gW10pIHtcclxuICAgIGxldCByZXN1bHRzID0gWy4uLnRoaXMuZnVsbFJlc3VsdHNdO1xyXG4gICAgaWYgKCFyZXN1bHRzLmxlbmd0aCkge1xyXG4gICAgICByZXN1bHRzID0gcmVzdWx0QXJyYXk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0ZXJtaW5hbFNvcnRlciA9IChhOiBMb3VuZ2VRdW90ZVJlc3VsdCwgYjogTG91bmdlUXVvdGVSZXN1bHQpID0+IHtcclxuICAgICAgcmV0dXJuIC0xOyAvLyBUT0RPIGEucmF3RGF0YS5GbGlnaHRUZXJtT3V0ID4gYi5yYXdEYXRhLkZsaWdodFRlcm1PdXQgPyAxIDogLTE7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5yZXN1bHRzLm5leHQocmVzdWx0cy5zb3J0KHRlcm1pbmFsU29ydGVyKSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGcm9tUHJldmlvdXNTZWFyY2hlcyhcclxuICAgIHByZXZpb3VzSXRlbXM6IFJlY29yZDxTZXJ2aWNlVHlwZSwgQmFza2V0SXRlbT5cclxuICApOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCdQUkVQT1BVTEFUSU5HIExPVU5HRSBGT1JNJyk7XHJcbiAgICBjb25zdCBmbGlnaHRJdGVtOiBTZWFyY2hGbGlnaHRzVjJRdWVyeVZhcmlhYmxlcyA9XHJcbiAgICAgIHByZXZpb3VzSXRlbXNbU2VydmljZVR5cGUuRmxpZ2h0XT8uc2VhcmNoUXVlcnk7XHJcbiAgICBpZiAoZmxpZ2h0SXRlbSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCBkYXRlID1cclxuICAgICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hlc1tTZXJ2aWNlVHlwZS5GbGlnaHRdLm91dEJvdW5kRGF0ZS50b0RhdGUoKTtcclxuICAgICAgICB0aGlzLmRhdGUgPSB7XHJcbiAgICAgICAgICBkYXk6IGRhdGUuZ2V0VVRDRGF0ZSgpLFxyXG4gICAgICAgICAgbW9udGg6IGRhdGUuZ2V0VVRDTW9udGgoKSArIDEsXHJcbiAgICAgICAgICB5ZWFyOiBkYXRlLmdldFVUQ0Z1bGxZZWFyKClcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMubG9jYXRpb25Db2RlID0gdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaGVzW1NlcnZpY2VUeXBlLkZsaWdodF1cclxuICAgICAgICAgIC5hcnJpdmVMb2NhdGlvbiBhcyBPQlRBaXJwb3J0RGV0YWlscztcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgdHJ5aW5nIHRvIHByZXBvcHVsYXRlIHBhcmtpbmcgZnJvbSBsb3VuZ2UgaXRlbScpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhZGRMb3VuZ2VUb0Jhc2tldChcclxuICAgIGxvdW5nZVF1b3RlOiBMb3VuZ2VRdW90ZSxcclxuICAgIGxvdW5nZVF1ZXJ5OiBTZWFyY2hMb3VuZ2VzUXVlcnlWYXJpYWJsZXNcclxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmIChsb3VuZ2VRdW90ZS51bmF2YWlsYWJsZSkge1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGludEJhc2tldDogSW50ZXJuYWxCYXNrZXRJbnRlcmZhY2UgPVxyXG4gICAgICBhd2FpdCB0aGlzLmJhc2tldFNlcnZpY2UuZ2V0RGVmYXVsdEJhc2tldCgpO1xyXG4gICAgY29uc3QgYmFza2V0ID0gaW50QmFza2V0Py5zdWJqZWN0LnZhbHVlO1xyXG4gICAgY29uc3QgdGVybXNBbmRDb25kaXRpb25zID0gdGhpcy5nZXRUZXJtc0FuZENvbmQobG91bmdlUXVvdGUpO1xyXG4gICAgaWYgKGJhc2tldCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5iYXNrZXRTZXJ2aWNlLmFkZFRvQmFza2V0KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGFkdWx0czogbG91bmdlUXVlcnkuYWR1bHRzLFxyXG4gICAgICAgICAgY2hpbGRyZW46IGxvdW5nZVF1ZXJ5LmNoaWxkcmVuLFxyXG4gICAgICAgICAgaW5mYW50czogbG91bmdlUXVlcnkuaW5mYW50cyxcclxuICAgICAgICAgIGJhc2tldDogYmFza2V0LmlkLFxyXG4gICAgICAgICAgc2VydmljZTogbG91bmdlUXVvdGUuc291cmNlSWQudG9TdHJpbmcoKSxcclxuICAgICAgICAgIGRldGFpbDoge1xyXG4gICAgICAgICAgICBhcnJpdmFsRGF0ZXRpbWU6IGxvdW5nZVF1ZXJ5LmFycml2YWxEYXRldGltZS5mb3JtYXQoKSxcclxuICAgICAgICAgICAgbG9jYXRpb25Db2RlOiBsb3VuZ2VRdW90ZS5jb2RlLFxyXG4gICAgICAgICAgICBuYW1lOiBsb3VuZ2VRdW90ZS5uYW1lLFxyXG4gICAgICAgICAgICBhaXJwb3J0SWF0YTogbG91bmdlUXVlcnk/LmxvY2F0aW9uQ29kZSxcclxuICAgICAgICAgICAgbG9nbzogbG91bmdlUXVvdGUubG91bmdlLmxvZ28sXHJcbiAgICAgICAgICAgIGludHJvZHVjdGlvbjogbG91bmdlUXVvdGUubG91bmdlLmludHJvZHVjdGlvbixcclxuICAgICAgICAgICAgY292aWRDb3B5OiBsb3VuZ2VRdW90ZS5sb3VuZ2UubWlzYy5jb3ZpZENvcHksXHJcbiAgICAgICAgICAgIGNhbmNlbGxhdGlvbkluZm86IGxvdW5nZVF1b3RlLmxvdW5nZS5jYW5jZWxsYXRpb25JbmZvLFxyXG4gICAgICAgICAgICBhZG1lbmRtZW50c0luZm86IGxvdW5nZVF1b3RlLmxvdW5nZS5hbWVuZG1lbnRzSW5mbyxcclxuICAgICAgICAgICAgY2hlY2tJbkluZm86IGxvdW5nZVF1b3RlLmxvdW5nZS5jaGVja0luSW5mbyxcclxuICAgICAgICAgICAgZHJlc3NDb2RlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuZHJlc3NDb2RlLFxyXG4gICAgICAgICAgICBmb29kQW5kQmV2ZXJhZ2U6IGxvdW5nZVF1b3RlLmxvdW5nZS5mb29kQW5kQmV2ZXJhZ2UsXHJcbiAgICAgICAgICAgIHdoYXRzSW5jbHVkZWRGb29kOiBsb3VuZ2VRdW90ZS5sb3VuZ2Uud2hhdHNJbmNsdWRlZEZvb2QsXHJcbiAgICAgICAgICAgIHdoYXRzSW5jbHVkZWREcmlua3M6IGxvdW5nZVF1b3RlLmxvdW5nZS53aGF0c0luY2x1ZGVkRHJpbmtzLFxyXG4gICAgICAgICAgICB3aGF0c0luY2x1ZGVkRXh0cmFzOiBsb3VuZ2VRdW90ZS5sb3VuZ2Uud2hhdHNJbmNsdWRlZEV4dHJhcyxcclxuICAgICAgICAgICAgZ3JvdXBJbmZvOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuZ3JvdXBJbmZvLFxyXG4gICAgICAgICAgICB0ZXJtaW5hbDogbG91bmdlUXVvdGUubG91bmdlLnRlcm1pbmFsPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICB0ZXJtc0FuZENvbmQ6IHRlcm1zQW5kQ29uZGl0aW9uc1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHByaWNlOiBsb3VuZ2VRdW90ZS5wcmljZSxcclxuICAgICAgICAgIGN1cnJlbmN5OiBsb3VuZ2VRdW90ZS5jdXJyZW5jeSxcclxuICAgICAgICAgIHNlYXJjaFF1ZXJ5OiBsb3VuZ2VRdWVyeSxcclxuICAgICAgICAgIG91dGJvdW5kRGF0ZTogbG91bmdlUXVlcnkuYXJyaXZhbERhdGV0aW1lLmZvcm1hdCgpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBpbnRCYXNrZXQsXHJcbiAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLFxyXG4gICAgICAgIHRoaXMudHJhdmVsbGVycyxcclxuICAgICAgICBsb3VuZ2VRdW90ZS5yZXF1aXJlc1JlYXNvblxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7IC8vIFRPRE8gc2hvdWxkIHRoaXMgdGhyb3cgYW4gZXJyb3I/XHJcbiAgfVxyXG5cclxuICBnZXRUZXJtc0FuZENvbmQobG91bmdlUXVvdGU6IExvdW5nZVF1b3RlKSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ05hbWUnLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UubmFtZVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ1RlbGVwaG9uZScsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS50ZWxlcGhvbmVcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdJbXBvcnRhbnQgSW5mb3JtYXRpb24nLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UubWlzYy5pbXBvcnRhbnRJbmZvcm1hdGlvblxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0ludHJvZHVjdGlvbicsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5pbnRyb2R1Y3Rpb25cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdEcmVzcyBDb2RlJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLmRyZXNzQ29kZVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0J1c2luZXNzIEZhY2lsaXRpZXMnLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UubWlzYy5idXNpbmVzc2ZhY2lsaXRpZXNcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdFbnRlcnRhaW5tZW50IEZhY2lsaXRpZXMnLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UubWlzYy5lbnRlcnRhaW5tZW50RmFjaWxpdGllc1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0Rpc2FibGVkIEZhY2lsaXRpZXMnLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UubWlzYy5mYWNpbGl0aWVzZGlzYWJsZWRcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdGYWNpbGl0aWVzJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLmZhY2lsaXRpZXMudG9TdHJpbmcoKVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ1RpbWVzJyxcclxuICAgICAgICB2YWx1ZTogYE9wZW5zICR7bG91bmdlUXVvdGUubG91bmdlLm9wZW5UaW1lfTsgQ2xvc2VzICR7bG91bmdlUXVvdGUubG91bmdlLmNsb3NlVGltZX1gXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnRGlyZWN0aW9ucycsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5kaXJlY3Rpb25zXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnR3JvdXBzJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLmdyb3VwSW5mb1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0NoZWNrLUluIFRpbWUnLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuY2hlY2tJbkluZm9cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdBbWVuZCBJbmZvJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLmFtZW5kbWVudHNJbmZvXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnQ2FuY2VsIEluZm8nLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuY2FuY2VsbGF0aW9uSW5mb1xyXG4gICAgICB9XHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTG93ZXN0UHJpY2UocmVzdWx0czogTG91bmdlUXVvdGVbXSk6IElDaGVhcGVzdFByaWNlIHtcclxuICAgIGlmICghcmVzdWx0cy5sZW5ndGgpIHJldHVybiBudWxsO1xyXG4gICAgY29uc3QgY3VycmVuY3kgPSByZXN1bHRzWzBdLmN1cnJlbmN5O1xyXG4gICAgcmV0dXJuIHJlc3VsdHMucmVkdWNlKFxyXG4gICAgICAoY2hlYXBlc3RQcmljZTogSUNoZWFwZXN0UHJpY2UsIHJlc3VsdDogTG91bmdlUXVvdGUpID0+IHtcclxuICAgICAgICBjb25zdCBwcmljZSA9IHJlc3VsdC5wcmljZTtcclxuICAgICAgICBpZiAoY2hlYXBlc3RQcmljZS5hbW91bnQgPiBwcmljZSkgY2hlYXBlc3RQcmljZS5hbW91bnQgPSBwcmljZTtcclxuICAgICAgICByZXR1cm4gY2hlYXBlc3RQcmljZTtcclxuICAgICAgfSxcclxuICAgICAgeyBhbW91bnQ6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLCBjdXJyZW5jeUNvZGU6IGN1cnJlbmN5IH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzYXZlU2VhcmNoKCk6IE9ic2VydmFibGU8U2F2ZUZhdm91cml0ZVNlYXJjaFJlc3VsdD4ge1xyXG4gICAgaWYgKHRoaXMuaXNWYWxpZC52YWx1ZSkge1xyXG4gICAgICBjb25zdCBzZWFyY2ggPSB0aGlzLmdldFNlYXJjaFF1ZXJ5KCk7XHJcbiAgICAgIGNvbnN0IHNlYXJjaEluZm8gPSB7XHJcbiAgICAgICAgbmFtZTogYCR7bW9tZW50KCl9YCxcclxuICAgICAgICBzZXJ2aWNlVHlwZTogU2VydmljZVR5cGUuTG91bmdlLFxyXG4gICAgICAgIHNlYXJjaEFyZ3M6IHNlYXJjaFxyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gdGhpcy5zZWFyY2hTZXJ2aWNlLnNhdmVGYXZvdXJpdGVTZWFyY2goc2VhcmNoSW5mbyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIGFwcGx5RmF2b3VyaXRlKGZhdjogYW55KTogUHJvbWlzZTx2b2lkPntcclxuICAgIHRoaXMuc2VhcmNoU2VydmljZS5nZXRBaXJwb3J0c0xpc3QoZmF2LmxvY2F0aW9uQ29kZSkuc3Vic2NyaWJlKGEgPT4ge1xyXG4gICAgICB0aGlzLmxvY2F0aW9uQ29kZSA9IChhIGFzIGFueVtdKS5maW5kKGEgPT4gYS5nYXRld2F5ID09IGZhdi5sb2NhdGlvbkNvZGUpXHJcbiAgICAgIHRoaXMudGVybWluYWwgPSBmYXYudGVybWluYWxcclxuICAgIH0pXHJcbiAgICB0aGlzLmFkdWx0cyA9IGZhdi5hZHVsdHNcclxuICAgIHRoaXMuY2hpbGRyZW4gPSBmYXYuY2hpbGRyZW5cclxuICAgIHRoaXMuaW5mYW50cyA9IGZhdi5pbmZhbnRzXHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
473
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG91bmdlcy1lbnRlcnByaXNlLXNlYXJjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29idHNlcnZpY2VzL2Jhc2Uvc3JjL2xpYi92ZW5kb3IvY2xhc3Nlcy9sb3VuZ2VzLWVudGVycHJpc2Utc2VhcmNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUk1QixPQUFPLEVBQ0wsNEJBQTRCLEVBUTdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQU9MLFdBQVcsRUFDWixNQUFNLHdCQUF3QixDQUFDO0FBZWhDLE1BQU0sT0FBTyx1QkFDWCxTQUFRLG9CQUlQO0lBbUtELFlBQ1UsYUFBMkMsRUFDbkQsT0FBMkIsRUFDbkIsYUFBK0MsRUFDdkQsY0FBa0MsRUFDbEMsYUFBK0M7UUFFL0MsS0FBSyxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFOdEMsa0JBQWEsR0FBYixhQUFhLENBQThCO1FBRTNDLGtCQUFhLEdBQWIsYUFBYSxDQUFrQztRQWpLbEQsU0FBSSxHQUFnQixXQUFXLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBa0IsRUFBRSxDQUFDLENBQUM7UUErQnBELGtCQUFhLEdBQVcsSUFBSSxDQUFDO1FBb0U3QixzQkFBaUIsR0FBVyxFQUFFLENBQUM7UUFVdkMsbUJBQW1CO1FBQ1osYUFBUSxHQUFHO1lBQ2hCLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUU7WUFDckIsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7WUFDM0IsR0FBRyxFQUFFLE1BQU0sRUFB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Q0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMzRDtJQUNILENBQUM7SUFDSyxjQUFjLENBQUMsR0FBUTs7WUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNuRSxJQUFJLENBQUMsWUFBWSxHQUFJLENBQVcsQ0FBQyxJQUFJLENBQ25DLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQ3JDLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDN0IsQ0FBQztLQUFBOztBQWhqQmUsOENBQXNCLEdBQUcsZUFBZSxDQUFDO0FBQ3pDLCtDQUF1QixHQUFHLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUVudGVycHJpc2VTZWFyY2ggfSBmcm9tICcuL2Jhc2UtZW50ZXJwcmlzZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IEJhc2VTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VIZWxwZXJSb3V0aW5lcyB9IGZyb20gJy4vaGVscGVycyc7XHJcbmltcG9ydCB7IFRyYXZlbGxlciB9IGZyb20gJy4uL21vZGVscy90cmF2ZWxsZXIub2JqZWN0JztcclxuaW1wb3J0IHtcclxuICBEaWZmZXJlbnRJbnZva2RlZFVzZXJSZWFzb25zLFxyXG4gIExvdW5nZVF1b3RlUmVzdWx0LFxyXG4gIExvdW5nZVF1b3RlUmVzdWx0QXJyYXksXHJcbiAgTmdiRGF0ZVN0cnVjdCxcclxuICBPQlRBaXJwb3J0RGV0YWlscyxcclxuICBSZWNlbnRTZWFyY2gsXHJcbiAgU2F2ZUZhdm91cml0ZVNlYXJjaFJlc3VsdCxcclxuICBUZXJtaW5hbHNUeXBlXHJcbn0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xyXG5pbXBvcnQge1xyXG4gIEFpcnBvcnRSZXN1bHRzLFxyXG4gIEJhc2tldEl0ZW0sXHJcbiAgTG91bmdlUXVvdGUsXHJcbiAgU2F2ZVJlY2VudFNlYXJjaE11dGF0aW9uVmFyaWFibGVzLFxyXG4gIFNlYXJjaEZsaWdodHNWMlF1ZXJ5VmFyaWFibGVzLFxyXG4gIFNlYXJjaExvdW5nZXNRdWVyeVZhcmlhYmxlcyxcclxuICBTZXJ2aWNlVHlwZVxyXG59IGZyb20gJy4uL3R5cGVzL2dyYXBocWwudHlwZXMnO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VMb3VuZ2VRdW90ZUZldGNoZXIsXHJcbiAgTG91bmdlUXVvdGVGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL2ZldGNoZXJzL2xvdW5nZS1xdW90ZS5mZXRjaGVyJztcclxuaW1wb3J0IHtcclxuICBFbnRlcnByaXNlQmFza2V0U2VydmljZUludGVyZmFjZSxcclxuICBJbnRlcm5hbEJhc2tldEludGVyZmFjZVxyXG59IGZyb20gJy4uL2ludGVyZmFjZXMvSWVudGVycHJpc2UtYmFza2V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnRlcnByaXNlU2VhcmNoU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSXNlYXJjaC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBMb3VuZ2VzRW50ZXJwcmlzZVNlYXJjaEludGVyZmFjZSxcclxuICBMb3VuZ2VzVGVtcFBhcmFtc1xyXG59IGZyb20gJy4uL2ludGVyZmFjZXMvSWxvdW5nZXMtZW50ZXJwcmlzZS1zZWFyY2gnO1xyXG5pbXBvcnQgeyBJQ2hlYXBlc3RQcmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY2hlYXBlc3QtcHJpY2UnO1xyXG5leHBvcnQgY2xhc3MgTG91bmdlc0VudGVycHJpc2VTZWFyY2g8TFFfUSBleHRlbmRzIExvdW5nZVF1b3RlRmV0Y2hlclR5cGU+XHJcbiAgZXh0ZW5kcyBCYXNlRW50ZXJwcmlzZVNlYXJjaDxcclxuICAgIExvdW5nZXNUZW1wUGFyYW1zLFxyXG4gICAgTG91bmdlUXVvdGVSZXN1bHRBcnJheSxcclxuICAgIExvdW5nZVF1b3RlUmVzdWx0QXJyYXlcclxuICA+XHJcbiAgaW1wbGVtZW50cyBMb3VuZ2VzRW50ZXJwcmlzZVNlYXJjaEludGVyZmFjZVxyXG57XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNUT1JBR0VfU0VTU0lPTl9QQVJBTVMgPSAnc2VhcmNoX2xvdW5nZSc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNUT1JBR0VfU0VTU0lPTl9SRVNVTFRTID0gJ3Jlc3VsdHNfbG91bmdlJztcclxuICBwdWJsaWMgdHlwZTogU2VydmljZVR5cGUgPSBTZXJ2aWNlVHlwZS5Mb3VuZ2U7XHJcbiAgcHVibGljIHRlcm1pbmFscyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGVybWluYWxzVHlwZVtdPihbXSk7XHJcblxyXG4gIHByaXZhdGUgdHJhdmVsbGVyczogVHJhdmVsbGVyW107XHJcbiAgcHJpdmF0ZSBfbG9jYXRpb25Db2RlOiBzdHJpbmc7XHJcblxyXG4gIGdldCBhZHVsdHMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBQYXJhbXMuYWR1bHRzO1xyXG4gIH1cclxuXHJcbiAgc2V0IGFkdWx0cyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnRlbXBQYXJhbXMuYWR1bHRzID0gdmFsdWU7XHJcbiAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgY2hpbGRyZW4oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBQYXJhbXMuY2hpbGRyZW47XHJcbiAgfVxyXG5cclxuICBzZXQgY2hpbGRyZW4odmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy50ZW1wUGFyYW1zLmNoaWxkcmVuID0gdmFsdWU7XHJcbiAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaW5mYW50cygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcFBhcmFtcy5pbmZhbnRzO1xyXG4gIH1cclxuXHJcbiAgc2V0IGluZmFudHModmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy50ZW1wUGFyYW1zLmluZmFudHMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZsaWdodE51bWJlcjogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgZ2V0IGZsaWdodE51bWJlcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZsaWdodE51bWJlcjtcclxuICB9XHJcblxyXG4gIHNldCBmbGlnaHROdW1iZXIodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fZmxpZ2h0TnVtYmVyID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgbG9jYXRpb25Db2RlKCk6IHN0cmluZyB8IE9CVEFpcnBvcnREZXRhaWxzIHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBQYXJhbXMubG9jYXRpb25Db2RlO1xyXG4gIH1cclxuXHJcbiAgc2V0IGxvY2F0aW9uQ29kZSh2YWx1ZTogc3RyaW5nIHwgT0JUQWlycG9ydERldGFpbHMpIHtcclxuICAgIHRoaXMudGVtcFBhcmFtcy5sb2NhdGlvbkNvZGUgPSB2YWx1ZTtcclxuICAgIGNvbnN0IHRlcm1pbmFsc1R5cGU6IFRlcm1pbmFsc1R5cGVbXSA9IHRoaXMudGVybWluYWxzPy52YWx1ZTtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMuX2xvY2F0aW9uQ29kZSA9ICcnO1xyXG4gICAgICB0aGlzLnRlcm1pbmFsID0gbnVsbDtcclxuICAgICAgdGhpcy50ZXJtaW5hbHMubmV4dChbXSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUZXJtaW5hbCA9IG51bGw7XHJcbiAgICAgIHRoaXMuX2lzVmFsaWQoKTtcclxuICAgIH0gZWxzZSBpZiAodmFsdWUgJiYgdmFsdWUuZ2F0ZXdheSkge1xyXG4gICAgICB0aGlzLl9sb2NhdGlvbkNvZGUgPSB2YWx1ZS5nYXRld2F5O1xyXG4gICAgICB0aGlzLnRlcm1pbmFsID0gbnVsbDtcclxuICAgICAgdGhpcy50ZXJtaW5hbHMubmV4dCh2YWx1ZS50ZXJtaW5hbHMpO1xyXG4gICAgICBpZiAodGVybWluYWxzVHlwZS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGVybWluYWwgPSB0ZXJtaW5hbHNUeXBlWzBdLmtleTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9sb2NhdGlvbkNvZGUgPSBudWxsO1xyXG4gICAgICB0aGlzLnRlcm1pbmFsID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRlcm1pbmFsID0gbnVsbDtcclxuICAgICAgdGhpcy50ZXJtaW5hbHMubmV4dChbXSk7XHJcbiAgICAgIHRoaXMuX2lzVmFsaWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB0ZXJtaW5hbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcFBhcmFtcy50ZXJtaW5hbFxyXG4gICAgICA/IHRoaXMudGVtcFBhcmFtcy50ZXJtaW5hbC50b1N0cmluZygpXHJcbiAgICAgIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHNldCB0ZXJtaW5hbChpbnB1dDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnRlbXBQYXJhbXMudGVybWluYWwgPSBpbnB1dDtcclxuICAgIGNvbnN0IGZvdW5kOiBUZXJtaW5hbHNUeXBlID0gdGhpcy50ZXJtaW5hbHMudmFsdWUuZmluZChcclxuICAgICAgKHRlcm1pbmFsOiBUZXJtaW5hbHNUeXBlLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgaWYgKHRlcm1pbmFsLnZhbHVlID09PSBpbnB1dCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIGlmIChmb3VuZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVGVybWluYWwgPSBmb3VuZC5rZXk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy50ZXJtaW5hbHMudmFsdWUgJiYgdGhpcy50ZXJtaW5hbHMudmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZXJtaW5hbCA9IHRoaXMudGVybWluYWxzLnZhbHVlWzBdLmtleTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGVybWluYWwgPSAnQW55IFRlcm1pbmFsJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5faXNWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRUZXJtaW5hbDogc3RyaW5nID0gJyc7XHJcbiAgc2V0IHNlbGVjdGVkVGVybWluYWwodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWRUZXJtaW5hbCA9IHZhbHVlO1xyXG4gICAgdGhpcy5faXNWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNlbGVjdGVkVGVybWluYWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFRlcm1pbmFsO1xyXG4gIH1cclxuXHJcbiAgLy8gcHVibGljIHZhcmlhYmxlc1xyXG4gIHB1YmxpYyBtaW5fZGF0ZSA9IHtcclxuICAgIHllYXI6IG1vbWVudCgpLnllYXIoKSxcclxuICAgIG1vbnRoOiBtb21lbnQoKS5tb250aCgpICsgMSwgLy8gbmdiRGF0ZSBtb250aHMgYXJlIG5vdCAwIGluZGV4ZWRcclxuICAgIGRheTogbW9tZW50KCkuZGF0ZSgpXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBfZGF0ZTogTmdiRGF0ZVN0cnVjdCA9IG51bGw7XHJcbiAgZ2V0IGRhdGUoKTogTmdiRGF0ZVN0cnVjdCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcclxuICB9XHJcblxyXG4gIHNldCBkYXRlKHZhbHVlOiBOZ2JEYXRlU3RydWN0KSB7XHJcbiAgICB0aGlzLl9kYXRlID0gdmFsdWU7XHJcbiAgICB0aGlzLl91cGRhdGVEYXRlVGltZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdGltZTogc3RyaW5nID0gbnVsbDtcclxuICBnZXQgdGltZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RpbWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdGltZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl90aW1lID0gdmFsdWU7XHJcbiAgICB0aGlzLl91cGRhdGVEYXRlVGltZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFycml2YWxEYXRldGltZSgpOiBtb21lbnQuTW9tZW50IHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBQYXJhbXMuYXJyaXZhbERhdGV0aW1lO1xyXG4gIH1cclxuXHJcbiAgc2V0IGFycml2YWxEYXRldGltZSh2YWx1ZTogbW9tZW50Lk1vbWVudCkge1xyXG4gICAgaWYgKHZhbHVlLmlzVmFsaWQoKSkge1xyXG4gICAgICB0aGlzLnRlbXBQYXJhbXMuYXJyaXZhbERhdGV0aW1lID0gdmFsdWU7XHJcblxyXG4gICAgICB0aGlzLl9kYXRlID0gdGhpcy5oZWxwZXJzLm1vbWVudFRvTmdEYXRlKHZhbHVlKTtcclxuICAgICAgdGhpcy5fdGltZSA9IHRoaXMuaGVscGVycy5mb3JtYXRUaW1lQ29sb24odmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50ZW1wUGFyYW1zLmFycml2YWxEYXRldGltZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVzdWx0c1Nlc3Npb25OYW1lID1cclxuICAgIExvdW5nZXNFbnRlcnByaXNlU2VhcmNoLlNUT1JBR0VfU0VTU0lPTl9SRVNVTFRTO1xyXG4gIHByb3RlY3RlZCBtdWx0aVJlc3VsdHNTZXNzaW9uTmFtZSA9XHJcbiAgICBMb3VuZ2VzRW50ZXJwcmlzZVNlYXJjaC5TVE9SQUdFX1NFU1NJT05fUkVTVUxUUztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGxvdW5nZWZldGNoZXI6IEJhc2VMb3VuZ2VRdW90ZUZldGNoZXI8TFFfUT4sXHJcbiAgICBoZWxwZXJzOiBCYXNlSGVscGVyUm91dGluZXMsXHJcbiAgICBwcml2YXRlIGJhc2tldFNlcnZpY2U6IEVudGVycHJpc2VCYXNrZXRTZXJ2aWNlSW50ZXJmYWNlLFxyXG4gICAgc3RvcmFnZVNlcnZpY2U6IEJhc2VTdG9yYWdlU2VydmljZSxcclxuICAgIHNlYXJjaFNlcnZpY2U6IEVudGVycHJpc2VTZWFyY2hTZXJ2aWNlSW50ZXJmYWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihzdG9yYWdlU2VydmljZSwgaGVscGVycywgc2VhcmNoU2VydmljZSk7XHJcbiAgICBjb25zdCBkYXRhOiB7XHJcbiAgICAgIHRlbXBQYXJhbXM6IExvdW5nZXNUZW1wUGFyYW1zO1xyXG4gICAgfSA9IHN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25JdGVtKFxyXG4gICAgICBMb3VuZ2VzRW50ZXJwcmlzZVNlYXJjaC5TVE9SQUdFX1NFU1NJT05fUEFSQU1TXHJcbiAgICApIHx8IHtcclxuICAgICAgdGVtcFBhcmFtczoge30gYXMgTG91bmdlc1RlbXBQYXJhbXNcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy51cGRhdGVUZW1wUGFyYW1zKHNlYXJjaFNlcnZpY2UubWFrZUxvdW5nZXNRdWVyeShkYXRhLnRlbXBQYXJhbXMpKTtcclxuXHJcbiAgICBpZiAoc2VhcmNoU2VydmljZS5zaG91bGRBZGRUcmF2ZWxsZXJTdWJzY3JpcHRpb24oKSkge1xyXG4gICAgICBzZWFyY2hTZXJ2aWNlLnRyYXZlbGxlckluZm9ybWF0aW9uLnN1YnNjcmliZShcclxuICAgICAgICAodHJhdmVsbGVyczogVHJhdmVsbGVyW10pID0+IHtcclxuICAgICAgICAgIGNvbnN0IHNwbGl0VHJhdmVsbGVycyA9IHRoaXMuaGVscGVycy5zZWxlY3RlZFRyYXZlbGxlcnMoXHJcbiAgICAgICAgICAgIHRyYXZlbGxlcnMsXHJcbiAgICAgICAgICAgIFNlcnZpY2VUeXBlLkxvdW5nZVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnRlbXBQYXJhbXMuYWR1bHRzID0gc3BsaXRUcmF2ZWxsZXJzLmFkdWx0cy5sZW5ndGg7XHJcbiAgICAgICAgICB0aGlzLnRlbXBQYXJhbXMuY2hpbGRyZW4gPSBzcGxpdFRyYXZlbGxlcnMuY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICAgICAgdGhpcy50cmF2ZWxsZXJzID0gdHJhdmVsbGVycztcclxuXHJcbiAgICAgICAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzdWx0cyA9XHJcbiAgICAgIHN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25JdGVtQXNMaXN0PExvdW5nZVF1b3RlUmVzdWx0QXJyYXk+KFxyXG4gICAgICAgIHRoaXMucmVzdWx0c1Nlc3Npb25OYW1lXHJcbiAgICAgICkgfHwgW107XHJcbiAgICAvLyBpZiAocmVzdWx0cyA9PSBudWxsICYmIHRoaXMuaXNWYWxpZCkge1xyXG4gICAgLy8gICBzZWFyY2hTZXJ2aWNlLnN0YXJ0U2VhcmNoZXMoKTtcclxuICAgIC8vIH1cclxuICAgIHRoaXMuX2NoZWFwZXN0UmVzdWx0UHJpY2UgPSB0aGlzLnVwZGF0ZUxvd2VzdFByaWNlKHJlc3VsdHMpO1xyXG4gICAgdGhpcy5yZXN1bHRzLm5leHQocmVzdWx0cyB8fCBbXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVzZXRRdWVyeSgpIHtcclxuICAgIHRoaXMudXBkYXRlVGVtcFBhcmFtcyh0aGlzLnNlYXJjaFNlcnZpY2UubWFrZUxvdW5nZXNRdWVyeSgpKTtcclxuICAgIHRoaXMuX2lzVmFsaWQoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFF1ZXJ5KCk6IFNlYXJjaExvdW5nZXNRdWVyeVZhcmlhYmxlcyB7XHJcbiAgICBjb25zdCBxdWVyeTogU2VhcmNoTG91bmdlc1F1ZXJ5VmFyaWFibGVzID0ge1xyXG4gICAgICBhZHVsdHM6IHRoaXMudGVtcFBhcmFtcy5hZHVsdHMsXHJcbiAgICAgIGNoaWxkcmVuOiB0aGlzLnRlbXBQYXJhbXMuY2hpbGRyZW4sXHJcbiAgICAgIGluZmFudHM6IHRoaXMudGVtcFBhcmFtcy5pbmZhbnRzLFxyXG4gICAgICBsb2NhdGlvbkNvZGU6IHRoaXMuX2xvY2F0aW9uQ29kZSxcclxuICAgICAgdGVybWluYWw6XHJcbiAgICAgICAgdGhpcy50ZW1wUGFyYW1zLnRlcm1pbmFsID09PSAnQW55JyA/IG51bGwgOiB0aGlzLnRlbXBQYXJhbXMudGVybWluYWwsXHJcbiAgICAgIGFycml2YWxEYXRldGltZTogdGhpcy50ZW1wUGFyYW1zLmFycml2YWxEYXRldGltZVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmhlbHBlcnMucmVtb3ZlTnVsbHM8U2VhcmNoTG91bmdlc1F1ZXJ5VmFyaWFibGVzPihxdWVyeSk7XHJcbiAgfVxyXG5cclxuICAvLyBQcml2YXRlIE1ldGhvZHNcclxuXHJcbiAgcHJpdmF0ZSBfaXNWYWxpZCgpIHtcclxuICAgIGlmICghdGhpcy5kb0NoZWNrcykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFNlc3Npb25JdGVtKFxyXG4gICAgICBMb3VuZ2VzRW50ZXJwcmlzZVNlYXJjaC5TVE9SQUdFX1NFU1NJT05fUEFSQU1TLFxyXG4gICAgICB7XHJcbiAgICAgICAgdGVtcFBhcmFtczogdGhpcy50ZW1wUGFyYW1zLFxyXG4gICAgICAgIHRyYXZlbGxlcnM6IHRoaXMudHJhdmVsbGVyc1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VzID0gW107XHJcbiAgICBpZiAoIXRoaXMuX2xvY2F0aW9uQ29kZSB8fCB0aGlzLl9sb2NhdGlvbkNvZGUgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VzLnB1c2goJ1lvdSBtdXN0IHNlbGVjdCBhaXJwb3J0IGZpcnN0LicpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmICghdGhpcy5xdWVyeS50ZXJtaW5hbCkge1xyXG4gICAgLy8gICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlcy5wdXNoKCdUZXJtaW5hbCBjYW4gbm90IGJlIGVtcHR5LicpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLnRlbXBQYXJhbXMuYXJyaXZhbERhdGV0aW1lLnVuaXgoKSA8IG1vbWVudCgpLnVuaXgoKSkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlcy5wdXNoKCdPdXR3YXJkIGpvdXJuZXkgY2Fubm90IGJlIGluIHRoZSBwYXN0LicpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNWYWxpZC5uZXh0KHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VzLmxlbmd0aCA9PT0gMCk7XHJcbiAgICB0aGlzLm1lc3NhZ2VzLm5leHQodGhpcy52YWxpZGF0aW9uTWVzc2FnZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlRGF0ZVRpbWUoKSB7XHJcbiAgICBpZiAodGhpcy5fZGF0ZSAmJiB0aGlzLl90aW1lKSB7XHJcbiAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLmhlbHBlcnMubmdEYXRlVG9Nb21lbnQodGhpcy5fZGF0ZSwgdGhpcy5fdGltZSk7XHJcbiAgICAgIHRoaXMudGVtcFBhcmFtcy5hcnJpdmFsRGF0ZXRpbWUgPSB0aW1lLmlzVmFsaWQoKSA/IHRpbWUgOiBudWxsO1xyXG4gICAgICB0aGlzLl9pc1ZhbGlkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGFydFNlYXJjaCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHRoaXMucmVzdWx0cy5uZXh0KFtdKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc1ZhbGlkLnZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5nZXRTZWFyY2hRdWVyeSgpO1xyXG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc2F2ZVJlY2VudFNlYXJjaCh0aGlzLmdldFJlY2VudFNlYXJjaFF1ZXJ5KHF1ZXJ5KSk7XHJcbiAgICAgIHJldHVybiB0aGlzLl9zdGFydFNlYXJjaChcclxuICAgICAgICB0aGlzLmxvdW5nZWZldGNoZXIuZmV0Y2hMaXN0KFxyXG4gICAgICAgICAgdGhpcy5oZWxwZXJzLnJlbW92ZU51bGxzPFNlYXJjaExvdW5nZXNRdWVyeVZhcmlhYmxlcz4ocXVlcnkpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRSZWNlbnRTZWFyY2hRdWVyeShcclxuICAgIHF1ZXJ5OiBTZWFyY2hMb3VuZ2VzUXVlcnlWYXJpYWJsZXNcclxuICApOiBTYXZlUmVjZW50U2VhcmNoTXV0YXRpb25WYXJpYWJsZXMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2VydmljZVR5cGU6IFNlcnZpY2VUeXBlLkxvdW5nZSxcclxuICAgICAgc2VhcmNoQXJnczogcXVlcnksXHJcbiAgICAgIHRyYXZlbERhdGU6IHRoaXMuYXJyaXZhbERhdGV0aW1lLmZvcm1hdCgpLFxyXG4gICAgICB0cmF2ZWxsZXJzOiB0aGlzLmhlbHBlcnMuZ2V0VHJhdmVsbGVyc0lkKHRoaXMudHJhdmVsbGVycylcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhcnRSZWNlbnRTZWFyY2gocmVjZW50U2VhcmNoOiBSZWNlbnRTZWFyY2gpOiB2b2lkIHtcclxuICAgIHRoaXMuYXJyaXZhbERhdGV0aW1lID0gbW9tZW50KHJlY2VudFNlYXJjaC5zZWFyY2hBcmdzLmFycml2YWxEYXRldGltZSk7XHJcbiAgICB0aGlzLnRlcm1pbmFsID0gcmVjZW50U2VhcmNoLnNlYXJjaEFyZ3MudGVybWluYWw7XHJcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2VcclxuICAgICAgLmdldEFpcnBvcnRCeUNvZGUocmVjZW50U2VhcmNoLnNlYXJjaEFyZ3MubG9jYXRpb25Db2RlKVxyXG4gICAgICAuc3Vic2NyaWJlKChhaXJwb3J0OiBBaXJwb3J0UmVzdWx0cykgPT4ge1xyXG4gICAgICAgIGlmIChhaXJwb3J0KSB7XHJcbiAgICAgICAgICB0aGlzLmxvY2F0aW9uQ29kZSA9IHtcclxuICAgICAgICAgICAgY291bnRyeTogYWlycG9ydC5pYXRhTWF0Y2g/LmxvY2F0aW9uRGV0YWlscz8uY291bnRyeSxcclxuICAgICAgICAgICAgY291bnRyeUNvZGU6IGFpcnBvcnQuaWF0YU1hdGNoPy5sb2NhdGlvbkRldGFpbHM/LmNvdW50cnlDb2RlLFxyXG4gICAgICAgICAgICBkZXN0aW5hdGlvbjogYWlycG9ydC5pYXRhTWF0Y2gubmFtZSxcclxuICAgICAgICAgICAgZ2F0ZXdheTogYWlycG9ydC5pYXRhTWF0Y2guaWF0YSxcclxuICAgICAgICAgICAgcG9zdGNvZGU6IGFpcnBvcnQuaWF0YU1hdGNoPy5sb2NhdGlvbkRldGFpbHM/LnBvc3Rjb2RlLFxyXG4gICAgICAgICAgICB0ZXJtaW5hbHM6IHRoaXMuc2VhcmNoU2VydmljZS5wcm9jZXNzVGVybWluYWxzKFxyXG4gICAgICAgICAgICAgIGFpcnBvcnQuaWF0YU1hdGNoLnRlcm1pbmFsc1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy50ZXJtaW5hbCA9IHJlY2VudFNlYXJjaC5zZWFyY2hBcmdzLnRlcm1pbmFsO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnN0YXJ0U2VhcmNoZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnN0YXJ0U2VhcmNoZXMoKTtcclxuICB9XHJcblxyXG4gIHNvcnRCeVByaWNlKGFzYz86IGJvb2xlYW4sIHJlc3VsdEFycmF5OiBMb3VuZ2VRdW90ZVtdID0gW10pIHtcclxuICAgIGxldCBzb3J0UmVzdWx0cyA9IFsuLi50aGlzLmZ1bGxSZXN1bHRzXSBhcyBMb3VuZ2VRdW90ZVtdO1xyXG4gICAgaWYgKCFzb3J0UmVzdWx0cy5sZW5ndGgpIHtcclxuICAgICAgc29ydFJlc3VsdHMgPSByZXN1bHRBcnJheTtcclxuICAgIH1cclxuICAgIHNvcnRSZXN1bHRzID0gdGhpcy5zb3J0UmVzdWx0c1ByaWNlKHNvcnRSZXN1bHRzLCBhc2MpO1xyXG4gICAgdGhpcy5yZXN1bHRzLm5leHQoc29ydFJlc3VsdHMpO1xyXG4gIH1cclxuXHJcbiAgc29ydFJlc3VsdHNQcmljZShyZXN1bHRBcnJheTogTG91bmdlUXVvdGVbXSwgYXNjPzogYm9vbGVhbik6IExvdW5nZVF1b3RlW10ge1xyXG4gICAgbGV0IHJlc3VsdHMgPSBbLi4ucmVzdWx0QXJyYXldO1xyXG4gICAgaWYgKGFzYykge1xyXG4gICAgICByZXN1bHRzID0gcmVzdWx0cy5zb3J0KFxyXG4gICAgICAgIChhOiBMb3VuZ2VRdW90ZVJlc3VsdCwgYjogTG91bmdlUXVvdGVSZXN1bHQpID0+IGIucHJpY2UgLSBhLnByaWNlXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXN1bHRzID0gcmVzdWx0cy5zb3J0KFxyXG4gICAgICAgIChhOiBMb3VuZ2VRdW90ZVJlc3VsdCwgYjogTG91bmdlUXVvdGVSZXN1bHQpID0+IGEucHJpY2UgLSBiLnByaWNlXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIHNvcnRCeVRlcm1pbmFsKHJlc3VsdEFycmF5OiBMb3VuZ2VRdW90ZVtdID0gW10pIHtcclxuICAgIGxldCByZXN1bHRzID0gWy4uLnRoaXMuZnVsbFJlc3VsdHNdO1xyXG4gICAgaWYgKCFyZXN1bHRzLmxlbmd0aCkge1xyXG4gICAgICByZXN1bHRzID0gcmVzdWx0QXJyYXk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0ZXJtaW5hbFNvcnRlciA9IChhOiBMb3VuZ2VRdW90ZVJlc3VsdCwgYjogTG91bmdlUXVvdGVSZXN1bHQpID0+IHtcclxuICAgICAgcmV0dXJuIC0xOyAvLyBUT0RPIGEucmF3RGF0YS5GbGlnaHRUZXJtT3V0ID4gYi5yYXdEYXRhLkZsaWdodFRlcm1PdXQgPyAxIDogLTE7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5yZXN1bHRzLm5leHQocmVzdWx0cy5zb3J0KHRlcm1pbmFsU29ydGVyKSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGcm9tUHJldmlvdXNTZWFyY2hlcyhcclxuICAgIHByZXZpb3VzSXRlbXM6IFJlY29yZDxTZXJ2aWNlVHlwZSwgQmFza2V0SXRlbT5cclxuICApOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCdQUkVQT1BVTEFUSU5HIExPVU5HRSBGT1JNJyk7XHJcbiAgICBjb25zdCBmbGlnaHRJdGVtOiBTZWFyY2hGbGlnaHRzVjJRdWVyeVZhcmlhYmxlcyA9XHJcbiAgICAgIHByZXZpb3VzSXRlbXNbU2VydmljZVR5cGUuRmxpZ2h0XT8uc2VhcmNoUXVlcnk7XHJcbiAgICBpZiAoZmxpZ2h0SXRlbSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCBkYXRlID1cclxuICAgICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hlc1tTZXJ2aWNlVHlwZS5GbGlnaHRdLm91dEJvdW5kRGF0ZS50b0RhdGUoKTtcclxuICAgICAgICB0aGlzLmRhdGUgPSB7XHJcbiAgICAgICAgICBkYXk6IGRhdGUuZ2V0VVRDRGF0ZSgpLFxyXG4gICAgICAgICAgbW9udGg6IGRhdGUuZ2V0VVRDTW9udGgoKSArIDEsXHJcbiAgICAgICAgICB5ZWFyOiBkYXRlLmdldFVUQ0Z1bGxZZWFyKClcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMubG9jYXRpb25Db2RlID0gdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaGVzW1NlcnZpY2VUeXBlLkZsaWdodF1cclxuICAgICAgICAgIC5hcnJpdmVMb2NhdGlvbiBhcyBPQlRBaXJwb3J0RGV0YWlscztcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgdHJ5aW5nIHRvIHByZXBvcHVsYXRlIHBhcmtpbmcgZnJvbSBsb3VuZ2UgaXRlbScpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZWFyY2hGcm9tRXhwaXJlZEJhc2tldEl0ZW0oYmFza2V0SXRlbTogQmFza2V0SXRlbSk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VhcmNoTG91bmdlc1F1ZXJ5OiBTZWFyY2hMb3VuZ2VzUXVlcnlWYXJpYWJsZXMgPVxyXG4gICAgICBiYXNrZXRJdGVtLnNlYXJjaFF1ZXJ5O1xyXG4gICAgaWYgKHNlYXJjaExvdW5nZXNRdWVyeSkge1xyXG4gICAgICB0aGlzLmFycml2YWxEYXRldGltZSA9IG1vbWVudChzZWFyY2hMb3VuZ2VzUXVlcnkuYXJyaXZhbERhdGV0aW1lKTtcclxuXHJcbiAgICAgIHRoaXMudGVybWluYWwgPSBzZWFyY2hMb3VuZ2VzUXVlcnkudGVybWluYWw7XHJcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZVxyXG4gICAgICAgIC5nZXRBaXJwb3J0QnlDb2RlKHNlYXJjaExvdW5nZXNRdWVyeS5sb2NhdGlvbkNvZGUpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoYWlycG9ydDogQWlycG9ydFJlc3VsdHMpID0+IHtcclxuICAgICAgICAgIGlmIChhaXJwb3J0KSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb25Db2RlID0ge1xyXG4gICAgICAgICAgICAgIGNvdW50cnk6IGFpcnBvcnQuaWF0YU1hdGNoPy5sb2NhdGlvbkRldGFpbHM/LmNvdW50cnksXHJcbiAgICAgICAgICAgICAgY291bnRyeUNvZGU6IGFpcnBvcnQuaWF0YU1hdGNoPy5sb2NhdGlvbkRldGFpbHM/LmNvdW50cnlDb2RlLFxyXG4gICAgICAgICAgICAgIGRlc3RpbmF0aW9uOiBhaXJwb3J0LmlhdGFNYXRjaC5uYW1lLFxyXG4gICAgICAgICAgICAgIGdhdGV3YXk6IGFpcnBvcnQuaWF0YU1hdGNoLmlhdGEsXHJcbiAgICAgICAgICAgICAgcG9zdGNvZGU6IGFpcnBvcnQuaWF0YU1hdGNoPy5sb2NhdGlvbkRldGFpbHM/LnBvc3Rjb2RlLFxyXG4gICAgICAgICAgICAgIHRlcm1pbmFsczogdGhpcy5zZWFyY2hTZXJ2aWNlLnByb2Nlc3NUZXJtaW5hbHMoXHJcbiAgICAgICAgICAgICAgICBhaXJwb3J0LmlhdGFNYXRjaC50ZXJtaW5hbHNcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYWRkIFRyYXZlbGxlcnNcclxuICAgIGlmIChiYXNrZXRJdGVtLnVzZXJzKSB7XHJcbiAgICAgIGJhc2tldEl0ZW0udXNlcnMuZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmFkZFRyYXZlbGxlcih1c2VyKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhZGRMb3VuZ2VUb0Jhc2tldChcclxuICAgIGxvdW5nZVF1b3RlOiBMb3VuZ2VRdW90ZSxcclxuICAgIGxvdW5nZVF1ZXJ5OiBTZWFyY2hMb3VuZ2VzUXVlcnlWYXJpYWJsZXNcclxuICApOiBQcm9taXNlPERpZmZlcmVudEludm9rZGVkVXNlclJlYXNvbnM+IHtcclxuICAgIGlmIChsb3VuZ2VRdW90ZS51bmF2YWlsYWJsZSkge1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKERpZmZlcmVudEludm9rZGVkVXNlclJlYXNvbnMuY2FuY2VsKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGludEJhc2tldDogSW50ZXJuYWxCYXNrZXRJbnRlcmZhY2UgPVxyXG4gICAgICBhd2FpdCB0aGlzLmJhc2tldFNlcnZpY2UuZ2V0RGVmYXVsdEJhc2tldCgpO1xyXG4gICAgY29uc3QgYmFza2V0ID0gaW50QmFza2V0Py5zdWJqZWN0LnZhbHVlO1xyXG4gICAgY29uc3QgdGVybXNBbmRDb25kaXRpb25zID0gdGhpcy5nZXRUZXJtc0FuZENvbmQobG91bmdlUXVvdGUpO1xyXG4gICAgaWYgKGJhc2tldCkge1xyXG4gICAgICBjb25zdCB3aGF0SGFwcGVuZWQgPSBhd2FpdCB0aGlzLmJhc2tldFNlcnZpY2UuYWRkVG9CYXNrZXQoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgYWR1bHRzOiBsb3VuZ2VRdWVyeS5hZHVsdHMsXHJcbiAgICAgICAgICBjaGlsZHJlbjogbG91bmdlUXVlcnkuY2hpbGRyZW4sXHJcbiAgICAgICAgICBpbmZhbnRzOiBsb3VuZ2VRdWVyeS5pbmZhbnRzLFxyXG4gICAgICAgICAgYmFza2V0OiBiYXNrZXQuaWQsXHJcbiAgICAgICAgICBzZXJ2aWNlOiBsb3VuZ2VRdW90ZS5zb3VyY2VJZC50b1N0cmluZygpLFxyXG4gICAgICAgICAgZGV0YWlsOiB7XHJcbiAgICAgICAgICAgIGFycml2YWxEYXRldGltZTogbG91bmdlUXVlcnkuYXJyaXZhbERhdGV0aW1lLmZvcm1hdCgpLFxyXG4gICAgICAgICAgICBsb2NhdGlvbkNvZGU6IGxvdW5nZVF1b3RlLmNvZGUsXHJcbiAgICAgICAgICAgIG5hbWU6IGxvdW5nZVF1b3RlLm5hbWUsXHJcbiAgICAgICAgICAgIGFpcnBvcnRJYXRhOiBsb3VuZ2VRdWVyeT8ubG9jYXRpb25Db2RlLFxyXG4gICAgICAgICAgICBsb2dvOiBsb3VuZ2VRdW90ZS5sb3VuZ2UubG9nbyxcclxuICAgICAgICAgICAgaW50cm9kdWN0aW9uOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuaW50cm9kdWN0aW9uLFxyXG4gICAgICAgICAgICBjb3ZpZENvcHk6IGxvdW5nZVF1b3RlLmxvdW5nZS5taXNjLmNvdmlkQ29weSxcclxuICAgICAgICAgICAgY2FuY2VsbGF0aW9uSW5mbzogbG91bmdlUXVvdGUubG91bmdlLmNhbmNlbGxhdGlvbkluZm8sXHJcbiAgICAgICAgICAgIGFkbWVuZG1lbnRzSW5mbzogbG91bmdlUXVvdGUubG91bmdlLmFtZW5kbWVudHNJbmZvLFxyXG4gICAgICAgICAgICBjaGVja0luSW5mbzogbG91bmdlUXVvdGUubG91bmdlLmNoZWNrSW5JbmZvLFxyXG4gICAgICAgICAgICBkcmVzc0NvZGU6IGxvdW5nZVF1b3RlLmxvdW5nZS5kcmVzc0NvZGUsXHJcbiAgICAgICAgICAgIGZvb2RBbmRCZXZlcmFnZTogbG91bmdlUXVvdGUubG91bmdlLmZvb2RBbmRCZXZlcmFnZSxcclxuICAgICAgICAgICAgd2hhdHNJbmNsdWRlZEZvb2Q6IGxvdW5nZVF1b3RlLmxvdW5nZS53aGF0c0luY2x1ZGVkRm9vZCxcclxuICAgICAgICAgICAgd2hhdHNJbmNsdWRlZERyaW5rczogbG91bmdlUXVvdGUubG91bmdlLndoYXRzSW5jbHVkZWREcmlua3MsXHJcbiAgICAgICAgICAgIHdoYXRzSW5jbHVkZWRFeHRyYXM6IGxvdW5nZVF1b3RlLmxvdW5nZS53aGF0c0luY2x1ZGVkRXh0cmFzLFxyXG4gICAgICAgICAgICBncm91cEluZm86IGxvdW5nZVF1b3RlLmxvdW5nZS5ncm91cEluZm8sXHJcbiAgICAgICAgICAgIHRlcm1pbmFsOiBsb3VuZ2VRdW90ZS5sb3VuZ2UudGVybWluYWw/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHRlcm1zQW5kQ29uZDogdGVybXNBbmRDb25kaXRpb25zXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgcHJpY2U6IGxvdW5nZVF1b3RlLnByaWNlLFxyXG4gICAgICAgICAgY3VycmVuY3k6IGxvdW5nZVF1b3RlLmN1cnJlbmN5LFxyXG4gICAgICAgICAgc2VhcmNoUXVlcnk6IGxvdW5nZVF1ZXJ5LFxyXG4gICAgICAgICAgb3V0Ym91bmREYXRlOiBsb3VuZ2VRdWVyeS5hcnJpdmFsRGF0ZXRpbWUuZm9ybWF0KClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGludEJhc2tldCxcclxuICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2UsXHJcbiAgICAgICAgdGhpcy50cmF2ZWxsZXJzLFxyXG4gICAgICAgIGxvdW5nZVF1b3RlLnJlcXVpcmVzUmVhc29uXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAod2hhdEhhcHBlbmVkID09PSBEaWZmZXJlbnRJbnZva2RlZFVzZXJSZWFzb25zLnJlc2VhcmNoKSB7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtU2VhcmNoKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHdoYXRIYXBwZW5lZDtcclxuICAgIH1cclxuICAgIHJldHVybiBEaWZmZXJlbnRJbnZva2RlZFVzZXJSZWFzb25zLmNhbmNlbDsgLy8gVE9ETyBzaG91bGQgdGhpcyB0aHJvdyBhbiBlcnJvcj9cclxuICB9XHJcblxyXG4gIGdldFRlcm1zQW5kQ29uZChsb3VuZ2VRdW90ZTogTG91bmdlUXVvdGUpIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnTmFtZScsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5uYW1lXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnVGVsZXBob25lJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLnRlbGVwaG9uZVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0ltcG9ydGFudCBJbmZvcm1hdGlvbicsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5taXNjLmltcG9ydGFudEluZm9ybWF0aW9uXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnSW50cm9kdWN0aW9uJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLmludHJvZHVjdGlvblxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0RyZXNzIENvZGUnLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuZHJlc3NDb2RlXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnQnVzaW5lc3MgRmFjaWxpdGllcycsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5taXNjLmJ1c2luZXNzZmFjaWxpdGllc1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0VudGVydGFpbm1lbnQgRmFjaWxpdGllcycsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5taXNjLmVudGVydGFpbm1lbnRGYWNpbGl0aWVzXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnRGlzYWJsZWQgRmFjaWxpdGllcycsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5taXNjLmZhY2lsaXRpZXNkaXNhYmxlZFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0ZhY2lsaXRpZXMnLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuZmFjaWxpdGllcy50b1N0cmluZygpXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnVGltZXMnLFxyXG4gICAgICAgIHZhbHVlOiBgT3BlbnMgJHtsb3VuZ2VRdW90ZS5sb3VuZ2Uub3BlblRpbWV9OyBDbG9zZXMgJHtsb3VuZ2VRdW90ZS5sb3VuZ2UuY2xvc2VUaW1lfWBcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdEaXJlY3Rpb25zJyxcclxuICAgICAgICB2YWx1ZTogbG91bmdlUXVvdGUubG91bmdlLmRpcmVjdGlvbnNcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdHcm91cHMnLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuZ3JvdXBJbmZvXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnQ2hlY2stSW4gVGltZScsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5jaGVja0luSW5mb1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0FtZW5kIEluZm8nLFxyXG4gICAgICAgIHZhbHVlOiBsb3VuZ2VRdW90ZS5sb3VuZ2UuYW1lbmRtZW50c0luZm9cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdDYW5jZWwgSW5mbycsXHJcbiAgICAgICAgdmFsdWU6IGxvdW5nZVF1b3RlLmxvdW5nZS5jYW5jZWxsYXRpb25JbmZvXHJcbiAgICAgIH1cclxuICAgIF07XHJcbiAgfVxyXG5cclxuICB1cGRhdGVMb3dlc3RQcmljZShyZXN1bHRzOiBMb3VuZ2VRdW90ZVtdKTogSUNoZWFwZXN0UHJpY2Uge1xyXG4gICAgaWYgKCFyZXN1bHRzLmxlbmd0aCkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCBjdXJyZW5jeSA9IHJlc3VsdHNbMF0uY3VycmVuY3k7XHJcbiAgICByZXR1cm4gcmVzdWx0cy5yZWR1Y2UoXHJcbiAgICAgIChjaGVhcGVzdFByaWNlOiBJQ2hlYXBlc3RQcmljZSwgcmVzdWx0OiBMb3VuZ2VRdW90ZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHByaWNlID0gcmVzdWx0LnByaWNlO1xyXG4gICAgICAgIGlmIChjaGVhcGVzdFByaWNlLmFtb3VudCA+IHByaWNlKSBjaGVhcGVzdFByaWNlLmFtb3VudCA9IHByaWNlO1xyXG4gICAgICAgIHJldHVybiBjaGVhcGVzdFByaWNlO1xyXG4gICAgICB9LFxyXG4gICAgICB7IGFtb3VudDogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsIGN1cnJlbmN5Q29kZTogY3VycmVuY3kgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNhdmVTZWFyY2goKTogT2JzZXJ2YWJsZTxTYXZlRmF2b3VyaXRlU2VhcmNoUmVzdWx0PiB7XHJcbiAgICBpZiAodGhpcy5pc1ZhbGlkLnZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuZ2V0U2VhcmNoUXVlcnkoKTtcclxuICAgICAgY29uc3Qgc2VhcmNoSW5mbyA9IHtcclxuICAgICAgICBuYW1lOiBgJHttb21lbnQoKX1gLFxyXG4gICAgICAgIHNlcnZpY2VUeXBlOiBTZXJ2aWNlVHlwZS5Mb3VuZ2UsXHJcbiAgICAgICAgc2VhcmNoQXJnczogc2VhcmNoXHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiB0aGlzLnNlYXJjaFNlcnZpY2Uuc2F2ZUZhdm91cml0ZVNlYXJjaChzZWFyY2hJbmZvKTtcclxuICAgIH1cclxuICB9XHJcbiAgYXN5bmMgYXBwbHlGYXZvdXJpdGUoZmF2OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2VhcmNoU2VydmljZS5nZXRBaXJwb3J0c0xpc3QoZmF2LmxvY2F0aW9uQ29kZSkuc3Vic2NyaWJlKChhKSA9PiB7XHJcbiAgICAgIHRoaXMubG9jYXRpb25Db2RlID0gKGEgYXMgYW55W10pLmZpbmQoXHJcbiAgICAgICAgKGEpID0+IGEuZ2F0ZXdheSA9PSBmYXYubG9jYXRpb25Db2RlXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMudGVybWluYWwgPSBmYXYudGVybWluYWw7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuYWR1bHRzID0gZmF2LmFkdWx0cztcclxuICAgIHRoaXMuY2hpbGRyZW4gPSBmYXYuY2hpbGRyZW47XHJcbiAgICB0aGlzLmluZmFudHMgPSBmYXYuaW5mYW50cztcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -63,8 +63,8 @@ class FreeTextManagementInfo extends ManagementInfoAndIsValid {
|
|
|
63
63
|
}
|
|
64
64
|
];
|
|
65
65
|
}
|
|
66
|
-
save(basketid, userId) {
|
|
67
|
-
this.basketService.setMiFreeValue(basketid, this, this.selectedValues[0] ? this.selectedValues[0].freeValue : '', userId);
|
|
66
|
+
save(basketid, userId, guest) {
|
|
67
|
+
this.basketService.setMiFreeValue(basketid, this, this.selectedValues[0] ? this.selectedValues[0].freeValue : '', userId, guest);
|
|
68
68
|
}
|
|
69
69
|
hasErrors(value) {
|
|
70
70
|
return new Promise((resolve, reject) => {
|
|
@@ -109,15 +109,18 @@ class AutoSugestManagementInfo extends ManagementInfoAndIsValid {
|
|
|
109
109
|
if (((_a = this.values) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
110
110
|
this.avaliableItems = this.values;
|
|
111
111
|
}
|
|
112
|
+
else {
|
|
113
|
+
console.error('No values for AutoSugest field');
|
|
114
|
+
}
|
|
112
115
|
}
|
|
113
116
|
getValue() {
|
|
114
117
|
return this.selectedValues[0] ? this.selectedValues[0].value.id : '__NONE';
|
|
115
118
|
}
|
|
116
|
-
hasErrors(
|
|
119
|
+
hasErrors(value) {
|
|
117
120
|
return __awaiter(this, void 0, void 0, function* () {
|
|
118
121
|
try {
|
|
119
122
|
return !this.avaliableItems.find((value1) => {
|
|
120
|
-
return value1.id === id;
|
|
123
|
+
return value1.id === value.id;
|
|
121
124
|
})
|
|
122
125
|
? { hasErrors: true }
|
|
123
126
|
: null;
|
|
@@ -156,8 +159,9 @@ class AutoSugestManagementInfo extends ManagementInfoAndIsValid {
|
|
|
156
159
|
this.selectedValues = [];
|
|
157
160
|
}
|
|
158
161
|
}
|
|
159
|
-
save(basketid, userid) {
|
|
160
|
-
|
|
162
|
+
save(basketid, userid, guest) {
|
|
163
|
+
var _a, _b;
|
|
164
|
+
this.basketService.setMiSelectedValue(basketid, this, this.selectedValues[0] ? (_b = (_a = this.selectedValues[0]) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.id : '', userid, guest);
|
|
161
165
|
}
|
|
162
166
|
}
|
|
163
167
|
class HiddenManagementInfo extends ManagementInfoAndIsValid {
|
|
@@ -227,8 +231,8 @@ class DropdownManagementInfo extends ManagementInfoAndIsValid {
|
|
|
227
231
|
this.selectedValues = [];
|
|
228
232
|
}
|
|
229
233
|
}
|
|
230
|
-
save(basketid, userid) {
|
|
231
|
-
this.basketService.setMiSelectedValue(basketid, this, this.selectedValues[0].value.id, userid);
|
|
234
|
+
save(basketid, userid, guest) {
|
|
235
|
+
this.basketService.setMiSelectedValue(basketid, this, this.selectedValues[0].value.id || '', userid, guest);
|
|
232
236
|
}
|
|
233
237
|
}
|
|
234
238
|
export const makeManagamentInfo = (managementInfo, basketService) => {
|
|
@@ -247,4 +251,4 @@ export const makeManagamentInfo = (managementInfo, basketService) => {
|
|
|
247
251
|
}
|
|
248
252
|
return null;
|
|
249
253
|
};
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlbWVudC1pbmZvLWFuZC12YWxpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29idHNlcnZpY2VzL2Jhc2Uvc3JjL2xpYi92ZW5kb3IvY2xhc3Nlcy9tYW5hZ2VtZW50LWluZm8tYW5kLXZhbGlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQ0wsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixTQUFTLEVBQ1QsR0FBRyxFQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQVNMLGNBQWMsRUFDZixNQUFNLHdCQUF3QixDQUFDO0FBR2hDLE1BQU0sT0FBZ0Isd0JBQ3BCLFNBQVEsZ0JBQWdCO0lBaUR4QixZQUFzQixjQUE4QjtRQUNsRCxLQUFLLEVBQUUsQ0FBQztRQXhCVixjQUFjO1FBQ2QsY0FBUyxHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQWlEMUUsV0FBTSxHQUFHLENBQUMsS0FBeUIsRUFBdUMsRUFBRTtZQUMxRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUM7UUEzQkEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQywwQ0FBMEM7SUFDakYsQ0FBQztJQXRCRCxJQUFJLGNBQWM7UUFHaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLGNBQWMsQ0FBQyxNQUFxQztRQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUNELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxHQUFXO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQWFELE9BQU87UUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsT0FBTyxDQUNMLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztnQkFDOUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRTtnQkFDckIsQ0FBQyxDQUFDLElBQUksQ0FDVCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBU0Y7QUFFRCxNQUFNLHNCQUF1QixTQUFRLHdCQUF3QjtJQUUzRCxZQUNFLGNBQThCLEVBQ3RCLGFBQStDOztRQUV2RCxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFGZCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0M7UUFHdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYztZQUNsQyxDQUFDLENBQUMsT0FBQSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQywwQ0FBRSxTQUFTLEtBQUksRUFBRTtZQUN6QyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQUNELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELFFBQVEsQ0FBQyxHQUFXO1FBQ2xCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxHQUFHLEVBQUU7WUFDMUIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFFckIsSUFBSSxDQUFDLGNBQWMsR0FBRztZQUNwQjtnQkFDRSxTQUFTLEVBQUUsR0FBRztnQkFDZCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDakMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZO2FBQ2xDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUMsUUFBZ0IsRUFBRSxNQUFlO1FBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUMvQixRQUFRLEVBQ1IsSUFBSSxFQUNKLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQzlELE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDcEQsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDOUI7WUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDN0IsT0FBTyxJQUFJLENBQUMsYUFBYTtxQkFDdEIsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztxQkFDL0IsSUFBSSxDQUFDLENBQUMsTUFBZSxFQUFFLEVBQUU7b0JBQ3hCLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLENBQUM7YUFDTjtpQkFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDakMsT0FBTyxDQUNMLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQXdCLEVBQUUsRUFBRTtvQkFDOUMsT0FBTyxHQUFHLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQztnQkFDN0IsQ0FBQyxDQUFDO29CQUNBLENBQUMsQ0FBQyxJQUFJO29CQUNOLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FDeEIsQ0FBQzthQUNIO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDakM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELE1BQU0sd0JBQXlCLFNBQVEsd0JBQXdCO0lBQzdELFlBQ0UsY0FBOEIsRUFDdEIsYUFBK0M7O1FBRXZELEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUZkLGtCQUFhLEdBQWIsYUFBYSxDQUFrQztRQXFEekQsV0FBTSxHQUFHLENBQUMsS0FBeUIsRUFBdUMsRUFBRTtZQUMxRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQ2YsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixvQkFBb0IsRUFBRSxFQUN0QixTQUFTLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRTtnQkFDekIsTUFBTSxFQUFFLEdBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDO29CQUNiLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUNwQyxJQUFJLENBQUMsRUFBRSxFQUNQLElBQUksRUFDSixJQUFJLENBQUMsU0FBUyxDQUNmO29CQUNILENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUU5QixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLFVBQW1DLEVBQUUsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQztRQXRFQSxJQUFJLE9BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsTUFBTSxJQUFHLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBQ0QsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDN0UsQ0FBQztJQUVLLFNBQVMsQ0FBQyxFQUFVOztZQUN4QixJQUFJO2dCQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQTJCLEVBQUUsRUFBRTtvQkFDL0QsT0FBTyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDMUIsQ0FBQyxDQUFDO29CQUNBLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUU7b0JBQ3JCLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDVjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLE9BQU8sSUFBSSxDQUFDO2FBQ2I7UUFDSCxDQUFDO0tBQUE7SUFFRCxRQUFRLENBQUMsRUFBVTtRQUNqQixJQUFJO1lBQ0YsTUFBTSxLQUFLLEdBQXdCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUN6RCxDQUFDLE1BQTJCLEVBQUUsRUFBRTtnQkFDOUIsT0FBTyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUMxQixDQUFDLENBQ0YsQ0FBQztZQUNGLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDWCxJQUFJLENBQUMsY0FBYyxHQUFHO29CQUNwQjt3QkFDRSxLQUFLLEVBQUU7NEJBQ0wsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFOzRCQUNaLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSzs0QkFDbEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLOzRCQUNsQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87NEJBQ3RCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSzs0QkFDbEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO3lCQUMzQjt3QkFDRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsVUFBVTt3QkFDakMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZO3FCQUNsQztpQkFDRixDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7YUFDMUI7U0FDRjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBd0JELElBQUksQ0FBQyxRQUFnQixFQUFFLE1BQWU7UUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FDbkMsUUFBUSxFQUNSLElBQUksRUFDSixJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQy9CLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQsTUFBTSxvQkFBcUIsU0FBUSx3QkFBd0I7SUFDekQsWUFBWSxjQUE4QjtRQUN4QyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUNELFFBQVE7UUFDTixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxRQUFRLENBQUMsR0FBVyxJQUFTLENBQUM7SUFFOUIsSUFBSSxDQUFDLFFBQWdCLEVBQUUsTUFBZSxJQUFHLENBQUM7Q0FDM0M7QUFFRCxNQUFNLHNCQUF1QixTQUFRLHdCQUF3QjtJQUMzRCxZQUNFLGNBQThCLEVBQ3RCLGFBQStDOztRQUV2RCxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFGZCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0M7UUFHdkQsSUFBSSxPQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLE1BQU0sSUFBRyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ25DO2FBQU07WUFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7U0FDcEQ7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRTtZQUNwRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0lBQ0QsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDN0UsQ0FBQztJQUVLLFNBQVMsQ0FBQyxFQUFVOztZQUN4QixJQUFJO2dCQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQTJCLEVBQUUsRUFBRTtvQkFDL0QsT0FBTyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDMUIsQ0FBQyxDQUFDO29CQUNBLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUU7b0JBQ3JCLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDVjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLE9BQU8sSUFBSSxDQUFDO2FBQ2I7UUFDSCxDQUFDO0tBQUE7SUFFRCxRQUFRLENBQUMsRUFBVTtRQUNqQixNQUFNLEtBQUssR0FBd0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3pELENBQUMsTUFBMkIsRUFBRSxFQUFFO1lBQzlCLE9BQU8sTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDWCxJQUFJLENBQUMsY0FBYyxHQUFHO2dCQUNwQjtvQkFDRSxLQUFLLEVBQUU7d0JBQ0wsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO3dCQUNaLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSzt3QkFDbEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO3dCQUNsQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87d0JBQ3RCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSzt3QkFDbEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO3FCQUMzQjtvQkFDRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsVUFBVTtvQkFDakMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZO2lCQUNsQzthQUNGLENBQUM7U0FDSDthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQWdCLEVBQUUsTUFBZTtRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUNuQyxRQUFRLEVBQ1IsSUFBSSxFQUNKLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFDL0IsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUNoQyxjQUE4QixFQUM5QixhQUErQyxFQUNyQixFQUFFO0lBQzVCLFFBQVEsY0FBYyxDQUFDLGNBQWMsRUFBRTtRQUNyQyxLQUFLLGNBQWMsQ0FBQyxRQUFRO1lBQzFCLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDbkUsS0FBSyxjQUFjLENBQUMsV0FBVztZQUM3QixPQUFPLElBQUksd0JBQXdCLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3JFLEtBQUssY0FBYyxDQUFDLE1BQU07WUFDeEIsT0FBTyxJQUFJLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELEtBQUssY0FBYyxDQUFDLFFBQVE7WUFDMUIsT0FBTyxJQUFJLHNCQUFzQixDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNuRTtZQUNFLE1BQU0sR0FBRyxHQUFVLGNBQWMsQ0FBQyxjQUFjLENBQUM7WUFDakQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNwQjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIGRlYm91bmNlVGltZSxcclxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcclxuICBzd2l0Y2hNYXAsXHJcbiAgdGFwXHJcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JDaGVja2VyIH0gZnJvbSAnLi4vY2xhc3Nlcy92YWxpZGF0b3IuY2hlY2tlcic7XHJcbmltcG9ydCB7IEVudGVycHJpc2VCYXNrZXRTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JZW50ZXJwcmlzZS1iYXNrZXQuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQm9va2VkQnlGaWVsZCxcclxuICBGaWVsZFdyYXBwZXIsXHJcbiAgTWFuYWdlbWVudEluZm8sXHJcbiAgTWFuYWdlbWVudEluZm9WYWx1ZSxcclxuICBNYXliZSxcclxuICBTY2FsYXJzLFxyXG4gIFNlbGVjdGVkTWFuYWdlbWVudEluZm9WYWx1ZSxcclxuICBTZXJ2aWNlLFxyXG4gIFVpUHJlc2VudGF0aW9uXHJcbn0gZnJvbSAnLi4vdHlwZXMvZ3JhcGhxbC50eXBlcyc7XHJcbmltcG9ydCB7IEdldE1pQXV0b1N1Z2VzdGlvbkFycmF5LCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1hbmFnZW1lbnRJbmZvQW5kSXNWYWxpZFxyXG4gIGV4dGVuZHMgVmFsaWRhdG9yQ2hlY2tlclxyXG4gIGltcGxlbWVudHMgTWFuYWdlbWVudEluZm9cclxue1xyXG4gIC8vIE1hbmFnZW1lbnRJbmZvIGludGVyZmFjZVxyXG4gIGFnZW50T25seTogRmllbGRXcmFwcGVyPFNjYWxhcnNbJ0Jvb2xlYW4nXT47XHJcbiAgY3JlYXRlZEF0OiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snRGF0ZVRpbWUnXT47XHJcbiAgZGJJZDogRmllbGRXcmFwcGVyPFNjYWxhcnNbJ0ludCddPjtcclxuICBkZWZhdWx0VmFsdWU/OiBNYXliZTxGaWVsZFdyYXBwZXI8TWFuYWdlbWVudEluZm9WYWx1ZT4+O1xyXG4gIGRlc2NyaXB0aW9uPzogTWF5YmU8RmllbGRXcmFwcGVyPFNjYWxhcnNbJ1N0cmluZyddPj47XHJcbiAgZml4ZWQ6IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydCb29sZWFuJ10+O1xyXG4gIGZpeGVkVmFsdWU/OiBNYXliZTxGaWVsZFdyYXBwZXI8TWFuYWdlbWVudEluZm9WYWx1ZT4+O1xyXG4gIGdyb3VwPzogTWF5YmU8QXJyYXk8TWF5YmU8RmllbGRXcmFwcGVyPFNjYWxhcnNbJ1N0cmluZyddPj4+PjtcclxuICBoYW5kb2ZmOiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snU3RyaW5nJ10+O1xyXG4gIGlkOiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snSUQnXT47XHJcbiAgbWFuZGF0b3J5OiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snQm9vbGVhbiddPjtcclxuICBuYW1lOiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snU3RyaW5nJ10+O1xyXG4gIHBlckJvb2tpbmc6IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydCb29sZWFuJ10+O1xyXG4gIHBlclBhc3NlbmdlcjogRmllbGRXcmFwcGVyPFNjYWxhcnNbJ0Jvb2xlYW4nXT47XHJcbiAgX3NlbGVjdGVkVmFsdWVzOiBBcnJheTxNYXliZTxGaWVsZFdyYXBwZXI8U2VsZWN0ZWRNYW5hZ2VtZW50SW5mb1ZhbHVlPj4+O1xyXG4gIHNlcnZpY2U6IEZpZWxkV3JhcHBlcjxTZXJ2aWNlPjtcclxuICB1aVByZXNlbnRhdGlvbjogRmllbGRXcmFwcGVyPFVpUHJlc2VudGF0aW9uPjtcclxuICB1cGRhdGVkQXQ6IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydEYXRlVGltZSddPjtcclxuICB2YWx1ZU1hc2s/OiBNYXliZTxGaWVsZFdyYXBwZXI8U2NhbGFyc1snU3RyaW5nJ10+PjtcclxuICB2YWx1ZXM6IEFycmF5PE1heWJlPEZpZWxkV3JhcHBlcjxNYW5hZ2VtZW50SW5mb1ZhbHVlPj4+O1xyXG4gIHRlbXBWYWx1ZT86IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydTdHJpbmcnXT47XHJcblxyXG4gIC8vIGV4dHJhRmllbGRzXHJcbiAgaXNMb2FkaW5nOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBhdmFsaWFibGVJdGVtczogR2V0TWlBdXRvU3VnZXN0aW9uQXJyYXk7XHJcblxyXG4gIGdldCBzZWxlY3RlZFZhbHVlcygpOiBBcnJheTxcclxuICAgIE1heWJlPEZpZWxkV3JhcHBlcjxTZWxlY3RlZE1hbmFnZW1lbnRJbmZvVmFsdWU+PlxyXG4gID4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkVmFsdWVzO1xyXG4gIH1cclxuXHJcbiAgc2V0IHNlbGVjdGVkVmFsdWVzKHZhbHVlczogU2VsZWN0ZWRNYW5hZ2VtZW50SW5mb1ZhbHVlW10pIHtcclxuICAgIGlmICghT2JqZWN0LmlzKHRoaXMuX3NlbGVjdGVkVmFsdWVzLCB2YWx1ZXMpKSB7XHJcbiAgICAgIHRoaXMuX3NlbGVjdGVkVmFsdWVzID0gdmFsdWVzO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBzZXQgdmFsdWUodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2V0VmFsdWUodmFsKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihtYW5hZ2VtZW50SW5mbzogTWFuYWdlbWVudEluZm8pIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIG1hbmFnZW1lbnRJbmZvKTsgLy8gVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgY2FsbCBfaXNWYWxpZCgpXHJcbiAgfVxyXG5cclxuICByZWFzb246IGJvb2xlYW47XHJcbiAgdGFrZVZhbHVlRnJvbVVzZXJEZWZhdWx0PzogYm9vbGVhbjtcclxuICB0YWtlVmFsdWVGcm9tQm9va2VyRGVmYXVsdD86IGJvb2xlYW47XHJcbiAgZW5mb3JjZVVzZXJEZWZhdWx0PzogYm9vbGVhbjtcclxuICBib29rZWRCeUZpZWxkPzogQm9va2VkQnlGaWVsZDtcclxuXHJcbiAgaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5tYW5kYXRvcnkgfHwgdGhpcy5zZWxlY3RlZFZhbHVlcy5sZW5ndGggIT09IDA7XHJcbiAgfVxyXG5cclxuICBoYXNFcnJvcnModmFsdWU6IHN0cmluZyk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycz4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgcmVzb2x2ZShcclxuICAgICAgICB0aGlzLm1hbmRhdG9yeSAmJiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA9PT0gMClcclxuICAgICAgICAgID8geyBoYXNFcnJvcnM6IHRydWUgfVxyXG4gICAgICAgICAgOiBudWxsXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFic3RyYWN0IGdldFZhbHVlKCk6IHN0cmluZztcclxuICBhYnN0cmFjdCBzZXRWYWx1ZSh2YWw6IHN0cmluZyk6IHZvaWQ7XHJcbiAgc2VhcmNoID0gKHRlcm1zOiBPYnNlcnZhYmxlPHN0cmluZz4pOiBPYnNlcnZhYmxlPEdldE1pQXV0b1N1Z2VzdGlvbkFycmF5PiA9PiB7XHJcbiAgICByZXR1cm4gb2YoW10pO1xyXG4gIH07XHJcblxyXG4gIGFic3RyYWN0IHNhdmUoYmFza2V0aWQ6IHN0cmluZywgdXNlcklkPzogc3RyaW5nKTogdm9pZDtcclxufVxyXG5cclxuY2xhc3MgRnJlZVRleHRNYW5hZ2VtZW50SW5mbyBleHRlbmRzIE1hbmFnZW1lbnRJbmZvQW5kSXNWYWxpZCB7XHJcbiAgdGVtcFZhbHVlOiBzdHJpbmc7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBtYW5hZ2VtZW50SW5mbzogTWFuYWdlbWVudEluZm8sXHJcbiAgICBwcml2YXRlIGJhc2tldFNlcnZpY2U6IEVudGVycHJpc2VCYXNrZXRTZXJ2aWNlSW50ZXJmYWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihtYW5hZ2VtZW50SW5mbyk7XHJcbiAgICB0aGlzLnRlbXBWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXNcclxuICAgICAgPyB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdPy5mcmVlVmFsdWUgfHwgJydcclxuICAgICAgOiAnJztcclxuICB9XHJcbiAgZ2V0VmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBWYWx1ZTtcclxuICB9XHJcbiAgc2V0VmFsdWUodmFsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRlbXBWYWx1ZSA9PT0gdmFsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGVtcFZhbHVlID0gdmFsO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBmcmVlVmFsdWU6IHZhbCxcclxuICAgICAgICBiYXNrZXRMZXZlbFZhbHVlOiB0aGlzLnBlckJvb2tpbmcsXHJcbiAgICAgICAgdXNlckxldmVsVmFsdWU6IHRoaXMucGVyUGFzc2VuZ2VyXHJcbiAgICAgIH1cclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBzYXZlKGJhc2tldGlkOiBzdHJpbmcsIHVzZXJJZD86IHN0cmluZykge1xyXG4gICAgdGhpcy5iYXNrZXRTZXJ2aWNlLnNldE1pRnJlZVZhbHVlKFxyXG4gICAgICBiYXNrZXRpZCxcclxuICAgICAgdGhpcyxcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1swXSA/IHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0uZnJlZVZhbHVlIDogJycsXHJcbiAgICAgIHVzZXJJZFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGhhc0Vycm9ycyh2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5tYW5kYXRvcnkgJiYgKCF2YWx1ZSB8fCB2YWx1ZS5sZW5ndGggPT09IDApKSB7XHJcbiAgICAgICAgcmVzb2x2ZSh7IGhhc0Vycm9yczogdHJ1ZSB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy52YWx1ZU1hc2sgJiYgISF2YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2tldFNlcnZpY2VcclxuICAgICAgICAgIC52YWxpZGF0ZUZyZWVWYWxlTWkodGhpcywgdmFsdWUpXHJcbiAgICAgICAgICAudGhlbigocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0ID8gbnVsbCA6IHsgaGFzRXJyb3JzOiB0cnVlIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy52YWx1ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlc29sdmUoXHJcbiAgICAgICAgICAhIXRoaXMudmFsdWVzLmZpbmQoKG1pdjogTWFuYWdlbWVudEluZm9WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbWl2LnZhbHVlID09PSB2YWx1ZTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICA6IHsgaGFzRXJyb3JzOiB0cnVlIH1cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUoc3VwZXIuaGFzRXJyb3JzKHZhbHVlKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgQXV0b1N1Z2VzdE1hbmFnZW1lbnRJbmZvIGV4dGVuZHMgTWFuYWdlbWVudEluZm9BbmRJc1ZhbGlkIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIG1hbmFnZW1lbnRJbmZvOiBNYW5hZ2VtZW50SW5mbyxcclxuICAgIHByaXZhdGUgYmFza2V0U2VydmljZTogRW50ZXJwcmlzZUJhc2tldFNlcnZpY2VJbnRlcmZhY2VcclxuICApIHtcclxuICAgIHN1cGVyKG1hbmFnZW1lbnRJbmZvKTtcclxuICAgIGlmICh0aGlzLnZhbHVlcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmF2YWxpYWJsZUl0ZW1zID0gdGhpcy52YWx1ZXM7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFZhbHVlc1swXSA/IHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0udmFsdWUuaWQgOiAnX19OT05FJztcclxuICB9XHJcblxyXG4gIGFzeW5jIGhhc0Vycm9ycyhpZDogc3RyaW5nKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gIXRoaXMuYXZhbGlhYmxlSXRlbXMuZmluZCgodmFsdWUxOiBNYW5hZ2VtZW50SW5mb1ZhbHVlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlMS5pZCA9PT0gaWQ7XHJcbiAgICAgIH0pXHJcbiAgICAgICAgPyB7IGhhc0Vycm9yczogdHJ1ZSB9XHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZShpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB2YWx1ZTogTWFuYWdlbWVudEluZm9WYWx1ZSA9IHRoaXMuYXZhbGlhYmxlSXRlbXMuZmluZChcclxuICAgICAgICAodmFsdWUxOiBNYW5hZ2VtZW50SW5mb1ZhbHVlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWUxLmlkID09PSBpZDtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgIGlmICghIXZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6IHtcclxuICAgICAgICAgICAgICBpZDogdmFsdWUuaWQsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHZhbHVlLmxhYmVsLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcclxuICAgICAgICAgICAgICBkZWZhdWx0OiB2YWx1ZS5kZWZhdWx0LFxyXG4gICAgICAgICAgICAgIGZpeGVkOiB2YWx1ZS5maXhlZCxcclxuICAgICAgICAgICAgICBhZ2VudE9ubHk6IHZhbHVlLmFnZW50T25seVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBiYXNrZXRMZXZlbFZhbHVlOiB0aGlzLnBlckJvb2tpbmcsXHJcbiAgICAgICAgICAgIHVzZXJMZXZlbFZhbHVlOiB0aGlzLnBlclBhc3NlbmdlclxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWFyY2ggPSAodGVybXM6IE9ic2VydmFibGU8c3RyaW5nPik6IE9ic2VydmFibGU8R2V0TWlBdXRvU3VnZXN0aW9uQXJyYXk+ID0+IHtcclxuICAgIHJldHVybiB0ZXJtcy5waXBlKFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgc3dpdGNoTWFwKCh0ZXJtOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBjb25zdCBvYiA9XHJcbiAgICAgICAgICB0ZXJtLmxlbmd0aCA+IDJcclxuICAgICAgICAgICAgPyB0aGlzLmJhc2tldFNlcnZpY2UuZ2V0TWlBdXRvU3VnZXN0aW9ucyhcclxuICAgICAgICAgICAgICAgIHRoaXMuaWQsXHJcbiAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIDogb2YodGhpcy5hdmFsaWFibGVJdGVtcyk7XHJcblxyXG4gICAgICAgIHJldHVybiBvYjtcclxuICAgICAgfSksXHJcbiAgICAgIHRhcCgoc3VnZXN0aW9uczogR2V0TWlBdXRvU3VnZXN0aW9uQXJyYXkpID0+IHtcclxuICAgICAgICB0aGlzLmF2YWxpYWJsZUl0ZW1zID0gc3VnZXN0aW9ucztcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgc2F2ZShiYXNrZXRpZDogc3RyaW5nLCB1c2VyaWQ/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYmFza2V0U2VydmljZS5zZXRNaVNlbGVjdGVkVmFsdWUoXHJcbiAgICAgIGJhc2tldGlkLFxyXG4gICAgICB0aGlzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdLnZhbHVlLmlkLFxyXG4gICAgICB1c2VyaWRcclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBIaWRkZW5NYW5hZ2VtZW50SW5mbyBleHRlbmRzIE1hbmFnZW1lbnRJbmZvQW5kSXNWYWxpZCB7XHJcbiAgY29uc3RydWN0b3IobWFuYWdlbWVudEluZm86IE1hbmFnZW1lbnRJbmZvKSB7XHJcbiAgICBzdXBlcihtYW5hZ2VtZW50SW5mbyk7XHJcbiAgfVxyXG4gIGdldFZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG4gIHNldFZhbHVlKHZhbDogc3RyaW5nKTogdm9pZCB7fVxyXG5cclxuICBzYXZlKGJhc2tldGlkOiBzdHJpbmcsIHVzZXJJZD86IHN0cmluZykge31cclxufVxyXG5cclxuY2xhc3MgRHJvcGRvd25NYW5hZ2VtZW50SW5mbyBleHRlbmRzIE1hbmFnZW1lbnRJbmZvQW5kSXNWYWxpZCB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBtYW5hZ2VtZW50SW5mbzogTWFuYWdlbWVudEluZm8sXHJcbiAgICBwcml2YXRlIGJhc2tldFNlcnZpY2U6IEVudGVycHJpc2VCYXNrZXRTZXJ2aWNlSW50ZXJmYWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihtYW5hZ2VtZW50SW5mbyk7XHJcbiAgICBpZiAodGhpcy52YWx1ZXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5hdmFsaWFibGVJdGVtcyA9IHRoaXMudmFsdWVzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcignTm8gdmFsdWVzIGZvciBEcm9wZG93biBNSSBmaWVsZCAgJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0VmFsdWUgJiYgIXRoaXMuc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmRlZmF1bHRWYWx1ZS5pZDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1swXS52YWx1ZSA9IHRoaXMuZGVmYXVsdFZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0gPyB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdLnZhbHVlLmlkIDogJ19fTk9ORSc7XHJcbiAgfVxyXG5cclxuICBhc3luYyBoYXNFcnJvcnMoaWQ6IHN0cmluZyk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycz4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuICF0aGlzLmF2YWxpYWJsZUl0ZW1zLmZpbmQoKHZhbHVlMTogTWFuYWdlbWVudEluZm9WYWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTEuaWQgPT09IGlkO1xyXG4gICAgICB9KVxyXG4gICAgICAgID8geyBoYXNFcnJvcnM6IHRydWUgfVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWUoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWU6IE1hbmFnZW1lbnRJbmZvVmFsdWUgPSB0aGlzLmF2YWxpYWJsZUl0ZW1zLmZpbmQoXHJcbiAgICAgICh2YWx1ZTE6IE1hbmFnZW1lbnRJbmZvVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4gdmFsdWUxLmlkID09PSBpZDtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIGlmICghIXZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdmFsdWU6IHtcclxuICAgICAgICAgICAgaWQ6IHZhbHVlLmlkLFxyXG4gICAgICAgICAgICBsYWJlbDogdmFsdWUubGFiZWwsXHJcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcclxuICAgICAgICAgICAgZGVmYXVsdDogdmFsdWUuZGVmYXVsdCxcclxuICAgICAgICAgICAgZml4ZWQ6IHZhbHVlLmZpeGVkLFxyXG4gICAgICAgICAgICBhZ2VudE9ubHk6IHZhbHVlLmFnZW50T25seVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGJhc2tldExldmVsVmFsdWU6IHRoaXMucGVyQm9va2luZyxcclxuICAgICAgICAgIHVzZXJMZXZlbFZhbHVlOiB0aGlzLnBlclBhc3NlbmdlclxyXG4gICAgICAgIH1cclxuICAgICAgXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmUoYmFza2V0aWQ6IHN0cmluZywgdXNlcmlkPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmJhc2tldFNlcnZpY2Uuc2V0TWlTZWxlY3RlZFZhbHVlKFxyXG4gICAgICBiYXNrZXRpZCxcclxuICAgICAgdGhpcyxcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1swXS52YWx1ZS5pZCxcclxuICAgICAgdXNlcmlkXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IG1ha2VNYW5hZ2FtZW50SW5mbyA9IChcclxuICBtYW5hZ2VtZW50SW5mbzogTWFuYWdlbWVudEluZm8sXHJcbiAgYmFza2V0U2VydmljZTogRW50ZXJwcmlzZUJhc2tldFNlcnZpY2VJbnRlcmZhY2VcclxuKTogTWFuYWdlbWVudEluZm9BbmRJc1ZhbGlkID0+IHtcclxuICBzd2l0Y2ggKG1hbmFnZW1lbnRJbmZvLnVpUHJlc2VudGF0aW9uKSB7XHJcbiAgICBjYXNlIFVpUHJlc2VudGF0aW9uLkZyZWVUZXh0OlxyXG4gICAgICByZXR1cm4gbmV3IEZyZWVUZXh0TWFuYWdlbWVudEluZm8obWFuYWdlbWVudEluZm8sIGJhc2tldFNlcnZpY2UpO1xyXG4gICAgY2FzZSBVaVByZXNlbnRhdGlvbi5BdXRvU3VnZ2VzdDpcclxuICAgICAgcmV0dXJuIG5ldyBBdXRvU3VnZXN0TWFuYWdlbWVudEluZm8obWFuYWdlbWVudEluZm8sIGJhc2tldFNlcnZpY2UpO1xyXG4gICAgY2FzZSBVaVByZXNlbnRhdGlvbi5IaWRkZW46XHJcbiAgICAgIHJldHVybiBuZXcgSGlkZGVuTWFuYWdlbWVudEluZm8obWFuYWdlbWVudEluZm8pO1xyXG4gICAgY2FzZSBVaVByZXNlbnRhdGlvbi5Ecm9wZG93bjpcclxuICAgICAgcmV0dXJuIG5ldyBEcm9wZG93bk1hbmFnZW1lbnRJbmZvKG1hbmFnZW1lbnRJbmZvLCBiYXNrZXRTZXJ2aWNlKTtcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIGNvbnN0IHRtcDogbmV2ZXIgPSBtYW5hZ2VtZW50SW5mby51aVByZXNlbnRhdGlvbjtcclxuICAgICAgY29uc29sZS5sb2codG1wKTtcclxuICB9XHJcbiAgcmV0dXJuIG51bGw7XHJcbn07XHJcbiJdfQ==
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlbWVudC1pbmZvLWFuZC12YWxpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29idHNlcnZpY2VzL2Jhc2Uvc3JjL2xpYi92ZW5kb3IvY2xhc3Nlcy9tYW5hZ2VtZW50LWluZm8tYW5kLXZhbGlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQ0wsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixTQUFTLEVBQ1QsR0FBRyxFQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQVNMLGNBQWMsRUFDZixNQUFNLHdCQUF3QixDQUFDO0FBR2hDLE1BQU0sT0FBZ0Isd0JBQ3BCLFNBQVEsZ0JBQWdCO0lBaUR4QixZQUFzQixjQUE4QjtRQUNsRCxLQUFLLEVBQUUsQ0FBQztRQXhCVixjQUFjO1FBQ2QsY0FBUyxHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQWlEMUUsV0FBTSxHQUFHLENBQUMsS0FBeUIsRUFBdUMsRUFBRTtZQUMxRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUM7UUEzQkEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQywwQ0FBMEM7SUFDakYsQ0FBQztJQXRCRCxJQUFJLGNBQWM7UUFHaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLGNBQWMsQ0FBQyxNQUFxQztRQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUNELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxHQUFXO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQWFELE9BQU87UUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsT0FBTyxDQUNMLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztnQkFDOUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRTtnQkFDckIsQ0FBQyxDQUFDLElBQUksQ0FDVCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBU0Y7QUFFRCxNQUFNLHNCQUF1QixTQUFRLHdCQUF3QjtJQUUzRCxZQUNFLGNBQThCLEVBQ3RCLGFBQStDOztRQUV2RCxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFGZCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0M7UUFHdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYztZQUNsQyxDQUFDLENBQUMsT0FBQSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQywwQ0FBRSxTQUFTLEtBQUksRUFBRTtZQUN6QyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQUNELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELFFBQVEsQ0FBQyxHQUFXO1FBQ2xCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxHQUFHLEVBQUU7WUFDMUIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFFckIsSUFBSSxDQUFDLGNBQWMsR0FBRztZQUNwQjtnQkFDRSxTQUFTLEVBQUUsR0FBRztnQkFDZCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDakMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZO2FBQ2xDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUMsUUFBZ0IsRUFBRSxNQUFlLEVBQUUsS0FBZTtRQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FDL0IsUUFBUSxFQUNSLElBQUksRUFDSixJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUM5RCxNQUFNLEVBQ04sS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWE7UUFDckIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUNwRCxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUM5QjtZQUNELElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO2dCQUM3QixPQUFPLElBQUksQ0FBQyxhQUFhO3FCQUN0QixrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO3FCQUMvQixJQUFJLENBQUMsQ0FBQyxNQUFlLEVBQUUsRUFBRTtvQkFDeEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDLENBQUMsQ0FBQzthQUNOO2lCQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQyxPQUFPLENBQ0wsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBd0IsRUFBRSxFQUFFO29CQUM5QyxPQUFPLEdBQUcsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDO2dCQUM3QixDQUFDLENBQUM7b0JBQ0EsQ0FBQyxDQUFDLElBQUk7b0JBQ04sQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUN4QixDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNqQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsTUFBTSx3QkFBeUIsU0FBUSx3QkFBd0I7SUFDN0QsWUFDRSxjQUE4QixFQUN0QixhQUErQzs7UUFFdkQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRmQsa0JBQWEsR0FBYixhQUFhLENBQWtDO1FBdUR6RCxXQUFNLEdBQUcsQ0FBQyxLQUF5QixFQUF1QyxFQUFFO1lBQzFFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FDZixZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLG9CQUFvQixFQUFFLEVBQ3RCLFNBQVMsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFO2dCQUN6QixNQUFNLEVBQUUsR0FDTixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQ2IsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQ3BDLElBQUksQ0FBQyxFQUFFLEVBQ1AsSUFBSSxFQUNKLElBQUksQ0FBQyxTQUFTLENBQ2Y7b0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBRTlCLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsVUFBbUMsRUFBRSxFQUFFO2dCQUMxQyxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBeEVBLElBQUksT0FBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxNQUFNLElBQUcsQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNuQzthQUFNO1lBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQztJQUNELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQzdFLENBQUM7SUFFSyxTQUFTLENBQUMsS0FBVTs7WUFDeEIsSUFBSTtnQkFDRixPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUEyQixFQUFFLEVBQUU7b0JBQy9ELE9BQU8sTUFBTSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxDQUFDLENBQUM7b0JBQ0EsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRTtvQkFDckIsQ0FBQyxDQUFDLElBQUksQ0FBQzthQUNWO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxJQUFJLENBQUM7YUFDYjtRQUNILENBQUM7S0FBQTtJQUVELFFBQVEsQ0FBQyxFQUFVO1FBQ2pCLElBQUk7WUFDRixNQUFNLEtBQUssR0FBd0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3pELENBQUMsTUFBMkIsRUFBRSxFQUFFO2dCQUM5QixPQUFPLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQzFCLENBQUMsQ0FDRixDQUFDO1lBQ0YsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO2dCQUNYLElBQUksQ0FBQyxjQUFjLEdBQUc7b0JBQ3BCO3dCQUNFLEtBQUssRUFBRTs0QkFDTCxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7NEJBQ1osS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLOzRCQUNsQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7NEJBQ2xCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTzs0QkFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLOzRCQUNsQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7eUJBQzNCO3dCQUNELGdCQUFnQixFQUFFLElBQUksQ0FBQyxVQUFVO3dCQUNqQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVk7cUJBQ2xDO2lCQUNGLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQzthQUMxQjtTQUNGO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7SUF3QkQsSUFBSSxDQUFDLFFBQWdCLEVBQUUsTUFBZSxFQUFFLEtBQWU7O1FBQ3JELElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQ25DLFFBQVEsRUFDUixJQUFJLEVBQ0osSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsMENBQUUsS0FBSywwQ0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDL0QsTUFBTSxFQUNOLEtBQUssQ0FDTixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQsTUFBTSxvQkFBcUIsU0FBUSx3QkFBd0I7SUFDekQsWUFBWSxjQUE4QjtRQUN4QyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUNELFFBQVE7UUFDTixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxRQUFRLENBQUMsR0FBVyxJQUFTLENBQUM7SUFFOUIsSUFBSSxDQUFDLFFBQWdCLEVBQUUsTUFBZSxJQUFHLENBQUM7Q0FDM0M7QUFFRCxNQUFNLHNCQUF1QixTQUFRLHdCQUF3QjtJQUMzRCxZQUNFLGNBQThCLEVBQ3RCLGFBQStDOztRQUV2RCxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFGZCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0M7UUFHdkQsSUFBSSxPQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLE1BQU0sSUFBRyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ25DO2FBQU07WUFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7U0FDcEQ7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRTtZQUNwRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0lBQ0QsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDN0UsQ0FBQztJQUVLLFNBQVMsQ0FBQyxFQUFVOztZQUN4QixJQUFJO2dCQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQTJCLEVBQUUsRUFBRTtvQkFDL0QsT0FBTyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDMUIsQ0FBQyxDQUFDO29CQUNBLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUU7b0JBQ3JCLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDVjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLE9BQU8sSUFBSSxDQUFDO2FBQ2I7UUFDSCxDQUFDO0tBQUE7SUFFRCxRQUFRLENBQUMsRUFBVTtRQUNqQixNQUFNLEtBQUssR0FBd0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3pELENBQUMsTUFBMkIsRUFBRSxFQUFFO1lBQzlCLE9BQU8sTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDWCxJQUFJLENBQUMsY0FBYyxHQUFHO2dCQUNwQjtvQkFDRSxLQUFLLEVBQUU7d0JBQ0wsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO3dCQUNaLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSzt3QkFDbEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO3dCQUNsQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87d0JBQ3RCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSzt3QkFDbEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO3FCQUMzQjtvQkFDRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsVUFBVTtvQkFDakMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZO2lCQUNsQzthQUNGLENBQUM7U0FDSDthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQWdCLEVBQUUsTUFBZSxFQUFFLEtBQWU7UUFDckQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FDbkMsUUFBUSxFQUNSLElBQUksRUFDSixJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxFQUNyQyxNQUFNLEVBQ04sS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUNoQyxjQUE4QixFQUM5QixhQUErQyxFQUNyQixFQUFFO0lBQzVCLFFBQVEsY0FBYyxDQUFDLGNBQWMsRUFBRTtRQUNyQyxLQUFLLGNBQWMsQ0FBQyxRQUFRO1lBQzFCLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDbkUsS0FBSyxjQUFjLENBQUMsV0FBVztZQUM3QixPQUFPLElBQUksd0JBQXdCLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3JFLEtBQUssY0FBYyxDQUFDLE1BQU07WUFDeEIsT0FBTyxJQUFJLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELEtBQUssY0FBYyxDQUFDLFFBQVE7WUFDMUIsT0FBTyxJQUFJLHNCQUFzQixDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNuRTtZQUNFLE1BQU0sR0FBRyxHQUFVLGNBQWMsQ0FBQyxjQUFjLENBQUM7WUFDakQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNwQjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIGRlYm91bmNlVGltZSxcclxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcclxuICBzd2l0Y2hNYXAsXHJcbiAgdGFwXHJcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JDaGVja2VyIH0gZnJvbSAnLi4vY2xhc3Nlcy92YWxpZGF0b3IuY2hlY2tlcic7XHJcbmltcG9ydCB7IEVudGVycHJpc2VCYXNrZXRTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JZW50ZXJwcmlzZS1iYXNrZXQuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQm9va2VkQnlGaWVsZCxcclxuICBGaWVsZFdyYXBwZXIsXHJcbiAgTWFuYWdlbWVudEluZm8sXHJcbiAgTWFuYWdlbWVudEluZm9WYWx1ZSxcclxuICBNYXliZSxcclxuICBTY2FsYXJzLFxyXG4gIFNlbGVjdGVkTWFuYWdlbWVudEluZm9WYWx1ZSxcclxuICBTZXJ2aWNlLFxyXG4gIFVpUHJlc2VudGF0aW9uXHJcbn0gZnJvbSAnLi4vdHlwZXMvZ3JhcGhxbC50eXBlcyc7XHJcbmltcG9ydCB7IEdldE1pQXV0b1N1Z2VzdGlvbkFycmF5LCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1hbmFnZW1lbnRJbmZvQW5kSXNWYWxpZFxyXG4gIGV4dGVuZHMgVmFsaWRhdG9yQ2hlY2tlclxyXG4gIGltcGxlbWVudHMgTWFuYWdlbWVudEluZm9cclxue1xyXG4gIC8vIE1hbmFnZW1lbnRJbmZvIGludGVyZmFjZVxyXG4gIGFnZW50T25seTogRmllbGRXcmFwcGVyPFNjYWxhcnNbJ0Jvb2xlYW4nXT47XHJcbiAgY3JlYXRlZEF0OiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snRGF0ZVRpbWUnXT47XHJcbiAgZGJJZDogRmllbGRXcmFwcGVyPFNjYWxhcnNbJ0ludCddPjtcclxuICBkZWZhdWx0VmFsdWU/OiBNYXliZTxGaWVsZFdyYXBwZXI8TWFuYWdlbWVudEluZm9WYWx1ZT4+O1xyXG4gIGRlc2NyaXB0aW9uPzogTWF5YmU8RmllbGRXcmFwcGVyPFNjYWxhcnNbJ1N0cmluZyddPj47XHJcbiAgZml4ZWQ6IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydCb29sZWFuJ10+O1xyXG4gIGZpeGVkVmFsdWU/OiBNYXliZTxGaWVsZFdyYXBwZXI8TWFuYWdlbWVudEluZm9WYWx1ZT4+O1xyXG4gIGdyb3VwPzogTWF5YmU8QXJyYXk8TWF5YmU8RmllbGRXcmFwcGVyPFNjYWxhcnNbJ1N0cmluZyddPj4+PjtcclxuICBoYW5kb2ZmOiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snU3RyaW5nJ10+O1xyXG4gIGlkOiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snSUQnXT47XHJcbiAgbWFuZGF0b3J5OiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snQm9vbGVhbiddPjtcclxuICBuYW1lOiBGaWVsZFdyYXBwZXI8U2NhbGFyc1snU3RyaW5nJ10+O1xyXG4gIHBlckJvb2tpbmc6IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydCb29sZWFuJ10+O1xyXG4gIHBlclBhc3NlbmdlcjogRmllbGRXcmFwcGVyPFNjYWxhcnNbJ0Jvb2xlYW4nXT47XHJcbiAgX3NlbGVjdGVkVmFsdWVzOiBBcnJheTxNYXliZTxGaWVsZFdyYXBwZXI8U2VsZWN0ZWRNYW5hZ2VtZW50SW5mb1ZhbHVlPj4+O1xyXG4gIHNlcnZpY2U6IEZpZWxkV3JhcHBlcjxTZXJ2aWNlPjtcclxuICB1aVByZXNlbnRhdGlvbjogRmllbGRXcmFwcGVyPFVpUHJlc2VudGF0aW9uPjtcclxuICB1cGRhdGVkQXQ6IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydEYXRlVGltZSddPjtcclxuICB2YWx1ZU1hc2s/OiBNYXliZTxGaWVsZFdyYXBwZXI8U2NhbGFyc1snU3RyaW5nJ10+PjtcclxuICB2YWx1ZXM6IEFycmF5PE1heWJlPEZpZWxkV3JhcHBlcjxNYW5hZ2VtZW50SW5mb1ZhbHVlPj4+O1xyXG4gIHRlbXBWYWx1ZT86IEZpZWxkV3JhcHBlcjxTY2FsYXJzWydTdHJpbmcnXT47XHJcblxyXG4gIC8vIGV4dHJhRmllbGRzXHJcbiAgaXNMb2FkaW5nOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBhdmFsaWFibGVJdGVtczogR2V0TWlBdXRvU3VnZXN0aW9uQXJyYXk7XHJcblxyXG4gIGdldCBzZWxlY3RlZFZhbHVlcygpOiBBcnJheTxcclxuICAgIE1heWJlPEZpZWxkV3JhcHBlcjxTZWxlY3RlZE1hbmFnZW1lbnRJbmZvVmFsdWU+PlxyXG4gID4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkVmFsdWVzO1xyXG4gIH1cclxuXHJcbiAgc2V0IHNlbGVjdGVkVmFsdWVzKHZhbHVlczogU2VsZWN0ZWRNYW5hZ2VtZW50SW5mb1ZhbHVlW10pIHtcclxuICAgIGlmICghT2JqZWN0LmlzKHRoaXMuX3NlbGVjdGVkVmFsdWVzLCB2YWx1ZXMpKSB7XHJcbiAgICAgIHRoaXMuX3NlbGVjdGVkVmFsdWVzID0gdmFsdWVzO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBzZXQgdmFsdWUodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2V0VmFsdWUodmFsKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihtYW5hZ2VtZW50SW5mbzogTWFuYWdlbWVudEluZm8pIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIG1hbmFnZW1lbnRJbmZvKTsgLy8gVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgY2FsbCBfaXNWYWxpZCgpXHJcbiAgfVxyXG5cclxuICByZWFzb246IGJvb2xlYW47XHJcbiAgdGFrZVZhbHVlRnJvbVVzZXJEZWZhdWx0PzogYm9vbGVhbjtcclxuICB0YWtlVmFsdWVGcm9tQm9va2VyRGVmYXVsdD86IGJvb2xlYW47XHJcbiAgZW5mb3JjZVVzZXJEZWZhdWx0PzogYm9vbGVhbjtcclxuICBib29rZWRCeUZpZWxkPzogQm9va2VkQnlGaWVsZDtcclxuXHJcbiAgaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5tYW5kYXRvcnkgfHwgdGhpcy5zZWxlY3RlZFZhbHVlcy5sZW5ndGggIT09IDA7XHJcbiAgfVxyXG5cclxuICBoYXNFcnJvcnModmFsdWU6IHN0cmluZyk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycz4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgcmVzb2x2ZShcclxuICAgICAgICB0aGlzLm1hbmRhdG9yeSAmJiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA9PT0gMClcclxuICAgICAgICAgID8geyBoYXNFcnJvcnM6IHRydWUgfVxyXG4gICAgICAgICAgOiBudWxsXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFic3RyYWN0IGdldFZhbHVlKCk6IHN0cmluZztcclxuICBhYnN0cmFjdCBzZXRWYWx1ZSh2YWw6IHN0cmluZyk6IHZvaWQ7XHJcbiAgc2VhcmNoID0gKHRlcm1zOiBPYnNlcnZhYmxlPHN0cmluZz4pOiBPYnNlcnZhYmxlPEdldE1pQXV0b1N1Z2VzdGlvbkFycmF5PiA9PiB7XHJcbiAgICByZXR1cm4gb2YoW10pO1xyXG4gIH07XHJcblxyXG4gIGFic3RyYWN0IHNhdmUoYmFza2V0aWQ6IHN0cmluZywgdXNlcklkPzogc3RyaW5nLCBndWVzdD86IGJvb2xlYW4pOiB2b2lkO1xyXG59XHJcblxyXG5jbGFzcyBGcmVlVGV4dE1hbmFnZW1lbnRJbmZvIGV4dGVuZHMgTWFuYWdlbWVudEluZm9BbmRJc1ZhbGlkIHtcclxuICB0ZW1wVmFsdWU6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIG1hbmFnZW1lbnRJbmZvOiBNYW5hZ2VtZW50SW5mbyxcclxuICAgIHByaXZhdGUgYmFza2V0U2VydmljZTogRW50ZXJwcmlzZUJhc2tldFNlcnZpY2VJbnRlcmZhY2VcclxuICApIHtcclxuICAgIHN1cGVyKG1hbmFnZW1lbnRJbmZvKTtcclxuICAgIHRoaXMudGVtcFZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlc1xyXG4gICAgICA/IHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0/LmZyZWVWYWx1ZSB8fCAnJ1xyXG4gICAgICA6ICcnO1xyXG4gIH1cclxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcFZhbHVlO1xyXG4gIH1cclxuICBzZXRWYWx1ZSh2YWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudGVtcFZhbHVlID09PSB2YWwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50ZW1wVmFsdWUgPSB2YWw7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGZyZWVWYWx1ZTogdmFsLFxyXG4gICAgICAgIGJhc2tldExldmVsVmFsdWU6IHRoaXMucGVyQm9va2luZyxcclxuICAgICAgICB1c2VyTGV2ZWxWYWx1ZTogdGhpcy5wZXJQYXNzZW5nZXJcclxuICAgICAgfVxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIHNhdmUoYmFza2V0aWQ6IHN0cmluZywgdXNlcklkPzogc3RyaW5nLCBndWVzdD86IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuYmFza2V0U2VydmljZS5zZXRNaUZyZWVWYWx1ZShcclxuICAgICAgYmFza2V0aWQsXHJcbiAgICAgIHRoaXMsXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0gPyB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdLmZyZWVWYWx1ZSA6ICcnLFxyXG4gICAgICB1c2VySWQsXHJcbiAgICAgIGd1ZXN0XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaGFzRXJyb3JzKHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnM+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm1hbmRhdG9yeSAmJiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkpIHtcclxuICAgICAgICByZXNvbHZlKHsgaGFzRXJyb3JzOiB0cnVlIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnZhbHVlTWFzayAmJiAhIXZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFza2V0U2VydmljZVxyXG4gICAgICAgICAgLnZhbGlkYXRlRnJlZVZhbGVNaSh0aGlzLCB2YWx1ZSlcclxuICAgICAgICAgIC50aGVuKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQgPyBudWxsIDogeyBoYXNFcnJvcnM6IHRydWUgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmVzb2x2ZShcclxuICAgICAgICAgICEhdGhpcy52YWx1ZXMuZmluZCgobWl2OiBNYW5hZ2VtZW50SW5mb1ZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBtaXYudmFsdWUgPT09IHZhbHVlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgICAgPyBudWxsXHJcbiAgICAgICAgICAgIDogeyBoYXNFcnJvcnM6IHRydWUgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzb2x2ZShzdXBlci5oYXNFcnJvcnModmFsdWUpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBBdXRvU3VnZXN0TWFuYWdlbWVudEluZm8gZXh0ZW5kcyBNYW5hZ2VtZW50SW5mb0FuZElzVmFsaWQge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgbWFuYWdlbWVudEluZm86IE1hbmFnZW1lbnRJbmZvLFxyXG4gICAgcHJpdmF0ZSBiYXNrZXRTZXJ2aWNlOiBFbnRlcnByaXNlQmFza2V0U2VydmljZUludGVyZmFjZVxyXG4gICkge1xyXG4gICAgc3VwZXIobWFuYWdlbWVudEluZm8pO1xyXG4gICAgaWYgKHRoaXMudmFsdWVzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuYXZhbGlhYmxlSXRlbXMgPSB0aGlzLnZhbHVlcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHZhbHVlcyBmb3IgQXV0b1N1Z2VzdCBmaWVsZCcpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0gPyB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdLnZhbHVlLmlkIDogJ19fTk9ORSc7XHJcbiAgfVxyXG5cclxuICBhc3luYyBoYXNFcnJvcnModmFsdWU6IGFueSk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycz4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuICF0aGlzLmF2YWxpYWJsZUl0ZW1zLmZpbmQoKHZhbHVlMTogTWFuYWdlbWVudEluZm9WYWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTEuaWQgPT09IHZhbHVlLmlkO1xyXG4gICAgICB9KVxyXG4gICAgICAgID8geyBoYXNFcnJvcnM6IHRydWUgfVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWUoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgdmFsdWU6IE1hbmFnZW1lbnRJbmZvVmFsdWUgPSB0aGlzLmF2YWxpYWJsZUl0ZW1zLmZpbmQoXHJcbiAgICAgICAgKHZhbHVlMTogTWFuYWdlbWVudEluZm9WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlMS5pZCA9PT0gaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoISF2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiB7XHJcbiAgICAgICAgICAgICAgaWQ6IHZhbHVlLmlkLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB2YWx1ZS5sYWJlbCxcclxuICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXHJcbiAgICAgICAgICAgICAgZGVmYXVsdDogdmFsdWUuZGVmYXVsdCxcclxuICAgICAgICAgICAgICBmaXhlZDogdmFsdWUuZml4ZWQsXHJcbiAgICAgICAgICAgICAgYWdlbnRPbmx5OiB2YWx1ZS5hZ2VudE9ubHlcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYmFza2V0TGV2ZWxWYWx1ZTogdGhpcy5wZXJCb29raW5nLFxyXG4gICAgICAgICAgICB1c2VyTGV2ZWxWYWx1ZTogdGhpcy5wZXJQYXNzZW5nZXJcclxuICAgICAgICAgIH1cclxuICAgICAgICBdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VhcmNoID0gKHRlcm1zOiBPYnNlcnZhYmxlPHN0cmluZz4pOiBPYnNlcnZhYmxlPEdldE1pQXV0b1N1Z2VzdGlvbkFycmF5PiA9PiB7XHJcbiAgICByZXR1cm4gdGVybXMucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHN3aXRjaE1hcCgodGVybTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb2IgPVxyXG4gICAgICAgICAgdGVybS5sZW5ndGggPiAyXHJcbiAgICAgICAgICAgID8gdGhpcy5iYXNrZXRTZXJ2aWNlLmdldE1pQXV0b1N1Z2VzdGlvbnMoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlkLFxyXG4gICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICA6IG9mKHRoaXMuYXZhbGlhYmxlSXRlbXMpO1xyXG5cclxuICAgICAgICByZXR1cm4gb2I7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0YXAoKHN1Z2VzdGlvbnM6IEdldE1pQXV0b1N1Z2VzdGlvbkFycmF5KSA9PiB7XHJcbiAgICAgICAgdGhpcy5hdmFsaWFibGVJdGVtcyA9IHN1Z2VzdGlvbnM7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIHNhdmUoYmFza2V0aWQ6IHN0cmluZywgdXNlcmlkPzogc3RyaW5nLCBndWVzdD86IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuYmFza2V0U2VydmljZS5zZXRNaVNlbGVjdGVkVmFsdWUoXHJcbiAgICAgIGJhc2tldGlkLFxyXG4gICAgICB0aGlzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdID8gdGhpcy5zZWxlY3RlZFZhbHVlc1swXT8udmFsdWU/LmlkIDogJycsXHJcbiAgICAgIHVzZXJpZCxcclxuICAgICAgZ3Vlc3RcclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBIaWRkZW5NYW5hZ2VtZW50SW5mbyBleHRlbmRzIE1hbmFnZW1lbnRJbmZvQW5kSXNWYWxpZCB7XHJcbiAgY29uc3RydWN0b3IobWFuYWdlbWVudEluZm86IE1hbmFnZW1lbnRJbmZvKSB7XHJcbiAgICBzdXBlcihtYW5hZ2VtZW50SW5mbyk7XHJcbiAgfVxyXG4gIGdldFZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG4gIHNldFZhbHVlKHZhbDogc3RyaW5nKTogdm9pZCB7fVxyXG5cclxuICBzYXZlKGJhc2tldGlkOiBzdHJpbmcsIHVzZXJJZD86IHN0cmluZykge31cclxufVxyXG5cclxuY2xhc3MgRHJvcGRvd25NYW5hZ2VtZW50SW5mbyBleHRlbmRzIE1hbmFnZW1lbnRJbmZvQW5kSXNWYWxpZCB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBtYW5hZ2VtZW50SW5mbzogTWFuYWdlbWVudEluZm8sXHJcbiAgICBwcml2YXRlIGJhc2tldFNlcnZpY2U6IEVudGVycHJpc2VCYXNrZXRTZXJ2aWNlSW50ZXJmYWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihtYW5hZ2VtZW50SW5mbyk7XHJcbiAgICBpZiAodGhpcy52YWx1ZXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5hdmFsaWFibGVJdGVtcyA9IHRoaXMudmFsdWVzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcignTm8gdmFsdWVzIGZvciBEcm9wZG93biBNSSBmaWVsZCAgJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0VmFsdWUgJiYgIXRoaXMuc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmRlZmF1bHRWYWx1ZS5pZDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1swXS52YWx1ZSA9IHRoaXMuZGVmYXVsdFZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMF0gPyB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdLnZhbHVlLmlkIDogJ19fTk9ORSc7XHJcbiAgfVxyXG5cclxuICBhc3luYyBoYXNFcnJvcnMoaWQ6IHN0cmluZyk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycz4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuICF0aGlzLmF2YWxpYWJsZUl0ZW1zLmZpbmQoKHZhbHVlMTogTWFuYWdlbWVudEluZm9WYWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTEuaWQgPT09IGlkO1xyXG4gICAgICB9KVxyXG4gICAgICAgID8geyBoYXNFcnJvcnM6IHRydWUgfVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWUoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWU6IE1hbmFnZW1lbnRJbmZvVmFsdWUgPSB0aGlzLmF2YWxpYWJsZUl0ZW1zLmZpbmQoXHJcbiAgICAgICh2YWx1ZTE6IE1hbmFnZW1lbnRJbmZvVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4gdmFsdWUxLmlkID09PSBpZDtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIGlmICghIXZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdmFsdWU6IHtcclxuICAgICAgICAgICAgaWQ6IHZhbHVlLmlkLFxyXG4gICAgICAgICAgICBsYWJlbDogdmFsdWUubGFiZWwsXHJcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcclxuICAgICAgICAgICAgZGVmYXVsdDogdmFsdWUuZGVmYXVsdCxcclxuICAgICAgICAgICAgZml4ZWQ6IHZhbHVlLmZpeGVkLFxyXG4gICAgICAgICAgICBhZ2VudE9ubHk6IHZhbHVlLmFnZW50T25seVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGJhc2tldExldmVsVmFsdWU6IHRoaXMucGVyQm9va2luZyxcclxuICAgICAgICAgIHVzZXJMZXZlbFZhbHVlOiB0aGlzLnBlclBhc3NlbmdlclxyXG4gICAgICAgIH1cclxuICAgICAgXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmUoYmFza2V0aWQ6IHN0cmluZywgdXNlcmlkPzogc3RyaW5nLCBndWVzdD86IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuYmFza2V0U2VydmljZS5zZXRNaVNlbGVjdGVkVmFsdWUoXHJcbiAgICAgIGJhc2tldGlkLFxyXG4gICAgICB0aGlzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdLnZhbHVlLmlkIHx8ICcnLFxyXG4gICAgICB1c2VyaWQsIFxyXG4gICAgICBndWVzdFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBtYWtlTWFuYWdhbWVudEluZm8gPSAoXHJcbiAgbWFuYWdlbWVudEluZm86IE1hbmFnZW1lbnRJbmZvLFxyXG4gIGJhc2tldFNlcnZpY2U6IEVudGVycHJpc2VCYXNrZXRTZXJ2aWNlSW50ZXJmYWNlXHJcbik6IE1hbmFnZW1lbnRJbmZvQW5kSXNWYWxpZCA9PiB7XHJcbiAgc3dpdGNoIChtYW5hZ2VtZW50SW5mby51aVByZXNlbnRhdGlvbikge1xyXG4gICAgY2FzZSBVaVByZXNlbnRhdGlvbi5GcmVlVGV4dDpcclxuICAgICAgcmV0dXJuIG5ldyBGcmVlVGV4dE1hbmFnZW1lbnRJbmZvKG1hbmFnZW1lbnRJbmZvLCBiYXNrZXRTZXJ2aWNlKTtcclxuICAgIGNhc2UgVWlQcmVzZW50YXRpb24uQXV0b1N1Z2dlc3Q6XHJcbiAgICAgIHJldHVybiBuZXcgQXV0b1N1Z2VzdE1hbmFnZW1lbnRJbmZvKG1hbmFnZW1lbnRJbmZvLCBiYXNrZXRTZXJ2aWNlKTtcclxuICAgIGNhc2UgVWlQcmVzZW50YXRpb24uSGlkZGVuOlxyXG4gICAgICByZXR1cm4gbmV3IEhpZGRlbk1hbmFnZW1lbnRJbmZvKG1hbmFnZW1lbnRJbmZvKTtcclxuICAgIGNhc2UgVWlQcmVzZW50YXRpb24uRHJvcGRvd246XHJcbiAgICAgIHJldHVybiBuZXcgRHJvcGRvd25NYW5hZ2VtZW50SW5mbyhtYW5hZ2VtZW50SW5mbywgYmFza2V0U2VydmljZSk7XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICBjb25zdCB0bXA6IG5ldmVyID0gbWFuYWdlbWVudEluZm8udWlQcmVzZW50YXRpb247XHJcbiAgICAgIGNvbnNvbGUubG9nKHRtcCk7XHJcbiAgfVxyXG4gIHJldHVybiBudWxsO1xyXG59O1xyXG4iXX0=
|
|
@@ -26,4 +26,5 @@ ModalTypes.ModalFlightFareComponent = new ModalTypes('ModalFlightFareComponent')
|
|
|
26
26
|
ModalTypes.FlightExtrasDialogComponent = new ModalTypes('FlightExtrasDialogComponent');
|
|
27
27
|
ModalTypes.OfflineRequestDialogComponent = new ModalTypes('OfflineRequestDialogComponent');
|
|
28
28
|
ModalTypes.RequiresReasonDialogComponent = new ModalTypes('RequiresReasonDialogComponent');
|
|
29
|
-
|
|
29
|
+
ModalTypes.DifferentInvokdedUserComponent = new ModalTypes('DifferentInvokdedUserComponent');
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtdHlwZXMuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29idHNlcnZpY2VzL2Jhc2Uvc3JjL2xpYi92ZW5kb3IvY2xhc3Nlcy9tb2RhbC10eXBlcy5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxVQUFVO0lBb0RyQixZQUE2QixLQUFhO1FBQWIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQWZsQyxlQUFVLEdBQVEsSUFBSSxDQUFDO1FBZ0I1QixVQUFrQyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNwRCxDQUFDO0lBaEJELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsS0FBVTtRQUN0QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsT0FBTyxDQUFDLElBQUksQ0FDViwyQkFBMkIsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUN4QyxJQUFJLENBQUMsVUFBVSxFQUNmLEtBQUssQ0FDTixDQUFDO1NBQ0g7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDOztBQWxEZSw4QkFBbUIsR0FBRyxJQUFJLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQzVELHFDQUEwQixHQUFHLElBQUksVUFBVSxDQUN6RCw0QkFBNEIsQ0FDN0IsQ0FBQztBQUNjLDZCQUFrQixHQUFHLElBQUksVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDMUQscUJBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMxQywwQkFBZSxHQUFHLElBQUksVUFBVSxDQUM5QywrQkFBK0IsQ0FDaEMsQ0FBQztBQUNjLHdDQUE2QixHQUFHLElBQUksVUFBVSxDQUM1RCwrQkFBK0IsQ0FDaEMsQ0FBQztBQUNjLHNDQUEyQixHQUFHLElBQUksVUFBVSxDQUMxRCw2QkFBNkIsQ0FDOUIsQ0FBQztBQUNjLHFDQUEwQixHQUFHLElBQUksVUFBVSxDQUN6RCw0QkFBNEIsQ0FDN0IsQ0FBQztBQUNjLG1DQUF3QixHQUFHLElBQUksVUFBVSxDQUN2RCwwQkFBMEIsQ0FDM0IsQ0FBQztBQUNjLHNDQUEyQixHQUFHLElBQUksVUFBVSxDQUMxRCw2QkFBNkIsQ0FDOUIsQ0FBQztBQUNjLHdDQUE2QixHQUFHLElBQUksVUFBVSxDQUM1RCwrQkFBK0IsQ0FDaEMsQ0FBQztBQUVjLHdDQUE2QixHQUFHLElBQUksVUFBVSxDQUM1RCwrQkFBK0IsQ0FDaEMsQ0FBQztBQUVjLHlDQUE4QixHQUFHLElBQUksVUFBVSxDQUM3RCxnQ0FBZ0MsQ0FDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBNb2RhbFR5cGVzIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgTW9kYWxFcnJvckNvbXBvbmVudCA9IG5ldyBNb2RhbFR5cGVzKCdNb2RhbEVycm9yQ29tcG9uZW50Jyk7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1vZGFsTmV0V29ya0Vycm9yQ29tcG9uZW50ID0gbmV3IE1vZGFsVHlwZXMoXHJcbiAgICAnTW9kYWxOZXR3b3JrRXJyb3JDb21wb25lbnQnXHJcbiAgKTtcclxuICBzdGF0aWMgcmVhZG9ubHkgQmFzZU1vZGFsQ29tcG9uZW50ID0gbmV3IE1vZGFsVHlwZXMoJ0Jhc2VNb2RhbENvbXBvbmVudCcpO1xyXG4gIHN0YXRpYyByZWFkb25seSBBdXRvTG9nb3V0ID0gbmV3IE1vZGFsVHlwZXMoJ0F1dG9Mb2dvdXQnKTtcclxuICBzdGF0aWMgcmVhZG9ubHkgUmlza0FsZXJ0RGV0YWlsID0gbmV3IE1vZGFsVHlwZXMoXHJcbiAgICAnUmlza0FsZXJ0RGV0YWlsTW9kYWxDb21wb25lbnQnXHJcbiAgKTtcclxuICBzdGF0aWMgcmVhZG9ubHkgQWx0ZXJuYXRpdmVSYWlsTW9kYWxDb21wb25lbnQgPSBuZXcgTW9kYWxUeXBlcyhcclxuICAgICdBbHRlcm5hdGl2ZVJhaWxNb2RhbENvbXBvbmVudCdcclxuICApO1xyXG4gIHN0YXRpYyByZWFkb25seSBXYXJuaW5nUmVtb3ZlTW9kYWxDb21wb25lbnQgPSBuZXcgTW9kYWxUeXBlcyhcclxuICAgICdXYXJuaW5nUmVtb3ZlTW9kYWxDb21wb25lbnQnXHJcbiAgKTtcclxuICBzdGF0aWMgcmVhZG9ubHkgUmFpbFRpY2tldHNEaWFsb2dDb21wb25lbnQgPSBuZXcgTW9kYWxUeXBlcyhcclxuICAgICdSYWlsVGlja2V0c0RpYWxvZ0NvbXBvbmVudCdcclxuICApO1xyXG4gIHN0YXRpYyByZWFkb25seSBNb2RhbEZsaWdodEZhcmVDb21wb25lbnQgPSBuZXcgTW9kYWxUeXBlcyhcclxuICAgICdNb2RhbEZsaWdodEZhcmVDb21wb25lbnQnXHJcbiAgKTtcclxuICBzdGF0aWMgcmVhZG9ubHkgRmxpZ2h0RXh0cmFzRGlhbG9nQ29tcG9uZW50ID0gbmV3IE1vZGFsVHlwZXMoXHJcbiAgICAnRmxpZ2h0RXh0cmFzRGlhbG9nQ29tcG9uZW50J1xyXG4gICk7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE9mZmxpbmVSZXF1ZXN0RGlhbG9nQ29tcG9uZW50ID0gbmV3IE1vZGFsVHlwZXMoXHJcbiAgICAnT2ZmbGluZVJlcXVlc3REaWFsb2dDb21wb25lbnQnXHJcbiAgKTtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IFJlcXVpcmVzUmVhc29uRGlhbG9nQ29tcG9uZW50ID0gbmV3IE1vZGFsVHlwZXMoXHJcbiAgICAnUmVxdWlyZXNSZWFzb25EaWFsb2dDb21wb25lbnQnXHJcbiAgKTtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IERpZmZlcmVudEludm9rZGVkVXNlckNvbXBvbmVudCA9IG5ldyBNb2RhbFR5cGVzKFxyXG4gICAgJ0RpZmZlcmVudEludm9rZGVkVXNlckNvbXBvbmVudCdcclxuICApO1xyXG5cclxuICBwcml2YXRlIF9jb21wb25lbnQ6IGFueSA9IG51bGw7XHJcbiAgZ2V0IGNvbXBvbmVudCgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbXBvbmVudDtcclxuICB9XHJcblxyXG4gIHNldCBjb21wb25lbnQodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuX2NvbXBvbmVudCkge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgJ0NvbXBuZW50IGFscmVhZHkgc2V0IGZvciAnICsgdGhpcy52YWx1ZSxcclxuICAgICAgICB0aGlzLl9jb21wb25lbnQsXHJcbiAgICAgICAgdmFsdWVcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2NvbXBvbmVudCA9IHZhbHVlO1xyXG4gIH1cclxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHVibGljIHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIChNb2RhbFR5cGVzIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3ZhbHVlXSA9IHRoaXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|