@jax-data-science/sci-image-visualizer 0.2.11 → 0.2.12
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.
|
@@ -58,24 +58,24 @@ export class YoloSegmenterService {
|
|
|
58
58
|
// status from tile counts here would just fight it.
|
|
59
59
|
onStatus: (s) => progress?.onStatus?.(s),
|
|
60
60
|
});
|
|
61
|
-
//
|
|
62
|
-
//
|
|
63
|
-
//
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
}
|
|
61
|
+
// A detection without an outline is still a detection.
|
|
62
|
+
//
|
|
63
|
+
// These used to be dropped, which quietly emptied the entire result in
|
|
64
|
+
// detection mode: no masks means no polygons, so every object was
|
|
65
|
+
// discarded and the caller saw nothing at all. The server does not work
|
|
66
|
+
// that way either — it always writes a box feature and only *adds*
|
|
67
|
+
// segmentation outlines when asked. Callers get the box and decide what to
|
|
68
|
+
// do with it.
|
|
69
|
+
const detections = result.detections.map((d) => ({
|
|
70
|
+
polygons: (d.polygons ?? []).map((p) => ({
|
|
71
|
+
exterior: p.exterior.map(([x, y]) => [x, y]),
|
|
72
|
+
holes: p.holes.map((h) => h.map(([x, y]) => [x, y])),
|
|
73
|
+
})),
|
|
74
|
+
box: [d.box[0], d.box[1], d.box[2], d.box[3]],
|
|
75
|
+
score: d.score,
|
|
76
|
+
classId: d.classId,
|
|
77
|
+
className: d.className ?? `class${d.classId}`,
|
|
78
|
+
}));
|
|
79
79
|
return {
|
|
80
80
|
detections,
|
|
81
81
|
width: result.width,
|
|
@@ -169,4 +169,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
169
169
|
type: Injectable,
|
|
170
170
|
args: [{ providedIn: 'root' }]
|
|
171
171
|
}] });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieW9sby1zZWdtZW50ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdG9vbGJhci9zZWdtZW50YXRpb24veW9sby1zZWdtZW50ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFxQixNQUFNLHVCQUF1QixDQUFDOztBQVcvRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUFEakM7UUFFbUIsY0FBUyxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBQzdDLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztLQWtLdEU7SUFoS0MsS0FBSyxDQUFDLGdCQUFnQixDQUNwQixLQUFpRSxFQUNqRSxPQUErQixFQUFFLEVBQ2pDLFFBQWtDO1FBRWxDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUN4RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXZDLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FDN0IsT0FBTyxFQUNQLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2hCLElBQUksS0FBSztnQkFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ2xELFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxJQUFJ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QUMsZUFBZSxPQUFPLDhDQUE4QyxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs4R0FuS1Usb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FEUCxNQUFNOzsyRkFDbkIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldE9ydFdhc21CYXNlIH0gZnJvbSAnLi9vcnQtcnVudGltZS1jb25maWcnO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdFlvbG9Nb2RlbElkLCBnZXRZb2xvTW9kZWwsIHR5cGUgWW9sb01vZGVsRGVmIH0gZnJvbSAnLi95b2xvLW1vZGVsLXJlZ2lzdHJ5JztcblxuaW1wb3J0IHR5cGUge1xuICBJSW5zdGFuY2VTZWdtZW50ZXIsXG4gIEluc3RhbmNlRGV0ZWN0aW9uLFxuICBJbnN0YW5jZVNlZ21lbnRhdGlvbixcbiAgSW5zdGFuY2VTZWdtZW50T3B0aW9ucyxcbiAgSW5zdGFuY2VTZWdtZW50UHJvZ3Jlc3MsXG59IGZyb20gJy4uLy4uL2NvbnRyYWN0cy9pbnN0YW5jZS1zZWdtZW50ZXIuY29udHJhY3QnO1xuaW1wb3J0IHR5cGUgeyBZb2xvU2VnbWVudGVyIH0gZnJvbSAneW9sby1zZWdkZXRlY3QtanMnO1xuXG4vKipcbiAqIERlZmF1bHQgaW4tbGlicmFyeSB7QGxpbmsgSUluc3RhbmNlU2VnbWVudGVyfSwgYmFja2VkIGJ5IHlvbG8tc2VnZGV0ZWN0LWpzXG4gKiAoWU9MT3Y4LXNlZyBvbiBXZWJHUFUsIGZhbGxpbmcgYmFjayB0byBXQVNNKS5cbiAqXG4gKiBgeW9sby1zZWdkZXRlY3QtanNgIGlzIGEgcmVndWxhciBkZXBlbmRlbmN5IGJ1dCBpcyAqKmxhenktaW1wb3J0ZWQqKiBvbiBmaXJzdFxuICogdXNlLCBzbyBhcHBzIHRoYXQgbmV2ZXIgcnVuIFlPTE8gcGF5IG5vdGhpbmcgZm9yIGl0IOKAlCBvciBmb3Igb25ueHJ1bnRpbWUtd2ViIOKAlFxuICogaW4gdGhlaXIgaW5pdGlhbCBidW5kbGUuIFRoaXMgbWlycm9ycyB7QGxpbmsgQ2VsbHBvc2VTZWdtZW50ZXJTZXJ2aWNlfS5cbiAqXG4gKiBUaGUgb25lIHN0cnVjdHVyYWwgZGlmZmVyZW5jZSBmcm9tIHRoZSBDZWxscG9zZSBzZXJ2aWNlOiB0aGVyZSBhcmUgZm91ciBZT0xPXG4gKiBjaGVja3BvaW50cywgbm90IG9uZSwgc28gaW5zdGFuY2VzIGFyZSBjYWNoZWQgKipwZXIgbW9kZWwgaWQqKiByYXRoZXIgdGhhbiBhc1xuICogYSBzaW5nbGUgc2luZ2xldG9uLiBFYWNoIGVudHJ5IG93bnMgaXRzIG93biB3b3JrZXIgYW5kIE9SVCBzZXNzaW9uLCBzbyBhIGhvc3RcbiAqIHRoYXQgc3dpdGNoZXMgbW9kZWxzIHBheXMgYSBzZWNvbmQgbG9hZCBidXQga2VlcHMgdGhlIGZpcnN0IG9uZSB3YXJtLiBOb3RoaW5nXG4gKiBldmljdHMgYXV0b21hdGljYWxseSDigJQgdGhlc2UgYXJlIH4xNDQgTUIgZWFjaCwgc28gYSBob3N0IHRoYXQgY3ljbGVzIHRocm91Z2hcbiAqIGFsbCBmb3VyIHNob3VsZCBjYWxsIHtAbGluayBkaXNwb3NlfSBmb3IgdGhlIG9uZXMgaXQgaXMgZG9uZSB3aXRoLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFlvbG9TZWdtZW50ZXJTZXJ2aWNlIGltcGxlbWVudHMgSUluc3RhbmNlU2VnbWVudGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnN0YW5jZXMgPSBuZXcgTWFwPHN0cmluZywgWW9sb1NlZ21lbnRlcj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2FkaW5nID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8WW9sb1NlZ21lbnRlcj4+KCk7XG5cbiAgYXN5bmMgc2VnbWVudEluc3RhbmNlcyhcbiAgICBpbWFnZTogeyBkYXRhOiBVaW50OENsYW1wZWRBcnJheTsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSxcbiAgICBvcHRzOiBJbnN0YW5jZVNlZ21lbnRPcHRpb25zID0ge30sXG4gICAgcHJvZ3Jlc3M/OiBJbnN0YW5jZVNlZ21lbnRQcm9ncmVzcyxcbiAgKTogUHJvbWlzZTxJbnN0YW5jZVNlZ21lbnRhdGlvbj4ge1xuICAgIGNvbnN0IG1vZGVsSWQgPSBvcHRzLm1vZGVsSWQgPz8gZ2V0RGVmYXVsdFlvbG9Nb2RlbElkKCk7XG4gICAgY29uc3QgZGVmID0gdGhpcy5yZXF1aXJlTW9kZWwobW9kZWxJZCk7XG5cbiAgICBsZXQgYW5ub3VuY2VkRG93bmxvYWQgPSBmYWxzZTtcbiAgICBjb25zdCBzZWcgPSBhd2FpdCB0aGlzLmdldE1vZGVsKFxuICAgICAgbW9kZWxJZCxcbiAgICAgIChsb2FkZWQsIHRvdGFsKSA9PiB7XG4gICAgICAgIGlmICh0b3RhbCkgcHJvZ3Jlc3M/Lm9uUHJvZ3Jlc3M/Lihsb2FkZWQgLyB0b3RhbCk7XG4gICAgICAgIHByb2dyZXNzPy5vbkJ5dGVzPy4obG9hZGVkLCB0b3RhbCk7XG4gICAgICAgIGlmIChsb2FkZWQgPiAwICYmICFhbm5vdW5jZWREb3dubG9hZCkge1xuICAgICAgICAgIGFubm91bmNlZERvd25sb2FkID0gdHJ1ZTtcbiAgICAgICAgICBwcm9ncmVzcz8ub25TdGF0dXM/LihgRG93bmxvYWRpbmcgJHtkZWYubGFiZWx9IG1vZGVs4oCmYCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoc3RhdHVzKSA9PiBwcm9ncmVzcz8ub25TdGF0dXM/LihzdGF0dXMpLFxuICAgICk7XG5cbiAgICBwcm9ncmVzcz8ub25TdGF0dXM/LignUnVubmluZyBpbmZlcmVuY2XigKYnKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZWcuc2VnbWVudChcbiAgICAgIHsgZGF0YTogaW1hZ2UuZGF0YSwgd2lkdGg6IGltYWdlLndpZHRoLCBoZWlnaHQ6IGltYWdlLmhlaWdodCB9LFxuICAgICAge1xuICAgICAgICBjb25mVGhyZXNob2xkOiBvcHRzLmNvbmZpZGVuY2UgPz8gZGVmLmRlZmF1bHRzLmNvbmZpZGVuY2UsXG4gICAgICAgIGlvdVRocmVzaG9sZDogb3B0cy5pb3VUaHJlc2hvbGQgPz8gZGVmLmRlZmF1bHRzLmlvdVRocmVzaG9sZCxcbiAgICAgICAgdGhyZXNob2xkOiBvcHRzLm1lcmdlVGhyZXNob2xkID8/IGRlZi5kZWZhdWx0cy5tZXJnZVRocmVzaG9sZCxcbiAgICAgICAgb3ZlcmxhcFg6IG9wdHMub3ZlcmxhcFggPz8gZGVmLmRlZmF1bHRzLm92ZXJsYXBYLFxuICAgICAgICBvdmVybGFwWTogb3B0cy5vdmVybGFwWSA/PyBkZWYuZGVmYXVsdHMub3ZlcmxhcFksXG4gICAgICAgIC4uLihvcHRzLm1hc2tUaHJlc2hvbGQgIT09IHVuZGVmaW5lZCA/IHsgbWFza1RocmVzaG9sZDogb3B0cy5tYXNrVGhyZXNob2xkIH0gOiB7fSksXG4gICAgICAgIC4uLihvcHRzLm1heERldGVjdGlvbnMgIT09IHVuZGVmaW5lZCA/IHsgbWF4RGV0ZWN0aW9uczogb3B0cy5tYXhEZXRlY3Rpb25zIH0gOiB7fSksXG4gICAgICAgIC4uLihvcHRzLmNsYXNzRmlsdGVyID8geyBjbGFzc0ZpbHRlcjogb3B0cy5jbGFzc0ZpbHRlciB9IDoge30pLFxuICAgICAgICAuLi4ob3B0cy53aXRoTWFza3MgIT09IHVuZGVmaW5lZCA/IHsgd2l0aE1hc2tzOiBvcHRzLndpdGhNYXNrcyB9IDoge30pLFxuICAgICAgICAuLi4ob3B0cy5zaWduYWwgPyB7IHNpZ25hbDogb3B0cy5zaWduYWwgfSA6IHt9KSxcbiAgICAgICAgLy8gT25seSB3b3J0aCB0cmFjaW5nIHdoZW4gdGhlcmUgYXJlIG1hc2tzIHRvIHRyYWNlLlxuICAgICAgICB0cmFjZVBvbHlnb25zOiBvcHRzLndpdGhNYXNrcyAhPT0gZmFsc2UsXG4gICAgICAgIHRyYWNlT3B0aW9uczoge1xuICAgICAgICAgIC4uLihvcHRzLnNpbXBsaWZ5VG9sZXJhbmNlICE9PSB1bmRlZmluZWQgPyB7IHNpbXBsaWZ5VG9sZXJhbmNlOiBvcHRzLnNpbXBsaWZ5VG9sZXJhbmNlIH0gOiB7fSksXG4gICAgICAgICAgLi4uKG9wdHMubWluQXJlYSAhPT0gdW5kZWZpbmVkID8geyBtaW5BcmVhOiBvcHRzLm1pbkFyZWEgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gVGhlIHdvcmtlciBuYXJyYXRlcyBpdHMgb3duIHBoYXNlcyDigJQgc2hhZGVyIHdhcm0tdXAsIHBlciB0aWxlLCBtZXJnZSxcbiAgICAgICAgLy8gdHJhY2luZyDigJQgYmVjYXVzZSBvbmx5IGl0IGtub3dzIHdoaWNoIG9uZSBpdCBpcyBpbi4gRGVyaXZpbmcgYSBzZWNvbmRcbiAgICAgICAgLy8gc3RhdHVzIGZyb20gdGlsZSBjb3VudHMgaGVyZSB3b3VsZCBqdXN0IGZpZ2h0IGl0LlxuICAgICAgICBvblN0YXR1czogKHMpID0+IHByb2dyZXNzPy5vblN0YXR1cz8uKHMpLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgLy8gRGV0ZWN0aW9ucyB3aXRob3V0IGdlb21ldHJ5IGFyZSBkcm9wcGVkIHJhdGhlciB0aGFuIHN1cmZhY2VkIGFzIGVtcHR5XG4gICAgLy8gcmVnaW9ucyDigJQgYSBkZXRlY3Rpb24gd2hvc2UgbWFzayB2YW5pc2hlZCB1bmRlciB0aHJlc2hvbGRpbmcgaGFzIG5vdGhpbmdcbiAgICAvLyBtZWFuaW5nZnVsIHRvIGRyYXcgb3IgZWRpdC5cbiAgICBjb25zdCBkZXRlY3Rpb25zOiBJbnN0YW5jZURldGVjdGlvbltdID0gW107XG4gICAgZm9yIChjb25zdCBkIG9mIHJlc3VsdC5kZXRlY3Rpb25zKSB7XG4gICAgICBpZiAoIWQucG9seWdvbnMgfHwgZC5wb2x5Z29ucy5sZW5ndGggPT09IDApIGNvbnRpbnVlO1xuICAgICAgZGV0ZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgcG9seWdvbnM6IGQucG9seWdvbnMubWFwKChwKSA9PiAoe1xuICAgICAgICAgIGV4dGVyaW9yOiBwLmV4dGVyaW9yLm1hcCgoW3gsIHldKTogW251bWJlciwgbnVtYmVyXSA9PiBbeCwgeV0pLFxuICAgICAgICAgIGhvbGVzOiBwLmhvbGVzLm1hcCgoaCkgPT4gaC5tYXAoKFt4LCB5XSk6IFtudW1iZXIsIG51bWJlcl0gPT4gW3gsIHldKSksXG4gICAgICAgIH0pKSxcbiAgICAgICAgYm94OiBbZC5ib3hbMF0sIGQuYm94WzFdLCBkLmJveFsyXSwgZC5ib3hbM11dLFxuICAgICAgICBzY29yZTogZC5zY29yZSxcbiAgICAgICAgY2xhc3NJZDogZC5jbGFzc0lkLFxuICAgICAgICBjbGFzc05hbWU6IGQuY2xhc3NOYW1lID8/IGBjbGFzcyR7ZC5jbGFzc0lkfWAsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGV0ZWN0aW9ucyxcbiAgICAgIHdpZHRoOiByZXN1bHQud2lkdGgsXG4gICAgICBoZWlnaHQ6IHJlc3VsdC5oZWlnaHQsXG4gICAgICBjbGFzc05hbWVzOiByZXN1bHQuY2xhc3NOYW1lcyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzaGFyZWQgc2VnbWVudGVyIGZvciBhIG1vZGVsIGlkLCBjcmVhdGVkIG9uIGZpcnN0IHVzZSBhbmQgcmV1c2VkXG4gICAqIHRoZXJlYWZ0ZXIgKGRlZHVwZWQgYWNyb3NzIGNvbmN1cnJlbnQgY2FsbGVycykuIEV4cG9zZWQgc28gYSBob3N0J3NcbiAgICogcHJvY2Vzc2luZyBwaXBlbGluZSBjYW4gZHJpdmUgcmljaGVyIGBzZWdtZW50KClgIG9wdGlvbnMgb24gdGhlIHNhbWUgbG9hZGVkXG4gICAqIHNlc3Npb24gaW5zdGVhZCBvZiBsb2FkaW5nIHRoZSBtb2RlbCB0d2ljZS5cbiAgICovXG4gIGdldE1vZGVsKFxuICAgIG1vZGVsSWQ6IHN0cmluZyA9IGdldERlZmF1bHRZb2xvTW9kZWxJZCgpLFxuICAgIG9uUHJvZ3Jlc3M/OiAobG9hZGVkOiBudW1iZXIsIHRvdGFsOiBudW1iZXIgfCBudWxsKSA9PiB2b2lkLFxuICAgIG9uU3RhdHVzPzogKHN0YXR1czogc3RyaW5nKSA9PiB2b2lkLFxuICApOiBQcm9taXNlPFlvbG9TZWdtZW50ZXI+IHtcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuaW5zdGFuY2VzLmdldChtb2RlbElkKTtcbiAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBQcm9taXNlLnJlc29sdmUoZXhpc3RpbmcpO1xuXG4gICAgY29uc3QgaW5GbGlnaHQgPSB0aGlzLmxvYWRpbmcuZ2V0KG1vZGVsSWQpO1xuICAgIGlmIChpbkZsaWdodCkgcmV0dXJuIGluRmxpZ2h0O1xuXG4gICAgY29uc3QgZGVmID0gdGhpcy5yZXF1aXJlTW9kZWwobW9kZWxJZCk7XG4gICAgY29uc3QgbG9hZCA9IChhc3luYyAoKSA9PiB7XG4gICAgICAvLyBMYXp5OiBrZWVwIHlvbG8tc2VnZGV0ZWN0LWpzICsgaXRzIE9SVCBydW50aW1lIG91dCBvZiB0aGUgaW5pdGlhbCBidW5kbGUuXG4gICAgICBjb25zdCB7IFlvbG9TZWdtZW50ZXIsIGNvbmZpZ3VyZU9ydCB9ID0gYXdhaXQgaW1wb3J0KCd5b2xvLXNlZ2RldGVjdC1qcycpO1xuICAgICAgY29uZmlndXJlT3J0KHsgd2FzbVBhdGhzOiBnZXRPcnRXYXNtQmFzZSgpIH0pO1xuICAgICAgY29uc3Qgc2VnID0gYXdhaXQgWW9sb1NlZ21lbnRlci5mcm9tUHJldHJhaW5lZChkZWYubW9kZWxVcmwsIHtcbiAgICAgICAgcHJlbG9hZDogdHJ1ZSxcbiAgICAgICAgLi4uKGRlZi5tZXRhVXJsID8geyBtZXRhVXJsOiBkZWYubWV0YVVybCB9IDoge30pLFxuICAgICAgICBvblByb2dyZXNzOiAoeyBsb2FkZWQsIHRvdGFsIH0pID0+IG9uUHJvZ3Jlc3M/Lihsb2FkZWQsIHRvdGFsKSxcbiAgICAgICAgb25TdGF0dXM6IChzKSA9PiBvblN0YXR1cz8uKHMpLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmluc3RhbmNlcy5zZXQobW9kZWxJZCwgc2VnKTtcbiAgICAgIHJldHVybiBzZWc7XG4gICAgfSkoKTtcblxuICAgIHRoaXMubG9hZGluZy5zZXQobW9kZWxJZCwgbG9hZCk7XG4gICAgLy8gQSBmYWlsZWQgbG9hZCBtdXN0IG5vdCBwb2lzb24gdGhlIGNhY2hlIOKAlCB0aGUgbmV4dCBjYWxsZXIgc2hvdWxkIHJldHJ5XG4gICAgLy8gcmF0aGVyIHRoYW4gaW5oZXJpdCB0aGUgcmVqZWN0ZWQgcHJvbWlzZSBmb3JldmVyLlxuICAgIGxvYWQuY2F0Y2goKCkgPT4gdGhpcy5sb2FkaW5nLmRlbGV0ZShtb2RlbElkKSk7XG4gICAgcmV0dXJuIGxvYWQ7XG4gIH1cblxuICAvKiogV2hldGhlciBhIG1vZGVsIGlzIGFscmVhZHkgbG9hZGVkICh3YXJtKS4gKi9cbiAgaXNMb2FkZWQobW9kZWxJZDogc3RyaW5nID0gZ2V0RGVmYXVsdFlvbG9Nb2RlbElkKCkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbnN0YW5jZXMuaGFzKG1vZGVsSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbGVhc2Ugb25lIG1vZGVsLCBvciBhbGwgb2YgdGhlbS4gU2FmZSB0byBjYWxsIG9uIGEgbW9kZWwgbmV2ZXIgbG9hZGVkLlxuICAgKlxuICAgKiBJbi1mbGlnaHQgbG9hZHMgYXJlIHRvcm4gZG93biB0b28sIG5vdCBqdXN0IHdhcm0gb25lcy4gU2ltcGx5IGRyb3BwaW5nIHRoZVxuICAgKiBwZW5kaW5nIHByb21pc2UgYW5kIHJldHVybmluZyB3b3VsZCBsZXQgdGhlIGxvYWQgZmluaXNoIGFmdGVyd2FyZHMsXG4gICAqIHJlLXBvcHVsYXRlIHtAbGluayBpbnN0YW5jZXN9LCBhbmQgc3RyYW5kIGEgbGl2ZSB3b3JrZXIgYW5kIE9SVCBzZXNzaW9uIHRoYXRcbiAgICogbm90aGluZyBvd25zIOKAlCBkaXNwb3NhbCB3b3VsZCBoYXZlIHJlcG9ydGVkIHN1Y2Nlc3Mgd2hpbGUgbGVha2luZy4gU28gYSBsb2FkXG4gICAqIHRoYXQgaXMgc3RpbGwgcnVubmluZyBpcyBhd2FpdGVkIGFuZCB0aGVuIHJlbGVhc2VkLlxuICAgKi9cbiAgYXN5bmMgZGlzcG9zZShtb2RlbElkPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaWRzID0gbW9kZWxJZCA/IFttb2RlbElkXSA6IFsuLi5uZXcgU2V0KFsuLi50aGlzLmluc3RhbmNlcy5rZXlzKCksIC4uLnRoaXMubG9hZGluZy5rZXlzKCldKV07XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoaWRzLm1hcCgoaWQpID0+IHRoaXMuZGlzcG9zZU9uZShpZCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGlzcG9zZU9uZShpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGVuZGluZyA9IHRoaXMubG9hZGluZy5nZXQoaWQpO1xuICAgIGNvbnN0IGxvYWRlZCA9IHRoaXMuaW5zdGFuY2VzLmdldChpZCk7XG4gICAgdGhpcy5pbnN0YW5jZXMuZGVsZXRlKGlkKTtcbiAgICB0aGlzLmxvYWRpbmcuZGVsZXRlKGlkKTtcblxuICAgIGlmIChsb2FkZWQpIGF3YWl0IGxvYWRlZC5kaXNwb3NlKCk7XG4gICAgaWYgKCFwZW5kaW5nKSByZXR1cm47XG5cbiAgICAvLyBBIHBlbmRpbmcgbG9hZCBhc3NpZ25zIGluc3RhbmNlc1tpZF0gYmVmb3JlIGl0cyBwcm9taXNlIHJlc29sdmVzLCBzbyBieVxuICAgIC8vIHRoZSB0aW1lIHRoaXMgYXdhaXQgcmV0dXJucyB0aGUgZW50cnkgaXMgYmFjay4gQ2xlYXIgaXQgb25seSBpZiBpdCBzdGlsbFxuICAgIC8vIHBvaW50cyBhdCB3aGF0ICp0aGlzKiBsb2FkIHByb2R1Y2VkIOKAlCBhIG5ld2VyIGxvYWQgc3RhcnRlZCBpbiB0aGVcbiAgICAvLyBtZWFudGltZSBvd25zIGl0cyBvd24gZW50cnkgYW5kIG11c3Qgbm90IGJlIGV2aWN0ZWQuXG4gICAgY29uc3Qgc2VnID0gYXdhaXQgcGVuZGluZy5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICBpZiAoIXNlZyB8fCBzZWcgPT09IGxvYWRlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmluc3RhbmNlcy5nZXQoaWQpID09PSBzZWcpIHRoaXMuaW5zdGFuY2VzLmRlbGV0ZShpZCk7XG4gICAgYXdhaXQgc2VnLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVxdWlyZU1vZGVsKG1vZGVsSWQ6IHN0cmluZyk6IFlvbG9Nb2RlbERlZiB7XG4gICAgY29uc3QgZGVmID0gZ2V0WW9sb01vZGVsKG1vZGVsSWQpO1xuICAgIGlmICghZGVmKSB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gWU9MTyBtb2RlbCBpZCBcIiR7bW9kZWxJZH1cIi5gKTtcbiAgICBpZiAoIWRlZi5tb2RlbFVybC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgWU9MTyBtb2RlbCBcIiR7bW9kZWxJZH1cIiBpcyBub3QgY29uZmlndXJlZCDigJQgaXRzIG1vZGVsVXJsIGlzIGVtcHR5LmApO1xuICAgIH1cbiAgICByZXR1cm4gZGVmO1xuICB9XG59XG4iXX0=
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieW9sby1zZWdtZW50ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdG9vbGJhci9zZWdtZW50YXRpb24veW9sby1zZWdtZW50ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFxQixNQUFNLHVCQUF1QixDQUFDOztBQVcvRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUFEakM7UUFFbUIsY0FBUyxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBQzdDLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztLQW1LdEU7SUFqS0MsS0FBSyxDQUFDLGdCQUFnQixDQUNwQixLQUFpRSxFQUNqRSxPQUErQixFQUFFLEVBQ2pDLFFBQWtDO1FBRWxDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUN4RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXZDLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FDN0IsT0FBTyxFQUNQLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2hCLElBQUksS0FBSztnQkFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ2xELFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxJQUFJ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QztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs4R0FwS1Usb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FEUCxNQUFNOzsyRkFDbkIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldE9ydFdhc21CYXNlIH0gZnJvbSAnLi9vcnQtcnVudGltZS1jb25maWcnO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdFlvbG9Nb2RlbElkLCBnZXRZb2xvTW9kZWwsIHR5cGUgWW9sb01vZGVsRGVmIH0gZnJvbSAnLi95b2xvLW1vZGVsLXJlZ2lzdHJ5JztcblxuaW1wb3J0IHR5cGUge1xuICBJSW5zdGFuY2VTZWdtZW50ZXIsXG4gIEluc3RhbmNlRGV0ZWN0aW9uLFxuICBJbnN0YW5jZVNlZ21lbnRhdGlvbixcbiAgSW5zdGFuY2VTZWdtZW50T3B0aW9ucyxcbiAgSW5zdGFuY2VTZWdtZW50UHJvZ3Jlc3MsXG59IGZyb20gJy4uLy4uL2NvbnRyYWN0cy9pbnN0YW5jZS1zZWdtZW50ZXIuY29udHJhY3QnO1xuaW1wb3J0IHR5cGUgeyBZb2xvU2VnbWVudGVyIH0gZnJvbSAneW9sby1zZWdkZXRlY3QtanMnO1xuXG4vKipcbiAqIERlZmF1bHQgaW4tbGlicmFyeSB7QGxpbmsgSUluc3RhbmNlU2VnbWVudGVyfSwgYmFja2VkIGJ5IHlvbG8tc2VnZGV0ZWN0LWpzXG4gKiAoWU9MT3Y4LXNlZyBvbiBXZWJHUFUsIGZhbGxpbmcgYmFjayB0byBXQVNNKS5cbiAqXG4gKiBgeW9sby1zZWdkZXRlY3QtanNgIGlzIGEgcmVndWxhciBkZXBlbmRlbmN5IGJ1dCBpcyAqKmxhenktaW1wb3J0ZWQqKiBvbiBmaXJzdFxuICogdXNlLCBzbyBhcHBzIHRoYXQgbmV2ZXIgcnVuIFlPTE8gcGF5IG5vdGhpbmcgZm9yIGl0IOKAlCBvciBmb3Igb25ueHJ1bnRpbWUtd2ViIOKAlFxuICogaW4gdGhlaXIgaW5pdGlhbCBidW5kbGUuIFRoaXMgbWlycm9ycyB7QGxpbmsgQ2VsbHBvc2VTZWdtZW50ZXJTZXJ2aWNlfS5cbiAqXG4gKiBUaGUgb25lIHN0cnVjdHVyYWwgZGlmZmVyZW5jZSBmcm9tIHRoZSBDZWxscG9zZSBzZXJ2aWNlOiB0aGVyZSBhcmUgZm91ciBZT0xPXG4gKiBjaGVja3BvaW50cywgbm90IG9uZSwgc28gaW5zdGFuY2VzIGFyZSBjYWNoZWQgKipwZXIgbW9kZWwgaWQqKiByYXRoZXIgdGhhbiBhc1xuICogYSBzaW5nbGUgc2luZ2xldG9uLiBFYWNoIGVudHJ5IG93bnMgaXRzIG93biB3b3JrZXIgYW5kIE9SVCBzZXNzaW9uLCBzbyBhIGhvc3RcbiAqIHRoYXQgc3dpdGNoZXMgbW9kZWxzIHBheXMgYSBzZWNvbmQgbG9hZCBidXQga2VlcHMgdGhlIGZpcnN0IG9uZSB3YXJtLiBOb3RoaW5nXG4gKiBldmljdHMgYXV0b21hdGljYWxseSDigJQgdGhlc2UgYXJlIH4xNDQgTUIgZWFjaCwgc28gYSBob3N0IHRoYXQgY3ljbGVzIHRocm91Z2hcbiAqIGFsbCBmb3VyIHNob3VsZCBjYWxsIHtAbGluayBkaXNwb3NlfSBmb3IgdGhlIG9uZXMgaXQgaXMgZG9uZSB3aXRoLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFlvbG9TZWdtZW50ZXJTZXJ2aWNlIGltcGxlbWVudHMgSUluc3RhbmNlU2VnbWVudGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnN0YW5jZXMgPSBuZXcgTWFwPHN0cmluZywgWW9sb1NlZ21lbnRlcj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2FkaW5nID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8WW9sb1NlZ21lbnRlcj4+KCk7XG5cbiAgYXN5bmMgc2VnbWVudEluc3RhbmNlcyhcbiAgICBpbWFnZTogeyBkYXRhOiBVaW50OENsYW1wZWRBcnJheTsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSxcbiAgICBvcHRzOiBJbnN0YW5jZVNlZ21lbnRPcHRpb25zID0ge30sXG4gICAgcHJvZ3Jlc3M/OiBJbnN0YW5jZVNlZ21lbnRQcm9ncmVzcyxcbiAgKTogUHJvbWlzZTxJbnN0YW5jZVNlZ21lbnRhdGlvbj4ge1xuICAgIGNvbnN0IG1vZGVsSWQgPSBvcHRzLm1vZGVsSWQgPz8gZ2V0RGVmYXVsdFlvbG9Nb2RlbElkKCk7XG4gICAgY29uc3QgZGVmID0gdGhpcy5yZXF1aXJlTW9kZWwobW9kZWxJZCk7XG5cbiAgICBsZXQgYW5ub3VuY2VkRG93bmxvYWQgPSBmYWxzZTtcbiAgICBjb25zdCBzZWcgPSBhd2FpdCB0aGlzLmdldE1vZGVsKFxuICAgICAgbW9kZWxJZCxcbiAgICAgIChsb2FkZWQsIHRvdGFsKSA9PiB7XG4gICAgICAgIGlmICh0b3RhbCkgcHJvZ3Jlc3M/Lm9uUHJvZ3Jlc3M/Lihsb2FkZWQgLyB0b3RhbCk7XG4gICAgICAgIHByb2dyZXNzPy5vbkJ5dGVzPy4obG9hZGVkLCB0b3RhbCk7XG4gICAgICAgIGlmIChsb2FkZWQgPiAwICYmICFhbm5vdW5jZWREb3dubG9hZCkge1xuICAgICAgICAgIGFubm91bmNlZERvd25sb2FkID0gdHJ1ZTtcbiAgICAgICAgICBwcm9ncmVzcz8ub25TdGF0dXM/LihgRG93bmxvYWRpbmcgJHtkZWYubGFiZWx9IG1vZGVs4oCmYCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoc3RhdHVzKSA9PiBwcm9ncmVzcz8ub25TdGF0dXM/LihzdGF0dXMpLFxuICAgICk7XG5cbiAgICBwcm9ncmVzcz8ub25TdGF0dXM/LignUnVubmluZyBpbmZlcmVuY2XigKYnKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZWcuc2VnbWVudChcbiAgICAgIHsgZGF0YTogaW1hZ2UuZGF0YSwgd2lkdGg6IGltYWdlLndpZHRoLCBoZWlnaHQ6IGltYWdlLmhlaWdodCB9LFxuICAgICAge1xuICAgICAgICBjb25mVGhyZXNob2xkOiBvcHRzLmNvbmZpZGVuY2UgPz8gZGVmLmRlZmF1bHRzLmNvbmZpZGVuY2UsXG4gICAgICAgIGlvdVRocmVzaG9sZDogb3B0cy5pb3VUaHJlc2hvbGQgPz8gZGVmLmRlZmF1bHRzLmlvdVRocmVzaG9sZCxcbiAgICAgICAgdGhyZXNob2xkOiBvcHRzLm1lcmdlVGhyZXNob2xkID8/IGRlZi5kZWZhdWx0cy5tZXJnZVRocmVzaG9sZCxcbiAgICAgICAgb3ZlcmxhcFg6IG9wdHMub3ZlcmxhcFggPz8gZGVmLmRlZmF1bHRzLm92ZXJsYXBYLFxuICAgICAgICBvdmVybGFwWTogb3B0cy5vdmVybGFwWSA/PyBkZWYuZGVmYXVsdHMub3ZlcmxhcFksXG4gICAgICAgIC4uLihvcHRzLm1hc2tUaHJlc2hvbGQgIT09IHVuZGVmaW5lZCA/IHsgbWFza1RocmVzaG9sZDogb3B0cy5tYXNrVGhyZXNob2xkIH0gOiB7fSksXG4gICAgICAgIC4uLihvcHRzLm1heERldGVjdGlvbnMgIT09IHVuZGVmaW5lZCA/IHsgbWF4RGV0ZWN0aW9uczogb3B0cy5tYXhEZXRlY3Rpb25zIH0gOiB7fSksXG4gICAgICAgIC4uLihvcHRzLmNsYXNzRmlsdGVyID8geyBjbGFzc0ZpbHRlcjogb3B0cy5jbGFzc0ZpbHRlciB9IDoge30pLFxuICAgICAgICAuLi4ob3B0cy53aXRoTWFza3MgIT09IHVuZGVmaW5lZCA/IHsgd2l0aE1hc2tzOiBvcHRzLndpdGhNYXNrcyB9IDoge30pLFxuICAgICAgICAuLi4ob3B0cy5zaWduYWwgPyB7IHNpZ25hbDogb3B0cy5zaWduYWwgfSA6IHt9KSxcbiAgICAgICAgLy8gT25seSB3b3J0aCB0cmFjaW5nIHdoZW4gdGhlcmUgYXJlIG1hc2tzIHRvIHRyYWNlLlxuICAgICAgICB0cmFjZVBvbHlnb25zOiBvcHRzLndpdGhNYXNrcyAhPT0gZmFsc2UsXG4gICAgICAgIHRyYWNlT3B0aW9uczoge1xuICAgICAgICAgIC4uLihvcHRzLnNpbXBsaWZ5VG9sZXJhbmNlICE9PSB1bmRlZmluZWQgPyB7IHNpbXBsaWZ5VG9sZXJhbmNlOiBvcHRzLnNpbXBsaWZ5VG9sZXJhbmNlIH0gOiB7fSksXG4gICAgICAgICAgLi4uKG9wdHMubWluQXJlYSAhPT0gdW5kZWZpbmVkID8geyBtaW5BcmVhOiBvcHRzLm1pbkFyZWEgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gVGhlIHdvcmtlciBuYXJyYXRlcyBpdHMgb3duIHBoYXNlcyDigJQgc2hhZGVyIHdhcm0tdXAsIHBlciB0aWxlLCBtZXJnZSxcbiAgICAgICAgLy8gdHJhY2luZyDigJQgYmVjYXVzZSBvbmx5IGl0IGtub3dzIHdoaWNoIG9uZSBpdCBpcyBpbi4gRGVyaXZpbmcgYSBzZWNvbmRcbiAgICAgICAgLy8gc3RhdHVzIGZyb20gdGlsZSBjb3VudHMgaGVyZSB3b3VsZCBqdXN0IGZpZ2h0IGl0LlxuICAgICAgICBvblN0YXR1czogKHMpID0+IHByb2dyZXNzPy5vblN0YXR1cz8uKHMpLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgLy8gQSBkZXRlY3Rpb24gd2l0aG91dCBhbiBvdXRsaW5lIGlzIHN0aWxsIGEgZGV0ZWN0aW9uLlxuICAgIC8vXG4gICAgLy8gVGhlc2UgdXNlZCB0byBiZSBkcm9wcGVkLCB3aGljaCBxdWlldGx5IGVtcHRpZWQgdGhlIGVudGlyZSByZXN1bHQgaW5cbiAgICAvLyBkZXRlY3Rpb24gbW9kZTogbm8gbWFza3MgbWVhbnMgbm8gcG9seWdvbnMsIHNvIGV2ZXJ5IG9iamVjdCB3YXNcbiAgICAvLyBkaXNjYXJkZWQgYW5kIHRoZSBjYWxsZXIgc2F3IG5vdGhpbmcgYXQgYWxsLiBUaGUgc2VydmVyIGRvZXMgbm90IHdvcmtcbiAgICAvLyB0aGF0IHdheSBlaXRoZXIg4oCUIGl0IGFsd2F5cyB3cml0ZXMgYSBib3ggZmVhdHVyZSBhbmQgb25seSAqYWRkcypcbiAgICAvLyBzZWdtZW50YXRpb24gb3V0bGluZXMgd2hlbiBhc2tlZC4gQ2FsbGVycyBnZXQgdGhlIGJveCBhbmQgZGVjaWRlIHdoYXQgdG9cbiAgICAvLyBkbyB3aXRoIGl0LlxuICAgIGNvbnN0IGRldGVjdGlvbnM6IEluc3RhbmNlRGV0ZWN0aW9uW10gPSByZXN1bHQuZGV0ZWN0aW9ucy5tYXAoKGQpID0+ICh7XG4gICAgICBwb2x5Z29uczogKGQucG9seWdvbnMgPz8gW10pLm1hcCgocCkgPT4gKHtcbiAgICAgICAgZXh0ZXJpb3I6IHAuZXh0ZXJpb3IubWFwKChbeCwgeV0pOiBbbnVtYmVyLCBudW1iZXJdID0+IFt4LCB5XSksXG4gICAgICAgIGhvbGVzOiBwLmhvbGVzLm1hcCgoaCkgPT4gaC5tYXAoKFt4LCB5XSk6IFtudW1iZXIsIG51bWJlcl0gPT4gW3gsIHldKSksXG4gICAgICB9KSksXG4gICAgICBib3g6IFtkLmJveFswXSwgZC5ib3hbMV0sIGQuYm94WzJdLCBkLmJveFszXV0gYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gICAgICBzY29yZTogZC5zY29yZSxcbiAgICAgIGNsYXNzSWQ6IGQuY2xhc3NJZCxcbiAgICAgIGNsYXNzTmFtZTogZC5jbGFzc05hbWUgPz8gYGNsYXNzJHtkLmNsYXNzSWR9YCxcbiAgICB9KSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGV0ZWN0aW9ucyxcbiAgICAgIHdpZHRoOiByZXN1bHQud2lkdGgsXG4gICAgICBoZWlnaHQ6IHJlc3VsdC5oZWlnaHQsXG4gICAgICBjbGFzc05hbWVzOiByZXN1bHQuY2xhc3NOYW1lcyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzaGFyZWQgc2VnbWVudGVyIGZvciBhIG1vZGVsIGlkLCBjcmVhdGVkIG9uIGZpcnN0IHVzZSBhbmQgcmV1c2VkXG4gICAqIHRoZXJlYWZ0ZXIgKGRlZHVwZWQgYWNyb3NzIGNvbmN1cnJlbnQgY2FsbGVycykuIEV4cG9zZWQgc28gYSBob3N0J3NcbiAgICogcHJvY2Vzc2luZyBwaXBlbGluZSBjYW4gZHJpdmUgcmljaGVyIGBzZWdtZW50KClgIG9wdGlvbnMgb24gdGhlIHNhbWUgbG9hZGVkXG4gICAqIHNlc3Npb24gaW5zdGVhZCBvZiBsb2FkaW5nIHRoZSBtb2RlbCB0d2ljZS5cbiAgICovXG4gIGdldE1vZGVsKFxuICAgIG1vZGVsSWQ6IHN0cmluZyA9IGdldERlZmF1bHRZb2xvTW9kZWxJZCgpLFxuICAgIG9uUHJvZ3Jlc3M/OiAobG9hZGVkOiBudW1iZXIsIHRvdGFsOiBudW1iZXIgfCBudWxsKSA9PiB2b2lkLFxuICAgIG9uU3RhdHVzPzogKHN0YXR1czogc3RyaW5nKSA9PiB2b2lkLFxuICApOiBQcm9taXNlPFlvbG9TZWdtZW50ZXI+IHtcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuaW5zdGFuY2VzLmdldChtb2RlbElkKTtcbiAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBQcm9taXNlLnJlc29sdmUoZXhpc3RpbmcpO1xuXG4gICAgY29uc3QgaW5GbGlnaHQgPSB0aGlzLmxvYWRpbmcuZ2V0KG1vZGVsSWQpO1xuICAgIGlmIChpbkZsaWdodCkgcmV0dXJuIGluRmxpZ2h0O1xuXG4gICAgY29uc3QgZGVmID0gdGhpcy5yZXF1aXJlTW9kZWwobW9kZWxJZCk7XG4gICAgY29uc3QgbG9hZCA9IChhc3luYyAoKSA9PiB7XG4gICAgICAvLyBMYXp5OiBrZWVwIHlvbG8tc2VnZGV0ZWN0LWpzICsgaXRzIE9SVCBydW50aW1lIG91dCBvZiB0aGUgaW5pdGlhbCBidW5kbGUuXG4gICAgICBjb25zdCB7IFlvbG9TZWdtZW50ZXIsIGNvbmZpZ3VyZU9ydCB9ID0gYXdhaXQgaW1wb3J0KCd5b2xvLXNlZ2RldGVjdC1qcycpO1xuICAgICAgY29uZmlndXJlT3J0KHsgd2FzbVBhdGhzOiBnZXRPcnRXYXNtQmFzZSgpIH0pO1xuICAgICAgY29uc3Qgc2VnID0gYXdhaXQgWW9sb1NlZ21lbnRlci5mcm9tUHJldHJhaW5lZChkZWYubW9kZWxVcmwsIHtcbiAgICAgICAgcHJlbG9hZDogdHJ1ZSxcbiAgICAgICAgLi4uKGRlZi5tZXRhVXJsID8geyBtZXRhVXJsOiBkZWYubWV0YVVybCB9IDoge30pLFxuICAgICAgICBvblByb2dyZXNzOiAoeyBsb2FkZWQsIHRvdGFsIH0pID0+IG9uUHJvZ3Jlc3M/Lihsb2FkZWQsIHRvdGFsKSxcbiAgICAgICAgb25TdGF0dXM6IChzKSA9PiBvblN0YXR1cz8uKHMpLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmluc3RhbmNlcy5zZXQobW9kZWxJZCwgc2VnKTtcbiAgICAgIHJldHVybiBzZWc7XG4gICAgfSkoKTtcblxuICAgIHRoaXMubG9hZGluZy5zZXQobW9kZWxJZCwgbG9hZCk7XG4gICAgLy8gQSBmYWlsZWQgbG9hZCBtdXN0IG5vdCBwb2lzb24gdGhlIGNhY2hlIOKAlCB0aGUgbmV4dCBjYWxsZXIgc2hvdWxkIHJldHJ5XG4gICAgLy8gcmF0aGVyIHRoYW4gaW5oZXJpdCB0aGUgcmVqZWN0ZWQgcHJvbWlzZSBmb3JldmVyLlxuICAgIGxvYWQuY2F0Y2goKCkgPT4gdGhpcy5sb2FkaW5nLmRlbGV0ZShtb2RlbElkKSk7XG4gICAgcmV0dXJuIGxvYWQ7XG4gIH1cblxuICAvKiogV2hldGhlciBhIG1vZGVsIGlzIGFscmVhZHkgbG9hZGVkICh3YXJtKS4gKi9cbiAgaXNMb2FkZWQobW9kZWxJZDogc3RyaW5nID0gZ2V0RGVmYXVsdFlvbG9Nb2RlbElkKCkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbnN0YW5jZXMuaGFzKG1vZGVsSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbGVhc2Ugb25lIG1vZGVsLCBvciBhbGwgb2YgdGhlbS4gU2FmZSB0byBjYWxsIG9uIGEgbW9kZWwgbmV2ZXIgbG9hZGVkLlxuICAgKlxuICAgKiBJbi1mbGlnaHQgbG9hZHMgYXJlIHRvcm4gZG93biB0b28sIG5vdCBqdXN0IHdhcm0gb25lcy4gU2ltcGx5IGRyb3BwaW5nIHRoZVxuICAgKiBwZW5kaW5nIHByb21pc2UgYW5kIHJldHVybmluZyB3b3VsZCBsZXQgdGhlIGxvYWQgZmluaXNoIGFmdGVyd2FyZHMsXG4gICAqIHJlLXBvcHVsYXRlIHtAbGluayBpbnN0YW5jZXN9LCBhbmQgc3RyYW5kIGEgbGl2ZSB3b3JrZXIgYW5kIE9SVCBzZXNzaW9uIHRoYXRcbiAgICogbm90aGluZyBvd25zIOKAlCBkaXNwb3NhbCB3b3VsZCBoYXZlIHJlcG9ydGVkIHN1Y2Nlc3Mgd2hpbGUgbGVha2luZy4gU28gYSBsb2FkXG4gICAqIHRoYXQgaXMgc3RpbGwgcnVubmluZyBpcyBhd2FpdGVkIGFuZCB0aGVuIHJlbGVhc2VkLlxuICAgKi9cbiAgYXN5bmMgZGlzcG9zZShtb2RlbElkPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaWRzID0gbW9kZWxJZCA/IFttb2RlbElkXSA6IFsuLi5uZXcgU2V0KFsuLi50aGlzLmluc3RhbmNlcy5rZXlzKCksIC4uLnRoaXMubG9hZGluZy5rZXlzKCldKV07XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoaWRzLm1hcCgoaWQpID0+IHRoaXMuZGlzcG9zZU9uZShpZCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGlzcG9zZU9uZShpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGVuZGluZyA9IHRoaXMubG9hZGluZy5nZXQoaWQpO1xuICAgIGNvbnN0IGxvYWRlZCA9IHRoaXMuaW5zdGFuY2VzLmdldChpZCk7XG4gICAgdGhpcy5pbnN0YW5jZXMuZGVsZXRlKGlkKTtcbiAgICB0aGlzLmxvYWRpbmcuZGVsZXRlKGlkKTtcblxuICAgIGlmIChsb2FkZWQpIGF3YWl0IGxvYWRlZC5kaXNwb3NlKCk7XG4gICAgaWYgKCFwZW5kaW5nKSByZXR1cm47XG5cbiAgICAvLyBBIHBlbmRpbmcgbG9hZCBhc3NpZ25zIGluc3RhbmNlc1tpZF0gYmVmb3JlIGl0cyBwcm9taXNlIHJlc29sdmVzLCBzbyBieVxuICAgIC8vIHRoZSB0aW1lIHRoaXMgYXdhaXQgcmV0dXJucyB0aGUgZW50cnkgaXMgYmFjay4gQ2xlYXIgaXQgb25seSBpZiBpdCBzdGlsbFxuICAgIC8vIHBvaW50cyBhdCB3aGF0ICp0aGlzKiBsb2FkIHByb2R1Y2VkIOKAlCBhIG5ld2VyIGxvYWQgc3RhcnRlZCBpbiB0aGVcbiAgICAvLyBtZWFudGltZSBvd25zIGl0cyBvd24gZW50cnkgYW5kIG11c3Qgbm90IGJlIGV2aWN0ZWQuXG4gICAgY29uc3Qgc2VnID0gYXdhaXQgcGVuZGluZy5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICBpZiAoIXNlZyB8fCBzZWcgPT09IGxvYWRlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmluc3RhbmNlcy5nZXQoaWQpID09PSBzZWcpIHRoaXMuaW5zdGFuY2VzLmRlbGV0ZShpZCk7XG4gICAgYXdhaXQgc2VnLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVxdWlyZU1vZGVsKG1vZGVsSWQ6IHN0cmluZyk6IFlvbG9Nb2RlbERlZiB7XG4gICAgY29uc3QgZGVmID0gZ2V0WW9sb01vZGVsKG1vZGVsSWQpO1xuICAgIGlmICghZGVmKSB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gWU9MTyBtb2RlbCBpZCBcIiR7bW9kZWxJZH1cIi5gKTtcbiAgICBpZiAoIWRlZi5tb2RlbFVybC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgWU9MTyBtb2RlbCBcIiR7bW9kZWxJZH1cIiBpcyBub3QgY29uZmlndXJlZCDigJQgaXRzIG1vZGVsVXJsIGlzIGVtcHR5LmApO1xuICAgIH1cbiAgICByZXR1cm4gZGVmO1xuICB9XG59XG4iXX0=
|
|
@@ -550,24 +550,24 @@ class YoloSegmenterService {
|
|
|
550
550
|
// status from tile counts here would just fight it.
|
|
551
551
|
onStatus: (s) => progress?.onStatus?.(s),
|
|
552
552
|
});
|
|
553
|
-
//
|
|
554
|
-
//
|
|
555
|
-
//
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
}
|
|
570
|
-
}
|
|
553
|
+
// A detection without an outline is still a detection.
|
|
554
|
+
//
|
|
555
|
+
// These used to be dropped, which quietly emptied the entire result in
|
|
556
|
+
// detection mode: no masks means no polygons, so every object was
|
|
557
|
+
// discarded and the caller saw nothing at all. The server does not work
|
|
558
|
+
// that way either — it always writes a box feature and only *adds*
|
|
559
|
+
// segmentation outlines when asked. Callers get the box and decide what to
|
|
560
|
+
// do with it.
|
|
561
|
+
const detections = result.detections.map((d) => ({
|
|
562
|
+
polygons: (d.polygons ?? []).map((p) => ({
|
|
563
|
+
exterior: p.exterior.map(([x, y]) => [x, y]),
|
|
564
|
+
holes: p.holes.map((h) => h.map(([x, y]) => [x, y])),
|
|
565
|
+
})),
|
|
566
|
+
box: [d.box[0], d.box[1], d.box[2], d.box[3]],
|
|
567
|
+
score: d.score,
|
|
568
|
+
classId: d.classId,
|
|
569
|
+
className: d.className ?? `class${d.classId}`,
|
|
570
|
+
}));
|
|
571
571
|
return {
|
|
572
572
|
detections,
|
|
573
573
|
width: result.width,
|