@ecip/auth
Version:
332 lines • 27.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";
var AuthRuleEditComponent = /** @class */ (function () {
function AuthRuleEditComponent(ruleService, messageService, dataSourceService, dictService, activeRoute, router) {
var _this = this;
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 {?}
*/
function (value) { return _this.ruleService.existsRuleName(value)
.pipe(map((/**
* @param {?} res
* @return {?}
*/
function (res) { return (res && (_this.isNew || _this.record.ruleName != value)) ? [{ keyword: 'required', message: '规则名称已存在' }] : []; }))); })
}
},
appId: {
type: 'number',
title: '源应用',
ui: {
widget: 'select',
notFoundContent: '没有数据',
asyncData: (/**
* @return {?}
*/
function () { return _this.ruleService.appListVL(); }),
}
},
srcDs: {
type: "string",
title: '源数据源',
ui: {
widget: 'select',
notFoundContent: '没有数据',
asyncData: (/**
* @return {?}
*/
function () { 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 {?}
*/
function () { return _this.dictService.getTypeList("syncType"); })
}
},
destTable: {
type: "string",
title: '表名称',
ui: {
visibleIf: { syncType: ["other"] },
}
},
idType: {
type: "string",
title: '新增主键策略',
ui: {
widget: 'radio',
//todo:dirty
asyncData: (/**
* @return {?}
*/
function () { return _this.dictService.getTypeList("syncIdType"); }),
validator: (/**
* @param {?} value
* @return {?}
*/
function (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 {?}
*/
function (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 {?}
*/
AuthRuleEditComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.isNew = this.activeRoute.snapshot.data.isNew;
//必须由路由传入title值,否则不能在页标上显示
this.title = this.activeRoute.snapshot.data.title;
if (this.isNew === false) {
/** @type {?} */
var id = this.activeRoute.snapshot.params["id"];
if (id != null) {
this.ruleService.getById(id).subscribe((/**
* @param {?} res
* @return {?}
*/
function (res) {
//未查询到记录
if (res == null) {
_this.router.navigateByUrl("404");
}
else {
_this.record = res;
}
}));
}
}
};
/**
* @param {?} value
* @return {?}
*/
AuthRuleEditComponent.prototype.submit = /**
* @param {?} value
* @return {?}
*/
function (value) {
if (this.isNew === true) {
this.create(value);
//回到同步策略列表页面
this.router.navigateByUrl("/auth/rule");
}
else {
this.update(value);
}
};
/**
* @param {?} value
* @return {?}
*/
AuthRuleEditComponent.prototype.create = /**
* @param {?} value
* @return {?}
*/
function (value) {
var _this = this;
this.ruleService.post(value).subscribe((/**
* @return {?}
*/
function () {
_this.messageService.success("已保存");
}));
};
/**
* @param {?} value
* @return {?}
*/
AuthRuleEditComponent.prototype.update = /**
* @param {?} value
* @return {?}
*/
function (value) {
var _this = this;
this.ruleService.put(this.record.id, value).subscribe((/**
* @return {?}
*/
function () {
_this.messageService.success("已保存");
}));
};
/**
* @return {?}
*/
AuthRuleEditComponent.prototype.close = /**
* @return {?}
*/
function () {
};
/**
* @param {?} value
* @return {?}
*/
AuthRuleEditComponent.prototype.testSync = /**
* @param {?} value
* @return {?}
*/
function (value) {
var _this = this;
this.ruleService.testSync(value).subscribe((/**
* @param {?} res
* @return {?}
*/
function (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 = function () { return [
{ type: RuleService },
{ type: NzMessageService },
{ type: DataSourceService },
{ type: DictService },
{ type: ActivatedRoute },
{ type: Router }
]; };
AuthRuleEditComponent.propDecorators = {
sf: [{ type: ViewChild, args: ['sf',] }]
};
return AuthRuleEditComponent;
}());
export { AuthRuleEditComponent };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGVjaXAvYXV0aC8iLCJzb3VyY2VzIjpbInNyYy9ydWxlL2VkaXQvcnVsZWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFpQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxXQUFXLEVBQVcsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFdkQ7SUFrSUUsK0JBRVMsV0FBdUIsRUFDdEIsY0FBK0IsRUFDL0IsaUJBQW1DLEVBQ3BDLFdBQXdCLEVBQ3ZCLFdBQTBCLEVBQzFCLE1BQWM7UUFQeEIsaUJBUUk7UUFOSyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBaUI7UUFDL0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBMUh4QixXQUFNLEdBQWE7WUFDakIsVUFBVSxFQUFFO2dCQUNWLFFBQVEsRUFBRTtvQkFDUixJQUFJLEVBQUUsUUFBUTtvQkFDZCxLQUFLLEVBQUUsTUFBTTtvQkFDYixFQUFFLEVBQUM7Ozt3QkFHRCxTQUFTOzs7O3dCQUFFLFVBQUMsS0FBVSxJQUFLLE9BQUEsS0FBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDOzZCQUM5RCxJQUFJLENBQUUsR0FBRzs7Ozt3QkFBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSSxDQUFDLEtBQUssSUFBSSxLQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFDLENBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUExRyxDQUEwRyxFQUFDLENBQUMsRUFEckcsQ0FDcUcsQ0FBQTtxQkFDakk7aUJBQ0Y7Z0JBQ0QsS0FBSyxFQUFFO29CQUNMLElBQUksRUFBRSxRQUFRO29CQUNkLEtBQUssRUFBRSxLQUFLO29CQUNaLEVBQUUsRUFBRTt3QkFDRixNQUFNLEVBQUUsUUFBUTt3QkFDaEIsZUFBZSxFQUFFLE1BQU07d0JBQ3ZCLFNBQVM7Ozt3QkFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsRUFBNUIsQ0FBNEIsQ0FBQTtxQkFDOUM7aUJBRUY7Z0JBQ0QsS0FBSyxFQUFFO29CQUNMLElBQUksRUFBRSxRQUFRO29CQUNkLEtBQUssRUFBRSxNQUFNO29CQUNiLEVBQUUsRUFBRTt3QkFDRixNQUFNLEVBQUUsUUFBUTt3QkFDaEIsZUFBZSxFQUFFLE1BQU07d0JBQ3ZCLFNBQVM7Ozt3QkFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxFQUFsQyxDQUFrQyxDQUFBO3FCQUNwRDtpQkFDRjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLE1BQU07b0JBQ2IsRUFBRSxFQUFFO3dCQUNGLE1BQU0sRUFBRSxVQUFVO3dCQUNsQixRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFO3FCQUN6QjtpQkFDRjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLEVBQUUsRUFBQzt3QkFDRCxXQUFXLEVBQUUsZ0JBQWdCO3FCQUM5QjtpQkFDRjtnQkFDRCxRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLE1BQU07b0JBQ2IsRUFBRSxFQUFFO3dCQUNGLE1BQU0sRUFBRSxPQUFPOzt3QkFFZixTQUFTOzs7d0JBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUF4QyxDQUF3QyxDQUFBO3FCQUMxRDtpQkFDRjtnQkFDRCxTQUFTLEVBQUM7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLEtBQUs7b0JBQ1osRUFBRSxFQUFFO3dCQUNGLFNBQVMsRUFBQyxFQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFDO3FCQUNoQztpQkFDRjtnQkFDRCxNQUFNLEVBQUM7b0JBQ0wsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLFFBQVE7b0JBQ2YsRUFBRSxFQUFFO3dCQUNGLE1BQU0sRUFBRSxPQUFPOzt3QkFFZixTQUFTOzs7d0JBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxFQUExQyxDQUEwQyxDQUFBO3dCQUMzRCxTQUFTOzs7O3dCQUFFLFVBQUMsS0FBUzs0QkFDbkIsT0FBTyxLQUFLLEtBQUssTUFBTSxJQUFJLEtBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUUsQ0FBQyxDQUFFLENBQUMsRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSwyQkFBMkIsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDN0osQ0FBQyxDQUFBO3FCQUNGO2lCQUNGO2dCQUNELGNBQWMsRUFBQztvQkFDYixJQUFJLEVBQUUsUUFBUTtvQkFDZCxLQUFLLEVBQUUsUUFBUTtvQkFDZixFQUFFLEVBQUM7d0JBQ0QsV0FBVyxFQUFFLHlCQUF5Qjt3QkFDdEMsU0FBUzs7Ozt3QkFBRSxVQUFDLEtBQVM7NEJBQ25CLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksSUFBSSxLQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFFLENBQUMsQ0FBRSxDQUFDLEVBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ3JKLENBQUMsQ0FBQTtxQkFDRjtpQkFDRjtnQkFFRCxhQUFhLEVBQUM7b0JBQ1osSUFBSSxFQUFDLE9BQU87b0JBQ1osS0FBSyxFQUFDLE1BQU07b0JBQ1osUUFBUSxFQUFFLENBQUM7b0JBQ1gsV0FBVyxFQUFFLElBQUk7b0JBQ2pCLEtBQUssRUFBRTt3QkFDTCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxVQUFVLEVBQUU7NEJBQ1YsUUFBUSxFQUFFO2dDQUNSLElBQUksRUFBRSxRQUFRO2dDQUNkLEtBQUssRUFBRSxLQUFLOzZCQUNiOzRCQUNELFNBQVMsRUFBRTtnQ0FDVCxJQUFJLEVBQUUsUUFBUTtnQ0FDZCxLQUFLLEVBQUUsTUFBTTs2QkFDZDt5QkFDRjt3QkFDRCxRQUFRLEVBQUUsQ0FBRSxVQUFVLEVBQUUsV0FBVyxDQUFFO3FCQUN0QztvQkFDRCxFQUFFLEVBQUM7d0JBQ0QsSUFBSSxFQUFFOzRCQUNKLFNBQVMsRUFBRSxFQUFFO3lCQUNkO3dCQUNELFFBQVEsRUFBRSxNQUFNO3FCQUNqQjtpQkFDRjthQUNGO1lBQ0QsUUFBUSxFQUFFLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUM7U0FDM0YsQ0FBQztJQVVDLENBQUM7Ozs7SUFFSix3Q0FBUTs7O0lBQVI7UUFBQSxpQkFpQkM7UUFoQkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2xELDBCQUEwQjtRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbEQsSUFBRyxJQUFJLENBQUMsS0FBSyxLQUFHLEtBQUssRUFBQzs7Z0JBQ2hCLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQy9DLElBQUcsRUFBRSxJQUFFLElBQUksRUFBQztnQkFDVixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTOzs7O2dCQUFDLFVBQUEsR0FBRztvQkFDeEMsUUFBUTtvQkFDUixJQUFHLEdBQUcsSUFBRSxJQUFJLEVBQUM7d0JBQ1gsS0FBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQ2xDO3lCQUFJO3dCQUNILEtBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO3FCQUNuQjtnQkFDSCxDQUFDLEVBQUMsQ0FBQzthQUNKO1NBQ0Y7SUFDSCxDQUFDOzs7OztJQUdELHNDQUFNOzs7O0lBQU4sVUFBTyxLQUFTO1FBQ2QsSUFBRyxJQUFJLENBQUMsS0FBSyxLQUFHLElBQUksRUFBQztZQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25CLFlBQVk7WUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN6QzthQUFJO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQjtJQUNILENBQUM7Ozs7O0lBRUQsc0NBQU07Ozs7SUFBTixVQUFPLEtBQVU7UUFBakIsaUJBSUM7UUFIQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTOzs7UUFBQztZQUNyQyxLQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7O0lBRUQsc0NBQU07Ozs7SUFBTixVQUFPLEtBQVU7UUFBakIsaUJBSUM7UUFIQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxTQUFTOzs7UUFBQztZQUNwRCxLQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7SUFFRCxxQ0FBSzs7O0lBQUw7SUFFQSxDQUFDOzs7OztJQUVELHdDQUFROzs7O0lBQVIsVUFBUyxLQUFVO1FBQW5CLGlCQVFDO1FBUEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUzs7OztRQUFDLFVBQUEsR0FBRztZQUM1QyxJQUFHLEdBQUcsQ0FBQyxJQUFJLEtBQUcsSUFBSSxFQUFDO2dCQUNqQixLQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN2QztpQkFBSTtnQkFDSCxLQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7Z0JBbE1GLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixzckJBQXdDO2lCQUN6Qzs7OztnQkFOMkIsV0FBVztnQkFIL0IsZ0JBQWdCO2dCQUdmLGlCQUFpQjtnQkFBZSxXQUFXO2dCQUM1QyxjQUFjO2dCQUFFLE1BQU07OztxQkFRM0IsU0FBUyxTQUFDLElBQUk7O0lBOExqQiw0QkFBQztDQUFBLEFBcE1ELElBb01DO1NBaE1ZLHFCQUFxQjs7O0lBRWhDLG1DQUNlOztJQUVmLHVDQUFhOztJQUViLHNDQUFlOztJQUVmLHNDQUFhOztJQUViLHVDQWlIRTs7SUFJQSw0Q0FBOEI7Ozs7O0lBQzlCLCtDQUF1Qzs7Ozs7SUFDdkMsa0RBQTJDOztJQUMzQyw0Q0FBK0I7Ozs7O0lBQy9CLDRDQUFrQzs7Ozs7SUFDbEMsdUNBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TnpNZXNzYWdlU2VydmljZX0gZnJvbSAnbmctem9ycm8tYW50ZCc7XHJcbmltcG9ydCB7U0ZDb21wb25lbnQsIFNGU2NoZW1hfSBmcm9tICdAZGVsb24vZm9ybSc7XHJcbmltcG9ydCB7bWFwfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgRGF0YVNvdXJjZVNlcnZpY2UsIFJ1bGVTZXJ2aWNlLCBEaWN0U2VydmljZSB9IGZyb20gXCJAZWNpcC9zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYXV0aC1ydWxlLWVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ydWxlZWRpdC5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoUnVsZUVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NmJylcclxuICBzZjpTRkNvbXBvbmVudDtcclxuXHJcbiAgcmVjb3JkOiBhbnkgO1xyXG5cclxuICBpc05ldzogYm9vbGVhbjtcclxuXHJcbiAgdGl0bGU6c3RyaW5nO1xyXG5cclxuICBzY2hlbWE6IFNGU2NoZW1hID0ge1xyXG4gICAgcHJvcGVydGllczoge1xyXG4gICAgICBydWxlTmFtZToge1xyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgIHRpdGxlOiAn6KeE5YiZ5ZCN56ewJyxcclxuICAgICAgICB1aTp7XHJcbiAgICAgICAgICAvL+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==