ngx-snotifire 1.0.2-beta → 1.0.2
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/README.md +1 -0
- package/esm2020/lib/components/buttons/buttons-config.interface.mjs +1 -1
- package/esm2020/lib/components/buttons/buttons.component.mjs +3 -3
- package/esm2020/lib/components/ngx-notifire/ngx-snotifire.component.mjs +3 -3
- package/esm2020/lib/components/prompt/prompt.component.mjs +1 -1
- package/esm2020/lib/components/toast/notifire-toast.model.mjs +2 -2
- package/esm2020/lib/components/toast/toast.component.mjs +5 -5
- package/esm2020/lib/defaults/defaults.interface.mjs +1 -1
- package/esm2020/lib/defaults/global-config.interface.mjs +1 -1
- package/esm2020/lib/models/snotifire-notifications.interface.mjs +1 -1
- package/esm2020/lib/ngx-snotifire.module.mjs +3 -3
- package/esm2020/lib/services/notification.service.mjs +24 -16
- package/fesm2015/ngx-snotifire.mjs +33 -25
- package/fesm2015/ngx-snotifire.mjs.map +1 -1
- package/fesm2020/ngx-snotifire.mjs +33 -25
- package/fesm2020/ngx-snotifire.mjs.map +1 -1
- package/lib/components/buttons/buttons-config.interface.d.ts +2 -2
- package/lib/components/buttons/buttons.component.d.ts +4 -4
- package/lib/components/ngx-notifire/ngx-snotifire.component.d.ts +7 -7
- package/lib/components/prompt/prompt.component.d.ts +2 -2
- package/lib/components/toast/notifire-toast.model.d.ts +2 -2
- package/lib/components/toast/toast.component.d.ts +4 -4
- package/lib/defaults/defaults.interface.d.ts +3 -3
- package/lib/defaults/global-config.interface.d.ts +1 -1
- package/lib/models/snotifire-notifications.interface.d.ts +10 -10
- package/lib/services/notification.service.d.ts +47 -41
- package/package.json +2 -1
|
@@ -4,10 +4,10 @@ import { from, Subject } from 'rxjs';
|
|
|
4
4
|
import { SetToastType } from '../decorators/set-toast-type.decorator';
|
|
5
5
|
import { TransformArgument } from '../decorators/transform-argument.decorator';
|
|
6
6
|
import { SnotifireEventType, SnotifireType } from '../models';
|
|
7
|
-
import {
|
|
7
|
+
import { SnotifireToastModel } from '../components/toast/notifire-toast.model';
|
|
8
8
|
import { mergeDeep, uuid } from '../utils';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
|
-
export class
|
|
10
|
+
export class SnotifireService {
|
|
11
11
|
constructor(defaultConfig) {
|
|
12
12
|
this.defaultConfig = defaultConfig;
|
|
13
13
|
/**
|
|
@@ -30,12 +30,12 @@ export class SnotificationService {
|
|
|
30
30
|
create(notif) {
|
|
31
31
|
if (this.defaultConfig.type && notif.config && notif.config.type) {
|
|
32
32
|
const config = mergeDeep(this.defaultConfig.snotifireConfig, this.defaultConfig.type[notif.config.type], notif.config);
|
|
33
|
-
const toast = new
|
|
33
|
+
const toast = new SnotifireToastModel(uuid(), notif.title ? notif.title : '', notif.body ? notif.body : '', config);
|
|
34
34
|
this.add(toast);
|
|
35
35
|
return toast;
|
|
36
36
|
}
|
|
37
37
|
const config = mergeDeep(this.defaultConfig.snotifireConfig, notif.config);
|
|
38
|
-
const defaulToast = new
|
|
38
|
+
const defaulToast = new SnotifireToastModel(uuid(), notif.title ? notif.title : '', notif.body ? notif.body : '', config);
|
|
39
39
|
this.add(defaulToast);
|
|
40
40
|
return defaulToast;
|
|
41
41
|
}
|
|
@@ -206,9 +206,17 @@ export class SnotificationService {
|
|
|
206
206
|
this.emit();
|
|
207
207
|
this.toastChanged.next(toast);
|
|
208
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* returns SnotifyToast object
|
|
211
|
+
* @param id Number
|
|
212
|
+
* @return SnotifyToast|undefined
|
|
213
|
+
*/
|
|
214
|
+
get(id) {
|
|
215
|
+
return (this.notifications && this.notifications.find((toast) => toast.id === id));
|
|
216
|
+
}
|
|
209
217
|
}
|
|
210
|
-
|
|
211
|
-
|
|
218
|
+
SnotifireService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotifireService, deps: [{ token: 'snotifireConfig' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
219
|
+
SnotifireService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotifireService });
|
|
212
220
|
__decorate([
|
|
213
221
|
TransformArgument
|
|
214
222
|
/**
|
|
@@ -216,7 +224,7 @@ __decorate([
|
|
|
216
224
|
*/
|
|
217
225
|
,
|
|
218
226
|
SetToastType
|
|
219
|
-
],
|
|
227
|
+
], SnotifireService.prototype, "success", null);
|
|
220
228
|
__decorate([
|
|
221
229
|
TransformArgument
|
|
222
230
|
/**
|
|
@@ -224,7 +232,7 @@ __decorate([
|
|
|
224
232
|
*/
|
|
225
233
|
,
|
|
226
234
|
SetToastType
|
|
227
|
-
],
|
|
235
|
+
], SnotifireService.prototype, "error", null);
|
|
228
236
|
__decorate([
|
|
229
237
|
TransformArgument
|
|
230
238
|
/**
|
|
@@ -232,7 +240,7 @@ __decorate([
|
|
|
232
240
|
*/
|
|
233
241
|
,
|
|
234
242
|
SetToastType
|
|
235
|
-
],
|
|
243
|
+
], SnotifireService.prototype, "info", null);
|
|
236
244
|
__decorate([
|
|
237
245
|
TransformArgument
|
|
238
246
|
/**
|
|
@@ -240,7 +248,7 @@ __decorate([
|
|
|
240
248
|
*/
|
|
241
249
|
,
|
|
242
250
|
SetToastType
|
|
243
|
-
],
|
|
251
|
+
], SnotifireService.prototype, "warning", null);
|
|
244
252
|
__decorate([
|
|
245
253
|
TransformArgument
|
|
246
254
|
/**
|
|
@@ -248,7 +256,7 @@ __decorate([
|
|
|
248
256
|
*/
|
|
249
257
|
,
|
|
250
258
|
SetToastType
|
|
251
|
-
],
|
|
259
|
+
], SnotifireService.prototype, "confirm", null);
|
|
252
260
|
__decorate([
|
|
253
261
|
TransformArgument
|
|
254
262
|
/**
|
|
@@ -256,7 +264,7 @@ __decorate([
|
|
|
256
264
|
*/
|
|
257
265
|
,
|
|
258
266
|
SetToastType
|
|
259
|
-
],
|
|
267
|
+
], SnotifireService.prototype, "prompt", null);
|
|
260
268
|
__decorate([
|
|
261
269
|
TransformArgument
|
|
262
270
|
/**
|
|
@@ -264,11 +272,11 @@ __decorate([
|
|
|
264
272
|
*/
|
|
265
273
|
,
|
|
266
274
|
SetToastType
|
|
267
|
-
],
|
|
268
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type:
|
|
275
|
+
], SnotifireService.prototype, "async", null);
|
|
276
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotifireService, decorators: [{
|
|
269
277
|
type: Injectable
|
|
270
278
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
271
279
|
type: Inject,
|
|
272
|
-
args: ['
|
|
280
|
+
args: ['snotifireConfig']
|
|
273
281
|
}] }]; }, propDecorators: { success: [], error: [], info: [], warning: [], confirm: [], prompt: [], async: [] } });
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc25vdGlmaXJlL3NyYy9saWIvc2VydmljZXMvbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxJQUFJLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDL0UsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUczQyxNQUFNLE9BQU8sb0JBQW9CO0lBZ0IvQixZQUNtQyxhQUFtQztRQUFuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFoQnRFOztXQUVHO1FBQ2MseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBRTdDOztXQUVHO1FBQ00sWUFBTyxHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO1FBRXpDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUNyQyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBRXJELGtCQUFhLEdBQXlCLEVBQUUsQ0FBQztJQUl0QyxDQUFDO0lBRUo7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxLQUFxQjtRQUMxQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0s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QUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDOztrSEFqZlUsb0JBQW9CLGtCQWlCckIsZ0JBQWdCO3NIQWpCZixvQkFBb0I7O0lBaUw5QixpQkFBaUI7SUFDbEI7O09BRUc7O0lBQ0YsWUFBWTttREFNWjs7SUFpQ0EsaUJBQWlCO0lBQ2xCOztPQUVHOztJQUNGLFlBQVk7aURBR1o7O0lBaUNBLGlCQUFpQjtJQUNsQjs7T0FFRzs7SUFDRixZQUFZO2dEQUdaOztJQWlDQSxpQkFBaUI7SUFDbEI7O09BRUc7O0lBQ0YsWUFBWTttREFHWjs7SUFpQ0EsaUJBQWlCO0lBQ2xCOztPQUVHOztJQUNGLFlBQVk7bURBR1o7O0lBaUNBLGlCQUFpQjtJQUNsQjs7T0FFRzs7SUFDRixZQUFZO2tEQUdaOztJQXFEQSxpQkFBaUI7SUFDbEI7O09BRUc7O0lBQ0YsWUFBWTtpREE0Qlo7NEZBeGRVLG9CQUFvQjtrQkFEaEMsVUFBVTs7MEJBa0JOLE1BQU07MkJBQUMsZ0JBQWdCOzRDQXFLMUIsT0FBTyxNQTJDUCxLQUFLLE1Bd0NMLElBQUksTUF3Q0osT0FBTyxNQXdDUCxPQUFPLE1Bd0NQLE1BQU0sTUE0RE4sS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2V0VG9hc3RUeXBlIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy9zZXQtdG9hc3QtdHlwZS5kZWNvcmF0b3InO1xuaW1wb3J0IHsgVHJhbnNmb3JtQXJndW1lbnQgfSBmcm9tICcuLi9kZWNvcmF0b3JzL3RyYW5zZm9ybS1hcmd1bWVudC5kZWNvcmF0b3InO1xuaW1wb3J0IHsgU25vdGlmaXJlQ29uZmlnLCBTbm90aWZpcmVFdmVudFR5cGUsIFNub3RpZmlyZVR5cGUgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uRGVmYXVsdHMgfSBmcm9tICcuLi9kZWZhdWx0cy9kZWZhdWx0cy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU25vdGlmaXJlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc25vdGlmaXJlLm1vZGVsJztcbmltcG9ydCB7IE5vdGlmaXJlTW9kZWwgfSBmcm9tICcuLi9jb21wb25lbnRzL3RvYXN0L25vdGlmaXJlLXRvYXN0Lm1vZGVsJztcbmltcG9ydCB7IG1lcmdlRGVlcCwgdXVpZCB9IGZyb20gJy4uL3V0aWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNub3RpZmljYXRpb25TZXJ2aWNlIHtcbiAgLyoqXG4gICAqIE1pbmltdW0gZGlzcGxheSB0aW1lIG9mIHRoZSBub3RpZmljYXRpb24gbWVzc2FnZVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBtaW5pbXVtRGlzcGxheWVkVGltZSA9IDMwMDA7XG5cbiAgLyoqXG4gICAqIEVtaXRzIE5vdGlmaXJlIE5vdGlmaWNhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGVtaXR0ZXIgPSBuZXcgU3ViamVjdDxOb3RpZmlyZU1vZGVsW10+KCk7XG5cbiAgcmVhZG9ubHkgdG9hc3REZWxldGVkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICByZWFkb25seSB0b2FzdENoYW5nZWQgPSBuZXcgU3ViamVjdDxOb3RpZmlyZU1vZGVsPigpO1xuXG4gIG5vdGlmaWNhdGlvbnM6IEFycmF5PE5vdGlmaXJlTW9kZWw+ID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgnTm90aWZpcmVDb25maWcnKSBwdWJsaWMgZGVmYXVsdENvbmZpZzogTm90aWZpY2F0aW9uRGVmYXVsdHNcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRvYXN0IGFuZCBhZGQgaXQgdG8gYXJyYXksIHJldHVybnMgdG9hc3QgaWRcbiAgICogQHBhcmFtIE5vdGlmaWNhdGlvbk1vZGVsIE5vdGlmaWNhdGlvbk1vZGVsXG4gICAqIEByZXR1cm4gbnVtYmVyXG4gICAqL1xuICBjcmVhdGUobm90aWY6IFNub3RpZmlyZU1vZGVsKTogTm90aWZpcmVNb2RlbCB7XG4gICAgaWYgKHRoaXMuZGVmYXVsdENvbmZpZy50eXBlICYmIG5vdGlmLmNvbmZpZyAmJiBub3RpZi5jb25maWcudHlwZSkge1xuICAgICAgY29uc3QgY29uZmlnID0gbWVyZ2VEZWVwKFxuICAgICAgICB0aGlzLmRlZmF1bHRDb25maWcuc25vdGlmaXJlQ29uZmlnLFxuICAgICAgICB0aGlzLmRlZmF1bHRDb25maWcudHlwZVtub3RpZi5jb25maWcudHlwZV0sXG4gICAgICAgIG5vdGlmLmNvbmZpZ1xuICAgICAgKTtcbiAgICAgIGNvbnN0IHRvYXN0ID0gbmV3IE5vdGlmaXJlTW9kZWwoXG4gICAgICAgIHV1aWQoKSxcbiAgICAgICAgbm90aWYudGl0bGUgPyBub3RpZi50aXRsZSA6ICcnLFxuICAgICAgICBub3RpZi5ib2R5ID8gbm90aWYuYm9keSA6ICcnLFxuICAgICAgICBjb25maWdcbiAgICAgICk7XG4gICAgICB0aGlzLmFkZCh0b2FzdCk7XG4gICAgICByZXR1cm4gdG9hc3Q7XG4gICAgfVxuICAgIGNvbnN0IGNvbmZpZyA9IG1lcmdlRGVlcCh0aGlzLmRlZmF1bHRDb25maWcuc25vdGlmaXJlQ29uZmlnLCBub3RpZi5jb25maWcpO1xuICAgIGNvbnN0IGRlZmF1bFRvYXN0ID0gbmV3IE5vdGlmaXJlTW9kZWwoXG4gICAgICB1dWlkKCksXG4gICAgICBub3RpZi50aXRsZSA/IG5vdGlmLnRpdGxlIDogJycsXG4gICAgICBub3RpZi5ib2R5ID8gbm90aWYuYm9keSA6ICcnLFxuICAgICAgY29uZmlnXG4gICAgKTtcbiAgICB0aGlzLmFkZChkZWZhdWxUb2FzdCk7XG4gICAgcmV0dXJuIGRlZmF1bFRvYXN0O1xuICB9XG4gIC8qKlxuICAgKiBJZiBJRCBwYXNzZWQsIGVtaXRzIHRvYXN0IGFuaW1hdGlvbiByZW1vdmUsIGlmIElEICYgUkVNT1ZFIHBhc3NlZCwgcmVtb3ZlcyB0b2FzdCBmcm9tIG5vdGlmaWNhdGlvbnMgYXJyYXlcbiAgICogQHBhcmFtIGlkIG51bWJlclxuICAgKiBAcGFyYW0gcmVtb3ZlIGJvb2xlYW5cbiAgICovXG4gIHJlbW92ZShpZDogbnVtYmVyLCByZW1vdmU/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCFpZCkge1xuICAgICAgcmV0dXJuIHRoaXMuY2xlYXIoKTtcbiAgICB9XG4gICAgaWYgKHJlbW92ZSkge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zID0gdGhpcy5ub3RpZmljYXRpb25zLmZpbHRlcihcbiAgICAgICAgKHRvYXN0KSA9PiB0b2FzdC5pZCAhPT0gaWRcbiAgICAgICk7XG4gICAgICByZXR1cm4gdGhpcy5lbWl0KCk7XG4gICAgfVxuICAgIHRoaXMudG9hc3REZWxldGVkLm5leHQoaWQpO1xuICB9XG5cbiAgc2V0RGVmYXVsdHMoZGVmYXVsdHM6IE5vdGlmaWNhdGlvbkRlZmF1bHRzKTogTm90aWZpY2F0aW9uRGVmYXVsdHMge1xuICAgIGNvbnN0IG1lcmdlZENvbmZpZyA9ICh0aGlzLmRlZmF1bHRDb25maWcgPSBtZXJnZURlZXAoXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcsXG4gICAgICBkZWZhdWx0c1xuICAgICkgYXMgTm90aWZpY2F0aW9uRGVmYXVsdHMpO1xuICAgIHJldHVybiBtZXJnZWRDb25maWc7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgbm90aWZpY2F0aW9ucyBhcnJheVxuICAgKi9cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zID0gW107XG4gICAgdGhpcy5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogYWRkIE5vdGlmaXJlVG9hc3QgdG8gbm90aWZpY2F0aW9ucyBhcnJheVxuICAgKiBAcGFyYW0gdG9hc3QgTm90aWZpcmVUb2FzdFxuICAgKi9cbiAgcHJpdmF0ZSBhZGQodG9hc3Q6IE5vdGlmaXJlTW9kZWwpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgJiZcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy5nbG9iYWwgJiZcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy5nbG9iYWwuZmlsdGVyRHVwbGljYXRlcyAmJlxuICAgICAgdGhpcy5jb250YWluc1RvYXN0KHRvYXN0KVxuICAgICkge1xuICAgICAgaWYgKCF0aGlzLmRlZmF1bHRDb25maWcuZ2xvYmFsLmZpbHRlckR1cGxpY2F0ZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGdsb2JhbCBjb25maWcnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnICYmXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcuZ2xvYmFsICYmXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcuZ2xvYmFsLm5ld09uVG9wXG4gICAgKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMudW5zaGlmdCh0b2FzdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5wdXNoKHRvYXN0KTtcbiAgICB9XG4gICAgdGhpcy5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogZW1pdCBjaGFuZ2VzIGluIG5vdGlmaWNhdGlvbnMgYXJyYXlcbiAgICovXG4gIHByaXZhdGUgZW1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVtaXR0ZXIubmV4dCh0aGlzLm5vdGlmaWNhdGlvbnMuc2xpY2UoKSk7XG4gIH1cblxuICAvKipcbiAgICogY2hlY2tzIGlmIHRoZSB0b2FzdCBpcyBpbiB0aGUgY29sbGVjdGlvbi5cbiAgICogQHBhcmFtIGluVG9hc3QgTm90aWZpcmVUb2FzdFxuICAgKiBAcmV0dXJucyBib29sZWFuXG4gICAqL1xuICBwcml2YXRlIGNvbnRhaW5zVG9hc3QoaW5Ub2FzdDogTm90aWZpcmVNb2RlbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5vdGlmaWNhdGlvbnMuc29tZSgodG9hc3QpID0+IHRvYXN0LmVxdWFscyhpblRvYXN0KSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBlbXB0eSB0b2FzdCB3aXRoIGh0bWwgc3RyaW5nIGluc2lkZVxuICAgKiBAcGFyYW0gaHRtbCBzdHJpbmcgfCBTYWZlSHRtbFxuICAgKiBAcGFyYW0gY29uZmlnIE5vdGlmaXJlQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgaHRtbChodG1sOiBzdHJpbmcgfCBTYWZlSHRtbCwgY29uZmlnPzogU25vdGlmaXJlQ29uZmlnKTogTm90aWZpcmVNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKHtcbiAgICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgICBib2R5OiB1bmRlZmluZWQsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAuLi57IGh0bWwgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIHN1Y2Nlc3Mgc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgc3VjY2Vzcyhib2R5OiBzdHJpbmcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggc3VjY2VzcyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIHRpdGxlIHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHN1Y2Nlc3MoYm9keTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKTogTm90aWZpcmVNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIHN1Y2Nlc3Mgc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSBjb25maWcgTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgc3VjY2Vzcyhib2R5OiBzdHJpbmcsIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnKTogTm90aWZpcmVNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIHN1Y2Nlc3Mgc3R5bGUgIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBbYm9keV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbdGl0bGVdIHN0cmluZ1xuICAgKiBAcGFyYW0gW2NvbmZpZ10gTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgc3VjY2Vzcyhib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnKTogTm90aWZpcmVNb2RlbDtcblxuICAvKipcbiAgICogVHJhbnNmb3JtIHRvYXN0IGFyZ3VtZW50cyBpbnRvIE5vdGlmaWNhdGlvbk1vZGVsIG9iamVjdFxuICAgKi9cbiAgQFRyYW5zZm9ybUFyZ3VtZW50XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGN1cnJlbnQgdG9hc3QgdHlwZSBhbmQgY29sbGVjdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBAU2V0VG9hc3RUeXBlXG4gIHN1Y2Nlc3MoYXJnczogYW55KTogTm90aWZpcmVNb2RlbCB7XG4gICAgaWYgKCFhcmdzLmNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGNvbmZpZywgcGxlYXNlIGNvbmZpZ3VyZSBzZXJ2aWNlIGFjY29yZGluZ2x5Jyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNyZWF0ZShhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBlcnJvciBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBlcnJvcihib2R5OiBzdHJpbmcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggZXJyb3Igc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBlcnJvcihib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggZXJyb3Igc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSBjb25maWcgTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgZXJyb3IoYm9keTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBlcnJvciBzdHlsZSAgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIFtib2R5XSBzdHJpbmdcbiAgICogQHBhcmFtIFt0aXRsZV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBlcnJvcihib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnKTogTm90aWZpcmVNb2RlbDtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICBlcnJvcihhcmdzOiBhbnkpOiBOb3RpZmlyZU1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggaW5mbyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBpbmZvKGJvZHk6IHN0cmluZyk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBpbmZvIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgaW5mbyhib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggaW5mbyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGNvbmZpZyBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBpbmZvKGJvZHk6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggaW5mbyBzdHlsZSAgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIFtib2R5XSBzdHJpbmdcbiAgICogQHBhcmFtIFt0aXRsZV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBpbmZvKGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogVHJhbnNmb3JtIHRvYXN0IGFyZ3VtZW50cyBpbnRvIE5vdGlmaWNhdGlvbk1vZGVsIG9iamVjdFxuICAgKi9cbiAgQFRyYW5zZm9ybUFyZ3VtZW50XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGN1cnJlbnQgdG9hc3QgdHlwZSBhbmQgY29sbGVjdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBAU2V0VG9hc3RUeXBlXG4gIGluZm8oYXJnczogYW55KTogTm90aWZpcmVNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKGFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIHdhcm5pbmcgc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgd2FybmluZyhib2R5OiBzdHJpbmcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggd2FybmluZyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIHRpdGxlIHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHdhcm5pbmcoYm9keTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKTogTm90aWZpcmVNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIHdhcm5pbmcgc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSBjb25maWcgTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgd2FybmluZyhib2R5OiBzdHJpbmcsIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnKTogTm90aWZpcmVNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIHdhcm5pbmcgc3R5bGUgIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBbYm9keV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbdGl0bGVdIHN0cmluZ1xuICAgKiBAcGFyYW0gW2NvbmZpZ10gTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgd2FybmluZyhib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnKTogTm90aWZpcmVNb2RlbDtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICB3YXJuaW5nKGFyZ3M6IGFueSk6IE5vdGlmaXJlTW9kZWwge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBjb25maXJtIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGNvbmZpcm0oYm9keTogc3RyaW5nKTogTm90aWZpcmVNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIGNvbmZpcm0gc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBjb25maXJtKGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZyk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBjb25maXJtIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gY29uZmlnIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGNvbmZpcm0oYm9keTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBjb25maXJtIHN0eWxlICByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gW2JvZHldIHN0cmluZ1xuICAgKiBAcGFyYW0gW3RpdGxlXSBzdHJpbmdcbiAgICogQHBhcmFtIFtjb25maWddIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGNvbmZpcm0oYm9keTogc3RyaW5nLCB0aXRsZTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdG9hc3QgYXJndW1lbnRzIGludG8gTm90aWZpY2F0aW9uTW9kZWwgb2JqZWN0XG4gICAqL1xuICBAVHJhbnNmb3JtQXJndW1lbnRcbiAgLyoqXG4gICAqIERldGVybWluZXMgY3VycmVudCB0b2FzdCB0eXBlIGFuZCBjb2xsZWN0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIEBTZXRUb2FzdFR5cGVcbiAgY29uZmlybShhcmdzOiBhbnkpOiBOb3RpZmlyZU1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggUHJvbXB0IHN0eWxlIHdpdGggdHdvIGJ1dHRvbnMsIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHByb21wdChib2R5OiBzdHJpbmcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggUHJvbXB0IHN0eWxlIHdpdGggdHdvIGJ1dHRvbnMsIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgcHJvbXB0KGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZyk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBQcm9tcHQgc3R5bGUgd2l0aCB0d28gYnV0dG9ucywgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSBjb25maWcgTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgcHJvbXB0KGJvZHk6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggUHJvbXB0IHN0eWxlIHdpdGggdHdvIGJ1dHRvbnMsIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBbYm9keV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbdGl0bGVdIHN0cmluZ1xuICAgKiBAcGFyYW0gW2NvbmZpZ10gTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgcHJvbXB0KGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogVHJhbnNmb3JtIHRvYXN0IGFyZ3VtZW50cyBpbnRvIE5vdGlmaWNhdGlvbk1vZGVsIG9iamVjdFxuICAgKi9cbiAgQFRyYW5zZm9ybUFyZ3VtZW50XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGN1cnJlbnQgdG9hc3QgdHlwZSBhbmQgY29sbGVjdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBAU2V0VG9hc3RUeXBlXG4gIHByb21wdChhcmdzOiBhbnkpOiBOb3RpZmlyZU1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhc3luYyB0b2FzdCB3aXRoIEluZm8gc3R5bGUuIFBhc3MgYWN0aW9uLCBhbmQgcmVzb2x2ZSBvciByZWplY3QgaXQuXG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gYWN0aW9uIFByb21pc2U8Tm90aWZpY2F0aW9uTW9kZWw+IHwgT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25Nb2RlbD5cbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBhc3luYyhcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgYWN0aW9uOiBQcm9taXNlPFNub3RpZmlyZU1vZGVsPiB8IE9ic2VydmFibGU8U25vdGlmaXJlTW9kZWw+XG4gICk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFzeW5jIHRvYXN0IHdpdGggSW5mbyBzdHlsZS4gUGFzcyBhY3Rpb24sIGFuZCByZXNvbHZlIG9yIHJlamVjdCBpdC5cbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHBhcmFtIGFjdGlvbiBQcm9taXNlPE5vdGlmaWNhdGlvbk1vZGVsPiB8IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uTW9kZWw+XG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgYXN5bmMoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgYWN0aW9uOiBQcm9taXNlPFNub3RpZmlyZU1vZGVsPiB8IE9ic2VydmFibGU8U25vdGlmaXJlTW9kZWw+XG4gICk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFzeW5jIHRvYXN0IHdpdGggSW5mbyBzdHlsZS4gUGFzcyBhY3Rpb24sIGFuZCByZXNvbHZlIG9yIHJlamVjdCBpdC5cbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSBhY3Rpb24gUHJvbWlzZTxOb3RpZmljYXRpb25Nb2RlbD4gfCBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbk1vZGVsPlxuICAgKiBAcGFyYW0gW2NvbmZpZ10gTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgYXN5bmMoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIGFjdGlvbjogUHJvbWlzZTxTbm90aWZpcmVNb2RlbD4gfCBPYnNlcnZhYmxlPFNub3RpZmlyZU1vZGVsPixcbiAgICBjb25maWc6IFNub3RpZmlyZUNvbmZpZ1xuICApOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlcyBhc3luYyB0b2FzdCB3aXRoIEluZm8gc3R5bGUuIFBhc3MgYWN0aW9uLCBhbmQgcmVzb2x2ZSBvciByZWplY3QgaXQuXG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEBwYXJhbSBhY3Rpb24gUHJvbWlzZTxOb3RpZmljYXRpb25Nb2RlbD4gfCBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbk1vZGVsPlxuICAgKiBAcGFyYW0gW2NvbmZpZ10gTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgYXN5bmMoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgYWN0aW9uOiBQcm9taXNlPFNub3RpZmlyZU1vZGVsPiB8IE9ic2VydmFibGU8U25vdGlmaXJlTW9kZWw+LFxuICAgIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnXG4gICk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdG9hc3QgYXJndW1lbnRzIGludG8gTm90aWZpY2F0aW9uTW9kZWwgb2JqZWN0XG4gICAqL1xuICBAVHJhbnNmb3JtQXJndW1lbnRcbiAgLyoqXG4gICAqIERldGVybWluZXMgY3VycmVudCB0b2FzdCB0eXBlIGFuZCBjb2xsZWN0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIEBTZXRUb2FzdFR5cGVcbiAgYXN5bmMoYXJnczogYW55KTogTm90aWZpcmVNb2RlbCB7XG4gICAgbGV0IGFzeW5jOiBPYnNlcnZhYmxlPGFueT47XG4gICAgaWYgKGFyZ3MuYWN0aW9uIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgYXN5bmMgPSBmcm9tKGFyZ3MuYWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXN5bmMgPSBhcmdzLmFjdGlvbjtcbiAgICB9XG5cbiAgICBjb25zdCB0b2FzdCA9IHRoaXMuY3JlYXRlKGFyZ3MpO1xuXG4gICAgdG9hc3Qub24oU25vdGlmaXJlRXZlbnRUeXBlLk1PVU5URUQsICgpID0+IHtcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gYXN5bmMuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKG5leHQ/OiBTbm90aWZpcmVNb2RlbCkgPT4ge1xuICAgICAgICAgIHRoaXMubWVyZ2VUb2FzdCh0b2FzdCwgbmV4dCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3I/OiBTbm90aWZpcmVNb2RlbCkgPT4ge1xuICAgICAgICAgIHRoaXMubWVyZ2VUb2FzdCh0b2FzdCwgZXJyb3IsIFNub3RpZmlyZVR5cGUuRVJST1IpO1xuICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgIHRoaXMubWVyZ2VUb2FzdCh0b2FzdCwge30sIFNub3RpZmlyZVR5cGUuU1VDQ0VTUyk7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0b2FzdDtcbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VUb2FzdCh0b2FzdDogYW55LCBuZXh0OiBhbnksIHR5cGU/OiBTbm90aWZpcmVUeXBlKSB7XG4gICAgaWYgKG5leHQuYm9keSkge1xuICAgICAgdG9hc3QuYm9keSA9IG5leHQuYm9keTtcbiAgICB9XG4gICAgaWYgKG5leHQudGl0bGUpIHtcbiAgICAgIHRvYXN0LnRpdGxlID0gbmV4dC50aXRsZTtcbiAgICB9XG4gICAgaWYgKHR5cGUgJiYgdGhpcy5kZWZhdWx0Q29uZmlnKSB7XG4gICAgICB0b2FzdC5jb25maWcgPSBtZXJnZURlZXAoXG4gICAgICAgIHRvYXN0LmNvbmZpZyxcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbCxcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLnNub3RpZmlyZUNvbmZpZz8udHlwZSxcbiAgICAgICAgeyB0eXBlIH0sXG4gICAgICAgIG5leHQuY29uZmlnXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2FzdC5jb25maWcgPSBtZXJnZURlZXAodG9hc3QuY29uZmlnLCBuZXh0LmNvbmZpZyk7XG4gICAgfVxuICAgIGlmIChuZXh0Lmh0bWwpIHtcbiAgICAgIHRvYXN0LmNvbmZpZy5odG1sID0gbmV4dC5odG1sO1xuICAgIH1cbiAgICB0aGlzLmVtaXQoKTtcbiAgICB0aGlzLnRvYXN0Q2hhbmdlZC5uZXh0KHRvYXN0KTtcbiAgfVxufVxuIl19
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc25vdGlmaXJlL3NyYy9saWIvc2VydmljZXMvbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxJQUFJLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDL0UsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBRzNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFnQjNCLFlBQ29DLGFBQWdDO1FBQWhDLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQWhCcEU7O1dBRUc7UUFDYyx5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFFN0M7O1dBRUc7UUFDTSxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQXlCLENBQUM7UUFFL0MsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ3JDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFFM0Qsa0JBQWEsR0FBK0IsRUFBRSxDQUFDO0lBSTVDLENBQUM7SUFFSjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEtBQXFCO1FBQzFCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFB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QUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxFQUFVO1FBQ1osT0FBTyxDQUNMLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQzFFLENBQUM7SUFDSixDQUFDOzs4R0FuaEJVLGdCQUFnQixrQkFpQmpCLGlCQUFpQjtrSEFqQmhCLGdCQUFnQjs7SUFxTDFCLGlCQUFpQjtJQUNsQjs7T0FFRzs7SUFDRixZQUFZOytDQU1aOztJQXFDQSxpQkFBaUI7SUFDbEI7O09BRUc7O0lBQ0YsWUFBWTs2Q0FHWjs7SUFxQ0EsaUJBQWlCO0lBQ2xCOztPQUVHOztJQUNGLFlBQVk7NENBR1o7O0lBcUNBLGlCQUFpQjtJQUNsQjs7T0FFRzs7SUFDRixZQUFZOytDQUdaOztJQXFDQSxpQkFBaUI7SUFDbEI7O09BRUc7O0lBQ0YsWUFBWTsrQ0FHWjs7SUFxQ0EsaUJBQWlCO0lBQ2xCOztPQUVHOztJQUNGLFlBQVk7OENBR1o7O0lBcURBLGlCQUFpQjtJQUNsQjs7T0FFRzs7SUFDRixZQUFZOzZDQTRCWjs0RkFoZlUsZ0JBQWdCO2tCQUQ1QixVQUFVOzswQkFrQk4sTUFBTTsyQkFBQyxpQkFBaUI7NENBeUszQixPQUFPLE1BK0NQLEtBQUssTUE0Q0wsSUFBSSxNQTRDSixPQUFPLE1BNENQLE9BQU8sTUE0Q1AsTUFBTSxNQTRETixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZXRUb2FzdFR5cGUgfSBmcm9tICcuLi9kZWNvcmF0b3JzL3NldC10b2FzdC10eXBlLmRlY29yYXRvcic7XG5pbXBvcnQgeyBUcmFuc2Zvcm1Bcmd1bWVudCB9IGZyb20gJy4uL2RlY29yYXRvcnMvdHJhbnNmb3JtLWFyZ3VtZW50LmRlY29yYXRvcic7XG5pbXBvcnQgeyBTbm90aWZpcmVDb25maWcsIFNub3RpZmlyZUV2ZW50VHlwZSwgU25vdGlmaXJlVHlwZSB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBTbm90aWZpcmVEZWZhdWx0cyB9IGZyb20gJy4uL2RlZmF1bHRzL2RlZmF1bHRzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTbm90aWZpcmVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zbm90aWZpcmUubW9kZWwnO1xuaW1wb3J0IHsgU25vdGlmaXJlVG9hc3RNb2RlbCB9IGZyb20gJy4uL2NvbXBvbmVudHMvdG9hc3Qvbm90aWZpcmUtdG9hc3QubW9kZWwnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwLCB1dWlkIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU25vdGlmaXJlU2VydmljZSB7XG4gIC8qKlxuICAgKiBNaW5pbXVtIGRpc3BsYXkgdGltZSBvZiB0aGUgbm90aWZpY2F0aW9uIG1lc3NhZ2VcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgbWluaW11bURpc3BsYXllZFRpbWUgPSAzMDAwO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBOb3RpZmlyZSBOb3RpZmljYXRpb25zXG4gICAqL1xuICByZWFkb25seSBlbWl0dGVyID0gbmV3IFN1YmplY3Q8U25vdGlmaXJlVG9hc3RNb2RlbFtdPigpO1xuXG4gIHJlYWRvbmx5IHRvYXN0RGVsZXRlZCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgdG9hc3RDaGFuZ2VkID0gbmV3IFN1YmplY3Q8U25vdGlmaXJlVG9hc3RNb2RlbD4oKTtcblxuICBub3RpZmljYXRpb25zOiBBcnJheTxTbm90aWZpcmVUb2FzdE1vZGVsPiA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ3Nub3RpZmlyZUNvbmZpZycpIHB1YmxpYyBkZWZhdWx0Q29uZmlnOiBTbm90aWZpcmVEZWZhdWx0c1xuICApIHt9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdG9hc3QgYW5kIGFkZCBpdCB0byBhcnJheSwgcmV0dXJucyB0b2FzdCBpZFxuICAgKiBAcGFyYW0gTm90aWZpY2F0aW9uTW9kZWwgTm90aWZpY2F0aW9uTW9kZWxcbiAgICogQHJldHVybiBudW1iZXJcbiAgICovXG4gIGNyZWF0ZShub3RpZjogU25vdGlmaXJlTW9kZWwpOiBTbm90aWZpcmVUb2FzdE1vZGVsIHtcbiAgICBpZiAodGhpcy5kZWZhdWx0Q29uZmlnLnR5cGUgJiYgbm90aWYuY29uZmlnICYmIG5vdGlmLmNvbmZpZy50eXBlKSB7XG4gICAgICBjb25zdCBjb25maWcgPSBtZXJnZURlZXAoXG4gICAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy5zbm90aWZpcmVDb25maWcsXG4gICAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy50eXBlW25vdGlmLmNvbmZpZy50eXBlXSxcbiAgICAgICAgbm90aWYuY29uZmlnXG4gICAgICApO1xuICAgICAgY29uc3QgdG9hc3QgPSBuZXcgU25vdGlmaXJlVG9hc3RNb2RlbChcbiAgICAgICAgdXVpZCgpLFxuICAgICAgICBub3RpZi50aXRsZSA/IG5vdGlmLnRpdGxlIDogJycsXG4gICAgICAgIG5vdGlmLmJvZHkgPyBub3RpZi5ib2R5IDogJycsXG4gICAgICAgIGNvbmZpZ1xuICAgICAgKTtcbiAgICAgIHRoaXMuYWRkKHRvYXN0KTtcbiAgICAgIHJldHVybiB0b2FzdDtcbiAgICB9XG4gICAgY29uc3QgY29uZmlnID0gbWVyZ2VEZWVwKHRoaXMuZGVmYXVsdENvbmZpZy5zbm90aWZpcmVDb25maWcsIG5vdGlmLmNvbmZpZyk7XG4gICAgY29uc3QgZGVmYXVsVG9hc3QgPSBuZXcgU25vdGlmaXJlVG9hc3RNb2RlbChcbiAgICAgIHV1aWQoKSxcbiAgICAgIG5vdGlmLnRpdGxlID8gbm90aWYudGl0bGUgOiAnJyxcbiAgICAgIG5vdGlmLmJvZHkgPyBub3RpZi5ib2R5IDogJycsXG4gICAgICBjb25maWdcbiAgICApO1xuICAgIHRoaXMuYWRkKGRlZmF1bFRvYXN0KTtcbiAgICByZXR1cm4gZGVmYXVsVG9hc3Q7XG4gIH1cbiAgLyoqXG4gICAqIElmIElEIHBhc3NlZCwgZW1pdHMgdG9hc3QgYW5pbWF0aW9uIHJlbW92ZSwgaWYgSUQgJiBSRU1PVkUgcGFzc2VkLCByZW1vdmVzIHRvYXN0IGZyb20gbm90aWZpY2F0aW9ucyBhcnJheVxuICAgKiBAcGFyYW0gaWQgbnVtYmVyXG4gICAqIEBwYXJhbSByZW1vdmUgYm9vbGVhblxuICAgKi9cbiAgcmVtb3ZlKGlkOiBudW1iZXIsIHJlbW92ZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIWlkKSB7XG4gICAgICByZXR1cm4gdGhpcy5jbGVhcigpO1xuICAgIH1cbiAgICBpZiAocmVtb3ZlKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSB0aGlzLm5vdGlmaWNhdGlvbnMuZmlsdGVyKFxuICAgICAgICAodG9hc3QpID0+IHRvYXN0LmlkICE9PSBpZFxuICAgICAgKTtcbiAgICAgIHJldHVybiB0aGlzLmVtaXQoKTtcbiAgICB9XG4gICAgdGhpcy50b2FzdERlbGV0ZWQubmV4dChpZCk7XG4gIH1cblxuICBzZXREZWZhdWx0cyhkZWZhdWx0czogU25vdGlmaXJlRGVmYXVsdHMpOiBTbm90aWZpcmVEZWZhdWx0cyB7XG4gICAgY29uc3QgbWVyZ2VkQ29uZmlnID0gKHRoaXMuZGVmYXVsdENvbmZpZyA9IG1lcmdlRGVlcChcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyxcbiAgICAgIGRlZmF1bHRzXG4gICAgKSBhcyBTbm90aWZpcmVEZWZhdWx0cyk7XG4gICAgcmV0dXJuIG1lcmdlZENvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBub3RpZmljYXRpb25zIGFycmF5XG4gICAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSBbXTtcbiAgICB0aGlzLmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGQgTm90aWZpcmVUb2FzdCB0byBub3RpZmljYXRpb25zIGFycmF5XG4gICAqIEBwYXJhbSB0b2FzdCBOb3RpZmlyZVRvYXN0XG4gICAqL1xuICBwcml2YXRlIGFkZCh0b2FzdDogU25vdGlmaXJlVG9hc3RNb2RlbCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyAmJlxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbCAmJlxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbC5maWx0ZXJEdXBsaWNhdGVzICYmXG4gICAgICB0aGlzLmNvbnRhaW5zVG9hc3QodG9hc3QpXG4gICAgKSB7XG4gICAgICBpZiAoIXRoaXMuZGVmYXVsdENvbmZpZy5nbG9iYWwuZmlsdGVyRHVwbGljYXRlcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgZ2xvYmFsIGNvbmZpZycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgJiZcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy5nbG9iYWwgJiZcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy5nbG9iYWwubmV3T25Ub3BcbiAgICApIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucy51bnNoaWZ0KHRvYXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnB1c2godG9hc3QpO1xuICAgIH1cbiAgICB0aGlzLmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBlbWl0IGNoYW5nZXMgaW4gbm90aWZpY2F0aW9ucyBhcnJheVxuICAgKi9cbiAgcHJpdmF0ZSBlbWl0KCk6IHZvaWQge1xuICAgIHRoaXMuZW1pdHRlci5uZXh0KHRoaXMubm90aWZpY2F0aW9ucy5zbGljZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjaGVja3MgaWYgdGhlIHRvYXN0IGlzIGluIHRoZSBjb2xsZWN0aW9uLlxuICAgKiBAcGFyYW0gaW5Ub2FzdCBOb3RpZmlyZVRvYXN0XG4gICAqIEByZXR1cm5zIGJvb2xlYW5cbiAgICovXG4gIHByaXZhdGUgY29udGFpbnNUb2FzdChpblRvYXN0OiBTbm90aWZpcmVUb2FzdE1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9ucy5zb21lKCh0b2FzdCkgPT4gdG9hc3QuZXF1YWxzKGluVG9hc3QpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGVtcHR5IHRvYXN0IHdpdGggaHRtbCBzdHJpbmcgaW5zaWRlXG4gICAqIEBwYXJhbSBodG1sIHN0cmluZyB8IFNhZmVIdG1sXG4gICAqIEBwYXJhbSBjb25maWcgTm90aWZpcmVDb25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBodG1sKGh0bWw6IHN0cmluZyB8IFNhZmVIdG1sLCBjb25maWc/OiBTbm90aWZpcmVDb25maWcpOiBTbm90aWZpcmVUb2FzdE1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoe1xuICAgICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgICAgIGJvZHk6IHVuZGVmaW5lZCxcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIC4uLnsgaHRtbCB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggc3VjY2VzcyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBzdWNjZXNzKGJvZHk6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBzdWNjZXNzIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgc3VjY2Vzcyhib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggc3VjY2VzcyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGNvbmZpZyBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBzdWNjZXNzKGJvZHk6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggc3VjY2VzcyBzdHlsZSAgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIFtib2R5XSBzdHJpbmdcbiAgICogQHBhcmFtIFt0aXRsZV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBzdWNjZXNzKFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnXG4gICk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICBzdWNjZXNzKGFyZ3M6IGFueSk6IFNub3RpZmlyZVRvYXN0TW9kZWwge1xuICAgIGlmICghYXJncy5jb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBjb25maWcsIHBsZWFzZSBjb25maWd1cmUgc2VydmljZSBhY2NvcmRpbmdseScpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggZXJyb3Igc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgZXJyb3IoYm9keTogc3RyaW5nKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIGVycm9yIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgZXJyb3IoYm9keTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIGVycm9yIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gY29uZmlnIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGVycm9yKGJvZHk6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggZXJyb3Igc3R5bGUgIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBbYm9keV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbdGl0bGVdIHN0cmluZ1xuICAgKiBAcGFyYW0gW2NvbmZpZ10gTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgZXJyb3IoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY29uZmlnOiBTbm90aWZpcmVDb25maWdcbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICBlcnJvcihhcmdzOiBhbnkpOiBTbm90aWZpcmVUb2FzdE1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggaW5mbyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBpbmZvKGJvZHk6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBpbmZvIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgaW5mbyhib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggaW5mbyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGNvbmZpZyBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBpbmZvKGJvZHk6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggaW5mbyBzdHlsZSAgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIFtib2R5XSBzdHJpbmdcbiAgICogQHBhcmFtIFt0aXRsZV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBpbmZvKFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnXG4gICk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdG9hc3QgYXJndW1lbnRzIGludG8gTm90aWZpY2F0aW9uTW9kZWwgb2JqZWN0XG4gICAqL1xuICBAVHJhbnNmb3JtQXJndW1lbnRcbiAgLyoqXG4gICAqIERldGVybWluZXMgY3VycmVudCB0b2FzdCB0eXBlIGFuZCBjb2xsZWN0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIEBTZXRUb2FzdFR5cGVcbiAgaW5mbyhhcmdzOiBhbnkpOiBTbm90aWZpcmVUb2FzdE1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggd2FybmluZyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICB3YXJuaW5nKGJvZHk6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCB3YXJuaW5nIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgd2FybmluZyhib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggd2FybmluZyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGNvbmZpZyBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICB3YXJuaW5nKGJvZHk6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggd2FybmluZyBzdHlsZSAgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIFtib2R5XSBzdHJpbmdcbiAgICogQHBhcmFtIFt0aXRsZV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICB3YXJuaW5nKFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnXG4gICk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdG9hc3QgYXJndW1lbnRzIGludG8gTm90aWZpY2F0aW9uTW9kZWwgb2JqZWN0XG4gICAqL1xuICBAVHJhbnNmb3JtQXJndW1lbnRcbiAgLyoqXG4gICAqIERldGVybWluZXMgY3VycmVudCB0b2FzdCB0eXBlIGFuZCBjb2xsZWN0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIEBTZXRUb2FzdFR5cGVcbiAgd2FybmluZyhhcmdzOiBhbnkpOiBTbm90aWZpcmVUb2FzdE1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggY29uZmlybSBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBjb25maXJtKGJvZHk6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBjb25maXJtIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgY29uZmlybShib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggY29uZmlybSBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGNvbmZpZyBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBjb25maXJtKGJvZHk6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggY29uZmlybSBzdHlsZSAgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIFtib2R5XSBzdHJpbmdcbiAgICogQHBhcmFtIFt0aXRsZV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBjb25maXJtKFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnXG4gICk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdG9hc3QgYXJndW1lbnRzIGludG8gTm90aWZpY2F0aW9uTW9kZWwgb2JqZWN0XG4gICAqL1xuICBAVHJhbnNmb3JtQXJndW1lbnRcbiAgLyoqXG4gICAqIERldGVybWluZXMgY3VycmVudCB0b2FzdCB0eXBlIGFuZCBjb2xsZWN0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIEBTZXRUb2FzdFR5cGVcbiAgY29uZmlybShhcmdzOiBhbnkpOiBTbm90aWZpcmVUb2FzdE1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggUHJvbXB0IHN0eWxlIHdpdGggdHdvIGJ1dHRvbnMsIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHByb21wdChib2R5OiBzdHJpbmcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggUHJvbXB0IHN0eWxlIHdpdGggdHdvIGJ1dHRvbnMsIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgcHJvbXB0KGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBQcm9tcHQgc3R5bGUgd2l0aCB0d28gYnV0dG9ucywgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSBjb25maWcgTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgcHJvbXB0KGJvZHk6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggUHJvbXB0IHN0eWxlIHdpdGggdHdvIGJ1dHRvbnMsIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBbYm9keV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbdGl0bGVdIHN0cmluZ1xuICAgKiBAcGFyYW0gW2NvbmZpZ10gTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgcHJvbXB0KFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnXG4gICk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdG9hc3QgYXJndW1lbnRzIGludG8gTm90aWZpY2F0aW9uTW9kZWwgb2JqZWN0XG4gICAqL1xuICBAVHJhbnNmb3JtQXJndW1lbnRcbiAgLyoqXG4gICAqIERldGVybWluZXMgY3VycmVudCB0b2FzdCB0eXBlIGFuZCBjb2xsZWN0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIEBTZXRUb2FzdFR5cGVcbiAgcHJvbXB0KGFyZ3M6IGFueSk6IFNub3RpZmlyZVRvYXN0TW9kZWwge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFzeW5jIHRvYXN0IHdpdGggSW5mbyBzdHlsZS4gUGFzcyBhY3Rpb24sIGFuZCByZXNvbHZlIG9yIHJlamVjdCBpdC5cbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSBhY3Rpb24gUHJvbWlzZTxOb3RpZmljYXRpb25Nb2RlbD4gfCBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbk1vZGVsPlxuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGFzeW5jKFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBhY3Rpb246IFByb21pc2U8U25vdGlmaXJlTW9kZWw+IHwgT2JzZXJ2YWJsZTxTbm90aWZpcmVNb2RlbD5cbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYXN5bmMgdG9hc3Qgd2l0aCBJbmZvIHN0eWxlLiBQYXNzIGFjdGlvbiwgYW5kIHJlc29sdmUgb3IgcmVqZWN0IGl0LlxuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIHRpdGxlIHN0cmluZ1xuICAgKiBAcGFyYW0gYWN0aW9uIFByb21pc2U8Tm90aWZpY2F0aW9uTW9kZWw+IHwgT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25Nb2RlbD5cbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBhc3luYyhcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBhY3Rpb246IFByb21pc2U8U25vdGlmaXJlTW9kZWw+IHwgT2JzZXJ2YWJsZTxTbm90aWZpcmVNb2RlbD5cbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYXN5bmMgdG9hc3Qgd2l0aCBJbmZvIHN0eWxlLiBQYXNzIGFjdGlvbiwgYW5kIHJlc29sdmUgb3IgcmVqZWN0IGl0LlxuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGFjdGlvbiBQcm9taXNlPE5vdGlmaWNhdGlvbk1vZGVsPiB8IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uTW9kZWw+XG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBhc3luYyhcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgYWN0aW9uOiBQcm9taXNlPFNub3RpZmlyZU1vZGVsPiB8IE9ic2VydmFibGU8U25vdGlmaXJlTW9kZWw+LFxuICAgIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnXG4gICk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFzeW5jIHRvYXN0IHdpdGggSW5mbyBzdHlsZS4gUGFzcyBhY3Rpb24sIGFuZCByZXNvbHZlIG9yIHJlamVjdCBpdC5cbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHBhcmFtIGFjdGlvbiBQcm9taXNlPE5vdGlmaWNhdGlvbk1vZGVsPiB8IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uTW9kZWw+XG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBhc3luYyhcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBhY3Rpb246IFByb21pc2U8U25vdGlmaXJlTW9kZWw+IHwgT2JzZXJ2YWJsZTxTbm90aWZpcmVNb2RlbD4sXG4gICAgY29uZmlnOiBTbm90aWZpcmVDb25maWdcbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICBhc3luYyhhcmdzOiBhbnkpOiBTbm90aWZpcmVUb2FzdE1vZGVsIHtcbiAgICBsZXQgYXN5bmM6IE9ic2VydmFibGU8YW55PjtcbiAgICBpZiAoYXJncy5hY3Rpb24gaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICBhc3luYyA9IGZyb20oYXJncy5hY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3luYyA9IGFyZ3MuYWN0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IHRvYXN0ID0gdGhpcy5jcmVhdGUoYXJncyk7XG5cbiAgICB0b2FzdC5vbihTbm90aWZpcmVFdmVudFR5cGUuTU9VTlRFRCwgKCkgPT4ge1xuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBhc3luYy5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAobmV4dD86IFNub3RpZmlyZU1vZGVsKSA9PiB7XG4gICAgICAgICAgdGhpcy5tZXJnZVRvYXN0KHRvYXN0LCBuZXh0KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcj86IFNub3RpZmlyZU1vZGVsKSA9PiB7XG4gICAgICAgICAgdGhpcy5tZXJnZVRvYXN0KHRvYXN0LCBlcnJvciwgU25vdGlmaXJlVHlwZS5FUlJPUik7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5tZXJnZVRvYXN0KHRvYXN0LCB7fSwgU25vdGlmaXJlVHlwZS5TVUNDRVNTKTtcbiAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRvYXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZVRvYXN0KHRvYXN0OiBhbnksIG5leHQ6IGFueSwgdHlwZT86IFNub3RpZmlyZVR5cGUpIHtcbiAgICBpZiAobmV4dC5ib2R5KSB7XG4gICAgICB0b2FzdC5ib2R5ID0gbmV4dC5ib2R5O1xuICAgIH1cbiAgICBpZiAobmV4dC50aXRsZSkge1xuICAgICAgdG9hc3QudGl0bGUgPSBuZXh0LnRpdGxlO1xuICAgIH1cbiAgICBpZiAodHlwZSAmJiB0aGlzLmRlZmF1bHRDb25maWcpIHtcbiAgICAgIHRvYXN0LmNvbmZpZyA9IG1lcmdlRGVlcChcbiAgICAgICAgdG9hc3QuY29uZmlnLFxuICAgICAgICB0aGlzLmRlZmF1bHRDb25maWcuZ2xvYmFsLFxuICAgICAgICB0aGlzLmRlZmF1bHRDb25maWcuc25vdGlmaXJlQ29uZmlnPy50eXBlLFxuICAgICAgICB7IHR5cGUgfSxcbiAgICAgICAgbmV4dC5jb25maWdcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvYXN0LmNvbmZpZyA9IG1lcmdlRGVlcCh0b2FzdC5jb25maWcsIG5leHQuY29uZmlnKTtcbiAgICB9XG4gICAgaWYgKG5leHQuaHRtbCkge1xuICAgICAgdG9hc3QuY29uZmlnLmh0bWwgPSBuZXh0Lmh0bWw7XG4gICAgfVxuICAgIHRoaXMuZW1pdCgpO1xuICAgIHRoaXMudG9hc3RDaGFuZ2VkLm5leHQodG9hc3QpO1xuICB9XG4gIC8qKlxuICAgKiByZXR1cm5zIFNub3RpZnlUb2FzdCBvYmplY3RcbiAgICogQHBhcmFtIGlkIE51bWJlclxuICAgKiBAcmV0dXJuIFNub3RpZnlUb2FzdHx1bmRlZmluZWRcbiAgICovXG4gIGdldChpZDogbnVtYmVyKTogU25vdGlmaXJlVG9hc3RNb2RlbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucyAmJiB0aGlzLm5vdGlmaWNhdGlvbnMuZmluZCgodG9hc3QpID0+IHRvYXN0LmlkID09PSBpZClcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -175,7 +175,7 @@ function TransformArgument(target, propertyKey, descriptor) {
|
|
|
175
175
|
/**
|
|
176
176
|
* Toast main model
|
|
177
177
|
*/
|
|
178
|
-
class
|
|
178
|
+
class SnotifireToastModel {
|
|
179
179
|
constructor(id, title, body, config) {
|
|
180
180
|
this.id = id;
|
|
181
181
|
this.title = title;
|
|
@@ -271,7 +271,7 @@ function isObject(item) {
|
|
|
271
271
|
return item && typeof item === 'object' && !Array.isArray(item);
|
|
272
272
|
}
|
|
273
273
|
|
|
274
|
-
class
|
|
274
|
+
class SnotifireService {
|
|
275
275
|
constructor(defaultConfig) {
|
|
276
276
|
this.defaultConfig = defaultConfig;
|
|
277
277
|
/**
|
|
@@ -294,12 +294,12 @@ class SnotificationService {
|
|
|
294
294
|
create(notif) {
|
|
295
295
|
if (this.defaultConfig.type && notif.config && notif.config.type) {
|
|
296
296
|
const config = mergeDeep(this.defaultConfig.snotifireConfig, this.defaultConfig.type[notif.config.type], notif.config);
|
|
297
|
-
const toast = new
|
|
297
|
+
const toast = new SnotifireToastModel(uuid(), notif.title ? notif.title : '', notif.body ? notif.body : '', config);
|
|
298
298
|
this.add(toast);
|
|
299
299
|
return toast;
|
|
300
300
|
}
|
|
301
301
|
const config = mergeDeep(this.defaultConfig.snotifireConfig, notif.config);
|
|
302
|
-
const defaulToast = new
|
|
302
|
+
const defaulToast = new SnotifireToastModel(uuid(), notif.title ? notif.title : '', notif.body ? notif.body : '', config);
|
|
303
303
|
this.add(defaulToast);
|
|
304
304
|
return defaulToast;
|
|
305
305
|
}
|
|
@@ -468,9 +468,17 @@ class SnotificationService {
|
|
|
468
468
|
this.emit();
|
|
469
469
|
this.toastChanged.next(toast);
|
|
470
470
|
}
|
|
471
|
+
/**
|
|
472
|
+
* returns SnotifyToast object
|
|
473
|
+
* @param id Number
|
|
474
|
+
* @return SnotifyToast|undefined
|
|
475
|
+
*/
|
|
476
|
+
get(id) {
|
|
477
|
+
return (this.notifications && this.notifications.find((toast) => toast.id === id));
|
|
478
|
+
}
|
|
471
479
|
}
|
|
472
|
-
|
|
473
|
-
|
|
480
|
+
SnotifireService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotifireService, deps: [{ token: 'snotifireConfig' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
481
|
+
SnotifireService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotifireService });
|
|
474
482
|
__decorate([
|
|
475
483
|
TransformArgument
|
|
476
484
|
/**
|
|
@@ -478,7 +486,7 @@ __decorate([
|
|
|
478
486
|
*/
|
|
479
487
|
,
|
|
480
488
|
SetToastType
|
|
481
|
-
],
|
|
489
|
+
], SnotifireService.prototype, "success", null);
|
|
482
490
|
__decorate([
|
|
483
491
|
TransformArgument
|
|
484
492
|
/**
|
|
@@ -486,7 +494,7 @@ __decorate([
|
|
|
486
494
|
*/
|
|
487
495
|
,
|
|
488
496
|
SetToastType
|
|
489
|
-
],
|
|
497
|
+
], SnotifireService.prototype, "error", null);
|
|
490
498
|
__decorate([
|
|
491
499
|
TransformArgument
|
|
492
500
|
/**
|
|
@@ -494,7 +502,7 @@ __decorate([
|
|
|
494
502
|
*/
|
|
495
503
|
,
|
|
496
504
|
SetToastType
|
|
497
|
-
],
|
|
505
|
+
], SnotifireService.prototype, "info", null);
|
|
498
506
|
__decorate([
|
|
499
507
|
TransformArgument
|
|
500
508
|
/**
|
|
@@ -502,7 +510,7 @@ __decorate([
|
|
|
502
510
|
*/
|
|
503
511
|
,
|
|
504
512
|
SetToastType
|
|
505
|
-
],
|
|
513
|
+
], SnotifireService.prototype, "warning", null);
|
|
506
514
|
__decorate([
|
|
507
515
|
TransformArgument
|
|
508
516
|
/**
|
|
@@ -510,7 +518,7 @@ __decorate([
|
|
|
510
518
|
*/
|
|
511
519
|
,
|
|
512
520
|
SetToastType
|
|
513
|
-
],
|
|
521
|
+
], SnotifireService.prototype, "confirm", null);
|
|
514
522
|
__decorate([
|
|
515
523
|
TransformArgument
|
|
516
524
|
/**
|
|
@@ -518,7 +526,7 @@ __decorate([
|
|
|
518
526
|
*/
|
|
519
527
|
,
|
|
520
528
|
SetToastType
|
|
521
|
-
],
|
|
529
|
+
], SnotifireService.prototype, "prompt", null);
|
|
522
530
|
__decorate([
|
|
523
531
|
TransformArgument
|
|
524
532
|
/**
|
|
@@ -526,13 +534,13 @@ __decorate([
|
|
|
526
534
|
*/
|
|
527
535
|
,
|
|
528
536
|
SetToastType
|
|
529
|
-
],
|
|
530
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type:
|
|
537
|
+
], SnotifireService.prototype, "async", null);
|
|
538
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotifireService, decorators: [{
|
|
531
539
|
type: Injectable
|
|
532
540
|
}], ctorParameters: function () {
|
|
533
541
|
return [{ type: undefined, decorators: [{
|
|
534
542
|
type: Inject,
|
|
535
|
-
args: ['
|
|
543
|
+
args: ['snotifireConfig']
|
|
536
544
|
}] }];
|
|
537
545
|
}, propDecorators: { success: [], error: [], info: [], warning: [], confirm: [], prompt: [], async: [] } });
|
|
538
546
|
|
|
@@ -550,12 +558,12 @@ class ButtonsComponent {
|
|
|
550
558
|
this.service.remove(this.toast.id);
|
|
551
559
|
}
|
|
552
560
|
}
|
|
553
|
-
ButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ButtonsComponent, deps: [{ token:
|
|
561
|
+
ButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ButtonsComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component });
|
|
554
562
|
ButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: ButtonsComponent, selector: "notifire-button", inputs: { toast: "toast" }, ngImport: i0, template: "<div class=\"notifire-toast__buttons\">\n <ng-container *ngIf=\"toast.config\">\n <button\n type=\"button\"\n *ngFor=\"let button of toast.config.buttons\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
555
563
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ButtonsComponent, decorators: [{
|
|
556
564
|
type: Component,
|
|
557
565
|
args: [{ selector: 'notifire-button', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"notifire-toast__buttons\">\n <ng-container *ngIf=\"toast.config\">\n <button\n type=\"button\"\n *ngFor=\"let button of toast.config.buttons\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n </ng-container>\n</div>\n" }]
|
|
558
|
-
}], ctorParameters: function () { return [{ type:
|
|
566
|
+
}], ctorParameters: function () { return [{ type: SnotifireService }]; }, propDecorators: { toast: [{
|
|
559
567
|
type: Input
|
|
560
568
|
}] } });
|
|
561
569
|
|
|
@@ -771,12 +779,12 @@ class ToastComponent {
|
|
|
771
779
|
this.unsubscribe$.complete();
|
|
772
780
|
}
|
|
773
781
|
}
|
|
774
|
-
ToastComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ToastComponent, deps: [{ token:
|
|
775
|
-
ToastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: ToastComponent, selector: "ngx-toast", inputs: { toast: "toast" }, outputs: { stateChanged: "stateChanged" }, ngImport: i0, template: "<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['
|
|
782
|
+
ToastComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ToastComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component });
|
|
783
|
+
ToastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: ToastComponent, selector: "ngx-toast", inputs: { toast: "toast" }, outputs: { stateChanged: "stateChanged" }, ngImport: i0, template: "<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n <ng-template #elseBlock>\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n </ng-template>\n </div>\n <ng-template #toastHTML>\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n </ng-template>\n <notifire-button\n *ngIf=\"toast.config.buttons\"\n [toast]=\"toast\"\n ></notifire-button>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PromptComponent, selector: "ngx-snotify-prompt", inputs: ["toast"] }, { kind: "component", type: ButtonsComponent, selector: "notifire-button", inputs: ["toast"] }, { kind: "pipe", type: TruncatePipe, name: "truncate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
776
784
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ToastComponent, decorators: [{
|
|
777
785
|
type: Component,
|
|
778
|
-
args: [{ selector: 'ngx-toast', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['
|
|
779
|
-
}], ctorParameters: function () { return [{ type:
|
|
786
|
+
args: [{ selector: 'ngx-toast', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n <ng-template #elseBlock>\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n </ng-template>\n </div>\n <ng-template #toastHTML>\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n </ng-template>\n <notifire-button\n *ngIf=\"toast.config.buttons\"\n [toast]=\"toast\"\n ></notifire-button>\n </div>\n</ng-container>\n" }]
|
|
787
|
+
}], ctorParameters: function () { return [{ type: SnotifireService }]; }, propDecorators: { toast: [{
|
|
780
788
|
type: Input
|
|
781
789
|
}], stateChanged: [{
|
|
782
790
|
type: Output
|
|
@@ -920,18 +928,18 @@ class NgxSnotifireComponent {
|
|
|
920
928
|
this.unsubscribe$.complete();
|
|
921
929
|
}
|
|
922
930
|
}
|
|
923
|
-
NgxSnotifireComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: NgxSnotifireComponent, deps: [{ token:
|
|
931
|
+
NgxSnotifireComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: NgxSnotifireComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component });
|
|
924
932
|
NgxSnotifireComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: NgxSnotifireComponent, selector: "ngx-snotifire", ngImport: i0, template: "<div\n class=\"snotifire-backdrop\"\n *ngIf=\"backdrop && backdrop >= 0\"\n [style.opacity]=\"backdrop\"\n></div>\n\n<div\n *ngFor=\"let position of notifications | keys\"\n class=\"snotify snotify-{{ position }}\"\n>\n <ngx-toast\n *ngFor=\"let notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB\"\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ToastComponent, selector: "ngx-toast", inputs: ["toast"], outputs: ["stateChanged"] }, { kind: "pipe", type: i2.SlicePipe, name: "slice" }, { kind: "pipe", type: KeysPipe, name: "keys" }], encapsulation: i0.ViewEncapsulation.None });
|
|
925
933
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: NgxSnotifireComponent, decorators: [{
|
|
926
934
|
type: Component,
|
|
927
935
|
args: [{ selector: 'ngx-snotifire', encapsulation: ViewEncapsulation.None, template: "<div\n class=\"snotifire-backdrop\"\n *ngIf=\"backdrop && backdrop >= 0\"\n [style.opacity]=\"backdrop\"\n></div>\n\n<div\n *ngFor=\"let position of notifications | keys\"\n class=\"snotify snotify-{{ position }}\"\n>\n <ngx-toast\n *ngFor=\"let notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB\"\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n\n</div>\n" }]
|
|
928
|
-
}], ctorParameters: function () { return [{ type:
|
|
936
|
+
}], ctorParameters: function () { return [{ type: SnotifireService }]; } });
|
|
929
937
|
|
|
930
938
|
class NgxSnotifireModule {
|
|
931
939
|
static forRoot() {
|
|
932
940
|
return {
|
|
933
941
|
ngModule: NgxSnotifireModule,
|
|
934
|
-
providers: [
|
|
942
|
+
providers: [SnotifireService],
|
|
935
943
|
};
|
|
936
944
|
}
|
|
937
945
|
}
|
|
@@ -1034,5 +1042,5 @@ const ToastDefaults = {
|
|
|
1034
1042
|
* Generated bundle index. Do not edit.
|
|
1035
1043
|
*/
|
|
1036
1044
|
|
|
1037
|
-
export { ButtonsComponent, KeysPipe, NgxSnotifireComponent, NgxSnotifireModule,
|
|
1045
|
+
export { ButtonsComponent, KeysPipe, NgxSnotifireComponent, NgxSnotifireModule, PromptComponent, SnotificationPositionType, SnotifireEventType, SnotifireModel, SnotifireService, SnotifireToastModel, SnotifireType, ToastComponent, ToastDefaults, TruncatePipe };
|
|
1038
1046
|
//# sourceMappingURL=ngx-snotifire.mjs.map
|