@ecip/auth
Version:
311 lines • 26.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, ViewChild } from '@angular/core';
import { NzMessageService } from 'ng-zorro-antd';
import { SFComponent } from '@delon/form';
import { map } from "rxjs/operators";
import { DataSourceService, RuleService, DictService } from "@ecip/service";
import { ActivatedRoute, Router } from "@angular/router";
export class AuthRuleEditComponent {
/**
* @param {?} ruleService
* @param {?} messageService
* @param {?} dataSourceService
* @param {?} dictService
* @param {?} activeRoute
* @param {?} router
*/
constructor(ruleService, messageService, dataSourceService, dictService, activeRoute, router) {
this.ruleService = ruleService;
this.messageService = messageService;
this.dataSourceService = dataSourceService;
this.dictService = dictService;
this.activeRoute = activeRoute;
this.router = router;
this.schema = {
properties: {
ruleName: {
type: 'string',
title: '规则名称',
ui: {
//异步验证:判断是否已经存在相同数据源名称的记录,
//如果是修改数据源,和修改前的数据源名称相同则忽略
validator: (/**
* @param {?} value
* @return {?}
*/
(value) => this.ruleService.existsRuleName(value)
.pipe(map((/**
* @param {?} res
* @return {?}
*/
res => (res && (this.isNew || this.record.ruleName != value)) ? [{ keyword: 'required', message: '规则名称已存在' }] : []))))
}
},
appId: {
type: 'number',
title: '源应用',
ui: {
widget: 'select',
notFoundContent: '没有数据',
asyncData: (/**
* @return {?}
*/
() => this.ruleService.appListVL()),
}
},
srcDs: {
type: "string",
title: '源数据源',
ui: {
widget: 'select',
notFoundContent: '没有数据',
asyncData: (/**
* @return {?}
*/
() => this.dataSourceService.getVoList())
}
},
srcSql: {
type: 'string',
title: '源SQL',
ui: {
widget: 'textarea',
autosize: { minRows: 3 }
}
},
cron: {
type: "string",
title: 'Cron表达式',
ui: {
placeholder: 'Cron为空时将立即执行同步',
}
},
syncType: {
type: 'string',
title: '同步类型',
ui: {
widget: 'radio',
//todo:dirty
asyncData: (/**
* @return {?}
*/
() => this.dictService.getTypeList("syncType"))
}
},
destTable: {
type: "string",
title: '表名称',
ui: {
visibleIf: { syncType: ["other"] },
}
},
idType: {
type: "string",
title: '新增主键策略',
ui: {
widget: 'radio',
//todo:dirty
asyncData: (/**
* @return {?}
*/
() => this.dictService.getTypeList("syncIdType")),
validator: (/**
* @param {?} value
* @return {?}
*/
(value) => {
return value === 'auto' && this.sf.value.uniqConstraint.trim().toUpperCase() === 'ID' ? [{ keyword: 'format', message: "唯一约束字段为'ID'时新增主键策略不能为自动生成" }] : [];
}),
}
},
uniqConstraint: {
type: "string",
title: '唯一约束字段',
ui: {
placeholder: "唯一约束字段为'ID'时不可选择自动生成新主键",
validator: (/**
* @param {?} value
* @return {?}
*/
(value) => {
return value.trim().toUpperCase() === 'ID' && this.sf.value.idType === 'auto' ? [{ keyword: 'format', message: "唯一约束字段为'ID'时新增主键策略不能为自动生成" }] : [];
}),
},
},
fieldMappings: {
type: 'array',
title: '字段映射',
minItems: 1,
uniqueItems: true,
items: {
type: 'object',
properties: {
srcField: {
type: 'string',
title: '源字段',
},
destField: {
type: 'string',
title: '目标字段',
},
},
required: ['srcField', 'destField'],
},
ui: {
grid: {
arraySpan: 12,
},
addTitle: '添加字段',
}
},
},
required: ['ruleName', 'srcDs', 'syncType', 'srcSql', 'uniqConstraint', 'appId', 'idType'],
};
}
/**
* @return {?}
*/
ngOnInit() {
this.isNew = this.activeRoute.snapshot.data.isNew;
//必须由路由传入title值,否则不能在页标上显示
this.title = this.activeRoute.snapshot.data.title;
if (this.isNew === false) {
/** @type {?} */
let id = this.activeRoute.snapshot.params["id"];
if (id != null) {
this.ruleService.getById(id).subscribe((/**
* @param {?} res
* @return {?}
*/
res => {
//未查询到记录
if (res == null) {
this.router.navigateByUrl("404");
}
else {
this.record = res;
}
}));
}
}
}
/**
* @param {?} value
* @return {?}
*/
submit(value) {
if (this.isNew === true) {
this.create(value);
//回到同步策略列表页面
this.router.navigateByUrl("/auth/rule");
}
else {
this.update(value);
}
}
/**
* @param {?} value
* @return {?}
*/
create(value) {
this.ruleService.post(value).subscribe((/**
* @return {?}
*/
() => {
this.messageService.success("已保存");
}));
}
/**
* @param {?} value
* @return {?}
*/
update(value) {
this.ruleService.put(this.record.id, value).subscribe((/**
* @return {?}
*/
() => {
this.messageService.success("已保存");
}));
}
/**
* @return {?}
*/
close() {
}
/**
* @param {?} value
* @return {?}
*/
testSync(value) {
this.ruleService.testSync(value).subscribe((/**
* @param {?} res
* @return {?}
*/
res => {
if (res.body === true) {
this.messageService.success("同步测试成功");
}
else {
this.messageService.error("同步测试失败");
}
}));
}
}
AuthRuleEditComponent.decorators = [
{ type: Component, args: [{
selector: 'app-auth-rule-edit',
template: "<page-header [title]=\"title\"></page-header>\r\n<nz-card>\r\n <sf #sf mode=\"edit\" [schema]=\"schema\" [formData]=\"record\" button=\"none\">\r\n <div class=\"modal-footer\">\r\n <button nz-button type=\"button\" nzType=\"primary\" (click)=\"testSync(sf.value)\" [disabled]=\"!sf.valid\" [nzLoading]=\"ruleService.http.loading\">\u540C\u6B65\u6D4B\u8BD5</button>\r\n <button nz-button type=\"submit\" nzType=\"primary\" (click)=\"submit(sf.value)\" [disabled]=\"!sf.valid\" [nzLoading]=\"ruleService.http.loading\">\u4FDD\u5B58</button>\r\n <button nz-button type=\"button\" routerLink=\"/auth/rule\">\u5173\u95ED</button>\r\n </div>\r\n </sf>\r\n</nz-card>"
}] }
];
/** @nocollapse */
AuthRuleEditComponent.ctorParameters = () => [
{ type: RuleService },
{ type: NzMessageService },
{ type: DataSourceService },
{ type: DictService },
{ type: ActivatedRoute },
{ type: Router }
];
AuthRuleEditComponent.propDecorators = {
sf: [{ type: ViewChild, args: ['sf',] }]
};
if (false) {
/** @type {?} */
AuthRuleEditComponent.prototype.sf;
/** @type {?} */
AuthRuleEditComponent.prototype.record;
/** @type {?} */
AuthRuleEditComponent.prototype.isNew;
/** @type {?} */
AuthRuleEditComponent.prototype.title;
/** @type {?} */
AuthRuleEditComponent.prototype.schema;
/** @type {?} */
AuthRuleEditComponent.prototype.ruleService;
/**
* @type {?}
* @private
*/
AuthRuleEditComponent.prototype.messageService;
/**
* @type {?}
* @private
*/
AuthRuleEditComponent.prototype.dataSourceService;
/** @type {?} */
AuthRuleEditComponent.prototype.dictService;
/**
* @type {?}
* @private
*/
AuthRuleEditComponent.prototype.activeRoute;
/**
* @type {?}
* @private
*/
AuthRuleEditComponent.prototype.router;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGVjaXAvYXV0aC8iLCJzb3VyY2VzIjpbInNyYy9ydWxlL2VkaXQvcnVsZWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFpQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxXQUFXLEVBQVcsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFNdkQsTUFBTSxPQUFPLHFCQUFxQjs7Ozs7Ozs7O0lBOEhoQyxZQUVTLFdBQXVCLEVBQ3RCLGNBQStCLEVBQy9CLGlCQUFtQyxFQUNwQyxXQUF3QixFQUN2QixXQUEwQixFQUMxQixNQUFjO1FBTGYsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBQy9CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDcEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTFIeEIsV0FBTSxHQUFhO1lBQ2pCLFVBQVUsRUFBRTtnQkFDVixRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLE1BQU07b0JBQ2IsRUFBRSxFQUFDOzs7d0JBR0QsU0FBUzs7Ozt3QkFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFj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bnQsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TnpNZXNzYWdlU2VydmljZX0gZnJvbSAnbmctem9ycm8tYW50ZCc7XHJcbmltcG9ydCB7U0ZDb21wb25lbnQsIFNGU2NoZW1hfSBmcm9tICdAZGVsb24vZm9ybSc7XHJcbmltcG9ydCB7bWFwfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgRGF0YVNvdXJjZVNlcnZpY2UsIFJ1bGVTZXJ2aWNlLCBEaWN0U2VydmljZSB9IGZyb20gXCJAZWNpcC9zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYXV0aC1ydWxlLWVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ydWxlZWRpdC5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoUnVsZUVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NmJylcclxuICBzZjpTRkNvbXBvbmVudDtcclxuXHJcbiAgcmVjb3JkOiBhbnkgO1xyXG5cclxuICBpc05ldzogYm9vbGVhbjtcclxuXHJcbiAgdGl0bGU6c3RyaW5nO1xyXG5cclxuICBzY2hlbWE6IFNGU2NoZW1hID0ge1xyXG4gICAgcHJvcGVydGllczoge1xyXG4gICAgICBydWxlTmFtZToge1xyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgIHRpdGxlOiAn6KeE5YiZ5ZCN56ewJyxcclxuICAgICAgICB1aTp7XHJcbiAgICAgICAgICAvL+W8guatpemqjOivge+8muWIpOaWreaYr+WQpuW3sue7j+WtmOWcqOebuOWQjOaVsOaNrua6kOWQjeensOeahOiusOW9le+8jFxyXG4gICAgICAgICAgLy/lpoLmnpzmmK/kv67mlLnmlbDmja7mupDvvIzlkozkv67mlLnliY3nmoTmlbDmja7mupDlkI3np7Dnm7jlkIzliJnlv73nlaVcclxuICAgICAgICAgIHZhbGlkYXRvcjogKHZhbHVlOiBhbnkpID0+IHRoaXMucnVsZVNlcnZpY2UuZXhpc3RzUnVsZU5hbWUodmFsdWUpXHJcbiAgICAgICAgICAgIC5waXBlKCBtYXAocmVzID0+IChyZXMgJiYgKHRoaXMuaXNOZXcgfHwgdGhpcy5yZWNvcmQucnVsZU5hbWUhPXZhbHVlKSkgPyBbIHsga2V5d29yZDogJ3JlcXVpcmVkJywgbWVzc2FnZTogJ+inhOWImeWQjeensOW3suWtmOWcqCd9IF0gOiBbXSkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBhcHBJZDoge1xyXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIHRpdGxlOiAn5rqQ5bqU55SoJyxcclxuICAgICAgICB1aToge1xyXG4gICAgICAgICAgd2lkZ2V0OiAnc2VsZWN0JyxcclxuICAgICAgICAgIG5vdEZvdW5kQ29udGVudDogJ+ayoeacieaVsOaNricsXHJcbiAgICAgICAgICBhc3luY0RhdGE6ICgpID0+IHRoaXMucnVsZVNlcnZpY2UuYXBwTGlzdFZMKCksXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSxcclxuICAgICAgc3JjRHM6IHtcclxuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxyXG4gICAgICAgIHRpdGxlOiAn5rqQ5pWw5o2u5rqQJyxcclxuICAgICAgICB1aToge1xyXG4gICAgICAgICAgd2lkZ2V0OiAnc2VsZWN0JyxcclxuICAgICAgICAgIG5vdEZvdW5kQ29udGVudDogJ+ayoeacieaVsOaNricsXHJcbiAgICAgICAgICBhc3luY0RhdGE6ICgpID0+IHRoaXMuZGF0YVNvdXJjZVNlcnZpY2UuZ2V0Vm9MaXN0KClcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHNyY1NxbDoge1xyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgIHRpdGxlOiAn5rqQU1FMJyxcclxuICAgICAgICB1aToge1xyXG4gICAgICAgICAgd2lkZ2V0OiAndGV4dGFyZWEnLFxyXG4gICAgICAgICAgYXV0b3NpemU6IHsgbWluUm93czogMyB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBjcm9uOiB7XHJcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcclxuICAgICAgICB0aXRsZTogJ0Nyb27ooajovr7lvI8nLFxyXG4gICAgICAgIHVpOntcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQ3JvbuS4uuepuuaXtuWwhueri+WNs+aJp+ihjOWQjOatpScsXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBzeW5jVHlwZToge1xyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgIHRpdGxlOiAn5ZCM5q2l57G75Z6LJyxcclxuICAgICAgICB1aToge1xyXG4gICAgICAgICAgd2lkZ2V0OiAncmFkaW8nLFxyXG4gICAgICAgICAgLy90b2RvOmRpcnR5XHJcbiAgICAgICAgICBhc3luY0RhdGE6ICgpID0+IHRoaXMuZGljdFNlcnZpY2UuZ2V0VHlwZUxpc3QoXCJzeW5jVHlwZVwiKVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZGVzdFRhYmxlOntcclxuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxyXG4gICAgICAgIHRpdGxlOiAn6KGo5ZCN56ewJyxcclxuICAgICAgICB1aToge1xyXG4gICAgICAgICAgdmlzaWJsZUlmOntzeW5jVHlwZTogW1wib3RoZXJcIl19LFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgaWRUeXBlOntcclxuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxyXG4gICAgICAgIHRpdGxlOiAn5paw5aKe5Li76ZSu562W55WlJyxcclxuICAgICAgICB1aToge1xyXG4gICAgICAgICAgd2lkZ2V0OiAncmFkaW8nLFxyXG4gICAgICAgICAgLy90b2RvOmRpcnR5XHJcbiAgICAgICAgICBhc3luY0RhdGE6ICgpID0+IHRoaXMuZGljdFNlcnZpY2UuZ2V0VHlwZUxpc3QoXCJzeW5jSWRUeXBlXCIpLFxyXG4gICAgICAgICAgdmFsaWRhdG9yOiAodmFsdWU6YW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gJ2F1dG8nICYmIHRoaXMuc2YudmFsdWUudW5pcUNvbnN0cmFpbnQudHJpbSgpLnRvVXBwZXJDYXNlKCkgPT09ICdJRCcgID8gIFt7a2V5d29yZDogJ2Zvcm1hdCcsIG1lc3NhZ2U6IFwi5ZSv5LiA57qm5p2f5a2X5q615Li6J0lEJ+aXtuaWsOWinuS4u+mUruetlueVpeS4jeiDveS4uuiHquWKqOeUn+aIkFwifV0gOiBbXTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB1bmlxQ29uc3RyYWludDp7XHJcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcclxuICAgICAgICB0aXRsZTogJ+WUr+S4gOe6puadn+Wtl+autScsXHJcbiAgICAgICAgdWk6e1xyXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IFwi5ZSv5LiA57qm5p2f5a2X5q615Li6J0lEJ+aXtuS4jeWPr+mAieaLqeiHquWKqOeUn+aIkOaWsOS4u+mUrlwiLFxyXG4gICAgICAgICAgdmFsaWRhdG9yOiAodmFsdWU6YW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS50cmltKCkudG9VcHBlckNhc2UoKSA9PT0gJ0lEJyAmJiB0aGlzLnNmLnZhbHVlLmlkVHlwZSA9PT0gJ2F1dG8nICA/ICBbe2tleXdvcmQ6ICdmb3JtYXQnLCBtZXNzYWdlOiBcIuWUr+S4gOe6puadn+Wtl+auteS4uidJRCfml7bmlrDlop7kuLvplK7nrZbnlaXkuI3og73kuLroh6rliqjnlJ/miJBcIn1dIDogW107XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcblxyXG4gICAgICBmaWVsZE1hcHBpbmdzOntcclxuICAgICAgICB0eXBlOidhcnJheScsXHJcbiAgICAgICAgdGl0bGU6J+Wtl+auteaYoOWwhCcsXHJcbiAgICAgICAgbWluSXRlbXM6IDEsXHJcbiAgICAgICAgdW5pcXVlSXRlbXM6IHRydWUsXHJcbiAgICAgICAgaXRlbXM6IHtcclxuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxyXG4gICAgICAgICAgcHJvcGVydGllczoge1xyXG4gICAgICAgICAgICBzcmNGaWVsZDoge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgICAgICAgIHRpdGxlOiAn5rqQ5a2X5q61JyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGVzdEZpZWxkOiB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgICAgdGl0bGU6ICfnm67moIflrZfmrrUnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHJlcXVpcmVkOiBbICdzcmNGaWVsZCcsICdkZXN0RmllbGQnIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB1aTp7XHJcbiAgICAgICAgICBncmlkOiB7XHJcbiAgICAgICAgICAgIGFycmF5U3BhbjogMTIsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgYWRkVGl0bGU6ICfmt7vliqDlrZfmrrUnLFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICByZXF1aXJlZDogWydydWxlTmFtZScsICdzcmNEcycsICdzeW5jVHlwZScsICdzcmNTcWwnLCAndW5pcUNvbnN0cmFpbnQnLCAnYXBwSWQnLCAnaWRUeXBlJ10sXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBwcml2YXRlIG1vZGFsOiBOek1vZGFsUmVmLFxyXG4gICAgcHVibGljIHJ1bGVTZXJ2aWNlOlJ1bGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTpOek1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkYXRhU291cmNlU2VydmljZTpEYXRhU291cmNlU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWN0U2VydmljZTogRGljdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGl2ZVJvdXRlOkFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzTmV3ID0gdGhpcy5hY3RpdmVSb3V0ZS5zbmFwc2hvdC5kYXRhLmlzTmV3O1xyXG4gICAgLy/lv4XpobvnlLHot6/nlLHkvKDlhaV0aXRsZeWAvO+8jOWQpuWImeS4jeiDveWcqOmhteagh+S4iuaYvuekulxyXG4gICAgdGhpcy50aXRsZSA9IHRoaXMuYWN0aXZlUm91dGUuc25hcHNob3QuZGF0YS50aXRsZTtcclxuICAgIGlmKHRoaXMuaXNOZXc9PT1mYWxzZSl7XHJcbiAgICAgIGxldCBpZCA9IHRoaXMuYWN0aXZlUm91dGUuc25hcHNob3QucGFyYW1zW1wiaWRcIl07XHJcbiAgICAgIGlmKGlkIT1udWxsKXtcclxuICAgICAgICB0aGlzLnJ1bGVTZXJ2aWNlLmdldEJ5SWQoaWQpLnN1YnNjcmliZShyZXM9PntcclxuICAgICAgICAgIC8v5pyq5p+l6K+i5Yiw6K6w5b2VXHJcbiAgICAgICAgICBpZihyZXM9PW51bGwpe1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiNDA0XCIpO1xyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb3JkID0gcmVzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgc3VibWl0KHZhbHVlOmFueSl7XHJcbiAgICBpZih0aGlzLmlzTmV3PT09dHJ1ZSl7XHJcbiAgICAgIHRoaXMuY3JlYXRlKHZhbHVlKTtcclxuICAgICAgLy/lm57liLDlkIzmraXnrZbnlaXliJfooajpobXpnaJcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcIi9hdXRoL3J1bGVcIik7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy51cGRhdGUodmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMucnVsZVNlcnZpY2UucG9zdCh2YWx1ZSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFwi5bey5L+d5a2YXCIpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5ydWxlU2VydmljZS5wdXQodGhpcy5yZWNvcmQuaWQsIHZhbHVlKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoXCLlt7Lkv53lrZhcIik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG5cclxuICB9XHJcblxyXG4gIHRlc3RTeW5jKHZhbHVlOiBhbnkpe1xyXG4gICAgdGhpcy5ydWxlU2VydmljZS50ZXN0U3luYyh2YWx1ZSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIGlmKHJlcy5ib2R5PT09dHJ1ZSl7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFwi5ZCM5q2l5rWL6K+V5oiQ5YqfXCIpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKFwi5ZCM5q2l5rWL6K+V5aSx6LSlXCIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==