ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
346 lines • 22.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, ApplicationRef, NgZone, ComponentFactoryResolver } from '@angular/core';
import { ToastComponent } from './toast.component';
import { ToastOptions } from './toast-options.provider';
/**
* @record
*/
export function ConfigInterface() { }
if (false) {
/** @type {?|undefined} */
ConfigInterface.prototype.content;
/** @type {?|undefined} */
ConfigInterface.prototype.iconType;
/** @type {?|undefined} */
ConfigInterface.prototype.mask;
}
var ToastService = /** @class */ (function () {
function ToastService(_appRef, _cfr, _zone) {
this._appRef = _appRef;
this._cfr = _cfr;
this._zone = _zone;
this.timeout = null;
this.zone = null;
this.compRef = null;
this.toastCompFactory = null;
this.appRef = null;
this.zone = this._zone;
this.appRef = this._appRef;
this.toastCompFactory = this._cfr.resolveComponentFactory(ToastComponent);
}
/**
* @param {?} config
* @param {?} options
* @return {?}
*/
ToastService.prototype._initConfig = /**
* @param {?} config
* @param {?} options
* @return {?}
*/
function (config, options) {
/** @type {?} */
var props = {};
/** @type {?} */
var optionalParams = ['content', 'iconType', 'mask', 'position'];
config = Object.assign(options, config);
optionalParams.forEach((/**
* @param {?} key
* @return {?}
*/
function (key) {
if (config[key] !== undefined) {
props[key] = config[key];
}
}));
/** @type {?} */
var iconType = {
info: '',
success: 'success',
fail: 'fail',
offline: 'dislike',
loading: 'loading'
}[options.iconType];
props['iconType'] = iconType;
props['mask'] = options.mask;
props['position'] = options.position;
return props;
};
/**
* @param {?} config
* @param {?} type
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
ToastService.prototype.notice = /**
* @param {?} config
* @param {?} type
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
function (config, type, timeInterval, onClose, mask, position) {
var _this = this;
if (timeInterval === void 0) { timeInterval = 2000; }
if (mask === void 0) { mask = true; }
if (position === void 0) { position = 'middle'; }
// 如果已经存在,在没有遮罩层的情况下,会响应别的toast,需要清除原来的
if (this.compRef) {
this.hide();
}
/** @type {?} */
var options = new ToastOptions();
options.iconType = type;
options.mask = mask;
options.position = position;
/** @type {?} */
var props = this._initConfig(config, options);
document.body.insertBefore(document.createElement(this.toastCompFactory.selector), document.body.firstChild);
/** @type {?} */
var instance;
/** @type {?} */
var subject;
this.compRef = this._appRef.bootstrap(this.toastCompFactory);
instance = this.compRef.instance;
subject = instance.subject;
if (timeInterval) {
this.timeout = setTimeout((/**
* @return {?}
*/
function () {
if (onClose) {
onClose();
}
_this.hide();
}), timeInterval);
}
Object.assign(instance, props);
return subject;
};
/**
* Open info dialog
*/
/**
* Open info dialog
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
ToastService.prototype.info = /**
* Open info dialog
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
function (content, timeInterval, onClose, mask, position) {
/** @type {?} */
var config = Object.assign({
iconType: 'info',
content: content
});
return this.notice(config, 'info', timeInterval, onClose, mask, position);
};
/**
* Open success dialog
*/
/**
* Open success dialog
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
ToastService.prototype.success = /**
* Open success dialog
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
function (content, timeInterval, onClose, mask, position) {
/** @type {?} */
var config = Object.assign({
iconType: 'success',
content: content
});
return this.notice(config, 'success', timeInterval, onClose, mask, position);
};
/**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
ToastService.prototype.show = /**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
function (content, timeInterval, mask, position) {
/** @type {?} */
var config = Object.assign({
iconType: 'info',
content: content
});
return this.notice(config, 'info', timeInterval, (/**
* @return {?}
*/
function () { }), mask, position);
};
/**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
ToastService.prototype.fail = /**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
function (content, timeInterval, onClose, mask, position) {
/** @type {?} */
var config = Object.assign({
iconType: 'fail',
content: content
});
return this.notice(config, 'fail', timeInterval, onClose, mask, position);
};
/**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
ToastService.prototype.offline = /**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
function (content, timeInterval, onClose, mask, position) {
/** @type {?} */
var config = Object.assign({
iconType: 'offline',
content: content
});
return this.notice(config, 'offline', timeInterval, onClose, mask, position);
};
/**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
ToastService.prototype.loading = /**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
function (content, timeInterval, onClose, mask, position) {
/** @type {?} */
var config = Object.assign({
iconType: 'loading',
content: content
});
return this.notice(config, 'loading', timeInterval, onClose, mask, position);
};
/**
* @return {?}
*/
ToastService.prototype.hide = /**
* @return {?}
*/
function () {
var _this = this;
if (this.timeout) {
clearTimeout(this.timeout);
}
if (this.compRef) {
this._zone.run((/**
* @return {?}
*/
function () {
_this.compRef.destroy();
}));
this.compRef = null;
}
};
ToastService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] },
{ type: Injectable }
];
/** @nocollapse */
ToastService.ctorParameters = function () { return [
{ type: ApplicationRef },
{ type: ComponentFactoryResolver },
{ type: NgZone }
]; };
return ToastService;
}());
export { ToastService };
if (false) {
/** @type {?} */
ToastService.prototype.timeout;
/** @type {?} */
ToastService.prototype.zone;
/** @type {?} */
ToastService.prototype.compRef;
/** @type {?} */
ToastService.prototype.toastCompFactory;
/** @type {?} */
ToastService.prototype.appRef;
/**
* @type {?}
* @private
*/
ToastService.prototype._appRef;
/**
* @type {?}
* @private
*/
ToastService.prototype._cfr;
/**
* @type {?}
* @private
*/
ToastService.prototype._zone;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsidG9hc3QvdG9hc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFHVixjQUFjLEVBQ2QsTUFBTSxFQUNOLHdCQUF3QixFQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBRXhELHFDQUlDOzs7SUFIQyxrQ0FBYzs7SUFDZCxtQ0FBa0I7O0lBQ2xCLCtCQUFlOztBQUVqQjtJQVdFLHNCQUFvQixPQUF1QixFQUFVLElBQThCLEVBQVUsS0FBYTtRQUF0RixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQTBCO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQU4xRyxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsU0FBSSxHQUFXLElBQUksQ0FBQztRQUNwQixZQUFPLEdBQXNCLElBQUksQ0FBQztRQUNsQyxxQkFBZ0IsR0FBcUMsSUFBSSxDQUFDO1FBQzFELFdBQU0sR0FBbUIsSUFBSSxDQUFDO1FBRzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUUsQ0FBQzs7Ozs7O0lBRUQsa0NBQVc7Ozs7O0lBQVgsVUFBWSxNQUFjLEVBQUUsT0FBcUI7O1lBQ3pDLEtBQUssR0FBRyxFQUFFOztZQUNWLGNBQWMsR0FBYSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQztRQUU1RSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEMsY0FBYyxDQUFDLE9BQU87Ozs7UUFBQyxVQUFBLEdBQUc7WUFDeEIsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxFQUFFO2dCQUM3QixLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzFCO1FBQ0gsQ0FBQyxFQUFDLENBQUM7O1lBRUcsUUFBUSxHQUFHO1lBQ2YsSUFBSSxFQUFFLEVBQUU7WUFDUixPQUFPLEVBQUUsU0FBUztZQUNsQixJQUFJLEVBQUUsTUFBTTtZQUNaLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLE9BQU8sRUFBRSxTQUFTO1NBQ25CLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUVuQixLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQzdCLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQzdCLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ3JDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7Ozs7Ozs7OztJQUVELDZCQUFNOzs7Ozs7Ozs7SUFBTixVQUFPLE1BQXVCLEVBQUUsSUFBSSxFQUFFLFlBQW1CLEVBQUUsT0FBTyxFQUFFLElBQVcsRUFBRSxRQUFtQjtRQUFwRyxpQkE4QkM7UUE5QnFDLDZCQUFBLEVBQUEsbUJBQW1CO1FBQVcscUJBQUEsRUFBQSxXQUFXO1FBQUUseUJBQUEsRUFBQSxtQkFBbUI7UUFDbEcsdUNBQXVDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYjs7WUFDSyxPQUFPLEdBQWlCLElBQUksWUFBWSxFQUFFO1FBQ2hELE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDOztZQUN0QixLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO1FBRS9DLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7O1lBQ3pHLFFBQWE7O1lBQ2IsT0FBWTtRQUVoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdELFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNqQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUUzQixJQUFJLFlBQVksRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVU7OztZQUFDO2dCQUN4QixJQUFJLE9BQU8sRUFBRTtvQkFDWCxPQUFPLEVBQUUsQ0FBQztpQkFDWDtnQkFDRCxLQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxDQUFDLEdBQUUsWUFBWSxDQUFDLENBQUM7U0FDbEI7UUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7Ozs7Ozs7Ozs7SUFDSCwyQkFBSTs7Ozs7Ozs7O0lBQUosVUFBSyxPQUFnQixFQUFFLFlBQXFCLEVBQUUsT0FBb0IsRUFBRSxJQUFjLEVBQUUsUUFBaUI7O1lBQzdGLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQzNCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7O09BRUc7Ozs7Ozs7Ozs7SUFDSCw4QkFBTzs7Ozs7Ozs7O0lBQVAsVUFBUSxPQUFnQixFQUFFLFlBQXFCLEVBQUUsT0FBb0IsRUFBRSxJQUFjLEVBQUUsUUFBaUI7O1lBQ2hHLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQzNCLFFBQVEsRUFBRSxTQUFTO1lBQ25CLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMvRSxDQUFDOzs7Ozs7OztJQUVELDJCQUFJOzs7Ozs7O0lBQUosVUFBSyxPQUFnQixFQUFFLFlBQXFCLEVBQUUsSUFBYyxFQUFFLFFBQWlCOztZQUN2RSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUMzQixRQUFRLEVBQUUsTUFBTTtZQUNoQixPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWTs7O1FBQUUsY0FBTyxDQUFDLEdBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdFLENBQUM7Ozs7Ozs7OztJQUVELDJCQUFJOzs7Ozs7OztJQUFKLFVBQUssT0FBZ0IsRUFBRSxZQUFxQixFQUFFLE9BQW9CLEVBQUUsSUFBYyxFQUFFLFFBQWlCOztZQUM3RixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUMzQixRQUFRLEVBQUUsTUFBTTtZQUNoQixPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUUsQ0FBQzs7Ozs7Ozs7O0lBRUQsOEJBQU87Ozs7Ozs7O0lBQVAsVUFBUSxPQUFnQixFQUFFLFlBQXFCLEVBQUUsT0FBb0IsRUFBRSxJQUFjLEVBQUUsUUFBaUI7O1lBQ2hHLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQzNCLFFBQVEsRUFBRSxTQUFTO1lBQ25CLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMvRSxDQUFDOzs7Ozs7Ozs7SUFFRCw4QkFBTzs7Ozs7Ozs7SUFBUCxVQUFRLE9BQWdCLEVBQUUsWUFBcUIsRUFBRSxPQUFvQixFQUFFLElBQWMsRUFBRSxRQUFpQjs7WUFDaEcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDM0IsUUFBUSxFQUFFLFNBQVM7WUFDbkIsT0FBTyxFQUFFLE9BQU87U0FDakIsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9FLENBQUM7Ozs7SUFFRCwyQkFBSTs7O0lBQUo7UUFBQSxpQkFVQztRQVRDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRzs7O1lBQUM7Z0JBQ2IsS0FBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6QixDQUFDLEVBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQzs7Z0JBMUlGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Z0JBQ0EsVUFBVTs7OztnQkFmVCxjQUFjO2dCQUVkLHdCQUF3QjtnQkFEeEIsTUFBTTs7SUFzSlIsbUJBQUM7Q0FBQSxBQTNJRCxJQTJJQztTQXZJWSxZQUFZOzs7SUFDdkIsK0JBQWU7O0lBQ2YsNEJBQW9COztJQUNwQiwrQkFBa0M7O0lBQ2xDLHdDQUEwRDs7SUFDMUQsOEJBQThCOzs7OztJQUVsQiwrQkFBK0I7Ozs7O0lBQUUsNEJBQXNDOzs7OztJQUFFLDZCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIENvbXBvbmVudFJlZixcbiAgQ29tcG9uZW50RmFjdG9yeSxcbiAgQXBwbGljYXRpb25SZWYsXG4gIE5nWm9uZSxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9hc3RDb21wb25lbnQgfSBmcm9tICcuL3RvYXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb2FzdE9wdGlvbnMgfSBmcm9tICcuL3RvYXN0LW9wdGlvbnMucHJvdmlkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ0ludGVyZmFjZSB7XG4gIGNvbnRlbnQ/OiBhbnk7XG4gIGljb25UeXBlPzogc3RyaW5nO1xuICBtYXNrPzogYm9vbGVhbjtcbn1cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRvYXN0U2VydmljZSB7XG4gIHRpbWVvdXQgPSBudWxsO1xuICB6b25lOiBOZ1pvbmUgPSBudWxsO1xuICBjb21wUmVmOiBDb21wb25lbnRSZWY8YW55PiA9IG51bGw7XG4gIHRvYXN0Q29tcEZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8VG9hc3RDb21wb25lbnQ+ID0gbnVsbDtcbiAgYXBwUmVmOiBBcHBsaWNhdGlvblJlZiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXBwUmVmOiBBcHBsaWNhdGlvblJlZiwgcHJpdmF0ZSBfY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHByaXZhdGUgX3pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMuem9uZSA9IHRoaXMuX3pvbmU7XG4gICAgdGhpcy5hcHBSZWYgPSB0aGlzLl9hcHBSZWY7XG4gICAgdGhpcy50b2FzdENvbXBGYWN0b3J5ID0gdGhpcy5fY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFRvYXN0Q29tcG9uZW50KTtcbiAgfVxuXG4gIF9pbml0Q29uZmlnKGNvbmZpZzogT2JqZWN0LCBvcHRpb25zOiBUb2FzdE9wdGlvbnMpOiBPYmplY3Qge1xuICAgIGNvbnN0IHByb3BzID0ge307XG4gICAgY29uc3Qgb3B0aW9uYWxQYXJhbXM6IHN0cmluZ1tdID0gWydjb250ZW50JywgJ2ljb25UeXBlJywgJ21hc2snLCAncG9zaXRpb24nXTtcblxuICAgIGNvbmZpZyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucywgY29uZmlnKTtcbiAgICBvcHRpb25hbFBhcmFtcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoY29uZmlnW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwcm9wc1trZXldID0gY29uZmlnW2tleV07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBpY29uVHlwZSA9IHtcbiAgICAgIGluZm86ICcnLFxuICAgICAgc3VjY2VzczogJ3N1Y2Nlc3MnLFxuICAgICAgZmFpbDogJ2ZhaWwnLFxuICAgICAgb2ZmbGluZTogJ2Rpc2xpa2UnLFxuICAgICAgbG9hZGluZzogJ2xvYWRpbmcnXG4gICAgfVtvcHRpb25zLmljb25UeXBlXTtcblxuICAgIHByb3BzWydpY29uVHlwZSddID0gaWNvblR5cGU7XG4gICAgcHJvcHNbJ21hc2snXSA9IG9wdGlvbnMubWFzaztcbiAgICBwcm9wc1sncG9zaXRpb24nXSA9IG9wdGlvbnMucG9zaXRpb247XG4gICAgcmV0dXJuIHByb3BzO1xuICB9XG5cbiAgbm90aWNlKGNvbmZpZzogQ29uZmlnSW50ZXJmYWNlLCB0eXBlLCB0aW1lSW50ZXJ2YWwgPSAyMDAwLCBvbkNsb3NlLCBtYXNrID0gdHJ1ZSwgcG9zaXRpb24gPSAnbWlkZGxlJykge1xuICAgIC8vIOWmguaenOW3sue7j+WtmOWcqO+8jOWcqOayoeaciemBrue9qeWxgueahOaDheWGteS4i++8jOS8muWTjeW6lOWIq+eahHRvYXN077yM6ZyA6KaB5riF6Zmk5Y6f5p2l55qEXG4gICAgaWYgKHRoaXMuY29tcFJlZikge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnM6IFRvYXN0T3B0aW9ucyA9IG5ldyBUb2FzdE9wdGlvbnMoKTtcbiAgICBvcHRpb25zLmljb25UeXBlID0gdHlwZTtcbiAgICBvcHRpb25zLm1hc2sgPSBtYXNrO1xuICAgIG9wdGlvbnMucG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICBjb25zdCBwcm9wcyA9IHRoaXMuX2luaXRDb25maWcoY29uZmlnLCBvcHRpb25zKTtcblxuICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy50b2FzdENvbXBGYWN0b3J5LnNlbGVjdG9yKSwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTtcbiAgICBsZXQgaW5zdGFuY2U6IGFueTtcbiAgICBsZXQgc3ViamVjdDogYW55O1xuXG4gICAgdGhpcy5jb21wUmVmID0gdGhpcy5fYXBwUmVmLmJvb3RzdHJhcCh0aGlzLnRvYXN0Q29tcEZhY3RvcnkpO1xuICAgIGluc3RhbmNlID0gdGhpcy5jb21wUmVmLmluc3RhbmNlO1xuICAgIHN1YmplY3QgPSBpbnN0YW5jZS5zdWJqZWN0O1xuXG4gICAgaWYgKHRpbWVJbnRlcnZhbCkge1xuICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgfSwgdGltZUludGVydmFsKTtcbiAgICB9XG5cbiAgICBPYmplY3QuYXNzaWduKGluc3RhbmNlLCBwcm9wcyk7XG4gICAgcmV0dXJuIHN1YmplY3Q7XG4gIH1cblxuICAvKipcbiAgICogT3BlbiBpbmZvIGRpYWxvZ1xuICAgKi9cbiAgaW5mbyhjb250ZW50Pzogc3RyaW5nLCB0aW1lSW50ZXJ2YWw/OiBudW1iZXIsIG9uQ2xvc2U/OiAoKSA9PiB2b2lkLCBtYXNrPzogYm9vbGVhbiwgcG9zaXRpb24/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb25maWcgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgIGljb25UeXBlOiAnaW5mbycsXG4gICAgICBjb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMubm90aWNlKGNvbmZpZywgJ2luZm8nLCB0aW1lSW50ZXJ2YWwsIG9uQ2xvc2UsIG1hc2ssIHBvc2l0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIHN1Y2Nlc3MgZGlhbG9nXG4gICAqL1xuICBzdWNjZXNzKGNvbnRlbnQ/OiBzdHJpbmcsIHRpbWVJbnRlcnZhbD86IG51bWJlciwgb25DbG9zZT86ICgpID0+IHZvaWQsIG1hc2s/OiBib29sZWFuLCBwb3NpdGlvbj86IHN0cmluZykge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvblR5cGU6ICdzdWNjZXNzJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5ub3RpY2UoY29uZmlnLCAnc3VjY2VzcycsIHRpbWVJbnRlcnZhbCwgb25DbG9zZSwgbWFzaywgcG9zaXRpb24pO1xuICB9XG5cbiAgc2hvdyhjb250ZW50Pzogc3RyaW5nLCB0aW1lSW50ZXJ2YWw/OiBudW1iZXIsIG1hc2s/OiBib29sZWFuLCBwb3NpdGlvbj86IHN0cmluZykge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvblR5cGU6ICdpbmZvJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5ub3RpY2UoY29uZmlnLCAnaW5mbycsIHRpbWVJbnRlcnZhbCwgKCkgPT4ge30sIG1hc2ssIHBvc2l0aW9uKTtcbiAgfVxuXG4gIGZhaWwoY29udGVudD86IHN0cmluZywgdGltZUludGVydmFsPzogbnVtYmVyLCBvbkNsb3NlPzogKCkgPT4gdm9pZCwgbWFzaz86IGJvb2xlYW4sIHBvc2l0aW9uPzogc3RyaW5nKSB7XG4gICAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICBpY29uVHlwZTogJ2ZhaWwnLFxuICAgICAgY29udGVudDogY29udGVudFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLm5vdGljZShjb25maWcsICdmYWlsJywgdGltZUludGVydmFsLCBvbkNsb3NlLCBtYXNrLCBwb3NpdGlvbik7XG4gIH1cblxuICBvZmZsaW5lKGNvbnRlbnQ/OiBzdHJpbmcsIHRpbWVJbnRlcnZhbD86IG51bWJlciwgb25DbG9zZT86ICgpID0+IHZvaWQsIG1hc2s/OiBib29sZWFuLCBwb3NpdGlvbj86IHN0cmluZykge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvblR5cGU6ICdvZmZsaW5lJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5ub3RpY2UoY29uZmlnLCAnb2ZmbGluZScsIHRpbWVJbnRlcnZhbCwgb25DbG9zZSwgbWFzaywgcG9zaXRpb24pO1xuICB9XG5cbiAgbG9hZGluZyhjb250ZW50Pzogc3RyaW5nLCB0aW1lSW50ZXJ2YWw/OiBudW1iZXIsIG9uQ2xvc2U/OiAoKSA9PiB2b2lkLCBtYXNrPzogYm9vbGVhbiwgcG9zaXRpb24/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb25maWcgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgIGljb25UeXBlOiAnbG9hZGluZycsXG4gICAgICBjb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMubm90aWNlKGNvbmZpZywgJ2xvYWRpbmcnLCB0aW1lSW50ZXJ2YWwsIG9uQ2xvc2UsIG1hc2ssIHBvc2l0aW9uKTtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbXBSZWYpIHtcbiAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jb21wUmVmLmRlc3Ryb3koKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb21wUmVmID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==