@kaspernj/api-maker 1.0.2114 → 1.0.2115
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/build/router/route.d.ts.map +1 -1
- package/build/router/route.js +38 -6
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"/src/","sources":["router/route.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"/src/","sources":["router/route.jsx"],"names":[],"mappings":";AAaA,yDAAmD;AACnD,8CAAwC;mBAXG,UAAU;AAYrD,gCAAiD;AAEjD,yBAqRG;kBArSiF,OAAO"}
|
package/build/router/route.js
CHANGED
|
@@ -3,6 +3,7 @@ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import React, { createContext, useContext, useEffect, useLayoutEffect, useMemo } from "react";
|
|
4
4
|
import { shapeComponent } from "set-state-compare/build/shape-component.js";
|
|
5
5
|
import Switch, { CurrentSwitchContext } from "./switch";
|
|
6
|
+
import { arrayDifferent, simpleObjectDifferent } from "set-state-compare/build/diff-utils.js";
|
|
6
7
|
import BaseComponent from "../base-component";
|
|
7
8
|
import PropTypes from "prop-types";
|
|
8
9
|
import memo from "set-state-compare/build/memo.js";
|
|
@@ -31,6 +32,8 @@ const Route = memo(shapeComponent(class Route extends BaseComponent {
|
|
|
31
32
|
});
|
|
32
33
|
match = null;
|
|
33
34
|
loadComponentRequestId = 0;
|
|
35
|
+
componentPathParts = [];
|
|
36
|
+
lastMatchUpdate = 0;
|
|
34
37
|
newParams = null;
|
|
35
38
|
pathParts = null;
|
|
36
39
|
setup() {
|
|
@@ -59,7 +62,7 @@ const Route = memo(shapeComponent(class Route extends BaseComponent {
|
|
|
59
62
|
}
|
|
60
63
|
return this.routeParts.slice(this.pathParts.length, this.routeParts.length);
|
|
61
64
|
}, [givenRoute].concat(this.pathParts));
|
|
62
|
-
this.useStates({ Component: null, componentNotFound: null, matches: false });
|
|
65
|
+
this.useStates({ Component: null, componentNotFound: null, lastMatchUpdate: 0, matches: false });
|
|
63
66
|
useLayoutEffect(() => {
|
|
64
67
|
this.loadMatches();
|
|
65
68
|
}, [givenRoute, path, pathsMatched]);
|
|
@@ -142,16 +145,45 @@ const Route = memo(shapeComponent(class Route extends BaseComponent {
|
|
|
142
145
|
componentPathParts.push(component);
|
|
143
146
|
}
|
|
144
147
|
const newParams = Object.assign({}, this.currentParams, params); // eslint-disable-line prefer-object-spread
|
|
145
|
-
this.
|
|
146
|
-
this.setState({ matches });
|
|
148
|
+
this.updateRouteMatchState({ componentPathParts, match: { params }, matches, newParams });
|
|
147
149
|
this.switchGroup?.setPathMatched(matchId, true);
|
|
148
150
|
}
|
|
149
151
|
else {
|
|
150
|
-
this.
|
|
151
|
-
this.setState({ matches });
|
|
152
|
+
this.updateRouteMatchState({ componentPathParts: null, match: null, matches, newParams: null });
|
|
152
153
|
this.switchGroup?.setPathMatched(matchId, false);
|
|
153
154
|
}
|
|
154
155
|
}
|
|
156
|
+
updateRouteMatchState({ componentPathParts, match, matches, newParams }) {
|
|
157
|
+
const routeDataChanged = this.routeDataChanged({ componentPathParts, match, newParams });
|
|
158
|
+
this.setInstance({ componentPathParts, match, newParams });
|
|
159
|
+
if (routeDataChanged || this.s.matches != matches) {
|
|
160
|
+
this.setState({
|
|
161
|
+
lastMatchUpdate: routeDataChanged ? this.lastMatchUpdate += 1 : this.s.lastMatchUpdate,
|
|
162
|
+
matches
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
routeDataChanged({ componentPathParts, match, newParams }) {
|
|
167
|
+
const currentComponentPathParts = this.componentPathParts || null;
|
|
168
|
+
const currentMatchParams = this.match?.params || null;
|
|
169
|
+
const nextMatchParams = match?.params || null;
|
|
170
|
+
const componentPathPartsChanged = this.nullableArrayDifferent(currentComponentPathParts, componentPathParts);
|
|
171
|
+
const matchChanged = this.nullableObjectDifferent(currentMatchParams, nextMatchParams);
|
|
172
|
+
const newParamsChanged = this.nullableObjectDifferent(this.newParams, newParams);
|
|
173
|
+
return componentPathPartsChanged || matchChanged || newParamsChanged;
|
|
174
|
+
}
|
|
175
|
+
nullableArrayDifferent(value, nextValue) {
|
|
176
|
+
if (value === null || nextValue === null) {
|
|
177
|
+
return value != nextValue;
|
|
178
|
+
}
|
|
179
|
+
return arrayDifferent(value, nextValue);
|
|
180
|
+
}
|
|
181
|
+
nullableObjectDifferent(value, nextValue) {
|
|
182
|
+
if (value === null || nextValue === null) {
|
|
183
|
+
return value != nextValue;
|
|
184
|
+
}
|
|
185
|
+
return simpleObjectDifferent(value, nextValue, true);
|
|
186
|
+
}
|
|
155
187
|
async loadComponent() {
|
|
156
188
|
// Ignore late async route-component loads after a route switch or discarded mount.
|
|
157
189
|
const requestId = this.loadComponentRequestId + 1;
|
|
@@ -200,4 +232,4 @@ const Route = memo(shapeComponent(class Route extends BaseComponent {
|
|
|
200
232
|
}));
|
|
201
233
|
export { RequireComponentContext, RouteContext, Switch, useParams };
|
|
202
234
|
export default Route;
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInJvdXRlci9yb3V0ZS5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNEQUFzRDtBQUN0RCxPQUFPLEtBQUssRUFBRSxFQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDM0YsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRDQUE0QyxDQUFBO0FBQ3pFLE9BQU8sTUFBTSxFQUFFLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxVQUFVLENBQUE7QUFDckQsT0FBTyxhQUFhLE1BQU0sbUJBQW1CLENBQUE7QUFDN0MsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sSUFBSSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xELE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFBO0FBQzdDLE9BQU8sT0FBTyxNQUFNLG1DQUFtQyxDQUFBO0FBRXZELE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQzVDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUN2QyxNQUFNLHVCQUF1QixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUNuRCxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDeEMsTUFBTSxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBRWpELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxLQUFNLFNBQVEsYUFBYTtJQUNqRSxNQUFNLENBQUMsWUFBWSxHQUFHO1FBQ3BCLEtBQUssRUFBRSxLQUFLO1FBQ1osUUFBUSxFQUFFLEtBQUs7UUFDZixhQUFhLEVBQUUsSUFBSTtLQUNwQixDQUFBO0lBRUQsTUFBTSxDQUFDLFNBQVMsR0FB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QUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFDbEUsQ0FDUCxDQUFBO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxRQUFRLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNqRCw0REFBNEQ7WUFDNUQsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO1FBRUQsT0FBTyxDQUNMLEtBQUMsa0JBQWtCLENBQUMsUUFBUSxJQUFDLEtBQUssRUFBRSxrQkFBa0IsWUFDcEQsS0FBQyxZQUFZLENBQUMsUUFBUSxJQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUNuRCxLQUFDLGFBQWEsQ0FBQyxRQUFRLElBQUMsS0FBSyxFQUFFLFNBQVMsWUFDdEMsTUFBQyxNQUFNLElBQUMsSUFBSSxFQUFFLGVBQWUsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssYUFDL0MsU0FBUyxJQUFJLEtBQUMsU0FBUyxJQUFDLEtBQUssRUFBRSxLQUFLLEdBQUksRUFDeEMsUUFBUSxJQUNGLEdBQ2MsR0FDSCxHQUNJLENBQy9CLENBQUE7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFDLENBQUE7QUFFSCxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUMsQ0FBQTtBQUNqRSxlQUFlLEtBQUssQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1tYXgtZGVwdGgsIHNvcnQtaW1wb3J0cyAqL1xuaW1wb3J0IFJlYWN0LCB7Y3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZU1lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvc2hhcGUtY29tcG9uZW50LmpzXCJcbmltcG9ydCBTd2l0Y2gsIHtDdXJyZW50U3dpdGNoQ29udGV4dH0gZnJvbSBcIi4vc3dpdGNoXCJcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gXCIuLi9iYXNlLWNvbXBvbmVudFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9tZW1vLmpzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgdXNlSTE4biBmcm9tIFwiaTE4bi1vbi1zdGVyb2lkcy9zcmMvdXNlLWkxOG4ubWpzXCJcblxuY29uc3QgQ3VycmVudFBhdGhDb250ZXh0ID0gY3JlYXRlQ29udGV4dChbXSlcbmNvbnN0IFBhcmFtc0NvbnRleHQgPSBjcmVhdGVDb250ZXh0KHt9KVxuY29uc3QgUmVxdWlyZUNvbXBvbmVudENvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpXG5jb25zdCBSb3V0ZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpXG5jb25zdCB1c2VQYXJhbXMgPSAoKSA9PiB1c2VDb250ZXh0KFBhcmFtc0NvbnRleHQpXG5cbmNvbnN0IFJvdXRlID0gbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBSb3V0ZSBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGV4YWN0OiBmYWxzZSxcbiAgICBmYWxsYmFjazogZmFsc2UsXG4gICAgaW5jbHVkZUluUGF0aDogdHJ1ZVxuICB9XG5cbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBjaGlsZHJlbjogUHJvcFR5cGVzLmFueSxcbiAgICBjb21wb25lbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY29tcG9uZW50UGF0aDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBleGFjdDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBmYWxsYmFjazogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBpbmNsdWRlSW5QYXRoOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIG9uTWF0Y2g6IFByb3BUeXBlcy5mdW5jLFxuICAgIHBhdGg6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5pbnN0YW5jZU9mKFJlZ0V4cCldKVxuICB9KVxuXG4gIG1hdGNoID0gbnVsbFxuICBsb2FkQ29tcG9uZW50UmVxdWVzdElkID0gMFxuICBuZXdQYXJhbXMgPSBudWxsXG4gIHBhdGhQYXJ0cyA9IG51bGxcblxuICBzZXR1cCgpIHtcbiAgICBjb25zdCB7dH0gPSB1c2VJMThuKHtuYW1lc3BhY2U6IFwianMuYXBpX21ha2VyLnJvdXRlci5yb3V0ZVwifSlcbiAgICBjb25zdCB7cGF0aH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge3BhdGhzTWF0Y2hlZCwgc3dpdGNoR3JvdXB9ID0gdXNlQ29udGV4dChDdXJyZW50U3dpdGNoQ29udGV4dClcbiAgICBjb25zdCBnaXZlblJvdXRlID0gdXNlQ29udGV4dChSb3V0ZUNvbnRleHQpXG4gICAgY29uc3Qge3BhdGhTaG93bn0gPSBzd2l0Y2hHcm91cC5zXG5cbiAgICB0aGlzLmRlYnVnID0gZmFsc2VcbiAgICB0aGlzLmxvZygoKSA9PiAoe2dpdmVuUm91dGV9KSlcbiAgICB0aGlzLnQgPSB0XG5cbiAgICB0aGlzLnJlcXVpcmVDb21wb25lbnQgPSB1c2VDb250ZXh0KFJlcXVpcmVDb21wb25lbnRDb250ZXh0KVxuICAgIHRoaXMuY3VycmVudFBhcmFtcyA9IHVzZUNvbnRleHQoUGFyYW1zQ29udGV4dClcbiAgICB0aGlzLmN1cnJlbnRQYXRoID0gdXNlQ29udGV4dChDdXJyZW50UGF0aENvbnRleHQpXG4gICAgdGhpcy5zd2l0Y2hHcm91cCA9IHN3aXRjaEdyb3VwXG4gICAgdGhpcy5yb3V0ZVBhcnRzID0gdXNlTWVtbygoKSA9PiBnaXZlblJvdXRlPy5zcGxpdChcIi9cIiksIFtwYXRoLCBnaXZlblJvdXRlXSlcbiAgICB0aGlzLnBhdGhQYXJ0cyA9IHVzZU1lbW8oKCkgPT4gcGF0aD8uc3BsaXQoXCIvXCIpLCBbcGF0aF0pXG5cbiAgICB0aGlzLm5ld1JvdXRlUGFydHMgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoIXBhdGgpIHtcbiAgICAgICAgICBpZiAoZ2l2ZW5Sb3V0ZSA9PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVQYXJ0c1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlUGFydHMuc2xpY2UodGhpcy5wYXRoUGFydHMubGVuZ3RoLCB0aGlzLnJvdXRlUGFydHMubGVuZ3RoKVxuICAgICAgfSxcbiAgICAgIFtnaXZlblJvdXRlXS5jb25jYXQodGhpcy5wYXRoUGFydHMpXG4gICAgKVxuXG4gICAgdGhpcy51c2VTdGF0ZXMoe0NvbXBvbmVudDogbnVsbCwgY29tcG9uZW50Tm90Rm91bmQ6IG51bGwsIG1hdGNoZXM6IGZhbHNlfSlcblxuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLmxvYWRNYXRjaGVzKClcbiAgICB9LCBbZ2l2ZW5Sb3V0ZSwgcGF0aCwgcGF0aHNNYXRjaGVkXSlcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5oYXNTd2l0Y2hNYXRjaCgpICYmICF0aGlzLnMuQ29tcG9uZW50ICYmIHRoaXMucy5tYXRjaGVzKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uTWF0Y2gpIHtcbiAgICAgICAgICB0aGlzLnByb3BzLm9uTWF0Y2goKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLmNoaWxkcmVuICYmICh0aGlzLnByb3BzLnBhdGggfHwgdGhpcy5wcm9wcy5jb21wb25lbnQgfHwgdGhpcy5wcm9wcy5jb21wb25lbnRQYXRoKSkge1xuICAgICAgICAgIHRoaXMubG9hZENvbXBvbmVudCgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZENvbXBvbmVudFJlcXVlc3RJZCArPSAxXG4gICAgICB9XG4gICAgfSwgW3BhdGgsIHBhdGhTaG93biwgdGhpcy5zLm1hdGNoZXNdKVxuICB9XG5cbiAgaGFzU3dpdGNoTWF0Y2ggPSAoKSA9PiB0aGlzLnN3aXRjaEdyb3VwLnMucGF0aFNob3duICYmIHRoaXMuc3dpdGNoR3JvdXAucy5wYXRoU2hvd24gPT0gdGhpcy5wYXRoSWQoKVxuXG4gIHBhdGhJZCgpIHtcbiAgICBjb25zdCB7ZmFsbGJhY2t9ID0gdGhpcy5wXG4gICAgY29uc3Qge3BhdGh9ID0gdGhpcy5wcm9wc1xuICAgIGxldCBwYXRoSWRcblxuICAgIGlmIChmYWxsYmFjaykge1xuICAgICAgcGF0aElkID0gXCJbRkFMTEJBQ0tdXCJcbiAgICB9IGVsc2UgaWYgKHBhdGgpIHtcbiAgICAgIHBhdGhJZCA9IHBhdGhcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aElkID0gXCJbUEFUSC1FTVBUWV1cIlxuICAgIH1cblxuICAgIHJldHVybiBwYXRoSWRcbiAgfVxuXG4gIGxvYWRNYXRjaGVzKCkge1xuICAgIGNvbnN0IHtuZXdSb3V0ZVBhcnRzLCB0fSA9IHRoaXMudHRcbiAgICBjb25zdCB7Y29tcG9uZW50LCBwYXRofSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7ZXhhY3QsIGluY2x1ZGVJblBhdGgsIGZhbGxiYWNrfSA9IHRoaXMucFxuXG4gICAgbGV0IG1hdGNoZXMgPSB0cnVlXG4gICAgY29uc3QgcGFyYW1zID0ge31cbiAgICBjb25zdCBjb21wb25lbnRQYXRoUGFydHMgPSBbLi4udGhpcy5jdXJyZW50UGF0aF1cblxuICAgIHRoaXMubG9nKCgpID0+IFt0aGlzLnByb3BzLnBhdGgsIFwiU3RhcnQgZ2VuZXJhdGluZyBjb21wb25lbnQgcGF0aHNcIiwgSlNPTi5zdHJpbmdpZnkoY29tcG9uZW50UGF0aFBhcnRzKV0pXG5cbiAgICBmb3IgKGNvbnN0IHBhdGhQYXJ0SW5kZXggaW4gdGhpcy5wYXRoUGFydHMpIHtcbiAgICAgIGNvbnN0IHBhdGhQYXJ0ID0gdGhpcy5wYXRoUGFydHNbcGF0aFBhcnRJbmRleF1cbiAgICAgIGNvbnN0IHRyYW5zbGF0ZWRQYXRoUGFydCA9IHQoYHJvdXRlcy4ke3BhdGhQYXJ0fWAsIHtkZWZhdWx0VmFsdWU6IHBhdGhQYXJ0fSlcblxuICAgICAgaWYgKCEocGF0aFBhcnRJbmRleCBpbiB0aGlzLnJvdXRlUGFydHMpKSB7XG4gICAgICAgIHRoaXMubG9nKCgpID0+IGBObyBtYXRjaCBmb3I6ICR7cGF0aFBhcnRJbmRleH1gKVxuICAgICAgICBtYXRjaGVzID0gZmFsc2VcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgcm91dGVQYXJ0ID0gZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMucm91dGVQYXJ0c1twYXRoUGFydEluZGV4XSlcblxuICAgICAgaWYgKHBhdGhQYXJ0LnN0YXJ0c1dpdGgoXCI6XCIpICYmIHJvdXRlUGFydCkge1xuICAgICAgICBjb25zdCBwYXJhbU5hbWUgPSBwYXRoUGFydC5zbGljZSgxLCBwYXRoUGFydC5sZW5ndGgpXG5cbiAgICAgICAgcGFyYW1zW3BhcmFtTmFtZV0gPSByb3V0ZVBhcnRcbiAgICAgIH0gZWxzZSBpZiAodHJhbnNsYXRlZFBhdGhQYXJ0ICE9IHJvdXRlUGFydCkge1xuICAgICAgICBtYXRjaGVzID0gZmFsc2VcbiAgICAgICAgYnJlYWtcbiAgICAgIH0gZWxzZSBpZiAoIWNvbXBvbmVudCAmJiBpbmNsdWRlSW5QYXRoKSB7XG4gICAgICAgIGNvbXBvbmVudFBhdGhQYXJ0cy5wdXNoKHBhdGhQYXJ0KVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChleGFjdCAmJiBuZXdSb3V0ZVBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubG9nKCgpID0+IFtcIkV4YWN0IGFuZCBtb3JlIHJvdXRlIHBhcnRzXCIsIHtuZXdSb3V0ZVBhcnRzLCBwYXRoUGFydHM6IHRoaXMucGF0aFBhcnRzLCByb3V0ZVBhcnRzOiB0aGlzLnJvdXRlUGFydHN9XSlcbiAgICAgIG1hdGNoZXMgPSBmYWxzZVxuICAgIH0gZWxzZSBpZiAobWF0Y2hlcyAmJiBwYXRoKSB7XG4gICAgICBtYXRjaGVzID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5yb3V0ZVBhcnRzLmxlbmd0aCA9PSAwKSB7XG4gICAgICBtYXRjaGVzID0gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoSWQgPSB0aGlzLnBhdGhJZCgpXG5cbiAgICBpZiAoIW1hdGNoZXMgJiYgZmFsbGJhY2spIHtcbiAgICAgIG1hdGNoZXMgPSB0cnVlXG4gICAgfVxuXG4gICAgdGhpcy5sb2coKCkgPT4gW3RoaXMucHJvcHMucGF0aCwgXCJFbmQgZ2VuZXJhdGluZyBjb21wb25lbnQgcGF0aHNcIiwgSlNPTi5zdHJpbmdpZnkoY29tcG9uZW50UGF0aFBhcnRzKSwge21hdGNoZXN9XSlcblxuICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICBpZiAoY29tcG9uZW50ICYmIGluY2x1ZGVJblBhdGgpIHtcbiAgICAgICAgY29tcG9uZW50UGF0aFBhcnRzLnB1c2goY29tcG9uZW50KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdQYXJhbXMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmN1cnJlbnRQYXJhbXMsIHBhcmFtcykgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItb2JqZWN0LXNwcmVhZFxuXG4gICAgICB0aGlzLnNldEluc3RhbmNlKHtjb21wb25lbnRQYXRoUGFydHMsIG1hdGNoOiB7cGFyYW1zfSwgbmV3UGFyYW1zfSlcbiAgICAgIHRoaXMuc2V0U3RhdGUoe21hdGNoZXN9KVxuICAgICAgdGhpcy5zd2l0Y2hHcm91cD8uc2V0UGF0aE1hdGNoZWQobWF0Y2hJZCwgdHJ1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRJbnN0YW5jZSh7Y29tcG9uZW50UGF0aFBhcnRzOiBudWxsLCBtYXRjaDogbnVsbCwgbmV3UGFyYW1zOiBudWxsfSlcbiAgICAgIHRoaXMuc2V0U3RhdGUoe21hdGNoZXN9KVxuICAgICAgdGhpcy5zd2l0Y2hHcm91cD8uc2V0UGF0aE1hdGNoZWQobWF0Y2hJZCwgZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZENvbXBvbmVudCgpIHtcbiAgICAvLyBJZ25vcmUgbGF0ZSBhc3luYyByb3V0ZS1jb21wb25lbnQgbG9hZHMgYWZ0ZXIgYSByb3V0ZSBzd2l0Y2ggb3IgZGlzY2FyZGVkIG1vdW50LlxuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMubG9hZENvbXBvbmVudFJlcXVlc3RJZCArIDFcblxuICAgIHRoaXMubG9hZENvbXBvbmVudFJlcXVlc3RJZCA9IHJlcXVlc3RJZFxuICAgIGNvbnN0IGFjdHVhbENvbXBvbmVudFBhdGggPSB0aGlzLnByb3BzLmNvbXBvbmVudFBhdGggfHwgdGhpcy50dC5jb21wb25lbnRQYXRoUGFydHMuam9pbihcIi9cIilcbiAgICBsZXQgQ29tcG9uZW50XG5cbiAgICB0aGlzLmxvZygoKSA9PiBbXCJsb2FkQ29tcG9uZW50XCIsIHtjb21wb25lbnRQYXRoOiB0aGlzLnByb3BzLmNvbXBvbmVudFBhdGgsIGNvbXBvbmVudFBhdGhQYXJ0czogdGhpcy5jb21wb25lbnRQYXRoUGFydHMsIGFjdHVhbENvbXBvbmVudFBhdGh9XSlcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb21wb25lbnRJbXBvcnQgPSBhd2FpdCB0aGlzLnR0LnJlcXVpcmVDb21wb25lbnQoe3JvdXRlRGVmaW5pdGlvbjoge2NvbXBvbmVudDogYWN0dWFsQ29tcG9uZW50UGF0aH19KVxuXG4gICAgICBDb21wb25lbnQgPSBjb21wb25lbnRJbXBvcnRcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihgQ291bGRuJ3QgZmluZCBjb21wb25lbnQ6ICR7YWN0dWFsQ29tcG9uZW50UGF0aH1gKVxuXG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cblxuICAgIGlmIChyZXF1ZXN0SWQgIT0gdGhpcy5sb2FkQ29tcG9uZW50UmVxdWVzdElkKSByZXR1cm5cblxuICAgIHRoaXMuc2V0U3RhdGUoe0NvbXBvbmVudCwgY29tcG9uZW50Tm90Rm91bmQ6ICFDb21wb25lbnR9KVxuICB9XG5cbiAgbG9nKGNhbGxiYWNrQXJncykge1xuICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICBsZXQgYXJncyA9IGNhbGxiYWNrQXJncygpXG5cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcmdzKSkgYXJncyA9IFthcmdzXVxuXG4gICAgICBjb25zb2xlLmxvZyguLi5hcmdzKVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7Y29tcG9uZW50UGF0aFBhcnRzLCBtYXRjaCwgbmV3UGFyYW1zLCBuZXdSb3V0ZVBhcnRzfSA9IHRoaXMudHRcbiAgICBjb25zdCB7Y2hpbGRyZW4sIGNvbXBvbmVudCwgcGF0aH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge0NvbXBvbmVudCwgY29tcG9uZW50Tm90Rm91bmQsIG1hdGNoZXN9ID0gdGhpcy5zXG5cbiAgICBpZiAoIW1hdGNoZXMgfHwgIXRoaXMuaGFzU3dpdGNoTWF0Y2goKSkge1xuICAgICAgLy8gUm91dGUgaXNuJ3QgbWF0Y2hpbmcgYW5kIHNob3VsZG4ndCBiZSByZW5kZXJlZCBhdCBhbGwuXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGlmICghQ29tcG9uZW50ICYmICFjaGlsZHJlbiAmJiAhY29tcG9uZW50Tm90Rm91bmQpIHtcbiAgICAgIC8vIFJvdXRlIGlzIG1hdGNoaW5nIGJ1dCBoYXNuJ3QgYmVlbiBsb2FkZWQgeWV0LlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICB7XCJMb2FkaW5nIFwifVxuICAgICAgICAgIHtjb21wb25lbnQgfHwgdGhpcy5wcm9wcy5jb21wb25lbnRQYXRoIHx8IGNvbXBvbmVudFBhdGhQYXJ0cy5qb2luKFwiL1wiKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKCFDb21wb25lbnQgJiYgIWNoaWxkcmVuICYmIGNvbXBvbmVudE5vdEZvdW5kKSB7XG4gICAgICAvLyBEb24ndCByZW5kZXIgYW55dGhpbmcgaWYgdGhlIGNvbXBvbmVudCBjb3VsZG4ndCBiZSBmb3VuZC5cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxDdXJyZW50UGF0aENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbXBvbmVudFBhdGhQYXJ0c30+XG4gICAgICAgIDxSb3V0ZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e25ld1JvdXRlUGFydHMuam9pbihcIi9cIil9PlxuICAgICAgICAgIDxQYXJhbXNDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtuZXdQYXJhbXN9PlxuICAgICAgICAgICAgPFN3aXRjaCBuYW1lPXtgcm91dGUtZ3JvdXAtJHtwYXRofWB9IHNpbmdsZT17ZmFsc2V9PlxuICAgICAgICAgICAgICB7Q29tcG9uZW50ICYmIDxDb21wb25lbnQgbWF0Y2g9e21hdGNofSAvPn1cbiAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgPC9Td2l0Y2g+XG4gICAgICAgICAgPC9QYXJhbXNDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICA8L1JvdXRlQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvQ3VycmVudFBhdGhDb250ZXh0LlByb3ZpZGVyPlxuICAgIClcbiAgfVxufSkpXG5cbmV4cG9ydCB7UmVxdWlyZUNvbXBvbmVudENvbnRleHQsIFJvdXRlQ29udGV4dCwgU3dpdGNoLCB1c2VQYXJhbXN9XG5leHBvcnQgZGVmYXVsdCBSb3V0ZVxuIl19
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInJvdXRlci9yb3V0ZS5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNEQUFzRDtBQUN0RCxPQUFPLEtBQUssRUFBRSxFQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDM0YsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRDQUE0QyxDQUFBO0FBQ3pFLE9BQU8sTUFBTSxFQUFFLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxVQUFVLENBQUE7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFBO0FBQzNGLE9BQU8sYUFBYSxNQUFNLG1CQUFtQixDQUFBO0FBQzdDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLElBQUksTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRCxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLE9BQU8sTUFBTSxtQ0FBbUMsQ0FBQTtBQUV2RCxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUM1QyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDdkMsTUFBTSx1QkFBdUIsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDbkQsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ3hDLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUVqRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sS0FBTSxTQUFRLGFBQWE7SUFDakUsTUFBTSxDQUFDLFlBQVksR0FBRztRQUNwQixLQUFLLEVBQUUsS0FBSztRQUNaLFFBQVEsRUFBRSxLQUFL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LElBQUksRUFBRSxlQUFlLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLGFBQy9DLFNBQVMsSUFBSSxLQUFDLFNBQVMsSUFBQyxLQUFLLEVBQUUsS0FBSyxHQUFJLEVBQ3hDLFFBQVEsSUFDRixHQUNjLEdBQ0gsR0FDSSxDQUMvQixDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQyxDQUFBO0FBRUgsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLENBQUE7QUFDakUsZUFBZSxLQUFLLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtbWF4LWRlcHRoLCBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCBSZWFjdCwge2NyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQgU3dpdGNoLCB7Q3VycmVudFN3aXRjaENvbnRleHR9IGZyb20gXCIuL3N3aXRjaFwiXG5pbXBvcnQge2FycmF5RGlmZmVyZW50LCBzaW1wbGVPYmplY3REaWZmZXJlbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9kaWZmLXV0aWxzLmpzXCJcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gXCIuLi9iYXNlLWNvbXBvbmVudFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9tZW1vLmpzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgdXNlSTE4biBmcm9tIFwiaTE4bi1vbi1zdGVyb2lkcy9zcmMvdXNlLWkxOG4ubWpzXCJcblxuY29uc3QgQ3VycmVudFBhdGhDb250ZXh0ID0gY3JlYXRlQ29udGV4dChbXSlcbmNvbnN0IFBhcmFtc0NvbnRleHQgPSBjcmVhdGVDb250ZXh0KHt9KVxuY29uc3QgUmVxdWlyZUNvbXBvbmVudENvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpXG5jb25zdCBSb3V0ZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpXG5jb25zdCB1c2VQYXJhbXMgPSAoKSA9PiB1c2VDb250ZXh0KFBhcmFtc0NvbnRleHQpXG5cbmNvbnN0IFJvdXRlID0gbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBSb3V0ZSBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGV4YWN0OiBmYWxzZSxcbiAgICBmYWxsYmFjazogZmFsc2UsXG4gICAgaW5jbHVkZUluUGF0aDogdHJ1ZVxuICB9XG5cbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBjaGlsZHJlbjogUHJvcFR5cGVzLmFueSxcbiAgICBjb21wb25lbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY29tcG9uZW50UGF0aDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBleGFjdDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBmYWxsYmFjazogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBpbmNsdWRlSW5QYXRoOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIG9uTWF0Y2g6IFByb3BUeXBlcy5mdW5jLFxuICAgIHBhdGg6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5pbnN0YW5jZU9mKFJlZ0V4cCldKVxuICB9KVxuXG4gIG1hdGNoID0gbnVsbFxuICBsb2FkQ29tcG9uZW50UmVxdWVzdElkID0gMFxuICBjb21wb25lbnRQYXRoUGFydHMgPSBbXVxuICBsYXN0TWF0Y2hVcGRhdGUgPSAwXG4gIG5ld1BhcmFtcyA9IG51bGxcbiAgcGF0aFBhcnRzID0gbnVsbFxuXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHt0fSA9IHVzZUkxOG4oe25hbWVzcGFjZTogXCJqcy5hcGlfbWFrZXIucm91dGVyLnJvdXRlXCJ9KVxuICAgIGNvbnN0IHtwYXRofSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7cGF0aHNNYXRjaGVkLCBzd2l0Y2hHcm91cH0gPSB1c2VDb250ZXh0KEN1cnJlbnRTd2l0Y2hDb250ZXh0KVxuICAgIGNvbnN0IGdpdmVuUm91dGUgPSB1c2VDb250ZXh0KFJvdXRlQ29udGV4dClcbiAgICBjb25zdCB7cGF0aFNob3dufSA9IHN3aXRjaEdyb3VwLnNcblxuICAgIHRoaXMuZGVidWcgPSBmYWxzZVxuICAgIHRoaXMubG9nKCgpID0+ICh7Z2l2ZW5Sb3V0ZX0pKVxuICAgIHRoaXMudCA9IHRcblxuICAgIHRoaXMucmVxdWlyZUNvbXBvbmVudCA9IHVzZUNvbnRleHQoUmVxdWlyZUNvbXBvbmVudENvbnRleHQpXG4gICAgdGhpcy5jdXJyZW50UGFyYW1zID0gdXNlQ29udGV4dChQYXJhbXNDb250ZXh0KVxuICAgIHRoaXMuY3VycmVudFBhdGggPSB1c2VDb250ZXh0KEN1cnJlbnRQYXRoQ29udGV4dClcbiAgICB0aGlzLnN3aXRjaEdyb3VwID0gc3dpdGNoR3JvdXBcbiAgICB0aGlzLnJvdXRlUGFydHMgPSB1c2VNZW1vKCgpID0+IGdpdmVuUm91dGU/LnNwbGl0KFwiL1wiKSwgW3BhdGgsIGdpdmVuUm91dGVdKVxuICAgIHRoaXMucGF0aFBhcnRzID0gdXNlTWVtbygoKSA9PiBwYXRoPy5zcGxpdChcIi9cIiksIFtwYXRoXSlcblxuICAgIHRoaXMubmV3Um91dGVQYXJ0cyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICghcGF0aCkge1xuICAgICAgICAgIGlmIChnaXZlblJvdXRlID09IFwiXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBbXVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZVBhcnRzXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVQYXJ0cy5zbGljZSh0aGlzLnBhdGhQYXJ0cy5sZW5ndGgsIHRoaXMucm91dGVQYXJ0cy5sZW5ndGgpXG4gICAgICB9LFxuICAgICAgW2dpdmVuUm91dGVdLmNvbmNhdCh0aGlzLnBhdGhQYXJ0cylcbiAgICApXG5cbiAgICB0aGlzLnVzZVN0YXRlcyh7Q29tcG9uZW50OiBudWxsLCBjb21wb25lbnROb3RGb3VuZDogbnVsbCwgbGFzdE1hdGNoVXBkYXRlOiAwLCBtYXRjaGVzOiBmYWxzZX0pXG5cbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkTWF0Y2hlcygpXG4gICAgfSwgW2dpdmVuUm91dGUsIHBhdGgsIHBhdGhzTWF0Y2hlZF0pXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaGFzU3dpdGNoTWF0Y2goKSAmJiAhdGhpcy5zLkNvbXBvbmVudCAmJiB0aGlzLnMubWF0Y2hlcykge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbk1hdGNoKSB7XG4gICAgICAgICAgdGhpcy5wcm9wcy5vbk1hdGNoKClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5jaGlsZHJlbiAmJiAodGhpcy5wcm9wcy5wYXRoIHx8IHRoaXMucHJvcHMuY29tcG9uZW50IHx8IHRoaXMucHJvcHMuY29tcG9uZW50UGF0aCkpIHtcbiAgICAgICAgICB0aGlzLmxvYWRDb21wb25lbnQoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRDb21wb25lbnRSZXF1ZXN0SWQgKz0gMVxuICAgICAgfVxuICAgIH0sIFtwYXRoLCBwYXRoU2hvd24sIHRoaXMucy5tYXRjaGVzXSlcbiAgfVxuXG4gIGhhc1N3aXRjaE1hdGNoID0gKCkgPT4gdGhpcy5zd2l0Y2hHcm91cC5zLnBhdGhTaG93biAmJiB0aGlzLnN3aXRjaEdyb3VwLnMucGF0aFNob3duID09IHRoaXMucGF0aElkKClcblxuICBwYXRoSWQoKSB7XG4gICAgY29uc3Qge2ZhbGxiYWNrfSA9IHRoaXMucFxuICAgIGNvbnN0IHtwYXRofSA9IHRoaXMucHJvcHNcbiAgICBsZXQgcGF0aElkXG5cbiAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgIHBhdGhJZCA9IFwiW0ZBTExCQUNLXVwiXG4gICAgfSBlbHNlIGlmIChwYXRoKSB7XG4gICAgICBwYXRoSWQgPSBwYXRoXG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdGhJZCA9IFwiW1BBVEgtRU1QVFldXCJcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aElkXG4gIH1cblxuICBsb2FkTWF0Y2hlcygpIHtcbiAgICBjb25zdCB7bmV3Um91dGVQYXJ0cywgdH0gPSB0aGlzLnR0XG4gICAgY29uc3Qge2NvbXBvbmVudCwgcGF0aH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge2V4YWN0LCBpbmNsdWRlSW5QYXRoLCBmYWxsYmFja30gPSB0aGlzLnBcblxuICAgIGxldCBtYXRjaGVzID0gdHJ1ZVxuICAgIGNvbnN0IHBhcmFtcyA9IHt9XG4gICAgY29uc3QgY29tcG9uZW50UGF0aFBhcnRzID0gWy4uLnRoaXMuY3VycmVudFBhdGhdXG5cbiAgICB0aGlzLmxvZygoKSA9PiBbdGhpcy5wcm9wcy5wYXRoLCBcIlN0YXJ0IGdlbmVyYXRpbmcgY29tcG9uZW50IHBhdGhzXCIsIEpTT04uc3RyaW5naWZ5KGNvbXBvbmVudFBhdGhQYXJ0cyldKVxuXG4gICAgZm9yIChjb25zdCBwYXRoUGFydEluZGV4IGluIHRoaXMucGF0aFBhcnRzKSB7XG4gICAgICBjb25zdCBwYXRoUGFydCA9IHRoaXMucGF0aFBhcnRzW3BhdGhQYXJ0SW5kZXhdXG4gICAgICBjb25zdCB0cmFuc2xhdGVkUGF0aFBhcnQgPSB0KGByb3V0ZXMuJHtwYXRoUGFydH1gLCB7ZGVmYXVsdFZhbHVlOiBwYXRoUGFydH0pXG5cbiAgICAgIGlmICghKHBhdGhQYXJ0SW5kZXggaW4gdGhpcy5yb3V0ZVBhcnRzKSkge1xuICAgICAgICB0aGlzLmxvZygoKSA9PiBgTm8gbWF0Y2ggZm9yOiAke3BhdGhQYXJ0SW5kZXh9YClcbiAgICAgICAgbWF0Y2hlcyA9IGZhbHNlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJvdXRlUGFydCA9IGRlY29kZVVSSUNvbXBvbmVudCh0aGlzLnJvdXRlUGFydHNbcGF0aFBhcnRJbmRleF0pXG5cbiAgICAgIGlmIChwYXRoUGFydC5zdGFydHNXaXRoKFwiOlwiKSAmJiByb3V0ZVBhcnQpIHtcbiAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gcGF0aFBhcnQuc2xpY2UoMSwgcGF0aFBhcnQubGVuZ3RoKVxuXG4gICAgICAgIHBhcmFtc1twYXJhbU5hbWVdID0gcm91dGVQYXJ0XG4gICAgICB9IGVsc2UgaWYgKHRyYW5zbGF0ZWRQYXRoUGFydCAhPSByb3V0ZVBhcnQpIHtcbiAgICAgICAgbWF0Y2hlcyA9IGZhbHNlXG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2UgaWYgKCFjb21wb25lbnQgJiYgaW5jbHVkZUluUGF0aCkge1xuICAgICAgICBjb21wb25lbnRQYXRoUGFydHMucHVzaChwYXRoUGFydClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXhhY3QgJiYgbmV3Um91dGVQYXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmxvZygoKSA9PiBbXCJFeGFjdCBhbmQgbW9yZSByb3V0ZSBwYXJ0c1wiLCB7bmV3Um91dGVQYXJ0cywgcGF0aFBhcnRzOiB0aGlzLnBhdGhQYXJ0cywgcm91dGVQYXJ0czogdGhpcy5yb3V0ZVBhcnRzfV0pXG4gICAgICBtYXRjaGVzID0gZmFsc2VcbiAgICB9IGVsc2UgaWYgKG1hdGNoZXMgJiYgcGF0aCkge1xuICAgICAgbWF0Y2hlcyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHRoaXMucm91dGVQYXJ0cy5sZW5ndGggPT0gMCkge1xuICAgICAgbWF0Y2hlcyA9IHRydWVcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaElkID0gdGhpcy5wYXRoSWQoKVxuXG4gICAgaWYgKCFtYXRjaGVzICYmIGZhbGxiYWNrKSB7XG4gICAgICBtYXRjaGVzID0gdHJ1ZVxuICAgIH1cblxuICAgIHRoaXMubG9nKCgpID0+IFt0aGlzLnByb3BzLnBhdGgsIFwiRW5kIGdlbmVyYXRpbmcgY29tcG9uZW50IHBhdGhzXCIsIEpTT04uc3RyaW5naWZ5KGNvbXBvbmVudFBhdGhQYXJ0cyksIHttYXRjaGVzfV0pXG5cbiAgICBpZiAobWF0Y2hlcykge1xuICAgICAgaWYgKGNvbXBvbmVudCAmJiBpbmNsdWRlSW5QYXRoKSB7XG4gICAgICAgIGNvbXBvbmVudFBhdGhQYXJ0cy5wdXNoKGNvbXBvbmVudClcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3UGFyYW1zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jdXJyZW50UGFyYW1zLCBwYXJhbXMpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJlZmVyLW9iamVjdC1zcHJlYWRcblxuICAgICAgdGhpcy51cGRhdGVSb3V0ZU1hdGNoU3RhdGUoe2NvbXBvbmVudFBhdGhQYXJ0cywgbWF0Y2g6IHtwYXJhbXN9LCBtYXRjaGVzLCBuZXdQYXJhbXN9KVxuICAgICAgdGhpcy5zd2l0Y2hHcm91cD8uc2V0UGF0aE1hdGNoZWQobWF0Y2hJZCwgdHJ1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVSb3V0ZU1hdGNoU3RhdGUoe2NvbXBvbmVudFBhdGhQYXJ0czogbnVsbCwgbWF0Y2g6IG51bGwsIG1hdGNoZXMsIG5ld1BhcmFtczogbnVsbH0pXG4gICAgICB0aGlzLnN3aXRjaEdyb3VwPy5zZXRQYXRoTWF0Y2hlZChtYXRjaElkLCBmYWxzZSlcbiAgICB9XG4gIH1cblxuICB1cGRhdGVSb3V0ZU1hdGNoU3RhdGUoe2NvbXBvbmVudFBhdGhQYXJ0cywgbWF0Y2gsIG1hdGNoZXMsIG5ld1BhcmFtc30pIHtcbiAgICBjb25zdCByb3V0ZURhdGFDaGFuZ2VkID0gdGhpcy5yb3V0ZURhdGFDaGFuZ2VkKHtjb21wb25lbnRQYXRoUGFydHMsIG1hdGNoLCBuZXdQYXJhbXN9KVxuXG4gICAgdGhpcy5zZXRJbnN0YW5jZSh7Y29tcG9uZW50UGF0aFBhcnRzLCBtYXRjaCwgbmV3UGFyYW1zfSlcbiAgICBpZiAocm91dGVEYXRhQ2hhbmdlZCB8fCB0aGlzLnMubWF0Y2hlcyAhPSBtYXRjaGVzKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgbGFzdE1hdGNoVXBkYXRlOiByb3V0ZURhdGFDaGFuZ2VkID8gdGhpcy5sYXN0TWF0Y2hVcGRhdGUgKz0gMSA6IHRoaXMucy5sYXN0TWF0Y2hVcGRhdGUsXG4gICAgICAgIG1hdGNoZXNcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcm91dGVEYXRhQ2hhbmdlZCh7Y29tcG9uZW50UGF0aFBhcnRzLCBtYXRjaCwgbmV3UGFyYW1zfSkge1xuICAgIGNvbnN0IGN1cnJlbnRDb21wb25lbnRQYXRoUGFydHMgPSB0aGlzLmNvbXBvbmVudFBhdGhQYXJ0cyB8fCBudWxsXG4gICAgY29uc3QgY3VycmVudE1hdGNoUGFyYW1zID0gdGhpcy5tYXRjaD8ucGFyYW1zIHx8IG51bGxcbiAgICBjb25zdCBuZXh0TWF0Y2hQYXJhbXMgPSBtYXRjaD8ucGFyYW1zIHx8IG51bGxcbiAgICBjb25zdCBjb21wb25lbnRQYXRoUGFydHNDaGFuZ2VkID0gdGhpcy5udWxsYWJsZUFycmF5RGlmZmVyZW50KGN1cnJlbnRDb21wb25lbnRQYXRoUGFydHMsIGNvbXBvbmVudFBhdGhQYXJ0cylcbiAgICBjb25zdCBtYXRjaENoYW5nZWQgPSB0aGlzLm51bGxhYmxlT2JqZWN0RGlmZmVyZW50KGN1cnJlbnRNYXRjaFBhcmFtcywgbmV4dE1hdGNoUGFyYW1zKVxuICAgIGNvbnN0IG5ld1BhcmFtc0NoYW5nZWQgPSB0aGlzLm51bGxhYmxlT2JqZWN0RGlmZmVyZW50KHRoaXMubmV3UGFyYW1zLCBuZXdQYXJhbXMpXG5cbiAgICByZXR1cm4gY29tcG9uZW50UGF0aFBhcnRzQ2hhbmdlZCB8fCBtYXRjaENoYW5nZWQgfHwgbmV3UGFyYW1zQ2hhbmdlZFxuICB9XG5cbiAgbnVsbGFibGVBcnJheURpZmZlcmVudCh2YWx1ZSwgbmV4dFZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IG5leHRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHZhbHVlICE9IG5leHRWYWx1ZVxuICAgIH1cblxuICAgIHJldHVybiBhcnJheURpZmZlcmVudCh2YWx1ZSwgbmV4dFZhbHVlKVxuICB9XG5cbiAgbnVsbGFibGVPYmplY3REaWZmZXJlbnQodmFsdWUsIG5leHRWYWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCBuZXh0VmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPSBuZXh0VmFsdWVcbiAgICB9XG5cbiAgICByZXR1cm4gc2ltcGxlT2JqZWN0RGlmZmVyZW50KHZhbHVlLCBuZXh0VmFsdWUsIHRydWUpXG4gIH1cblxuICBhc3luYyBsb2FkQ29tcG9uZW50KCkge1xuICAgIC8vIElnbm9yZSBsYXRlIGFzeW5jIHJvdXRlLWNvbXBvbmVudCBsb2FkcyBhZnRlciBhIHJvdXRlIHN3aXRjaCBvciBkaXNjYXJkZWQgbW91bnQuXG4gICAgY29uc3QgcmVxdWVzdElkID0gdGhpcy5sb2FkQ29tcG9uZW50UmVxdWVzdElkICsgMVxuXG4gICAgdGhpcy5sb2FkQ29tcG9uZW50UmVxdWVzdElkID0gcmVxdWVzdElkXG4gICAgY29uc3QgYWN0dWFsQ29tcG9uZW50UGF0aCA9IHRoaXMucHJvcHMuY29tcG9uZW50UGF0aCB8fCB0aGlzLnR0LmNvbXBvbmVudFBhdGhQYXJ0cy5qb2luKFwiL1wiKVxuICAgIGxldCBDb21wb25lbnRcblxuICAgIHRoaXMubG9nKCgpID0+IFtcImxvYWRDb21wb25lbnRcIiwge2NvbXBvbmVudFBhdGg6IHRoaXMucHJvcHMuY29tcG9uZW50UGF0aCwgY29tcG9uZW50UGF0aFBhcnRzOiB0aGlzLmNvbXBvbmVudFBhdGhQYXJ0cywgYWN0dWFsQ29tcG9uZW50UGF0aH1dKVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudEltcG9ydCA9IGF3YWl0IHRoaXMudHQucmVxdWlyZUNvbXBvbmVudCh7cm91dGVEZWZpbml0aW9uOiB7Y29tcG9uZW50OiBhY3R1YWxDb21wb25lbnRQYXRofX0pXG5cbiAgICAgIENvbXBvbmVudCA9IGNvbXBvbmVudEltcG9ydFxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBDb3VsZG4ndCBmaW5kIGNvbXBvbmVudDogJHthY3R1YWxDb21wb25lbnRQYXRofWApXG5cbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuXG4gICAgaWYgKHJlcXVlc3RJZCAhPSB0aGlzLmxvYWRDb21wb25lbnRSZXF1ZXN0SWQpIHJldHVyblxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7Q29tcG9uZW50LCBjb21wb25lbnROb3RGb3VuZDogIUNvbXBvbmVudH0pXG4gIH1cblxuICBsb2coY2FsbGJhY2tBcmdzKSB7XG4gICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgIGxldCBhcmdzID0gY2FsbGJhY2tBcmdzKClcblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFyZ3MpKSBhcmdzID0gW2FyZ3NdXG5cbiAgICAgIGNvbnNvbGUubG9nKC4uLmFyZ3MpXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtjb21wb25lbnRQYXRoUGFydHMsIG1hdGNoLCBuZXdQYXJhbXMsIG5ld1JvdXRlUGFydHN9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtjaGlsZHJlbiwgY29tcG9uZW50LCBwYXRofSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7Q29tcG9uZW50LCBjb21wb25lbnROb3RGb3VuZCwgbWF0Y2hlc30gPSB0aGlzLnNcblxuICAgIGlmICghbWF0Y2hlcyB8fCAhdGhpcy5oYXNTd2l0Y2hNYXRjaCgpKSB7XG4gICAgICAvLyBSb3V0ZSBpc24ndCBtYXRjaGluZyBhbmQgc2hvdWxkbid0IGJlIHJlbmRlcmVkIGF0IGFsbC5cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgaWYgKCFDb21wb25lbnQgJiYgIWNoaWxkcmVuICYmICFjb21wb25lbnROb3RGb3VuZCkge1xuICAgICAgLy8gUm91dGUgaXMgbWF0Y2hpbmcgYnV0IGhhc24ndCBiZWVuIGxvYWRlZCB5ZXQuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIHtcIkxvYWRpbmcgXCJ9XG4gICAgICAgICAge2NvbXBvbmVudCB8fCB0aGlzLnByb3BzLmNvbXBvbmVudFBhdGggfHwgY29tcG9uZW50UGF0aFBhcnRzLmpvaW4oXCIvXCIpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoIUNvbXBvbmVudCAmJiAhY2hpbGRyZW4gJiYgY29tcG9uZW50Tm90Rm91bmQpIHtcbiAgICAgIC8vIERvbid0IHJlbmRlciBhbnl0aGluZyBpZiB0aGUgY29tcG9uZW50IGNvdWxkbid0IGJlIGZvdW5kLlxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEN1cnJlbnRQYXRoQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y29tcG9uZW50UGF0aFBhcnRzfT5cbiAgICAgICAgPFJvdXRlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bmV3Um91dGVQYXJ0cy5qb2luKFwiL1wiKX0+XG4gICAgICAgICAgPFBhcmFtc0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e25ld1BhcmFtc30+XG4gICAgICAgICAgICA8U3dpdGNoIG5hbWU9e2Byb3V0ZS1ncm91cC0ke3BhdGh9YH0gc2luZ2xlPXtmYWxzZX0+XG4gICAgICAgICAgICAgIHtDb21wb25lbnQgJiYgPENvbXBvbmVudCBtYXRjaD17bWF0Y2h9IC8+fVxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICA8L1BhcmFtc0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgIDwvUm91dGVDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9DdXJyZW50UGF0aENvbnRleHQuUHJvdmlkZXI+XG4gICAgKVxuICB9XG59KSlcblxuZXhwb3J0IHtSZXF1aXJlQ29tcG9uZW50Q29udGV4dCwgUm91dGVDb250ZXh0LCBTd2l0Y2gsIHVzZVBhcmFtc31cbmV4cG9ydCBkZWZhdWx0IFJvdXRlXG4iXX0=
|