tuain-ng-forms-lib 17.1.38 → 17.2.1
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/esm2022/lib/classes/forms/action.mjs +6 -4
- package/esm2022/lib/classes/forms/field.mjs +5 -5
- package/esm2022/lib/classes/forms/form.mjs +2 -2
- package/esm2022/lib/classes/forms/piece-propagate.mjs +2 -2
- package/esm2022/lib/classes/forms/piece.mjs +10 -2
- package/esm2022/lib/classes/forms/section.mjs +3 -3
- package/esm2022/lib/classes/forms/table/row-data.mjs +3 -1
- package/esm2022/lib/classes/forms/table/table.mjs +7 -7
- package/esm2022/lib/components/elements/action.component.mjs +10 -2
- package/esm2022/lib/components/elements/field.component.mjs +10 -2
- package/esm2022/lib/components/elements/layout/section.component.mjs +10 -2
- package/esm2022/lib/components/elements/layout/sub-section.component.mjs +10 -2
- package/esm2022/lib/components/elements/tables/table.component.mjs +10 -2
- package/esm2022/lib/components/forms/basic-form.mjs +43 -13
- package/esm2022/lib/services/event-manager.service.mjs +1 -1
- package/fesm2022/tuain-ng-forms-lib.mjs +111 -36
- package/fesm2022/tuain-ng-forms-lib.mjs.map +1 -1
- package/lib/classes/forms/action.d.ts +1 -2
- package/lib/classes/forms/field.d.ts +4 -5
- package/lib/classes/forms/form.d.ts +1 -2
- package/lib/classes/forms/piece-propagate.d.ts +1 -1
- package/lib/classes/forms/piece.d.ts +2 -0
- package/lib/classes/forms/section.d.ts +2 -3
- package/lib/classes/forms/table/table.d.ts +5 -6
- package/lib/components/elements/action.component.d.ts +2 -0
- package/lib/components/elements/field.component.d.ts +2 -0
- package/lib/components/elements/layout/section.component.d.ts +2 -0
- package/lib/components/elements/layout/sub-section.component.d.ts +2 -0
- package/lib/components/elements/tables/table.component.d.ts +2 -0
- package/lib/components/forms/basic-form.d.ts +2 -0
- package/package.json +1 -1
|
@@ -206,7 +206,7 @@ export class FormStructureAndData {
|
|
|
206
206
|
this._stateChange.next({ state: this.state });
|
|
207
207
|
return (this.state === newState);
|
|
208
208
|
}
|
|
209
|
-
get stateChange() { return this._stateChange; }
|
|
209
|
+
get stateChange() { return this._stateChange.asObservable(); }
|
|
210
210
|
setStateFlow(states, transitions, defaultState, stateDescriptions = []) {
|
|
211
211
|
this.stateFlow.states = states;
|
|
212
212
|
this.stateFlow.stateDescriptions = stateDescriptions;
|
|
@@ -605,4 +605,4 @@ export class FormStructureAndData {
|
|
|
605
605
|
*/
|
|
606
606
|
getformSubject() { return this.subject ?? ''; }
|
|
607
607
|
}
|
|
608
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEMsT0FBTyxFQUFFLGVBQWUsRUFBZSxNQUFNLFNBQVMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU5QyxPQUFPLEVBQVksTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHcEQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUNwQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUM7QUFDcEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQztBQUMxQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7QUFFdEIsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDO0FBQy9CLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztBQUM1QixNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUM7QUF1Q25DLE1BQU0sT0FBTyxvQkFBb0I7SUFDZCxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQUMzQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDaEIsd0JBQXdCLEdBQUcsRUFBRSxDQUFDO0lBRTVCLGVBQWUsR0FBWSxJQUFJLENBQUM7SUFDaEMsT0FBTyxHQUFrQixJQUFJLENBQUM7SUFDOUIsU0FBUyxDQUFZO0lBQ3JC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LElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWpGOztPQUVHO0lBQ0gsY0FBYyxDQUFDLElBQVksSUFBd0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVoRjs7T0FFRztJQUNILGdCQUFnQixDQUFDLElBQVksSUFBOEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUxRjs7T0FFRztJQUNILGNBQWMsQ0FBQyxLQUFhLElBQWEsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUxRTs7T0FFRztJQUNILGNBQWMsS0FBYSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2pEOztPQUVHO0lBQ0gsVUFBVSxLQUFhLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25EOztPQUVHO0lBQ0gsY0FBYyxLQUFhLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBRXhEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybUFjdGlvbiB9IGZyb20gJy4vYWN0aW9uJztcbmltcG9ydCB7IEZpZWxkRGVzY3JpcHRvciwgRmllbGRPcHRpb24gfSBmcm9tICcuL2ZpZWxkJztcbmltcG9ydCB7IFJlY29yZFRhYmxlIH0gZnJvbSAnLi90YWJsZS90YWJsZSc7XG5pbXBvcnQgeyBSZWNvcmRGb3JtU2VjdGlvbiB9IGZyb20gJy4vc2VjdGlvbic7XG5pbXBvcnQgeyBSZWNvcmRGb3JtU3ViU2VjdGlvbiB9IGZyb20gJy4vc3Vic2VjdGlvbic7XG5pbXBvcnQgeyBOT19FUlJPUiwgSEVBREVSIH0gZnJvbSAnLi9mb3JtLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBUYWJsZVJlY29yZERhdGEgfSBmcm9tICcuL3RhYmxlL3Jvdy1kYXRhJztcblxuY29uc3QgQUNUSVZFID0gJ2FjdGl2ZSc7XG5jb25zdCBTSE9XID0gJ3Nob3cnO1xuY29uc3QgSElERSA9ICdoaWRlJztcbmNvbnN0IEVOQUJMRSA9ICdlbmFibGUnO1xuY29uc3QgRElTQUJMRSA9ICdkaXNhYmxlJztcbmNvbnN0IENMRUFOID0gJ2NsZWFuJztcblxuY29uc3QgYWx3YXlzVmlzaWJsZSA9ICdBTFdBWVMnO1xuY29uc3QgbmV2ZXJWaXNpYmxlID0gJ05PTkUnO1xuY29uc3Qgb25TdGF0ZXNWaXNpYmxlID0gJ09OU1RBVEVTJztcbmludGVyZmFjZSBUcmFuc2l0aW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICBzb3VyY2U6IHN0cmluZztcbiAgZGVzdGluYXRpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFN0YXRlRmxvdyB7XG4gIGRlZmF1bHRTdGF0ZTogc3RyaW5nO1xuICBzdGF0ZXM6IHN0cmluZ1tdO1xuICBzdGF0ZURlc2NyaXB0aW9uczogc3RyaW5nW107XG4gIHRyYW5zaXRpb25zOiBUcmFuc2l0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRQYXlsb2FkIHtcbiAgZmllbGRDb2RlOiBzdHJpbmc7XG4gIGZpZWxkVmFsdWU6IGFueTtcbiAgZWRpdGFibGU6IGJvb2xlYW47XG4gIHZpc2libGU6IGJvb2xlYW47XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICBmaWVsZE9wdGlvbnM6IHN0cmluZyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZVBheWxvYWQge1xuICB0YWJsZUNvZGU6IHN0cmluZztcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgcmVxdWVzdGVkUGFnZTogbnVtYmVyO1xuICByZWNvcmRzUGVyUGFnZTogbnVtYmVyO1xuICBjdXJyZW50RmlsdGVyOiBhbnksXG4gIHNvcnRpbmdDb2x1bW46IHN0cmluZztcbiAgc29ydGluZ0RpcmVjdGlvbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRm9ybVBheWxvYWQge1xuICBmaWVsZHM6IEZpZWxkUGF5bG9hZFtdLFxuICB0YWJsZXM6IFRhYmxlUGF5bG9hZFtdLFxufVxuXG5leHBvcnQgY2xhc3MgRm9ybVN0cnVjdHVyZUFuZERhdGEge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcHJpdmF0ZSBfaW1tdXRhYmxlRGF0YSA9IHt9O1xuICBwcml2YXRlIF9leHRyYUluZm8gPSB7fTtcbiAgcHJpdmF0ZSBfZXhjbHVzaXZlU2VjdGlvbnNCeUF0dHIgPSB7fTtcblxuICBwcm90ZWN0ZWQgbG9hZEluaXRpYWxEYXRhOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIHN1YmplY3Q6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcm90ZWN0ZWQgc3RhdGVGbG93OiBTdGF0ZUZsb3c7XG4gIHByb3RlY3RlZCBmaWVsZHMgPSB7fTtcbiAgcHJvdGVjdGVkIGFjdGlvbnMgPSB7fTtcbiAgcHJvdGVjdGVkIHRhYmxlcyA9IHt9O1xuICBwcm90ZWN0ZWQgc2VjdGlvbnMgPSB7fTtcbiAgcHJvdGVjdGVkIGZpZWxkQXJyYXk6IEZpZWxkRGVzY3JpcHRvcltdO1xuICBwcm90ZWN0ZWQgYWN0aW9uQXJyYXk6IEZvcm1BY3Rpb25bXTtcbiAgcHJvdGVjdGVkIHRhYmxlQXJyYXk6IFJlY29yZFRhYmxlW107XG4gIHByb3RlY3RlZCBzZWN0aW9uQXJyYXk6IFJlY29yZEZvcm1TZWN0aW9uW107XG5cbiAgcHVibGljIGN1c3RvbUF0dHJpYnV0ZXM6IGFueSA9IHt9O1xuICBmb3JtQ29uZmlnOiBhbnk7XG4gIHN0YXRlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZyA9ICcnO1xuICB0aXRsZTogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdGF0ZSA9ICcnO1xuICAgIHRoaXMuYWN0aW9uQXJyYXkgPSBbXTtcbiAgICB0aGlzLmZpZWxkQXJyYXkgPSBbXTtcbiAgICB0aGlzLnRhYmxlQXJyYXkgPSBbXTtcbiAgICB0aGlzLnNlY3Rpb25BcnJheSA9IFtdO1xuICAgIHRoaXMuc3RhdGVGbG93ID0ge1xuICAgICAgZGVmYXVsdFN0YXRlOiAnJyxcbiAgICAgIHN0YXRlczogW10sXG4gICAgICBzdGF0ZURlc2NyaXB0aW9uczogW10sXG4gICAgICB0cmFuc2l0aW9uczogW10sXG4gICAgfTtcbiAgfVxuXG4gIHNldENvbmZpZyhmb3JtQ29uZmlnKSB7XG4gICAgdGhpcy5mb3JtQ29uZmlnID0gZm9ybUNvbmZpZztcbiAgfVxuXG4gIGNsZWFuRm9ybSgpIHtcbiAgICB0aGlzLmFjdGlvbkFycmF5ID0gW107XG4gICAgdGhpcy5maWVsZEFycmF5ID0gW107XG4gICAgdGhpcy50YWJsZUFycmF5ID0gW107XG4gICAgdGhpcy5zZWN0aW9uQXJyYXkgPSBbXTtcbiAgICB0aGlzLnN0YXRlRmxvdyA9IHtcbiAgICAgIGRlZmF1bHRTdGF0ZTogJycsXG4gICAgICBzdGF0ZXM6IFtdLFxuICAgICAgc3RhdGVEZXNjcmlwdGlvbnM6IFtdLFxuICAgICAgdHJhbnNpdGlvbnM6IFtdLFxuICAgIH07XG4gIH1cblxuICBsb2FkRGVmaW5pdGlvbihkZWZpbml0aW9uUmVjZWl2ZWQpIHtcbiAgICB0aGlzLnN0YXRlID0gJyc7XG4gICAgbGV0IGFsbFN0YXRlcyA9IFtdO1xuICAgIHRoaXMuY2xlYW5Gb3JtKCk7XG4gICAgaWYgKCFkZWZpbml0aW9uUmVjZWl2ZWQpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgeyBmb3JtID0ge30gfSA9IGRlZmluaXRpb25SZWNlaXZlZDtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUgPz8gZm9ybS5mb3JtQ29kZTtcbiAgICB0aGlzLnRpdGxlID0gZm9ybS5mb3JtVGl0bGUgPz8gdGhpcy5uYW1lO1xuICAgIHRoaXMubG9hZEluaXRpYWxEYXRhID0gZm9ybS5sb2FkSW5pdGlhbERhdGEgPz8gdHJ1ZTtcbiAgICBhbGxTdGF0ZXMgPSBkZWZpbml0aW9uUmVjZWl2ZWQ/LnN0YXRlcztcbiAgICB0aGlzLnNldFN0YXRlRmxvdyhkZWZpbml0aW9uUmVjZWl2ZWQ/LnN0YXRlcywgZGVmaW5pdGlvblJlY2VpdmVkPy50cmFuc2l0aW9ucyxcbiAgICAgIGRlZmluaXRpb25SZWNlaXZlZD8uZGVmYXVsdFN0YXRlLCBkZWZpbml0aW9uUmVjZWl2ZWQ/LnN0YXRlRGVzY3JpcHRpb25zKTtcbiAgICB0aGlzLmltbXV0YWJsZURhdGEgPSBkZWZpbml0aW9uUmVjZWl2ZWQuaW1tdXRhYmxlRGF0YTtcbiAgICB0aGlzLmV4dHJhSW5mbyA9IGRlZmluaXRpb25SZWNlaXZlZC5leHRyYUluZm87XG4gICAgdGhpcy5jdXN0b21BdHRyaWJ1dGVzID0ge307XG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZD8uY3VzdG9tQXR0cmlidXRlcykge1xuICAgICAgdGhpcy5zZXRDdXN0b21BdHRyaWJ1dGVzKGRlZmluaXRpb25SZWNlaXZlZD8uY3VzdG9tQXR0cmlidXRlcyk7XG4gICAgfVxuICAgIGlmIChkZWZpbml0aW9uUmVjZWl2ZWQuYWN0aW9ucykge1xuICAgICAgY29uc3QgZm9ybUFjdGlvbnMgPSBkZWZpbml0aW9uUmVjZWl2ZWQuYWN0aW9ucy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlc1xuICAgICAgICAgID8/IChvYmpEZWYuYWN0aW9uTW9kZXM/LnNwbGl0KCcsJyk/Lm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpPy5maWx0ZXIoc3RhdGUgPT4gc3RhdGUpKVxuICAgICAgICAgID8/IFtdO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzID8/IG9iakRlZi5lZGl0YWJsZVN0YXRlcyA/PyBbXTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZpc2libGVTdGF0ZXMpICYmIHR5cGVvZiB2aXNpYmxlU3RhdGVzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAodmlzaWJsZVN0YXRlcyA9PT0gbmV2ZXJWaXNpYmxlKSA/IFtdIDogYWxsU3RhdGVzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShlbmFibGVkU3RhdGVzKSAmJiB0eXBlb2YgZW5hYmxlZFN0YXRlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gKGVuYWJsZWRTdGF0ZXMgPT09IG5ldmVyVmlzaWJsZSkgPyBbXSA6IHZpc2libGVTdGF0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgZW5hYmxlZFN0YXRlcyA9IGVuYWJsZWRTdGF0ZXMuZmlsdGVyKHN0YXRlID0+IHZpc2libGVTdGF0ZXMuaW5jbHVkZXMoc3RhdGUpKTtcbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzLCBlbmFibGVkU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgYWN0aW9uUmVjZWl2ZWQgb2YgZm9ybUFjdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZ2xvYmFsQWN0aW9uID0gbmV3IEZvcm1BY3Rpb24oYWN0aW9uUmVjZWl2ZWQsIHRoaXMuZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IGdsb2JhbEFjdGlvbkNvZGUgPSBnbG9iYWxBY3Rpb24uYWN0aW9uQ29kZTtcbiAgICAgICAgaWYgKGdsb2JhbEFjdGlvbkNvZGUpIHtcbiAgICAgICAgICB0aGlzLmFjdGlvbkFycmF5LnB1c2goZ2xvYmFsQWN0aW9uKTtcbiAgICAgICAgICB0aGlzLmFjdGlvbnNbZ2xvYmFsQWN0aW9uQ29kZV0gPSBnbG9iYWxBY3Rpb247XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkLmZpZWxkcykge1xuICAgICAgY29uc3QgZm9ybUZpZWxkcyA9IGRlZmluaXRpb25SZWNlaXZlZC5maWVsZHMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXNcbiAgICAgICAgICA/PyAob2JqRGVmLmZpZWxkTW9kZXM/LnNwbGl0KCcsJyk/Lm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpPy5maWx0ZXIoc3RhdGUgPT4gc3RhdGUpKVxuICAgICAgICAgID8/IFtdO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzID8/IG9iakRlZi5lZGl0YWJsZVN0YXRlcyA/PyBbXTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZpc2libGVTdGF0ZXMpICYmIHR5cGVvZiB2aXNpYmxlU3RhdGVzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAodmlzaWJsZVN0YXRlcyA9PT0gbmV2ZXJWaXNpYmxlKSA/IFtdIDogYWxsU3RhdGVzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShlbmFibGVkU3RhdGVzKSAmJiB0eXBlb2YgZW5hYmxlZFN0YXRlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gKGVuYWJsZWRTdGF0ZXMgPT09IG5ldmVyVmlzaWJsZSkgPyBbXSA6IHZpc2libGVTdGF0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgZW5hYmxlZFN0YXRlcyA9IGVuYWJsZWRTdGF0ZXMuZmlsdGVyKHN0YXRlID0+IHZpc2libGVTdGF0ZXMuaW5jbHVkZXMoc3RhdGUpKTtcbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzLCBlbmFibGVkU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgZmllbGRSZWNlaXZlZCBvZiBmb3JtRmllbGRzKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkVG9BZGQgPSBuZXcgRmllbGREZXNjcmlwdG9yKGZpZWxkUmVjZWl2ZWQsIHRoaXMuZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IGZpZWxkQ29kZSA9IGZpZWxkVG9BZGQuY29kZTtcbiAgICAgICAgaWYgKGZpZWxkQ29kZSkge1xuICAgICAgICAgIHRoaXMuZmllbGRBcnJheS5wdXNoKGZpZWxkVG9BZGQpO1xuICAgICAgICAgIHRoaXMuZmllbGRzW2ZpZWxkQ29kZV0gPSBmaWVsZFRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC50YWJsZXMpIHtcbiAgICAgIGNvbnN0IHRhYmxlcyA9IGRlZmluaXRpb25SZWNlaXZlZC50YWJsZXMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXNcbiAgICAgICAgICA/PyAob2JqRGVmLnRhYmxlTW9kZXM/LnNwbGl0KCcsJyk/Lm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpPy5maWx0ZXIoc3RhdGUgPT4gc3RhdGUpKVxuICAgICAgICAgID8/IFtdO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzID8/IG9iakRlZi5lZGl0YWJsZVN0YXRlcyA/PyBbXTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZpc2libGVTdGF0ZXMpICYmIHR5cGVvZiB2aXNpYmxlU3RhdGVzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAodmlzaWJsZVN0YXRlcyA9PT0gbmV2ZXJWaXNpYmxlKSA/IFtdIDogYWxsU3RhdGVzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShlbmFibGVkU3RhdGVzKSAmJiB0eXBlb2YgZW5hYmxlZFN0YXRlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gKGVuYWJsZWRTdGF0ZXMgPT09IG5ldmVyVmlzaWJsZSkgPyBbXSA6IHZpc2libGVTdGF0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgZW5hYmxlZFN0YXRlcyA9IGVuYWJsZWRTdGF0ZXMuZmlsdGVyKHN0YXRlID0+IHZpc2libGVTdGF0ZXMuaW5jbHVkZXMoc3RhdGUpKTtcbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzLCBlbmFibGVkU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgdGFibGVSZWNlaXZlZCBvZiB0YWJsZXMpIHtcbiAgICAgICAgY29uc3QgdGFibGVUb0FkZCA9IG5ldyBSZWNvcmRUYWJsZSh0YWJsZVJlY2VpdmVkLCB0aGlzLmZvcm1Db25maWcpO1xuICAgICAgICBjb25zdCB0YWJsZUNvZGUgPSB0YWJsZVRvQWRkLnRhYmxlQ29kZTtcbiAgICAgICAgaWYgKHRhYmxlQ29kZSkge1xuICAgICAgICAgIHRoaXMudGFibGVBcnJheS5wdXNoKHRhYmxlVG9BZGQpO1xuICAgICAgICAgIHRoaXMudGFibGVzW3RhYmxlQ29kZV0gPSB0YWJsZVRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC5zZWN0aW9ucykge1xuICAgICAgY29uc3QgZm9ybVNlY3Rpb25zID0gZGVmaW5pdGlvblJlY2VpdmVkLnNlY3Rpb25zLm1hcChvYmpEZWYgPT4ge1xuICAgICAgICBsZXQgdmlzaWJsZVN0YXRlcyA9IG9iakRlZi52aXNpYmxlU3RhdGVzXG4gICAgICAgICAgPz8gKG9iakRlZi5zZWN0aW9uTW9kZXM/LnNwbGl0KCcsJyk/Lm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpPy5maWx0ZXIoc3RhdGUgPT4gc3RhdGUpKVxuICAgICAgICAgID8/IFtdO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmlzaWJsZVN0YXRlcykgJiYgdHlwZW9mIHZpc2libGVTdGF0ZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9ICh2aXNpYmxlU3RhdGVzID09PSBuZXZlclZpc2libGUpID8gW10gOiBhbGxTdGF0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3Vic2VjdGlvbnMgPSBvYmpEZWYuc3Vic2VjdGlvbnMubWFwKHN1YlNlY0RlZiA9PiB7XG4gICAgICAgICAgbGV0IHN1YlNlY1Zpc2libGVTdGF0ZXMgPSBzdWJTZWNEZWYudmlzaWJsZVN0YXRlcyA/PyBbXTtcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoc3ViU2VjVmlzaWJsZVN0YXRlcykgJiYgdHlwZW9mIHN1YlNlY1Zpc2libGVTdGF0ZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBzdWJTZWNWaXNpYmxlU3RhdGVzID0gKHN1YlNlY1Zpc2libGVTdGF0ZXMgPT09IG5ldmVyVmlzaWJsZSkgPyBbXSA6IGFsbFN0YXRlcztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHsgLi4uc3ViU2VjRGVmLCB2aXNpYmxlU3RhdGVzOiBzdWJTZWNWaXNpYmxlU3RhdGVzIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHN1YnNlY3Rpb25zLCB2aXNpYmxlU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3Qgc2VjdGlvblJlY2VpdmVkIG9mIGZvcm1TZWN0aW9ucykge1xuICAgICAgICBjb25zdCBzZWN0aW9uVG9BZGQgPSBuZXcgUmVjb3JkRm9ybVNlY3Rpb24oc2VjdGlvblJlY2VpdmVkLCB0aGlzLCB0aGlzLmZvcm1Db25maWcpO1xuICAgICAgICBjb25zdCBzZWN0aW9uQ29kZSA9IHNlY3Rpb25Ub0FkZC5zZWN0aW9uQ29kZTtcbiAgICAgICAgaWYgKHNlY3Rpb25Db2RlKSB7XG4gICAgICAgICAgdGhpcy5zZWN0aW9uQXJyYXkucHVzaChzZWN0aW9uVG9BZGQpO1xuICAgICAgICAgIHRoaXMuc2VjdGlvbnNbc2VjdGlvbkNvZGVdID0gc2VjdGlvblRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRXN0YWRvc1xuICBnZXQgZGVmYXVsdFN0YXRlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnN0YXRlRmxvdy5kZWZhdWx0U3RhdGU7IH1cbiAgZ2V0IHN0YXRlcygpOiBhbnlbXSB7IHJldHVybiB0aGlzLnN0YXRlRmxvdy5zdGF0ZXM7IH1cbiAgZ2V0IHN0YXRlRGVzY3JpcHRpb25zKCk6IGFueVtdIHsgcmV0dXJuIHRoaXMuc3RhdGVGbG93LnN0YXRlRGVzY3JpcHRpb25zOyB9XG4gIHN1cHBvcnRTdGF0ZShzdGF0ZTogc3RyaW5nID0gJycpOiBib29sZWFuIHsgcmV0dXJuICghIXN0YXRlICYmIHRoaXMuc3RhdGVGbG93LnN0YXRlcz8uaW5jbHVkZXMoc3RhdGUpKTsgfVxuXG4gIGdldE5leHRTdGF0ZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlRmxvdy50cmFuc2l0aW9ucy5maWx0ZXIodHJucyA9PiB0cm5zLnNvdXJjZSA9PT0gdGhpcy5zdGF0ZSlcbiAgICAgIC5tYXAodHJucyA9PiB0cm5zLmRlc3RpbmF0aW9uKTtcbiAgfVxuXG4gIGNoYW5nZVN0YXRlKG5ld1N0YXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgIGlmICghbmV3U3RhdGUgfHwgIXRoaXMuc3VwcG9ydFN0YXRlKG5ld1N0YXRlKSB8fCBjdXJyZW50U3RhdGUgPT09IG5ld1N0YXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghdGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5zdGF0ZSA9IG5ld1N0YXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0cmFuc2l0aW9uVG9DaGFuZ2UgPSB0aGlzLnN0YXRlRmxvdy50cmFuc2l0aW9ucy5maW5kKHRybnMgPT5cbiAgICAgICAgdHJucy5zb3VyY2UgPT09IHRoaXMuc3RhdGUgJiYgdHJucy5kZXN0aW5hdGlvbiA9PT0gbmV3U3RhdGUpO1xuICAgICAgaWYgKHRyYW5zaXRpb25Ub0NoYW5nZSkge1xuICAgICAgICB0aGlzLnN0YXRlID0gbmV3U3RhdGU7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlQ2hhbmdlLm5leHQoeyBzdGF0ZTogdGhpcy5zdGF0ZSB9KTtcbiAgICByZXR1cm4gKHRoaXMuc3RhdGUgPT09IG5ld1N0YXRlKTtcbiAgfVxuXG4gIGdldCBzdGF0ZUNoYW5nZSgpIHsgcmV0dXJuIHRoaXMuX3N0YXRlQ2hhbmdlOyB9XG5cbiAgc2V0U3RhdGVGbG93KHN0YXRlcz8sIHRyYW5zaXRpb25zPywgZGVmYXVsdFN0YXRlPzogc3RyaW5nLCBzdGF0ZURlc2NyaXB0aW9ucyA9IFtdKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZUZsb3cuc3RhdGVzID0gc3RhdGVzO1xuICAgIHRoaXMuc3RhdGVGbG93LnN0YXRlRGVzY3JpcHRpb25zID0gc3RhdGVEZXNjcmlwdGlvbnM7XG4gICAgdGhpcy5zdGF0ZUZsb3cuZGVmYXVsdFN0YXRlID0gZGVmYXVsdFN0YXRlIHx8IHRoaXMuc3RhdGVGbG93LnN0YXRlc1swXTtcbiAgICB0aGlzLnN0YXRlRmxvdy50cmFuc2l0aW9ucyA9IHRyYW5zaXRpb25zLm1hcCh0cmFuc2l0aW9uID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0cmFuc2l0aW9uLm5hbWU7XG4gICAgICBjb25zdCBzb3VyY2UgPSAodGhpcy5zdGF0ZUZsb3cuc3RhdGVzLmluY2x1ZGVzKHRyYW5zaXRpb24uc291cmNlKSkgPyB0cmFuc2l0aW9uLnNvdXJjZSA6ICcnO1xuICAgICAgY29uc3QgZGVzdGluYXRpb24gPSAodGhpcy5zdGF0ZUZsb3cuc3RhdGVzLmluY2x1ZGVzKHRyYW5zaXRpb24uZGVzdGluYXRpb24pKSA/IHRyYW5zaXRpb24uZGVzdGluYXRpb24gOiAnJztcbiAgICAgIHJldHVybiB7IG5hbWUsIHNvdXJjZSwgZGVzdGluYXRpb24gfTtcbiAgICB9KS5maWx0ZXIoaXRlbSA9PiBpdGVtLm5hbWUgJiYgaXRlbS5zb3VyY2UgJiYgaXRlbS5kZXN0aW5hdGlvbik7XG4gIH1cblxuICAvLyBpbW11dGFibGUgRGF0YVxuICBnZXRJbW11dGFibGVFbGVtZW50KG5hbWU6IHN0cmluZyk6IGFueSB7IHJldHVybiB0aGlzLl9pbW11dGFibGVEYXRhPy5bbmFtZV0/LnZhbHVlID8/IG51bGw7IH1cbiAgc2V0IGltbXV0YWJsZURhdGEoaW1tdXRhYmxlRGF0YSkgeyBPYmplY3QuYXNzaWduKHRoaXMuX2ltbXV0YWJsZURhdGEsIGltbXV0YWJsZURhdGEpOyB9XG4gIGdldCBpbW11dGFibGVEYXRhKCk6IGFueSB7IHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX2ltbXV0YWJsZURhdGEpKTsgfVxuXG4gIC8vIGV4dHJhIEluZm9cbiAgZ2V0RXh0cmFJbmZvKG5hbWU6IHN0cmluZyk6IGFueSB7IHJldHVybiB0aGlzLl9leHRyYUluZm8/LltuYW1lXT8udmFsdWUgPz8gbnVsbDsgfVxuICBzZXQgZXh0cmFJbmZvKGV4dHJhSW5mbykgeyBPYmplY3QuYXNzaWduKHRoaXMuX2V4dHJhSW5mbywgZXh0cmFJbmZvKTsgfVxuICBnZXQgZXh0cmFJbmZvKCk6IGFueSB7IHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX2V4dHJhSW5mbykpOyB9XG5cbiAgLy8gQ3VzdG9tIEF0dHJpYnV0ZXNcbiAgZ2V0Q3VzdG9tQXR0cmlidXRlKG5hbWU6IHN0cmluZyk6IGFueSB7IHJldHVybiB0aGlzLmN1c3RvbUF0dHJpYnV0ZXM/LltuYW1lXSA/PyBudWxsOyB9XG4gIHNldEN1c3RvbUF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHsgaWYgKG5hbWUpIHsgdGhpcy5jdXN0b21BdHRyaWJ1dGVzW25hbWVdID0gdmFsdWU7IH0gfVxuICBzZXRDdXN0b21BdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IGFueSk6IEZvcm1TdHJ1Y3R1cmVBbmREYXRhIHtcbiAgICBpZiAoYXR0cmlidXRlcyAmJiB0eXBlb2YgYXR0cmlidXRlcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpLmZvckVhY2goKFtuYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgdGhpcy5zZXRDdXN0b21BdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gRmllbGRzXG4gIGdldCBmaWVsZE5hbWVzKCk6IHN0cmluZ1tdIHsgcmV0dXJuIHRoaXMuZ2V0RmllbGROYW1lcygpOyB9XG4gIGdldEZpZWxkcygpOiBGaWVsZERlc2NyaXB0b3JbXSB7IHJldHVybiB0aGlzLmZpZWxkQXJyYXk7IH1cbiAgZ2V0RmllbGROYW1lcygpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLmZpZWxkQXJyYXkubWFwKGZpZWxkID0+IGZpZWxkLmNvZGUpOyB9XG4gIGdldEZpZWxkKGNvZGU6IHN0cmluZyk6IEZpZWxkRGVzY3JpcHRvciB7IHJldHVybiAoY29kZSAmJiB0aGlzLmZpZWxkcz8uW2NvZGVdKSA/IHRoaXMuZmllbGRzW2NvZGVdIDogbnVsbDsgfVxuICBlbmFibGVGaWVsZChjb2RlOiBzdHJpbmcpOiB2b2lkIHsgdGhpcy5nZXRGaWVsZChjb2RlKT8uZW5hYmxlKCk7IH1cbiAgZGlzYWJsZUZpZWxkKGNvZGU6IHN0cmluZyk6IHZvaWQgeyB0aGlzLmdldEZpZWxkKGNvZGUpPy5kaXNhYmxlKCk7IH1cbiAgZ2V0RmllbGRWYWx1ZShjb2RlOiBzdHJpbmcpOiBhbnkgeyByZXR1cm4gdGhpcy5nZXRGaWVsZChjb2RlKT8udmFsdWU7IH1cbiAgZ2V0RmllbGRPcHRpb25UZXh0KGNvZGU6IHN0cmluZyk6IGFueSB7IHJldHVybiB0aGlzLmdldEZpZWxkKGNvZGUpPy5vcHRpb25UZXh0OyB9XG4gIGdldEZpZWxkT3B0aW9ucyhjb2RlOiBzdHJpbmcpOiBGaWVsZE9wdGlvbltdIHwgbnVsbCB7IHJldHVybiB0aGlzLmdldEZpZWxkKGNvZGUpPy5vcHRpb25zID8/IG51bGw7IH1cbiAgc2V0RmllbGRWYWx1ZShjb2RlOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBhbnkgeyB0aGlzLmdldEZpZWxkKGNvZGUpPy5zZXRWYWx1ZSh2YWx1ZSk7IH1cbiAgc2V0RmllbGRFcnJvcihjb2RlOiBzdHJpbmcsIGVycm9yQ29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIHR5cGU6IHN0cmluZyA9ICdlcnJvcicpOiBhbnkgeyB0aGlzLmdldEZpZWxkKGNvZGUpPy5zZXRFcnJvcihlcnJvckNvZGUsIG1lc3NhZ2UsIHR5cGUpOyB9XG4gIHNldEZpZWxkSW50cmluc2ljRXJyb3JNZXNzYWdlKGNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogYW55IHsgdGhpcy5nZXRGaWVsZChjb2RlKT8uc2V0SW50cmluc2ljRXJyb3JNZXNzYWdlKG1lc3NhZ2UpOyB9XG5cbiAgc2V0RmllbGRSZXF1aXJlZChpbnB1dENvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHJlcXVpcmVkOiBib29sZWFuKTogYW55IHtcbiAgICBjb25zdCBjb2RlcyA9IHRoaXMuZ2V0RmllbGRTZXQobnVsbCwgaW5wdXRDb2RlcyA/PyBudWxsKTtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgY29kZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChjb2RlKSA/PyBudWxsO1xuICAgICAgICBmaWVsZCAmJiAoZmllbGQucmVxdWlyZWQgPSByZXF1aXJlZCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBFcnJvciBtb2RpZmljYW5kbyBjYW1wbyAke2NvZGV9OiAke2V9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0RmllbGRFcnJvck1lc3NhZ2UoY29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiBhbnkgeyB0aGlzLmdldEZpZWxkKGNvZGUpPy5zZXRFcnJvck1lc3NhZ2UobWVzc2FnZSk7IH1cblxuICBzZXRGaWVsZE9wdGlvbnMoY29kZTogc3RyaW5nLCBvcHRpb25zQXJyYXk6IGFueVtdLCBpZEF0dHJpYnV0ZTogc3RyaW5nLCB2YWx1ZUF0dHJpYnV0ZTogc3RyaW5nIHwgc3RyaW5nW10sIHNhcGFyYXRvciA9ICctJyk6IGFueSB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmdldEZpZWxkKGNvZGUpO1xuICAgIGlmICghZmllbGQpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgbmV3T3B0aW9uczogYW55W10gPSBbXTtcbiAgICBjb25zdCBudW1TZXBhcmF0b3JzID0gKEFycmF5LmlzQXJyYXkodmFsdWVBdHRyaWJ1dGUpKSA/ICh2YWx1ZUF0dHJpYnV0ZS5sZW5ndGggLSAxKSA6IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zQXJyYXk/Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBvcHRpb25JdGVtID0gb3B0aW9uc0FycmF5W2ldO1xuICAgICAgY29uc3QgZmllbGRPcHRpb25JZCA9IG9wdGlvbkl0ZW0/LltpZEF0dHJpYnV0ZV07XG4gICAgICBsZXQgZmllbGRPcHRpb25UZXh0ID0gJyc7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZUF0dHJpYnV0ZSkpIHtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHZhbHVlQXR0cmlidXRlLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGNvbnN0IHRleHRQYXJ0ID0gdmFsdWVBdHRyaWJ1dGVbaW5kZXhdO1xuICAgICAgICAgIGZpZWxkT3B0aW9uVGV4dCArPSAoaW5kZXggPCBudW1TZXBhcmF0b3JzKVxuICAgICAgICAgICAgPyBgJHtvcHRpb25JdGVtPy5bdGV4dFBhcnRdfSAke3NhcGFyYXRvcn0gYCA6IG9wdGlvbkl0ZW0/Llt0ZXh0UGFydF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpZWxkT3B0aW9uVGV4dCA9IG9wdGlvbkl0ZW0/Llt2YWx1ZUF0dHJpYnV0ZV07XG4gICAgICB9XG4gICAgICBpZiAoZmllbGRPcHRpb25JZCAhPT0gdW5kZWZpbmVkICYmIGZpZWxkT3B0aW9uSWQgIT09IG51bGxcbiAgICAgICAgJiYgZmllbGRPcHRpb25UZXh0ICE9PSB1bmRlZmluZWQgJiYgZmllbGRPcHRpb25UZXh0ICE9PSBudWxsKSB7XG4gICAgICAgIG5ld09wdGlvbnMucHVzaCh7IGZpZWxkT3B0aW9uSWQsIGZpZWxkT3B0aW9uVmFsdWU6IGZpZWxkT3B0aW9uVGV4dCB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZmllbGQub3B0aW9ucyA9IG5ld09wdGlvbnM7XG4gIH1cblxuICBnZXRGaWVsZFNldChmaWx0ZXIsIGlucHV0Q29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZyB8IG51bGwsIHN1YkNvZGU/OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nW10ge1xuICAgIGxldCBjb2RlczogYW55W10gPSBbXTtcbiAgICBpZiAoaW5wdXRDb2Rlcykge1xuICAgICAgaWYgKHR5cGVvZiBpbnB1dENvZGVzID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb2RlcyA9IFtpbnB1dENvZGVzXTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpbnB1dENvZGVzKSAmJiBpbnB1dENvZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29kZXMgPSBpbnB1dENvZGVzID8/IFtdO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc2VjQ29kZSAmJiAhc3ViQ29kZSkge1xuICAgICAgY29kZXMgPSB0aGlzLmdldFNlY3Rpb24oc2VjQ29kZSk/LmdldEZpZWxkTmFtZXMoKSA/PyBbXTtcbiAgICB9IGVsc2UgaWYgKHNlY0NvZGUgJiYgc3ViQ29kZSkge1xuICAgICAgY29kZXMgPSB0aGlzLmdldFN1YlNlY3Rpb24oc2VjQ29kZSwgc3ViQ29kZSk/LmdldEZpZWxkTmFtZXMoKSA/PyBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29kZXMgPSB0aGlzLmdldEZpZWxkTmFtZXMoKSA/PyBbXTtcbiAgICB9XG4gICAgcmV0dXJuIChmaWx0ZXIpID8gY29kZXMuZmlsdGVyKGZsZCA9PiBmaWx0ZXIodGhpcy5nZXRGaWVsZChmbGQpKSkgOiBjb2RlcztcbiAgfVxuXG4gIGFwcGx5T25GaWVsZHMocHJvY2Vzc0Z1bmMsIGlucHV0Q29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGlmICghcHJvY2Vzc0Z1bmMpIHsgcmV0dXJuIDA7IH1cbiAgICBjb25zdCBjb2RlcyA9IHRoaXMuZ2V0RmllbGRTZXQobnVsbCwgaW5wdXRDb2RlcyA/PyBudWxsLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgICBsZXQgcHJvY2Vzc2VkRmllbGRzID0gMDtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgY29kZXMpIHtcbiAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChjb2RlKTtcbiAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHByb2Nlc3NGdW5jKGZpZWxkKTtcbiAgICAgICAgICBwcm9jZXNzZWRGaWVsZHMgKz0gMTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBFcnJvciBwcm9jZXNhbmRvIGZ1bmNpb24gZW4gY2FtcG8gJHtmaWVsZH06ICR7ZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJvY2Vzc2VkRmllbGRzO1xuICB9XG5cbiAgYXBwbHlQcm9jZXNzVG9BbGxGaWVsZHMocHJvY2Vzc0Z1bmMpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseU9uRmllbGRzKHByb2Nlc3NGdW5jKTtcbiAgfVxuXG4gIGVuYWJsZUZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5lbmFibGUoKSwgY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgc2hvd0ZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5zaG93KCksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGhpZGVGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMoZmxkID0+IGZsZD8uaGlkZSgpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBzaG93TGFiZWxGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMoZmxkID0+IGZsZD8uc2hvd0xhYmxlbCgpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBoaWRlTGFiZWxGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMoZmxkID0+IGZsZD8uaGlkZUxhYmVsKCksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGRpc2FibGVGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMoZmxkID0+IGZsZD8uZGlzYWJsZSgpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBjbGVhbkZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5jbGVhbigpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICB0YWdGaWVsZHNXaXRoRXJyb3IobWVzc2FnZTogc3RyaW5nLCBjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5zZXRFcnJvck1lc3NhZ2UobWVzc2FnZSksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGNsZWFuRXJyb3JGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRhZ0ZpZWxkc1dpdGhFcnJvcignJywgY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgdGFnRW1wdHlSZXF1aXJlZEZpZWxkcyhtZXNzYWdlOiBzdHJpbmcsIGNvZGVzID0gbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRhZ0ZpZWxkc1dpdGhFcnJvcihtZXNzYWdlLCB0aGlzLmdldFJlcXVpcmVkRW1wdHlGaWVsZHMoY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpKSA+IDA7XG4gIH1cblxuICBnZXRSZXF1aXJlZEZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gZmxkPy5yZXF1aXJlZCwgY29kZXMgPz8gbnVsbCwgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBnZXRSZXF1aXJlZEVtcHR5RmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nLCBvbmx5VmlzaWJsZT86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgaWYgKG9ubHlWaXNpYmxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gZmxkPy5yZXF1aXJlZCAmJiBmbGQ/LnZpc2libGUgJiYgZmxkPy5lbXB0eSwgY29kZXMgPz8gbnVsbCwgc2VjQ29kZSwgc3ViQ29kZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiBmbGQ/LnJlcXVpcmVkICYmIGZsZD8uZW1wdHksIGNvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgZ2V0Q2hhbmdlZEZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gIWZsZD8ub3V0cHV0T25seSAmJiBmbGQ/Lmhhc0NoYW5nZWQsIGNvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgZ2V0RmllbGRzV2l0aFZhbGlkYXRpb25Jc3N1ZXMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcsIG9ubHlWaXNpYmxlPzogYm9vbGVhbik6IHN0cmluZ1tdIHtcbiAgICBpZiAob25seVZpc2libGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiAoZmxkPy5oYXNFcnJvcigpICYmIGZsZD8udmlzaWJsZSksIGNvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gZmxkPy5oYXNFcnJvcigpLCBjb2RlcyA/PyBudWxsLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGdldEZpZWxkc1ZhbHVlcyhpbnB1dENvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCBjb2RlcyA9IHRoaXMuZ2V0RmllbGRTZXQobnVsbCwgaW5wdXRDb2RlcyA/PyBudWxsLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgICBjb25zdCByZXN1bHRPYmplY3QgPSB7fTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY29kZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBjb2RlID0gY29kZXNbaW5kZXhdO1xuICAgICAgaWYgKGNvZGUpIHtcbiAgICAgICAgcmVzdWx0T2JqZWN0W2NvZGVdID0gdGhpcy5maWVsZHM/Lltjb2RlXT8uZ2V0VmFsdWUoKSA/PyBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0T2JqZWN0O1xuICB9XG5cbiAgLy8gQWNjaW9uZXNcbiAgZ2V0QWN0aW9ucygpOiBGb3JtQWN0aW9uW10geyByZXR1cm4gdGhpcy5hY3Rpb25BcnJheTsgfVxuICBnZXRBY3Rpb24oY29kZTogc3RyaW5nKTogRm9ybUFjdGlvbiB7IHJldHVybiAoY29kZSAmJiB0aGlzLmFjdGlvbnM/Lltjb2RlXSkgPyB0aGlzLmFjdGlvbnNbY29kZV0gOiBudWxsOyB9XG4gIHNob3dBY3Rpb25zKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25BY3Rpb25zKGNvZGVzLCBTSE9XKTsgfVxuICBoaWRlQWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uQWN0aW9ucyhjb2RlcywgSElERSk7IH1cbiAgZW5hYmxlQWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uQWN0aW9ucyhjb2RlcywgRU5BQkxFKTsgfVxuICBkaXNhYmxlQWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uQWN0aW9ucyhjb2RlcywgRElTQUJMRSk7IH1cbiAgZW5hYmxlQWN0aW9uKGNvZGU6IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5lbmFibGVBY3Rpb25zKGNvZGUpOyB9XG4gIGRpc2FibGVBY3Rpb24oY29kZTogc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmRpc2FibGVBY3Rpb25zKGNvZGUpOyB9XG4gIHNob3dBY3Rpb24oY29kZTogc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLnNob3dBY3Rpb25zKGNvZGUpOyB9XG4gIGhpZGVBY3Rpb24oY29kZTogc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmhpZGVBY3Rpb25zKGNvZGUpOyB9XG4gIGdldEhlYWRlckFjdGlvbnMoKSB7IHJldHVybiB0aGlzLmdldEFjdGlvbnNCeUF0dHJpYnV0ZSgnbG9jYXRpb24nLCBIRUFERVIpOyB9XG5cbiAgZ2V0QWN0aW9uc0J5QXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWUpOiBGb3JtQWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmFjdGlvbkFycmF5LmZpbHRlcihhY3Rpb25JdGVtID0+IGFjdGlvbkl0ZW0ubWF0Y2hBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKTtcbiAgfVxuXG4gIGV4ZWNPbkFjdGlvbnMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgZnVuY3Rpb25OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBhY3Rpb25Db2RlcyA9IChBcnJheS5pc0FycmF5KGNvZGVzKSkgPyBjb2RlcyA6IChjb2RlcyA/IFtjb2Rlc10gOiBbXSk7XG4gICAgaWYgKCFmdW5jdGlvbk5hbWUgfHwgYWN0aW9uQ29kZXMubGVuZ3RoID09PSAwKSB7IHJldHVybjsgfVxuICAgIGFjdGlvbkNvZGVzLmZvckVhY2goY29kZSA9PiB7XG4gICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmdldEFjdGlvbihjb2RlKTtcbiAgICAgIGFjdGlvbj8uW2Z1bmN0aW9uTmFtZV0/LigpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gVGFibGFzXG4gIGdldFRhYmxlcygpOiBSZWNvcmRUYWJsZVtdIHsgcmV0dXJuIHRoaXMudGFibGVBcnJheTsgfVxuICBnZXRUYWJsZShjb2RlOiBzdHJpbmcpOiBSZWNvcmRUYWJsZSB7IHJldHVybiAoY29kZSAmJiB0aGlzLnRhYmxlcz8uW2NvZGVdKSA/IHRoaXMudGFibGVzW2NvZGVdIDogbnVsbDsgfVxuICBnZXRUYWJsZVJlY29yZChjb2RlOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBUYWJsZVJlY29yZERhdGEgeyByZXR1cm4gdGhpcy5nZXRUYWJsZShjb2RlKT8uZ2V0VGFibGVSZWNvcmQoaWQpIH1cbiAgZW5hYmxlVGFibGVzKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25UYWJsZXMoY29kZXMsIEVOQUJMRSk7IH1cbiAgZGlzYWJsZVRhYmxlcyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uVGFibGVzKGNvZGVzLCBESVNBQkxFKTsgfVxuICBzaG93VGFibGVzKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25UYWJsZXMoY29kZXMsIFNIT1cpOyB9XG4gIGhpZGVUYWJsZXMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPblRhYmxlcyhjb2RlcywgSElERSk7IH1cbiAgY2xlYW5UYWJsZXMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPblRhYmxlcyhjb2RlcywgQ0xFQU4pOyB9XG4gIHNob3dUYWJsZShjb2RlOiBzdHJpbmcpIHsgcmV0dXJuIHRoaXMuc2hvd1RhYmxlcyhjb2RlKTsgfVxuICBoaWRlVGFibGUoY29kZTogc3RyaW5nKSB7IHJldHVybiB0aGlzLmhpZGVUYWJsZXMoY29kZSk7IH1cbiAgY2xlYW5UYWJsZShjb2RlOiBzdHJpbmcpIHsgcmV0dXJuIHRoaXMuZ2V0VGFibGUoY29kZSk/LmNsZWFuKCk7IH1cblxuICBleGVjT25UYWJsZXMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgZnVuY3Rpb25OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0YWJsZUNvZGVzID0gKEFycmF5LmlzQXJyYXkoY29kZXMpKSA/IGNvZGVzIDogKGNvZGVzID8gW2NvZGVzXSA6IFtdKTtcbiAgICBpZiAoIWZ1bmN0aW9uTmFtZSB8fCB0YWJsZUNvZGVzLmxlbmd0aCA9PT0gMCkgeyByZXR1cm47IH1cbiAgICB0YWJsZUNvZGVzLmZvckVhY2goY29kZSA9PiB7XG4gICAgICBjb25zdCB0YWJsZSA9IHRoaXMuZ2V0VGFibGUoY29kZSk7XG4gICAgICB0YWJsZT8uW2Z1bmN0aW9uTmFtZV0/LigpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gU2VjY2lvbmVzXG4gIGdldFNlY3Rpb25zKCk6IFJlY29yZEZvcm1TZWN0aW9uW10geyByZXR1cm4gdGhpcy5zZWN0aW9uQXJyYXk7IH1cbiAgZ2V0U2VjdGlvbnNUaXRsZXMoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5nZXRTZWN0aW9ucygpPy5maWx0ZXIoc2VjID0+IHNlYz8udGl0bGUpLm1hcChzZWMgPT4gc2VjPy50aXRsZSA/PyAnJyk7IH1cbiAgbnVtU2VjdGlvbnMoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuc2VjdGlvbkFycmF5Lmxlbmd0aDsgfVxuICBnZXRTZWN0aW9uc0J5QXR0cmlidXRlKG5hbWUsIHZhbHVlKTogUmVjb3JkRm9ybVNlY3Rpb25bXSB7IHJldHVybiB0aGlzLnNlY3Rpb25BcnJheS5maWx0ZXIoaXRlbSA9PiBpdGVtLm1hdGNoQXR0cmlidXRlKG5hbWUsIHZhbHVlKSk7IH1cbiAgZ2V0IHNlY3Rpb25UaXRsZXMoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5nZXRTZWN0aW9uc1RpdGxlcygpOyB9XG4gIGdldCB2aXNpYmxlU2VjdGlvbnMoKTogUmVjb3JkRm9ybVNlY3Rpb25bXSB7IHJldHVybiB0aGlzLnNlY3Rpb25BcnJheS5maWx0ZXIoc2VjID0+IHNlYy5hYnNvbHV0ZVZpc2libGUpOyB9XG4gIGdldFNlY3Rpb24oY29kZTogc3RyaW5nKTogUmVjb3JkRm9ybVNlY3Rpb24geyByZXR1cm4gKGNvZGUgJiYgdGhpcy5zZWN0aW9ucz8uW2NvZGVdKSA/IHRoaXMuc2VjdGlvbnNbY29kZV0gOiBudWxsOyB9XG4gIHNob3dTZWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgdGhpcy5leGVjT25TZWN0aW9ucyhjb2RlcywgU0hPVyk7IH1cbiAgaGlkZVNlY3Rpb25zKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyB0aGlzLmV4ZWNPblNlY3Rpb25zKGNvZGVzLCBISURFKTsgfVxuICBzaG93U2VjdGlvbihjb2RlOiBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuc2hvd1NlY3Rpb25zKGNvZGUpOyB9XG4gIGhpZGVTZWN0aW9uKGNvZGU6IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5oaWRlU2VjdGlvbnMoY29kZSk7IH1cbiAgYWN0aXZlU2VjdGlvbigpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fZXhjbHVzaXZlU2VjdGlvbnNCeUF0dHJbQUNUSVZFXTsgfVxuICBnZXRTdWJTZWN0aW9uKGNvZGU6IHN0cmluZywgc3ViQ29kZSk6IFJlY29yZEZvcm1TdWJTZWN0aW9uIHsgcmV0dXJuIHRoaXMuZ2V0U2VjdGlvbihjb2RlKT8uZ2V0U3Vic2VjdGlvbihzdWJDb2RlKSA/PyBudWxsOyB9XG4gIHNob3dTdWJTZWN0aW9ucyhjb2RlOiBzdHJpbmcsIHN1YkNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25TdWJTZWN0aW9ucyhjb2RlLCBzdWJDb2RlcywgU0hPVyk7IH1cbiAgc2hvd1N1YlNlY3Rpb24oY29kZTogc3RyaW5nLCBzdWJDb2RlOiBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuc2hvd1N1YlNlY3Rpb25zKGNvZGUsIHN1YkNvZGUpOyB9XG4gIGhpZGVTdWJTZWN0aW9uKGNvZGU6IHN0cmluZywgc3ViQ29kZTogc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmhpZGVTdWJTZWN0aW9ucyhjb2RlLCBzdWJDb2RlKTsgfVxuICBoaWRlU3ViU2VjdGlvbnMoY29kZTogc3RyaW5nLCBzdWJDb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uU3ViU2VjdGlvbnMoY29kZSwgc3ViQ29kZXMsIEhJREUpOyB9XG4gIGdldFNlY3Rpb25BY3Rpb25zKGNvZGUpOiBGb3JtQWN0aW9uW10geyByZXR1cm4gdGhpcy5nZXRTZWN0aW9uKGNvZGUpPy5nZXRBY3Rpb25zKCkgPz8gbnVsbDsgfVxuICBnZXRTZWN0aW9uQWN0aW9uTmFtZXMoY29kZSk6IHN0cmluZ1tdIHsgcmV0dXJuIHRoaXMuZ2V0U2VjdGlvbihjb2RlKT8uZ2V0QWN0aW9uTmFtZXMoKSA/PyBudWxsOyB9XG5cbiAgYWN0aXZhdGVTZWN0aW9uKGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChjb2RlID09PSB0aGlzLl9leGNsdXNpdmVTZWN0aW9uc0J5QXR0cltBQ1RJVkVdKSB7IHJldHVybjsgfVxuICAgIHRoaXMuZ2V0U2VjdGlvbih0aGlzLmFjdGl2ZVNlY3Rpb24oKSk/LmluYWN0aXZhdGUoKTtcbiAgICB0aGlzLmdldFNlY3Rpb24oY29kZSk/LmFjdGl2YXRlKCk7XG4gICAgdGhpcy5fZXhjbHVzaXZlU2VjdGlvbnNCeUF0dHJbQUNUSVZFXSA9IGNvZGU7XG4gIH1cblxuICBleGVjT25TZWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBmdW5jdGlvbk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHNlY3Rpb25Db2RlcyA9IChBcnJheS5pc0FycmF5KGNvZGVzKSkgPyBjb2RlcyA6IChjb2RlcyA/IFtjb2Rlc10gOiBbXSk7XG4gICAgaWYgKCFmdW5jdGlvbk5hbWUgfHwgc2VjdGlvbkNvZGVzLmxlbmd0aCA9PT0gMCkgeyByZXR1cm47IH1cbiAgICBzZWN0aW9uQ29kZXMuZm9yRWFjaChjb2RlID0+IHtcbiAgICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLmdldFNlY3Rpb24oY29kZSk7XG4gICAgICBzZWN0aW9uPy5bZnVuY3Rpb25OYW1lXT8uKCk7XG4gICAgfSk7XG4gIH1cblxuICBleGVjT25TdWJTZWN0aW9ucyhjb2RlOiBzdHJpbmcsIHN1Yk5hbWVzOiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIGZ1bmN0aW9uTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc3ViQ29kZXMgPSAoQXJyYXkuaXNBcnJheShzdWJOYW1lcykpID8gc3ViTmFtZXMgOiAoc3ViTmFtZXMgPyBbc3ViTmFtZXNdIDogW10pO1xuICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLmdldFNlY3Rpb24oY29kZSk7XG4gICAgaWYgKCFmdW5jdGlvbk5hbWUgfHwgIXNlY3Rpb24gfHwgc3ViQ29kZXMubGVuZ3RoID09PSAwKSB7IHJldHVybjsgfVxuICAgIGZvciAoY29uc3Qgc3ViQ29kZSBvZiBzdWJDb2Rlcykge1xuICAgICAgY29uc3Qgc3ViU2VjdGlvbiA9IHRoaXMuZ2V0U3ViU2VjdGlvbihjb2RlLCBzdWJDb2RlKTtcbiAgICAgIHN1YlNlY3Rpb24/LltmdW5jdGlvbk5hbWVdPy4oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kb3MgcHJvcGlvcyBkZSBnZXN0acOzbiBkZWwgZm9ybXVsYXJpb1xuICAgKi9cblxuICBjbGVhbkRhdGEoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiB0aGlzLmZpZWxkQXJyYXkpIHtcbiAgICAgIGZpZWxkLnNldFZhbHVlKGZpZWxkLmRlZmF1bHRWYWx1ZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGhpcy50YWJsZUFycmF5KSB7XG4gICAgICB0YWJsZS5jbGVhbigpO1xuICAgIH1cbiAgfVxuXG4gIGdldFBheWxvYWQoKTogYW55IHtcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybVBheWxvYWQgPSB7IGZpZWxkczogW10sIHRhYmxlczogW10gfTtcbiAgICBmb3JtRGF0YS5maWVsZHMgPSB0aGlzLmdldEZpZWxkcygpLmZpbHRlcihmbGQgPT4gIWZsZD8ub3V0cHV0T25seSlcbiAgICAgIC5tYXAoZmxkID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRQYXlsb2FkOiBGaWVsZFBheWxvYWQgPSB7XG4gICAgICAgICAgZmllbGRDb2RlOiBmbGQ/LmNvZGUsXG4gICAgICAgICAgZmllbGRWYWx1ZTogZmxkPy52YWx1ZSxcbiAgICAgICAgICBlZGl0YWJsZTogIWZsZD8uYWJzb2x1dGVEaXNhYmxlZCxcbiAgICAgICAgICB2aXNpYmxlOiBmbGQ/LmFic29sdXRlVmlzaWJsZSxcbiAgICAgICAgICByZXF1aXJlZDogZmxkPy5yZXF1aXJlZCxcbiAgICAgICAgICBmaWVsZE9wdGlvbnM6ICcnLFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWVsZFBheWxvYWQ7XG4gICAgICB9KTtcblxuICAgIGZvcm1EYXRhLnRhYmxlcyA9IHRoaXMuZ2V0VGFibGVzKCkubWFwKHRibCA9PiB7XG4gICAgICBjb25zdCB0YWJsZVBheWxvYWQ6IFRhYmxlUGF5bG9hZCA9IHtcbiAgICAgICAgdGFibGVDb2RlOiB0YmwudGFibGVDb2RlLFxuICAgICAgICB2aXNpYmxlOiB0YmwuYWJzb2x1dGVWaXNpYmxlLFxuICAgICAgICBjdXJyZW50UGFnZTogdGJsLmN1cnJlbnRQYWdlLFxuICAgICAgICByZXF1ZXN0ZWRQYWdlOiB0YmwucmVxdWVzdGVkUGFnZSxcbiAgICAgICAgcmVjb3Jkc1BlclBhZ2U6IHRibC5yZWNvcmRzUGVyUGFnZSxcbiAgICAgICAgY3VycmVudEZpbHRlcjogdGJsLmN1cnJlbnRGaWx0ZXIsXG4gICAgICAgIHNvcnRpbmdDb2x1bW46IHRibC5zb3J0aW5nLmNvbHVtbk5hbWUsXG4gICAgICAgIHNvcnRpbmdEaXJlY3Rpb246IHRibC5zb3J0aW5nLmRpcmVjdGlvbixcbiAgICAgIH07XG4gICAgICByZXR1cm4gdGFibGVQYXlsb2FkXG4gICAgfSlcbiAgICByZXR1cm4gZm9ybURhdGE7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHN1YmplY3RcbiAgICovXG4gIGdldCBmb3JtU3ViamVjdCgpIHsgcmV0dXJuIHRoaXMuc3ViamVjdDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugc3ViamVjdFxuICAgKi9cbiAgc2V0IGZvcm1TdWJqZWN0KHN1YmplY3QpIHsgdGhpcy5zdWJqZWN0ID0gc3ViamVjdDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugc3RhdGVzXG4gICAqL1xuICBnZXRTdGF0ZXMoKSB7IHJldHVybiB0aGlzLnN0YXRlczsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugc3RhdGVcbiAgICovXG4gIGdldEN1cnJlbnRTdGF0ZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5zdGF0ZTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGl0bGVcbiAgICovXG4gIGdldFRpdGxlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnRpdGxlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB0aXRsZVxuICAgKi9cbiAgc2V0VGl0bGUodGl0bGU6IHN0cmluZyk6IHZvaWQgeyB0aGlzLnRpdGxlID0gdGl0bGU7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHN1cHBvcnRTdGF0ZVxuICAgKi9cbiAgc3VwcG9ydE1vZGUoc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5zdXBwb3J0U3RhdGUoc3RhdGUpOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBlbmFibGVGaWVsZHNcbiAgICovXG4gIGVuYWJsZUVkaXRGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVGaWVsZHMoY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZGlzYWJsZUZpZWxkc1xuICAgKi9cbiAgZGlzYWJsZUVkaXRGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlRmllbGRzKGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZ2V0RmllbGRcbiAgICovXG4gIGdldEZpZWxkT2JqZWN0KGNvZGU6IHN0cmluZyk6IEZpZWxkRGVzY3JpcHRvciB8IG51bGwgeyByZXR1cm4gdGhpcy5nZXRGaWVsZChjb2RlKTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZ2V0QWN0aW9uXG4gICAqL1xuICBnZXRBY3Rpb25PYmplY3QoY29kZTogc3RyaW5nKTogRm9ybUFjdGlvbiB8IG51bGwgeyByZXR1cm4gdGhpcy5nZXRBY3Rpb24oY29kZSk7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGdldFRhYmxlXG4gICAqL1xuICBnZXRUYWJsZU9iamVjdChjb2RlOiBzdHJpbmcpOiBSZWNvcmRUYWJsZSB8IG51bGwgeyByZXR1cm4gdGhpcy5nZXRUYWJsZShjb2RlKTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZ2V0U2VjdGlvblxuICAgKi9cbiAgZ2V0U2VjdGlvbk9iamVjdChjb2RlOiBzdHJpbmcpOiBSZWNvcmRGb3JtU2VjdGlvbiB8IG51bGwgeyByZXR1cm4gdGhpcy5nZXRTZWN0aW9uKGNvZGUpOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBjaGFuZ2VTdGF0ZVxuICAgKi9cbiAgY2hhbmdlRm9ybU1vZGUoc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jaGFuZ2VTdGF0ZShzdGF0ZSk7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHN1YmplY3RcbiAgICovXG4gIGdldEZvcm1TdWJqZWN0KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnN1YmplY3Q7IH1cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBzdWJqZWN0XG4gICAqL1xuICBnZXRTdWJqZWN0KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnN1YmplY3QgPz8gJyc7IH1cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBzdWJqZWN0XG4gICAqL1xuICBnZXRmb3JtU3ViamVjdCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5zdWJqZWN0ID8/ICcnOyB9XG5cbn1cbiJdfQ==
|
|
608
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEMsT0FBTyxFQUFFLGVBQWUsRUFBZSxNQUFNLFNBQVMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU5QyxPQUFPLEVBQVksTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHcEQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUNwQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUM7QUFDcEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQztBQUMxQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7QUFFdEIsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDO0FBQy9CLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztBQUM1QixNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUM7QUF1Q25DLE1BQU0sT0FBTyxvQkFBb0I7SUFDZCxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQUMzQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDaEIsd0JBQXdCLEdBQUcsRUFBRSxDQUFDO0lBRTVCLGVBQWUsR0FBWSxJQUFJLENBQUM7SUFDaEMsT0FBTyxHQUFrQixJQUFJLENBQUM7SUFDOUIsU0FBUyxDQUFZO0lBQ3JC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SUFBWSxJQUF1QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWpGOztPQUVHO0lBQ0gsY0FBYyxDQUFDLElBQVksSUFBd0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVoRjs7T0FFRztJQUNILGdCQUFnQixDQUFDLElBQVksSUFBOEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUxRjs7T0FFRztJQUNILGNBQWMsQ0FBQyxLQUFhLElBQWEsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUxRTs7T0FFRztJQUNILGNBQWMsS0FBYSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2pEOztPQUVHO0lBQ0gsVUFBVSxLQUFhLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25EOztPQUVHO0lBQ0gsY0FBYyxLQUFhLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBRXhEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybUFjdGlvbiB9IGZyb20gJy4vYWN0aW9uJztcbmltcG9ydCB7IEZpZWxkRGVzY3JpcHRvciwgRmllbGRPcHRpb24gfSBmcm9tICcuL2ZpZWxkJztcbmltcG9ydCB7IFJlY29yZFRhYmxlIH0gZnJvbSAnLi90YWJsZS90YWJsZSc7XG5pbXBvcnQgeyBSZWNvcmRGb3JtU2VjdGlvbiB9IGZyb20gJy4vc2VjdGlvbic7XG5pbXBvcnQgeyBSZWNvcmRGb3JtU3ViU2VjdGlvbiB9IGZyb20gJy4vc3Vic2VjdGlvbic7XG5pbXBvcnQgeyBOT19FUlJPUiwgSEVBREVSIH0gZnJvbSAnLi9mb3JtLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBUYWJsZVJlY29yZERhdGEgfSBmcm9tICcuL3RhYmxlL3Jvdy1kYXRhJztcblxuY29uc3QgQUNUSVZFID0gJ2FjdGl2ZSc7XG5jb25zdCBTSE9XID0gJ3Nob3cnO1xuY29uc3QgSElERSA9ICdoaWRlJztcbmNvbnN0IEVOQUJMRSA9ICdlbmFibGUnO1xuY29uc3QgRElTQUJMRSA9ICdkaXNhYmxlJztcbmNvbnN0IENMRUFOID0gJ2NsZWFuJztcblxuY29uc3QgYWx3YXlzVmlzaWJsZSA9ICdBTFdBWVMnO1xuY29uc3QgbmV2ZXJWaXNpYmxlID0gJ05PTkUnO1xuY29uc3Qgb25TdGF0ZXNWaXNpYmxlID0gJ09OU1RBVEVTJztcbmludGVyZmFjZSBUcmFuc2l0aW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICBzb3VyY2U6IHN0cmluZztcbiAgZGVzdGluYXRpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFN0YXRlRmxvdyB7XG4gIGRlZmF1bHRTdGF0ZTogc3RyaW5nO1xuICBzdGF0ZXM6IHN0cmluZ1tdO1xuICBzdGF0ZURlc2NyaXB0aW9uczogc3RyaW5nW107XG4gIHRyYW5zaXRpb25zOiBUcmFuc2l0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRQYXlsb2FkIHtcbiAgZmllbGRDb2RlOiBzdHJpbmc7XG4gIGZpZWxkVmFsdWU6IGFueTtcbiAgZWRpdGFibGU6IGJvb2xlYW47XG4gIHZpc2libGU6IGJvb2xlYW47XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICBmaWVsZE9wdGlvbnM6IHN0cmluZyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZVBheWxvYWQge1xuICB0YWJsZUNvZGU6IHN0cmluZztcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgcmVxdWVzdGVkUGFnZTogbnVtYmVyO1xuICByZWNvcmRzUGVyUGFnZTogbnVtYmVyO1xuICBjdXJyZW50RmlsdGVyOiBhbnksXG4gIHNvcnRpbmdDb2x1bW46IHN0cmluZztcbiAgc29ydGluZ0RpcmVjdGlvbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRm9ybVBheWxvYWQge1xuICBmaWVsZHM6IEZpZWxkUGF5bG9hZFtdLFxuICB0YWJsZXM6IFRhYmxlUGF5bG9hZFtdLFxufVxuXG5leHBvcnQgY2xhc3MgRm9ybVN0cnVjdHVyZUFuZERhdGEge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcHJpdmF0ZSBfaW1tdXRhYmxlRGF0YSA9IHt9O1xuICBwcml2YXRlIF9leHRyYUluZm8gPSB7fTtcbiAgcHJpdmF0ZSBfZXhjbHVzaXZlU2VjdGlvbnNCeUF0dHIgPSB7fTtcblxuICBwcm90ZWN0ZWQgbG9hZEluaXRpYWxEYXRhOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIHN1YmplY3Q6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcm90ZWN0ZWQgc3RhdGVGbG93OiBTdGF0ZUZsb3c7XG4gIHByb3RlY3RlZCBmaWVsZHMgPSB7fTtcbiAgcHJvdGVjdGVkIGFjdGlvbnMgPSB7fTtcbiAgcHJvdGVjdGVkIHRhYmxlcyA9IHt9O1xuICBwcm90ZWN0ZWQgc2VjdGlvbnMgPSB7fTtcbiAgcHJvdGVjdGVkIGZpZWxkQXJyYXk6IEZpZWxkRGVzY3JpcHRvcltdO1xuICBwcm90ZWN0ZWQgYWN0aW9uQXJyYXk6IEZvcm1BY3Rpb25bXTtcbiAgcHJvdGVjdGVkIHRhYmxlQXJyYXk6IFJlY29yZFRhYmxlW107XG4gIHByb3RlY3RlZCBzZWN0aW9uQXJyYXk6IFJlY29yZEZvcm1TZWN0aW9uW107XG5cbiAgcHVibGljIGN1c3RvbUF0dHJpYnV0ZXM6IGFueSA9IHt9O1xuICBmb3JtQ29uZmlnOiBhbnk7XG4gIHN0YXRlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZyA9ICcnO1xuICB0aXRsZTogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdGF0ZSA9ICcnO1xuICAgIHRoaXMuYWN0aW9uQXJyYXkgPSBbXTtcbiAgICB0aGlzLmZpZWxkQXJyYXkgPSBbXTtcbiAgICB0aGlzLnRhYmxlQXJyYXkgPSBbXTtcbiAgICB0aGlzLnNlY3Rpb25BcnJheSA9IFtdO1xuICAgIHRoaXMuc3RhdGVGbG93ID0ge1xuICAgICAgZGVmYXVsdFN0YXRlOiAnJyxcbiAgICAgIHN0YXRlczogW10sXG4gICAgICBzdGF0ZURlc2NyaXB0aW9uczogW10sXG4gICAgICB0cmFuc2l0aW9uczogW10sXG4gICAgfTtcbiAgfVxuXG4gIHNldENvbmZpZyhmb3JtQ29uZmlnKSB7XG4gICAgdGhpcy5mb3JtQ29uZmlnID0gZm9ybUNvbmZpZztcbiAgfVxuXG4gIGNsZWFuRm9ybSgpIHtcbiAgICB0aGlzLmFjdGlvbkFycmF5ID0gW107XG4gICAgdGhpcy5maWVsZEFycmF5ID0gW107XG4gICAgdGhpcy50YWJsZUFycmF5ID0gW107XG4gICAgdGhpcy5zZWN0aW9uQXJyYXkgPSBbXTtcbiAgICB0aGlzLnN0YXRlRmxvdyA9IHtcbiAgICAgIGRlZmF1bHRTdGF0ZTogJycsXG4gICAgICBzdGF0ZXM6IFtdLFxuICAgICAgc3RhdGVEZXNjcmlwdGlvbnM6IFtdLFxuICAgICAgdHJhbnNpdGlvbnM6IFtdLFxuICAgIH07XG4gIH1cblxuICBsb2FkRGVmaW5pdGlvbihkZWZpbml0aW9uUmVjZWl2ZWQpIHtcbiAgICB0aGlzLnN0YXRlID0gJyc7XG4gICAgbGV0IGFsbFN0YXRlcyA9IFtdO1xuICAgIHRoaXMuY2xlYW5Gb3JtKCk7XG4gICAgaWYgKCFkZWZpbml0aW9uUmVjZWl2ZWQpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgeyBmb3JtID0ge30gfSA9IGRlZmluaXRpb25SZWNlaXZlZDtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUgPz8gZm9ybS5mb3JtQ29kZTtcbiAgICB0aGlzLnRpdGxlID0gZm9ybS5mb3JtVGl0bGUgPz8gdGhpcy5uYW1lO1xuICAgIHRoaXMubG9hZEluaXRpYWxEYXRhID0gZm9ybS5sb2FkSW5pdGlhbERhdGEgPz8gdHJ1ZTtcbiAgICBhbGxTdGF0ZXMgPSBkZWZpbml0aW9uUmVjZWl2ZWQ/LnN0YXRlcztcbiAgICB0aGlzLnNldFN0YXRlRmxvdyhkZWZpbml0aW9uUmVjZWl2ZWQ/LnN0YXRlcywgZGVmaW5pdGlvblJlY2VpdmVkPy50cmFuc2l0aW9ucyxcbiAgICAgIGRlZmluaXRpb25SZWNlaXZlZD8uZGVmYXVsdFN0YXRlLCBkZWZpbml0aW9uUmVjZWl2ZWQ/LnN0YXRlRGVzY3JpcHRpb25zKTtcbiAgICB0aGlzLmltbXV0YWJsZURhdGEgPSBkZWZpbml0aW9uUmVjZWl2ZWQuaW1tdXRhYmxlRGF0YTtcbiAgICB0aGlzLmV4dHJhSW5mbyA9IGRlZmluaXRpb25SZWNlaXZlZC5leHRyYUluZm87XG4gICAgdGhpcy5jdXN0b21BdHRyaWJ1dGVzID0ge307XG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZD8uY3VzdG9tQXR0cmlidXRlcykge1xuICAgICAgdGhpcy5zZXRDdXN0b21BdHRyaWJ1dGVzKGRlZmluaXRpb25SZWNlaXZlZD8uY3VzdG9tQXR0cmlidXRlcyk7XG4gICAgfVxuICAgIGlmIChkZWZpbml0aW9uUmVjZWl2ZWQuYWN0aW9ucykge1xuICAgICAgY29uc3QgZm9ybUFjdGlvbnMgPSBkZWZpbml0aW9uUmVjZWl2ZWQuYWN0aW9ucy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlc1xuICAgICAgICAgID8/IChvYmpEZWYuYWN0aW9uTW9kZXM/LnNwbGl0KCcsJyk/Lm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpPy5maWx0ZXIoc3RhdGUgPT4gc3RhdGUpKVxuICAgICAgICAgID8/IFtdO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzID8/IG9iakRlZi5lZGl0YWJsZVN0YXRlcyA/PyBbXTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZpc2libGVTdGF0ZXMpICYmIHR5cGVvZiB2aXNpYmxlU3RhdGVzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAodmlzaWJsZVN0YXRlcyA9PT0gbmV2ZXJWaXNpYmxlKSA/IFtdIDogYWxsU3RhdGVzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShlbmFibGVkU3RhdGVzKSAmJiB0eXBlb2YgZW5hYmxlZFN0YXRlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gKGVuYWJsZWRTdGF0ZXMgPT09IG5ldmVyVmlzaWJsZSkgPyBbXSA6IHZpc2libGVTdGF0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgZW5hYmxlZFN0YXRlcyA9IGVuYWJsZWRTdGF0ZXMuZmlsdGVyKHN0YXRlID0+IHZpc2libGVTdGF0ZXMuaW5jbHVkZXMoc3RhdGUpKTtcbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzLCBlbmFibGVkU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgYWN0aW9uUmVjZWl2ZWQgb2YgZm9ybUFjdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZ2xvYmFsQWN0aW9uID0gbmV3IEZvcm1BY3Rpb24oYWN0aW9uUmVjZWl2ZWQsIHRoaXMuZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IGdsb2JhbEFjdGlvbkNvZGUgPSBnbG9iYWxBY3Rpb24uYWN0aW9uQ29kZTtcbiAgICAgICAgaWYgKGdsb2JhbEFjdGlvbkNvZGUpIHtcbiAgICAgICAgICB0aGlzLmFjdGlvbkFycmF5LnB1c2goZ2xvYmFsQWN0aW9uKTtcbiAgICAgICAgICB0aGlzLmFjdGlvbnNbZ2xvYmFsQWN0aW9uQ29kZV0gPSBnbG9iYWxBY3Rpb247XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkLmZpZWxkcykge1xuICAgICAgY29uc3QgZm9ybUZpZWxkcyA9IGRlZmluaXRpb25SZWNlaXZlZC5maWVsZHMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXNcbiAgICAgICAgICA/PyAob2JqRGVmLmZpZWxkTW9kZXM/LnNwbGl0KCcsJyk/Lm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpPy5maWx0ZXIoc3RhdGUgPT4gc3RhdGUpKVxuICAgICAgICAgID8/IFtdO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzID8/IG9iakRlZi5lZGl0YWJsZVN0YXRlcyA/PyBbXTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZpc2libGVTdGF0ZXMpICYmIHR5cGVvZiB2aXNpYmxlU3RhdGVzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAodmlzaWJsZVN0YXRlcyA9PT0gbmV2ZXJWaXNpYmxlKSA/IFtdIDogYWxsU3RhdGVzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShlbmFibGVkU3RhdGVzKSAmJiB0eXBlb2YgZW5hYmxlZFN0YXRlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gKGVuYWJsZWRTdGF0ZXMgPT09IG5ldmVyVmlzaWJsZSkgPyBbXSA6IHZpc2libGVTdGF0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgZW5hYmxlZFN0YXRlcyA9IGVuYWJsZWRTdGF0ZXMuZmlsdGVyKHN0YXRlID0+IHZpc2libGVTdGF0ZXMuaW5jbHVkZXMoc3RhdGUpKTtcbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzLCBlbmFibGVkU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgZmllbGRSZWNlaXZlZCBvZiBmb3JtRmllbGRzKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkVG9BZGQgPSBuZXcgRmllbGREZXNjcmlwdG9yKGZpZWxkUmVjZWl2ZWQsIHRoaXMuZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IGZpZWxkQ29kZSA9IGZpZWxkVG9BZGQuY29kZTtcbiAgICAgICAgaWYgKGZpZWxkQ29kZSkge1xuICAgICAgICAgIHRoaXMuZmllbGRBcnJheS5wdXNoKGZpZWxkVG9BZGQpO1xuICAgICAgICAgIHRoaXMuZmllbGRzW2ZpZWxkQ29kZV0gPSBmaWVsZFRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC50YWJsZXMpIHtcbiAgICAgIGNvbnN0IHRhYmxlcyA9IGRlZmluaXRpb25SZWNlaXZlZC50YWJsZXMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXNcbiAgICAgICAgICA/PyAob2JqRGVmLnRhYmxlTW9kZXM/LnNwbGl0KCcsJyk/Lm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpPy5maWx0ZXIoc3RhdGUgPT4gc3RhdGUpKVxuICAgICAgICAgID8/IFtdO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzID8/IG9iakRlZi5lZGl0YWJsZVN0YXRlcyA/PyBbXTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZpc2libGVTdGF0ZXMpICYmIHR5cGVvZiB2aXNpYmxlU3RhdGVzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAodmlzaWJsZVN0YXRlcyA9PT0gbmV2ZXJWaXNpYmxlKSA/IFtdIDogYWxsU3RhdGVzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShlbmFibGVkU3RhdGVzKSAmJiB0eXBlb2YgZW5hYmxlZFN0YXRlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gKGVuYWJsZWRTdGF0ZXMgPT09IG5ldmVyVmlzaWJsZSkgPyBbXSA6IHZpc2libGVTdGF0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgZW5hYmxlZFN0YXRlcyA9IGVuYWJsZWRTdGF0ZXMuZmlsdGVyKHN0YXRlID0+IHZpc2libGVTdGF0ZXMuaW5jbHVkZXMoc3RhdGUpKTtcbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzLCBlbmFibGVkU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgdGFibGVSZWNlaXZlZCBvZiB0YWJsZXMpIHtcbiAgICAgICAgY29uc3QgdGFibGVUb0FkZCA9IG5ldyBSZWNvcmRUYWJsZSh0YWJsZVJlY2VpdmVkLCB0aGlzLmZvcm1Db25maWcpO1xuICAgICAgICBjb25zdCB0YWJsZUNvZGUgPSB0YWJsZVRvQWRkLnRhYmxlQ29kZTtcbiAgICAgICAgaWYgKHRhYmxlQ29kZSkge1xuICAgICAgICAgIHRoaXMudGFibGVBcnJheS5wdXNoKHRhYmxlVG9BZGQpO1xuICAgICAgICAgIHRoaXMudGFibGVzW3RhYmxlQ29kZV0gPSB0YWJsZVRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC5zZWN0aW9ucykge1xuICAgICAgY29uc3QgZm9ybVNlY3Rpb25zID0gZGVmaW5pdGlvblJlY2VpdmVkLnNlY3Rpb25zLm1hcChvYmpEZWYgPT4ge1xuICAgICAgICBsZXQgdmlzaWJsZVN0YXRlcyA9IG9iakRlZi52aXNpYmxlU3RhdGVzXG4gICAgICAgICAgPz8gKG9iakRlZi5zZWN0aW9uTW9kZXM/LnNwbGl0KCcsJyk/Lm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpPy5maWx0ZXIoc3RhdGUgPT4gc3RhdGUpKVxuICAgICAgICAgID8/IFtdO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmlzaWJsZVN0YXRlcykgJiYgdHlwZW9mIHZpc2libGVTdGF0ZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9ICh2aXNpYmxlU3RhdGVzID09PSBuZXZlclZpc2libGUpID8gW10gOiBhbGxTdGF0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3Vic2VjdGlvbnMgPSBvYmpEZWYuc3Vic2VjdGlvbnMubWFwKHN1YlNlY0RlZiA9PiB7XG4gICAgICAgICAgbGV0IHN1YlNlY1Zpc2libGVTdGF0ZXMgPSBzdWJTZWNEZWYudmlzaWJsZVN0YXRlcyA/PyBbXTtcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoc3ViU2VjVmlzaWJsZVN0YXRlcykgJiYgdHlwZW9mIHN1YlNlY1Zpc2libGVTdGF0ZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBzdWJTZWNWaXNpYmxlU3RhdGVzID0gKHN1YlNlY1Zpc2libGVTdGF0ZXMgPT09IG5ldmVyVmlzaWJsZSkgPyBbXSA6IGFsbFN0YXRlcztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHsgLi4uc3ViU2VjRGVmLCB2aXNpYmxlU3RhdGVzOiBzdWJTZWNWaXNpYmxlU3RhdGVzIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHN1YnNlY3Rpb25zLCB2aXNpYmxlU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3Qgc2VjdGlvblJlY2VpdmVkIG9mIGZvcm1TZWN0aW9ucykge1xuICAgICAgICBjb25zdCBzZWN0aW9uVG9BZGQgPSBuZXcgUmVjb3JkRm9ybVNlY3Rpb24oc2VjdGlvblJlY2VpdmVkLCB0aGlzLCB0aGlzLmZvcm1Db25maWcpO1xuICAgICAgICBjb25zdCBzZWN0aW9uQ29kZSA9IHNlY3Rpb25Ub0FkZC5zZWN0aW9uQ29kZTtcbiAgICAgICAgaWYgKHNlY3Rpb25Db2RlKSB7XG4gICAgICAgICAgdGhpcy5zZWN0aW9uQXJyYXkucHVzaChzZWN0aW9uVG9BZGQpO1xuICAgICAgICAgIHRoaXMuc2VjdGlvbnNbc2VjdGlvbkNvZGVdID0gc2VjdGlvblRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRXN0YWRvc1xuICBnZXQgZGVmYXVsdFN0YXRlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnN0YXRlRmxvdy5kZWZhdWx0U3RhdGU7IH1cbiAgZ2V0IHN0YXRlcygpOiBhbnlbXSB7IHJldHVybiB0aGlzLnN0YXRlRmxvdy5zdGF0ZXM7IH1cbiAgZ2V0IHN0YXRlRGVzY3JpcHRpb25zKCk6IGFueVtdIHsgcmV0dXJuIHRoaXMuc3RhdGVGbG93LnN0YXRlRGVzY3JpcHRpb25zOyB9XG4gIHN1cHBvcnRTdGF0ZShzdGF0ZTogc3RyaW5nID0gJycpOiBib29sZWFuIHsgcmV0dXJuICghIXN0YXRlICYmIHRoaXMuc3RhdGVGbG93LnN0YXRlcz8uaW5jbHVkZXMoc3RhdGUpKTsgfVxuXG4gIGdldE5leHRTdGF0ZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlRmxvdy50cmFuc2l0aW9ucy5maWx0ZXIodHJucyA9PiB0cm5zLnNvdXJjZSA9PT0gdGhpcy5zdGF0ZSlcbiAgICAgIC5tYXAodHJucyA9PiB0cm5zLmRlc3RpbmF0aW9uKTtcbiAgfVxuXG4gIGNoYW5nZVN0YXRlKG5ld1N0YXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgIGlmICghbmV3U3RhdGUgfHwgIXRoaXMuc3VwcG9ydFN0YXRlKG5ld1N0YXRlKSB8fCBjdXJyZW50U3RhdGUgPT09IG5ld1N0YXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghdGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5zdGF0ZSA9IG5ld1N0YXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0cmFuc2l0aW9uVG9DaGFuZ2UgPSB0aGlzLnN0YXRlRmxvdy50cmFuc2l0aW9ucy5maW5kKHRybnMgPT5cbiAgICAgICAgdHJucy5zb3VyY2UgPT09IHRoaXMuc3RhdGUgJiYgdHJucy5kZXN0aW5hdGlvbiA9PT0gbmV3U3RhdGUpO1xuICAgICAgaWYgKHRyYW5zaXRpb25Ub0NoYW5nZSkge1xuICAgICAgICB0aGlzLnN0YXRlID0gbmV3U3RhdGU7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlQ2hhbmdlLm5leHQoeyBzdGF0ZTogdGhpcy5zdGF0ZSB9KTtcbiAgICByZXR1cm4gKHRoaXMuc3RhdGUgPT09IG5ld1N0YXRlKTtcbiAgfVxuXG4gIGdldCBzdGF0ZUNoYW5nZSgpIHsgcmV0dXJuIHRoaXMuX3N0YXRlQ2hhbmdlLmFzT2JzZXJ2YWJsZSgpOyB9XG5cbiAgc2V0U3RhdGVGbG93KHN0YXRlcz8sIHRyYW5zaXRpb25zPywgZGVmYXVsdFN0YXRlPzogc3RyaW5nLCBzdGF0ZURlc2NyaXB0aW9ucyA9IFtdKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZUZsb3cuc3RhdGVzID0gc3RhdGVzO1xuICAgIHRoaXMuc3RhdGVGbG93LnN0YXRlRGVzY3JpcHRpb25zID0gc3RhdGVEZXNjcmlwdGlvbnM7XG4gICAgdGhpcy5zdGF0ZUZsb3cuZGVmYXVsdFN0YXRlID0gZGVmYXVsdFN0YXRlIHx8IHRoaXMuc3RhdGVGbG93LnN0YXRlc1swXTtcbiAgICB0aGlzLnN0YXRlRmxvdy50cmFuc2l0aW9ucyA9IHRyYW5zaXRpb25zLm1hcCh0cmFuc2l0aW9uID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0cmFuc2l0aW9uLm5hbWU7XG4gICAgICBjb25zdCBzb3VyY2UgPSAodGhpcy5zdGF0ZUZsb3cuc3RhdGVzLmluY2x1ZGVzKHRyYW5zaXRpb24uc291cmNlKSkgPyB0cmFuc2l0aW9uLnNvdXJjZSA6ICcnO1xuICAgICAgY29uc3QgZGVzdGluYXRpb24gPSAodGhpcy5zdGF0ZUZsb3cuc3RhdGVzLmluY2x1ZGVzKHRyYW5zaXRpb24uZGVzdGluYXRpb24pKSA/IHRyYW5zaXRpb24uZGVzdGluYXRpb24gOiAnJztcbiAgICAgIHJldHVybiB7IG5hbWUsIHNvdXJjZSwgZGVzdGluYXRpb24gfTtcbiAgICB9KS5maWx0ZXIoaXRlbSA9PiBpdGVtLm5hbWUgJiYgaXRlbS5zb3VyY2UgJiYgaXRlbS5kZXN0aW5hdGlvbik7XG4gIH1cblxuICAvLyBpbW11dGFibGUgRGF0YVxuICBnZXRJbW11dGFibGVFbGVtZW50KG5hbWU6IHN0cmluZyk6IGFueSB7IHJldHVybiB0aGlzLl9pbW11dGFibGVEYXRhPy5bbmFtZV0/LnZhbHVlID8/IG51bGw7IH1cbiAgc2V0IGltbXV0YWJsZURhdGEoaW1tdXRhYmxlRGF0YSkgeyBPYmplY3QuYXNzaWduKHRoaXMuX2ltbXV0YWJsZURhdGEsIGltbXV0YWJsZURhdGEpOyB9XG4gIGdldCBpbW11dGFibGVEYXRhKCk6IGFueSB7IHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX2ltbXV0YWJsZURhdGEpKTsgfVxuXG4gIC8vIGV4dHJhIEluZm9cbiAgZ2V0RXh0cmFJbmZvKG5hbWU6IHN0cmluZyk6IGFueSB7IHJldHVybiB0aGlzLl9leHRyYUluZm8/LltuYW1lXT8udmFsdWUgPz8gbnVsbDsgfVxuICBzZXQgZXh0cmFJbmZvKGV4dHJhSW5mbykgeyBPYmplY3QuYXNzaWduKHRoaXMuX2V4dHJhSW5mbywgZXh0cmFJbmZvKTsgfVxuICBnZXQgZXh0cmFJbmZvKCk6IGFueSB7IHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX2V4dHJhSW5mbykpOyB9XG5cbiAgLy8gQ3VzdG9tIEF0dHJpYnV0ZXNcbiAgZ2V0Q3VzdG9tQXR0cmlidXRlKG5hbWU6IHN0cmluZyk6IGFueSB7IHJldHVybiB0aGlzLmN1c3RvbUF0dHJpYnV0ZXM/LltuYW1lXSA/PyBudWxsOyB9XG4gIHNldEN1c3RvbUF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHsgaWYgKG5hbWUpIHsgdGhpcy5jdXN0b21BdHRyaWJ1dGVzW25hbWVdID0gdmFsdWU7IH0gfVxuICBzZXRDdXN0b21BdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IGFueSk6IEZvcm1TdHJ1Y3R1cmVBbmREYXRhIHtcbiAgICBpZiAoYXR0cmlidXRlcyAmJiB0eXBlb2YgYXR0cmlidXRlcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpLmZvckVhY2goKFtuYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgdGhpcy5zZXRDdXN0b21BdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gRmllbGRzXG4gIGdldCBmaWVsZE5hbWVzKCk6IHN0cmluZ1tdIHsgcmV0dXJuIHRoaXMuZ2V0RmllbGROYW1lcygpOyB9XG4gIGdldEZpZWxkcygpOiBGaWVsZERlc2NyaXB0b3JbXSB7IHJldHVybiB0aGlzLmZpZWxkQXJyYXk7IH1cbiAgZ2V0RmllbGROYW1lcygpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLmZpZWxkQXJyYXkubWFwKGZpZWxkID0+IGZpZWxkLmNvZGUpOyB9XG4gIGdldEZpZWxkKGNvZGU6IHN0cmluZyk6IEZpZWxkRGVzY3JpcHRvciB7IHJldHVybiAoY29kZSAmJiB0aGlzLmZpZWxkcz8uW2NvZGVdKSA/IHRoaXMuZmllbGRzW2NvZGVdIDogbnVsbDsgfVxuICBlbmFibGVGaWVsZChjb2RlOiBzdHJpbmcpOiB2b2lkIHsgdGhpcy5nZXRGaWVsZChjb2RlKT8uZW5hYmxlKCk7IH1cbiAgZGlzYWJsZUZpZWxkKGNvZGU6IHN0cmluZyk6IHZvaWQgeyB0aGlzLmdldEZpZWxkKGNvZGUpPy5kaXNhYmxlKCk7IH1cbiAgZ2V0RmllbGRWYWx1ZShjb2RlOiBzdHJpbmcpOiBhbnkgeyByZXR1cm4gdGhpcy5nZXRGaWVsZChjb2RlKT8udmFsdWU7IH1cbiAgZ2V0RmllbGRPcHRpb25UZXh0KGNvZGU6IHN0cmluZyk6IGFueSB7IHJldHVybiB0aGlzLmdldEZpZWxkKGNvZGUpPy5vcHRpb25UZXh0OyB9XG4gIGdldEZpZWxkT3B0aW9ucyhjb2RlOiBzdHJpbmcpOiBGaWVsZE9wdGlvbltdIHwgbnVsbCB7IHJldHVybiB0aGlzLmdldEZpZWxkKGNvZGUpPy5vcHRpb25zID8/IG51bGw7IH1cbiAgc2V0RmllbGRWYWx1ZShjb2RlOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBhbnkgeyB0aGlzLmdldEZpZWxkKGNvZGUpPy5zZXRWYWx1ZSh2YWx1ZSk7IH1cbiAgc2V0RmllbGRFcnJvcihjb2RlOiBzdHJpbmcsIGVycm9yQ29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIHR5cGU6IHN0cmluZyA9ICdlcnJvcicpOiBhbnkgeyB0aGlzLmdldEZpZWxkKGNvZGUpPy5zZXRFcnJvcihlcnJvckNvZGUsIG1lc3NhZ2UsIHR5cGUpOyB9XG4gIHNldEZpZWxkSW50cmluc2ljRXJyb3JNZXNzYWdlKGNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogYW55IHsgdGhpcy5nZXRGaWVsZChjb2RlKT8uc2V0SW50cmluc2ljRXJyb3JNZXNzYWdlKG1lc3NhZ2UpOyB9XG5cbiAgc2V0RmllbGRSZXF1aXJlZChpbnB1dENvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHJlcXVpcmVkOiBib29sZWFuKTogYW55IHtcbiAgICBjb25zdCBjb2RlcyA9IHRoaXMuZ2V0RmllbGRTZXQobnVsbCwgaW5wdXRDb2RlcyA/PyBudWxsKTtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgY29kZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChjb2RlKSA/PyBudWxsO1xuICAgICAgICBmaWVsZCAmJiAoZmllbGQucmVxdWlyZWQgPSByZXF1aXJlZCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBFcnJvciBtb2RpZmljYW5kbyBjYW1wbyAke2NvZGV9OiAke2V9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0RmllbGRFcnJvck1lc3NhZ2UoY29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiBhbnkgeyB0aGlzLmdldEZpZWxkKGNvZGUpPy5zZXRFcnJvck1lc3NhZ2UobWVzc2FnZSk7IH1cblxuICBzZXRGaWVsZE9wdGlvbnMoY29kZTogc3RyaW5nLCBvcHRpb25zQXJyYXk6IGFueVtdLCBpZEF0dHJpYnV0ZTogc3RyaW5nLCB2YWx1ZUF0dHJpYnV0ZTogc3RyaW5nIHwgc3RyaW5nW10sIHNhcGFyYXRvciA9ICctJyk6IGFueSB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmdldEZpZWxkKGNvZGUpO1xuICAgIGlmICghZmllbGQpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgbmV3T3B0aW9uczogYW55W10gPSBbXTtcbiAgICBjb25zdCBudW1TZXBhcmF0b3JzID0gKEFycmF5LmlzQXJyYXkodmFsdWVBdHRyaWJ1dGUpKSA/ICh2YWx1ZUF0dHJpYnV0ZS5sZW5ndGggLSAxKSA6IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zQXJyYXk/Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBvcHRpb25JdGVtID0gb3B0aW9uc0FycmF5W2ldO1xuICAgICAgY29uc3QgZmllbGRPcHRpb25JZCA9IG9wdGlvbkl0ZW0/LltpZEF0dHJpYnV0ZV07XG4gICAgICBsZXQgZmllbGRPcHRpb25UZXh0ID0gJyc7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZUF0dHJpYnV0ZSkpIHtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHZhbHVlQXR0cmlidXRlLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGNvbnN0IHRleHRQYXJ0ID0gdmFsdWVBdHRyaWJ1dGVbaW5kZXhdO1xuICAgICAgICAgIGZpZWxkT3B0aW9uVGV4dCArPSAoaW5kZXggPCBudW1TZXBhcmF0b3JzKVxuICAgICAgICAgICAgPyBgJHtvcHRpb25JdGVtPy5bdGV4dFBhcnRdfSAke3NhcGFyYXRvcn0gYCA6IG9wdGlvbkl0ZW0/Llt0ZXh0UGFydF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpZWxkT3B0aW9uVGV4dCA9IG9wdGlvbkl0ZW0/Llt2YWx1ZUF0dHJpYnV0ZV07XG4gICAgICB9XG4gICAgICBpZiAoZmllbGRPcHRpb25JZCAhPT0gdW5kZWZpbmVkICYmIGZpZWxkT3B0aW9uSWQgIT09IG51bGxcbiAgICAgICAgJiYgZmllbGRPcHRpb25UZXh0ICE9PSB1bmRlZmluZWQgJiYgZmllbGRPcHRpb25UZXh0ICE9PSBudWxsKSB7XG4gICAgICAgIG5ld09wdGlvbnMucHVzaCh7IGZpZWxkT3B0aW9uSWQsIGZpZWxkT3B0aW9uVmFsdWU6IGZpZWxkT3B0aW9uVGV4dCB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZmllbGQub3B0aW9ucyA9IG5ld09wdGlvbnM7XG4gIH1cblxuICBnZXRGaWVsZFNldChmaWx0ZXIsIGlucHV0Q29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZyB8IG51bGwsIHN1YkNvZGU/OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nW10ge1xuICAgIGxldCBjb2RlczogYW55W10gPSBbXTtcbiAgICBpZiAoaW5wdXRDb2Rlcykge1xuICAgICAgaWYgKHR5cGVvZiBpbnB1dENvZGVzID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb2RlcyA9IFtpbnB1dENvZGVzXTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpbnB1dENvZGVzKSAmJiBpbnB1dENvZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29kZXMgPSBpbnB1dENvZGVzID8/IFtdO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc2VjQ29kZSAmJiAhc3ViQ29kZSkge1xuICAgICAgY29kZXMgPSB0aGlzLmdldFNlY3Rpb24oc2VjQ29kZSk/LmdldEZpZWxkTmFtZXMoKSA/PyBbXTtcbiAgICB9IGVsc2UgaWYgKHNlY0NvZGUgJiYgc3ViQ29kZSkge1xuICAgICAgY29kZXMgPSB0aGlzLmdldFN1YlNlY3Rpb24oc2VjQ29kZSwgc3ViQ29kZSk/LmdldEZpZWxkTmFtZXMoKSA/PyBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29kZXMgPSB0aGlzLmdldEZpZWxkTmFtZXMoKSA/PyBbXTtcbiAgICB9XG4gICAgcmV0dXJuIChmaWx0ZXIpID8gY29kZXMuZmlsdGVyKGZsZCA9PiBmaWx0ZXIodGhpcy5nZXRGaWVsZChmbGQpKSkgOiBjb2RlcztcbiAgfVxuXG4gIGFwcGx5T25GaWVsZHMocHJvY2Vzc0Z1bmMsIGlucHV0Q29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGlmICghcHJvY2Vzc0Z1bmMpIHsgcmV0dXJuIDA7IH1cbiAgICBjb25zdCBjb2RlcyA9IHRoaXMuZ2V0RmllbGRTZXQobnVsbCwgaW5wdXRDb2RlcyA/PyBudWxsLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgICBsZXQgcHJvY2Vzc2VkRmllbGRzID0gMDtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgY29kZXMpIHtcbiAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChjb2RlKTtcbiAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHByb2Nlc3NGdW5jKGZpZWxkKTtcbiAgICAgICAgICBwcm9jZXNzZWRGaWVsZHMgKz0gMTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBFcnJvciBwcm9jZXNhbmRvIGZ1bmNpb24gZW4gY2FtcG8gJHtmaWVsZH06ICR7ZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJvY2Vzc2VkRmllbGRzO1xuICB9XG5cbiAgYXBwbHlQcm9jZXNzVG9BbGxGaWVsZHMocHJvY2Vzc0Z1bmMpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseU9uRmllbGRzKHByb2Nlc3NGdW5jKTtcbiAgfVxuXG4gIGVuYWJsZUZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5lbmFibGUoKSwgY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgc2hvd0ZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5zaG93KCksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGhpZGVGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMoZmxkID0+IGZsZD8uaGlkZSgpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBzaG93TGFiZWxGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMoZmxkID0+IGZsZD8uc2hvd0xhYmxlbCgpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBoaWRlTGFiZWxGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMoZmxkID0+IGZsZD8uaGlkZUxhYmVsKCksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGRpc2FibGVGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMoZmxkID0+IGZsZD8uZGlzYWJsZSgpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBjbGVhbkZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5jbGVhbigpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICB0YWdGaWVsZHNXaXRoRXJyb3IobWVzc2FnZTogc3RyaW5nLCBjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5zZXRFcnJvck1lc3NhZ2UobWVzc2FnZSksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGNsZWFuRXJyb3JGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRhZ0ZpZWxkc1dpdGhFcnJvcignJywgY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgdGFnRW1wdHlSZXF1aXJlZEZpZWxkcyhtZXNzYWdlOiBzdHJpbmcsIGNvZGVzID0gbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRhZ0ZpZWxkc1dpdGhFcnJvcihtZXNzYWdlLCB0aGlzLmdldFJlcXVpcmVkRW1wdHlGaWVsZHMoY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpKSA+IDA7XG4gIH1cblxuICBnZXRSZXF1aXJlZEZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gZmxkPy5yZXF1aXJlZCwgY29kZXMgPz8gbnVsbCwgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBnZXRSZXF1aXJlZEVtcHR5RmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nLCBvbmx5VmlzaWJsZT86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgaWYgKG9ubHlWaXNpYmxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gZmxkPy5yZXF1aXJlZCAmJiBmbGQ/LnZpc2libGUgJiYgZmxkPy5lbXB0eSwgY29kZXMgPz8gbnVsbCwgc2VjQ29kZSwgc3ViQ29kZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiBmbGQ/LnJlcXVpcmVkICYmIGZsZD8uZW1wdHksIGNvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgZ2V0Q2hhbmdlZEZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gIWZsZD8ub3V0cHV0T25seSAmJiBmbGQ/Lmhhc0NoYW5nZWQsIGNvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgZ2V0RmllbGRzV2l0aFZhbGlkYXRpb25Jc3N1ZXMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcsIG9ubHlWaXNpYmxlPzogYm9vbGVhbik6IHN0cmluZ1tdIHtcbiAgICBpZiAob25seVZpc2libGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiAoZmxkPy5oYXNFcnJvcigpICYmIGZsZD8udmlzaWJsZSksIGNvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gZmxkPy5oYXNFcnJvcigpLCBjb2RlcyA/PyBudWxsLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGdldEZpZWxkc1ZhbHVlcyhpbnB1dENvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCBjb2RlcyA9IHRoaXMuZ2V0RmllbGRTZXQobnVsbCwgaW5wdXRDb2RlcyA/PyBudWxsLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgICBjb25zdCByZXN1bHRPYmplY3QgPSB7fTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY29kZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBjb2RlID0gY29kZXNbaW5kZXhdO1xuICAgICAgaWYgKGNvZGUpIHtcbiAgICAgICAgcmVzdWx0T2JqZWN0W2NvZGVdID0gdGhpcy5maWVsZHM/Lltjb2RlXT8uZ2V0VmFsdWUoKSA/PyBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0T2JqZWN0O1xuICB9XG5cbiAgLy8gQWNjaW9uZXNcbiAgZ2V0QWN0aW9ucygpOiBGb3JtQWN0aW9uW10geyByZXR1cm4gdGhpcy5hY3Rpb25BcnJheTsgfVxuICBnZXRBY3Rpb24oY29kZTogc3RyaW5nKTogRm9ybUFjdGlvbiB7IHJldHVybiAoY29kZSAmJiB0aGlzLmFjdGlvbnM/Lltjb2RlXSkgPyB0aGlzLmFjdGlvbnNbY29kZV0gOiBudWxsOyB9XG4gIHNob3dBY3Rpb25zKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25BY3Rpb25zKGNvZGVzLCBTSE9XKTsgfVxuICBoaWRlQWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uQWN0aW9ucyhjb2RlcywgSElERSk7IH1cbiAgZW5hYmxlQWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uQWN0aW9ucyhjb2RlcywgRU5BQkxFKTsgfVxuICBkaXNhYmxlQWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uQWN0aW9ucyhjb2RlcywgRElTQUJMRSk7IH1cbiAgZW5hYmxlQWN0aW9uKGNvZGU6IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5lbmFibGVBY3Rpb25zKGNvZGUpOyB9XG4gIGRpc2FibGVBY3Rpb24oY29kZTogc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmRpc2FibGVBY3Rpb25zKGNvZGUpOyB9XG4gIHNob3dBY3Rpb24oY29kZTogc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLnNob3dBY3Rpb25zKGNvZGUpOyB9XG4gIGhpZGVBY3Rpb24oY29kZTogc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmhpZGVBY3Rpb25zKGNvZGUpOyB9XG4gIGdldEhlYWRlckFjdGlvbnMoKSB7IHJldHVybiB0aGlzLmdldEFjdGlvbnNCeUF0dHJpYnV0ZSgnbG9jYXRpb24nLCBIRUFERVIpOyB9XG5cbiAgZ2V0QWN0aW9uc0J5QXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWUpOiBGb3JtQWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmFjdGlvbkFycmF5LmZpbHRlcihhY3Rpb25JdGVtID0+IGFjdGlvbkl0ZW0ubWF0Y2hBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKTtcbiAgfVxuXG4gIGV4ZWNPbkFjdGlvbnMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgZnVuY3Rpb25OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBhY3Rpb25Db2RlcyA9IChBcnJheS5pc0FycmF5KGNvZGVzKSkgPyBjb2RlcyA6IChjb2RlcyA/IFtjb2Rlc10gOiBbXSk7XG4gICAgaWYgKCFmdW5jdGlvbk5hbWUgfHwgYWN0aW9uQ29kZXMubGVuZ3RoID09PSAwKSB7IHJldHVybjsgfVxuICAgIGFjdGlvbkNvZGVzLmZvckVhY2goY29kZSA9PiB7XG4gICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmdldEFjdGlvbihjb2RlKTtcbiAgICAgIGFjdGlvbj8uW2Z1bmN0aW9uTmFtZV0/LigpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gVGFibGFzXG4gIGdldFRhYmxlcygpOiBSZWNvcmRUYWJsZVtdIHsgcmV0dXJuIHRoaXMudGFibGVBcnJheTsgfVxuICBnZXRUYWJsZShjb2RlOiBzdHJpbmcpOiBSZWNvcmRUYWJsZSB7IHJldHVybiAoY29kZSAmJiB0aGlzLnRhYmxlcz8uW2NvZGVdKSA/IHRoaXMudGFibGVzW2NvZGVdIDogbnVsbDsgfVxuICBnZXRUYWJsZVJlY29yZChjb2RlOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBUYWJsZVJlY29yZERhdGEgeyByZXR1cm4gdGhpcy5nZXRUYWJsZShjb2RlKT8uZ2V0VGFibGVSZWNvcmQoaWQpIH1cbiAgZW5hYmxlVGFibGVzKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25UYWJsZXMoY29kZXMsIEVOQUJMRSk7IH1cbiAgZGlzYWJsZVRhYmxlcyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uVGFibGVzKGNvZGVzLCBESVNBQkxFKTsgfVxuICBzaG93VGFibGVzKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25UYWJsZXMoY29kZXMsIFNIT1cpOyB9XG4gIGhpZGVUYWJsZXMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPblRhYmxlcyhjb2RlcywgSElERSk7IH1cbiAgY2xlYW5UYWJsZXMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPblRhYmxlcyhjb2RlcywgQ0xFQU4pOyB9XG4gIHNob3dUYWJsZShjb2RlOiBzdHJpbmcpIHsgcmV0dXJuIHRoaXMuc2hvd1RhYmxlcyhjb2RlKTsgfVxuICBoaWRlVGFibGUoY29kZTogc3RyaW5nKSB7IHJldHVybiB0aGlzLmhpZGVUYWJsZXMoY29kZSk7IH1cbiAgY2xlYW5UYWJsZShjb2RlOiBzdHJpbmcpIHsgcmV0dXJuIHRoaXMuZ2V0VGFibGUoY29kZSk/LmNsZWFuKCk7IH1cblxuICBleGVjT25UYWJsZXMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgZnVuY3Rpb25OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0YWJsZUNvZGVzID0gKEFycmF5LmlzQXJyYXkoY29kZXMpKSA/IGNvZGVzIDogKGNvZGVzID8gW2NvZGVzXSA6IFtdKTtcbiAgICBpZiAoIWZ1bmN0aW9uTmFtZSB8fCB0YWJsZUNvZGVzLmxlbmd0aCA9PT0gMCkgeyByZXR1cm47IH1cbiAgICB0YWJsZUNvZGVzLmZvckVhY2goY29kZSA9PiB7XG4gICAgICBjb25zdCB0YWJsZSA9IHRoaXMuZ2V0VGFibGUoY29kZSk7XG4gICAgICB0YWJsZT8uW2Z1bmN0aW9uTmFtZV0/LigpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gU2VjY2lvbmVzXG4gIGdldFNlY3Rpb25zKCk6IFJlY29yZEZvcm1TZWN0aW9uW10geyByZXR1cm4gdGhpcy5zZWN0aW9uQXJyYXk7IH1cbiAgZ2V0U2VjdGlvbnNUaXRsZXMoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5nZXRTZWN0aW9ucygpPy5maWx0ZXIoc2VjID0+IHNlYz8udGl0bGUpLm1hcChzZWMgPT4gc2VjPy50aXRsZSA/PyAnJyk7IH1cbiAgbnVtU2VjdGlvbnMoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuc2VjdGlvbkFycmF5Lmxlbmd0aDsgfVxuICBnZXRTZWN0aW9uc0J5QXR0cmlidXRlKG5hbWUsIHZhbHVlKTogUmVjb3JkRm9ybVNlY3Rpb25bXSB7IHJldHVybiB0aGlzLnNlY3Rpb25BcnJheS5maWx0ZXIoaXRlbSA9PiBpdGVtLm1hdGNoQXR0cmlidXRlKG5hbWUsIHZhbHVlKSk7IH1cbiAgZ2V0IHNlY3Rpb25UaXRsZXMoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5nZXRTZWN0aW9uc1RpdGxlcygpOyB9XG4gIGdldCB2aXNpYmxlU2VjdGlvbnMoKTogUmVjb3JkRm9ybVNlY3Rpb25bXSB7IHJldHVybiB0aGlzLnNlY3Rpb25BcnJheS5maWx0ZXIoc2VjID0+IHNlYy5hYnNvbHV0ZVZpc2libGUpOyB9XG4gIGdldFNlY3Rpb24oY29kZTogc3RyaW5nKTogUmVjb3JkRm9ybVNlY3Rpb24geyByZXR1cm4gKGNvZGUgJiYgdGhpcy5zZWN0aW9ucz8uW2NvZGVdKSA/IHRoaXMuc2VjdGlvbnNbY29kZV0gOiBudWxsOyB9XG4gIHNob3dTZWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgdGhpcy5leGVjT25TZWN0aW9ucyhjb2RlcywgU0hPVyk7IH1cbiAgaGlkZVNlY3Rpb25zKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyB0aGlzLmV4ZWNPblNlY3Rpb25zKGNvZGVzLCBISURFKTsgfVxuICBzaG93U2VjdGlvbihjb2RlOiBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuc2hvd1NlY3Rpb25zKGNvZGUpOyB9XG4gIGhpZGVTZWN0aW9uKGNvZGU6IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5oaWRlU2VjdGlvbnMoY29kZSk7IH1cbiAgYWN0aXZlU2VjdGlvbigpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fZXhjbHVzaXZlU2VjdGlvbnNCeUF0dHJbQUNUSVZFXTsgfVxuICBnZXRTdWJTZWN0aW9uKGNvZGU6IHN0cmluZywgc3ViQ29kZSk6IFJlY29yZEZvcm1TdWJTZWN0aW9uIHsgcmV0dXJuIHRoaXMuZ2V0U2VjdGlvbihjb2RlKT8uZ2V0U3Vic2VjdGlvbihzdWJDb2RlKSA/PyBudWxsOyB9XG4gIHNob3dTdWJTZWN0aW9ucyhjb2RlOiBzdHJpbmcsIHN1YkNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25TdWJTZWN0aW9ucyhjb2RlLCBzdWJDb2RlcywgU0hPVyk7IH1cbiAgc2hvd1N1YlNlY3Rpb24oY29kZTogc3RyaW5nLCBzdWJDb2RlOiBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuc2hvd1N1YlNlY3Rpb25zKGNvZGUsIHN1YkNvZGUpOyB9XG4gIGhpZGVTdWJTZWN0aW9uKGNvZGU6IHN0cmluZywgc3ViQ29kZTogc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmhpZGVTdWJTZWN0aW9ucyhjb2RlLCBzdWJDb2RlKTsgfVxuICBoaWRlU3ViU2VjdGlvbnMoY29kZTogc3RyaW5nLCBzdWJDb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uU3ViU2VjdGlvbnMoY29kZSwgc3ViQ29kZXMsIEhJREUpOyB9XG4gIGdldFNlY3Rpb25BY3Rpb25zKGNvZGUpOiBGb3JtQWN0aW9uW10geyByZXR1cm4gdGhpcy5nZXRTZWN0aW9uKGNvZGUpPy5nZXRBY3Rpb25zKCkgPz8gbnVsbDsgfVxuICBnZXRTZWN0aW9uQWN0aW9uTmFtZXMoY29kZSk6IHN0cmluZ1tdIHsgcmV0dXJuIHRoaXMuZ2V0U2VjdGlvbihjb2RlKT8uZ2V0QWN0aW9uTmFtZXMoKSA/PyBudWxsOyB9XG5cbiAgYWN0aXZhdGVTZWN0aW9uKGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChjb2RlID09PSB0aGlzLl9leGNsdXNpdmVTZWN0aW9uc0J5QXR0cltBQ1RJVkVdKSB7IHJldHVybjsgfVxuICAgIHRoaXMuZ2V0U2VjdGlvbih0aGlzLmFjdGl2ZVNlY3Rpb24oKSk/LmluYWN0aXZhdGUoKTtcbiAgICB0aGlzLmdldFNlY3Rpb24oY29kZSk/LmFjdGl2YXRlKCk7XG4gICAgdGhpcy5fZXhjbHVzaXZlU2VjdGlvbnNCeUF0dHJbQUNUSVZFXSA9IGNvZGU7XG4gIH1cblxuICBleGVjT25TZWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBmdW5jdGlvbk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHNlY3Rpb25Db2RlcyA9IChBcnJheS5pc0FycmF5KGNvZGVzKSkgPyBjb2RlcyA6IChjb2RlcyA/IFtjb2Rlc10gOiBbXSk7XG4gICAgaWYgKCFmdW5jdGlvbk5hbWUgfHwgc2VjdGlvbkNvZGVzLmxlbmd0aCA9PT0gMCkgeyByZXR1cm47IH1cbiAgICBzZWN0aW9uQ29kZXMuZm9yRWFjaChjb2RlID0+IHtcbiAgICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLmdldFNlY3Rpb24oY29kZSk7XG4gICAgICBzZWN0aW9uPy5bZnVuY3Rpb25OYW1lXT8uKCk7XG4gICAgfSk7XG4gIH1cblxuICBleGVjT25TdWJTZWN0aW9ucyhjb2RlOiBzdHJpbmcsIHN1Yk5hbWVzOiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIGZ1bmN0aW9uTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc3ViQ29kZXMgPSAoQXJyYXkuaXNBcnJheShzdWJOYW1lcykpID8gc3ViTmFtZXMgOiAoc3ViTmFtZXMgPyBbc3ViTmFtZXNdIDogW10pO1xuICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLmdldFNlY3Rpb24oY29kZSk7XG4gICAgaWYgKCFmdW5jdGlvbk5hbWUgfHwgIXNlY3Rpb24gfHwgc3ViQ29kZXMubGVuZ3RoID09PSAwKSB7IHJldHVybjsgfVxuICAgIGZvciAoY29uc3Qgc3ViQ29kZSBvZiBzdWJDb2Rlcykge1xuICAgICAgY29uc3Qgc3ViU2VjdGlvbiA9IHRoaXMuZ2V0U3ViU2VjdGlvbihjb2RlLCBzdWJDb2RlKTtcbiAgICAgIHN1YlNlY3Rpb24/LltmdW5jdGlvbk5hbWVdPy4oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kb3MgcHJvcGlvcyBkZSBnZXN0acOzbiBkZWwgZm9ybXVsYXJpb1xuICAgKi9cblxuICBjbGVhbkRhdGEoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiB0aGlzLmZpZWxkQXJyYXkpIHtcbiAgICAgIGZpZWxkLnNldFZhbHVlKGZpZWxkLmRlZmF1bHRWYWx1ZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGhpcy50YWJsZUFycmF5KSB7XG4gICAgICB0YWJsZS5jbGVhbigpO1xuICAgIH1cbiAgfVxuXG4gIGdldFBheWxvYWQoKTogYW55IHtcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybVBheWxvYWQgPSB7IGZpZWxkczogW10sIHRhYmxlczogW10gfTtcbiAgICBmb3JtRGF0YS5maWVsZHMgPSB0aGlzLmdldEZpZWxkcygpLmZpbHRlcihmbGQgPT4gIWZsZD8ub3V0cHV0T25seSlcbiAgICAgIC5tYXAoZmxkID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRQYXlsb2FkOiBGaWVsZFBheWxvYWQgPSB7XG4gICAgICAgICAgZmllbGRDb2RlOiBmbGQ/LmNvZGUsXG4gICAgICAgICAgZmllbGRWYWx1ZTogZmxkPy52YWx1ZSxcbiAgICAgICAgICBlZGl0YWJsZTogIWZsZD8uYWJzb2x1dGVEaXNhYmxlZCxcbiAgICAgICAgICB2aXNpYmxlOiBmbGQ/LmFic29sdXRlVmlzaWJsZSxcbiAgICAgICAgICByZXF1aXJlZDogZmxkPy5yZXF1aXJlZCxcbiAgICAgICAgICBmaWVsZE9wdGlvbnM6ICcnLFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWVsZFBheWxvYWQ7XG4gICAgICB9KTtcblxuICAgIGZvcm1EYXRhLnRhYmxlcyA9IHRoaXMuZ2V0VGFibGVzKCkubWFwKHRibCA9PiB7XG4gICAgICBjb25zdCB0YWJsZVBheWxvYWQ6IFRhYmxlUGF5bG9hZCA9IHtcbiAgICAgICAgdGFibGVDb2RlOiB0YmwudGFibGVDb2RlLFxuICAgICAgICB2aXNpYmxlOiB0YmwuYWJzb2x1dGVWaXNpYmxlLFxuICAgICAgICBjdXJyZW50UGFnZTogdGJsLmN1cnJlbnRQYWdlLFxuICAgICAgICByZXF1ZXN0ZWRQYWdlOiB0YmwucmVxdWVzdGVkUGFnZSxcbiAgICAgICAgcmVjb3Jkc1BlclBhZ2U6IHRibC5yZWNvcmRzUGVyUGFnZSxcbiAgICAgICAgY3VycmVudEZpbHRlcjogdGJsLmN1cnJlbnRGaWx0ZXIsXG4gICAgICAgIHNvcnRpbmdDb2x1bW46IHRibC5zb3J0aW5nLmNvbHVtbk5hbWUsXG4gICAgICAgIHNvcnRpbmdEaXJlY3Rpb246IHRibC5zb3J0aW5nLmRpcmVjdGlvbixcbiAgICAgIH07XG4gICAgICByZXR1cm4gdGFibGVQYXlsb2FkXG4gICAgfSlcbiAgICByZXR1cm4gZm9ybURhdGE7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHN1YmplY3RcbiAgICovXG4gIGdldCBmb3JtU3ViamVjdCgpIHsgcmV0dXJuIHRoaXMuc3ViamVjdDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugc3ViamVjdFxuICAgKi9cbiAgc2V0IGZvcm1TdWJqZWN0KHN1YmplY3QpIHsgdGhpcy5zdWJqZWN0ID0gc3ViamVjdDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugc3RhdGVzXG4gICAqL1xuICBnZXRTdGF0ZXMoKSB7IHJldHVybiB0aGlzLnN0YXRlczsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugc3RhdGVcbiAgICovXG4gIGdldEN1cnJlbnRTdGF0ZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5zdGF0ZTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGl0bGVcbiAgICovXG4gIGdldFRpdGxlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnRpdGxlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB0aXRsZVxuICAgKi9cbiAgc2V0VGl0bGUodGl0bGU6IHN0cmluZyk6IHZvaWQgeyB0aGlzLnRpdGxlID0gdGl0bGU7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHN1cHBvcnRTdGF0ZVxuICAgKi9cbiAgc3VwcG9ydE1vZGUoc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5zdXBwb3J0U3RhdGUoc3RhdGUpOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBlbmFibGVGaWVsZHNcbiAgICovXG4gIGVuYWJsZUVkaXRGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVGaWVsZHMoY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZGlzYWJsZUZpZWxkc1xuICAgKi9cbiAgZGlzYWJsZUVkaXRGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlRmllbGRzKGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZ2V0RmllbGRcbiAgICovXG4gIGdldEZpZWxkT2JqZWN0KGNvZGU6IHN0cmluZyk6IEZpZWxkRGVzY3JpcHRvciB8IG51bGwgeyByZXR1cm4gdGhpcy5nZXRGaWVsZChjb2RlKTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZ2V0QWN0aW9uXG4gICAqL1xuICBnZXRBY3Rpb25PYmplY3QoY29kZTogc3RyaW5nKTogRm9ybUFjdGlvbiB8IG51bGwgeyByZXR1cm4gdGhpcy5nZXRBY3Rpb24oY29kZSk7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGdldFRhYmxlXG4gICAqL1xuICBnZXRUYWJsZU9iamVjdChjb2RlOiBzdHJpbmcpOiBSZWNvcmRUYWJsZSB8IG51bGwgeyByZXR1cm4gdGhpcy5nZXRUYWJsZShjb2RlKTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZ2V0U2VjdGlvblxuICAgKi9cbiAgZ2V0U2VjdGlvbk9iamVjdChjb2RlOiBzdHJpbmcpOiBSZWNvcmRGb3JtU2VjdGlvbiB8IG51bGwgeyByZXR1cm4gdGhpcy5nZXRTZWN0aW9uKGNvZGUpOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBjaGFuZ2VTdGF0ZVxuICAgKi9cbiAgY2hhbmdlRm9ybU1vZGUoc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jaGFuZ2VTdGF0ZShzdGF0ZSk7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHN1YmplY3RcbiAgICovXG4gIGdldEZvcm1TdWJqZWN0KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnN1YmplY3Q7IH1cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBzdWJqZWN0XG4gICAqL1xuICBnZXRTdWJqZWN0KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnN1YmplY3QgPz8gJyc7IH1cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBzdWJqZWN0XG4gICAqL1xuICBnZXRmb3JtU3ViamVjdCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5zdWJqZWN0ID8/ICcnOyB9XG5cbn1cbiJdfQ==
|
|
@@ -9,7 +9,7 @@ export class FormPiecePropagate extends FormPiece {
|
|
|
9
9
|
super(pieceDefinition, formConfig);
|
|
10
10
|
this._attributeChange = new BehaviorSubject(null);
|
|
11
11
|
}
|
|
12
|
-
get attributeChange() { return this._attributeChange; }
|
|
12
|
+
get attributeChange() { return this._attributeChange.asObservable(); }
|
|
13
13
|
propagateAttribute(name, value) {
|
|
14
14
|
this._attributeChange?.next({ name, value });
|
|
15
15
|
}
|
|
@@ -36,4 +36,4 @@ export class FormPiecePropagate extends FormPiece {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGllY2UtcHJvcGFnYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY2xhc3Nlcy9mb3Jtcy9waWVjZS1wcm9wYWdhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXBDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQztBQUMxQixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFFNUIsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFNBQVM7SUFDckMsMkJBQTJCLEdBQWEsRUFBRSxDQUFDO0lBQzNDLGdCQUFnQixDQUF1QjtJQUVqRCxZQUFZLGVBQW9CLEVBQUUsVUFBZTtRQUMvQyxLQUFLLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxlQUFlLEtBQUssT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXRFLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRVEsa0JBQWtCLENBQUMsSUFBWSxFQUFFLEtBQVU7UUFDbEQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0QyxJQUFJLElBQUksQ0FBQywyQkFBMkIsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyRCxNQUFNLFFBQVEsR0FBRyxvQkFBb0IsSUFBSSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVRLGFBQWEsQ0FBQyxPQUFnQixFQUFFLFNBQXlCLElBQUk7UUFDcEUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQWEsT0FBTyxDQUFDLE9BQU87UUFDMUIsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVRLGVBQWUsQ0FBQyxLQUFLO1FBQzVCLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1QaWVjZSB9IGZyb20gJy4vcGllY2UnO1xuXG5jb25zdCBWSVNJQkxFID0gJ3Zpc2libGUnO1xuY29uc3QgRElTQUJMRUQgPSAnZGlzYWJsZWQnO1xuXG5leHBvcnQgY2xhc3MgRm9ybVBpZWNlUHJvcGFnYXRlIGV4dGVuZHMgRm9ybVBpZWNlIHtcbiAgcHJvdGVjdGVkIHByb3BhZ2F0aW9uQ3VzdG9tQXR0cmlidXRlczogc3RyaW5nW10gPSBbXTtcbiAgcHJvdGVjdGVkIF9hdHRyaWJ1dGVDaGFuZ2U6IEJlaGF2aW9yU3ViamVjdDxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKHBpZWNlRGVmaW5pdGlvbjogYW55LCBmb3JtQ29uZmlnOiBhbnkpIHtcbiAgICBzdXBlcihwaWVjZURlZmluaXRpb24sIGZvcm1Db25maWcpO1xuICAgIHRoaXMuX2F0dHJpYnV0ZUNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgfVxuXG4gIGdldCBhdHRyaWJ1dGVDaGFuZ2UoKSB7IHJldHVybiB0aGlzLl9hdHRyaWJ1dGVDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7IH1cblxuICBwcm9wYWdhdGVBdHRyaWJ1dGUobmFtZSwgdmFsdWUpIHtcbiAgICB0aGlzLl9hdHRyaWJ1dGVDaGFuZ2U/Lm5leHQoeyBuYW1lLCB2YWx1ZSB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIHNldEN1c3RvbUF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBzdXBlci5zZXRDdXN0b21BdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgIGlmICh0aGlzLnByb3BhZ2F0aW9uQ3VzdG9tQXR0cmlidXRlcz8uaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgIGNvbnN0IGZ1bGxOYW1lID0gYGN1c3RvbUF0dHJpYnV0ZXMuJHtuYW1lfWA7XG4gICAgICB0aGlzLnByb3BhZ2F0ZUF0dHJpYnV0ZShmdWxsTmFtZSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIHNldFZpc2liaWxpdHkodmlzaWJsZTogYm9vbGVhbiwgZm9yY2VkOiBib29sZWFuIHwgbnVsbCA9IG51bGwpOiB2b2lkIHtcbiAgICBzdXBlci5zZXRWaXNpYmlsaXR5KHZpc2libGUsIGZvcmNlZCk7XG4gICAgdGhpcy5wcm9wYWdhdGVBdHRyaWJ1dGUoVklTSUJMRSwgdGhpcy5fdmlzaWJsZSk7XG4gIH1cblxuICBvdmVycmlkZSBzZXQgZW5hYmxlZChlbmFibGVkKSB7XG4gICAgc3VwZXIuZW5hYmxlZCA9IGVuYWJsZWQ7XG4gICAgdGhpcy5wcm9wYWdhdGVBdHRyaWJ1dGUoRElTQUJMRUQsIHRoaXMuX2Rpc2FibGVkKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGZvcm1TdGF0ZUNoYW5nZShzdGF0ZSkge1xuICAgIHN1cGVyLmZvcm1TdGF0ZUNoYW5nZShzdGF0ZSk7XG4gICAgaWYgKHN0YXRlKSB7XG4gICAgICB0aGlzLnByb3BhZ2F0ZUF0dHJpYnV0ZShWSVNJQkxFLCB0aGlzLl92aXNpYmxlKTtcbiAgICAgIHRoaXMucHJvcGFnYXRlQXR0cmlidXRlKERJU0FCTEVELCB0aGlzLl9kaXNhYmxlZCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
1
2
|
export class FormPiece {
|
|
3
|
+
destroy$ = new Subject();
|
|
2
4
|
_formState = '';
|
|
3
5
|
_visibleForced;
|
|
4
6
|
_isForced;
|
|
@@ -118,9 +120,15 @@ export class FormPiece {
|
|
|
118
120
|
connectWithParentForm(form, formChangeSubject) {
|
|
119
121
|
this._form = form;
|
|
120
122
|
this.formStateChangeCustomSubscribe(form, formChangeSubject);
|
|
121
|
-
formChangeSubject
|
|
123
|
+
formChangeSubject
|
|
124
|
+
.pipe(takeUntil(this.destroy$))
|
|
125
|
+
.subscribe(event => this.formStateChange(event?.state));
|
|
122
126
|
}
|
|
123
127
|
set widget(widget) { this._widget = widget; }
|
|
124
128
|
get widget() { return this._widget; }
|
|
129
|
+
destroy() {
|
|
130
|
+
this.destroy$.next();
|
|
131
|
+
this.destroy$.complete();
|
|
132
|
+
}
|
|
125
133
|
}
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGllY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL3BpZWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxTQUFTO0lBQ1YsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUN4QixjQUFjLENBQVU7SUFDeEIsU0FBUyxDQUFVO0lBQ25CLGdCQUFnQixHQUFZLElBQUksQ0FBQztJQUNqQyxpQkFBaUIsR0FBWSxLQUFLLENBQUM7SUFDbkMsT0FBTyxHQUFRLElBQUksQ0FBQztJQUVwQixhQUFhLEdBQWEsRUFBRSxDQUFDO0lBQzdCLGFBQWEsR0FBYSxFQUFFLENBQUM7SUFFaEMsS0FBSyxHQUFRLElBQUksQ0FBQztJQUNsQixXQUFXLENBQU07SUFDakIsUUFBUSxHQUFZLElBQUksQ0FBQztJQUN6QixTQUFTLEdBQVksS0FBSyxDQUFDO0lBQzNCLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztJQUVsQyxZQUFZLGVBQW9CLEVBQUUsVUFBZTtRQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLGVBQWUsRUFBRSxRQUFRLElBQUksS0FBSyxDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxFQUFFLGdCQUFn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LENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLElBQUksRUFBRSxpQkFBaUI7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzdELGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDN0MsSUFBSSxNQUFNLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztDQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBGb3JtUGllY2Uge1xuICBwcm90ZWN0ZWQgX2Zvcm1TdGF0ZTogc3RyaW5nID0gJyc7XG4gIHByb3RlY3RlZCBfdmlzaWJsZUZvcmNlZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIF9pc0ZvcmNlZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIF9hYnNvbHV0ZVZpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xuICBwcm90ZWN0ZWQgX2Fic29sdXRlRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF93aWRnZXQ6IGFueSA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIHZpc2libGVTdGF0ZXM6IHN0cmluZ1tdID0gW107XG4gIHByb3RlY3RlZCBlbmFibGVkU3RhdGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHB1YmxpYyBfZm9ybTogYW55ID0gbnVsbDtcbiAgcHVibGljIF9mb3JtQ29uZmlnOiBhbnk7XG4gIHB1YmxpYyBfdmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGN1c3RvbUF0dHJpYnV0ZXM6IGFueSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHBpZWNlRGVmaW5pdGlvbjogYW55LCBmb3JtQ29uZmlnOiBhbnkpIHtcbiAgICB0aGlzLl9mb3JtQ29uZmlnID0gZm9ybUNvbmZpZztcbiAgICB0aGlzLl9pc0ZvcmNlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3Zpc2libGVGb3JjZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNldFZpc2libGVTdGF0ZXMocGllY2VEZWZpbml0aW9uLnZpc2libGVTdGF0ZXMpO1xuICAgIHRoaXMuc2V0RW5hYmxlZFN0YXRlcyhwaWVjZURlZmluaXRpb24uZW5hYmxlZFN0YXRlcyk7XG5cbiAgICB0aGlzLmVuYWJsZWQgPSAhcGllY2VEZWZpbml0aW9uPy5kaXNhYmxlZCA/PyBmYWxzZTtcbiAgICB0aGlzLnNldFZpc2liaWxpdHkocGllY2VEZWZpbml0aW9uPy52aXNpYmxlID8/IHRydWUpO1xuICAgIHRoaXMuY3VzdG9tQXR0cmlidXRlcyA9IHBpZWNlRGVmaW5pdGlvbj8uY3VzdG9tQXR0cmlidXRlcyA/PyB7fTtcbiAgICBpZiAocGllY2VEZWZpbml0aW9uPy5jdXN0b21BdHRyaWJ1dGVzKSB7XG4gICAgICBPYmplY3Qua2V5cyhwaWVjZURlZmluaXRpb24/LmN1c3RvbUF0dHJpYnV0ZXMpXG4gICAgICAgID8uZm9yRWFjaChhdHRyID0+IHRoaXMuY3VzdG9tQXR0cmlidXRlc1thdHRyXSA9IHBpZWNlRGVmaW5pdGlvbj8uY3VzdG9tQXR0cmlidXRlc1thdHRyXSlcbiAgICB9XG4gIH1cblxuICBnZXRDdXN0b21BdHRyaWJ1dGUobmFtZTogc3RyaW5nKTogYW55IHsgcmV0dXJuIHRoaXMuY3VzdG9tQXR0cmlidXRlcz8uW25hbWVdID8/IG51bGw7IH1cbiAgc2V0Q3VzdG9tQXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQgeyBpZiAobmFtZSkgeyB0aGlzLmN1c3RvbUF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZTsgfSB9XG5cbiAgc2V0Q3VzdG9tQXR0cmlidXRlcyhhdHRyaWJ1dGVzOiBhbnkpOiBGb3JtUGllY2Uge1xuICAgIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpLmZvckVhY2goKFtuYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgIHRoaXMuc2V0Q3VzdG9tQXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG1hdGNoQXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jdXN0b21BdHRyaWJ1dGVzPy5bbmFtZV0gPT09IHZhbHVlOyB9XG5cbiAgc2V0VmlzaWJsZVN0YXRlcyhuZXdTdGF0ZXM6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHZpc2libGVTdGF0ZXMgPSAoIUFycmF5LmlzQXJyYXkobmV3U3RhdGVzKSAmJiB0eXBlb2YgbmV3U3RhdGVzID09PSAnc3RyaW5nJylcbiAgICAgID8gbmV3U3RhdGVzLnNwbGl0KCcsJykubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSkuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApXG4gICAgICA6IG5ld1N0YXRlcztcbiAgICB0aGlzLnZpc2libGVTdGF0ZXMgPSAoQXJyYXkuaXNBcnJheSh2aXNpYmxlU3RhdGVzKSkgPyBbLi4uKG5ldyBTZXQodmlzaWJsZVN0YXRlcykpXSA6IFtdO1xuICB9XG5cbiAgYWRkVmlzaWJsZVN0YXRlKHN0YXRlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMudmlzaWJsZVN0YXRlcy5pbmNsdWRlcyhzdGF0ZSkpIHtcbiAgICAgIHRoaXMudmlzaWJsZVN0YXRlcy5wdXNoKHN0YXRlKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVWaXNpYmxlU3RhdGUoc3RhdGU6IHN0cmluZykge1xuICAgIGNvbnN0IGV4aXN0U3RhdGVJZHggPSB0aGlzLnZpc2libGVTdGF0ZXMuZmluZEluZGV4KHN0ID0+IHN0ID09PSBzdGF0ZSk7XG4gICAgaWYgKGV4aXN0U3RhdGVJZHggPj0gMCkge1xuICAgICAgdGhpcy52aXNpYmxlU3RhdGVzLnNwbGljZShleGlzdFN0YXRlSWR4LCAxKTtcbiAgICB9XG4gIH1cblxuICBzZXRFbmFibGVkU3RhdGVzKG5ld1N0YXRlczogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZW5hYmxlZFN0YXRlcyA9ICghQXJyYXkuaXNBcnJheShuZXdTdGF0ZXMpICYmIHR5cGVvZiBuZXdTdGF0ZXMgPT09ICdzdHJpbmcnKVxuICAgICAgPyBuZXdTdGF0ZXMuc3BsaXQoJywnKS5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKS5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMClcbiAgICAgIDogbmV3U3RhdGVzO1xuICAgIHRoaXMuZW5hYmxlZFN0YXRlcyA9IChBcnJheS5pc0FycmF5KGVuYWJsZWRTdGF0ZXMpKSA/IFsuLi4obmV3IFNldChlbmFibGVkU3RhdGVzKSldIDogW107XG4gIH1cblxuICBhZGRFbmFibGVkU3RhdGUoc3RhdGU6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5lbmFibGVkU3RhdGVzLmluY2x1ZGVzKHN0YXRlKSkge1xuICAgICAgdGhpcy5lbmFibGVkU3RhdGVzLnB1c2goc3RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUVuYWJsZWRTdGF0ZShzdGF0ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZXhpc3RTdGF0ZUlkeCA9IHRoaXMuZW5hYmxlZFN0YXRlcy5maW5kSW5kZXgoc3QgPT4gc3QgPT09IHN0YXRlKTtcbiAgICBpZiAoZXhpc3RTdGF0ZUlkeCA+PSAwKSB7XG4gICAgICB0aGlzLmVuYWJsZWRTdGF0ZXMuc3BsaWNlKGV4aXN0U3RhdGVJZHgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIHZpZXdPblN0YXRlKHN0YXRlOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuICh0aGlzLnZpc2libGVTdGF0ZXMgJiYgc3RhdGUpID8gdGhpcy52aXNpYmxlU3RhdGVzLmluY2x1ZGVzKHN0YXRlKSA6IGZhbHNlOyB9XG4gIGVuYWJsZWRPblN0YXRlKHN0YXRlOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuICh0aGlzLmVuYWJsZWRTdGF0ZXMgJiYgc3RhdGUpID8gdGhpcy5lbmFibGVkU3RhdGVzLmluY2x1ZGVzKHN0YXRlKSA6IGZhbHNlOyB9XG5cbiAgZ2V0IGFic29sdXRlVmlzaWJsZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Fic29sdXRlVmlzaWJsZTsgfVxuICBnZXQgYWJzb2x1dGVEaXNhYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Fic29sdXRlRGlzYWJsZWQ7IH1cblxuICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3Zpc2libGU7IH1cbiAgc2V0IHZpc2libGUodmlzaWJsZTogYm9vbGVhbikgeyB0aGlzLnNldFZpc2liaWxpdHkodmlzaWJsZSk7IH1cblxuICB2aXNpYmxlT24oc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hYnNvbHV0ZVZpc2libGUgJiYgdGhpcy52aWV3T25TdGF0ZShzdGF0ZSk7XG4gIH1cblxuICBlbmFibGVkT24oc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5fYWJzb2x1dGVEaXNhYmxlZCAmJiB0aGlzLmVuYWJsZWRPblN0YXRlKHN0YXRlKTtcbiAgfVxuXG4gIHNldFZpc2liaWxpdHkodmlzaWJsZTogYm9vbGVhbiwgZm9yY2VkOiBib29sZWFuIHwgbnVsbCA9IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLl9hYnNvbHV0ZVZpc2libGUgPSAhIXZpc2libGU7XG4gICAgaWYgKGZvcmNlZCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5faXNGb3JjZWQgPSBmb3JjZWQ7XG4gICAgICB0aGlzLl92aXNpYmxlRm9yY2VkID0gdmlzaWJsZTtcbiAgICB9XG4gICAgdGhpcy5fdmlzaWJsZSA9IHRoaXMuX2Fic29sdXRlVmlzaWJsZSAmJiB0aGlzLnZpZXdPblN0YXRlKHRoaXMuX2Zvcm1TdGF0ZSk7XG4gIH1cblxuICBzaG93KGZvcmNlZDogYm9vbGVhbiB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5zZXRWaXNpYmlsaXR5KHRydWUsIGZvcmNlZCk7XG4gIH1cblxuICBoaWRlKGZvcmNlZDogYm9vbGVhbiB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5zZXRWaXNpYmlsaXR5KGZhbHNlLCBmb3JjZWQpO1xuICB9XG5cbiAgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiAhdGhpcy5fZGlzYWJsZWQ7IH1cbiAgc2V0IGVuYWJsZWQoZW5hYmxlZCkge1xuICAgIHRoaXMuX2Fic29sdXRlRGlzYWJsZWQgPSAhZW5hYmxlZDtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHRoaXMuX2Fic29sdXRlRGlzYWJsZWQgfHwgIXRoaXMuZW5hYmxlZE9uU3RhdGUodGhpcy5fZm9ybVN0YXRlKTtcbiAgfVxuXG4gIGdldCBlZGl0YWJsZSgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLl9kaXNhYmxlZDsgfVxuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOyB9XG5cbiAgc2V0IGRpc2FibGVkKGRpc2FibGVkKSB7IHRoaXMuZW5hYmxlZCA9ICFkaXNhYmxlZDsgfVxuXG4gIGVuYWJsZSgpOiB2b2lkIHsgdGhpcy5lbmFibGVkID0gdHJ1ZTsgfVxuICBkaXNhYmxlKCk6IHZvaWQgeyB0aGlzLmVuYWJsZWQgPSBmYWxzZTsgfVxuXG4gIGZvcm1TdGF0ZUNoYW5nZUN1c3RvbVN1YnNjcmliZShmb3JtLCBmb3JtQ2hhbmdlU3ViamVjdCkgeyB9XG5cbiAgZm9ybVN0YXRlQ2hhbmdlKHN0YXRlKSB7XG4gICAgaWYgKHN0YXRlKSB7XG4gICAgICB0aGlzLl9mb3JtU3RhdGUgPSBzdGF0ZTtcbiAgICAgIHRoaXMuX3Zpc2libGUgPSB0aGlzLl9hYnNvbHV0ZVZpc2libGUgJiYgdGhpcy52aWV3T25TdGF0ZShzdGF0ZSk7XG4gICAgICB0aGlzLl9kaXNhYmxlZCA9IHRoaXMuX2Fic29sdXRlRGlzYWJsZWQgfHwgIXRoaXMuZW5hYmxlZE9uU3RhdGUoc3RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbm5lY3RXaXRoUGFyZW50Rm9ybShmb3JtLCBmb3JtQ2hhbmdlU3ViamVjdCkge1xuICAgIHRoaXMuX2Zvcm0gPSBmb3JtO1xuICAgIHRoaXMuZm9ybVN0YXRlQ2hhbmdlQ3VzdG9tU3Vic2NyaWJlKGZvcm0sIGZvcm1DaGFuZ2VTdWJqZWN0KTtcbiAgICBmb3JtQ2hhbmdlU3ViamVjdC5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy5mb3JtU3RhdGVDaGFuZ2UoZXZlbnQ/LnN0YXRlKSk7XG4gIH1cblxuICBzZXQgd2lkZ2V0KHdpZGdldCkgeyB0aGlzLl93aWRnZXQgPSB3aWRnZXQ7IH1cbiAgZ2V0IHdpZGdldCgpIHsgcmV0dXJuIHRoaXMuX3dpZGdldDsgfVxufVxuIl19
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGllY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL3BpZWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE1BQU0sT0FBTyxTQUFTO0lBQ1osUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFN0IsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUN4QixjQUFjLENBQVU7SUFDeEIsU0FBUyxDQUFVO0lBQ25CLGdCQUFnQixHQUFZLElBQUksQ0FBQztJQUNqQyxpQkFBaUIsR0FBWSxLQUFLLENBQUM7SUFDbkMsT0FBTyxHQUFRLElBQUksQ0FBQztJQUVwQixhQUFhLEdBQWEsRUFBRSxDQUFDO0lBQzdCLGFBQWEsR0FBYSxFQUFFLENBQUM7SUFFaEMsS0FBSyxHQUFRLElBQUksQ0FBQztJQUNsQixXQUFXLENBQU07SUFDakIsUUFBUSxHQUFZLElBQUksQ0FBQztJQUN6QixTQUFTLEdBQVksS0FBSyxDQUFDO0lBQzNCLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztJQUVsQyxZQUFZLGVBQW9CLEVBQUUsVUFBZTtRQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLGVBQWUsRUFBRSxRQUFRLElBQUksS0FBSyxDQUFDO1FBQ25ELElBQUksQ0FBQyxh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WUFDVixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLElBQUksRUFBRSxpQkFBaUI7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzdELGlCQUFpQjthQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDN0MsSUFBSSxNQUFNLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUVyQyxPQUFPO1FBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY2xhc3MgRm9ybVBpZWNlIHtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJvdGVjdGVkIF9mb3JtU3RhdGU6IHN0cmluZyA9ICcnO1xuICBwcm90ZWN0ZWQgX3Zpc2libGVGb3JjZWQ6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfaXNGb3JjZWQ6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfYWJzb2x1dGVWaXNpYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIF9hYnNvbHV0ZURpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfd2lkZ2V0OiBhbnkgPSBudWxsO1xuXG4gIHByb3RlY3RlZCB2aXNpYmxlU3RhdGVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcm90ZWN0ZWQgZW5hYmxlZFN0YXRlczogc3RyaW5nW10gPSBbXTtcblxuICBwdWJsaWMgX2Zvcm06IGFueSA9IG51bGw7XG4gIHB1YmxpYyBfZm9ybUNvbmZpZzogYW55O1xuICBwdWJsaWMgX3Zpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBjdXN0b21BdHRyaWJ1dGVzOiBhbnkgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihwaWVjZURlZmluaXRpb246IGFueSwgZm9ybUNvbmZpZzogYW55KSB7XG4gICAgdGhpcy5fZm9ybUNvbmZpZyA9IGZvcm1Db25maWc7XG4gICAgdGhpcy5faXNGb3JjZWQgPSBmYWxzZTtcbiAgICB0aGlzLl92aXNpYmxlRm9yY2VkID0gZmFsc2U7XG4gICAgdGhpcy5zZXRWaXNpYmxlU3RhdGVzKHBpZWNlRGVmaW5pdGlvbi52aXNpYmxlU3RhdGVzKTtcbiAgICB0aGlzLnNldEVuYWJsZWRTdGF0ZXMocGllY2VEZWZpbml0aW9uLmVuYWJsZWRTdGF0ZXMpO1xuXG4gICAgdGhpcy5lbmFibGVkID0gIXBpZWNlRGVmaW5pdGlvbj8uZGlzYWJsZWQgPz8gZmFsc2U7XG4gICAgdGhpcy5zZXRWaXNpYmlsaXR5KHBpZWNlRGVmaW5pdGlvbj8udmlzaWJsZSA/PyB0cnVlKTtcbiAgICB0aGlzLmN1c3RvbUF0dHJpYnV0ZXMgPSBwaWVjZURlZmluaXRpb24/LmN1c3RvbUF0dHJpYnV0ZXMgPz8ge307XG4gICAgaWYgKHBpZWNlRGVmaW5pdGlvbj8uY3VzdG9tQXR0cmlidXRlcykge1xuICAgICAgT2JqZWN0LmtleXMocGllY2VEZWZpbml0aW9uPy5jdXN0b21BdHRyaWJ1dGVzKVxuICAgICAgICA/LmZvckVhY2goYXR0ciA9PiB0aGlzLmN1c3RvbUF0dHJpYnV0ZXNbYXR0cl0gPSBwaWVjZURlZmluaXRpb24/LmN1c3RvbUF0dHJpYnV0ZXNbYXR0cl0pXG4gICAgfVxuICB9XG5cbiAgZ2V0Q3VzdG9tQXR0cmlidXRlKG5hbWU6IHN0cmluZyk6IGFueSB7IHJldHVybiB0aGlzLmN1c3RvbUF0dHJpYnV0ZXM/LltuYW1lXSA/PyBudWxsOyB9XG4gIHNldEN1c3RvbUF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHsgaWYgKG5hbWUpIHsgdGhpcy5jdXN0b21BdHRyaWJ1dGVzW25hbWVdID0gdmFsdWU7IH0gfVxuXG4gIHNldEN1c3RvbUF0dHJpYnV0ZXMoYXR0cmlidXRlczogYW55KTogRm9ybVBpZWNlIHtcbiAgICBPYmplY3QuZW50cmllcyhhdHRyaWJ1dGVzKS5mb3JFYWNoKChbbmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICB0aGlzLnNldEN1c3RvbUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtYXRjaEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY3VzdG9tQXR0cmlidXRlcz8uW25hbWVdID09PSB2YWx1ZTsgfVxuXG4gIHNldFZpc2libGVTdGF0ZXMobmV3U3RhdGVzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB2aXNpYmxlU3RhdGVzID0gKCFBcnJheS5pc0FycmF5KG5ld1N0YXRlcykgJiYgdHlwZW9mIG5ld1N0YXRlcyA9PT0gJ3N0cmluZycpXG4gICAgICA/IG5ld1N0YXRlcy5zcGxpdCgnLCcpLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKVxuICAgICAgOiBuZXdTdGF0ZXM7XG4gICAgdGhpcy52aXNpYmxlU3RhdGVzID0gKEFycmF5LmlzQXJyYXkodmlzaWJsZVN0YXRlcykpID8gWy4uLihuZXcgU2V0KHZpc2libGVTdGF0ZXMpKV0gOiBbXTtcbiAgfVxuXG4gIGFkZFZpc2libGVTdGF0ZShzdGF0ZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnZpc2libGVTdGF0ZXMuaW5jbHVkZXMoc3RhdGUpKSB7XG4gICAgICB0aGlzLnZpc2libGVTdGF0ZXMucHVzaChzdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlVmlzaWJsZVN0YXRlKHN0YXRlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBleGlzdFN0YXRlSWR4ID0gdGhpcy52aXNpYmxlU3RhdGVzLmZpbmRJbmRleChzdCA9PiBzdCA9PT0gc3RhdGUpO1xuICAgIGlmIChleGlzdFN0YXRlSWR4ID49IDApIHtcbiAgICAgIHRoaXMudmlzaWJsZVN0YXRlcy5zcGxpY2UoZXhpc3RTdGF0ZUlkeCwgMSk7XG4gICAgfVxuICB9XG5cbiAgc2V0RW5hYmxlZFN0YXRlcyhuZXdTdGF0ZXM6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRTdGF0ZXMgPSAoIUFycmF5LmlzQXJyYXkobmV3U3RhdGVzKSAmJiB0eXBlb2YgbmV3U3RhdGVzID09PSAnc3RyaW5nJylcbiAgICAgID8gbmV3U3RhdGVzLnNwbGl0KCcsJykubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSkuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApXG4gICAgICA6IG5ld1N0YXRlcztcbiAgICB0aGlzLmVuYWJsZWRTdGF0ZXMgPSAoQXJyYXkuaXNBcnJheShlbmFibGVkU3RhdGVzKSkgPyBbLi4uKG5ldyBTZXQoZW5hYmxlZFN0YXRlcykpXSA6IFtdO1xuICB9XG5cbiAgYWRkRW5hYmxlZFN0YXRlKHN0YXRlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuZW5hYmxlZFN0YXRlcy5pbmNsdWRlcyhzdGF0ZSkpIHtcbiAgICAgIHRoaXMuZW5hYmxlZFN0YXRlcy5wdXNoKHN0YXRlKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVFbmFibGVkU3RhdGUoc3RhdGU6IHN0cmluZykge1xuICAgIGNvbnN0IGV4aXN0U3RhdGVJZHggPSB0aGlzLmVuYWJsZWRTdGF0ZXMuZmluZEluZGV4KHN0ID0+IHN0ID09PSBzdGF0ZSk7XG4gICAgaWYgKGV4aXN0U3RhdGVJZHggPj0gMCkge1xuICAgICAgdGhpcy5lbmFibGVkU3RhdGVzLnNwbGljZShleGlzdFN0YXRlSWR4LCAxKTtcbiAgICB9XG4gIH1cblxuICB2aWV3T25TdGF0ZShzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiAodGhpcy52aXNpYmxlU3RhdGVzICYmIHN0YXRlKSA/IHRoaXMudmlzaWJsZVN0YXRlcy5pbmNsdWRlcyhzdGF0ZSkgOiBmYWxzZTsgfVxuICBlbmFibGVkT25TdGF0ZShzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiAodGhpcy5lbmFibGVkU3RhdGVzICYmIHN0YXRlKSA/IHRoaXMuZW5hYmxlZFN0YXRlcy5pbmNsdWRlcyhzdGF0ZSkgOiBmYWxzZTsgfVxuXG4gIGdldCBhYnNvbHV0ZVZpc2libGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9hYnNvbHV0ZVZpc2libGU7IH1cbiAgZ2V0IGFic29sdXRlRGlzYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9hYnNvbHV0ZURpc2FibGVkOyB9XG5cbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl92aXNpYmxlOyB9XG4gIHNldCB2aXNpYmxlKHZpc2libGU6IGJvb2xlYW4pIHsgdGhpcy5zZXRWaXNpYmlsaXR5KHZpc2libGUpOyB9XG5cbiAgdmlzaWJsZU9uKHN0YXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYWJzb2x1dGVWaXNpYmxlICYmIHRoaXMudmlld09uU3RhdGUoc3RhdGUpO1xuICB9XG5cbiAgZW5hYmxlZE9uKHN0YXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX2Fic29sdXRlRGlzYWJsZWQgJiYgdGhpcy5lbmFibGVkT25TdGF0ZShzdGF0ZSk7XG4gIH1cblxuICBzZXRWaXNpYmlsaXR5KHZpc2libGU6IGJvb2xlYW4sIGZvcmNlZDogYm9vbGVhbiB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5fYWJzb2x1dGVWaXNpYmxlID0gISF2aXNpYmxlO1xuICAgIGlmIChmb3JjZWQgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2lzRm9yY2VkID0gZm9yY2VkO1xuICAgICAgdGhpcy5fdmlzaWJsZUZvcmNlZCA9IHZpc2libGU7XG4gICAgfVxuICAgIHRoaXMuX3Zpc2libGUgPSB0aGlzLl9hYnNvbHV0ZVZpc2libGUgJiYgdGhpcy52aWV3T25TdGF0ZSh0aGlzLl9mb3JtU3RhdGUpO1xuICB9XG5cbiAgc2hvdyhmb3JjZWQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmlzaWJpbGl0eSh0cnVlLCBmb3JjZWQpO1xuICB9XG5cbiAgaGlkZShmb3JjZWQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmlzaWJpbGl0eShmYWxzZSwgZm9yY2VkKTtcbiAgfVxuXG4gIGdldCBlbmFibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gIXRoaXMuX2Rpc2FibGVkOyB9XG4gIHNldCBlbmFibGVkKGVuYWJsZWQpIHtcbiAgICB0aGlzLl9hYnNvbHV0ZURpc2FibGVkID0gIWVuYWJsZWQ7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB0aGlzLl9hYnNvbHV0ZURpc2FibGVkIHx8ICF0aGlzLmVuYWJsZWRPblN0YXRlKHRoaXMuX2Zvcm1TdGF0ZSk7XG4gIH1cblxuICBnZXQgZWRpdGFibGUoKTogYm9vbGVhbiB7IHJldHVybiAhdGhpcy5fZGlzYWJsZWQ7IH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kaXNhYmxlZDsgfVxuXG4gIHNldCBkaXNhYmxlZChkaXNhYmxlZCkgeyB0aGlzLmVuYWJsZWQgPSAhZGlzYWJsZWQ7IH1cblxuICBlbmFibGUoKTogdm9pZCB7IHRoaXMuZW5hYmxlZCA9IHRydWU7IH1cbiAgZGlzYWJsZSgpOiB2b2lkIHsgdGhpcy5lbmFibGVkID0gZmFsc2U7IH1cblxuICBmb3JtU3RhdGVDaGFuZ2VDdXN0b21TdWJzY3JpYmUoZm9ybSwgZm9ybUNoYW5nZVN1YmplY3QpIHsgfVxuXG4gIGZvcm1TdGF0ZUNoYW5nZShzdGF0ZSkge1xuICAgIGlmIChzdGF0ZSkge1xuICAgICAgdGhpcy5fZm9ybVN0YXRlID0gc3RhdGU7XG4gICAgICB0aGlzLl92aXNpYmxlID0gdGhpcy5fYWJzb2x1dGVWaXNpYmxlICYmIHRoaXMudmlld09uU3RhdGUoc3RhdGUpO1xuICAgICAgdGhpcy5fZGlzYWJsZWQgPSB0aGlzLl9hYnNvbHV0ZURpc2FibGVkIHx8ICF0aGlzLmVuYWJsZWRPblN0YXRlKHN0YXRlKTtcbiAgICB9XG4gIH1cblxuICBjb25uZWN0V2l0aFBhcmVudEZvcm0oZm9ybSwgZm9ybUNoYW5nZVN1YmplY3QpIHtcbiAgICB0aGlzLl9mb3JtID0gZm9ybTtcbiAgICB0aGlzLmZvcm1TdGF0ZUNoYW5nZUN1c3RvbVN1YnNjcmliZShmb3JtLCBmb3JtQ2hhbmdlU3ViamVjdCk7XG4gICAgZm9ybUNoYW5nZVN1YmplY3RcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy5mb3JtU3RhdGVDaGFuZ2UoZXZlbnQ/LnN0YXRlKSk7XG4gIH1cblxuICBzZXQgd2lkZ2V0KHdpZGdldCkgeyB0aGlzLl93aWRnZXQgPSB3aWRnZXQ7IH1cbiAgZ2V0IHdpZGdldCgpIHsgcmV0dXJuIHRoaXMuX3dpZGdldDsgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -42,8 +42,8 @@ export class RecordFormSection extends FormPiecePropagate {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
get code() { return this._sectionCode; }
|
|
45
|
-
get activation() { return this._activation; }
|
|
46
|
-
get inactivation() { return this._inactivation; }
|
|
45
|
+
get activation() { return this._activation.asObservable(); }
|
|
46
|
+
get inactivation() { return this._inactivation.asObservable(); }
|
|
47
47
|
get active() { return this._active; }
|
|
48
48
|
get sectionId() { return this._sectionId; }
|
|
49
49
|
get sectionCode() { return this._sectionCode; }
|
|
@@ -148,4 +148,4 @@ export class RecordFormSection extends FormPiecePropagate {
|
|
|
148
148
|
});
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvc2VjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVwRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFFeEIsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGtCQUFrQjtJQUN0QyxXQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUNwQyxhQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUMvQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFVBQVUsR0FBa0IsSUFBSSxDQUFDO0lBQ2pDLFlBQVksR0FBa0IsSUFBSSxDQUFDO0lBQ25DLGFBQWEsR0FBa0IsSUFBSSxDQUFDO0lBQ3BDLFlBQVksR0FBMkIsRUFBRSxDQUFDO0lBQzFDLGVBQWUsQ0FBTTtJQUNyQiwyQkFBMkIsR0FBRyxFQUFFLENBQUM7SUFFekMsWUFBWSxlQUFlLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDakQsS0FBSyxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSwyQkFBMkIsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2pHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENB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QUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFJO1FBQ1gsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDM0MsS0FBSyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xDLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ1YsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRVEsOEJBQThCLENBQUMsSUFBSSxFQUFFLGlCQUFpQjtRQUM3RCxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN0QyxVQUFVLEVBQUUscUJBQXFCLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb3JtUGllY2VQcm9wYWdhdGUgfSBmcm9tICcuL3BpZWNlLXByb3BhZ2F0ZSc7XG5pbXBvcnQgeyBGb3JtQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb24nO1xuaW1wb3J0IHsgUmVjb3JkRm9ybVN1YlNlY3Rpb24gfSBmcm9tICcuL3N1YnNlY3Rpb24nO1xuXG5jb25zdCBBQ1RJVkUgPSAnYWN0aXZlJztcblxuZXhwb3J0IGNsYXNzIFJlY29yZEZvcm1TZWN0aW9uIGV4dGVuZHMgRm9ybVBpZWNlUHJvcGFnYXRlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZhdGlvbiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5hY3RpdmF0aW9uID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIF9hY3RpdmUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc2VjdGlvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfc2VjdGlvbkNvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9zZWN0aW9uVGl0bGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9zdWJTZWN0aW9uczogUmVjb3JkRm9ybVN1YlNlY3Rpb25bXSA9IFtdO1xuICBwcml2YXRlIF9zdWJTZWN0aW9uc09iajogYW55O1xuICBwcml2YXRlIF9leGNsdXNpdmVTdWJTZWN0aW9uc0J5QXR0ciA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHNlY3Rpb25SZWNlaXZlZCwgZm9ybU9iamVjdCwgZm9ybUNvbmZpZykge1xuICAgIHN1cGVyKHNlY3Rpb25SZWNlaXZlZCwgZm9ybUNvbmZpZyk7XG4gICAgdGhpcy5wcm9wYWdhdGlvbkN1c3RvbUF0dHJpYnV0ZXMgPSB0aGlzLl9mb3JtQ29uZmlnPy5wcm9wYWdhdGlvbkN1c3RvbUF0dHJpYnV0ZXM/LnNlY3Rpb25zID8/IFtdO1xuICAgIGlmICghc2VjdGlvblJlY2VpdmVkKSB7IHJldHVybjsgfVxuICAgIHRoaXMuX3NlY3Rpb25JZCA9IChzZWN0aW9uUmVjZWl2ZWQuc2VjdGlvbklkKSA/IHNlY3Rpb25SZWNlaXZlZC5zZWN0aW9uSWQudG9TdHJpbmcoKSA6ICcnO1xuICAgIHRoaXMuX3NlY3Rpb25Db2RlID0gKHNlY3Rpb25SZWNlaXZlZC5zZWN0aW9uQ29kZSkgPyBzZWN0aW9uUmVjZWl2ZWQuc2VjdGlvbkNvZGUgOiAnJztcbiAgICB0aGlzLl9zZWN0aW9uVGl0bGUgPSAoc2VjdGlvblJlY2VpdmVkLnNlY3Rpb25UaXRsZSkgPyBzZWN0aW9uUmVjZWl2ZWQuc2VjdGlvblRpdGxlIDogJyc7XG4gICAgdGhpcy5fc3ViU2VjdGlvbnMgPSBbXTtcbiAgICB0aGlzLl9zdWJTZWN0aW9uc09iaiA9IHt9O1xuICAgIGlmIChzZWN0aW9uUmVjZWl2ZWQuc3Vic2VjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHN1YnNlY3Rpb25zID0gc2VjdGlvblJlY2VpdmVkLnN1YnNlY3Rpb25zLm1hcChzdWJTZWNEZWYgPT4ge1xuICAgICAgICBjb25zdCB2aXNpYmxlU3RhdGVzID0gc3ViU2VjRGVmLnZpc2libGVTdGF0ZXMgPz8gW107XG4gICAgICAgIGlmIChzdWJTZWNEZWYuZWxlbWVudHMgJiYgQXJyYXkuaXNBcnJheShzdWJTZWNEZWYuZWxlbWVudHMpKSB7XG4gICAgICAgICAgc3ViU2VjRGVmLmVsZW1lbnRzID0gc3ViU2VjRGVmLmVsZW1lbnRzLm1hcChlbG0gPT4gKHsgY29kZTogZWxtLmVsZW1lbnRDb2RlLCB0eXBlOiBlbG0uZWxlbWVudFR5cGVOYW1lIH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5zdWJTZWNEZWYsIHZpc2libGVTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBzdWJzZWN0aW9uUmVjZWl2ZWQgb2Ygc3Vic2VjdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc3ViU2VjdGlvblRvQWRkID0gbmV3IFJlY29yZEZvcm1TdWJTZWN0aW9uKHN1YnNlY3Rpb25SZWNlaXZlZCwgZm9ybU9iamVjdCwgZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IHN1YnNlY3Rpb25Db2RlID0gc3ViU2VjdGlvblRvQWRkLnN1YnNlY3Rpb25Db2RlO1xuICAgICAgICBpZiAoc3Vic2VjdGlvbkNvZGUpIHtcbiAgICAgICAgICB0aGlzLl9zdWJTZWN0aW9ucy5wdXNoKHN1YlNlY3Rpb25Ub0FkZCk7XG4gICAgICAgICAgdGhpcy5fc3ViU2VjdGlvbnNPYmpbc3Vic2VjdGlvbkNvZGVdID0gc3ViU2VjdGlvblRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNvZGUoKSB7IHJldHVybiB0aGlzLl9zZWN0aW9uQ29kZTsgfVxuICBnZXQgYWN0aXZhdGlvbigpIHsgcmV0dXJuIHRoaXMuX2FjdGl2YXRpb247IH1cbiAgZ2V0IGluYWN0aXZhdGlvbigpIHsgcmV0dXJuIHRoaXMuX2luYWN0aXZhdGlvbjsgfVxuXG4gIGdldCBhY3RpdmUoKSB7IHJldHVybiB0aGlzLl9hY3RpdmU7IH1cbiAgZ2V0IHNlY3Rpb25JZCgpIHsgcmV0dXJuIHRoaXMuX3NlY3Rpb25JZDsgfVxuICBnZXQgc2VjdGlvbkNvZGUoKSB7IHJldHVybiB0aGlzLl9zZWN0aW9uQ29kZTsgfVxuICBnZXQgc2VjdGlvblRpdGxlKCkgeyByZXR1cm4gdGhpcy5fc2VjdGlvblRpdGxlOyB9XG4gIGdldCBzdWJTZWN0aW9ucygpIHsgcmV0dXJuIHRoaXMuX3N1YlNlY3Rpb25zOyB9XG4gIGdldCBzdWJTZWN0aW9uc09iaigpIHsgcmV0dXJuIHRoaXMuX3N1YlNlY3Rpb25zT2JqOyB9XG5cbiAgc2V0IGFjdGl2ZShhY3RpdmUpIHsgdGhpcy5fYWN0aXZlID0gYWN0aXZlOyB9XG4gIHNldCBzZWN0aW9uSWQoc2VjdGlvbklkKSB7IHRoaXMuX3NlY3Rpb25JZCA9IHNlY3Rpb25JZDsgfVxuICBzZXQgc2VjdGlvbkNvZGUoc2VjdGlvbkNvZGUpIHsgdGhpcy5fc2VjdGlvbkNvZGUgPSBzZWN0aW9uQ29kZTsgfVxuICBzZXQgc2VjdGlvblRpdGxlKHNlY3Rpb25UaXRsZSkgeyB0aGlzLl9zZWN0aW9uVGl0bGUgPSBzZWN0aW9uVGl0bGU7IH1cbiAgc2V0IHN1YlNlY3Rpb25zKHN1YlNlY3Rpb25zKSB7IHRoaXMuX3N1YlNlY3Rpb25zID0gc3ViU2VjdGlvbnM7IH1cbiAgc2V0IHN1YlNlY3Rpb25zT2JqKHN1YlNlY3Rpb25zT2JqKSB7IHRoaXMuX3N1YlNlY3Rpb25zT2JqID0gc3ViU2VjdGlvbnNPYmo7IH1cblxuICBhY3RpdmF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuX2FjdGl2ZSkge1xuICAgICAgdGhpcy5fYWN0aXZlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3NlY3Rpb25Db2RlICYmIHRoaXMuX2FjdGl2YXRpb24ubmV4dCh0aGlzLl9zZWN0aW9uQ29kZSk7XG4gICAgfVxuICB9XG5cbiAgaW5hY3RpdmF0ZSgpIHtcbiAgICBpZiAodGhpcy5fYWN0aXZlKSB7XG4gICAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3NlY3Rpb25Db2RlICYmIHRoaXMuX2luYWN0aXZhdGlvbi5uZXh0KHRoaXMuX3NlY3Rpb25Db2RlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdGl0bGUoKSB7IHJldHVybiB0aGlzLl9zZWN0aW9uVGl0bGU7IH1cbiAgc2V0IHRpdGxlKHRpdGxlKSB7IHRoaXMuX3NlY3Rpb25UaXRsZSA9IHRpdGxlOyB9XG5cbiAgZ2V0VmlzaWJsZVN1YnNlY3Rpb25zKHN0YXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YlNlY3Rpb25zLmZpbHRlcihzdWJTZWN0aW9uID0+IHN1YlNlY3Rpb24udmlzaWJsZSk7XG4gIH1cblxuICBnZXRTdWJzZWN0aW9uKHN1YlNlY3Rpb25Db2RlKSB7XG4gICAgcmV0dXJuICh0aGlzLl9zdWJTZWN0aW9uc09iaiAmJiB0aGlzLl9zdWJTZWN0aW9uc09ialtzdWJTZWN0aW9uQ29kZV0pXG4gICAgICA/IHRoaXMuX3N1YlNlY3Rpb25zT2JqW3N1YlNlY3Rpb25Db2RlXSA6IG51bGw7XG4gIH1cblxuICBhY3RpdmF0ZVN1YlNlY3Rpb24oc3ViU2VjdGlvbkNvZGUpIHtcbiAgICBpZiAoc3ViU2VjdGlvbkNvZGUgPT09IHRoaXMuX2V4Y2x1c2l2ZVN1YlNlY3Rpb25zQnlBdHRyW0FDVElWRV0pIHsgcmV0dXJuOyB9XG4gICAgY29uc3Qgc3ViU2VjdGlvbiA9ICh0aGlzLl9zdWJTZWN0aW9uc09iaiAmJiB0aGlzLl9zdWJTZWN0aW9uc09ialtzdWJTZWN0aW9uQ29kZV0pXG4gICAgICA/IHRoaXMuX3N1YlNlY3Rpb25zT2JqW3N1YlNlY3Rpb25Db2RlXSA6IG51bGw7XG4gICAgaWYgKHN1YlNlY3Rpb24pIHtcbiAgICAgIHN1YlNlY3Rpb24/LmFjdGl2YXRlKCk7XG4gICAgICB0aGlzLl9leGNsdXNpdmVTdWJTZWN0aW9uc0J5QXR0cltBQ1RJVkVdID0gc3ViU2VjdGlvbkNvZGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0RmllbGRzKCkge1xuICAgIGxldCBmaWVsZHNBcnJheTogYW55W10gPSBbXTtcbiAgICBpZiAodGhpcy5fc3ViU2VjdGlvbnMgJiYgdGhpcy5fc3ViU2VjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBzdWJTZWN0aW9uIG9mIHRoaXMuX3N1YlNlY3Rpb25zKSB7XG4gICAgICAgIGNvbnN0IHN1YnNlY3Rpb25GaWVsZHM6IGFueVtdID0gc3ViU2VjdGlvbi5nZXRGaWVsZHMoKSA/PyBbXTtcbiAgICAgICAgaWYgKHN1YnNlY3Rpb25GaWVsZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmaWVsZHNBcnJheSA9IGZpZWxkc0FycmF5LmNvbmNhdChzdWJzZWN0aW9uRmllbGRzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmllbGRzQXJyYXk7XG4gIH1cblxuICBnZXRBY3Rpb25zKCk6IEZvcm1BY3Rpb25bXSB7XG4gICAgbGV0IGFjdGlvbkFycmF5OiBhbnlbXSA9IFtdO1xuICAgIGlmICh0aGlzLl9zdWJTZWN0aW9ucyAmJiB0aGlzLl9zdWJTZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IHN1YlNlY3Rpb24gb2YgdGhpcy5fc3ViU2VjdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc3ViU2VjdGlvbkFjdGlvbnMgPSBzdWJTZWN0aW9uLmdldEFjdGlvbnMoKSA/PyBbXTtcbiAgICAgICAgaWYgKHN1YlNlY3Rpb25BY3Rpb25zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgYWN0aW9uQXJyYXkgPSBhY3Rpb25BcnJheS5jb25jYXQoc3ViU2VjdGlvbkFjdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhY3Rpb25BcnJheTtcbiAgfVxuXG4gIGdldEFjdGlvbk5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgYWN0aW9uQXJyYXk6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHRoaXMuX3N1YlNlY3Rpb25zICYmIHRoaXMuX3N1YlNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3Qgc3ViU2VjdGlvbiBvZiB0aGlzLl9zdWJTZWN0aW9ucykge1xuICAgICAgICBhY3Rpb25BcnJheSA9IGFjdGlvbkFycmF5LmNvbmNhdChzdWJTZWN0aW9uLmdldEFjdGlvbk5hbWVzKCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYWN0aW9uQXJyYXk7XG4gIH1cblxuICBnZXRGaWVsZE5hbWVzKCkge1xuICAgIGxldCBmaWVsZHNBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5fc3ViU2VjdGlvbnMgJiYgdGhpcy5fc3ViU2VjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBzdWJTZWN0aW9uIG9mIHRoaXMuX3N1YlNlY3Rpb25zKSB7XG4gICAgICAgIGZpZWxkc0FycmF5ID0gZmllbGRzQXJyYXkuY29uY2F0KHN1YlNlY3Rpb24uZ2V0RmllbGROYW1lcygpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZpZWxkc0FycmF5O1xuICB9XG5cbiAgZ2V0RmllbGQobmFtZSkge1xuICAgIGxldCBmaWVsZCA9IG51bGw7XG4gICAgaWYgKHRoaXMuX3N1YlNlY3Rpb25zICYmIHRoaXMuX3N1YlNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3Qgc3ViU2VjdGlvbiBvZiB0aGlzLl9zdWJTZWN0aW9ucykge1xuICAgICAgICBmaWVsZCA9IHN1YlNlY3Rpb24uZ2V0RmllbGQobmFtZSk7XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG92ZXJyaWRlIGZvcm1TdGF0ZUNoYW5nZUN1c3RvbVN1YnNjcmliZShmb3JtLCBmb3JtQ2hhbmdlU3ViamVjdCkge1xuICAgIHRoaXMuX3N1YlNlY3Rpb25zPy5mb3JFYWNoKHN1YnNlY3Rpb24gPT4ge1xuICAgICAgc3Vic2VjdGlvbj8uY29ubmVjdFdpdGhQYXJlbnRGb3JtKGZvcm0sIGZvcm1DaGFuZ2VTdWJqZWN0KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvc2VjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVwRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFFeEIsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGtCQUFrQjtJQUN0QyxXQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUNwQyxhQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUMvQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFVBQVUsR0FBa0IsSUFBSSxDQUFDO0lBQ2pDLFlBQVksR0FBa0IsSUFBSSxDQUFDO0lBQ25DLGFBQWEsR0FBa0IsSUFBSSxDQUFDO0lBQ3BDLFlBQVksR0FBMkIsRUFBRSxDQUFDO0lBQzFDLGVBQWUsQ0FBTTtJQUNyQiwyQkFBMkIsR0FBRyxFQUFFLENBQUM7SUFFekMsWUFBWSxlQUFlLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDakQsS0FBSyxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSwyQkFBMkIsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2pHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENB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LENBQUM7Z0JBQzNDLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFJO1FBQ1gsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDM0MsS0FBSyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xDLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ1YsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRVEsOEJBQThCLENBQUMsSUFBSSxFQUFFLGlCQUFpQjtRQUM3RCxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN0QyxVQUFVLEVBQUUscUJBQXFCLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb3JtUGllY2VQcm9wYWdhdGUgfSBmcm9tICcuL3BpZWNlLXByb3BhZ2F0ZSc7XG5pbXBvcnQgeyBGb3JtQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb24nO1xuaW1wb3J0IHsgUmVjb3JkRm9ybVN1YlNlY3Rpb24gfSBmcm9tICcuL3N1YnNlY3Rpb24nO1xuXG5jb25zdCBBQ1RJVkUgPSAnYWN0aXZlJztcblxuZXhwb3J0IGNsYXNzIFJlY29yZEZvcm1TZWN0aW9uIGV4dGVuZHMgRm9ybVBpZWNlUHJvcGFnYXRlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZhdGlvbiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5hY3RpdmF0aW9uID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIF9hY3RpdmUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc2VjdGlvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfc2VjdGlvbkNvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9zZWN0aW9uVGl0bGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9zdWJTZWN0aW9uczogUmVjb3JkRm9ybVN1YlNlY3Rpb25bXSA9IFtdO1xuICBwcml2YXRlIF9zdWJTZWN0aW9uc09iajogYW55O1xuICBwcml2YXRlIF9leGNsdXNpdmVTdWJTZWN0aW9uc0J5QXR0ciA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHNlY3Rpb25SZWNlaXZlZCwgZm9ybU9iamVjdCwgZm9ybUNvbmZpZykge1xuICAgIHN1cGVyKHNlY3Rpb25SZWNlaXZlZCwgZm9ybUNvbmZpZyk7XG4gICAgdGhpcy5wcm9wYWdhdGlvbkN1c3RvbUF0dHJpYnV0ZXMgPSB0aGlzLl9mb3JtQ29uZmlnPy5wcm9wYWdhdGlvbkN1c3RvbUF0dHJpYnV0ZXM/LnNlY3Rpb25zID8/IFtdO1xuICAgIGlmICghc2VjdGlvblJlY2VpdmVkKSB7IHJldHVybjsgfVxuICAgIHRoaXMuX3NlY3Rpb25JZCA9IChzZWN0aW9uUmVjZWl2ZWQuc2VjdGlvbklkKSA/IHNlY3Rpb25SZWNlaXZlZC5zZWN0aW9uSWQudG9TdHJpbmcoKSA6ICcnO1xuICAgIHRoaXMuX3NlY3Rpb25Db2RlID0gKHNlY3Rpb25SZWNlaXZlZC5zZWN0aW9uQ29kZSkgPyBzZWN0aW9uUmVjZWl2ZWQuc2VjdGlvbkNvZGUgOiAnJztcbiAgICB0aGlzLl9zZWN0aW9uVGl0bGUgPSAoc2VjdGlvblJlY2VpdmVkLnNlY3Rpb25UaXRsZSkgPyBzZWN0aW9uUmVjZWl2ZWQuc2VjdGlvblRpdGxlIDogJyc7XG4gICAgdGhpcy5fc3ViU2VjdGlvbnMgPSBbXTtcbiAgICB0aGlzLl9zdWJTZWN0aW9uc09iaiA9IHt9O1xuICAgIGlmIChzZWN0aW9uUmVjZWl2ZWQuc3Vic2VjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHN1YnNlY3Rpb25zID0gc2VjdGlvblJlY2VpdmVkLnN1YnNlY3Rpb25zLm1hcChzdWJTZWNEZWYgPT4ge1xuICAgICAgICBjb25zdCB2aXNpYmxlU3RhdGVzID0gc3ViU2VjRGVmLnZpc2libGVTdGF0ZXMgPz8gW107XG4gICAgICAgIGlmIChzdWJTZWNEZWYuZWxlbWVudHMgJiYgQXJyYXkuaXNBcnJheShzdWJTZWNEZWYuZWxlbWVudHMpKSB7XG4gICAgICAgICAgc3ViU2VjRGVmLmVsZW1lbnRzID0gc3ViU2VjRGVmLmVsZW1lbnRzLm1hcChlbG0gPT4gKHsgY29kZTogZWxtLmVsZW1lbnRDb2RlLCB0eXBlOiBlbG0uZWxlbWVudFR5cGVOYW1lIH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5zdWJTZWNEZWYsIHZpc2libGVTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBzdWJzZWN0aW9uUmVjZWl2ZWQgb2Ygc3Vic2VjdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc3ViU2VjdGlvblRvQWRkID0gbmV3IFJlY29yZEZvcm1TdWJTZWN0aW9uKHN1YnNlY3Rpb25SZWNlaXZlZCwgZm9ybU9iamVjdCwgZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IHN1YnNlY3Rpb25Db2RlID0gc3ViU2VjdGlvblRvQWRkLnN1YnNlY3Rpb25Db2RlO1xuICAgICAgICBpZiAoc3Vic2VjdGlvbkNvZGUpIHtcbiAgICAgICAgICB0aGlzLl9zdWJTZWN0aW9ucy5wdXNoKHN1YlNlY3Rpb25Ub0FkZCk7XG4gICAgICAgICAgdGhpcy5fc3ViU2VjdGlvbnNPYmpbc3Vic2VjdGlvbkNvZGVdID0gc3ViU2VjdGlvblRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNvZGUoKSB7IHJldHVybiB0aGlzLl9zZWN0aW9uQ29kZTsgfVxuICBnZXQgYWN0aXZhdGlvbigpIHsgcmV0dXJuIHRoaXMuX2FjdGl2YXRpb24uYXNPYnNlcnZhYmxlKCk7IH1cbiAgZ2V0IGluYWN0aXZhdGlvbigpIHsgcmV0dXJuIHRoaXMuX2luYWN0aXZhdGlvbi5hc09ic2VydmFibGUoKTsgfVxuXG4gIGdldCBhY3RpdmUoKSB7IHJldHVybiB0aGlzLl9hY3RpdmU7IH1cbiAgZ2V0IHNlY3Rpb25JZCgpIHsgcmV0dXJuIHRoaXMuX3NlY3Rpb25JZDsgfVxuICBnZXQgc2VjdGlvbkNvZGUoKSB7IHJldHVybiB0aGlzLl9zZWN0aW9uQ29kZTsgfVxuICBnZXQgc2VjdGlvblRpdGxlKCkgeyByZXR1cm4gdGhpcy5fc2VjdGlvblRpdGxlOyB9XG4gIGdldCBzdWJTZWN0aW9ucygpIHsgcmV0dXJuIHRoaXMuX3N1YlNlY3Rpb25zOyB9XG4gIGdldCBzdWJTZWN0aW9uc09iaigpIHsgcmV0dXJuIHRoaXMuX3N1YlNlY3Rpb25zT2JqOyB9XG5cbiAgc2V0IGFjdGl2ZShhY3RpdmUpIHsgdGhpcy5fYWN0aXZlID0gYWN0aXZlOyB9XG4gIHNldCBzZWN0aW9uSWQoc2VjdGlvbklkKSB7IHRoaXMuX3NlY3Rpb25JZCA9IHNlY3Rpb25JZDsgfVxuICBzZXQgc2VjdGlvbkNvZGUoc2VjdGlvbkNvZGUpIHsgdGhpcy5fc2VjdGlvbkNvZGUgPSBzZWN0aW9uQ29kZTsgfVxuICBzZXQgc2VjdGlvblRpdGxlKHNlY3Rpb25UaXRsZSkgeyB0aGlzLl9zZWN0aW9uVGl0bGUgPSBzZWN0aW9uVGl0bGU7IH1cbiAgc2V0IHN1YlNlY3Rpb25zKHN1YlNlY3Rpb25zKSB7IHRoaXMuX3N1YlNlY3Rpb25zID0gc3ViU2VjdGlvbnM7IH1cbiAgc2V0IHN1YlNlY3Rpb25zT2JqKHN1YlNlY3Rpb25zT2JqKSB7IHRoaXMuX3N1YlNlY3Rpb25zT2JqID0gc3ViU2VjdGlvbnNPYmo7IH1cblxuICBhY3RpdmF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuX2FjdGl2ZSkge1xuICAgICAgdGhpcy5fYWN0aXZlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3NlY3Rpb25Db2RlICYmIHRoaXMuX2FjdGl2YXRpb24ubmV4dCh0aGlzLl9zZWN0aW9uQ29kZSk7XG4gICAgfVxuICB9XG5cbiAgaW5hY3RpdmF0ZSgpIHtcbiAgICBpZiAodGhpcy5fYWN0aXZlKSB7XG4gICAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3NlY3Rpb25Db2RlICYmIHRoaXMuX2luYWN0aXZhdGlvbi5uZXh0KHRoaXMuX3NlY3Rpb25Db2RlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdGl0bGUoKSB7IHJldHVybiB0aGlzLl9zZWN0aW9uVGl0bGU7IH1cbiAgc2V0IHRpdGxlKHRpdGxlKSB7IHRoaXMuX3NlY3Rpb25UaXRsZSA9IHRpdGxlOyB9XG5cbiAgZ2V0VmlzaWJsZVN1YnNlY3Rpb25zKHN0YXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YlNlY3Rpb25zLmZpbHRlcihzdWJTZWN0aW9uID0+IHN1YlNlY3Rpb24udmlzaWJsZSk7XG4gIH1cblxuICBnZXRTdWJzZWN0aW9uKHN1YlNlY3Rpb25Db2RlKSB7XG4gICAgcmV0dXJuICh0aGlzLl9zdWJTZWN0aW9uc09iaiAmJiB0aGlzLl9zdWJTZWN0aW9uc09ialtzdWJTZWN0aW9uQ29kZV0pXG4gICAgICA/IHRoaXMuX3N1YlNlY3Rpb25zT2JqW3N1YlNlY3Rpb25Db2RlXSA6IG51bGw7XG4gIH1cblxuICBhY3RpdmF0ZVN1YlNlY3Rpb24oc3ViU2VjdGlvbkNvZGUpIHtcbiAgICBpZiAoc3ViU2VjdGlvbkNvZGUgPT09IHRoaXMuX2V4Y2x1c2l2ZVN1YlNlY3Rpb25zQnlBdHRyW0FDVElWRV0pIHsgcmV0dXJuOyB9XG4gICAgY29uc3Qgc3ViU2VjdGlvbiA9ICh0aGlzLl9zdWJTZWN0aW9uc09iaiAmJiB0aGlzLl9zdWJTZWN0aW9uc09ialtzdWJTZWN0aW9uQ29kZV0pXG4gICAgICA/IHRoaXMuX3N1YlNlY3Rpb25zT2JqW3N1YlNlY3Rpb25Db2RlXSA6IG51bGw7XG4gICAgaWYgKHN1YlNlY3Rpb24pIHtcbiAgICAgIHN1YlNlY3Rpb24/LmFjdGl2YXRlKCk7XG4gICAgICB0aGlzLl9leGNsdXNpdmVTdWJTZWN0aW9uc0J5QXR0cltBQ1RJVkVdID0gc3ViU2VjdGlvbkNvZGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0RmllbGRzKCkge1xuICAgIGxldCBmaWVsZHNBcnJheTogYW55W10gPSBbXTtcbiAgICBpZiAodGhpcy5fc3ViU2VjdGlvbnMgJiYgdGhpcy5fc3ViU2VjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBzdWJTZWN0aW9uIG9mIHRoaXMuX3N1YlNlY3Rpb25zKSB7XG4gICAgICAgIGNvbnN0IHN1YnNlY3Rpb25GaWVsZHM6IGFueVtdID0gc3ViU2VjdGlvbi5nZXRGaWVsZHMoKSA/PyBbXTtcbiAgICAgICAgaWYgKHN1YnNlY3Rpb25GaWVsZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmaWVsZHNBcnJheSA9IGZpZWxkc0FycmF5LmNvbmNhdChzdWJzZWN0aW9uRmllbGRzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmllbGRzQXJyYXk7XG4gIH1cblxuICBnZXRBY3Rpb25zKCk6IEZvcm1BY3Rpb25bXSB7XG4gICAgbGV0IGFjdGlvbkFycmF5OiBhbnlbXSA9IFtdO1xuICAgIGlmICh0aGlzLl9zdWJTZWN0aW9ucyAmJiB0aGlzLl9zdWJTZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IHN1YlNlY3Rpb24gb2YgdGhpcy5fc3ViU2VjdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc3ViU2VjdGlvbkFjdGlvbnMgPSBzdWJTZWN0aW9uLmdldEFjdGlvbnMoKSA/PyBbXTtcbiAgICAgICAgaWYgKHN1YlNlY3Rpb25BY3Rpb25zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgYWN0aW9uQXJyYXkgPSBhY3Rpb25BcnJheS5jb25jYXQoc3ViU2VjdGlvbkFjdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhY3Rpb25BcnJheTtcbiAgfVxuXG4gIGdldEFjdGlvbk5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgYWN0aW9uQXJyYXk6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHRoaXMuX3N1YlNlY3Rpb25zICYmIHRoaXMuX3N1YlNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3Qgc3ViU2VjdGlvbiBvZiB0aGlzLl9zdWJTZWN0aW9ucykge1xuICAgICAgICBhY3Rpb25BcnJheSA9IGFjdGlvbkFycmF5LmNvbmNhdChzdWJTZWN0aW9uLmdldEFjdGlvbk5hbWVzKCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYWN0aW9uQXJyYXk7XG4gIH1cblxuICBnZXRGaWVsZE5hbWVzKCkge1xuICAgIGxldCBmaWVsZHNBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5fc3ViU2VjdGlvbnMgJiYgdGhpcy5fc3ViU2VjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBzdWJTZWN0aW9uIG9mIHRoaXMuX3N1YlNlY3Rpb25zKSB7XG4gICAgICAgIGZpZWxkc0FycmF5ID0gZmllbGRzQXJyYXkuY29uY2F0KHN1YlNlY3Rpb24uZ2V0RmllbGROYW1lcygpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZpZWxkc0FycmF5O1xuICB9XG5cbiAgZ2V0RmllbGQobmFtZSkge1xuICAgIGxldCBmaWVsZCA9IG51bGw7XG4gICAgaWYgKHRoaXMuX3N1YlNlY3Rpb25zICYmIHRoaXMuX3N1YlNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3Qgc3ViU2VjdGlvbiBvZiB0aGlzLl9zdWJTZWN0aW9ucykge1xuICAgICAgICBmaWVsZCA9IHN1YlNlY3Rpb24uZ2V0RmllbGQobmFtZSk7XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG92ZXJyaWRlIGZvcm1TdGF0ZUNoYW5nZUN1c3RvbVN1YnNjcmliZShmb3JtLCBmb3JtQ2hhbmdlU3ViamVjdCkge1xuICAgIHRoaXMuX3N1YlNlY3Rpb25zPy5mb3JFYWNoKHN1YnNlY3Rpb24gPT4ge1xuICAgICAgc3Vic2VjdGlvbj8uY29ubmVjdFdpdGhQYXJlbnRGb3JtKGZvcm0sIGZvcm1DaGFuZ2VTdWJqZWN0KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|