UNPKG

15.4 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var tslib_1 = require("tslib");
4var pageInstance_1 = require("./pageInstance");
5var buildDescriptorsFromTree_1 = require("./buildDescriptorsFromTree");
6var actions_1 = require("./actions");
7function folder(title, contents) {
8 return { title: title, contents: contents };
9}
10exports.folder = folder;
11function buildPage(component, node, options) {
12 if (options === void 0) { options = {}; }
13 var page = tslib_1.__assign({ hidden: false, persistent: true }, options, { component: component,
14 node: node,
15 open: open,
16 replace: replace });
17 function open(dispatch, opt) {
18 if (opt === void 0) { opt = {}; }
19 dispatch(actions_1.NAVIGATION_OPEN_PAGE.create.unicast(actions_1.__NAVIGATION_IDENTIFIER__, tslib_1.__assign({}, opt, { mutex: opt.mutex ? page.path + "/" + opt.mutex : page.path, path: page.path })));
20 }
21 function replace(dispatch, target, opt) {
22 if (opt === void 0) { opt = {}; }
23 dispatch(actions_1.NAVIGATION_REPLACE_PAGE.create.unicast(actions_1.__NAVIGATION_IDENTIFIER__, tslib_1.__assign({}, opt, { toRemoveMutex: target, mutex: opt.mutex ? page.path + "/" + opt.mutex : page.path, path: page.path })));
24 }
25 return page;
26}
27exports.buildPage = buildPage;
28var Pages = /** @class */ (function () {
29 function Pages(root) {
30 var descriptors = buildDescriptorsFromTree_1.buildDescriptorsFromTree(root);
31 this.tree = root;
32 this.pages = {};
33 for (var _i = 0, _a = descriptors.pages; _i < _a.length; _i++) {
34 var p = _a[_i];
35 this.pages[p.path] = p;
36 }
37 this.folders = {};
38 for (var _b = 0, _c = descriptors.folders; _b < _c.length; _b++) {
39 var f = _c[_b];
40 this.folders[f.path] = f;
41 }
42 this.calculatedPathTree = descriptors.pathTree;
43 this.calculatedFolderContents = descriptors.folderContents;
44 this.calculatedFilteredPathTree = descriptors.filteredPathTree;
45 this.calculatedFilteredFolderContents = descriptors.filteredFolderContents;
46 }
47 Pages.prototype.hasPage = function (path) {
48 return !!this.pages[path];
49 };
50 Pages.prototype.getPage = function (path) {
51 return this.pages[path];
52 };
53 Pages.prototype.hasFolder = function (path) {
54 return !!this.folders[path];
55 };
56 Pages.prototype.getFolder = function (path) {
57 return this.folders[path];
58 };
59 Pages.prototype.isHidden = function (path) {
60 if (this.hasPage(path)) {
61 return this.getPage(path).hidden;
62 }
63 return false;
64 };
65 Object.defineProperty(Pages.prototype, "pathTree", {
66 get: function () {
67 return this.calculatedPathTree;
68 },
69 enumerable: true,
70 configurable: true
71 });
72 Object.defineProperty(Pages.prototype, "folderContents", {
73 get: function () {
74 return this.calculatedFolderContents;
75 },
76 enumerable: true,
77 configurable: true
78 });
79 Object.defineProperty(Pages.prototype, "filteredPathTree", {
80 get: function () {
81 return this.calculatedFilteredPathTree;
82 },
83 enumerable: true,
84 configurable: true
85 });
86 Object.defineProperty(Pages.prototype, "filteredFolderContents", {
87 get: function () {
88 return this.calculatedFilteredFolderContents;
89 },
90 enumerable: true,
91 configurable: true
92 });
93 Pages.prototype.buildInstance = function (occurrence) {
94 if (!this.hasPage(occurrence.path)) {
95 throw new Error("No descriptor exists for the provided path (" + occurrence.path + ")");
96 }
97 return new pageInstance_1.PageInstance(this.pages[occurrence.path], occurrence);
98 };
99 return Pages;
100}());
101exports.Pages = Pages;
102//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGFnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsK0NBQThDO0FBQzlDLHVFQUFzRTtBQUN0RSxxQ0FJbUI7QUFZbkIsZ0JBQ0UsS0FBYSxFQUNiLFFBQXlCO0lBRXpCLE1BQU0sQ0FBZ0IsRUFBRSxLQUFLLE9BQUEsRUFBRSxRQUFRLFVBQUEsRUFBRSxDQUFDO0FBQzVDLENBQUM7QUFMRCx3QkFLQztBQWdDRCxtQkFDRSxTQUF3RCxFQUN4RCxJQUEyQixFQUMzQixPQUE4QjtJQUE5Qix3QkFBQSxFQUFBLFlBQThCO0lBRTlCLElBQU0sSUFBSSxHQUFHLG1CQUNYLE1BQU0sRUFBRSxLQUFLLEVBQ2IsVUFBVSxFQUFFLElBQUksSUFDYixPQUFPLElBQ1YsU0FBUyxXQUFBO1FBQ1QsSUFBSSxNQUFBO1FBQ0osSUFBSSxNQUFBO1FBQ0osT0FBTyxTQUFBLEdBQ1IsQ0FBQztJQUVGLGNBQWMsUUFBa0IsRUFBRSxHQUE4QjtRQUE5QixvQkFBQSxFQUFBLFFBQThCO1FBQzlELFFBQVEsQ0FBQyw4QkFBb0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLG1DQUF5Qix1QkFDakUsR0FBRyxJQUNOLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBSSxJQUFJLENBQUMsSUFBSSxTQUFJLEdBQUcsQ0FBQyxLQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQzFELElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxJQUNmLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxpQkFBaUIsUUFBa0IsRUFBRSxNQUFjLEVBQUUsR0FBaUM7UUFBakMsb0JBQUEsRUFBQSxRQUFpQztRQUNwRixRQUFRLENBQUMsaUNBQXVCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxtQ0FBeUIsdUJBQ3BFLEdBQUcsSUFDTixhQUFhLEVBQUUsTUFBTSxFQUNyQixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUksSUFBSSxDQUFDLElBQUksU0FBSSxHQUFHLENBQUMsS0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUMxRCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFDZixDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQztBQUNkLENBQUM7QUFqQ0QsOEJBaUNDO0FBY0Q7SUFVRSxlQUFZLElBQXFCO1FBQy9CLElBQU0sV0FBVyxHQUFHLG1EQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRWpCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLEdBQUcsQ0FBQyxDQUFZLFVBQWlCLEVBQWpCLEtBQUEsV0FBVyxDQUFDLEtBQUssRUFBakIsY0FBaUIsRUFBakIsSUFBaUI7WUFBNUIsSUFBTSxDQUFDLFNBQUE7WUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDeEI7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixHQUFHLENBQUMsQ0FBWSxVQUFtQixFQUFuQixLQUFBLFdBQVcsQ0FBQyxPQUFPLEVBQW5CLGNBQW1CLEVBQW5CLElBQW1CO1lBQTlCLElBQU0sQ0FBQyxTQUFBO1lBQ1YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzFCO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7UUFDL0MsSUFBSSxDQUFDLHdCQUF3QixHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUM7UUFDM0QsSUFBSSxDQUFDLDBCQUEwQixHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvRCxJQUFJLENBQUMsZ0NBQWdDLEdBQUcsV0FBVyxDQUFDLHNCQUFzQixDQUFDO0lBQzdFLENBQUM7SUFFTSx1QkFBTyxHQUFkLFVBQWUsSUFBWTtRQUN6QixNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVNLHVCQUFPLEdBQWQsVUFBZSxJQUFZO1FBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTSx5QkFBUyxHQUFoQixVQUFpQixJQUFZO1FBQzNCLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0seUJBQVMsR0FBaEIsVUFBaUIsSUFBWTtRQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU0sd0JBQVEsR0FBZixVQUFnQixJQUFZO1FBQzFCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxzQkFBVywyQkFBUTthQUFuQjtZQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDakMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBVyxpQ0FBYzthQUF6QjtZQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUM7UUFDdkMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBVyxtQ0FBZ0I7YUFBM0I7WUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDO1FBQ3pDLENBQUM7OztPQUFBO0lBRUQsc0JBQVcseUNBQXNCO2FBQWpDO1lBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQztRQUMvQyxDQUFDOzs7T0FBQTtJQUVNLDZCQUFhLEdBQXBCLFVBQ0UsVUFBK0M7UUFFL0MsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBK0MsVUFBVSxDQUFDLElBQUksTUFBRyxDQUFDLENBQUM7UUFDckYsQ0FBQztRQUVELE1BQU0sQ0FBQyxJQUFJLDJCQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUNILFlBQUM7QUFBRCxDQUFDLEFBaEZELElBZ0ZDO0FBaEZZLHNCQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50Q2xhc3MsIFN0YXRlbGVzc0NvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgRGlzcGF0Y2gsIFJlZHVjaWJsZU5vZGUgfSBmcm9tICdyZWR1Y2libGUtbm9kZSc7XHJcbmltcG9ydCB7IFBhZ2VJbnN0YW5jZSB9IGZyb20gJy4vcGFnZUluc3RhbmNlJztcclxuaW1wb3J0IHsgYnVpbGREZXNjcmlwdG9yc0Zyb21UcmVlIH0gZnJvbSAnLi9idWlsZERlc2NyaXB0b3JzRnJvbVRyZWUnO1xyXG5pbXBvcnQge1xyXG4gIF9fTkFWSUdBVElPTl9JREVOVElGSUVSX18sXHJcbiAgTkFWSUdBVElPTl9PUEVOX1BBR0UsXHJcbiAgTkFWSUdBVElPTl9SRVBMQUNFX1BBR0UsXHJcbn0gZnJvbSAnLi9hY3Rpb25zJztcclxuXHJcbmV4cG9ydCB0eXBlIFZhbGlkVHJlZU5vZGUgPSB7IFtwYXRoOiBzdHJpbmddOiBQYWdlRm9sZGVyIHwgUGFnZSB9O1xyXG5cclxuZXhwb3J0IHR5cGUgUGFnZVRyZWVOb2RlPFQgZXh0ZW5kcyBWYWxpZFRyZWVOb2RlID0ge30+ID0gVDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnZUZvbGRlcjxUIGV4dGVuZHMgVmFsaWRUcmVlTm9kZSA9IHt9PiB7XHJcbiAgcGF0aDogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgY29udGVudHM6IFBhZ2VUcmVlTm9kZTxUPjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvbGRlcjxUIGV4dGVuZHMgVmFsaWRUcmVlTm9kZSA9IHt9PihcclxuICB0aXRsZTogc3RyaW5nLFxyXG4gIGNvbnRlbnRzOiBQYWdlVHJlZU5vZGU8VD4sXHJcbik6IFBhZ2VGb2xkZXI8VD4ge1xyXG4gIHJldHVybiA8UGFnZUZvbGRlcjxUPj57IHRpdGxlLCBjb250ZW50cyB9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxhY2VPcHRpb25zPFRQYXJhbXM+IHtcclxuICBtdXRleD86IHN0cmluZztcclxuICBwYXJhbXM/OiBUUGFyYW1zO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHBhcmVudD86IHN0cmluZztcclxuICBvcGVuZWRGcm9tPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5PcHRpb25zPFRQYXJhbXM+IGV4dGVuZHMgUmVwbGFjZU9wdGlvbnM8VFBhcmFtcz4ge1xyXG4gIGluc2VydEFmdGVyTXV0ZXg/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnZTxUUGFyYW1zID0gYW55LCBUU3RhdGUgPSBhbnk+IHtcclxuICByZWFkb25seSB0eXBlOiB7IHBhcmFtczogVFBhcmFtcywgc3RhdGU6IFRTdGF0ZSB9O1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHBhdGg6IHN0cmluZztcclxuICBoaWRkZW46IGJvb2xlYW47XHJcbiAgcGVyc2lzdGVudDogYm9vbGVhbjtcclxuICBjb21wb25lbnQ6IENvbXBvbmVudENsYXNzPGFueT4gfCBTdGF0ZWxlc3NDb21wb25lbnQ8YW55PjtcclxuICBub2RlOiBSZWR1Y2libGVOb2RlPFRTdGF0ZT47XHJcbiAgb3BlbjogKGRpc3BhdGNoOiBEaXNwYXRjaCwgb3B0PzogT3Blbk9wdGlvbnM8VFBhcmFtcz4pID0+IHZvaWQ7XHJcbiAgcmVwbGFjZTogKGRpc3BhdGNoOiBEaXNwYXRjaCwgdGFyZ2V0OiBzdHJpbmcsIG9wdD86IFJlcGxhY2VPcHRpb25zPFRQYXJhbXM+KSA9PiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkUGFnZU9wdGlvbnMge1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgcGVyc2lzdGVudD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBidWlsZFBhZ2U8VFBhcmFtcywgVFN0YXRlPihcclxuICBjb21wb25lbnQ6IENvbXBvbmVudENsYXNzPGFueT4gfCBTdGF0ZWxlc3NDb21wb25lbnQ8YW55PixcclxuICBub2RlOiBSZWR1Y2libGVOb2RlPFRTdGF0ZT4sXHJcbiAgb3B0aW9uczogQnVpbGRQYWdlT3B0aW9ucyA9IHt9LFxyXG4pOiBQYWdlPFRQYXJhbXMsIFRTdGF0ZT4ge1xyXG4gIGNvbnN0IHBhZ2UgPSA8UGFnZTxUUGFyYW1zLCBUU3RhdGU+PntcclxuICAgIGhpZGRlbjogZmFsc2UsXHJcbiAgICBwZXJzaXN0ZW50OiB0cnVlLFxyXG4gICAgLi4ub3B0aW9ucyxcclxuICAgIGNvbXBvbmVudCxcclxuICAgIG5vZGUsXHJcbiAgICBvcGVuLFxyXG4gICAgcmVwbGFjZSxcclxuICB9O1xyXG5cclxuICBmdW5jdGlvbiBvcGVuKGRpc3BhdGNoOiBEaXNwYXRjaCwgb3B0OiBPcGVuT3B0aW9uczxUUGFyYW1zPiA9IHt9KSB7XHJcbiAgICBkaXNwYXRjaChOQVZJR0FUSU9OX09QRU5fUEFHRS5jcmVhdGUudW5pY2FzdChfX05BVklHQVRJT05fSURFTlRJRklFUl9fLCB7XHJcbiAgICAgIC4uLm9wdCxcclxuICAgICAgbXV0ZXg6IG9wdC5tdXRleCA/IGAke3BhZ2UucGF0aH0vJHtvcHQubXV0ZXh9YCA6IHBhZ2UucGF0aCxcclxuICAgICAgcGF0aDogcGFnZS5wYXRoLFxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gcmVwbGFjZShkaXNwYXRjaDogRGlzcGF0Y2gsIHRhcmdldDogc3RyaW5nLCBvcHQ6IFJlcGxhY2VPcHRpb25zPFRQYXJhbXM+ID0ge30pIHtcclxuICAgIGRpc3BhdGNoKE5BVklHQVRJT05fUkVQTEFDRV9QQUdFLmNyZWF0ZS51bmljYXN0KF9fTkFWSUdBVElPTl9JREVOVElGSUVSX18sIHtcclxuICAgICAgLi4ub3B0LFxyXG4gICAgICB0b1JlbW92ZU11dGV4OiB0YXJnZXQsXHJcbiAgICAgIG11dGV4OiBvcHQubXV0ZXggPyBgJHtwYWdlLnBhdGh9LyR7b3B0Lm11dGV4fWAgOiBwYWdlLnBhdGgsXHJcbiAgICAgIHBhdGg6IHBhZ2UucGF0aCxcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBwYWdlO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VPY2N1cnJlbmNlPFRQYXJhbXMgPSB7fT4ge1xyXG4gIHBhdGg6IHN0cmluZztcclxuICBtdXRleDogc3RyaW5nO1xyXG4gIHBhcmFtcz86IFRQYXJhbXM7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgcGFyZW50Pzogc3RyaW5nO1xyXG4gIG9wZW5lZEZyb20/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFBhdGhUcmVlTm9kZSA9IHN0cmluZyB8IFBhdGhUcmVlO1xyXG5leHBvcnQgaW50ZXJmYWNlIFBhdGhUcmVlIGV4dGVuZHMgQXJyYXk8UGF0aFRyZWVOb2RlPiB7IH1cclxuXHJcbmV4cG9ydCBjbGFzcyBQYWdlczxUIGV4dGVuZHMgVmFsaWRUcmVlTm9kZSA9IGFueT4ge1xyXG4gIHByaXZhdGUgcGFnZXM6IHsgW3BhZ2U6IHN0cmluZ106IFBhZ2U8YW55LCBhbnk+IH07XHJcbiAgcHJpdmF0ZSBmb2xkZXJzOiB7IFtwYWdlOiBzdHJpbmddOiBQYWdlRm9sZGVyIH07XHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVkUGF0aFRyZWU6IFBhdGhUcmVlO1xyXG4gIHByaXZhdGUgY2FsY3VsYXRlZEZvbGRlckNvbnRlbnRzOiB7IFtmb2xkZXI6IHN0cmluZ106IHN0cmluZ1tdIH07XHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVkRmlsdGVyZWRQYXRoVHJlZTogUGF0aFRyZWU7XHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVkRmlsdGVyZWRGb2xkZXJDb250ZW50czogeyBbZm9sZGVyOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgdHJlZTogUGFnZVRyZWVOb2RlPFQ+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihyb290OiBQYWdlVHJlZU5vZGU8VD4pIHtcclxuICAgIGNvbnN0IGRlc2NyaXB0b3JzID0gYnVpbGREZXNjcmlwdG9yc0Zyb21UcmVlKHJvb3QpO1xyXG5cclxuICAgIHRoaXMudHJlZSA9IHJvb3Q7XHJcblxyXG4gICAgdGhpcy5wYWdlcyA9IHt9O1xyXG4gICAgZm9yIChjb25zdCBwIG9mIGRlc2NyaXB0b3JzLnBhZ2VzKSB7XHJcbiAgICAgIHRoaXMucGFnZXNbcC5wYXRoXSA9IHA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb2xkZXJzID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGYgb2YgZGVzY3JpcHRvcnMuZm9sZGVycykge1xyXG4gICAgICB0aGlzLmZvbGRlcnNbZi5wYXRoXSA9IGY7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jYWxjdWxhdGVkUGF0aFRyZWUgPSBkZXNjcmlwdG9ycy5wYXRoVHJlZTtcclxuICAgIHRoaXMuY2FsY3VsYXRlZEZvbGRlckNvbnRlbnRzID0gZGVzY3JpcHRvcnMuZm9sZGVyQ29udGVudHM7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZWRGaWx0ZXJlZFBhdGhUcmVlID0gZGVzY3JpcHRvcnMuZmlsdGVyZWRQYXRoVHJlZTtcclxuICAgIHRoaXMuY2FsY3VsYXRlZEZpbHRlcmVkRm9sZGVyQ29udGVudHMgPSBkZXNjcmlwdG9ycy5maWx0ZXJlZEZvbGRlckNvbnRlbnRzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhc1BhZ2UocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLnBhZ2VzW3BhdGhdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFBhZ2UocGF0aDogc3RyaW5nKTogUGFnZSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlc1twYXRoXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYXNGb2xkZXIocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmZvbGRlcnNbcGF0aF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Rm9sZGVyKHBhdGg6IHN0cmluZyk6IFBhZ2VGb2xkZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9sZGVyc1twYXRoXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc0hpZGRlbihwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmhhc1BhZ2UocGF0aCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0UGFnZShwYXRoKS5oaWRkZW47XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBwYXRoVHJlZSgpOiBQYXRoVHJlZSB7XHJcbiAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVkUGF0aFRyZWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGZvbGRlckNvbnRlbnRzKCk6IHsgW2ZvbGRlcjogc3RyaW5nXTogc3RyaW5nW10gfSB7XHJcbiAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVkRm9sZGVyQ29udGVudHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGZpbHRlcmVkUGF0aFRyZWUoKTogUGF0aFRyZWUge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlZEZpbHRlcmVkUGF0aFRyZWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGZpbHRlcmVkRm9sZGVyQ29udGVudHMoKTogeyBbZm9sZGVyOiBzdHJpbmddOiBzdHJpbmdbXSB9IHtcclxuICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZWRGaWx0ZXJlZEZvbGRlckNvbnRlbnRzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGJ1aWxkSW5zdGFuY2U8VFN0YXRlLCBUUmVkdWNlckJ1aWxkZXJEYXRhPihcclxuICAgIG9jY3VycmVuY2U6IFBhZ2VPY2N1cnJlbmNlPFRSZWR1Y2VyQnVpbGRlckRhdGE+LFxyXG4gICk6IFBhZ2VJbnN0YW5jZTxUU3RhdGUsIFRSZWR1Y2VyQnVpbGRlckRhdGE+IHtcclxuICAgIGlmICghdGhpcy5oYXNQYWdlKG9jY3VycmVuY2UucGF0aCkpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBkZXNjcmlwdG9yIGV4aXN0cyBmb3IgdGhlIHByb3ZpZGVkIHBhdGggKCR7b2NjdXJyZW5jZS5wYXRofSlgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV3IFBhZ2VJbnN0YW5jZSh0aGlzLnBhZ2VzW29jY3VycmVuY2UucGF0aF0sIG9jY3VycmVuY2UpO1xyXG4gIH1cclxufVxyXG4iXX0=
\No newline at end of file