@coolon/angular-ui-powerups 0.0.91 → 0.0.93
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/bundles/coolon-angular-ui-powerups.umd.js +2104 -1817
- package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
- package/coolon-angular-ui-powerups.d.ts +23 -19
- package/coolon-angular-ui-powerups.metadata.json +1 -1
- package/esm2015/coolon-angular-ui-powerups.js +23 -19
- package/esm2015/index.js +2 -2
- package/esm2015/lib/interaction/services/dialog-interaction.service.js +3 -3
- package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +52 -10
- package/esm2015/lib/place/guards/abstract-enter-place.guard.js +296 -0
- package/esm2015/lib/place/guards/leave-place.guard.js +47 -0
- package/esm2015/lib/place/guards/noop-auth-guard.service.js +30 -0
- package/esm2015/lib/place/index.js +5 -3
- package/esm2015/lib/place/navigation-session.js +7 -18
- package/esm2015/lib/place/place-router.js +60 -9
- package/esm2015/lib/place/place.decorator.js +1 -1
- package/esm2015/lib/place/place.module.js +4 -2
- package/esm2015/lib/place/places/noop-gateway-place.component.js +58 -0
- package/esm2015/public_api.js +2 -2
- package/esm5/coolon-angular-ui-powerups.js +23 -19
- package/esm5/index.js +2 -2
- package/esm5/lib/interaction/services/dialog-interaction.service.js +3 -3
- package/esm5/lib/place/components/place-outlet/place-outlet.component.js +52 -10
- package/esm5/lib/place/guards/abstract-enter-place.guard.js +372 -0
- package/esm5/lib/place/guards/leave-place.guard.js +55 -0
- package/esm5/lib/place/guards/noop-auth-guard.service.js +39 -0
- package/esm5/lib/place/index.js +5 -3
- package/esm5/lib/place/navigation-session.js +6 -17
- package/esm5/lib/place/place-router.js +74 -8
- package/esm5/lib/place/place.decorator.js +1 -1
- package/esm5/lib/place/place.module.js +4 -2
- package/esm5/lib/place/places/noop-gateway-place.component.js +61 -0
- package/esm5/public_api.js +2 -2
- package/fesm2015/coolon-angular-ui-powerups.js +568 -355
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/fesm5/coolon-angular-ui-powerups.js +2048 -1766
- package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
- package/lib/place/components/place-outlet/place-outlet.component.d.ts +6 -2
- package/lib/place/{route/guards/enter-place-guard.service.d.ts → guards/abstract-enter-place.guard.d.ts} +9 -4
- package/lib/place/{route/guards → guards}/leave-place.guard.d.ts +2 -2
- package/lib/place/guards/noop-auth-guard.service.d.ts +5 -0
- package/lib/place/index.d.ts +4 -2
- package/lib/place/navigation-session.d.ts +2 -2
- package/lib/place/place-router.d.ts +8 -2
- package/lib/place/places/noop-gateway-place.component.d.ts +10 -0
- package/package.json +1 -1
- package/schematics/place-routes/place-builder.d.ts +2 -1
- package/schematics/place-routes/place-builder.js +11 -3
- package/schematics/place-routes/place-builder.js.map +1 -1
- package/schematics/place-routes/place-class-scanner.js +1 -0
- package/schematics/place-routes/place-class-scanner.js.map +1 -1
- package/schematics/place-routes/place-def.d.ts +0 -1
- package/schematics/place-routes/place-def.js +1 -14
- package/schematics/place-routes/place-def.js.map +1 -1
- package/schematics/place-routes/templates/place-destinations.ts.template +3 -2
- package/schematics/place-routes/templates/place-routes.ts.template +20 -4
- package/schematics/place-routes/templates/place-visits.ts.template +2 -1
- package/esm2015/lib/place/route/guards/enter-place-guard.service.js +0 -248
- package/esm2015/lib/place/route/guards/leave-place.guard.js +0 -47
- package/esm5/lib/place/route/guards/enter-place-guard.service.js +0 -278
- package/esm5/lib/place/route/guards/leave-place.guard.js +0 -55
|
@@ -5,11 +5,12 @@
|
|
|
5
5
|
import * as tslib_1 from "tslib";
|
|
6
6
|
import { Component, EventEmitter, Inject, Input, Optional, Output, SkipSelf, ViewChild } from '@angular/core';
|
|
7
7
|
import { Router, RouterOutlet } from '@angular/router';
|
|
8
|
-
import { DelegatingValueModel, Dsl, Guard, ListModel, MutableValueModel, StoreInListModel, UseDelegate } from '@coolon/pectin';
|
|
8
|
+
import { DelegatingValueModel, Dsl, Guard, ListModel, MutableValueModel, StoreInListModel, StoreInValueModel, UseDelegate, ValueModel } from '@coolon/pectin';
|
|
9
9
|
import * as _ from 'lodash';
|
|
10
10
|
import { DisposableComponent } from '../../../components/disposable-component';
|
|
11
11
|
import { AUP_PLACE_CONFIG } from '../../place-config';
|
|
12
12
|
import { PlaceRouter } from '../../place-router';
|
|
13
|
+
import { NoopGatewayPlace } from '../../places/noop-gateway-place.component';
|
|
13
14
|
import { LEFT_RIGHT_PLACE_ANIMATION } from './route-animations';
|
|
14
15
|
/**
|
|
15
16
|
* @record
|
|
@@ -35,9 +36,9 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
35
36
|
_this.router = router;
|
|
36
37
|
_this.placeRouter = placeRouter;
|
|
37
38
|
_this.placeConfig = placeConfig;
|
|
38
|
-
_this.animate = true;
|
|
39
39
|
_this.placeChanged = new EventEmitter();
|
|
40
40
|
_this._activePlace = new MutableValueModel();
|
|
41
|
+
_this._previousPlace = new MutableValueModel();
|
|
41
42
|
_this._activePlaceVisitModel = new DelegatingValueModel();
|
|
42
43
|
_this._inOutletActivation = new Guard();
|
|
43
44
|
_this._inOutletDeactivation = new Guard();
|
|
@@ -59,12 +60,32 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
59
60
|
.pluck('placeDefinition')
|
|
60
61
|
.pluckList('children')
|
|
61
62
|
.pluck('component');
|
|
63
|
+
// TODO: This is a hack to prevent animation during the NoopGatewayPlace
|
|
62
64
|
/** @type {?} */
|
|
63
|
-
var
|
|
65
|
+
var activePlaceType = chain(_this._activePlace).map((/**
|
|
66
|
+
* @param {?} p
|
|
67
|
+
* @return {?}
|
|
68
|
+
*/
|
|
69
|
+
function (p) {
|
|
70
|
+
return (/** @type {?} */ (p.constructor));
|
|
71
|
+
}), {
|
|
72
|
+
postponeWhile: chain(_this.activePlaceModel).isNil()
|
|
73
|
+
});
|
|
74
|
+
/** @type {?} */
|
|
75
|
+
var previousPlaceType = chain(_this._previousPlace).map((/**
|
|
64
76
|
* @param {?} p
|
|
65
77
|
* @return {?}
|
|
66
78
|
*/
|
|
67
79
|
function (p) { return (/** @type {?} */ (p.constructor)); }));
|
|
80
|
+
_this.ready = chain.reduce(activePlaceType, previousPlaceType, (/**
|
|
81
|
+
* @param {?} current
|
|
82
|
+
* @param {?} previous
|
|
83
|
+
* @return {?}
|
|
84
|
+
*/
|
|
85
|
+
function (current, previous) {
|
|
86
|
+
return !!current && current !== NoopGatewayPlace && previous !== NoopGatewayPlace;
|
|
87
|
+
}));
|
|
88
|
+
_this.enableAnimation = valueOf.all(_this.ready, _this.animateModel).areTruthy();
|
|
68
89
|
_this.placeAnimationOrder = chain(_this.customPlaceAnimationOrderModel)
|
|
69
90
|
.otherwise(defaultPlaceAnimationOrder)
|
|
70
91
|
.reduce((/**
|
|
@@ -74,14 +95,14 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
74
95
|
function (placesInOrder) {
|
|
75
96
|
/** @type {?} */
|
|
76
97
|
var placeIndex = 0;
|
|
77
|
-
if (
|
|
78
|
-
placeIndex = placesInOrder.indexOf(
|
|
79
|
-
if (_.isNil(_this.initialPlaceIndex)) {
|
|
98
|
+
if (activePlaceType.value) {
|
|
99
|
+
placeIndex = placesInOrder.indexOf(activePlaceType.value);
|
|
100
|
+
if (_.isNil(_this.initialPlaceIndex && placeIndex >= 0)) {
|
|
80
101
|
_this.initialPlaceIndex = placeIndex;
|
|
81
102
|
}
|
|
82
103
|
}
|
|
83
104
|
return _.isNil(_this.initialPlaceIndex) ? 0 : placeIndex - _this.initialPlaceIndex;
|
|
84
|
-
}), { dependsOn:
|
|
105
|
+
}), { dependsOn: activePlaceType });
|
|
85
106
|
// Push incoming changes into the component
|
|
86
107
|
_this.routerVisit = chain(_this._activePlace).pluck('placeDefinition').findIn(placeRouter.activeVisitIndex);
|
|
87
108
|
// Our router visit will change when our active is nullified during deactivation, which will push a null visit
|
|
@@ -270,7 +291,7 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
270
291
|
console.error(error);
|
|
271
292
|
}
|
|
272
293
|
}));
|
|
273
|
-
if (!this.
|
|
294
|
+
if (!this.enableAnimation.value) {
|
|
274
295
|
// we're not animating so trigger any post animation callbacks now.
|
|
275
296
|
this.animationDone();
|
|
276
297
|
}
|
|
@@ -291,6 +312,7 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
291
312
|
* @return {?}
|
|
292
313
|
*/
|
|
293
314
|
function () {
|
|
315
|
+
_this._previousPlace.value = _this._activePlace.value;
|
|
294
316
|
_this._activePlace.value = null;
|
|
295
317
|
_this._activatedRouteModel.value = null;
|
|
296
318
|
_this._placeDefinition.value = null;
|
|
@@ -328,7 +350,7 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
328
350
|
PlaceOutletComponent.decorators = [
|
|
329
351
|
{ type: Component, args: [{
|
|
330
352
|
selector: 'aup-place-outlet',
|
|
331
|
-
template: "<div class=\"router-outlet-container\"\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n</div>\n\n",
|
|
353
|
+
template: "<div class=\"router-outlet-container\"\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n [@.disabled]=\"!enableAnimation.value\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n</div>\n\n",
|
|
332
354
|
animations: [LEFT_RIGHT_PLACE_ANIMATION],
|
|
333
355
|
styles: [":host{display:flex;flex-direction:column;min-height:0;overflow-x:hidden}.router-outlet-container{flex:1;display:block;position:relative;min-height:0}router-outlet{display:none}"]
|
|
334
356
|
}] }
|
|
@@ -342,11 +364,20 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
342
364
|
]; };
|
|
343
365
|
PlaceOutletComponent.propDecorators = {
|
|
344
366
|
animate: [{ type: Input }],
|
|
367
|
+
animateModel: [{ type: Input, args: ['animateModel',] }],
|
|
345
368
|
customPlaceAnimationOrderModel: [{ type: Input, args: ['placeAnimationOrderModel',] }],
|
|
346
369
|
customPlaceAnimationOrder: [{ type: Input, args: ['placeAnimationOrder',] }],
|
|
347
370
|
placeChanged: [{ type: Output }],
|
|
348
371
|
routerOut: [{ type: ViewChild, args: ['routeOutlet', { static: true },] }]
|
|
349
372
|
};
|
|
373
|
+
tslib_1.__decorate([
|
|
374
|
+
StoreInValueModel('animateModel'),
|
|
375
|
+
tslib_1.__metadata("design:type", Boolean)
|
|
376
|
+
], PlaceOutletComponent.prototype, "animate", void 0);
|
|
377
|
+
tslib_1.__decorate([
|
|
378
|
+
UseDelegate({ defaultValue: true }),
|
|
379
|
+
tslib_1.__metadata("design:type", ValueModel)
|
|
380
|
+
], PlaceOutletComponent.prototype, "animateModel", void 0);
|
|
350
381
|
tslib_1.__decorate([
|
|
351
382
|
UseDelegate(),
|
|
352
383
|
tslib_1.__metadata("design:type", ListModel)
|
|
@@ -362,6 +393,8 @@ if (false) {
|
|
|
362
393
|
/** @type {?} */
|
|
363
394
|
PlaceOutletComponent.prototype.animate;
|
|
364
395
|
/** @type {?} */
|
|
396
|
+
PlaceOutletComponent.prototype.animateModel;
|
|
397
|
+
/** @type {?} */
|
|
365
398
|
PlaceOutletComponent.prototype.customPlaceAnimationOrderModel;
|
|
366
399
|
/** @type {?} */
|
|
367
400
|
PlaceOutletComponent.prototype.customPlaceAnimationOrder;
|
|
@@ -374,6 +407,11 @@ if (false) {
|
|
|
374
407
|
* @private
|
|
375
408
|
*/
|
|
376
409
|
PlaceOutletComponent.prototype._activePlace;
|
|
410
|
+
/**
|
|
411
|
+
* @type {?}
|
|
412
|
+
* @private
|
|
413
|
+
*/
|
|
414
|
+
PlaceOutletComponent.prototype._previousPlace;
|
|
377
415
|
/**
|
|
378
416
|
* @type {?}
|
|
379
417
|
* @private
|
|
@@ -426,6 +464,10 @@ if (false) {
|
|
|
426
464
|
* @private
|
|
427
465
|
*/
|
|
428
466
|
PlaceOutletComponent.prototype.routerVisit;
|
|
467
|
+
/** @type {?} */
|
|
468
|
+
PlaceOutletComponent.prototype.ready;
|
|
469
|
+
/** @type {?} */
|
|
470
|
+
PlaceOutletComponent.prototype.enableAnimation;
|
|
429
471
|
/**
|
|
430
472
|
* @type {?}
|
|
431
473
|
* @private
|
|
@@ -439,4 +481,4 @@ if (false) {
|
|
|
439
481
|
/** @type {?} */
|
|
440
482
|
PlaceOutletComponent.prototype.placeConfig;
|
|
441
483
|
}
|
|
442
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utb3V0bGV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9jb21wb25lbnRzL3BsYWNlLW91dGxldC9wbGFjZS1vdXRsZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFrQixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUdMLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsS0FBSyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBRWhCLFdBQVcsRUFHWixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLG9CQUFvQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdqRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUdoRSx1QkFNQzs7O0lBTEMsbUNBQXlDOzs7OztJQUV6Qyw2REFBbUQ7Ozs7SUFFbkQsa0RBQXFCOztBQUd2QjtJQU0wQyxnREFBbUI7SUFvQzNELDhCQUE2QixNQUFjLEVBQ2QsV0FBd0IsRUFDTSxXQUF3QixFQUMvQyxZQUFrQztRQUh0RSxZQUlFLGlCQUFPLFNBaURSO1FBckQ0QixZQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVcsR0FBWCxXQUFXLENBQWE7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QWdGOzs7OztJQUVoRixnREFBNkU7Ozs7O0lBQzdFLGlEQUFtRTs7SUFDbkUsbURBQTZEOzs7OztJQUU3RCxpREFBeUM7Ozs7O0lBQ3pDLDJDQUE0Qzs7Ozs7SUFFaEMsc0NBQStCOzs7OztJQUMvQiwyQ0FBeUM7O0lBQ3pDLDJDQUF1RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNraXBTZWxmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIFJvdXRlck91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBCb29sZWFuVmFsdWVNb2RlbENoYWluLFxuICBDb25zdHJ1Y3RhYmxlLFxuICBEZWxlZ2F0aW5nVmFsdWVNb2RlbCxcbiAgRHNsLFxuICBHdWFyZCxcbiAgTGlzdE1vZGVsLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgU3RvcmVJbkxpc3RNb2RlbCxcbiAgVHJhY2UsXG4gIFVzZURlbGVnYXRlLFxuICBWYWx1ZU1vZGVsLFxuICBWYWx1ZU1vZGVsQ2hhaW5cbn0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRGlzcG9zYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZGlzcG9zYWJsZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgQVVQX1BMQUNFX0NPTkZJRywgUGxhY2VDb25maWcgfSBmcm9tICcuLi8uLi9wbGFjZS1jb25maWcnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBQbGFjZVJvdXRlciB9IGZyb20gJy4uLy4uL3BsYWNlLXJvdXRlcic7XG5cbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vLi4vdmlzaXQnO1xuaW1wb3J0IHsgTEVGVF9SSUdIVF9QTEFDRV9BTklNQVRJT04gfSBmcm9tICcuL3JvdXRlLWFuaW1hdGlvbnMnO1xuXG4vLyBRdWljayBoYWNrIHRvIGF2b2lkIGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiB0aGlzIGFuZCBQbGFjZUNvbXBvbmVudHMuXG5pbnRlcmZhY2UgUGxhY2VSZWYge1xuICByZWFkb25seSBwbGFjZURlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvblxuXG4gIGluaXRpYWxpc2VCaW5kaW5ncyhwYXJhbTogVmFsdWVNb2RlbDxWaXNpdD4pOiB2b2lkO1xuXG4gIG9uUGxhY2VSZWFkeSgpOiB2b2lkO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXAtcGxhY2Utb3V0bGV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BsYWNlLW91dGxldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BsYWNlLW91dGxldC5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbTEVGVF9SSUdIVF9QTEFDRV9BTklNQVRJT05dXG59KVxuZXhwb3J0IGNsYXNzIFBsYWNlT3V0bGV0Q29tcG9uZW50IGV4dGVuZHMgRGlzcG9zYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KClcbiAgYW5pbWF0ZSA9IHRydWU7XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3BsYWNlQW5pbWF0aW9uT3JkZXJNb2RlbCcpIEBVc2VEZWxlZ2F0ZSgpXG4gIGN1c3RvbVBsYWNlQW5pbWF0aW9uT3JkZXJNb2RlbDogTGlzdE1vZGVsPENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+PjtcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgncGxhY2VBbmltYXRpb25PcmRlcicpIEBTdG9yZUluTGlzdE1vZGVsKCdjdXN0b21QbGFjZUFuaW1hdGlvbk9yZGVyTW9kZWwnKVxuICBjdXN0b21QbGFjZUFuaW1hdGlvbk9yZGVyOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PltdO1xuXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBwbGFjZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFBsYWNlQ29tcG9uZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3JvdXRlT3V0bGV0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcm91dGVyT3V0OiBSb3V0ZXJPdXRsZXQ7XG5cblxuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVQbGFjZSA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxQbGFjZUNvbXBvbmVudD4oKTtcbiAgcHJpdmF0ZSBfYWN0aXZlUGxhY2VWaXNpdE1vZGVsID0gbmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPFZpc2l0PigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2luT3V0bGV0QWN0aXZhdGlvbiA9IG5ldyBHdWFyZCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbk91dGxldERlYWN0aXZhdGlvbiA9IG5ldyBHdWFyZCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbk91dGxldFVwZGF0ZTogQm9vbGVhblZhbHVlTW9kZWxDaGFpbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5Sb3V0ZVZpc2l0VXBkYXRlID0gbmV3IEd1YXJkKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2YXRlZFJvdXRlTW9kZWwgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8QWN0aXZhdGVkUm91dGU+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcGxhY2VEZWZpbml0aW9uID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPFBsYWNlRGVmaW5pdGlvbj4oKTtcbiAgcHJpdmF0ZSBwYXJlbnRPdXRsZXRNb2RlbDogTXV0YWJsZVZhbHVlTW9kZWw8UGxhY2VPdXRsZXRDb21wb25lbnQ+O1xuICBwdWJsaWMgcmVhZG9ubHkgcGxhY2VBbmltYXRpb25PcmRlcjogVmFsdWVNb2RlbENoYWluPG51bWJlcj47XG5cbiAgcHJpdmF0ZSBpbml0aWFsUGxhY2VJbmRleDogbnVtYmVyID0gbnVsbDtcbiAgcHJpdmF0ZSByb3V0ZXJWaXNpdDogVmFsdWVNb2RlbENoYWluPFZpc2l0PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlUm91dGVyOiBQbGFjZVJvdXRlcixcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChBVVBfUExBQ0VfQ09ORklHKSByZWFkb25seSBwbGFjZUNvbmZpZzogUGxhY2VDb25maWcsXG4gICAgICAgICAgICAgIEBTa2lwU2VsZigpIEBPcHRpb25hbCgpIHBhcmVudE91dGxldDogUGxhY2VPdXRsZXRDb21wb25lbnQpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG5cbiAgICB0aGlzLnBhcmVudE91dGxldE1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsKHBhcmVudE91dGxldCk7XG4gICAgdGhpcy5fYWN0aXZlUGxhY2VWaXNpdE1vZGVsLnNldERlbGVnYXRlKG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxWaXNpdD4oKSk7XG4gICAgdGhpcy5faW5PdXRsZXRVcGRhdGUgPSB2YWx1ZU9mLmFueSh0aGlzLl9pbk91dGxldERlYWN0aXZhdGlvbiwgdGhpcy5faW5PdXRsZXRBY3RpdmF0aW9uKS5hcmVUcnV0aHkoKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQbGFjZUFuaW1hdGlvbk9yZGVyID0gY2hhaW4odGhpcy5wYXJlbnRPdXRsZXRNb2RlbClcbiAgICAgIC5wdWxsVmFsdWVNb2RlbChvID0+IG8uYWN0aXZlUGxhY2VNb2RlbClcbiAgICAgIC5wbHVjaygncGxhY2VEZWZpbml0aW9uJylcbiAgICAgIC5wbHVja0xpc3QoJ2NoaWxkcmVuJylcbiAgICAgIC5wbHVjaygnY29tcG9uZW50Jyk7XG5cbiAgICBjb25zdCBhY3RpdmF0ZVBsYWNlVHlwZSA9IGNoYWluKHRoaXMuYWN0aXZlUGxhY2VNb2RlbCkubWFwKHAgPT4gcC5jb25zdHJ1Y3RvciBhcyBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik7XG4gICAgdGhpcy5wbGFjZUFuaW1hdGlvbk9yZGVyID0gY2hhaW4odGhpcy5jdXN0b21QbGFjZUFuaW1hdGlvbk9yZGVyTW9kZWwpXG4gICAgICAub3RoZXJ3aXNlKGRlZmF1bHRQbGFjZUFuaW1hdGlvbk9yZGVyKVxuICAgICAgLnJlZHVjZSgocGxhY2VzSW5PcmRlcikgPT4ge1xuICAgICAgICBsZXQgcGxhY2VJbmRleCA9IDA7XG4gICAgICAgIGlmIChhY3RpdmF0ZVBsYWNlVHlwZS52YWx1ZSkge1xuICAgICAgICAgIHBsYWNlSW5kZXggPSBwbGFjZXNJbk9yZGVyLmluZGV4T2YoYWN0aXZhdGVQbGFjZVR5cGUudmFsdWUpO1xuICAgICAgICAgIGlmIChfLmlzTmlsKHRoaXMuaW5pdGlhbFBsYWNlSW5kZXgpKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxQbGFjZUluZGV4ID0gcGxhY2VJbmRleDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF8uaXNOaWwodGhpcy5pbml0aWFsUGxhY2VJbmRleCkgPyAwIDogcGxhY2VJbmRleCAtIHRoaXMuaW5pdGlhbFBsYWNlSW5kZXg7XG4gICAgICB9LCB7IGRlcGVuZHNPbjogYWN0aXZhdGVQbGFjZVR5cGUgfSk7XG5cbiAgICAvLyBQdXNoIGluY29taW5nIGNoYW5nZXMgaW50byB0aGUgY29tcG9uZW50XG4gICAgdGhpcy5yb3V0ZXJWaXNpdCA9IGNoYWluKHRoaXMuX2FjdGl2ZVBsYWNlKS5wbHVjaygncGxhY2VEZWZpbml0aW9uJykuZmluZEluKHBsYWNlUm91dGVyLmFjdGl2ZVZpc2l0SW5kZXgpO1xuICAgIC8vIE91ciByb3V0ZXIgdmlzaXQgd2lsbCBjaGFuZ2Ugd2hlbiBvdXIgYWN0aXZlIGlzIG51bGxpZmllZCBkdXJpbmcgZGVhY3RpdmF0aW9uLCB3aGljaCB3aWxsIHB1c2ggYSBudWxsIHZpc2l0XG4gICAgLy8gdGhlIHRoZSBkZWFjdGl2YXRlZCBjb21wb25lbnQsIHdoaWNoIHdpbGwgbnVrZSBpdCdzIHZpZXcgYmVmb3JlIHRoZSBhbmltYXRpb25zIGhhdmUgZmluaXNoZWQuXG4gICAgLy8gVGhlIHZpc2l0IHdpbGwgYWx3YXkgdXBkYXRlZCBhZnRlciB0aGUgcm91dGVyIHNlc3Npb24gaXMgZmluc2lzZWQgKHdoZW4gdGhlIG5ldyB2aXNpdHMgYXJlIHJlZ2lzdGVyZWQpIHNvXG4gICAgLy8gd2UgY2FuIHNhZmVseSBpZ25vcmUgaXQgZHVyaW5nIG91dGxldCBjaGFuZ2VzIGFzIHRoZXNlIGFsd2F5cyBoYXBwZW4gYmVmb3JlIHRoZSByb3V0ZXIgc2Vzc2lvbiBlbmRzLlxuICAgIHdoZW4udmFsdWVPZih0aGlzLnJvdXRlclZpc2l0KS5jaGFuZ2VzKCgpID0+IHRoaXMucHVzaFJvdXRlQ2hhbmdlc1RvVmlzaXQoKSwgeyB1bmxlc3M6IHRoaXMuX2luT3V0bGV0VXBkYXRlIH0pO1xuXG4gICAgLy8gSGFuZGxlIGNvbXBvbmVudCBiYXNlZCBjaGFuZ2VzXG4gICAgd2hlbi52YWx1ZU9mKHRoaXMuX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbCkuY2hhbmdlcygobmV4dCwgcHJldmlvdXMpID0+IHtcbiAgICAgIHRoaXMucHVzaFZpc2l0Q2hhbmdlc1RvUm91dGUobmV4dCwgcHJldmlvdXMpO1xuICAgIH0sIHtcbiAgICAgIHVubGVzczogdGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbkFjdGl2ZVxuICAgIH0pO1xuXG4gICAgY2hhaW4odGhpcy5fYWN0aXZlUGxhY2UpXG4gICAgICAucG9zdHBvbmVXaGlsZShwbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbkFjdGl2ZSlcbiAgICAgIC5zdWJzY3JpYmUocGxhY2UgPT4gdGhpcy5wbGFjZUNoYW5nZWQuZW1pdChwbGFjZSkpO1xuXG4gICAgLy8gY29uc3QgdHhvID0gbmV3IFRyYW5zYWN0aW9uT2JzZXJ2ZXIoKS5vbkV2ZW50KGUgPT4gY29uc29sZS5sb2coZS50b1N0cmluZygpKSk7XG4gICAgLy8gdHhvLm9ic2VydmUoJ2luUm91dGVWaXNpdFVwZGF0ZScsIGluUm91dGVWaXNpdFVwZGF0ZSk7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgZ2V0QW5pbWF0aW9uT3JkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2VBbmltYXRpb25PcmRlci52YWx1ZTtcbiAgfVxuXG4gIGdldCBhbmltYXRpb25EdXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5wbGFjZUNvbmZpZyAmJiB0aGlzLnBsYWNlQ29uZmlnLmFuaW1hdGlvbkR1cmF0aW9uID8gdGhpcy5wbGFjZUNvbmZpZy5hbmltYXRpb25EdXJhdGlvbiA6ICc1MDBtcyc7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBuYXZpZ2F0ZSh2aXNpdDogVmlzaXQpIHtcbiAgICAvLyBjb25zb2xlLmxvZyh7IGFjdGl2YXRlZFJvdXRlOiB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlIH0pO1xuICAgIHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGUodmlzaXQsIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucGFyZW50T3V0bGV0ID8gdGhpcy5wYXJlbnRPdXRsZXQuYWN0aXZhdGVkUm91dGVNb2RlbC52YWx1ZSA6IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBwYXJlbnRPdXRsZXQoKTogUGxhY2VPdXRsZXRDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLnBhcmVudE91dGxldE1vZGVsLnZhbHVlO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgcHVzaFJvdXRlQ2hhbmdlc1RvVmlzaXQoKSB7XG4gICAgY29uc3QgdmlzaXQgPSB0aGlzLnJvdXRlclZpc2l0LnZhbHVlO1xuICAgIC8vIGNvbnNvbGUubG9nKHtcbiAgICAvLyAgIHZpc2l0LFxuICAgIC8vICAgcGxhY2U6IHZpc2l0ID8gdmlzaXQucGxhY2VEZWZpbml0aW9uLmNvbXBvbmVudCA6IG51bGwsXG4gICAgLy8gICBpbk91dGxldEFjdGl2YXRpb246IHRoaXMuX2luT3V0bGV0QWN0aXZhdGlvbi52YWx1ZSxcbiAgICAvLyAgIGluUm91dGluZ1Nlc3Npb246IHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb25BY3RpdmUudmFsdWVcbiAgICAvLyB9KTtcbiAgICBpZiAodmlzaXQpIHsgLy8gY2FuIGJlIG51bGwgd2hpbGUgdGhlIHBsYWNlIGFuZCBpbmRleCBzeW5jIHVwXG4gICAgICB0aGlzLl9pblJvdXRlVmlzaXRVcGRhdGUud2hpbGVUcnVlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fYWN0aXZlUGxhY2VWaXNpdE1vZGVsLnZhbHVlID0gdmlzaXQ7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdXNoVmlzaXRDaGFuZ2VzVG9Sb3V0ZShuZXh0OiBWaXNpdCwgcHJldmlvdXM6IFZpc2l0KSB7XG4gICAgY29uc3QgYWN0aXZhdGVkUm91dGUgPSB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlO1xuICAgIHRoaXMucGxhY2VSb3V0ZXIucHVzaFZpc2l0Q2hhbmdlc1RvUm91dGUoYWN0aXZhdGVkUm91dGUsIHByZXZpb3VzLCBuZXh0KTtcbiAgfVxuXG4gIGdldCBhY3RpdmVQbGFjZU1vZGVsKCk6IFZhbHVlTW9kZWw8UGxhY2VDb21wb25lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlUGxhY2UucmVhZG9ubHk7XG4gIH1cblxuICBnZXQgYWN0aXZhdGVkUm91dGVNb2RlbCgpOiBWYWx1ZU1vZGVsPEFjdGl2YXRlZFJvdXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2YXRlZFJvdXRlTW9kZWwucmVhZG9ubHk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvbk91dGxldEFjdGl2YXRlZChyb3V0ZXJPdXRsZXQ6IFJvdXRlck91dGxldCwgcGxhY2U6IFBsYWNlQ29tcG9uZW50KSB7XG4gICAgdGhpcy5faW5PdXRsZXRBY3RpdmF0aW9uLndoaWxlVHJ1ZSgoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLl9hY3RpdmVQbGFjZS52YWx1ZSA9IHBsYWNlO1xuICAgICAgICB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlID0gcm91dGVyT3V0bGV0LmFjdGl2YXRlZFJvdXRlO1xuICAgICAgICB0aGlzLl9wbGFjZURlZmluaXRpb24udmFsdWUgPSBwbGFjZS5wbGFjZURlZmluaXRpb247XG4gICAgICAgIGNvbnN0IHZpc2l0TW9kZWwgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8VmlzaXQ+KCk7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbC5zZXREZWxlZ2F0ZSh2aXNpdE1vZGVsKTtcbiAgICAgICAgcGxhY2UuaW5pdGlhbGlzZUJpbmRpbmdzKHZpc2l0TW9kZWwpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCF0aGlzLmFuaW1hdGUpIHtcbiAgICAgIC8vIHdlJ3JlIG5vdCBhbmltYXRpbmcgc28gdHJpZ2dlciBhbnkgcG9zdCBhbmltYXRpb24gY2FsbGJhY2tzIG5vdy5cbiAgICAgIHRoaXMuYW5pbWF0aW9uRG9uZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uT3V0bGV0RGVhY3RpdmF0ZWQoKSB7XG4gICAgdGhpcy5faW5PdXRsZXREZWFjdGl2YXRpb24ud2hpbGVUcnVlKCgpID0+IHtcbiAgICAgIHRoaXMuX2FjdGl2ZVBsYWNlLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuX2FjdGl2YXRlZFJvdXRlTW9kZWwudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5fcGxhY2VEZWZpbml0aW9uLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbC5zZXREZWxlZ2F0ZShudWxsKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFuaW1hdGlvblN0YXJ0ZWQoKSB7XG4gICAgLy8gY29uc29sZS5sb2coeyBhY3RpdmVQbGFjZTogdGhpcy5fYWN0aXZlUGxhY2UudmFsdWUgfSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhbmltYXRpb25Eb25lKCkge1xuICAgIGlmICh0aGlzLl9hY3RpdmVQbGFjZS52YWx1ZSkge1xuICAgICAgdGhpcy5fYWN0aXZlUGxhY2UudmFsdWUub25QbGFjZVJlYWR5KCk7XG4gICAgfVxuICB9XG5cblxufVxuIl19
|
|
484
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utb3V0bGV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9jb21wb25lbnRzL3BsYWNlLW91dGxldC9wbGFjZS1vdXRsZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFrQixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUdMLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsS0FBSyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsVUFBVSxFQUVYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFFbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRzdFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBR2hFLHVCQU1DOzs7SUFMQyxtQ0FBeUM7Ozs7O0lBRXpDLDZEQUFtRDs7OztJQUVuRCxrREFBcUI7O0FBR3ZCO0lBTTBDLGdEQUFtQjtJQTJDM0QsOEJBQTZCLE1BQWMsRUFDZCxXQUF3QixFQUNNLFdBQXdCLEVBQy9DLFlBQWtDO1FBSHRFLFlBSUUsaUJBQU8sU0E2RFI7UUFqRTRCLFlBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxpQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNNLGlCQUFXLEdBQVgsV0FBVyxDQUFhO1FBNUIxRSxrQkFBWSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBTTFDLGtCQUFZLEdBQUcsSUFBSSxpQkFBaUIsRUFBa0IsQ0FBQztRQUN2RCxvQkFBYyxHQUFHLElBQUksaUJBQWlCLEVBQWtCLENBQUM7UUFDekQsNEJBQXNCLEdBQUcsSUFBSSxvQkFBb0IsRUFBUyxDQUFDO1FBRTNELHlCQUFtQixHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDbEMsMkJBQXFCLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUVwQyx5QkFBbUIsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ2xDLDBCQUFvQixHQUFHLElBQUksaUJBQWlCLEVBQWtCLENBQUM7UUFFL0Qsc0JBQWdCLEdBQUcsSUFBSSxpQkFBaUIsRUFBbUIsQ0FBQztRQUlyRSx1QkFBaUIsR0FBVyxJQUFJLENBQUM7UUFXakMsSUFBQSwyQkFBa0YsRUFBaEYsZ0JBQUssRUFBRSxvQkFBTyxFQUFFLGtCQUFNLEVBQUUsY0FBSSxFQUFFLGdCQUFLLEVBQUUsb0JBQU8sRUFBRSxzQkFBa0M7UUFFeEYsS0FBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0QsS0FBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxJQUFJLGlCQUFpQixFQUFTLENBQUMsQ0FBQztRQUN4RSxLQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSSxDQUFDLHFCQUFxQixFQUFFLEtBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDOztZQUUvRiwwQkFBMEIsR0FBRyxLQUFLLENBQUMsS0FBSSxDQUFDLGlCQUFpQixDQUFDO2FBQzdELGNBQWM7Ozs7UUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxnQkFBZ0IsRUFBbEIsQ0FBa0IsRUFBQzthQUN2QyxLQUFLLENBQUMsaUJBQWlCLENBQUM7YUFDeEIsU0FBUyxDQUFDLFVBQVUsQ0FBQzthQUNyQixLQUFLLENBQUMsV0FBVyxDQUFDOzs7WUFJZixlQUFlLEdBQUcsS0FBSyxDQUFDLEtBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHOzs7O1FBQUMsVUFBQSxDQUFDO1lBQ3BELE9BQU8sbUJBQUEsQ0FBQyxDQUFDLFdBQVcsRUFBaUMsQ0FBQztRQUN4RCxDQUFDLEdBQUU7WUFDRCxhQUFhLEVBQUUsS0FBSyxDQUFDLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssRUFBRTtTQUNwRCxDQUFDOztZQUNJLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxLQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRzs7OztRQUFDLFVBQUEsQ0FBQyxXQUFJLG1CQUFBLENBQUMsQ0FBQyxXQUFXLEVBQWlDLEdBQUEsRUFBQztRQUM3RyxLQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLGlCQUFpQjs7Ozs7UUFBRSxVQUFDLE9BQU8sRUFBRSxRQUFRO1lBQzlFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLEtBQUssZ0JBQWdCLElBQUksUUFBUSxLQUFLLGdCQUFnQixDQUFDO1FBQ3BGLENBQUMsRUFBQyxDQUFDO1FBRUgsS0FBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRTlFLEtBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsS0FBSSxDQUFDLDhCQUE4QixDQUFDO2FBQ2xFLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQzthQUNyQyxNQUFNOzs7O1FBQUMsVUFBQyxhQUFhOztnQkFDaEIsVUFBVSxHQUFHLENBQUM7WUFDbEIsSUFBSSxlQUFlLENBQUMsS0FBSyxFQUFFO2dCQUN6QixVQUFVLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFELElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFJLENBQUMsaUJBQWlCLElBQUksVUFBVSxJQUFJLENBQUMsQ0FBQyxFQUFFO29CQUN0RCxLQUFJLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxDQUFDO2lCQUNyQzthQUNGO1lBQ0QsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxLQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDbkYsQ0FBQyxHQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFFckMsMkNBQTJDO1FBQzNDLEtBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDMUcsOEdBQThHO1FBQzlHLGdHQUFnRztRQUNoRyw0R0FBNEc7UUFDNUcsdUdBQXVHO1FBQ3ZHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU87OztRQUFDLGNBQU0sT0FBQSxLQUFJLENBQUMsdUJBQXVCLEVBQUUsRUFBOUIsQ0FBOEIsR0FBRSxFQUFFLE1BQU0sRUFBRSxLQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUUvRyxpQ0FBaUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxPQUFPOzs7OztRQUFDLFVBQUMsSUFBSSxFQUFFLFFBQVE7WUFDL0QsS0FBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQyxDQUFDLEdBQUU7WUFDRCxNQUFNLEVBQUUsS0FBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUI7U0FDakQsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLEtBQUksQ0FBQyxZQUFZLENBQUM7YUFDckIsYUFBYSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQzthQUNsRCxTQUFTOzs7O1FBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBN0IsQ0FBNkIsRUFBQyxDQUFDOztRQUVyRCxpRkFBaUY7UUFDakYseURBQXlEO0lBQzNELENBQUM7Ozs7SUFFRCx1Q0FBUTs7O0lBQVI7SUFDQSxDQUFDO0lBRUQsV0FBVzs7Ozs7SUFDWCxnREFBaUI7Ozs7O0lBQWpCO1FBQ0UsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxzQkFBSSxtREFBaUI7Ozs7UUFBckI7WUFDRSxPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQy9HLENBQUM7OztPQUFBO0lBRUQsV0FBVzs7Ozs7O0lBQ1gsdUNBQVE7Ozs7OztJQUFSLFVBQVMsS0FBWTtRQUNuQixvRUFBb0U7UUFDcEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFO1lBQy9CLFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUNuRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsc0JBQUksOENBQVk7Ozs7UUFBaEI7WUFDRSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7UUFDdEMsQ0FBQzs7O09BQUE7SUFFRCxXQUFXOzs7OztJQUNYLHNEQUF1Qjs7Ozs7SUFBdkI7UUFBQSxpQkFhQzs7WUFaTyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO1FBQ3BDLGdCQUFnQjtRQUNoQixXQUFXO1FBQ1gsMkRBQTJEO1FBQzNELHdEQUF3RDtRQUN4RCxxRUFBcUU7UUFDckUsTUFBTTtRQUNOLElBQUksS0FBSyxFQUFFLEVBQUUsZ0RBQWdEO1lBQzNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTOzs7WUFBQztnQkFDakMsS0FBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDNUMsQ0FBQyxFQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Ozs7OztJQUVELHNEQUF1Qjs7Ozs7SUFBdkIsVUFBd0IsSUFBVyxFQUFFLFFBQWU7O1lBQzVDLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELHNCQUFJLGtEQUFnQjs7OztRQUFwQjtZQUNFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDcEMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxxREFBbUI7Ozs7UUFBdkI7WUFDRSxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUM7UUFDNUMsQ0FBQzs7O09BQUE7SUFFRCxXQUFXOzs7Ozs7O0lBQ1gsZ0RBQWlCOzs7Ozs7O0lBQWpCLFVBQWtCLFlBQTBCLEVBQUUsS0FBcUI7UUFBbkUsaUJBaUJDO1FBaEJDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTOzs7UUFBQztZQUNqQyxJQUFJO2dCQUNGLEtBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDaEMsS0FBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsY0FBYyxDQUFDO2dCQUM5RCxLQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUM7O29CQUM5QyxVQUFVLEdBQUcsSUFBSSxpQkFBaUIsRUFBUztnQkFDakQsS0FBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDcEQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3RDO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN0QjtRQUNILENBQUMsRUFBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFO1lBQy9CLG1FQUFtRTtZQUNuRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRUQsV0FBVzs7Ozs7SUFDWCxrREFBbUI7Ozs7O0lBQW5CO1FBQUEsaUJBUUM7UUFQQyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUzs7O1FBQUM7WUFDbkMsS0FBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDcEQsS0FBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQy9CLEtBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3ZDLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ25DLEtBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVzs7Ozs7SUFDWCwrQ0FBZ0I7Ozs7O0lBQWhCO1FBQ0UseURBQXlEO0lBQzNELENBQUM7SUFFRCxXQUFXOzs7OztJQUNYLDRDQUFhOzs7OztJQUFiO1FBQ0UsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN4QztJQUNILENBQUM7O2dCQWxORixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIseWZBQTRDO29CQUU1QyxVQUFVLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQzs7aUJBQ3pDOzs7O2dCQXhDd0IsTUFBTTtnQkFvQnRCLFdBQVc7Z0RBa0VMLFFBQVEsWUFBSSxNQUFNLFNBQUMsZ0JBQWdCO2dCQUNFLG9CQUFvQix1QkFBekQsUUFBUSxZQUFJLFFBQVE7OzswQkE1Q2hDLEtBQUs7K0JBR0wsS0FBSyxTQUFDLGNBQWM7aURBSXBCLEtBQUssU0FBQywwQkFBMEI7NENBSWhDLEtBQUssU0FBQyxxQkFBcUI7K0JBRzNCLE1BQU07NEJBR04sU0FBUyxTQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7O0lBaEIxQztRQURVLGlCQUFpQixDQUFDLGNBQWMsQ0FBQzs7eURBQzFCO0lBR2pCO1FBRHdCLFdBQVcsQ0FBQyxFQUFDLFlBQVksRUFBRSxJQUFJLEVBQUMsQ0FBQzswQ0FDM0MsVUFBVTs4REFBVTtJQUlsQztRQURvQyxXQUFXLEVBQUU7MENBQ2pCLFNBQVM7Z0ZBQWdDO0lBSXpFO1FBRCtCLGdCQUFnQixDQUFDLGdDQUFnQyxDQUFDOzsyRUFDdEI7SUFpTTdELDJCQUFDO0NBQUEsQUFyTkQsQ0FNMEMsbUJBQW1CLEdBK001RDtTQS9NWSxvQkFBb0I7OztJQUUvQix1Q0FDaUI7O0lBRWpCLDRDQUNrQzs7SUFHbEMsOERBQ3lFOztJQUd6RSx5REFDMkQ7O0lBRTNELDRDQUMyRDs7SUFFM0QseUNBQ3dCOzs7OztJQUd4Qiw0Q0FBd0U7Ozs7O0lBQ3hFLDhDQUEwRTs7Ozs7SUFDMUUsc0RBQTRFOzs7OztJQUU1RSxtREFBbUQ7Ozs7O0lBQ25ELHFEQUFxRDs7Ozs7SUFDckQsK0NBQXlEOzs7OztJQUN6RCxtREFBbUQ7Ozs7O0lBQ25ELG9EQUFnRjs7Ozs7SUFFaEYsZ0RBQTZFOzs7OztJQUM3RSxpREFBbUU7O0lBQ25FLG1EQUE2RDs7Ozs7SUFFN0QsaURBQXlDOzs7OztJQUN6QywyQ0FBNEM7O0lBQzVDLHFDQUFnRDs7SUFDaEQsK0NBQXdEOzs7OztJQUc1QyxzQ0FBK0I7Ozs7O0lBQy9CLDJDQUF5Qzs7SUFDekMsMkNBQXVFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2tpcFNlbGYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgUm91dGVyT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW4sXG4gIENvbnN0cnVjdGFibGUsXG4gIERlbGVnYXRpbmdWYWx1ZU1vZGVsLFxuICBEc2wsXG4gIEd1YXJkLFxuICBMaXN0TW9kZWwsXG4gIE11dGFibGVWYWx1ZU1vZGVsLFxuICBTdG9yZUluTGlzdE1vZGVsLFxuICBTdG9yZUluVmFsdWVNb2RlbCxcbiAgVXNlRGVsZWdhdGUsXG4gIFZhbHVlTW9kZWwsXG4gIFZhbHVlTW9kZWxDaGFpblxufSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBEaXNwb3NhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9kaXNwb3NhYmxlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFjZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBBVVBfUExBQ0VfQ09ORklHLCBQbGFjZUNvbmZpZyB9IGZyb20gJy4uLy4uL3BsYWNlLWNvbmZpZyc7XG5pbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuLi8uLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7IFBsYWNlUm91dGVyIH0gZnJvbSAnLi4vLi4vcGxhY2Utcm91dGVyJztcbmltcG9ydCB7IE5vb3BHYXRld2F5UGxhY2UgfSBmcm9tICcuLi8uLi9wbGFjZXMvbm9vcC1nYXRld2F5LXBsYWNlLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vLi4vdmlzaXQnO1xuaW1wb3J0IHsgTEVGVF9SSUdIVF9QTEFDRV9BTklNQVRJT04gfSBmcm9tICcuL3JvdXRlLWFuaW1hdGlvbnMnO1xuXG4vLyBRdWljayBoYWNrIHRvIGF2b2lkIGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiB0aGlzIGFuZCBQbGFjZUNvbXBvbmVudHMuXG5pbnRlcmZhY2UgUGxhY2VSZWYge1xuICByZWFkb25seSBwbGFjZURlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvblxuXG4gIGluaXRpYWxpc2VCaW5kaW5ncyhwYXJhbTogVmFsdWVNb2RlbDxWaXNpdD4pOiB2b2lkO1xuXG4gIG9uUGxhY2VSZWFkeSgpOiB2b2lkO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXAtcGxhY2Utb3V0bGV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BsYWNlLW91dGxldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BsYWNlLW91dGxldC5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbTEVGVF9SSUdIVF9QTEFDRV9BTklNQVRJT05dXG59KVxuZXhwb3J0IGNsYXNzIFBsYWNlT3V0bGV0Q29tcG9uZW50IGV4dGVuZHMgRGlzcG9zYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgQFN0b3JlSW5WYWx1ZU1vZGVsKCdhbmltYXRlTW9kZWwnKVxuICBhbmltYXRlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgnYW5pbWF0ZU1vZGVsJykgQFVzZURlbGVnYXRlKHtkZWZhdWx0VmFsdWU6IHRydWV9KVxuICBhbmltYXRlTW9kZWw6IFZhbHVlTW9kZWw8Ym9vbGVhbj47XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3BsYWNlQW5pbWF0aW9uT3JkZXJNb2RlbCcpIEBVc2VEZWxlZ2F0ZSgpXG4gIGN1c3RvbVBsYWNlQW5pbWF0aW9uT3JkZXJNb2RlbDogTGlzdE1vZGVsPENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+PjtcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgncGxhY2VBbmltYXRpb25PcmRlcicpIEBTdG9yZUluTGlzdE1vZGVsKCdjdXN0b21QbGFjZUFuaW1hdGlvbk9yZGVyTW9kZWwnKVxuICBjdXN0b21QbGFjZUFuaW1hdGlvbk9yZGVyOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PltdO1xuXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBwbGFjZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFBsYWNlQ29tcG9uZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3JvdXRlT3V0bGV0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcm91dGVyT3V0OiBSb3V0ZXJPdXRsZXQ7XG5cblxuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVQbGFjZSA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxQbGFjZUNvbXBvbmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHJldmlvdXNQbGFjZSA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxQbGFjZUNvbXBvbmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlUGxhY2VWaXNpdE1vZGVsID0gbmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPFZpc2l0PigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2luT3V0bGV0QWN0aXZhdGlvbiA9IG5ldyBHdWFyZCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbk91dGxldERlYWN0aXZhdGlvbiA9IG5ldyBHdWFyZCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbk91dGxldFVwZGF0ZTogQm9vbGVhblZhbHVlTW9kZWxDaGFpbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5Sb3V0ZVZpc2l0VXBkYXRlID0gbmV3IEd1YXJkKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2YXRlZFJvdXRlTW9kZWwgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8QWN0aXZhdGVkUm91dGU+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcGxhY2VEZWZpbml0aW9uID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPFBsYWNlRGVmaW5pdGlvbj4oKTtcbiAgcHJpdmF0ZSBwYXJlbnRPdXRsZXRNb2RlbDogTXV0YWJsZVZhbHVlTW9kZWw8UGxhY2VPdXRsZXRDb21wb25lbnQ+O1xuICBwdWJsaWMgcmVhZG9ubHkgcGxhY2VBbmltYXRpb25PcmRlcjogVmFsdWVNb2RlbENoYWluPG51bWJlcj47XG5cbiAgcHJpdmF0ZSBpbml0aWFsUGxhY2VJbmRleDogbnVtYmVyID0gbnVsbDtcbiAgcHJpdmF0ZSByb3V0ZXJWaXNpdDogVmFsdWVNb2RlbENoYWluPFZpc2l0PjtcbiAgcHVibGljIHJlYWRvbmx5IHJlYWR5OiBWYWx1ZU1vZGVsQ2hhaW48Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBlbmFibGVBbmltYXRpb246IEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW47XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlUm91dGVyOiBQbGFjZVJvdXRlcixcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChBVVBfUExBQ0VfQ09ORklHKSByZWFkb25seSBwbGFjZUNvbmZpZzogUGxhY2VDb25maWcsXG4gICAgICAgICAgICAgIEBTa2lwU2VsZigpIEBPcHRpb25hbCgpIHBhcmVudE91dGxldDogUGxhY2VPdXRsZXRDb21wb25lbnQpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG5cbiAgICB0aGlzLnBhcmVudE91dGxldE1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsKHBhcmVudE91dGxldCk7XG4gICAgdGhpcy5fYWN0aXZlUGxhY2VWaXNpdE1vZGVsLnNldERlbGVnYXRlKG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxWaXNpdD4oKSk7XG4gICAgdGhpcy5faW5PdXRsZXRVcGRhdGUgPSB2YWx1ZU9mLmFueSh0aGlzLl9pbk91dGxldERlYWN0aXZhdGlvbiwgdGhpcy5faW5PdXRsZXRBY3RpdmF0aW9uKS5hcmVUcnV0aHkoKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQbGFjZUFuaW1hdGlvbk9yZGVyID0gY2hhaW4odGhpcy5wYXJlbnRPdXRsZXRNb2RlbClcbiAgICAgIC5wdWxsVmFsdWVNb2RlbChvID0+IG8uYWN0aXZlUGxhY2VNb2RlbClcbiAgICAgIC5wbHVjaygncGxhY2VEZWZpbml0aW9uJylcbiAgICAgIC5wbHVja0xpc3QoJ2NoaWxkcmVuJylcbiAgICAgIC5wbHVjaygnY29tcG9uZW50Jyk7XG5cblxuICAgIC8vIFRPRE86IFRoaXMgaXMgYSBoYWNrIHRvIHByZXZlbnQgYW5pbWF0aW9uIGR1cmluZyB0aGUgTm9vcEdhdGV3YXlQbGFjZVxuICAgIGNvbnN0IGFjdGl2ZVBsYWNlVHlwZSA9IGNoYWluKHRoaXMuX2FjdGl2ZVBsYWNlKS5tYXAocCA9PiB7XG4gICAgICByZXR1cm4gcC5jb25zdHJ1Y3RvciBhcyBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PjtcbiAgICB9LCB7XG4gICAgICBwb3N0cG9uZVdoaWxlOiBjaGFpbih0aGlzLmFjdGl2ZVBsYWNlTW9kZWwpLmlzTmlsKClcbiAgICB9KTtcbiAgICBjb25zdCBwcmV2aW91c1BsYWNlVHlwZSA9IGNoYWluKHRoaXMuX3ByZXZpb3VzUGxhY2UpLm1hcChwID0+IHAuY29uc3RydWN0b3IgYXMgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pO1xuICAgIHRoaXMucmVhZHkgPSBjaGFpbi5yZWR1Y2UoYWN0aXZlUGxhY2VUeXBlLCBwcmV2aW91c1BsYWNlVHlwZSwgKGN1cnJlbnQsIHByZXZpb3VzKSA9PiB7XG4gICAgICByZXR1cm4gISFjdXJyZW50ICYmIGN1cnJlbnQgIT09IE5vb3BHYXRld2F5UGxhY2UgJiYgcHJldmlvdXMgIT09IE5vb3BHYXRld2F5UGxhY2U7XG4gICAgfSk7XG5cbiAgICB0aGlzLmVuYWJsZUFuaW1hdGlvbiA9IHZhbHVlT2YuYWxsKHRoaXMucmVhZHksIHRoaXMuYW5pbWF0ZU1vZGVsKS5hcmVUcnV0aHkoKTtcblxuICAgIHRoaXMucGxhY2VBbmltYXRpb25PcmRlciA9IGNoYWluKHRoaXMuY3VzdG9tUGxhY2VBbmltYXRpb25PcmRlck1vZGVsKVxuICAgICAgLm90aGVyd2lzZShkZWZhdWx0UGxhY2VBbmltYXRpb25PcmRlcilcbiAgICAgIC5yZWR1Y2UoKHBsYWNlc0luT3JkZXIpID0+IHtcbiAgICAgICAgbGV0IHBsYWNlSW5kZXggPSAwO1xuICAgICAgICBpZiAoYWN0aXZlUGxhY2VUeXBlLnZhbHVlKSB7XG4gICAgICAgICAgcGxhY2VJbmRleCA9IHBsYWNlc0luT3JkZXIuaW5kZXhPZihhY3RpdmVQbGFjZVR5cGUudmFsdWUpO1xuICAgICAgICAgIGlmIChfLmlzTmlsKHRoaXMuaW5pdGlhbFBsYWNlSW5kZXggJiYgcGxhY2VJbmRleCA+PSAwKSkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsUGxhY2VJbmRleCA9IHBsYWNlSW5kZXg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfLmlzTmlsKHRoaXMuaW5pdGlhbFBsYWNlSW5kZXgpID8gMCA6IHBsYWNlSW5kZXggLSB0aGlzLmluaXRpYWxQbGFjZUluZGV4O1xuICAgICAgfSwgeyBkZXBlbmRzT246IGFjdGl2ZVBsYWNlVHlwZSB9KTtcblxuICAgIC8vIFB1c2ggaW5jb21pbmcgY2hhbmdlcyBpbnRvIHRoZSBjb21wb25lbnRcbiAgICB0aGlzLnJvdXRlclZpc2l0ID0gY2hhaW4odGhpcy5fYWN0aXZlUGxhY2UpLnBsdWNrKCdwbGFjZURlZmluaXRpb24nKS5maW5kSW4ocGxhY2VSb3V0ZXIuYWN0aXZlVmlzaXRJbmRleCk7XG4gICAgLy8gT3VyIHJvdXRlciB2aXNpdCB3aWxsIGNoYW5nZSB3aGVuIG91ciBhY3RpdmUgaXMgbnVsbGlmaWVkIGR1cmluZyBkZWFjdGl2YXRpb24sIHdoaWNoIHdpbGwgcHVzaCBhIG51bGwgdmlzaXRcbiAgICAvLyB0aGUgdGhlIGRlYWN0aXZhdGVkIGNvbXBvbmVudCwgd2hpY2ggd2lsbCBudWtlIGl0J3MgdmlldyBiZWZvcmUgdGhlIGFuaW1hdGlvbnMgaGF2ZSBmaW5pc2hlZC5cbiAgICAvLyBUaGUgdmlzaXQgd2lsbCBhbHdheSB1cGRhdGVkIGFmdGVyIHRoZSByb3V0ZXIgc2Vzc2lvbiBpcyBmaW5zaXNlZCAod2hlbiB0aGUgbmV3IHZpc2l0cyBhcmUgcmVnaXN0ZXJlZCkgc29cbiAgICAvLyB3ZSBjYW4gc2FmZWx5IGlnbm9yZSBpdCBkdXJpbmcgb3V0bGV0IGNoYW5nZXMgYXMgdGhlc2UgYWx3YXlzIGhhcHBlbiBiZWZvcmUgdGhlIHJvdXRlciBzZXNzaW9uIGVuZHMuXG4gICAgd2hlbi52YWx1ZU9mKHRoaXMucm91dGVyVmlzaXQpLmNoYW5nZXMoKCkgPT4gdGhpcy5wdXNoUm91dGVDaGFuZ2VzVG9WaXNpdCgpLCB7IHVubGVzczogdGhpcy5faW5PdXRsZXRVcGRhdGUgfSk7XG5cbiAgICAvLyBIYW5kbGUgY29tcG9uZW50IGJhc2VkIGNoYW5nZXNcbiAgICB3aGVuLnZhbHVlT2YodGhpcy5fYWN0aXZlUGxhY2VWaXNpdE1vZGVsKS5jaGFuZ2VzKChuZXh0LCBwcmV2aW91cykgPT4ge1xuICAgICAgdGhpcy5wdXNoVmlzaXRDaGFuZ2VzVG9Sb3V0ZShuZXh0LCBwcmV2aW91cyk7XG4gICAgfSwge1xuICAgICAgdW5sZXNzOiB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TZXNzaW9uQWN0aXZlXG4gICAgfSk7XG5cbiAgICBjaGFpbih0aGlzLl9hY3RpdmVQbGFjZSlcbiAgICAgIC5wb3N0cG9uZVdoaWxlKHBsYWNlUm91dGVyLm5hdmlnYXRpb25TZXNzaW9uQWN0aXZlKVxuICAgICAgLnN1YnNjcmliZShwbGFjZSA9PiB0aGlzLnBsYWNlQ2hhbmdlZC5lbWl0KHBsYWNlKSk7XG5cbiAgICAvLyBjb25zdCB0eG8gPSBuZXcgVHJhbnNhY3Rpb25PYnNlcnZlcigpLm9uRXZlbnQoZSA9PiBjb25zb2xlLmxvZyhlLnRvU3RyaW5nKCkpKTtcbiAgICAvLyB0eG8ub2JzZXJ2ZSgnaW5Sb3V0ZVZpc2l0VXBkYXRlJywgaW5Sb3V0ZVZpc2l0VXBkYXRlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgZ2V0QW5pbWF0aW9uT3JkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2VBbmltYXRpb25PcmRlci52YWx1ZTtcbiAgfVxuXG4gIGdldCBhbmltYXRpb25EdXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5wbGFjZUNvbmZpZyAmJiB0aGlzLnBsYWNlQ29uZmlnLmFuaW1hdGlvbkR1cmF0aW9uID8gdGhpcy5wbGFjZUNvbmZpZy5hbmltYXRpb25EdXJhdGlvbiA6ICc1MDBtcyc7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBuYXZpZ2F0ZSh2aXNpdDogVmlzaXQpIHtcbiAgICAvLyBjb25zb2xlLmxvZyh7IGFjdGl2YXRlZFJvdXRlOiB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlIH0pO1xuICAgIHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGUodmlzaXQsIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucGFyZW50T3V0bGV0ID8gdGhpcy5wYXJlbnRPdXRsZXQuYWN0aXZhdGVkUm91dGVNb2RlbC52YWx1ZSA6IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBwYXJlbnRPdXRsZXQoKTogUGxhY2VPdXRsZXRDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLnBhcmVudE91dGxldE1vZGVsLnZhbHVlO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgcHVzaFJvdXRlQ2hhbmdlc1RvVmlzaXQoKSB7XG4gICAgY29uc3QgdmlzaXQgPSB0aGlzLnJvdXRlclZpc2l0LnZhbHVlO1xuICAgIC8vIGNvbnNvbGUubG9nKHtcbiAgICAvLyAgIHZpc2l0LFxuICAgIC8vICAgcGxhY2U6IHZpc2l0ID8gdmlzaXQucGxhY2VEZWZpbml0aW9uLmNvbXBvbmVudCA6IG51bGwsXG4gICAgLy8gICBpbk91dGxldEFjdGl2YXRpb246IHRoaXMuX2luT3V0bGV0QWN0aXZhdGlvbi52YWx1ZSxcbiAgICAvLyAgIGluUm91dGluZ1Nlc3Npb246IHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb25BY3RpdmUudmFsdWVcbiAgICAvLyB9KTtcbiAgICBpZiAodmlzaXQpIHsgLy8gY2FuIGJlIG51bGwgd2hpbGUgdGhlIHBsYWNlIGFuZCBpbmRleCBzeW5jIHVwXG4gICAgICB0aGlzLl9pblJvdXRlVmlzaXRVcGRhdGUud2hpbGVUcnVlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fYWN0aXZlUGxhY2VWaXNpdE1vZGVsLnZhbHVlID0gdmlzaXQ7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdXNoVmlzaXRDaGFuZ2VzVG9Sb3V0ZShuZXh0OiBWaXNpdCwgcHJldmlvdXM6IFZpc2l0KSB7XG4gICAgY29uc3QgYWN0aXZhdGVkUm91dGUgPSB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlO1xuICAgIHRoaXMucGxhY2VSb3V0ZXIucHVzaFZpc2l0Q2hhbmdlc1RvUm91dGUoYWN0aXZhdGVkUm91dGUsIHByZXZpb3VzLCBuZXh0KTtcbiAgfVxuXG4gIGdldCBhY3RpdmVQbGFjZU1vZGVsKCk6IFZhbHVlTW9kZWw8UGxhY2VDb21wb25lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlUGxhY2UucmVhZG9ubHk7XG4gIH1cblxuICBnZXQgYWN0aXZhdGVkUm91dGVNb2RlbCgpOiBWYWx1ZU1vZGVsPEFjdGl2YXRlZFJvdXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2YXRlZFJvdXRlTW9kZWwucmVhZG9ubHk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvbk91dGxldEFjdGl2YXRlZChyb3V0ZXJPdXRsZXQ6IFJvdXRlck91dGxldCwgcGxhY2U6IFBsYWNlQ29tcG9uZW50KSB7XG4gICAgdGhpcy5faW5PdXRsZXRBY3RpdmF0aW9uLndoaWxlVHJ1ZSgoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLl9hY3RpdmVQbGFjZS52YWx1ZSA9IHBsYWNlO1xuICAgICAgICB0aGlzLl9hY3RpdmF0ZWRSb3V0ZU1vZGVsLnZhbHVlID0gcm91dGVyT3V0bGV0LmFjdGl2YXRlZFJvdXRlO1xuICAgICAgICB0aGlzLl9wbGFjZURlZmluaXRpb24udmFsdWUgPSBwbGFjZS5wbGFjZURlZmluaXRpb247XG4gICAgICAgIGNvbnN0IHZpc2l0TW9kZWwgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8VmlzaXQ+KCk7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVBsYWNlVmlzaXRNb2RlbC5zZXREZWxlZ2F0ZSh2aXNpdE1vZGVsKTtcbiAgICAgICAgcGxhY2UuaW5pdGlhbGlzZUJpbmRpbmdzKHZpc2l0TW9kZWwpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCF0aGlzLmVuYWJsZUFuaW1hdGlvbi52YWx1ZSkge1xuICAgICAgLy8gd2UncmUgbm90IGFuaW1hdGluZyBzbyB0cmlnZ2VyIGFueSBwb3N0IGFuaW1hdGlvbiBjYWxsYmFja3Mgbm93LlxuICAgICAgdGhpcy5hbmltYXRpb25Eb25lKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25PdXRsZXREZWFjdGl2YXRlZCgpIHtcbiAgICB0aGlzLl9pbk91dGxldERlYWN0aXZhdGlvbi53aGlsZVRydWUoKCkgPT4ge1xuICAgICAgdGhpcy5fcHJldmlvdXNQbGFjZS52YWx1ZSA9IHRoaXMuX2FjdGl2ZVBsYWNlLnZhbHVlO1xuICAgICAgdGhpcy5fYWN0aXZlUGxhY2UudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGVNb2RlbC52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLl9wbGFjZURlZmluaXRpb24udmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5fYWN0aXZlUGxhY2VWaXNpdE1vZGVsLnNldERlbGVnYXRlKG51bGwpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYW5pbWF0aW9uU3RhcnRlZCgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyh7IGFjdGl2ZVBsYWNlOiB0aGlzLl9hY3RpdmVQbGFjZS52YWx1ZSB9KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFuaW1hdGlvbkRvbmUoKSB7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZVBsYWNlLnZhbHVlKSB7XG4gICAgICB0aGlzLl9hY3RpdmVQbGFjZS52YWx1ZS5vblBsYWNlUmVhZHkoKTtcbiAgICB9XG4gIH1cblxuXG59XG4iXX0=
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import * as tslib_1 from "tslib";
|
|
6
|
+
import { lang } from '@coolon/pectin';
|
|
7
|
+
import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
|
|
8
|
+
import { Observable } from 'rxjs';
|
|
9
|
+
import { PlaceComponent } from '../place-component';
|
|
10
|
+
import { VisitSanitiser } from '../route/visit-sanitiser';
|
|
11
|
+
import { Visit } from '../visit';
|
|
12
|
+
/**
|
|
13
|
+
* @abstract
|
|
14
|
+
*/
|
|
15
|
+
var /**
|
|
16
|
+
* @abstract
|
|
17
|
+
*/
|
|
18
|
+
AbstractEnterPlaceGuard = /** @class */ (function () {
|
|
19
|
+
function AbstractEnterPlaceGuard(router, urlSerializer, placeRouter, placeHistory, injector) {
|
|
20
|
+
this.router = router;
|
|
21
|
+
this.urlSerializer = urlSerializer;
|
|
22
|
+
this.placeRouter = placeRouter;
|
|
23
|
+
this.placeHistory = placeHistory;
|
|
24
|
+
this.injector = injector;
|
|
25
|
+
}
|
|
26
|
+
// @Trace()
|
|
27
|
+
// @Trace()
|
|
28
|
+
/**
|
|
29
|
+
* @param {?} activatedRoute
|
|
30
|
+
* @param {?} state
|
|
31
|
+
* @return {?}
|
|
32
|
+
*/
|
|
33
|
+
AbstractEnterPlaceGuard.prototype.canActivate =
|
|
34
|
+
// @Trace()
|
|
35
|
+
/**
|
|
36
|
+
* @param {?} activatedRoute
|
|
37
|
+
* @param {?} state
|
|
38
|
+
* @return {?}
|
|
39
|
+
*/
|
|
40
|
+
function (activatedRoute, state) {
|
|
41
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
42
|
+
var _this = this;
|
|
43
|
+
return tslib_1.__generator(this, function (_a) {
|
|
44
|
+
return [2 /*return*/, this.interceptInitialRouteOtherwise(activatedRoute, state, (/**
|
|
45
|
+
* @return {?}
|
|
46
|
+
*/
|
|
47
|
+
function () {
|
|
48
|
+
return _this.authorisePlaceThen(activatedRoute, state, (/**
|
|
49
|
+
* @param {?} placeDefinition
|
|
50
|
+
* @return {?}
|
|
51
|
+
*/
|
|
52
|
+
function (placeDefinition) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
53
|
+
var params, parsedParams, initialVisit, sanitiser, sanitisedVisit, commands;
|
|
54
|
+
return tslib_1.__generator(this, function (_a) {
|
|
55
|
+
switch (_a.label) {
|
|
56
|
+
case 0:
|
|
57
|
+
// Parse our route params.
|
|
58
|
+
params = new AbstractEnterPlaceGuard.ConsolidatedParameterMap(activatedRoute.paramMap, activatedRoute.url);
|
|
59
|
+
parsedParams = placeDefinition.parseRouteParams(params);
|
|
60
|
+
initialVisit = this.placeRouter.navigationSession.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);
|
|
61
|
+
sanitiser = new VisitSanitiser(activatedRoute, this.router, this.placeHistory, this.injector);
|
|
62
|
+
return [4 /*yield*/, sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams))];
|
|
63
|
+
case 1:
|
|
64
|
+
sanitisedVisit = _a.sent();
|
|
65
|
+
// Save the visit with any updated parameters. We need to save it so we remember any non route parameters
|
|
66
|
+
this.placeRouter.navigationSession.storeVisit(sanitisedVisit);
|
|
67
|
+
if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {
|
|
68
|
+
// Regenerate the url
|
|
69
|
+
commands = this.placeRouter.parseUrl(state).createRedirectCommandsFor(sanitisedVisit);
|
|
70
|
+
console.log('##### Place Guard Redirect', commands);
|
|
71
|
+
return [2 /*return*/, this.router.createUrlTree(commands, {
|
|
72
|
+
replaceUrl: true,
|
|
73
|
+
skipLocationChange: false
|
|
74
|
+
})];
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
return [2 /*return*/, true];
|
|
78
|
+
}
|
|
79
|
+
return [2 /*return*/];
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}); }));
|
|
83
|
+
}))];
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* @protected
|
|
89
|
+
* @param {?} activatedRoute
|
|
90
|
+
* @param {?} state
|
|
91
|
+
* @param {?} canActivate
|
|
92
|
+
* @return {?}
|
|
93
|
+
*/
|
|
94
|
+
AbstractEnterPlaceGuard.prototype.authorisePlaceThen = /**
|
|
95
|
+
* @protected
|
|
96
|
+
* @param {?} activatedRoute
|
|
97
|
+
* @param {?} state
|
|
98
|
+
* @param {?} canActivate
|
|
99
|
+
* @return {?}
|
|
100
|
+
*/
|
|
101
|
+
function (activatedRoute, state, canActivate) {
|
|
102
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
103
|
+
var placeDefinition, authorised, _a;
|
|
104
|
+
return tslib_1.__generator(this, function (_b) {
|
|
105
|
+
switch (_b.label) {
|
|
106
|
+
case 0:
|
|
107
|
+
if (!PlaceComponent.isPlaceComponentConstructor(activatedRoute.component)) return [3 /*break*/, 4];
|
|
108
|
+
placeDefinition = PlaceComponent.getDefinition(activatedRoute.component);
|
|
109
|
+
if (!placeDefinition.authenticate) return [3 /*break*/, 2];
|
|
110
|
+
return [4 /*yield*/, this.isAuthorised(activatedRoute, state)];
|
|
111
|
+
case 1:
|
|
112
|
+
_a = _b.sent();
|
|
113
|
+
return [3 /*break*/, 3];
|
|
114
|
+
case 2:
|
|
115
|
+
_a = true;
|
|
116
|
+
_b.label = 3;
|
|
117
|
+
case 3:
|
|
118
|
+
authorised = _a;
|
|
119
|
+
return [2 /*return*/, authorised === true ? canActivate(placeDefinition) : authorised];
|
|
120
|
+
case 4: return [2 /*return*/, lang.illegalState("expected component to be an instance of PlaceComponent, got " + activatedRoute.component)];
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* @protected
|
|
127
|
+
* @param {?} activatedRoute
|
|
128
|
+
* @param {?} state
|
|
129
|
+
* @param {?} canActivate
|
|
130
|
+
* @return {?}
|
|
131
|
+
*/
|
|
132
|
+
AbstractEnterPlaceGuard.prototype.interceptInitialRouteOtherwise = /**
|
|
133
|
+
* @protected
|
|
134
|
+
* @param {?} activatedRoute
|
|
135
|
+
* @param {?} state
|
|
136
|
+
* @param {?} canActivate
|
|
137
|
+
* @return {?}
|
|
138
|
+
*/
|
|
139
|
+
function (activatedRoute, state, canActivate) {
|
|
140
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
141
|
+
return tslib_1.__generator(this, function (_a) {
|
|
142
|
+
// TODO: this all only sort of works. Opening dialogs and clicking back multiple times breaks things.
|
|
143
|
+
// TODO: next stage is to investigate tracking dialog state in a different placeoutlet and keeping those
|
|
144
|
+
// TODO: urls out of the history.
|
|
145
|
+
if (this.placeRouter.isInitialNavigation()) {
|
|
146
|
+
// This is the very first entry into our app so we redirect to a dummy place so we can get bump our
|
|
147
|
+
// history by one. This ensures that we can capture back button presses on the initial page without
|
|
148
|
+
// leaving our app.
|
|
149
|
+
return [2 /*return*/, this.placeRouter.performInitialNavigationIntercept(activatedRoute, state)];
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
return [2 /*return*/, canActivate()];
|
|
153
|
+
}
|
|
154
|
+
return [2 /*return*/];
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* @param {?} activatedRoute
|
|
160
|
+
* @param {?} state
|
|
161
|
+
* @return {?}
|
|
162
|
+
*/
|
|
163
|
+
AbstractEnterPlaceGuard.prototype.isAuthorised = /**
|
|
164
|
+
* @param {?} activatedRoute
|
|
165
|
+
* @param {?} state
|
|
166
|
+
* @return {?}
|
|
167
|
+
*/
|
|
168
|
+
function (activatedRoute, state) {
|
|
169
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
170
|
+
var authorised;
|
|
171
|
+
return tslib_1.__generator(this, function (_a) {
|
|
172
|
+
authorised = this.getAuthGuard(this.injector).canActivate(activatedRoute, state);
|
|
173
|
+
return [2 /*return*/, (authorised instanceof Observable) ? authorised.toPromise() : authorised];
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
};
|
|
177
|
+
return AbstractEnterPlaceGuard;
|
|
178
|
+
}());
|
|
179
|
+
/**
|
|
180
|
+
* @abstract
|
|
181
|
+
*/
|
|
182
|
+
export { AbstractEnterPlaceGuard };
|
|
183
|
+
if (false) {
|
|
184
|
+
/**
|
|
185
|
+
* @type {?}
|
|
186
|
+
* @private
|
|
187
|
+
*/
|
|
188
|
+
AbstractEnterPlaceGuard.prototype.router;
|
|
189
|
+
/**
|
|
190
|
+
* @type {?}
|
|
191
|
+
* @private
|
|
192
|
+
*/
|
|
193
|
+
AbstractEnterPlaceGuard.prototype.urlSerializer;
|
|
194
|
+
/**
|
|
195
|
+
* @type {?}
|
|
196
|
+
* @private
|
|
197
|
+
*/
|
|
198
|
+
AbstractEnterPlaceGuard.prototype.placeRouter;
|
|
199
|
+
/**
|
|
200
|
+
* @type {?}
|
|
201
|
+
* @private
|
|
202
|
+
*/
|
|
203
|
+
AbstractEnterPlaceGuard.prototype.placeHistory;
|
|
204
|
+
/**
|
|
205
|
+
* @type {?}
|
|
206
|
+
* @private
|
|
207
|
+
*/
|
|
208
|
+
AbstractEnterPlaceGuard.prototype.injector;
|
|
209
|
+
/**
|
|
210
|
+
* @abstract
|
|
211
|
+
* @param {?} injector
|
|
212
|
+
* @return {?}
|
|
213
|
+
*/
|
|
214
|
+
AbstractEnterPlaceGuard.prototype.getAuthGuard = function (injector) { };
|
|
215
|
+
}
|
|
216
|
+
(function (AbstractEnterPlaceGuard) {
|
|
217
|
+
/**
|
|
218
|
+
* This a work around for the fact that an activated route with multiple segments doesn't
|
|
219
|
+
* include the segment params in the paramMap as well as each segment returns an empty
|
|
220
|
+
* param map even when `parameter`s has content.
|
|
221
|
+
*/
|
|
222
|
+
var ConsolidatedParameterMap = /** @class */ (function () {
|
|
223
|
+
function ConsolidatedParameterMap(paramMap, urlSegments) {
|
|
224
|
+
this.paramMaps = [paramMap].concat((urlSegments || []).map((/**
|
|
225
|
+
* @param {?} s
|
|
226
|
+
* @return {?}
|
|
227
|
+
*/
|
|
228
|
+
function (s) { return new ParamMapAdapter(s.parameters); }))).filter((/**
|
|
229
|
+
* @param {?} m
|
|
230
|
+
* @return {?}
|
|
231
|
+
*/
|
|
232
|
+
function (m) { return !!m; })); // the activated route param map can be null
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* @param {?} name
|
|
236
|
+
* @return {?}
|
|
237
|
+
*/
|
|
238
|
+
ConsolidatedParameterMap.prototype.get = /**
|
|
239
|
+
* @param {?} name
|
|
240
|
+
* @return {?}
|
|
241
|
+
*/
|
|
242
|
+
function (name) {
|
|
243
|
+
/** @type {?} */
|
|
244
|
+
var paramMap = this.paramMaps.find((/**
|
|
245
|
+
* @param {?} m
|
|
246
|
+
* @return {?}
|
|
247
|
+
*/
|
|
248
|
+
function (m) { return m.has(name); }));
|
|
249
|
+
return paramMap.get(name);
|
|
250
|
+
};
|
|
251
|
+
/**
|
|
252
|
+
* @param {?} name
|
|
253
|
+
* @return {?}
|
|
254
|
+
*/
|
|
255
|
+
ConsolidatedParameterMap.prototype.getAll = /**
|
|
256
|
+
* @param {?} name
|
|
257
|
+
* @return {?}
|
|
258
|
+
*/
|
|
259
|
+
function (name) {
|
|
260
|
+
/** @type {?} */
|
|
261
|
+
var paramMap = this.paramMaps.find((/**
|
|
262
|
+
* @param {?} m
|
|
263
|
+
* @return {?}
|
|
264
|
+
*/
|
|
265
|
+
function (m) { return m.has(name); }));
|
|
266
|
+
return paramMap.getAll(name);
|
|
267
|
+
};
|
|
268
|
+
/**
|
|
269
|
+
* @param {?} name
|
|
270
|
+
* @return {?}
|
|
271
|
+
*/
|
|
272
|
+
ConsolidatedParameterMap.prototype.has = /**
|
|
273
|
+
* @param {?} name
|
|
274
|
+
* @return {?}
|
|
275
|
+
*/
|
|
276
|
+
function (name) {
|
|
277
|
+
return !!this.paramMaps.find((/**
|
|
278
|
+
* @param {?} m
|
|
279
|
+
* @return {?}
|
|
280
|
+
*/
|
|
281
|
+
function (m) { return m.has(name); }));
|
|
282
|
+
};
|
|
283
|
+
Object.defineProperty(ConsolidatedParameterMap.prototype, "keys", {
|
|
284
|
+
get: /**
|
|
285
|
+
* @return {?}
|
|
286
|
+
*/
|
|
287
|
+
function () {
|
|
288
|
+
return this.paramMaps.reduce((/**
|
|
289
|
+
* @param {?} result
|
|
290
|
+
* @param {?} params
|
|
291
|
+
* @return {?}
|
|
292
|
+
*/
|
|
293
|
+
function (result, params) { return result.concat(params.keys); }), []);
|
|
294
|
+
},
|
|
295
|
+
enumerable: true,
|
|
296
|
+
configurable: true
|
|
297
|
+
});
|
|
298
|
+
tslib_1.__decorate([
|
|
299
|
+
Memoize(),
|
|
300
|
+
tslib_1.__metadata("design:type", Array),
|
|
301
|
+
tslib_1.__metadata("design:paramtypes", [])
|
|
302
|
+
], ConsolidatedParameterMap.prototype, "keys", null);
|
|
303
|
+
return ConsolidatedParameterMap;
|
|
304
|
+
}());
|
|
305
|
+
AbstractEnterPlaceGuard.ConsolidatedParameterMap = ConsolidatedParameterMap;
|
|
306
|
+
if (false) {
|
|
307
|
+
/**
|
|
308
|
+
* @type {?}
|
|
309
|
+
* @private
|
|
310
|
+
*/
|
|
311
|
+
ConsolidatedParameterMap.prototype.paramMaps;
|
|
312
|
+
}
|
|
313
|
+
var ParamMapAdapter = /** @class */ (function () {
|
|
314
|
+
function ParamMapAdapter(params) {
|
|
315
|
+
this.params = params;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* @param {?} name
|
|
319
|
+
* @return {?}
|
|
320
|
+
*/
|
|
321
|
+
ParamMapAdapter.prototype.get = /**
|
|
322
|
+
* @param {?} name
|
|
323
|
+
* @return {?}
|
|
324
|
+
*/
|
|
325
|
+
function (name) {
|
|
326
|
+
return this.params[name];
|
|
327
|
+
};
|
|
328
|
+
/**
|
|
329
|
+
* @param {?} name
|
|
330
|
+
* @return {?}
|
|
331
|
+
*/
|
|
332
|
+
ParamMapAdapter.prototype.getAll = /**
|
|
333
|
+
* @param {?} name
|
|
334
|
+
* @return {?}
|
|
335
|
+
*/
|
|
336
|
+
function (name) {
|
|
337
|
+
/** @type {?} */
|
|
338
|
+
var value = this.get(name);
|
|
339
|
+
return Array.isArray(value) ? value : [value];
|
|
340
|
+
};
|
|
341
|
+
/**
|
|
342
|
+
* @param {?} name
|
|
343
|
+
* @return {?}
|
|
344
|
+
*/
|
|
345
|
+
ParamMapAdapter.prototype.has = /**
|
|
346
|
+
* @param {?} name
|
|
347
|
+
* @return {?}
|
|
348
|
+
*/
|
|
349
|
+
function (name) {
|
|
350
|
+
return this.keys.includes(name);
|
|
351
|
+
};
|
|
352
|
+
Object.defineProperty(ParamMapAdapter.prototype, "keys", {
|
|
353
|
+
get: /**
|
|
354
|
+
* @return {?}
|
|
355
|
+
*/
|
|
356
|
+
function () {
|
|
357
|
+
return Object.keys(this.params);
|
|
358
|
+
},
|
|
359
|
+
enumerable: true,
|
|
360
|
+
configurable: true
|
|
361
|
+
});
|
|
362
|
+
return ParamMapAdapter;
|
|
363
|
+
}());
|
|
364
|
+
if (false) {
|
|
365
|
+
/**
|
|
366
|
+
* @type {?}
|
|
367
|
+
* @private
|
|
368
|
+
*/
|
|
369
|
+
ParamMapAdapter.prototype.params;
|
|
370
|
+
}
|
|
371
|
+
})(AbstractEnterPlaceGuard || (AbstractEnterPlaceGuard = {}));
|
|
372
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZW50ZXItcGxhY2UuZ3VhcmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvZ3VhcmRzL2Fic3RyYWN0LWVudGVyLXBsYWNlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBV0EsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUtwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQzs7OztBQUdqQzs7OztJQUdFLGlDQUE2QixNQUFjLEVBQ3ZCLGFBQTRCLEVBQ25CLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFFBQWtCO1FBSmxCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDbkIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUMvQyxDQUFDO0lBRUQsV0FBVzs7Ozs7OztJQUNMLDZDQUFXOzs7Ozs7O0lBQWpCLFVBQWtCLGNBQXNDLEVBQUUsS0FBMEI7Ozs7Z0JBRWxGLHNCQUFPLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxjQUFjLEVBQUUsS0FBSzs7O29CQUFFO3dCQUVoRSxPQUFPLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsS0FBSzs7Ozt3QkFBRSxVQUFNLGVBQWU7Ozs7Ozt3Q0FHbkUsTUFBTSxHQUFHLElBQUksdUJBQXVCLENBQUMsd0JBQXdCLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFDO3dDQUMxRyxZQUFZLEdBQUcsZUFBZSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQzt3Q0FFdkQsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUM7d0NBQzFILFNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUM7d0NBQzVFLHFCQUFNLFNBQVMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUE7O3dDQUExRixjQUFjLEdBQUcsU0FBeUU7d0NBRWhHLDBHQUEwRzt3Q0FDMUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7d0NBQzlELElBQUksWUFBWSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxFQUFFOzs0Q0FFaEQsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLHlCQUF5QixDQUFDLGNBQWMsQ0FBQzs0Q0FDM0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSxRQUFRLENBQUMsQ0FBQzs0Q0FDcEQsc0JBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFO29EQUN6QyxVQUFVLEVBQUUsSUFBSTtvREFDaEIsa0JBQWtCLEVBQUUsS0FBSztpREFDMUIsQ0FBQyxFQUFDO3lDQUNKOzZDQUFNOzRDQUNMLHNCQUFPLElBQUksRUFBQzt5Q0FDYjs7Ozs2QkFDRixFQUFDLENBQUM7b0JBRUwsQ0FBQyxFQUFDLEVBQUM7OztLQUNKOzs7Ozs7OztJQUVlLG9EQUFrQjs7Ozs7OztJQUFsQyxVQUFtQyxjQUFzQyxFQUFFLEtBQTBCLEVBQUUsV0FBNkU7Ozs7Ozs2QkFDOUssY0FBYyxDQUFDLDJCQUEyQixDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBcEUsd0JBQW9FO3dCQUNoRSxlQUFlLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDOzZCQUMzRCxlQUFlLENBQUMsWUFBWSxFQUE1Qix3QkFBNEI7d0JBQUcscUJBQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUE7O3dCQUE5QyxLQUFBLFNBQThDLENBQUE7Ozt3QkFBRyxLQUFBLElBQUksQ0FBQTs7O3dCQUFqRyxVQUFVLEtBQXVGO3dCQUN2RyxzQkFBTyxVQUFVLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBQzs0QkFFdkUsc0JBQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxpRUFBK0QsY0FBYyxDQUFDLFNBQVcsQ0FBQyxFQUFDOzs7O0tBRXZIOzs7Ozs7OztJQUVlLGdFQUE4Qjs7Ozs7OztJQUE5QyxVQUErQyxjQUFzQyxFQUFFLEtBQTBCLEVBQUUsV0FBNkM7OztnQkFDOUosc0dBQXNHO2dCQUN0Ryx3R0FBd0c7Z0JBQ3hHLGlDQUFpQztnQkFDakMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLEVBQUU7b0JBQzFDLG1HQUFtRztvQkFDbkcsb0dBQW9HO29CQUNwRyxtQkFBbUI7b0JBQ25CLHNCQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsaUNBQWlDLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxFQUFDO2lCQUNsRjtxQkFBTTtvQkFDTCxzQkFBTyxXQUFXLEVBQUUsRUFBQztpQkFDdEI7Ozs7S0FDRjs7Ozs7O0lBRUssOENBQVk7Ozs7O0lBQWxCLFVBQW1CLGNBQXNDLEVBQUUsS0FBMEI7Ozs7Z0JBQzdFLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQztnQkFDdEYsc0JBQU8sQ0FBQyxVQUFVLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFDOzs7S0FDakY7SUFHSCw4QkFBQztBQUFELENBQUMsQUF6RUQsSUF5RUM7Ozs7Ozs7Ozs7SUF0RWEseUNBQStCOzs7OztJQUMvQixnREFBb0M7Ozs7O0lBQ3BDLDhDQUF5Qzs7Ozs7SUFDekMsK0NBQTJDOzs7OztJQUMzQywyQ0FBbUM7Ozs7OztJQWlFL0MseUVBQXVEOztBQUd6RCxXQUFpQix1QkFBdUI7Ozs7OztJQU10QztRQUlFLGtDQUFZLFFBQWtCLEVBQUUsV0FBeUI7WUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FDaEMsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRzs7OztZQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFqQyxDQUFpQyxFQUFDLENBQ2hFLENBQUMsTUFBTTs7OztZQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLENBQUMsRUFBSCxDQUFHLEVBQUMsQ0FBQyxDQUFDLDRDQUE0QztRQUNsRSxDQUFDOzs7OztRQUVELHNDQUFHOzs7O1FBQUgsVUFBSSxJQUFZOztnQkFDUixRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJOzs7O1lBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFYLENBQVcsRUFBQztZQUN0RCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQzs7Ozs7UUFFRCx5Q0FBTTs7OztRQUFOLFVBQU8sSUFBWTs7Z0JBQ1gsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSTs7OztZQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBWCxDQUFXLEVBQUM7WUFDdEQsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUM7Ozs7O1FBRUQsc0NBQUc7Ozs7UUFBSCxVQUFJLElBQVk7WUFDZCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUk7Ozs7WUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQVgsQ0FBVyxFQUFDLENBQUM7UUFDakQsQ0FBQztRQUdELHNCQUFJLDBDQUFJOzs7O1lBQVI7Z0JBQ0UsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07Ozs7O2dCQUFDLFVBQUMsTUFBTSxFQUFFLE1BQU0sSUFBSyxPQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUExQixDQUEwQixHQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25GLENBQUM7OztXQUFBO1FBRkQ7WUFEQyxPQUFPLEVBQUU7Ozs0REFHVDtRQUNILCtCQUFDO0tBQUEsQUE1QkQsSUE0QkM7SUE1QlksZ0RBQXdCLDJCQTRCcEMsQ0FBQTs7Ozs7O1FBMUJDLDZDQUE4Qjs7SUE0QmhDO1FBQ0UseUJBQTZCLE1BQStCO1lBQS9CLFdBQU0sR0FBTixNQUFNLENBQXlCO1FBQzVELENBQUM7Ozs7O1FBRUQsNkJBQUc7Ozs7UUFBSCxVQUFJLElBQVk7WUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQzs7Ozs7UUFFRCxnQ0FBTTs7OztRQUFOLFVBQU8sSUFBWTs7Z0JBQ1gsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQzVCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELENBQUM7Ozs7O1FBRUQsNkJBQUc7Ozs7UUFBSCxVQUFJLElBQVk7WUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFFRCxzQkFBSSxpQ0FBSTs7OztZQUFSO2dCQUNFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsQ0FBQzs7O1dBQUE7UUFFSCxzQkFBQztJQUFELENBQUMsQUFyQkQsSUFxQkM7Ozs7OztRQXBCYSxpQ0FBZ0Q7O0FBcUJoRSxDQUFDLEVBMURnQix1QkFBdUIsS0FBdkIsdUJBQXVCLFFBMER2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBDYW5BY3RpdmF0ZSxcbiAgUGFyYW1NYXAsXG4gIFJvdXRlcixcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgVXJsU2VnbWVudCxcbiAgVXJsU2VyaWFsaXplcixcbiAgVXJsVHJlZVxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgbGFuZyB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IE1lbW9pemUgfSBmcm9tICdAdHlwZXNjcmlwdC1wbHVzL2Zhc3QtbWVtb2l6ZS1kZWNvcmF0b3IvZGlzdC9zcmMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBQbGFjZUhpc3RvcnkgfSBmcm9tICcuLi9wbGFjZS1oaXN0b3J5JztcbmltcG9ydCB7IFBsYWNlUm91dGVyIH0gZnJvbSAnLi4vcGxhY2Utcm91dGVyJztcbmltcG9ydCB7IE5vb3BHYXRld2F5UGxhY2UgfSBmcm9tICcuLi9wbGFjZXMvbm9vcC1nYXRld2F5LXBsYWNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaXNpdFNhbml0aXNlciB9IGZyb20gJy4uL3JvdXRlL3Zpc2l0LXNhbml0aXNlcic7XG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4uL3Zpc2l0JztcblxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RFbnRlclBsYWNlR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHVybFNlcmlhbGl6ZXI6IFVybFNlcmlhbGl6ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhY2VSb3V0ZXI6IFBsYWNlUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlSGlzdG9yeTogUGxhY2VIaXN0b3J5LFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3Rvcikge1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYXN5bmMgY2FuQWN0aXZhdGUoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4ge1xuXG4gICAgcmV0dXJuIHRoaXMuaW50ZXJjZXB0SW5pdGlhbFJvdXRlT3RoZXJ3aXNlKGFjdGl2YXRlZFJvdXRlLCBzdGF0ZSwgKCkgPT4ge1xuXG4gICAgICByZXR1cm4gdGhpcy5hdXRob3Jpc2VQbGFjZVRoZW4oYWN0aXZhdGVkUm91dGUsIHN0YXRlLCBhc3luYyBwbGFjZURlZmluaXRpb24gPT4ge1xuXG4gICAgICAgIC8vIFBhcnNlIG91ciByb3V0ZSBwYXJhbXMuXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBBYnN0cmFjdEVudGVyUGxhY2VHdWFyZC5Db25zb2xpZGF0ZWRQYXJhbWV0ZXJNYXAoYWN0aXZhdGVkUm91dGUucGFyYW1NYXAsIGFjdGl2YXRlZFJvdXRlLnVybCk7XG4gICAgICAgIGNvbnN0IHBhcnNlZFBhcmFtcyA9IHBsYWNlRGVmaW5pdGlvbi5wYXJzZVJvdXRlUGFyYW1zKHBhcmFtcyk7XG5cbiAgICAgICAgY29uc3QgaW5pdGlhbFZpc2l0ID0gdGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbi5nZXRWaXNpdEZvcihwbGFjZURlZmluaXRpb24pIHx8IG5ldyBWaXNpdChwbGFjZURlZmluaXRpb24sIHBhcnNlZFBhcmFtcyk7XG4gICAgICAgIGNvbnN0IHNhbml0aXNlciA9IG5ldyBWaXNpdFNhbml0aXNlcihhY3RpdmF0ZWRSb3V0ZSwgdGhpcy5yb3V0ZXIsIHRoaXMucGxhY2VIaXN0b3J5LCB0aGlzLmluamVjdG9yKTtcbiAgICAgICAgY29uc3Qgc2FuaXRpc2VkVmlzaXQgPSBhd2FpdCBzYW5pdGlzZXIuc2FuaXRpc2UoaW5pdGlhbFZpc2l0Lm1lcmdlUm91dGVQYXJhbWV0ZXJzKHBhcnNlZFBhcmFtcykpO1xuXG4gICAgICAgIC8vIFNhdmUgdGhlIHZpc2l0IHdpdGggYW55IHVwZGF0ZWQgcGFyYW1ldGVycy4gIFdlIG5lZWQgdG8gc2F2ZSBpdCBzbyB3ZSByZW1lbWJlciBhbnkgbm9uIHJvdXRlIHBhcmFtZXRlcnNcbiAgICAgICAgdGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbi5zdG9yZVZpc2l0KHNhbml0aXNlZFZpc2l0KTtcbiAgICAgICAgaWYgKGluaXRpYWxWaXNpdC5oYXNSb3V0aW5nQ2hhbmdlZEZyb20oc2FuaXRpc2VkVmlzaXQpKSB7XG4gICAgICAgICAgLy8gUmVnZW5lcmF0ZSB0aGUgdXJsXG4gICAgICAgICAgY29uc3QgY29tbWFuZHMgPSB0aGlzLnBsYWNlUm91dGVyLnBhcnNlVXJsKHN0YXRlKS5jcmVhdGVSZWRpcmVjdENvbW1hbmRzRm9yKHNhbml0aXNlZFZpc2l0KTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgUGxhY2UgR3VhcmQgUmVkaXJlY3QnLCBjb21tYW5kcyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoY29tbWFuZHMsIHtcbiAgICAgICAgICAgIHJlcGxhY2VVcmw6IHRydWUsXG4gICAgICAgICAgICBza2lwTG9jYXRpb25DaGFuZ2U6IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgYXV0aG9yaXNlUGxhY2VUaGVuKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCwgY2FuQWN0aXZhdGU6IChwbGFjZURlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvbikgPT4gUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4pIHtcbiAgICBpZiAoUGxhY2VDb21wb25lbnQuaXNQbGFjZUNvbXBvbmVudENvbnN0cnVjdG9yKGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCkpIHtcbiAgICAgIGNvbnN0IHBsYWNlRGVmaW5pdGlvbiA9IFBsYWNlQ29tcG9uZW50LmdldERlZmluaXRpb24oYWN0aXZhdGVkUm91dGUuY29tcG9uZW50KTtcbiAgICAgIGNvbnN0IGF1dGhvcmlzZWQgPSBwbGFjZURlZmluaXRpb24uYXV0aGVudGljYXRlID8gYXdhaXQgdGhpcy5pc0F1dGhvcmlzZWQoYWN0aXZhdGVkUm91dGUsIHN0YXRlKSA6IHRydWU7XG4gICAgICByZXR1cm4gYXV0aG9yaXNlZCA9PT0gdHJ1ZSA/IGNhbkFjdGl2YXRlKHBsYWNlRGVmaW5pdGlvbikgOiBhdXRob3Jpc2VkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGFuZy5pbGxlZ2FsU3RhdGUoYGV4cGVjdGVkIGNvbXBvbmVudCB0byBiZSBhbiBpbnN0YW5jZSBvZiBQbGFjZUNvbXBvbmVudCwgZ290ICR7YWN0aXZhdGVkUm91dGUuY29tcG9uZW50fWApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBpbnRlcmNlcHRJbml0aWFsUm91dGVPdGhlcndpc2UoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBjYW5BY3RpdmF0ZTogKCkgPT4gUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4pIHtcbiAgICAvLyBUT0RPOiB0aGlzIGFsbCBvbmx5IHNvcnQgb2Ygd29ya3MuICBPcGVuaW5nIGRpYWxvZ3MgYW5kIGNsaWNraW5nIGJhY2sgbXVsdGlwbGUgdGltZXMgYnJlYWtzIHRoaW5ncy5cbiAgICAvLyBUT0RPOiBuZXh0IHN0YWdlIGlzIHRvIGludmVzdGlnYXRlIHRyYWNraW5nIGRpYWxvZyBzdGF0ZSBpbiBhIGRpZmZlcmVudCBwbGFjZW91dGxldCBhbmQga2VlcGluZyB0aG9zZVxuICAgIC8vIFRPRE86IHVybHMgb3V0IG9mIHRoZSBoaXN0b3J5LlxuICAgIGlmICh0aGlzLnBsYWNlUm91dGVyLmlzSW5pdGlhbE5hdmlnYXRpb24oKSkge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgdmVyeSBmaXJzdCBlbnRyeSBpbnRvIG91ciBhcHAgc28gd2UgcmVkaXJlY3QgdG8gYSBkdW1teSBwbGFjZSBzbyB3ZSBjYW4gZ2V0IGJ1bXAgb3VyXG4gICAgICAvLyBoaXN0b3J5IGJ5IG9uZS4gIFRoaXMgZW5zdXJlcyB0aGF0IHdlIGNhbiBjYXB0dXJlIGJhY2sgYnV0dG9uIHByZXNzZXMgb24gdGhlIGluaXRpYWwgcGFnZSB3aXRob3V0XG4gICAgICAvLyBsZWF2aW5nIG91ciBhcHAuXG4gICAgICByZXR1cm4gdGhpcy5wbGFjZVJvdXRlci5wZXJmb3JtSW5pdGlhbE5hdmlnYXRpb25JbnRlcmNlcHQoYWN0aXZhdGVkUm91dGUsIHN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNhbkFjdGl2YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaXNBdXRob3Jpc2VkKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHtcbiAgICBjb25zdCBhdXRob3Jpc2VkID0gdGhpcy5nZXRBdXRoR3VhcmQodGhpcy5pbmplY3RvcikuY2FuQWN0aXZhdGUoYWN0aXZhdGVkUm91dGUsIHN0YXRlKTtcbiAgICByZXR1cm4gKGF1dGhvcmlzZWQgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSA/IGF1dGhvcmlzZWQudG9Qcm9taXNlKCkgOiBhdXRob3Jpc2VkO1xuICB9XG5cbiAgYWJzdHJhY3QgZ2V0QXV0aEd1YXJkKGluamVjdG9yOiBJbmplY3Rvcik6IENhbkFjdGl2YXRlO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIEFic3RyYWN0RW50ZXJQbGFjZUd1YXJkIHtcbiAgLyoqXG4gICAqIFRoaXMgYSB3b3JrIGFyb3VuZCBmb3IgdGhlIGZhY3QgdGhhdCBhbiBhY3RpdmF0ZWQgcm91dGUgd2l0aCBtdWx0aXBsZSBzZWdtZW50cyBkb2Vzbid0XG4gICAqIGluY2x1ZGUgdGhlIHNlZ21lbnQgcGFyYW1zIGluIHRoZSBwYXJhbU1hcCBhcyB3ZWxsIGFzIGVhY2ggc2VnbWVudCByZXR1cm5zIGFuIGVtcHR5XG4gICAqIHBhcmFtIG1hcCBldmVuIHdoZW4gYHBhcmFtZXRlcmBzIGhhcyBjb250ZW50LlxuICAgKi9cbiAgZXhwb3J0IGNsYXNzIENvbnNvbGlkYXRlZFBhcmFtZXRlck1hcCBpbXBsZW1lbnRzIFBhcmFtTWFwIHtcblxuICAgIHByaXZhdGUgcGFyYW1NYXBzOiBQYXJhbU1hcFtdO1xuXG4gICAgY29uc3RydWN0b3IocGFyYW1NYXA6IFBhcmFtTWFwLCB1cmxTZWdtZW50czogVXJsU2VnbWVudFtdKSB7XG4gICAgICB0aGlzLnBhcmFtTWFwcyA9IFtwYXJhbU1hcF0uY29uY2F0KFxuICAgICAgICAodXJsU2VnbWVudHMgfHwgW10pLm1hcChzID0+IG5ldyBQYXJhbU1hcEFkYXB0ZXIocy5wYXJhbWV0ZXJzKSlcbiAgICAgICkuZmlsdGVyKG0gPT4gISFtKTsgLy8gdGhlIGFjdGl2YXRlZCByb3V0ZSBwYXJhbSBtYXAgY2FuIGJlIG51bGxcbiAgICB9XG5cbiAgICBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICBjb25zdCBwYXJhbU1hcCA9IHRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSk7XG4gICAgICByZXR1cm4gcGFyYW1NYXAuZ2V0KG5hbWUpO1xuICAgIH1cblxuICAgIGdldEFsbChuYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICBjb25zdCBwYXJhbU1hcCA9IHRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSk7XG4gICAgICByZXR1cm4gcGFyYW1NYXAuZ2V0QWxsKG5hbWUpO1xuICAgIH1cblxuICAgIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAhIXRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSk7XG4gICAgfVxuXG4gICAgQE1lbW9pemUoKVxuICAgIGdldCBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtTWFwcy5yZWR1Y2UoKHJlc3VsdCwgcGFyYW1zKSA9PiByZXN1bHQuY29uY2F0KHBhcmFtcy5rZXlzKSwgW10pO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzIFBhcmFtTWFwQWRhcHRlciBpbXBsZW1lbnRzIFBhcmFtTWFwIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHBhcmFtczogeyBbcDogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICB9XG5cbiAgICBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJhbXNbbmFtZV07XG4gICAgfVxuXG4gICAgZ2V0QWxsKG5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQobmFtZSk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMua2V5cy5pbmNsdWRlcyhuYW1lKTtcbiAgICB9XG5cbiAgICBnZXQga2V5cygpOiBzdHJpbmdbXSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5wYXJhbXMpO1xuICAgIH1cblxuICB9XG59XG4iXX0=
|