@ecip/system
Version:
261 lines • 26.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component } from '@angular/core';
import { NzModalRef, NzMessageService } from 'ng-zorro-antd';
import { FormBuilder, Validators } from "@angular/forms";
import { Observable } from "rxjs/index";
import { DictService } from "@ecip/service";
import { CacheService } from "@delon/cache";
var SystemDictEditComponent = /** @class */ (function () {
function SystemDictEditComponent(modal, msgSrv, fb, dictService, cacheService) {
var _this = this;
this.modal = modal;
this.msgSrv = msgSrv;
this.fb = fb;
this.dictService = dictService;
this.cacheService = cacheService;
this.record = {};
this.stateList = this.cacheService.get("api/dict/type/enableState");
this.codeAsyncValidator = (/**
* @param {?} control
* @return {?}
*/
function (control) {
return Observable.create((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
if (!control.value) {
observer.next(null);
observer.complete();
return;
}
/** @type {?} */
var parentId = _this.parent ? _this.parent.id : null;
_this.dictService.checkVkey({ id: _this.record.id, pid: parentId, vkey: control.value }).subscribe((/**
* @param {?} res
* @return {?}
*/
function (res) {
if (res.valid === true) {
observer.next(null);
}
else {
observer.next({ error: true, duplicated: true });
}
observer.complete();
}));
}));
});
this.typeAsyncValidator = (/**
* @param {?} control
* @return {?}
*/
function (control) {
return Observable.create((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
if (!control.value) {
observer.next(null);
observer.complete();
return;
}
if (_this.isRoot) {
_this.dictService.checkDictType({ id: _this.record.id, dictType: control.value }).subscribe((/**
* @param {?} res
* @return {?}
*/
function (res) {
if (res.valid === true) {
observer.next(null);
}
else {
observer.next({ error: true, duplicated: true });
}
observer.complete();
}));
}
else {
observer.next(null);
observer.complete();
}
}));
});
}
/**
* @return {?}
*/
SystemDictEditComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var pid = null;
/** @type {?} */
var dictType = '';
if (!this.record.id) {
if (this.isRoot) {
this.ableOperate = true;
}
else {
this.ableOperate = false;
pid = this.parent.id;
dictType = this.parent.dictType;
}
}
this.form = this.fb.group({
pid: [pid, []],
dictType: [dictType, [Validators.required], [this.typeAsyncValidator]],
//SystemDictEditComponent.typeAsyncValidator(this.dictService, this.record)
vkey: ['', [], [this.codeAsyncValidator]],
//SystemDictEditComponent.codeAsyncValidator(this.dictService, this.record, this.parent)
vname: [null, [Validators.required]],
remark: [null, []],
sortNum: [0, [Validators.required]],
rsvn: [null, []],
valid: [1, [Validators.required]],
createTime: [null, []],
updateTime: [null, []],
creator: [null, []],
operator: [null, []],
});
if (!this.record.id) {
return;
}
if (this.isRoot) {
/** @type {?} */
var vkeyCtl = this.form.get("vkey");
vkeyCtl.clearAsyncValidators();
vkeyCtl.updateValueAndValidity();
}
this.dictService.getById(this.record.id).subscribe((/**
* @param {?} res
* @return {?}
*/
function (res) {
_this.isRoot = !res.pid;
_this.form.patchValue(res);
_this.i = res;
}));
};
/**
* @param {?} c1
* @param {?} c2
* @return {?}
*/
SystemDictEditComponent.prototype.compareNumStr = /**
* @param {?} c1
* @param {?} c2
* @return {?}
*/
function (c1, c2) {
return c1 == c2;
};
/**
* @return {?}
*/
SystemDictEditComponent.prototype.submit = /**
* @return {?}
*/
function () {
var _this = this;
for (var i in this.form.controls) {
this.form.controls[i].markAsDirty();
this.form.controls[i].updateValueAndValidity();
}
if (this.form.invalid)
return;
if (!this.record.id) {
//新增
this.dictService.post(this.form.value).subscribe((/**
* @param {?} res
* @return {?}
*/
function (res) {
_this.msgSrv.success('保存成功');
_this.modal.close(res);
}));
return;
}
//修改
this.dictService.put(this.record.id, this.form.value).subscribe((/**
* @param {?} res
* @return {?}
*/
function (res) {
_this.msgSrv.success('保存成功');
_this.modal.close(res);
}));
};
/**
* @return {?}
*/
SystemDictEditComponent.prototype.close = /**
* @return {?}
*/
function () {
this.modal.destroy();
};
SystemDictEditComponent.decorators = [
{ type: Component, args: [{
selector: 'app-system-dict-edit',
template: "<div class=\"modal-header\">\r\n <div *ngIf=\"!record.id\" class=\"modal-title\">\u65B0\u589E\u4FE1\u606F</div>\r\n <div *ngIf=\"record.id\" class=\"modal-title\">\u7F16\u8F91 {{ record.account }} \u4FE1\u606F</div>\r\n</div>\r\n<nz-spin *ngIf=\"!i && !record.id\" class=\"modal-spin\"></nz-spin>\r\n<form *ngIf=\"!record.id || record.id && i\" nz-form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\r\n <div nz-row>\r\n <div nz-col nzSpan=\"24\" *ngIf=\"!isRoot\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"vkey\">\u7F16\u7801</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <input nz-input formControlName=\"vkey\" required>\r\n <nz-form-explain *ngIf=\"form.get('vkey').dirty && form.get('vkey').errors || form.get('vkey').pending \">\r\n <ng-container *ngIf=\"form.get('vkey').hasError('required')\">\r\n \u8BF7\u8F93\u5165\u7F16\u7801\r\n </ng-container>\r\n <ng-container *ngIf=\"form.get('vkey').hasError('duplicated')\">\r\n \u7F16\u7801\u5DF2\u5B58\u5728\r\n </ng-container>\r\n <ng-container *ngIf=\"form.get('vkey').pending\">\r\n \u6821\u9A8C\u4E2D...\r\n </ng-container>\r\n </nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n <div nz-row>\r\n <div nz-col nzSpan=\"24\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"vname\">\u540D\u79F0</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <input nz-input formControlName=\"vname\">\r\n <nz-form-explain *ngIf=\"form.get('vname').dirty && form.get('vname').errors\">\r\n \u8BF7\u8F93\u5165\u540D\u79F0\r\n </nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n\r\n <div nz-row>\r\n <div nz-col nzSpan=\"24\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"dictType\">\u5206\u7C7B</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <input *ngIf=\"isRoot\" nz-input formControlName=\"dictType\">\r\n <nz-form-text *ngIf=\"!isRoot\">{{form.get('dictType').value}}</nz-form-text>\r\n <nz-form-explain *ngIf=\"form.get('dictType').dirty && form.get('dictType').errors || form.get('dictType').pending \">\r\n <ng-container *ngIf=\"form.get('dictType').hasError('required')\">\r\n \u8BF7\u8F93\u5165\u7C7B\u578B\r\n </ng-container>\r\n <ng-container *ngIf=\"form.get('dictType').hasError('duplicated')\">\r\n \u6839\u7C7B\u578B\u5DF2\u5B58\u5728\r\n </ng-container>\r\n <ng-container *ngIf=\"form.get('dictType').pending\">\r\n \u6821\u9A8C\u4E2D...\r\n </ng-container>\r\n </nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n <div nz-row>\r\n <div nz-col nzSpan=\"24\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"sortNum\">\u6392\u5E8F</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <input nz-input formControlName=\"sortNum\">\r\n <nz-form-explain *ngIf=\"form.get('sortNum').dirty && form.get('sortNum').errors\">\r\n \u8BF7\u8F93\u5165\u6392\u5E8F\r\n </nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n\r\n <div nz-row>\r\n <div nz-col nzSpan=\"24\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzFor=\"remark\">\u5907\u6CE8</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <input nz-input formControlName=\"remark\">\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n\r\n <div nz-row>\r\n <div nz-col nzSpan=\"24\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"valid\">\u542F\u7528\u72B6\u6001</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\">\r\n <nz-radio-group formControlName=\"valid\">\r\n <label nz-radio *ngFor=\"let state of stateList | async\" [nzValue]=\"state.value\">{{state.label}}</label>\r\n </nz-radio-group>\r\n <nz-form-explain *ngIf=\"form.get('valid').dirty && form.get('valid').errors\">\r\n \u8BF7\u9009\u62E9\u542F\u7528\u72B6\u6001\r\n </nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal-footer\">\r\n <button nz-button type=\"button\" (click)=\"close()\">\u5173\u95ED</button>\r\n <button nz-button type=\"submit\" [disabled]=\"!form.valid\" nzType=\"primary\" [nzLoading]=\"dictService.http.loading\">\u4FDD\u5B58</button>\r\n </div>\r\n</form>\r\n"
}] }
];
/** @nocollapse */
SystemDictEditComponent.ctorParameters = function () { return [
{ type: NzModalRef },
{ type: NzMessageService },
{ type: FormBuilder },
{ type: DictService },
{ type: CacheService }
]; };
return SystemDictEditComponent;
}());
export { SystemDictEditComponent };
if (false) {
/** @type {?} */
SystemDictEditComponent.prototype.record;
/** @type {?} */
SystemDictEditComponent.prototype.i;
/** @type {?} */
SystemDictEditComponent.prototype.isRoot;
/** @type {?} */
SystemDictEditComponent.prototype.form;
/** @type {?} */
SystemDictEditComponent.prototype.parent;
/** @type {?} */
SystemDictEditComponent.prototype.ableOperate;
/** @type {?} */
SystemDictEditComponent.prototype.stateList;
/** @type {?} */
SystemDictEditComponent.prototype.codeAsyncValidator;
/** @type {?} */
SystemDictEditComponent.prototype.typeAsyncValidator;
/**
* @type {?}
* @private
*/
SystemDictEditComponent.prototype.modal;
/** @type {?} */
SystemDictEditComponent.prototype.msgSrv;
/**
* @type {?}
* @private
*/
SystemDictEditComponent.prototype.fb;
/** @type {?} */
SystemDictEditComponent.prototype.dictService;
/**
* @type {?}
* @private
*/
SystemDictEditComponent.prototype.cacheService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZWNpcC9zeXN0ZW0vIiwic291cmNlcyI6WyJzcmMvZGljdC9lZGl0L2VkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBQyxXQUFXLEVBQTRDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pHLE9BQU8sRUFBQyxVQUFVLEVBQVcsTUFBTSxZQUFZLENBQUM7QUFHaEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRTFDO0lBY0UsaUNBQ1UsS0FBaUIsRUFDbEIsTUFBd0IsRUFDdkIsRUFBZSxFQUNoQixXQUF3QixFQUN2QixZQUEwQjtRQUxwQyxpQkFNTTtRQUxJLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFDdkIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN2QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQWRwQyxXQUFNLEdBQVEsRUFBRSxDQUFDO1FBTWpCLGNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBOEQvRCx1QkFBa0I7Ozs7UUFBRyxVQUFDLE9BQW9CO1lBQ3hDLE9BQUEsVUFBVSxDQUFDLE1BQU07Ozs7WUFBQyxVQUFDLFFBQW9DO2dCQUNyRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtvQkFDbEIsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDcEIsUUFBUSxDQUFDLFFBQVEs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LFNBQVM7Ozs7UUFBQyxVQUFBLEdBQUc7WUFDakUsS0FBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUIsS0FBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7O0lBRUQsdUNBQUs7OztJQUFMO1FBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2QixDQUFDOztnQkF6SUYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLHFpS0FBb0M7aUJBQ3JDOzs7O2dCQVpRLFVBQVU7Z0JBQUUsZ0JBQWdCO2dCQUU3QixXQUFXO2dCQUlYLFdBQVc7Z0JBQ1gsWUFBWTs7SUE0SXBCLDhCQUFDO0NBQUEsQUExSUQsSUEwSUM7U0F0SVksdUJBQXVCOzs7SUFDbEMseUNBQWlCOztJQUNqQixvQ0FBTzs7SUFDUCx5Q0FBZ0I7O0lBQ2hCLHVDQUFnQjs7SUFDaEIseUNBQU87O0lBQ1AsOENBQXFCOztJQUNyQiw0Q0FBK0Q7O0lBOEQvRCxxREFnQks7O0lBRUwscURBcUJLOzs7OztJQWpHSCx3Q0FBeUI7O0lBQ3pCLHlDQUErQjs7Ozs7SUFDL0IscUNBQXVCOztJQUN2Qiw4Q0FBK0I7Ozs7O0lBQy9CLCtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTnpNb2RhbFJlZiwgTnpNZXNzYWdlU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQnO1xyXG5pbXBvcnQgeyBTRlNjaGVtYSwgU0ZVSVNjaGVtYSB9IGZyb20gJ0BkZWxvbi9mb3JtJztcclxuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yc30gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgT2JzZXJ2ZXJ9IGZyb20gXCJyeGpzL2luZGV4XCI7XHJcbmltcG9ydCB7dW50aWx9IGZyb20gXCJzZWxlbml1bS13ZWJkcml2ZXJcIjtcclxuaW1wb3J0IGVsZW1lbnRJc0Rpc2FibGVkID0gdW50aWwuZWxlbWVudElzRGlzYWJsZWQ7XHJcbmltcG9ydCB7RGljdFNlcnZpY2V9IGZyb20gXCJAZWNpcC9zZXJ2aWNlXCI7XHJcbmltcG9ydCB7Q2FjaGVTZXJ2aWNlfSBmcm9tIFwiQGRlbG9uL2NhY2hlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1zeXN0ZW0tZGljdC1lZGl0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdC5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTeXN0ZW1EaWN0RWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcmVjb3JkOiBhbnkgPSB7fTtcclxuICBpOiBhbnk7XHJcbiAgaXNSb290OiBib29sZWFuO1xyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuICBwYXJlbnQ7XHJcbiAgYWJsZU9wZXJhdGU6IGJvb2xlYW47XHJcbiAgc3RhdGVMaXN0ID0gdGhpcy5jYWNoZVNlcnZpY2UuZ2V0KGBhcGkvZGljdC90eXBlL2VuYWJsZVN0YXRlYCk7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbW9kYWw6IE56TW9kYWxSZWYsXHJcbiAgICBwdWJsaWMgbXNnU3J2OiBOek1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwdWJsaWMgZGljdFNlcnZpY2U6IERpY3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZVxyXG4gICAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGxldCBwaWQgPSBudWxsO1xyXG4gICAgbGV0IGRpY3RUeXBlID0gJyc7XHJcbiAgICBpZiAoIXRoaXMucmVjb3JkLmlkKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzUm9vdCkge1xyXG4gICAgICAgIHRoaXMuYWJsZU9wZXJhdGUgPSB0cnVlO1xyXG4gICAgICB9ZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hYmxlT3BlcmF0ZSA9IGZhbHNlO1xyXG4gICAgICAgIHBpZCA9IHRoaXMucGFyZW50LmlkO1xyXG4gICAgICAgIGRpY3RUeXBlID0gdGhpcy5wYXJlbnQuZGljdFR5cGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgcGlkOiBbcGlkLCBbXV0sXHJcbiAgICAgIGRpY3RUeXBlOiBbZGljdFR5cGUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW3RoaXMudHlwZUFzeW5jVmFsaWRhdG9yXV0sIC8vU3lzdGVtRGljdEVkaXRDb21wb25lbnQudHlwZUFzeW5jVmFsaWRhdG9yKHRoaXMuZGljdFNlcnZpY2UsIHRoaXMucmVjb3JkKVxyXG4gICAgICB2a2V5OiBbJycsIFtdLCBbdGhpcy5jb2RlQXN5bmNWYWxpZGF0b3JdXSwgLy9TeXN0ZW1EaWN0RWRpdENvbXBvbmVudC5jb2RlQXN5bmNWYWxpZGF0b3IodGhpcy5kaWN0U2VydmljZSwgdGhpcy5yZWNvcmQsIHRoaXMucGFyZW50KVxyXG4gICAgICB2bmFtZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIHJlbWFyazogW251bGwsIFtdXSxcclxuICAgICAgc29ydE51bTogWzAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIHJzdm46IFtudWxsLCBbXV0sXHJcbiAgICAgIHZhbGlkOiBbMSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgY3JlYXRlVGltZTogW251bGwsIFtdXSxcclxuICAgICAgdXBkYXRlVGltZTogW251bGwsIFtdXSxcclxuICAgICAgY3JlYXRvcjogW251bGwsIFtdXSxcclxuICAgICAgb3BlcmF0b3I6IFtudWxsLCBbXV0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoIXRoaXMucmVjb3JkLmlkKSB7XHJcbiAgICAgIHJldHVybiA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5pc1Jvb3Qpe1xyXG4gICAgICBsZXQgdmtleUN0bCA9IHRoaXMuZm9ybS5nZXQoXCJ2a2V5XCIpO1xyXG4gICAgICB2a2V5Q3RsLmNsZWFyQXN5bmNWYWxpZGF0b3JzKCk7XHJcbiAgICAgIHZrZXlDdGwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmRpY3RTZXJ2aWNlLmdldEJ5SWQodGhpcy5yZWNvcmQuaWQpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1Jvb3QgPSAhcmVzLnBpZDtcclxuICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShyZXMpO1xyXG4gICAgICAgIHRoaXMuaSA9IHJlcztcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb21wYXJlTnVtU3RyKGMxOiBhbnksIGMyOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjMSA9PSBjMjtcclxuICB9XHJcblxyXG4gIGNvZGVBc3luY1ZhbGlkYXRvciA9IChjb250cm9sOiBGb3JtQ29udHJvbCkgPT5cclxuICAgIE9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcjogT2JzZXJ2ZXI8VmFsaWRhdGlvbkVycm9ycz4pID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChudWxsKTtcclxuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBsZXQgcGFyZW50SWQgPSB0aGlzLnBhcmVudCA/IHRoaXMucGFyZW50LmlkIDogbnVsbDtcclxuICAgICAgdGhpcy5kaWN0U2VydmljZS5jaGVja1ZrZXkoe2lkOiB0aGlzLnJlY29yZC5pZCwgcGlkOiBwYXJlbnRJZCwgdmtleTogY29udHJvbC52YWx1ZX0pLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzLnZhbGlkID09PSB0cnVlKSB7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KG51bGwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHtlcnJvcjogdHJ1ZSwgZHVwbGljYXRlZDogdHJ1ZX0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICB0eXBlQXN5bmNWYWxpZGF0b3IgPSAoY29udHJvbDogRm9ybUNvbnRyb2wpID0+XHJcbiAgICBPYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXI6IE9ic2VydmVyPFZhbGlkYXRpb25FcnJvcnM+KSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIG9ic2VydmVyLm5leHQobnVsbCk7XHJcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXNSb290KXtcclxuICAgICAgICB0aGlzLmRpY3RTZXJ2aWNlLmNoZWNrRGljdFR5cGUoe2lkOiB0aGlzLnJlY29yZC5pZCwgZGljdFR5cGU6IGNvbnRyb2wudmFsdWV9KS5zdWJzY3JpYmUoKHJlczphbnkpPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy52YWxpZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh7IGVycm9yOiB0cnVlLCBkdXBsaWNhdGVkOiB0cnVlIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBvYnNlcnZlci5uZXh0KG51bGwpO1xyXG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICBzdWJtaXQoKSB7XHJcbiAgICBmb3IgKGNvbnN0IGkgaW4gdGhpcy5mb3JtLmNvbnRyb2xzKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tpXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbaV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSByZXR1cm47XHJcbiAgICBpZiAoIXRoaXMucmVjb3JkLmlkKSB7XHJcbiAgICAgIC8v5paw5aKeXHJcbiAgICAgIHRoaXMuZGljdFNlcnZpY2UucG9zdCh0aGlzLmZvcm0udmFsdWUpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMubXNnU3J2LnN1Y2Nlc3MoJ+S/neWtmOaIkOWKnycpO1xyXG4gICAgICAgIHRoaXMubW9kYWwuY2xvc2UocmVzKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8v5L+u5pS5XHJcbiAgICB0aGlzLmRpY3RTZXJ2aWNlLnB1dCh0aGlzLnJlY29yZC5pZCwgdGhpcy5mb3JtLnZhbHVlKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5tc2dTcnYuc3VjY2Vzcygn5L+d5a2Y5oiQ5YqfJyk7XHJcbiAgICAgIHRoaXMubW9kYWwuY2xvc2UocmVzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLm1vZGFsLmRlc3Ryb3koKTtcclxuICB9XHJcbn1cclxuIl19