@jax-data-science/sci-image-visualizer 0.3.3 → 0.5.0
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/README.md +268 -4
- package/esm2022/index.mjs +21 -1
- package/esm2022/lib/contracts/display-types.mjs +20 -2
- package/esm2022/lib/contracts/image.contract.mjs +1 -1
- package/esm2022/lib/contracts/plot-type-contribution.contract.mjs +66 -0
- package/esm2022/lib/contracts/plot-type.mjs +41 -1
- package/esm2022/lib/contracts/ports/spatial-data.port.mjs +3 -0
- package/esm2022/lib/contracts/spatial-dataset.contract.mjs +45 -0
- package/esm2022/lib/contracts/visualizer.contract.mjs +1 -1
- package/esm2022/lib/implementations/napari-js/napari-axes-labels.mjs +10 -19
- package/esm2022/lib/implementations/napari-js/napari-region-overlay.mjs +71 -7
- package/esm2022/lib/implementations/napari-js/napari-scale-bar.mjs +1 -1
- package/esm2022/lib/implementations/napari-js/napari-spatial-tooltip.mjs +96 -0
- package/esm2022/lib/implementations/napari-js/napari-visualizer.service.mjs +1934 -55
- package/esm2022/lib/implementations/napari-js/napari-zoom.mjs +18 -0
- package/esm2022/lib/implementations/osd/openseadragon-visualizer.service.mjs +73 -8
- package/esm2022/lib/implementations/osd/osd-coordinate-transform.mjs +8 -1
- package/esm2022/lib/implementations/osd/osd-region-overlay.mjs +3 -4
- package/esm2022/lib/implementations/osd/osd-zoom.mjs +20 -0
- package/esm2022/lib/implementations/plotly/omics-trace-builders.mjs +555 -0
- package/esm2022/lib/implementations/plotly/plotly.service.mjs +13 -7
- package/esm2022/lib/implementations/spatial-data-http/spatial-data-http.service.mjs +304 -0
- package/esm2022/lib/implementations/spatial-data-http/spatial-wire.mjs +179 -0
- package/esm2022/lib/plot-mode/plot-mode-controller.mjs +329 -0
- package/esm2022/lib/routing-visualizer.service.mjs +228 -12
- package/esm2022/lib/spatial/embedding-compute.mjs +142 -0
- package/esm2022/lib/spatial/gene-search.mjs +77 -0
- package/esm2022/lib/spatial/spatial-density.mjs +224 -0
- package/esm2022/lib/spatial/spatial-encoding.mjs +232 -0
- package/esm2022/lib/spatial/spatial-expression.mjs +257 -0
- package/esm2022/lib/spatial/spatial-framing.mjs +60 -0
- package/esm2022/lib/spatial/spatial-heatmap.mjs +185 -0
- package/esm2022/lib/spatial/spatial-hover.mjs +79 -0
- package/esm2022/lib/spatial/spatial-sections.mjs +96 -0
- package/esm2022/lib/spatial/spatial-selection.mjs +264 -0
- package/esm2022/lib/spatial/spatial-volume-image.mjs +163 -0
- package/esm2022/lib/spatial/tsne-worker.mjs +10 -0
- package/esm2022/lib/spatial/world-grid.mjs +77 -0
- package/esm2022/lib/spatial-controls/spatial-charts/spatial-charts.component.mjs +1278 -0
- package/esm2022/lib/spatial-controls/spatial-controls.component.mjs +621 -0
- package/esm2022/lib/store/spatial-selection.service.mjs +47 -0
- package/esm2022/lib/store/visualizer-store.service.mjs +23 -1
- package/esm2022/lib/toolbar/toolbar.component.mjs +61 -21
- package/esm2022/lib/visualization.module.mjs +23 -5
- package/esm2022/lib/visualizer.component.mjs +527 -44
- package/fesm2022/{jax-data-science-sci-image-visualizer-onnx-sam-session-ci1q0xnJ.mjs → jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs} +6 -4
- package/fesm2022/{jax-data-science-sci-image-visualizer-onnx-sam-session-ci1q0xnJ.mjs.map → jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs.map} +1 -1
- package/fesm2022/jax-data-science-sci-image-visualizer-tsne-worker-B_nXDGf0.mjs +12 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-tsne-worker-B_nXDGf0.mjs.map +1 -0
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs +15971 -7808
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs.map +1 -1
- package/fesm2022/tsne.worker.js +19091 -0
- package/index.d.ts +16 -0
- package/lib/contracts/display-types.d.ts +131 -0
- package/lib/contracts/image.contract.d.ts +7 -0
- package/lib/contracts/plot-type-contribution.contract.d.ts +172 -0
- package/lib/contracts/plot-type.d.ts +52 -2
- package/lib/contracts/ports/spatial-data.port.d.ts +90 -0
- package/lib/contracts/spatial-dataset.contract.d.ts +281 -0
- package/lib/contracts/visualizer.contract.d.ts +104 -1
- package/lib/implementations/napari-js/napari-axes-labels.d.ts +9 -7
- package/lib/implementations/napari-js/napari-region-overlay.d.ts +38 -4
- package/lib/implementations/napari-js/napari-scale-bar.d.ts +7 -3
- package/lib/implementations/napari-js/napari-spatial-tooltip.d.ts +32 -0
- package/lib/implementations/napari-js/napari-visualizer.service.d.ts +497 -16
- package/lib/implementations/napari-js/napari-zoom.d.ts +15 -0
- package/lib/implementations/osd/openseadragon-visualizer.service.d.ts +21 -0
- package/lib/implementations/osd/osd-coordinate-transform.d.ts +6 -0
- package/lib/implementations/osd/osd-zoom.d.ts +19 -0
- package/lib/implementations/plotly/omics-trace-builders.d.ts +193 -0
- package/lib/implementations/plotly/plotly.service.d.ts +9 -0
- package/lib/implementations/spatial-data-http/spatial-data-http.service.d.ts +123 -0
- package/lib/implementations/spatial-data-http/spatial-wire.d.ts +115 -0
- package/lib/plot-mode/plot-mode-controller.d.ts +130 -0
- package/lib/routing-visualizer.service.d.ts +49 -6
- package/lib/spatial/embedding-compute.d.ts +73 -0
- package/lib/spatial/gene-search.d.ts +48 -0
- package/lib/spatial/spatial-density.d.ts +73 -0
- package/lib/spatial/spatial-encoding.d.ts +155 -0
- package/lib/spatial/spatial-expression.d.ts +144 -0
- package/lib/spatial/spatial-framing.d.ts +37 -0
- package/lib/spatial/spatial-heatmap.d.ts +111 -0
- package/lib/spatial/spatial-hover.d.ts +49 -0
- package/lib/spatial/spatial-sections.d.ts +59 -0
- package/lib/spatial/spatial-selection.d.ts +113 -0
- package/lib/spatial/spatial-volume-image.d.ts +67 -0
- package/lib/spatial/tsne-worker.d.ts +7 -0
- package/lib/spatial/world-grid.d.ts +58 -0
- package/lib/spatial-controls/spatial-charts/spatial-charts.component.d.ts +439 -0
- package/lib/spatial-controls/spatial-controls.component.d.ts +257 -0
- package/lib/store/spatial-selection.service.d.ts +27 -0
- package/lib/store/visualizer-store.service.d.ts +13 -0
- package/lib/toolbar/toolbar.component.d.ts +36 -8
- package/lib/visualization.module.d.ts +28 -24
- package/lib/visualizer.component.d.ts +139 -7
- package/package.json +6 -2
- package/src/lib/assets/spatial-omics-3d.svg +31 -0
- package/src/lib/assets/spatial-omics.svg +27 -0
|
@@ -34,7 +34,21 @@ export var PlotType;
|
|
|
34
34
|
PlotType["NAPARI_SCATTER"] = "napari-scatter";
|
|
35
35
|
/** WebGPU 3D scatter of the downsampled voxel cloud (napari-js analog of Plotly SCATTER3D). */
|
|
36
36
|
PlotType["NAPARI_SCATTER3D"] = "napari-scatter3d";
|
|
37
|
+
/** Spatial-omics observations (Visium spots, segmented cells) drawn over the tissue image and
|
|
38
|
+
* coloured by an annotation column or a gene. Needs a `SpatialDataset` on `SPATIAL_DATA_PORT`,
|
|
39
|
+
* so it is gated by `requiresSpatialData` and never appears for an image-only host. */
|
|
40
|
+
PlotType["SPATIAL_OMICS"] = "spatial-omics";
|
|
41
|
+
/** Spatial-omics observations as a 3D point cloud, for assays whose observations carry a z —
|
|
42
|
+
* serial sections registered into a common frame (e.g. the Allen CCF), or a genuinely
|
|
43
|
+
* volumetric assay. Gated by `requiresSpatial3d`, a strictly narrower gate than
|
|
44
|
+
* {@link SPATIAL_OMICS}: a single-plane dataset has no z to render. */
|
|
45
|
+
PlotType["SPATIAL_OMICS_3D"] = "spatial-omics-3d";
|
|
37
46
|
})(PlotType || (PlotType = {}));
|
|
47
|
+
const BUILTIN_PLOT_TYPES = new Set(Object.values(PlotType));
|
|
48
|
+
/** Whether an id names a built-in plot type (as opposed to a contributed one). */
|
|
49
|
+
export function isBuiltinPlotType(id) {
|
|
50
|
+
return typeof id === 'string' && BUILTIN_PLOT_TYPES.has(id);
|
|
51
|
+
}
|
|
38
52
|
/**
|
|
39
53
|
* Single source of truth for plot-type metadata. LINE is intentionally absent —
|
|
40
54
|
* intensity profiles are now Region-based line ROIs (available in Heatmap/Image
|
|
@@ -66,6 +80,9 @@ export const PLOT_TYPE_DESCRIPTORS = {
|
|
|
66
80
|
[PlotType.NAPARI_SCATTER3D]: { type: PlotType.NAPARI_SCATTER3D, label: 'Scatter 3D (napari · WebGPU)', icon: 'assets/plotting/3d-coordinates.svg', dimensions: '3d', source: 'image', requiresStack: true, requiresGrayscale: true },
|
|
67
81
|
[PlotType.NAPARI_VOLUME]: { type: PlotType.NAPARI_VOLUME, label: 'Volume (napari · WebGPU)', productionLabel: 'Volume', icon: 'assets/plotting/cube-3d.svg', dimensions: '3d', source: 'image', requiresStack: true, requiresGrayscale: true },
|
|
68
82
|
[PlotType.NAPARI_ISOSURFACE]: { type: PlotType.NAPARI_ISOSURFACE, label: 'Isosurface (napari · WebGPU)', productionLabel: 'Isosurface', icon: 'assets/plotting/isosurface.svg', dimensions: '3d', source: 'image', requiresStack: true, requiresGrayscale: true },
|
|
83
|
+
// ── Spatial omics ──
|
|
84
|
+
[PlotType.SPATIAL_OMICS]: { type: PlotType.SPATIAL_OMICS, label: 'Spatial omics (napari · WebGPU)', productionLabel: 'Spatial omics', icon: 'assets/plotting/spatial-omics.svg', dimensions: '2d', source: 'spatial', requiresSpatialData: true },
|
|
85
|
+
[PlotType.SPATIAL_OMICS_3D]: { type: PlotType.SPATIAL_OMICS_3D, label: 'Spatial omics 3D (napari · WebGPU)', productionLabel: 'Spatial omics 3D', icon: 'assets/plotting/spatial-omics-3d.svg', dimensions: '3d', source: 'spatial', requiresSpatialData: true, requiresSpatial3d: true },
|
|
69
86
|
};
|
|
70
87
|
export function getPlotTypeDescriptor(type) {
|
|
71
88
|
return PLOT_TYPE_DESCRIPTORS[type];
|
|
@@ -94,6 +111,29 @@ export function isNapariScatter(type) {
|
|
|
94
111
|
export function isNapariScatter3d(type) {
|
|
95
112
|
return type === PlotType.NAPARI_SCATTER3D;
|
|
96
113
|
}
|
|
114
|
+
/** Spatial-omics observations over the tissue image. */
|
|
115
|
+
export function isSpatialOmics(type) {
|
|
116
|
+
return type === PlotType.SPATIAL_OMICS;
|
|
117
|
+
}
|
|
118
|
+
/** Spatial-omics observations as a 3D point cloud. */
|
|
119
|
+
export function isSpatialOmics3d(type) {
|
|
120
|
+
return type === PlotType.SPATIAL_OMICS_3D;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Whether the renderer, rather than the shell, should handle wheel zoom.
|
|
124
|
+
*
|
|
125
|
+
* The shell's wheel listener applies a FIXED step per event, which is far too sensitive for a
|
|
126
|
+
* renderer that reads the scroll delta: it works out at 30% per event against napari-js's 3%, and
|
|
127
|
+
* ignores the device normalization and easing the renderer does. So every plot type drawn by a
|
|
128
|
+
* renderer that owns the wheel has to opt out here.
|
|
129
|
+
*
|
|
130
|
+
* The image view always did. The spatial-omics modes did NOT, despite being drawn by the same
|
|
131
|
+
* napari-js viewer — the shell gated on an `isHeatmap` flag that defaults to true and only goes
|
|
132
|
+
* false for the 3D Plotly scenes, so it silently took the wheel for them too.
|
|
133
|
+
*/
|
|
134
|
+
export function rendererOwnsWheel(type) {
|
|
135
|
+
return type === PlotType.IMAGE || isSpatialOmics(type) || isSpatialOmics3d(type);
|
|
136
|
+
}
|
|
97
137
|
/** Any napari-js 3D plot type (volume, isosurface, surface, or 3D scatter). Resolution is a runtime
|
|
98
138
|
* decimate factor (Full / ½ / ¼ / ⅛) — see the service's `resolutionScale`. */
|
|
99
139
|
export function isNapari3d(type) {
|
|
@@ -109,4 +149,4 @@ export const NAPARI_DECIMATE_OPTIONS = [
|
|
|
109
149
|
/** Default decimate factor: ¼. The caps are set so ¼ is a sensible default resolution while ½ and
|
|
110
150
|
* Full offer 2× and 4× the detail for opt-in high-resolution renders. */
|
|
111
151
|
export const NAPARI_DEFAULT_DECIMATE = 4;
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvcGxvdC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFOLElBQVksUUF1Qlg7QUF2QkQsV0FBWSxRQUFRO0lBQ2xCO2lGQUM2RTtJQUM3RSwyQkFBZSxDQUFBO0lBQ2YsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIseUZBQXlGO0lBQ3pGLHlCQUFhLENBQUE7SUFDYixtQ0FBdUIsQ0FBQTtJQUN2QixxQ0FBeUIsQ0FBQTtJQUN6Qjt1R0FDbUc7SUFDbkcseUNBQTZCLENBQUE7SUFDN0IsMkNBQStCLENBQUE7SUFDL0IsbURBQXVDLENBQUE7SUFDdkMsZ0dBQWdHO0lBQ2hHLDZDQUFpQyxDQUFBO0lBQ2pDLGtGQUFrRjtJQUNsRiw2Q0FBaUMsQ0FBQTtJQUNqQywrRkFBK0Y7SUFDL0YsaURBQXFDLENBQUE7QUFDdkMsQ0FBQyxFQXZCVyxRQUFRLEtBQVIsUUFBUSxRQXVCbkI7QUFnREQ7Ozs7O0dBS0c7QUFDSCwrRkFBK0Y7QUFDL0Ysb0RBQW9EO0FBQ3BELGtGQUFrRjtBQUNsRixpRkFBaUY7QUFDakYsbUVBQW1FO0FBQ25FLDJFQUEyRTtBQUMzRSxzRUFBc0U7QUFDdEUsNEVBQTRFO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFrRDtJQUNsRixnQkFBZ0I7SUFDaEIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBTyxLQUFLLEVBQUUsYUFBYSxFQUFZLGVBQWUsRUFBRSxPQUFPLEVBQU8sSUFBSSxFQUFFLGFBQWEsRUFBcUIsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO0lBQzlM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LE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUM7QUFDMUMsQ0FBQztBQUNELCtDQUErQztBQUMvQyxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQWM7SUFDNUMsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQztBQUMxQyxDQUFDO0FBQ0QsZ0RBQWdEO0FBQ2hELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFjO0lBQzlDLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztBQUM1QyxDQUFDO0FBQ0Q7Z0ZBQ2dGO0FBQ2hGLE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBYztJQUN2QyxPQUFPLENBQ0wsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FDckcsQ0FBQztBQUNKLENBQUM7QUFFRCw2RUFBNkU7QUFDN0UsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQXVDO0lBQ3pFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQzNCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0NBQ3pCLENBQUM7QUFFRjswRUFDMEU7QUFDMUUsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUga2luZCBvZiByZW5kZXJpbmcgYSB2aWV3ZXIgYmFja2VuZCBzaG91bGQgcHJvZHVjZSBmb3IgdGhlIGxvYWRlZCBkYXRhLlxuICpcbiAqIExpdmVzIGluIGBjb250cmFjdHMvYCAocmF0aGVyIHRoYW4gaW5zaWRlIGEgc3BlY2lmaWMgYmFja2VuZCkgYmVjYXVzZSBpdCBpc1xuICogcGFydCBvZiB0aGUgYmFja2VuZC1uZXV0cmFsIHBsb3R0aW5nIGNvbnRyYWN0OiBib3RoIHRoZSBQbG90bHkgYmFja2VuZCBhbmRcbiAqIGFueSBmdXR1cmUgYmFja2VuZCAoZS5nLiBPcGVuU2VhZHJhZ29uKSBhY2NlcHQgYSBgUGxvdFR5cGVgIG9uIGBwbG90KClgLlxuICpcbiAqIE5PVEU6IGEgYmFja2VuZCBtYXkgbm90IHN1cHBvcnQgZXZlcnkgdHlwZSDigJQgM0QgdHlwZXMgKGBTVVJGQUNFYCxcbiAqIGBTQ0FUVEVSM0RgLCBgSVNPU1VSRkFDRWApIGFyZSBnYXRlZCBiZWhpbmQgYFZpZXdlckZlYXR1cmUuU3VyZmFjZTNEYCBpbiB0aGVcbiAqIGNhcGFiaWxpdGllcyBjb250cmFjdCwgc28gYSAyRC1vbmx5IGJhY2tlbmQgY2FuIGFkdmVydGlzZSB0aGF0IGl0IGNhbid0XG4gKiByZW5kZXIgdGhlbSBhbmQgdGhlIFVJIGNhbiBoaWRlIHRoZSBvcHRpb24uXG4gKi9cbmV4cG9ydCBlbnVtIFBsb3RUeXBlIHtcbiAgLyoqIE5hdGl2ZWx5LXRpbGVkLCB6b29tYWJsZSByYXN0ZXIgcmVuZGVyZWQgYnkgT3BlblNlYWRyYWdvbiAodGhlIGRlZmF1bHRcbiAgICogIHZpZXcgZm9yIGFuIGltYWdlKS4gSGVhdG1hcCByZW1haW5zIHRoZSBQbG90bHkgc2NhbGFyLWltYWdlIHJlbmRlcmluZy4gKi9cbiAgSU1BR0UgPSAnaW1hZ2UnLFxuICBIRUFUTUFQID0gJ2hlYXRtYXAnLFxuICBTVVJGQUNFID0gJ3N1cmZhY2UnLFxuICBDT05UT1VSID0gJ2NvbnRvdXInLFxuICBTQ0FUVEVSID0gJ3NjYXR0ZXInLFxuICAvLyBMSU5FOiByZXNlcnZlZC9zdHViYmVkIOKAlCBpbnRlbnNpdHkgcHJvZmlsZXMgYXJlIG5vdyBSZWdpb24tYmFzZWQgKGtlcHQgZm9yIGZ1dHVyZSB1c2UpXG4gIExJTkUgPSAnbGluZScsXG4gIFNDQVRURVIzRCA9ICdzY2F0dGVyM2QnLFxuICBJU09TVVJGQUNFID0gJ2lzb3N1cmZhY2UnLFxuICAvKiogV2ViR1BVIG5hcGFyaS1qcyByZW5kZXJpbmdzIChqaXQtdWkjMTAyKSwgc2VsZWN0YWJsZSBhbG9uZ3NpZGUgdGhlIE9TRC9QbG90bHkgdHlwZXMuIFRoZSAzRFxuICAgKiAgdHlwZXMgdGFrZSBhIHJ1bnRpbWUgZGVjaW1hdGUgZmFjdG9yIChGdWxsIC8gwr0gLyDCvCAvIOKFmykgaW5zdGVhZCBvZiBmaXhlZCBoaS9sby1yZXMgdmFyaWFudHMuICovXG4gIE5BUEFSSV9JTUFHRSA9ICduYXBhcmktaW1hZ2UnLFxuICBOQVBBUklfVk9MVU1FID0gJ25hcGFyaS12b2x1bWUnLFxuICBOQVBBUklfSVNPU1VSRkFDRSA9ICduYXBhcmktaXNvc3VyZmFjZScsXG4gIC8qKiBXZWJHUFUgaGVpZ2h0LWZpZWxkIHN1cmZhY2UgbWVzaCAoeiA9IGludGVuc2l0eSksIHRoZSBuYXBhcmktanMgYW5hbG9nIG9mIFBsb3RseSBTVVJGQUNFLiAqL1xuICBOQVBBUklfU1VSRkFDRSA9ICduYXBhcmktc3VyZmFjZScsXG4gIC8qKiBXZWJHUFUgMkQgc2NhdHRlciBvZiByZWdpb24gY2VudHJvaWRzIChuYXBhcmktanMgYW5hbG9nIG9mIFBsb3RseSBTQ0FUVEVSKS4gKi9cbiAgTkFQQVJJX1NDQVRURVIgPSAnbmFwYXJpLXNjYXR0ZXInLFxuICAvKiogV2ViR1BVIDNEIHNjYXR0ZXIgb2YgdGhlIGRvd25zYW1wbGVkIHZveGVsIGNsb3VkIChuYXBhcmktanMgYW5hbG9nIG9mIFBsb3RseSBTQ0FUVEVSM0QpLiAqL1xuICBOQVBBUklfU0NBVFRFUjNEID0gJ25hcGFyaS1zY2F0dGVyM2QnLFxufVxuXG4vKiogSG93IG1hbnkgc3BhdGlhbCBkaW1lbnNpb25zIGEgcGxvdCB0eXBlIHJlbmRlcnMgaW4uICovXG5leHBvcnQgdHlwZSBQbG90RGltZW5zaW9ucyA9ICcyZCcgfCAnM2QnO1xuXG4vKipcbiAqIFdoZXJlIGEgcGxvdCB0eXBlIHB1bGxzIGl0cyBkYXRhIGZyb206XG4gKiAgLSBgaW1hZ2VgICAg4oCUIHRoZSBsb2FkZWQgcGl4ZWwgbWF0cmljZXMgLyB6LXN0YWNrIChIRUFUTUFQLCBTVVJGQUNFLCDigKYpXG4gKiAgLSBgcmVnaW9uc2Ag4oCUIHRoZSBkcmF3bi9kZXJpdmVkIHJlZ2lvbnMgKFNDQVRURVIgb2YgcmVnaW9uIGNlbnRyb2lkcywg4oCmKVxuICovXG5leHBvcnQgdHlwZSBQbG90RGF0YVNvdXJjZSA9ICdpbWFnZScgfCAncmVnaW9ucyc7XG5cbi8qKlxuICogQmFja2VuZC1uZXV0cmFsIG1ldGFkYXRhIGFib3V0IGEgcGxvdCB0eXBlLiBEcml2ZXMgVUkgYWZmb3JkYW5jZXMgKHdoaWNoXG4gKiB0eXBlcyBhcmUgM0QsIHdoaWNoIG5lZWQgYW4gaW1hZ2Ugc3RhY2ssIGhvdyB0byBsYWJlbCB0aGVtIGluIGEgZHJvcGRvd24pXG4gKiB3aXRob3V0IGFueSBiYWNrZW5kJ3MgdHJhY2UtYnVpbGRpbmcgbG9naWMgbGVha2luZyBpbnRvIHRoZSBjb250cmFjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG90VHlwZURlc2NyaXB0b3Ige1xuICB0eXBlOiBQbG90VHlwZTtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIGZvciBtZW51cy9kcm9wZG93bnMuIFNob3duIGluICoqdGVzdCBtb2RlKiosIHdoZXJlXG4gICAqICBldmVyeSBiYWNrZW5kJ3MgdHlwZSBpcyBvZmZlcmVkLCBzbyBpdCBjYXJyaWVzIHRoZSBiYWNrZW5kIHN1ZmZpeCAoZS5nLlxuICAgKiAgXCJTdXJmYWNlIChuYXBhcmkgwrcgV2ViR1BVKVwiKSB0byBkaXNhbWJpZ3VhdGUgc2FtZS1uYW1lZCBtb2Rlcy4gKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIExhYmVsIHNob3duIGluIHRoZSAqKmRlZmF1bHQgKG5vbi10ZXN0KSBzZWxlY3RvcioqLCB3aGVyZSBhIHNpbmdsZSBjdXJhdGVkXG4gICAqIG1vZGUgb3ducyBlYWNoIG5hbWUg4oCUIHNvIGl0IGRyb3BzIHRoZSBiYWNrZW5kIHN1ZmZpeCAoZS5nLiBqdXN0IFwiU3VyZmFjZVwiKS5cbiAgICogQSB0eXBlIFdJVEhPVVQgYSBgcHJvZHVjdGlvbkxhYmVsYCBpcyAqKnRlc3Qtb25seSoqOiBoaWRkZW4gZnJvbSB0aGUgZGVmYXVsdFxuICAgKiBzZWxlY3RvciBhbmQgc2hvd24gb25seSB3aGVuIHRoZSBob3N0IGVuYWJsZXMgdGVzdCBtb2RlLiBUaGlzIGlzIHRoZSBzaW5nbGVcbiAgICoga25vYiB0aGF0IGN1cmF0ZXMgdGhlIGRlZmF1bHQgcGxvdC1tb2RlIGxpc3QgKGpheC1pbWFnZS12aXN1YWxpemF0aW9uKS5cbiAgICovXG4gIHByb2R1Y3Rpb25MYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIEljb24gc2hvd24gdG8gdGhlIGxlZnQgb2YgdGhlIGxhYmVsIGluIHRoZSBwbG90LXR5cGUgc2VsZWN0b3IuIEVpdGhlciBhXG4gICAqIFByaW1lTkcgaWNvbiBjbGFzcyAoc3RhcnRzIHdpdGggYHBpIGAsIGUuZy4gYHBpIHBpLWltYWdlYCkgcmVuZGVyZWQgYXMgYVxuICAgKiBmb250IGdseXBoLCBvciBhIHNlcnZlZCBTVkcgYXNzZXQgcGF0aCAoZS5nLiBgYXNzZXRzL3Bsb3R0aW5nL3N1cmZhY2Uuc3ZnYClcbiAgICogcmVuZGVyZWQgYXMgYW4gYDxpbWc+YC4gQm90aCBhcmUgdGludGVkIHRvIHRoZSB0b29sYmFyJ3MgcHJpbWFyeSBibHVlLlxuICAgKi9cbiAgaWNvbj86IHN0cmluZztcbiAgZGltZW5zaW9uczogUGxvdERpbWVuc2lvbnM7XG4gIHNvdXJjZTogUGxvdERhdGFTb3VyY2U7XG4gIC8qKiBUcnVlIHdoZW4gdGhlIHR5cGUgb25seSBtYWtlcyBzZW5zZSBvdmVyIGEgbXVsdGktZnJhbWUgei1zdGFjay4gKi9cbiAgcmVxdWlyZXNTdGFjaz86IGJvb2xlYW47XG4gIC8qKiBUcnVlIHdoZW4gdGhlIHR5cGUgbWFwcyBhIHNpbmdsZSBzY2FsYXIgaW50ZW5zaXR5IHBlciBwaXhlbCAoY29udG91cixcbiAgICogIHN1cmZhY2UsIGludGVuc2l0eSBwcm9maWxlLCBpc29zdXJmYWNlKSDigJQgb25seSBtZWFuaW5nZnVsIGZvciBncmF5c2NhbGUuXG4gICAqICBJbWFnZS9IZWF0bWFwIHJlbmRlciBSR0IgZmluZTsgU2NhdHRlciB1c2VzIHJlZ2lvbnMuICovXG4gIHJlcXVpcmVzR3JheXNjYWxlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciBwbG90LXR5cGUgbWV0YWRhdGEuIExJTkUgaXMgaW50ZW50aW9uYWxseSBhYnNlbnQg4oCUXG4gKiBpbnRlbnNpdHkgcHJvZmlsZXMgYXJlIG5vdyBSZWdpb24tYmFzZWQgbGluZSBST0lzIChhdmFpbGFibGUgaW4gSGVhdG1hcC9JbWFnZVxuICogbW9kZSksIHNvIExJTkUgaXMgbm8gbG9uZ2VyIG9mZmVyZWQgaW4gdGhlIHNlbGVjdG9yICh0aGUgZW51bSBtZW1iZXIgaXMga2VwdFxuICogZm9yIGZ1dHVyZSB1c2UpLiBIZW5jZSB0aGUgYFBhcnRpYWxgIHJlY29yZC5cbiAqL1xuLy8gRHJvcGRvd24gb3JkZXIgPSBpbnNlcnRpb24gb3JkZXI6IEltYWdlIChPU0QpIGRlZmF1bHQgYXQgdGhlIHRvcCwgdGhlbiBhbGwgUGxvdGx5IHBsb3QgbW9kZXNcbi8vIGdyb3VwZWQsIHRoZW4gYWxsIG5hcGFyaS1qcyBXZWJHUFUgbW9kZXMgZ3JvdXBlZC5cbi8vIGBwcm9kdWN0aW9uTGFiZWxgIG1hcmtzIHRoZSBjdXJhdGVkIGRlZmF1bHQtc2VsZWN0b3Igc2V0IChqaXQtdWkjNzAgZm9sbG93LXVwKTpcbi8vICAtIElNQUdFIC8gSEVBVE1BUCAvIENPTlRPVVIgKDJEKSBhbmQgdGhlIG5hcGFyaSBTVVJGQUNFIC8gVk9MVU1FIC8gSVNPU1VSRkFDRVxuLy8gICAgKDNEKSBhcmUgdGhlIG1vZGVzIHNob3duIGJ5IGRlZmF1bHQsIHVuZGVyIHN1ZmZpeC1mcmVlIG5hbWVzLlxuLy8gIC0gRXZlcnl0aGluZyBlbHNlIChhbGwgU2NhdHRlcnMsIE5BUEFSSV9JTUFHRSwgYW5kIHRoZSBQbG90bHkgU1VSRkFDRSAvXG4vLyAgICBJU09TVVJGQUNFIHRoYXQgdGhlIG5hcGFyaSB2ZXJzaW9ucyBzdXBlcnNlZGUpIGlzIHRlc3Qtb25seSDigJQgbm9cbi8vICAgIGBwcm9kdWN0aW9uTGFiZWxgLCBzbyBpdCBhcHBlYXJzIG9ubHkgd2hlbiB0aGUgaG9zdCBlbmFibGVzIHRlc3QgbW9kZS5cbmV4cG9ydCBjb25zdCBQTE9UX1RZUEVfREVTQ1JJUFRPUlM6IFBhcnRpYWw8UmVjb3JkPFBsb3RUeXBlLCBQbG90VHlwZURlc2NyaXB0b3I+PiA9IHtcbiAgLy8g4pSA4pSAIERlZmF1bHQg4pSA4pSAXG4gIFtQbG90VHlwZS5JTUFHRV06ICAgICAgeyB0eXBlOiBQbG90VHlwZS5JTUFHRSwgICAgICBsYWJlbDogJ0ltYWdlIChPU0QpJywgICAgICAgICAgIHByb2R1Y3Rpb25MYWJlbDogJ0ltYWdlJywgICAgICBpY29uOiAncGkgcGktaW1hZ2UnLCAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnaW1hZ2UnIH0sXG4gIC8vIOKUgOKUgCBQbG90bHkg4pSA4pSAXG4gIFtQbG90VHlwZS5IRUFUTUFQXTogICAgeyB0eXBlOiBQbG90VHlwZS5IRUFUTUFQLCAgICBsYWJlbDogJ0hlYXRtYXAgKFBsb3RseSknLCAgICAgIHByb2R1Y3Rpb25MYWJlbDogJ0hlYXRtYXAnLCAgICBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nL2hlYXRtYXAuc3ZnJywgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnaW1hZ2UnIH0sXG4gIFtQbG90VHlwZS5DT05UT1VSXTogICAgeyB0eXBlOiBQbG90VHlwZS5DT05UT1VSLCAgICBsYWJlbDogJ0NvbnRvdXIgKFBsb3RseSknLCAgICAgIHByb2R1Y3Rpb25MYWJlbDogJ0NvbnRvdXInLCAgICBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nL2NvbnRvdXIuc3ZnJywgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICBbUGxvdFR5cGUuU0NBVFRFUl06ICAgIHsgdHlwZTogUGxvdFR5cGUuU0NBVFRFUiwgICAgbGFiZWw6ICdTY2F0dGVyIDJEIChQbG90bHkpJywgICBpY29uOiAncGkgcGktY2hhcnQtc2NhdHRlcicsICAgICAgICAgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAncmVnaW9ucycgfSxcbiAgW1Bsb3RUeXBlLlNVUkZBQ0VdOiAgICB7IHR5cGU6IFBsb3RUeXBlLlNVUkZBQ0UsICAgIGxhYmVsOiAnU3VyZmFjZSAoUGxvdGx5KScsICAgICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9zdXJmYWNlLnN2ZycsICAgIGRpbWVuc2lvbnM6ICczZCcsIHNvdXJjZTogJ2ltYWdlJywgcmVxdWlyZXNHcmF5c2NhbGU6IHRydWUgfSxcbiAgW1Bsb3RUeXBlLlNDQVRURVIzRF06ICB7IHR5cGU6IFBsb3RUeXBlLlNDQVRURVIzRCwgIGxhYmVsOiAnU2NhdHRlciAzRCAoUGxvdGx5KScsICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy8zZC1jb29yZGluYXRlcy5zdmcnLCBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIFtQbG90VHlwZS5JU09TVVJGQUNFXTogeyB0eXBlOiBQbG90VHlwZS5JU09TVVJGQUNFLCBsYWJlbDogJ0lzb3N1cmZhY2UgKFBsb3RseSknLCAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvaXNvc3VyZmFjZS5zdmcnLCBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIC8vIOKUgOKUgCBuYXBhcmktanMgV2ViR1BVIChqaXQtdWkjMTAyKS4gVGhlIDNEIHR5cGVzIHRha2UgYSBydW50aW1lIGRlY2ltYXRlIGZhY3Rvci4g4pSA4pSAXG4gIFtQbG90VHlwZS5OQVBBUklfSU1BR0VdOiAgICAgIHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX0lNQUdFLCAgICAgIGxhYmVsOiAnSW1hZ2UgKG5hcGFyaSDCtyBXZWJHUFUpJywgICAgICBpY29uOiAncGkgcGktaW1hZ2UnLCAgICAgICAgICAgICAgICAgICAgICAgIGRpbWVuc2lvbnM6ICcyZCcsIHNvdXJjZTogJ2ltYWdlJyB9LFxuICBbUGxvdFR5cGUuTkFQQVJJX1NDQVRURVJdOiAgICB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSLCAgICBsYWJlbDogJ1NjYXR0ZXIgMkQgKG5hcGFyaSDCtyBXZWJHUFUpJywgaWNvbjogJ3BpIHBpLWNoYXJ0LXNjYXR0ZXInLCAgICAgICAgICAgICAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdyZWdpb25zJyB9LFxuICBbUGxvdFR5cGUuTkFQQVJJX1NVUkZBQ0VdOiAgICB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9TVVJGQUNFLCAgICBsYWJlbDogJ1N1cmZhY2UgKG5hcGFyaSDCtyBXZWJHUFUpJywgICAgcHJvZHVjdGlvbkxhYmVsOiAnU3VyZmFjZScsICAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvc3VyZmFjZS5zdmcnLCAgICAgICAgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnIH0sIC8vIGEgaGVpZ2h0LWZpZWxkIGlzIHo9aW50ZW5zaXR5IG9mIG9uZSBwbGFuZSDigJQgd29ya3MgZm9yIGFueSBncmF5c2NhbGUvUkdCIGltYWdlIChSR0LihpJsdW1pbmFuY2UpLCBubyBzdGFjayBuZWVkZWRcbiAgW1Bsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSM0RdOiAgeyB0eXBlOiBQbG90VHlwZS5OQVBBUklfU0NBVFRFUjNELCAgbGFiZWw6ICdTY2F0dGVyIDNEIChuYXBhcmkgwrcgV2ViR1BVKScsIGljb246ICdhc3NldHMvcGxvdHRpbmcvM2QtY29vcmRpbmF0ZXMuc3ZnJywgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc1N0YWNrOiB0cnVlLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICBbUGxvdFR5cGUuTkFQQVJJX1ZPTFVNRV06ICAgICB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9WT0xVTUUsICAgICBsYWJlbDogJ1ZvbHVtZSAobmFwYXJpIMK3IFdlYkdQVSknLCAgICAgcHJvZHVjdGlvbkxhYmVsOiAnVm9sdW1lJywgICAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvY3ViZS0zZC5zdmcnLCAgICAgICAgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc1N0YWNrOiB0cnVlLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICBbUGxvdFR5cGUuTkFQQVJJX0lTT1NVUkZBQ0VdOiB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9JU09TVVJGQUNFLCBsYWJlbDogJ0lzb3N1cmZhY2UgKG5hcGFyaSDCtyBXZWJHUFUpJywgcHJvZHVjdGlvbkxhYmVsOiAnSXNvc3VyZmFjZScsIGljb246ICdhc3NldHMvcGxvdHRpbmcvaXNvc3VyZmFjZS5zdmcnLCAgICAgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc1N0YWNrOiB0cnVlLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBsb3RUeXBlRGVzY3JpcHRvcih0eXBlOiBQbG90VHlwZSk6IFBsb3RUeXBlRGVzY3JpcHRvciB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBQTE9UX1RZUEVfREVTQ1JJUFRPUlNbdHlwZV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RocmVlRGltZW5zaW9uYWwodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIFBMT1RfVFlQRV9ERVNDUklQVE9SU1t0eXBlXT8uZGltZW5zaW9ucyA9PT0gJzNkJztcbn1cblxuLy8g4pSA4pSAIG5hcGFyaS1qcyAzRCBwbG90LXR5cGUgcHJlZGljYXRlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8qKiBuYXBhcmktanMgdm9sdW1lLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFwYXJpVm9sdW1lKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfVk9MVU1FO1xufVxuLyoqIG5hcGFyaS1qcyBpc29zdXJmYWNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFwYXJpSXNvc3VyZmFjZSh0eXBlOiBQbG90VHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZSA9PT0gUGxvdFR5cGUuTkFQQVJJX0lTT1NVUkZBQ0U7XG59XG4vKiogbmFwYXJpLWpzIGhlaWdodC1maWVsZCBzdXJmYWNlIG1lc2guICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlTdXJmYWNlKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfU1VSRkFDRTtcbn1cbi8qKiBuYXBhcmktanMgMkQgc2NhdHRlciAocmVnaW9uIGNlbnRyb2lkcykuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlTY2F0dGVyKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfU0NBVFRFUjtcbn1cbi8qKiBuYXBhcmktanMgM0Qgc2NhdHRlciAodm94ZWwgcG9pbnQgY2xvdWQpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFwYXJpU2NhdHRlcjNkKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfU0NBVFRFUjNEO1xufVxuLyoqIEFueSBuYXBhcmktanMgM0QgcGxvdCB0eXBlICh2b2x1bWUsIGlzb3N1cmZhY2UsIHN1cmZhY2UsIG9yIDNEIHNjYXR0ZXIpLiBSZXNvbHV0aW9uIGlzIGEgcnVudGltZVxuICogIGRlY2ltYXRlIGZhY3RvciAoRnVsbCAvIMK9IC8gwrwgLyDihZspIOKAlCBzZWUgdGhlIHNlcnZpY2UncyBgcmVzb2x1dGlvblNjYWxlYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05hcGFyaTNkKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgaXNOYXBhcmlWb2x1bWUodHlwZSkgfHwgaXNOYXBhcmlJc29zdXJmYWNlKHR5cGUpIHx8IGlzTmFwYXJpU3VyZmFjZSh0eXBlKSB8fCBpc05hcGFyaVNjYXR0ZXIzZCh0eXBlKVxuICApO1xufVxuXG4vKiogRGVjaW1hdGUgZmFjdG9ycyBvZmZlcmVkIGJ5IHRoZSBSZXNvbHV0aW9uIGNvbnRyb2wgKDEgPSBGdWxsIOKApiA4ID0g4oWbKS4gKi9cbmV4cG9ydCBjb25zdCBOQVBBUklfREVDSU1BVEVfT1BUSU9OUzogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogbnVtYmVyIH1bXSA9IFtcbiAgeyBsYWJlbDogJ0Z1bGwnLCB2YWx1ZTogMSB9LFxuICB7IGxhYmVsOiAnwr0nLCB2YWx1ZTogMiB9LFxuICB7IGxhYmVsOiAnwrwnLCB2YWx1ZTogNCB9LFxuICB7IGxhYmVsOiAn4oWbJywgdmFsdWU6IDggfSxcbl07XG5cbi8qKiBEZWZhdWx0IGRlY2ltYXRlIGZhY3RvcjogwrwuIFRoZSBjYXBzIGFyZSBzZXQgc28gwrwgaXMgYSBzZW5zaWJsZSBkZWZhdWx0IHJlc29sdXRpb24gd2hpbGUgwr0gYW5kXG4gKiAgRnVsbCBvZmZlciAyw5cgYW5kIDTDlyB0aGUgZGV0YWlsIGZvciBvcHQtaW4gaGlnaC1yZXNvbHV0aW9uIHJlbmRlcnMuICovXG5leHBvcnQgY29uc3QgTkFQQVJJX0RFRkFVTFRfREVDSU1BVEUgPSA0O1xuIl19
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvcGxvdC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFOLElBQVksUUFnQ1g7QUFoQ0QsV0FBWSxRQUFRO0lBQ2xCO2lGQUM2RTtJQUM3RSwyQkFBZSxDQUFBO0lBQ2YsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIseUZBQXlGO0lBQ3pGLHlCQUFhLENBQUE7SUFDYixtQ0FBdUIsQ0FBQTtJQUN2QixxQ0FBeUIsQ0FBQTtJQUN6Qjt1R0FDbUc7SUFDbkcseUNBQTZCLENBQUE7SUFDN0IsMkNBQStCLENBQUE7SUFDL0IsbURBQXVDLENBQUE7SUFDdkMsZ0dBQWdHO0lBQ2hHLDZDQUFpQyxDQUFBO0lBQ2pDLGtGQUFrRjtJQUNsRiw2Q0FBaUMsQ0FBQTtJQUNqQywrRkFBK0Y7SUFDL0YsaURBQXFDLENBQUE7SUFDckM7OzRGQUV3RjtJQUN4RiwyQ0FBK0IsQ0FBQTtJQUMvQjs7OzRFQUd3RTtJQUN4RSxpREFBcUMsQ0FBQTtBQUN2QyxDQUFDLEVBaENXLFFBQVEsS0FBUixRQUFRLFFBZ0NuQjtBQVdELE1BQU0sa0JBQWtCLEdBQXdCLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUVqRixrRkFBa0Y7QUFDbEYsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEVBQWlDO0lBQ2pFLE9BQU8sT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBOEREOzs7OztHQUtHO0FBQ0gsK0ZBQStGO0FBQy9GLG9EQUFvRDtBQUNwRCxrRkFBa0Y7QUFDbEYsaUZBQWlGO0FB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cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUga2luZCBvZiByZW5kZXJpbmcgYSB2aWV3ZXIgYmFja2VuZCBzaG91bGQgcHJvZHVjZSBmb3IgdGhlIGxvYWRlZCBkYXRhLlxuICpcbiAqIExpdmVzIGluIGBjb250cmFjdHMvYCAocmF0aGVyIHRoYW4gaW5zaWRlIGEgc3BlY2lmaWMgYmFja2VuZCkgYmVjYXVzZSBpdCBpc1xuICogcGFydCBvZiB0aGUgYmFja2VuZC1uZXV0cmFsIHBsb3R0aW5nIGNvbnRyYWN0OiBib3RoIHRoZSBQbG90bHkgYmFja2VuZCBhbmRcbiAqIGFueSBmdXR1cmUgYmFja2VuZCAoZS5nLiBPcGVuU2VhZHJhZ29uKSBhY2NlcHQgYSBgUGxvdFR5cGVgIG9uIGBwbG90KClgLlxuICpcbiAqIE5PVEU6IGEgYmFja2VuZCBtYXkgbm90IHN1cHBvcnQgZXZlcnkgdHlwZSDigJQgM0QgdHlwZXMgKGBTVVJGQUNFYCxcbiAqIGBTQ0FUVEVSM0RgLCBgSVNPU1VSRkFDRWApIGFyZSBnYXRlZCBiZWhpbmQgYFZpZXdlckZlYXR1cmUuU3VyZmFjZTNEYCBpbiB0aGVcbiAqIGNhcGFiaWxpdGllcyBjb250cmFjdCwgc28gYSAyRC1vbmx5IGJhY2tlbmQgY2FuIGFkdmVydGlzZSB0aGF0IGl0IGNhbid0XG4gKiByZW5kZXIgdGhlbSBhbmQgdGhlIFVJIGNhbiBoaWRlIHRoZSBvcHRpb24uXG4gKi9cbmV4cG9ydCBlbnVtIFBsb3RUeXBlIHtcbiAgLyoqIE5hdGl2ZWx5LXRpbGVkLCB6b29tYWJsZSByYXN0ZXIgcmVuZGVyZWQgYnkgT3BlblNlYWRyYWdvbiAodGhlIGRlZmF1bHRcbiAgICogIHZpZXcgZm9yIGFuIGltYWdlKS4gSGVhdG1hcCByZW1haW5zIHRoZSBQbG90bHkgc2NhbGFyLWltYWdlIHJlbmRlcmluZy4gKi9cbiAgSU1BR0UgPSAnaW1hZ2UnLFxuICBIRUFUTUFQID0gJ2hlYXRtYXAnLFxuICBTVVJGQUNFID0gJ3N1cmZhY2UnLFxuICBDT05UT1VSID0gJ2NvbnRvdXInLFxuICBTQ0FUVEVSID0gJ3NjYXR0ZXInLFxuICAvLyBMSU5FOiByZXNlcnZlZC9zdHViYmVkIOKAlCBpbnRlbnNpdHkgcHJvZmlsZXMgYXJlIG5vdyBSZWdpb24tYmFzZWQgKGtlcHQgZm9yIGZ1dHVyZSB1c2UpXG4gIExJTkUgPSAnbGluZScsXG4gIFNDQVRURVIzRCA9ICdzY2F0dGVyM2QnLFxuICBJU09TVVJGQUNFID0gJ2lzb3N1cmZhY2UnLFxuICAvKiogV2ViR1BVIG5hcGFyaS1qcyByZW5kZXJpbmdzIChqaXQtdWkjMTAyKSwgc2VsZWN0YWJsZSBhbG9uZ3NpZGUgdGhlIE9TRC9QbG90bHkgdHlwZXMuIFRoZSAzRFxuICAgKiAgdHlwZXMgdGFrZSBhIHJ1bnRpbWUgZGVjaW1hdGUgZmFjdG9yIChGdWxsIC8gwr0gLyDCvCAvIOKFmykgaW5zdGVhZCBvZiBmaXhlZCBoaS9sby1yZXMgdmFyaWFudHMuICovXG4gIE5BUEFSSV9JTUFHRSA9ICduYXBhcmktaW1hZ2UnLFxuICBOQVBBUklfVk9MVU1FID0gJ25hcGFyaS12b2x1bWUnLFxuICBOQVBBUklfSVNPU1VSRkFDRSA9ICduYXBhcmktaXNvc3VyZmFjZScsXG4gIC8qKiBXZWJHUFUgaGVpZ2h0LWZpZWxkIHN1cmZhY2UgbWVzaCAoeiA9IGludGVuc2l0eSksIHRoZSBuYXBhcmktanMgYW5hbG9nIG9mIFBsb3RseSBTVVJGQUNFLiAqL1xuICBOQVBBUklfU1VSRkFDRSA9ICduYXBhcmktc3VyZmFjZScsXG4gIC8qKiBXZWJHUFUgMkQgc2NhdHRlciBvZiByZWdpb24gY2VudHJvaWRzIChuYXBhcmktanMgYW5hbG9nIG9mIFBsb3RseSBTQ0FUVEVSKS4gKi9cbiAgTkFQQVJJX1NDQVRURVIgPSAnbmFwYXJpLXNjYXR0ZXInLFxuICAvKiogV2ViR1BVIDNEIHNjYXR0ZXIgb2YgdGhlIGRvd25zYW1wbGVkIHZveGVsIGNsb3VkIChuYXBhcmktanMgYW5hbG9nIG9mIFBsb3RseSBTQ0FUVEVSM0QpLiAqL1xuICBOQVBBUklfU0NBVFRFUjNEID0gJ25hcGFyaS1zY2F0dGVyM2QnLFxuICAvKiogU3BhdGlhbC1vbWljcyBvYnNlcnZhdGlvbnMgKFZpc2l1bSBzcG90cywgc2VnbWVudGVkIGNlbGxzKSBkcmF3biBvdmVyIHRoZSB0aXNzdWUgaW1hZ2UgYW5kXG4gICAqICBjb2xvdXJlZCBieSBhbiBhbm5vdGF0aW9uIGNvbHVtbiBvciBhIGdlbmUuIE5lZWRzIGEgYFNwYXRpYWxEYXRhc2V0YCBvbiBgU1BBVElBTF9EQVRBX1BPUlRgLFxuICAgKiAgc28gaXQgaXMgZ2F0ZWQgYnkgYHJlcXVpcmVzU3BhdGlhbERhdGFgIGFuZCBuZXZlciBhcHBlYXJzIGZvciBhbiBpbWFnZS1vbmx5IGhvc3QuICovXG4gIFNQQVRJQUxfT01JQ1MgPSAnc3BhdGlhbC1vbWljcycsXG4gIC8qKiBTcGF0aWFsLW9taWNzIG9ic2VydmF0aW9ucyBhcyBhIDNEIHBvaW50IGNsb3VkLCBmb3IgYXNzYXlzIHdob3NlIG9ic2VydmF0aW9ucyBjYXJyeSBhIHog4oCUXG4gICAqICBzZXJpYWwgc2VjdGlvbnMgcmVnaXN0ZXJlZCBpbnRvIGEgY29tbW9uIGZyYW1lIChlLmcuIHRoZSBBbGxlbiBDQ0YpLCBvciBhIGdlbnVpbmVseVxuICAgKiAgdm9sdW1ldHJpYyBhc3NheS4gR2F0ZWQgYnkgYHJlcXVpcmVzU3BhdGlhbDNkYCwgYSBzdHJpY3RseSBuYXJyb3dlciBnYXRlIHRoYW5cbiAgICogIHtAbGluayBTUEFUSUFMX09NSUNTfTogYSBzaW5nbGUtcGxhbmUgZGF0YXNldCBoYXMgbm8geiB0byByZW5kZXIuICovXG4gIFNQQVRJQUxfT01JQ1NfM0QgPSAnc3BhdGlhbC1vbWljcy0zZCcsXG59XG5cbi8qKlxuICogQSB2YWx1ZSB0aGUgcGxvdC10eXBlIHNlbGVjdG9yIGNhbiBob2xkOiBhIGJ1aWx0LWluIHtAbGluayBQbG90VHlwZX0sIG9yIHRoZVxuICogYHR5cGVgIG9mIGEgY29udHJpYnV0ZWQgbW9kZSAoYENvbnRyaWJ1dGVkUGxvdFR5cGVEZXNjcmlwdG9yLnR5cGVgLCBzZWVcbiAqIGBwbG90LXR5cGUtY29udHJpYnV0aW9uLmNvbnRyYWN0LnRzYCkuIEV2ZXJ5dGhpbmcgdGhhdCBkZWNpZGVzIEhPVyB0byByZW5kZXJcbiAqIGtlZXBzIHRha2luZyBhIHtAbGluayBQbG90VHlwZX07IGEgY29udHJpYnV0ZWQgaWQgaXMgcmVzb2x2ZWQgdG8gaXRzXG4gKiBgYmFzZVR5cGVgIGZpcnN0LCBzbyBubyByZW5kZXJpbmcgc3dpdGNoIGV2ZXIgc2VlcyBvbmUuXG4gKi9cbmV4cG9ydCB0eXBlIFBsb3RUeXBlSWQgPSBQbG90VHlwZSB8IHN0cmluZztcblxuY29uc3QgQlVJTFRJTl9QTE9UX1RZUEVTOiBSZWFkb25seVNldDxzdHJpbmc+ID0gbmV3IFNldChPYmplY3QudmFsdWVzKFBsb3RUeXBlKSk7XG5cbi8qKiBXaGV0aGVyIGFuIGlkIG5hbWVzIGEgYnVpbHQtaW4gcGxvdCB0eXBlIChhcyBvcHBvc2VkIHRvIGEgY29udHJpYnV0ZWQgb25lKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0J1aWx0aW5QbG90VHlwZShpZDogUGxvdFR5cGVJZCB8IG51bGwgfCB1bmRlZmluZWQpOiBpZCBpcyBQbG90VHlwZSB7XG4gIHJldHVybiB0eXBlb2YgaWQgPT09ICdzdHJpbmcnICYmIEJVSUxUSU5fUExPVF9UWVBFUy5oYXMoaWQpO1xufVxuXG4vKiogSG93IG1hbnkgc3BhdGlhbCBkaW1lbnNpb25zIGEgcGxvdCB0eXBlIHJlbmRlcnMgaW4uICovXG5leHBvcnQgdHlwZSBQbG90RGltZW5zaW9ucyA9ICcyZCcgfCAnM2QnO1xuXG4vKipcbiAqIFdoZXJlIGEgcGxvdCB0eXBlIHB1bGxzIGl0cyBkYXRhIGZyb206XG4gKiAgLSBgaW1hZ2VgICAg4oCUIHRoZSBsb2FkZWQgcGl4ZWwgbWF0cmljZXMgLyB6LXN0YWNrIChIRUFUTUFQLCBTVVJGQUNFLCDigKYpXG4gKiAgLSBgcmVnaW9uc2Ag4oCUIHRoZSBkcmF3bi9kZXJpdmVkIHJlZ2lvbnMgKFNDQVRURVIgb2YgcmVnaW9uIGNlbnRyb2lkcywg4oCmKVxuICogIC0gYHNwYXRpYWxgIOKAlCBhIGBTcGF0aWFsRGF0YXNldGAgc3VwcGxpZWQgdGhyb3VnaCBgU1BBVElBTF9EQVRBX1BPUlRgOiBOXG4gKiAgICBvYnNlcnZhdGlvbnMgKHNwb3RzL2NlbGxzKSB3aXRoIGNhdGVnb3JpY2FsICsgY29udGludW91cyBjb2x1bW5zIGFuZCBhXG4gKiAgICBsYXppbHktZmV0Y2hlZCBmZWF0dXJlIG1hdHJpeCwgZHJhd24gb3ZlciB0aGUgdGlzc3VlIGltYWdlIHRoZXkgY2FtZSBmcm9tLlxuICovXG5leHBvcnQgdHlwZSBQbG90RGF0YVNvdXJjZSA9ICdpbWFnZScgfCAncmVnaW9ucycgfCAnc3BhdGlhbCc7XG5cbi8qKlxuICogQmFja2VuZC1uZXV0cmFsIG1ldGFkYXRhIGFib3V0IGEgcGxvdCB0eXBlLiBEcml2ZXMgVUkgYWZmb3JkYW5jZXMgKHdoaWNoXG4gKiB0eXBlcyBhcmUgM0QsIHdoaWNoIG5lZWQgYW4gaW1hZ2Ugc3RhY2ssIGhvdyB0byBsYWJlbCB0aGVtIGluIGEgZHJvcGRvd24pXG4gKiB3aXRob3V0IGFueSBiYWNrZW5kJ3MgdHJhY2UtYnVpbGRpbmcgbG9naWMgbGVha2luZyBpbnRvIHRoZSBjb250cmFjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG90VHlwZURlc2NyaXB0b3Ige1xuICB0eXBlOiBQbG90VHlwZTtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIGZvciBtZW51cy9kcm9wZG93bnMuIFNob3duIGluICoqdGVzdCBtb2RlKiosIHdoZXJlXG4gICAqICBldmVyeSBiYWNrZW5kJ3MgdHlwZSBpcyBvZmZlcmVkLCBzbyBpdCBjYXJyaWVzIHRoZSBiYWNrZW5kIHN1ZmZpeCAoZS5nLlxuICAgKiAgXCJTdXJmYWNlIChuYXBhcmkgwrcgV2ViR1BVKVwiKSB0byBkaXNhbWJpZ3VhdGUgc2FtZS1uYW1lZCBtb2Rlcy4gKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIExhYmVsIHNob3duIGluIHRoZSAqKmRlZmF1bHQgKG5vbi10ZXN0KSBzZWxlY3RvcioqLCB3aGVyZSBhIHNpbmdsZSBjdXJhdGVkXG4gICAqIG1vZGUgb3ducyBlYWNoIG5hbWUg4oCUIHNvIGl0IGRyb3BzIHRoZSBiYWNrZW5kIHN1ZmZpeCAoZS5nLiBqdXN0IFwiU3VyZmFjZVwiKS5cbiAgICogQSB0eXBlIFdJVEhPVVQgYSBgcHJvZHVjdGlvbkxhYmVsYCBpcyAqKnRlc3Qtb25seSoqOiBoaWRkZW4gZnJvbSB0aGUgZGVmYXVsdFxuICAgKiBzZWxlY3RvciBhbmQgc2hvd24gb25seSB3aGVuIHRoZSBob3N0IGVuYWJsZXMgdGVzdCBtb2RlLiBUaGlzIGlzIHRoZSBzaW5nbGVcbiAgICoga25vYiB0aGF0IGN1cmF0ZXMgdGhlIGRlZmF1bHQgcGxvdC1tb2RlIGxpc3QgKGpheC1pbWFnZS12aXN1YWxpemF0aW9uKS5cbiAgICovXG4gIHByb2R1Y3Rpb25MYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIEljb24gc2hvd24gdG8gdGhlIGxlZnQgb2YgdGhlIGxhYmVsIGluIHRoZSBwbG90LXR5cGUgc2VsZWN0b3IuIEVpdGhlciBhXG4gICAqIFByaW1lTkcgaWNvbiBjbGFzcyAoc3RhcnRzIHdpdGggYHBpIGAsIGUuZy4gYHBpIHBpLWltYWdlYCkgcmVuZGVyZWQgYXMgYVxuICAgKiBmb250IGdseXBoLCBvciBhIHNlcnZlZCBTVkcgYXNzZXQgcGF0aCAoZS5nLiBgYXNzZXRzL3Bsb3R0aW5nL3N1cmZhY2Uuc3ZnYClcbiAgICogcmVuZGVyZWQgYXMgYW4gYDxpbWc+YC4gQm90aCBhcmUgdGludGVkIHRvIHRoZSB0b29sYmFyJ3MgcHJpbWFyeSBibHVlLlxuICAgKi9cbiAgaWNvbj86IHN0cmluZztcbiAgZGltZW5zaW9uczogUGxvdERpbWVuc2lvbnM7XG4gIHNvdXJjZTogUGxvdERhdGFTb3VyY2U7XG4gIC8qKiBUcnVlIHdoZW4gdGhlIHR5cGUgb25seSBtYWtlcyBzZW5zZSBvdmVyIGEgbXVsdGktZnJhbWUgei1zdGFjay4gKi9cbiAgcmVxdWlyZXNTdGFjaz86IGJvb2xlYW47XG4gIC8qKiBUcnVlIHdoZW4gdGhlIHR5cGUgbWFwcyBhIHNpbmdsZSBzY2FsYXIgaW50ZW5zaXR5IHBlciBwaXhlbCAoY29udG91cixcbiAgICogIHN1cmZhY2UsIGludGVuc2l0eSBwcm9maWxlLCBpc29zdXJmYWNlKSDigJQgb25seSBtZWFuaW5nZnVsIGZvciBncmF5c2NhbGUuXG4gICAqICBJbWFnZS9IZWF0bWFwIHJlbmRlciBSR0IgZmluZTsgU2NhdHRlciB1c2VzIHJlZ2lvbnMuICovXG4gIHJlcXVpcmVzR3JheXNjYWxlPzogYm9vbGVhbjtcbiAgLyoqIFRydWUgd2hlbiB0aGUgdHlwZSByZW5kZXJzIGEgYFNwYXRpYWxEYXRhc2V0YCAoYHNvdXJjZTogJ3NwYXRpYWwnYCkgYW5kIGlzXG4gICAqICB0aGVyZWZvcmUgbWVhbmluZ2xlc3Mgd2l0aG91dCBvbmUuIFRoZSBzZWxlY3RvciBoaWRlcyBpdCB1bnRpbCBhIGRhdGFzZXQgaXNcbiAgICogIHB1Ymxpc2hlZCBvbiBgU1BBVElBTF9EQVRBX1BPUlRgIOKAlCB0aGUgc2FtZSBzaGFwZSBvZiBnYXRlIGFzXG4gICAqICB7QGxpbmsgcmVxdWlyZXNTdGFja30gZm9yIGEgei1zdGFjaywgc28gYSBob3N0IHdpdGggbm8gc3BhdGlhbCBkYXRhIG5ldmVyXG4gICAqICBzZWVzIHRoZSBtb2RlLiAqL1xuICByZXF1aXJlc1NwYXRpYWxEYXRhPzogYm9vbGVhbjtcbiAgLyoqIFRydWUgd2hlbiB0aGUgdHlwZSBuZWVkcyBvYnNlcnZhdGlvbnMgd2l0aCBhIHogY29vcmRpbmF0ZSwgbm90IG1lcmVseSBhXG4gICAqICBgU3BhdGlhbERhdGFzZXRgLiBOYXJyb3dlciB0aGFuIHtAbGluayByZXF1aXJlc1NwYXRpYWxEYXRhfTogbW9zdCBzcGF0aWFsXG4gICAqICBhc3NheXMgYXJlIGEgc2luZ2xlIHBsYW5lLCBzbyB0aGlzIGhpZGVzIHRoZSAzRCBtb2RlIHVubGVzcyB0aGUgcHVibGlzaGVkXG4gICAqICBkYXRhc2V0IGFjdHVhbGx5IGNhcnJpZXMgYG9ic2VydmF0aW9ucy56YC4gKi9cbiAgcmVxdWlyZXNTcGF0aWFsM2Q/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHBsb3QtdHlwZSBtZXRhZGF0YS4gTElORSBpcyBpbnRlbnRpb25hbGx5IGFic2VudCDigJRcbiAqIGludGVuc2l0eSBwcm9maWxlcyBhcmUgbm93IFJlZ2lvbi1iYXNlZCBsaW5lIFJPSXMgKGF2YWlsYWJsZSBpbiBIZWF0bWFwL0ltYWdlXG4gKiBtb2RlKSwgc28gTElORSBpcyBubyBsb25nZXIgb2ZmZXJlZCBpbiB0aGUgc2VsZWN0b3IgKHRoZSBlbnVtIG1lbWJlciBpcyBrZXB0XG4gKiBmb3IgZnV0dXJlIHVzZSkuIEhlbmNlIHRoZSBgUGFydGlhbGAgcmVjb3JkLlxuICovXG4vLyBEcm9wZG93biBvcmRlciA9IGluc2VydGlvbiBvcmRlcjogSW1hZ2UgKE9TRCkgZGVmYXVsdCBhdCB0aGUgdG9wLCB0aGVuIGFsbCBQbG90bHkgcGxvdCBtb2Rlc1xuLy8gZ3JvdXBlZCwgdGhlbiBhbGwgbmFwYXJpLWpzIFdlYkdQVSBtb2RlcyBncm91cGVkLlxuLy8gYHByb2R1Y3Rpb25MYWJlbGAgbWFya3MgdGhlIGN1cmF0ZWQgZGVmYXVsdC1zZWxlY3RvciBzZXQgKGppdC11aSM3MCBmb2xsb3ctdXApOlxuLy8gIC0gSU1BR0UgLyBIRUFUTUFQIC8gQ09OVE9VUiAoMkQpIGFuZCB0aGUgbmFwYXJpIFNVUkZBQ0UgLyBWT0xVTUUgLyBJU09TVVJGQUNFXG4vLyAgICAoM0QpIGFyZSB0aGUgbW9kZXMgc2hvd24gYnkgZGVmYXVsdCwgdW5kZXIgc3VmZml4LWZyZWUgbmFtZXMuXG4vLyAgLSBFdmVyeXRoaW5nIGVsc2UgKGFsbCBTY2F0dGVycywgTkFQQVJJX0lNQUdFLCBhbmQgdGhlIFBsb3RseSBTVVJGQUNFIC9cbi8vICAgIElTT1NVUkZBQ0UgdGhhdCB0aGUgbmFwYXJpIHZlcnNpb25zIHN1cGVyc2VkZSkgaXMgdGVzdC1vbmx5IOKAlCBub1xuLy8gICAgYHByb2R1Y3Rpb25MYWJlbGAsIHNvIGl0IGFwcGVhcnMgb25seSB3aGVuIHRoZSBob3N0IGVuYWJsZXMgdGVzdCBtb2RlLlxuZXhwb3J0IGNvbnN0IFBMT1RfVFlQRV9ERVNDUklQVE9SUzogUGFydGlhbDxSZWNvcmQ8UGxvdFR5cGUsIFBsb3RUeXBlRGVzY3JpcHRvcj4+ID0ge1xuICAvLyDilIDilIAgRGVmYXVsdCDilIDilIBcbiAgW1Bsb3RUeXBlLklNQUdFXTogICAgICB7IHR5cGU6IFBsb3RUeXBlLklNQUdFLCAgICAgIGxhYmVsOiAnSW1hZ2UgKE9TRCknLCAgICAgICAgICAgcHJvZHVjdGlvbkxhYmVsOiAnSW1hZ2UnLCAgICAgIGljb246ICdwaSBwaS1pbWFnZScsICAgICAgICAgICAgICAgICAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdpbWFnZScgfSxcbiAgLy8g4pSA4pSAIFBsb3RseSDilIDilIBcbiAgW1Bsb3RUeXBlLkhFQVRNQVBdOiAgICB7IHR5cGU6IFBsb3RUeXBlLkhFQVRNQVAsICAgIGxhYmVsOiAnSGVhdG1hcCAoUGxvdGx5KScsICAgICAgcHJvZHVjdGlvbkxhYmVsOiAnSGVhdG1hcCcsICAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvaGVhdG1hcC5zdmcnLCAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdpbWFnZScgfSxcbiAgW1Bsb3RUeXBlLkNPTlRPVVJdOiAgICB7IHR5cGU6IFBsb3RUeXBlLkNPTlRPVVIsICAgIGxhYmVsOiAnQ29udG91ciAoUGxvdGx5KScsICAgICAgcHJvZHVjdGlvbkxhYmVsOiAnQ29udG91cicsICAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvY29udG91ci5zdmcnLCAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIFtQbG90VHlwZS5TQ0FUVEVSXTogICAgeyB0eXBlOiBQbG90VHlwZS5TQ0FUVEVSLCAgICBsYWJlbDogJ1NjYXR0ZXIgMkQgKFBsb3RseSknLCAgIGljb246ICdwaSBwaS1jaGFydC1zY2F0dGVyJywgICAgICAgICAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdyZWdpb25zJyB9LFxuICBbUGxvdFR5cGUuU1VSRkFDRV06ICAgIHsgdHlwZTogUGxvdFR5cGUuU1VSRkFDRSwgICAgbGFiZWw6ICdTdXJmYWNlIChQbG90bHkpJywgICAgICBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nL3N1cmZhY2Uuc3ZnJywgICAgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICBbUGxvdFR5cGUuU0NBVFRFUjNEXTogIHsgdHlwZTogUGxvdFR5cGUuU0NBVFRFUjNELCAgbGFiZWw6ICdTY2F0dGVyIDNEIChQbG90bHkpJywgICBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nLzNkLWNvb3JkaW5hdGVzLnN2ZycsIGRpbWVuc2lvbnM6ICczZCcsIHNvdXJjZTogJ2ltYWdlJywgcmVxdWlyZXNTdGFjazogdHJ1ZSwgcmVxdWlyZXNHcmF5c2NhbGU6IHRydWUgfSxcbiAgW1Bsb3RUeXBlLklTT1NVUkZBQ0VdOiB7IHR5cGU6IFBsb3RUeXBlLklTT1NVUkZBQ0UsIGxhYmVsOiAnSXNvc3VyZmFjZSAoUGxvdGx5KScsICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9pc29zdXJmYWNlLnN2ZycsIGRpbWVuc2lvbnM6ICczZCcsIHNvdXJjZTogJ2ltYWdlJywgcmVxdWlyZXNTdGFjazogdHJ1ZSwgcmVxdWlyZXNHcmF5c2NhbGU6IHRydWUgfSxcbiAgLy8g4pSA4pSAIG5hcGFyaS1qcyBXZWJHUFUgKGppdC11aSMxMDIpLiBUaGUgM0QgdHlwZXMgdGFrZSBhIHJ1bnRpbWUgZGVjaW1hdGUgZmFjdG9yLiDilIDilIBcbiAgW1Bsb3RUeXBlLk5BUEFSSV9JTUFHRV06ICAgICAgeyB0eXBlOiBQbG90VHlwZS5OQVBBUklfSU1BR0UsICAgICAgbGFiZWw6ICdJbWFnZSAobmFwYXJpIMK3IFdlYkdQVSknLCAgICAgIGljb246ICdwaSBwaS1pbWFnZScsICAgICAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnaW1hZ2UnIH0sXG4gIFtQbG90VHlwZS5OQVBBUklfU0NBVFRFUl06ICAgIHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX1NDQVRURVIsICAgIGxhYmVsOiAnU2NhdHRlciAyRCAobmFwYXJpIMK3IFdlYkdQVSknLCBpY29uOiAncGkgcGktY2hhcnQtc2NhdHRlcicsICAgICAgICAgICAgICAgIGRpbWVuc2lvbnM6ICcyZCcsIHNvdXJjZTogJ3JlZ2lvbnMnIH0sXG4gIFtQbG90VHlwZS5OQVBBUklfU1VSRkFDRV06ICAgIHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX1NVUkZBQ0UsICAgIGxhYmVsOiAnU3VyZmFjZSAobmFwYXJpIMK3IFdlYkdQVSknLCAgICBwcm9kdWN0aW9uTGFiZWw6ICdTdXJmYWNlJywgICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9zdXJmYWNlLnN2ZycsICAgICAgICBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScgfSwgLy8gYSBoZWlnaHQtZmllbGQgaXMgej1pbnRlbnNpdHkgb2Ygb25lIHBsYW5lIOKAlCB3b3JrcyBmb3IgYW55IGdyYXlzY2FsZS9SR0IgaW1hZ2UgKFJHQuKGkmx1bWluYW5jZSksIG5vIHN0YWNrIG5lZWRlZFxuICBbUGxvdFR5cGUuTkFQQVJJX1NDQVRURVIzRF06ICB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSM0QsICBsYWJlbDogJ1NjYXR0ZXIgM0QgKG5hcGFyaSDCtyBXZWJHUFUpJywgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy8zZC1jb29yZGluYXRlcy5zdmcnLCBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIFtQbG90VHlwZS5OQVBBUklfVk9MVU1FXTogICAgIHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX1ZPTFVNRSwgICAgIGxhYmVsOiAnVm9sdW1lIChuYXBhcmkgwrcgV2ViR1BVKScsICAgICBwcm9kdWN0aW9uTGFiZWw6ICdWb2x1bWUnLCAgICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9jdWJlLTNkLnN2ZycsICAgICAgICBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIFtQbG90VHlwZS5OQVBBUklfSVNPU1VSRkFDRV06IHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX0lTT1NVUkZBQ0UsIGxhYmVsOiAnSXNvc3VyZmFjZSAobmFwYXJpIMK3IFdlYkdQVSknLCBwcm9kdWN0aW9uTGFiZWw6ICdJc29zdXJmYWNlJywgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9pc29zdXJmYWNlLnN2ZycsICAgICBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIC8vIOKUgOKUgCBTcGF0aWFsIG9taWNzIOKUgOKUgFxuICBbUGxvdFR5cGUuU1BBVElBTF9PTUlDU106ICAgICB7IHR5cGU6IFBsb3RUeXBlLlNQQVRJQUxfT01JQ1MsICAgICBsYWJlbDogJ1NwYXRpYWwgb21pY3MgKG5hcGFyaSDCtyBXZWJHUFUpJywgcHJvZHVjdGlvbkxhYmVsOiAnU3BhdGlhbCBvbWljcycsIGljb246ICdhc3NldHMvcGxvdHRpbmcvc3BhdGlhbC1vbWljcy5zdmcnLCAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnc3BhdGlhbCcsIHJlcXVpcmVzU3BhdGlhbERhdGE6IHRydWUgfSxcbiAgW1Bsb3RUeXBlLlNQQVRJQUxfT01JQ1NfM0RdOiAgeyB0eXBlOiBQbG90VHlwZS5TUEFUSUFMX09NSUNTXzNELCAgbGFiZWw6ICdTcGF0aWFsIG9taWNzIDNEIChuYXBhcmkgwrcgV2ViR1BVKScsIHByb2R1Y3Rpb25MYWJlbDogJ1NwYXRpYWwgb21pY3MgM0QnLCBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nL3NwYXRpYWwtb21pY3MtM2Quc3ZnJywgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnc3BhdGlhbCcsIHJlcXVpcmVzU3BhdGlhbERhdGE6IHRydWUsIHJlcXVpcmVzU3BhdGlhbDNkOiB0cnVlIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGxvdFR5cGVEZXNjcmlwdG9yKHR5cGU6IFBsb3RUeXBlKTogUGxvdFR5cGVEZXNjcmlwdG9yIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIFBMT1RfVFlQRV9ERVNDUklQVE9SU1t0eXBlXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGhyZWVEaW1lbnNpb25hbCh0eXBlOiBQbG90VHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gUExPVF9UWVBFX0RFU0NSSVBUT1JTW3R5cGVdPy5kaW1lbnNpb25zID09PSAnM2QnO1xufVxuXG4vLyDilIDilIAgbmFwYXJpLWpzIDNEIHBsb3QtdHlwZSBwcmVkaWNhdGVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLyoqIG5hcGFyaS1qcyB2b2x1bWUuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlWb2x1bWUodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09IFBsb3RUeXBlLk5BUEFSSV9WT0xVTUU7XG59XG4vKiogbmFwYXJpLWpzIGlzb3N1cmZhY2UuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlJc29zdXJmYWNlKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfSVNPU1VSRkFDRTtcbn1cbi8qKiBuYXBhcmktanMgaGVpZ2h0LWZpZWxkIHN1cmZhY2UgbWVzaC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05hcGFyaVN1cmZhY2UodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09IFBsb3RUeXBlLk5BUEFSSV9TVVJGQUNFO1xufVxuLyoqIG5hcGFyaS1qcyAyRCBzY2F0dGVyIChyZWdpb24gY2VudHJvaWRzKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05hcGFyaVNjYXR0ZXIodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09IFBsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSO1xufVxuLyoqIG5hcGFyaS1qcyAzRCBzY2F0dGVyICh2b3hlbCBwb2ludCBjbG91ZCkuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlTY2F0dGVyM2QodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09IFBsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSM0Q7XG59XG4vKiogU3BhdGlhbC1vbWljcyBvYnNlcnZhdGlvbnMgb3ZlciB0aGUgdGlzc3VlIGltYWdlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3BhdGlhbE9taWNzKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5TUEFUSUFMX09NSUNTO1xufVxuLyoqIFNwYXRpYWwtb21pY3Mgb2JzZXJ2YXRpb25zIGFzIGEgM0QgcG9pbnQgY2xvdWQuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTcGF0aWFsT21pY3MzZCh0eXBlOiBQbG90VHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZSA9PT0gUGxvdFR5cGUuU1BBVElBTF9PTUlDU18zRDtcbn1cbi8qKlxuICogV2hldGhlciB0aGUgcmVuZGVyZXIsIHJhdGhlciB0aGFuIHRoZSBzaGVsbCwgc2hvdWxkIGhhbmRsZSB3aGVlbCB6b29tLlxuICpcbiAqIFRoZSBzaGVsbCdzIHdoZWVsIGxpc3RlbmVyIGFwcGxpZXMgYSBGSVhFRCBzdGVwIHBlciBldmVudCwgd2hpY2ggaXMgZmFyIHRvbyBzZW5zaXRpdmUgZm9yIGFcbiAqIHJlbmRlcmVyIHRoYXQgcmVhZHMgdGhlIHNjcm9sbCBkZWx0YTogaXQgd29ya3Mgb3V0IGF0IDMwJSBwZXIgZXZlbnQgYWdhaW5zdCBuYXBhcmktanMncyAzJSwgYW5kXG4gKiBpZ25vcmVzIHRoZSBkZXZpY2Ugbm9ybWFsaXphdGlvbiBhbmQgZWFzaW5nIHRoZSByZW5kZXJlciBkb2VzLiBTbyBldmVyeSBwbG90IHR5cGUgZHJhd24gYnkgYVxuICogcmVuZGVyZXIgdGhhdCBvd25zIHRoZSB3aGVlbCBoYXMgdG8gb3B0IG91dCBoZXJlLlxuICpcbiAqIFRoZSBpbWFnZSB2aWV3IGFsd2F5cyBkaWQuIFRoZSBzcGF0aWFsLW9taWNzIG1vZGVzIGRpZCBOT1QsIGRlc3BpdGUgYmVpbmcgZHJhd24gYnkgdGhlIHNhbWVcbiAqIG5hcGFyaS1qcyB2aWV3ZXIg4oCUIHRoZSBzaGVsbCBnYXRlZCBvbiBhbiBgaXNIZWF0bWFwYCBmbGFnIHRoYXQgZGVmYXVsdHMgdG8gdHJ1ZSBhbmQgb25seSBnb2VzXG4gKiBmYWxzZSBmb3IgdGhlIDNEIFBsb3RseSBzY2VuZXMsIHNvIGl0IHNpbGVudGx5IHRvb2sgdGhlIHdoZWVsIGZvciB0aGVtIHRvby5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlcmVyT3duc1doZWVsKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5JTUFHRSB8fCBpc1NwYXRpYWxPbWljcyh0eXBlKSB8fCBpc1NwYXRpYWxPbWljczNkKHR5cGUpO1xufVxuXG4vKiogQW55IG5hcGFyaS1qcyAzRCBwbG90IHR5cGUgKHZvbHVtZSwgaXNvc3VyZmFjZSwgc3VyZmFjZSwgb3IgM0Qgc2NhdHRlcikuIFJlc29sdXRpb24gaXMgYSBydW50aW1lXG4gKiAgZGVjaW1hdGUgZmFjdG9yIChGdWxsIC8gwr0gLyDCvCAvIOKFmykg4oCUIHNlZSB0aGUgc2VydmljZSdzIGByZXNvbHV0aW9uU2NhbGVgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFwYXJpM2QodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBpc05hcGFyaVZvbHVtZSh0eXBlKSB8fCBpc05hcGFyaUlzb3N1cmZhY2UodHlwZSkgfHwgaXNOYXBhcmlTdXJmYWNlKHR5cGUpIHx8IGlzTmFwYXJpU2NhdHRlcjNkKHR5cGUpXG4gICk7XG59XG5cbi8qKiBEZWNpbWF0ZSBmYWN0b3JzIG9mZmVyZWQgYnkgdGhlIFJlc29sdXRpb24gY29udHJvbCAoMSA9IEZ1bGwg4oCmIDggPSDihZspLiAqL1xuZXhwb3J0IGNvbnN0IE5BUEFSSV9ERUNJTUFURV9PUFRJT05TOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBudW1iZXIgfVtdID0gW1xuICB7IGxhYmVsOiAnRnVsbCcsIHZhbHVlOiAxIH0sXG4gIHsgbGFiZWw6ICfCvScsIHZhbHVlOiAyIH0sXG4gIHsgbGFiZWw6ICfCvCcsIHZhbHVlOiA0IH0sXG4gIHsgbGFiZWw6ICfihZsnLCB2YWx1ZTogOCB9LFxuXTtcblxuLyoqIERlZmF1bHQgZGVjaW1hdGUgZmFjdG9yOiDCvC4gVGhlIGNhcHMgYXJlIHNldCBzbyDCvCBpcyBhIHNlbnNpYmxlIGRlZmF1bHQgcmVzb2x1dGlvbiB3aGlsZSDCvSBhbmRcbiAqICBGdWxsIG9mZmVyIDLDlyBhbmQgNMOXIHRoZSBkZXRhaWwgZm9yIG9wdC1pbiBoaWdoLXJlc29sdXRpb24gcmVuZGVycy4gKi9cbmV4cG9ydCBjb25zdCBOQVBBUklfREVGQVVMVF9ERUNJTUFURSA9IDQ7XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const SPATIAL_DATA_PORT = new InjectionToken('SPATIAL_DATA_PORT');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1kYXRhLnBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbnRyYWN0cy9wb3J0cy9zcGF0aWFsLWRhdGEucG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBa0cvQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBa0IsbUJBQW1CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIFNwYXRpYWxDb2x1bW4sIFNwYXRpYWxEYXRhc2V0LCBTcGF0aWFsRW1iZWRkaW5nLCBTcGF0aWFsUG9seWdvbnMsXG59IGZyb20gJy4uL3NwYXRpYWwtZGF0YXNldC5jb250cmFjdCc7XG5cbi8qKlxuICogU3BhdGlhbC1vbWljcyBkYXRhIGFjY2VzcywgaW52ZXJ0ZWQgYXMgYSBwb3J0IHNvIHRoZSB2aXN1YWxpemF0aW9uIGxpYnJhcnlcbiAqIG5ldmVyIGxlYXJucyBob3cgdGhlIGRhdGEgaXMgc3RvcmVkIG9yIHNlcnZlZCDigJQgZXhhY3RseSBsaWtlXG4gKiBgVElMRV9BQ0NFU1NfUE9SVGAgZm9yIHRpbGVzIGFuZCBgUkVHSU9OX0lPX1BPUlRgIGZvciBhbm5vdGF0aW9ucy4gVGhlIGhvc3RcbiAqIHN1cHBsaWVzIGFuIGFkYXB0ZXI7IHRoZSBsaWJyYXJ5IGNvbnN1bWVzIHR5cGVkIGFycmF5cy5cbiAqXG4gKiBXSFkgQSBQT1JUIEFORCBOT1QgQSBSRUFERVJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVGhlIGludGVyY2hhbmdlIGZvcm1hdCBmb3IgdGhpcyBkYXRhIChTcGF0aWFsRGF0YSBaYXJyIHYzICsgQW5uRGF0YVxuICogY29udmVudGlvbnMgKyBHZW9QYXJxdWV0IHNoYXBlcykgbmVlZHMgdGhyZWUgcGFyc2VycywgYW5kIGl0cyBleHByZXNzaW9uXG4gKiBtYXRyaXggaXMgc3RvcmVkIG9ic2VydmF0aW9uLW1ham9yIOKAlCBzbyByZWFkaW5nIGEgc2luZ2xlIGdlbmUncyBjb2x1bW4gbWVhbnNcbiAqIHRvdWNoaW5nIGV2ZXJ5IHJvdy4gQSBzZXJ2ZXIgY2FuIHByZS1pbmRleCB0aGF0IG9uY2U7IGEgYnJvd3NlciBjYW5ub3QuIFNvXG4gKiB0aGUgbGlicmFyeSB0YWtlcyB2ZWN0b3JzIGl0IGNhbiByZW5kZXIgYW5kIGxlYXZlcyBpbmdlc3QgdG8gd2hvZXZlciBvd25zIHRoZVxuICogZGF0YS4gYFNwYXRpYWxEYXRhSHR0cFNlcnZpY2VgIGlzIGEgcmVhZHktbWFkZSBhZGFwdGVyIGZvciB0aGUgd2lyZSBmb3JtYXRcbiAqIHRoZSBidW5kbGVkIGV4YW1wbGUgc2VydmVyIHNwZWFrczsgYSBob3N0IHdpdGggaXRzIG93biBiYWNrZW5kIGltcGxlbWVudHNcbiAqIHRoaXMgaW50ZXJmYWNlIGluc3RlYWQuXG4gKlxuICogTEFaSU5FU1MgSVMgVEhFIFBPSU5UXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIGBnZXREYXRhc2V0JCgpYCB5aWVsZHMgb25seSB3aGF0IGlzIGNoZWFwIHRvIGhvbGQ6IGNvb3JkaW5hdGVzIHBsdXMgY29sdW1uXG4gKiBhbmQgZmVhdHVyZSAqbWV0YWRhdGEqLiBFdmVyeSBhY2Nlc3NvciBiZWxvdyBmZXRjaGVzIG9uZSB2ZWN0b3IgYXQgYSB0aW1lLFxuICogZm9yIHRoZSBvbmUgY29sdW1uIG9yIGdlbmUgY3VycmVudGx5IGJlaW5nIGRpc3BsYXllZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcGF0aWFsRGF0YVBvcnQge1xuICAvKipcbiAgICogVGhlIGRhdGFzZXQgY3VycmVudGx5IGJlaW5nIHZpc3VhbGl6ZWQsIG9yIG51bGwgd2hlbiBub25lIGlzIHNlbGVjdGVkLlxuICAgKiBFbWl0cyBhZ2FpbiB3aGVuIHRoZSBob3N0IHN3aXRjaGVzIGRhdGFzZXRzLCBzbyB0aGUgdmlldyBjYW4gcmVidWlsZC5cbiAgICovXG4gIGdldERhdGFzZXQkKCk6IE9ic2VydmFibGU8U3BhdGlhbERhdGFzZXQgfCBudWxsPjtcblxuICAvKipcbiAgICogVmFsdWVzIGZvciBvbmUgYW5ub3RhdGlvbiBjb2x1bW4sIGluZGV4LWFsaWduZWQgd2l0aCB0aGUgb2JzZXJ2YXRpb25zLlxuICAgKiBUaGUgY29sdW1uIG11c3QgYmUgb25lIGFkdmVydGlzZWQgaW4gYFNwYXRpYWxEYXRhc2V0LmNvbHVtbnNgOyByZWplY3RcbiAgICogKGRvbid0IHJlc29sdmUgZW1wdHkpIHdoZW4gaXQgaXNuJ3QsIHNvIGEgdHlwbyBzdXJmYWNlcyBpbnN0ZWFkIG9mXG4gICAqIHJlbmRlcmluZyBhcyBcIm5vIGRhdGFcIi5cbiAgICpcbiAgICogSW1wbGVtZW50YXRpb25zIHNob3VsZCBjYWNoZSDigJQgY29sb3VyaW5nIGJ5IGNsdXN0ZXIsIHRoZW4gYnkgYSBnZW5lLCB0aGVuXG4gICAqIGJhY2sgYnkgY2x1c3RlciBtdXN0IG5vdCByZWZldGNoLlxuICAgKi9cbiAgZ2V0Q29sdW1uKG5hbWU6IHN0cmluZyk6IFByb21pc2U8U3BhdGlhbENvbHVtbj47XG5cbiAgLyoqXG4gICAqIE9uZSBmZWF0dXJlJ3MgKGdlbmUncykgZXhwcmVzc2lvbiB2ZWN0b3IsIGluZGV4LWFsaWduZWQgd2l0aCB0aGVcbiAgICogb2JzZXJ2YXRpb25zLiBSZWplY3RzIGZvciBhbiB1bmtub3duIGZlYXR1cmUuXG4gICAqL1xuICBnZXRGZWF0dXJlVmVjdG9yKG5hbWU6IHN0cmluZyk6IFByb21pc2U8RmxvYXQzMkFycmF5PjtcblxuICAvKipcbiAgICogT25lIGVtYmVkZGluZydzIGNvb3JkaW5hdGVzLCBpbmRleC1hbGlnbmVkIHdpdGggdGhlIG9ic2VydmF0aW9ucy5cbiAgICpcbiAgICogVGhlIG5hbWUgbXVzdCBiZSBvbmUgYWR2ZXJ0aXNlZCBpbiBgU3BhdGlhbERhdGFzZXQuZW1iZWRkaW5nc2A7IHJlamVjdHMgb3RoZXJ3aXNlLCBmb3IgdGhlXG4gICAqIHNhbWUgcmVhc29uIGBnZXRDb2x1bW5gIGRvZXMg4oCUIGEgdHlwbyBzaG91bGQgc3VyZmFjZSByYXRoZXIgdGhhbiByZW5kZXIgYXMgYW4gZW1wdHkgcGxvdC5cbiAgICpcbiAgICogT3B0aW9uYWw6IGEgaG9zdCB3aXRoIG5vIGVtYmVkZGluZ3Mgc2ltcGx5IG9taXRzIGl0LCBhbmQgdGhlIFVJIG9mZmVycyBubyBlbWJlZGRpbmcgdmlld3MuXG4gICAqL1xuICBnZXRFbWJlZGRpbmc/KG5hbWU6IHN0cmluZyk6IFByb21pc2U8U3BhdGlhbEVtYmVkZGluZz47XG5cbiAgLyoqXG4gICAqIFR5cGVhaGVhZCBvdmVyIGZlYXR1cmUgbmFtZXMsIGZvciBkYXRhc2V0cyB0b28gd2lkZSB0byBpbmxpbmUgdGhlIGxpc3RcbiAgICogKGBTcGF0aWFsRmVhdHVyZU1ldGEubmFtZXNgIGFic2VudCkuIE9wdGlvbmFsOiBhIGhvc3Qgd2hvc2UgcGFuZWwgaXMgc21hbGxcbiAgICogZW5vdWdoIHRvIGlubGluZSBldmVyeSBuYW1lIG5lZWQgbm90IGltcGxlbWVudCBpdCDigJQgdGhlIFVJIGZhbGxzIGJhY2sgdG9cbiAgICogZmlsdGVyaW5nIGBuYW1lc2AgbG9jYWxseS5cbiAgICovXG4gIHNlYXJjaEZlYXR1cmVzPyhxdWVyeTogc3RyaW5nLCBsaW1pdD86IG51bWJlcik6IFByb21pc2U8c3RyaW5nW10+O1xuXG4gIC8qKlxuICAgKiBQZXItb2JzZXJ2YXRpb24gYm91bmRhcnkgZ2VvbWV0cnksIHdoZW4gdGhlIGRhdGFzZXQgYWR2ZXJ0aXNlc1xuICAgKiBgcG9seWdvbnNgLiBPcHRpb25hbCDigJQgYSBzcG90LWJhc2VkIGFzc2F5IChWaXNpdW0pIGhhcyBubyBzZWdtZW50YXRpb24uXG4gICAqL1xuICBnZXRQb2x5Z29ucz8oKTogUHJvbWlzZTxTcGF0aWFsUG9seWdvbnM+O1xuXG4gIC8qKlxuICAgKiBUaGUgcmVmZXJlbmNlIHZvbHVtZSdzIHZveGVsczogYSB1aW50OCBzY2FsYXIgZmllbGQsIHgtZmFzdGVzdCwgb2YgZXhhY3RseVxuICAgKiBgd2lkdGggKiBoZWlnaHQgKiBkZXB0aGAgYnl0ZXMgYXMgdGhlIGRhdGFzZXQncyB7QGxpbmsgU3BhdGlhbFZvbHVtZU1ldGF9XG4gICAqIGRlY2xhcmVzLlxuICAgKlxuICAgKiBPcHRpb25hbCwgYW5kIG9ubHkgbWVhbmluZ2Z1bCB3aGVuIHRoZSBkYXRhc2V0IGFkdmVydGlzZXMgYSB2b2x1bWUuIFNlcGFyYXRlXG4gICAqIGZyb20gYGdldERhdGFzZXQkKClgIGJlY2F1c2UgaXQgaXMgbWVnYWJ5dGVzOiBhIGhvc3QgdGhhdCBuZXZlciBvcGVucyB0aGUgM0RcbiAgICogbW9kZSBzaG91bGQgbmV2ZXIgcGF5IGZvciBpdC5cbiAgICovXG4gIGdldFZvbHVtZT8oKTogUHJvbWlzZTxVaW50OEFycmF5PjtcblxuICAvKipcbiAgICogU2VydmVyLXNpZGUgXCJ3aGljaCBvYnNlcnZhdGlvbnMgZmFsbCBpbnNpZGUgdGhpcyBwb2x5Z29uXCIsIGZvciBkYXRhc2V0c1xuICAgKiB0b28gbGFyZ2UgdG8gaGl0LXRlc3QgY2xpZW50LXNpZGUuIE9wdGlvbmFsOiB3aXRob3V0IGl0IHRoZSBsaWJyYXJ5XG4gICAqIHBvaW50LWluLXBvbHlnb25zIHRoZSByZXNpZGVudCBjb29yZGluYXRlcyBpdHNlbGYsIHdoaWNoIGlzIGZpbmUgaW50byB0aGVcbiAgICogMTBeNSByYW5nZS4gQ29vcmRpbmF0ZXMgYXJlIGluIHRoZSBzYW1lIHNwYWNlIGFzIHRoZSBvYnNlcnZhdGlvbnMuXG4gICAqL1xuICBxdWVyeVJvaT8ocG9seWdvbjogeyB4OiBudW1iZXJbXTsgeTogbnVtYmVyW10gfSk6IFByb21pc2U8VWludDMyQXJyYXk+O1xufVxuXG5leHBvcnQgY29uc3QgU1BBVElBTF9EQVRBX1BPUlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3BhdGlhbERhdGFQb3J0PignU1BBVElBTF9EQVRBX1BPUlQnKTtcbiJdfQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backend-neutral data model for a **spatial-omics dataset**: N observations
|
|
3
|
+
* (Visium spots, segmented cells, nuclei, …) positioned in the pixel space of a
|
|
4
|
+
* tissue image, each carrying categorical and continuous annotations, plus an
|
|
5
|
+
* optional feature (gene) matrix and optional per-observation boundaries.
|
|
6
|
+
*
|
|
7
|
+
* DESIGN
|
|
8
|
+
* ------
|
|
9
|
+
* 1. **Struct-of-arrays, not object-per-cell.** Real datasets run 10^3 (Visium)
|
|
10
|
+
* to 10^6 (Xenium/CosMx) observations. `{x, y}[]` at 500k cells is ~500k
|
|
11
|
+
* objects the GC has to walk; two `Float32Array`s are two allocations and
|
|
12
|
+
* upload to the GPU without a copy.
|
|
13
|
+
*
|
|
14
|
+
* 2. **Metadata is eager, values are lazy.** A dataset advertises *which*
|
|
15
|
+
* columns and features exist ({@link SpatialColumnMeta},
|
|
16
|
+
* {@link SpatialFeatureMeta}); the vectors themselves are fetched on demand
|
|
17
|
+
* through {@link SpatialDataPort}. A Visium table is ~30k genes wide — the
|
|
18
|
+
* dense matrix is ~800 MB — so "load the dataset" can never mean "load the
|
|
19
|
+
* matrix". Only the handful of columns actually being displayed is resident.
|
|
20
|
+
*
|
|
21
|
+
* 3. **Data stays data.** No I/O, no RxJS, no Angular in this file — the same
|
|
22
|
+
* rule `plotly-trace-builders.ts` follows. Fetching lives on the port.
|
|
23
|
+
*
|
|
24
|
+
* The shape mirrors how the field already stores this (SpatialData/AnnData:
|
|
25
|
+
* `obs` annotations, `var` features, `obsm/spatial` coordinates, shapes with a
|
|
26
|
+
* coordinate transform) so an adapter is a projection, not a translation.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Code meaning "this observation has no category" (unassigned / filtered out /
|
|
30
|
+
* not in tissue). Renderers should draw it in the muted background style rather
|
|
31
|
+
* than as a real category, and it must never index {@link
|
|
32
|
+
* CategoricalColumnMeta.categories}.
|
|
33
|
+
*/
|
|
34
|
+
export const NO_CATEGORY = 0xffff;
|
|
35
|
+
export function isCategoricalColumn(c) {
|
|
36
|
+
return c.meta.kind === 'categorical';
|
|
37
|
+
}
|
|
38
|
+
export function isContinuousColumn(c) {
|
|
39
|
+
return c.meta.kind === 'continuous';
|
|
40
|
+
}
|
|
41
|
+
/** Look a column's descriptor up by name. */
|
|
42
|
+
export function findColumnMeta(dataset, name) {
|
|
43
|
+
return dataset.columns.find((c) => c.name === name);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1kYXRhc2V0LmNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvc3BhdGlhbC1kYXRhc2V0LmNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQW9FSDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUM7QUFtQmxDLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxDQUFnQjtJQUNsRCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQztBQUN2QyxDQUFDO0FBQ0QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLENBQWdCO0lBQ2pELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDO0FBQ3RDLENBQUM7QUFpTEQsNkNBQTZDO0FBQzdDLE1BQU0sVUFBVSxjQUFjLENBQzVCLE9BQXVCLEVBQUUsSUFBWTtJQUVyQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJhY2tlbmQtbmV1dHJhbCBkYXRhIG1vZGVsIGZvciBhICoqc3BhdGlhbC1vbWljcyBkYXRhc2V0Kio6IE4gb2JzZXJ2YXRpb25zXG4gKiAoVmlzaXVtIHNwb3RzLCBzZWdtZW50ZWQgY2VsbHMsIG51Y2xlaSwg4oCmKSBwb3NpdGlvbmVkIGluIHRoZSBwaXhlbCBzcGFjZSBvZiBhXG4gKiB0aXNzdWUgaW1hZ2UsIGVhY2ggY2FycnlpbmcgY2F0ZWdvcmljYWwgYW5kIGNvbnRpbnVvdXMgYW5ub3RhdGlvbnMsIHBsdXMgYW5cbiAqIG9wdGlvbmFsIGZlYXR1cmUgKGdlbmUpIG1hdHJpeCBhbmQgb3B0aW9uYWwgcGVyLW9ic2VydmF0aW9uIGJvdW5kYXJpZXMuXG4gKlxuICogREVTSUdOXG4gKiAtLS0tLS1cbiAqIDEuICoqU3RydWN0LW9mLWFycmF5cywgbm90IG9iamVjdC1wZXItY2VsbC4qKiBSZWFsIGRhdGFzZXRzIHJ1biAxMF4zIChWaXNpdW0pXG4gKiAgICB0byAxMF42IChYZW5pdW0vQ29zTXgpIG9ic2VydmF0aW9ucy4gYHt4LCB5fVtdYCBhdCA1MDBrIGNlbGxzIGlzIH41MDBrXG4gKiAgICBvYmplY3RzIHRoZSBHQyBoYXMgdG8gd2FsazsgdHdvIGBGbG9hdDMyQXJyYXlgcyBhcmUgdHdvIGFsbG9jYXRpb25zIGFuZFxuICogICAgdXBsb2FkIHRvIHRoZSBHUFUgd2l0aG91dCBhIGNvcHkuXG4gKlxuICogMi4gKipNZXRhZGF0YSBpcyBlYWdlciwgdmFsdWVzIGFyZSBsYXp5LioqIEEgZGF0YXNldCBhZHZlcnRpc2VzICp3aGljaCpcbiAqICAgIGNvbHVtbnMgYW5kIGZlYXR1cmVzIGV4aXN0ICh7QGxpbmsgU3BhdGlhbENvbHVtbk1ldGF9LFxuICogICAge0BsaW5rIFNwYXRpYWxGZWF0dXJlTWV0YX0pOyB0aGUgdmVjdG9ycyB0aGVtc2VsdmVzIGFyZSBmZXRjaGVkIG9uIGRlbWFuZFxuICogICAgdGhyb3VnaCB7QGxpbmsgU3BhdGlhbERhdGFQb3J0fS4gQSBWaXNpdW0gdGFibGUgaXMgfjMwayBnZW5lcyB3aWRlIOKAlCB0aGVcbiAqICAgIGRlbnNlIG1hdHJpeCBpcyB+ODAwIE1CIOKAlCBzbyBcImxvYWQgdGhlIGRhdGFzZXRcIiBjYW4gbmV2ZXIgbWVhbiBcImxvYWQgdGhlXG4gKiAgICBtYXRyaXhcIi4gT25seSB0aGUgaGFuZGZ1bCBvZiBjb2x1bW5zIGFjdHVhbGx5IGJlaW5nIGRpc3BsYXllZCBpcyByZXNpZGVudC5cbiAqXG4gKiAzLiAqKkRhdGEgc3RheXMgZGF0YS4qKiBObyBJL08sIG5vIFJ4SlMsIG5vIEFuZ3VsYXIgaW4gdGhpcyBmaWxlIOKAlCB0aGUgc2FtZVxuICogICAgcnVsZSBgcGxvdGx5LXRyYWNlLWJ1aWxkZXJzLnRzYCBmb2xsb3dzLiBGZXRjaGluZyBsaXZlcyBvbiB0aGUgcG9ydC5cbiAqXG4gKiBUaGUgc2hhcGUgbWlycm9ycyBob3cgdGhlIGZpZWxkIGFscmVhZHkgc3RvcmVzIHRoaXMgKFNwYXRpYWxEYXRhL0FubkRhdGE6XG4gKiBgb2JzYCBhbm5vdGF0aW9ucywgYHZhcmAgZmVhdHVyZXMsIGBvYnNtL3NwYXRpYWxgIGNvb3JkaW5hdGVzLCBzaGFwZXMgd2l0aCBhXG4gKiBjb29yZGluYXRlIHRyYW5zZm9ybSkgc28gYW4gYWRhcHRlciBpcyBhIHByb2plY3Rpb24sIG5vdCBhIHRyYW5zbGF0aW9uLlxuICovXG5cbi8qKlxuICogT2JzZXJ2YXRpb24gcG9zaXRpb25zLiBFdmVyeSBhcnJheSBpcyBsZW5ndGgge0BsaW5rIGNvdW50fSBhbmQgaW5kZXgtYWxpZ25lZDpcbiAqIG9ic2VydmF0aW9uIGBpYCBpcyBhdCBgKHhbaV0sIHlbaV0pYCwgYW5kIGNvbHVtbi9mZWF0dXJlIHZlY3RvcnMgaW5kZXggdGhlXG4gKiBzYW1lIHdheS4gVGhpcyBzaGFyZWQgaW5kZXggaXMgdGhlIGpvaW4ga2V5IGZvciB0aGUgd2hvbGUgbW9kZWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BhdGlhbE9ic2VydmF0aW9ucyB7XG4gIC8qKiBOIOKAlCBudW1iZXIgb2Ygb2JzZXJ2YXRpb25zLiAqL1xuICByZWFkb25seSBjb3VudDogbnVtYmVyO1xuICAvKiogWCBpbiB0aGUgcmVmZXJlbmNlIGltYWdlJ3MgcGl4ZWwgc3BhY2UgKHNlZSB7QGxpbmsgU3BhdGlhbEltYWdlUmVmfSkuICovXG4gIHg6IEZsb2F0MzJBcnJheTtcbiAgLyoqIFkgaW4gdGhlIHJlZmVyZW5jZSBpbWFnZSdzIHBpeGVsIHNwYWNlLiAqL1xuICB5OiBGbG9hdDMyQXJyYXk7XG4gIC8qKiBaLCBmb3Igc2VyaWFsIHNlY3Rpb25zIG9yIGdlbnVpbmVseSAzRCBhc3NheXMuIEFic2VudCBmb3IgYSBzaW5nbGUgcGxhbmUuICovXG4gIHo/OiBGbG9hdDMyQXJyYXk7XG4gIC8qKiBTdGFibGUgcGVyLW9ic2VydmF0aW9uIGlkcyAoYmFyY29kZXMsIGNlbGwgaWRzKSBmb3IgdG9vbHRpcHMgYW5kIGV4cG9ydC5cbiAgICogIE9wdGlvbmFsIOKAlCBvbWl0IGZvciBsYXJnZSBkYXRhc2V0cyB3aGVyZSB0aGUgc3RyaW5ncyBjb3N0IG1vcmUgdGhhbiB0aGV5XG4gICAqICBhcmUgd29ydGguICovXG4gIGlkcz86IHN0cmluZ1tdO1xuICAvKiogTWFya2VyIFJBRElVUyBpbiBpbWFnZSBwaXhlbHM6IG9uZSB2YWx1ZSBzaGFyZWQgYnkgYWxsIG9ic2VydmF0aW9ucyAoYVxuICAgKiAgVmlzaXVtIHNwb3QgaXMgYSBmaXhlZCA1NSDCtW0g4oeSIGAyNy41IC8gbXBwWGAgcHgpLCBvciBvbmUgcGVyIG9ic2VydmF0aW9uXG4gICAqICAoc2VnbWVudGVkIGNlbGxzKS4gQWJzZW50IOKHkiB0aGUgcmVuZGVyZXIgcGlja3MgYSBkaXNwbGF5IGRlZmF1bHQuICovXG4gIHJhZGl1cz86IEZsb2F0MzJBcnJheSB8IG51bWJlcjtcbn1cblxuLyoqIEZpZWxkcyBjb21tb24gdG8gZXZlcnkgY29sdW1uIGRlc2NyaXB0b3IuICovXG5pbnRlcmZhY2UgU3BhdGlhbENvbHVtbk1ldGFCYXNlIHtcbiAgLyoqIENvbHVtbiBuYW1lIGFzIHRoZSB1c2VyIHNlZXMgaXQgKGBsZWlkZW5gLCBgdG90YWxfY291bnRzYCkuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIExvbmdlciBodW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBmb3IgdG9vbHRpcHMvbWVudXMuICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgZGlzY3JldGUgYW5ub3RhdGlvbiDigJQgY2x1c3RlciwgY2VsbCB0eXBlLCByZWdpb24sIHNhbXBsZS4gUmVuZGVyZWQgYXMgYVxuICogcGFsZXR0ZSArIGxlZ2VuZDsgYSBsZWdlbmQgY2xpY2sgc2VsZWN0cyB0aGUgY2F0ZWdvcnkncyBvYnNlcnZhdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2F0ZWdvcmljYWxDb2x1bW5NZXRhIGV4dGVuZHMgU3BhdGlhbENvbHVtbk1ldGFCYXNlIHtcbiAga2luZDogJ2NhdGVnb3JpY2FsJztcbiAgLyoqIENhdGVnb3J5IGxhYmVsczsgYSB2YWx1ZSdzIGxhYmVsIGlzIGBjYXRlZ29yaWVzW2NvZGVzW2ldXWAuICovXG4gIGNhdGVnb3JpZXM6IHN0cmluZ1tdO1xuICAvKiogQXV0aG9yZWQgZGlzcGxheSBjb2xvdXJzIGFzIGAjcnJnZ2JiYCwgaW5kZXgtYWxpZ25lZCB3aXRoXG4gICAqICB7QGxpbmsgY2F0ZWdvcmllc30uIFN1cHBseSB0aGVzZSB0byBrZWVwIHRoZSB2aWV3ZXIncyBwYWxldHRlIGlkZW50aWNhbCB0b1xuICAgKiAgdGhlIGZpZ3VyZXMgdGhlIHNhbWUgYW5hbHlzaXMgcHJvZHVjZWQgaW4gUi9QeXRob247IG9taXQgdG8gbGV0IHRoZSB2aWV3ZXJcbiAgICogIGRlcml2ZSBvbmUuICovXG4gIGNvbG9ycz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEEgY29udGludW91cyBtZWFzdXJlbWVudCDigJQgZXhwcmVzc2lvbiwgUUMgbWV0cmljLCBhcmVhLCBkZW5zaXR5LiBSZW5kZXJlZFxuICogdGhyb3VnaCB0aGUgc2hhcmVkIGNvbG9ybWFwL0xVVCArIGNvbnRyYXN0IHdpbmRvdy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250aW51b3VzQ29sdW1uTWV0YSBleHRlbmRzIFNwYXRpYWxDb2x1bW5NZXRhQmFzZSB7XG4gIGtpbmQ6ICdjb250aW51b3VzJztcbiAgLyoqIFVuaXQgZm9yIGF4aXMvdG9vbHRpcCBsYWJlbHMgKGBjb3VudHNgLCBgwrVtwrJgKS4gKi9cbiAgdW5pdD86IHN0cmluZztcbiAgLyoqIFRydWUgd2hlbiB0aGUgY29sdW1uIHJlYWRzIGJlc3QgbG9nLXNjYWxlZCDigJQgY291bnQgZGF0YSBhbG1vc3QgYWx3YXlzXG4gICAqICBkb2VzLCBhbmQgYSBsaW5lYXIgc2NhbGUgY29sbGFwc2VzIGl0IGFnYWluc3QgYSBmZXcgYnJpZ2h0IG91dGxpZXJzLiAqL1xuICBsb2dTY2FsZUhpbnQ/OiBib29sZWFuO1xuICAvKiogT2JzZXJ2ZWQgZXh0cmVtZXMsIHdoZW4gdGhlIHByb2R1Y2VyIGtub3dzIHRoZW0uIExldHMgdGhlIFVJIHNlZWQgYVxuICAgKiAgY29udHJhc3Qgd2luZG93IGFuZCBheGlzIHJhbmdlIHdpdGhvdXQgZmlyc3Qgc2Nhbm5pbmcgdGhlIHZlY3Rvci4gKi9cbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFNwYXRpYWxDb2x1bW5NZXRhID0gQ2F0ZWdvcmljYWxDb2x1bW5NZXRhIHwgQ29udGludW91c0NvbHVtbk1ldGE7XG5cbi8qKlxuICogQ29kZSBtZWFuaW5nIFwidGhpcyBvYnNlcnZhdGlvbiBoYXMgbm8gY2F0ZWdvcnlcIiAodW5hc3NpZ25lZCAvIGZpbHRlcmVkIG91dCAvXG4gKiBub3QgaW4gdGlzc3VlKS4gUmVuZGVyZXJzIHNob3VsZCBkcmF3IGl0IGluIHRoZSBtdXRlZCBiYWNrZ3JvdW5kIHN0eWxlIHJhdGhlclxuICogdGhhbiBhcyBhIHJlYWwgY2F0ZWdvcnksIGFuZCBpdCBtdXN0IG5ldmVyIGluZGV4IHtAbGlua1xuICogQ2F0ZWdvcmljYWxDb2x1bW5NZXRhLmNhdGVnb3JpZXN9LlxuICovXG5leHBvcnQgY29uc3QgTk9fQ0FURUdPUlkgPSAweGZmZmY7XG5cbi8qKiBBIGxvYWRlZCBjYXRlZ29yaWNhbCBjb2x1bW46IHBlci1vYnNlcnZhdGlvbiBpbmRpY2VzIGludG8gYG1ldGEuY2F0ZWdvcmllc2AsXG4gKiAgb3Ige0BsaW5rIE5PX0NBVEVHT1JZfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2F0ZWdvcmljYWxDb2x1bW4ge1xuICBtZXRhOiBDYXRlZ29yaWNhbENvbHVtbk1ldGE7XG4gIC8qKiBMZW5ndGggPSB7QGxpbmsgU3BhdGlhbE9ic2VydmF0aW9ucy5jb3VudH0uICovXG4gIGNvZGVzOiBVaW50MTZBcnJheTtcbn1cblxuLyoqIEEgbG9hZGVkIGNvbnRpbnVvdXMgY29sdW1uLiBgTmFOYCBtYXJrcyBhIG1pc3NpbmcgdmFsdWUuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRpbnVvdXNDb2x1bW4ge1xuICBtZXRhOiBDb250aW51b3VzQ29sdW1uTWV0YTtcbiAgLyoqIExlbmd0aCA9IHtAbGluayBTcGF0aWFsT2JzZXJ2YXRpb25zLmNvdW50fS4gKi9cbiAgdmFsdWVzOiBGbG9hdDMyQXJyYXk7XG59XG5cbmV4cG9ydCB0eXBlIFNwYXRpYWxDb2x1bW4gPSBDYXRlZ29yaWNhbENvbHVtbiB8IENvbnRpbnVvdXNDb2x1bW47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NhdGVnb3JpY2FsQ29sdW1uKGM6IFNwYXRpYWxDb2x1bW4pOiBjIGlzIENhdGVnb3JpY2FsQ29sdW1uIHtcbiAgcmV0dXJuIGMubWV0YS5raW5kID09PSAnY2F0ZWdvcmljYWwnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29udGludW91c0NvbHVtbihjOiBTcGF0aWFsQ29sdW1uKTogYyBpcyBDb250aW51b3VzQ29sdW1uIHtcbiAgcmV0dXJuIGMubWV0YS5raW5kID09PSAnY29udGludW91cyc7XG59XG5cbi8qKlxuICogVGhlIGZlYXR1cmUgKGdlbmUpIG1hdHJpeCwgZGVzY3JpYmVkIGJ1dCBuZXZlciBkZWxpdmVyZWQgd2hvbGUuIFZlY3RvcnMgY29tZVxuICogb25lIGF0IGEgdGltZSBmcm9tIHtAbGluayBTcGF0aWFsRGF0YVBvcnQuZ2V0RmVhdHVyZVZlY3Rvcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BhdGlhbEZlYXR1cmVNZXRhIHtcbiAgLyoqIE51bWJlciBvZiBmZWF0dXJlcyBhdmFpbGFibGUuICovXG4gIGNvdW50OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBbGwgZmVhdHVyZSBuYW1lcywgd2hlbiB0aGUgcHJvZHVjZXIgY2hvc2UgdG8gaW5saW5lIHRoZW0uIFByZXNlbnQgZm9yXG4gICAqIHRhcmdldGVkIHBhbmVscyAoWGVuaXVtL0Nvc014IHNoaXAgMzAw4oCTNSwwMDAgZ2VuZXMg4oeSIGEgZmV3IGRvemVuIEtCKSBhbmRcbiAgICogYWJzZW50IGZvciB3aG9sZS10cmFuc2NyaXB0b21lIGRhdGEgKFZpc2l1bSBzaGlwcyB+MzFrIOKHkiB+MzUwIEtCKSwgd2hlcmVcbiAgICogdGhlIFVJIHNob3VsZCB1c2Uge0BsaW5rIFNwYXRpYWxEYXRhUG9ydC5zZWFyY2hGZWF0dXJlc30gZm9yIHR5cGVhaGVhZFxuICAgKiBpbnN0ZWFkIG9mIGRvd25sb2FkaW5nIHRoZSBsaXN0LiBDb25zdW1lcnMgbXVzdCBoYW5kbGUgYm90aC5cbiAgICovXG4gIG5hbWVzPzogc3RyaW5nW107XG4gIC8qKiBXaGF0IGEgZmVhdHVyZSB2YWx1ZSBtZWFucyAoYGxvZzFwIG5vcm1hbGl6ZWRgLCBgcmF3IGNvdW50c2ApLiAqL1xuICB1bml0Pzogc3RyaW5nO1xuICAvKiogVHJ1ZSB3aGVuIGZlYXR1cmUgdmVjdG9ycyByZWFkIGJlc3QgbG9nLXNjYWxlZCAocmF3IGNvdW50cykuICovXG4gIGxvZ1NjYWxlSGludD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGVyLW9ic2VydmF0aW9uIGJvdW5kYXJpZXMgKGNlbGwvbnVjbGV1cyBzZWdtZW50YXRpb24sIHNwb3Qgb3V0bGluZXMpIGFzIGZsYXRcbiAqIHJpbmdzIOKAlCBkZWxpYmVyYXRlbHkgTk9UIEdlb0pTT04gb2JqZWN0cywgd2hpY2ggY29zdCBvbmUgb2JqZWN0ICsgb25lIGFycmF5XG4gKiBwZXIgY2VsbCBhbmQgd291bGQgZG9taW5hdGUgbWVtb3J5IGF0IDEwXjUgcG9seWdvbnMuXG4gKlxuICogUmluZyBgaWAgb2NjdXBpZXMgYGNvb3Jkc1syKm9mZnNldHNbaV0gLi4gMipvZmZzZXRzW2krMV0pYCBhcyBgeDAseTAseDEseTEs4oCmYFxuICogYW5kIGlzIGltcGxpY2l0bHkgY2xvc2VkLiBgb2Zmc2V0c2AgaGFzIGxlbmd0aCBgY291bnQgKyAxYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcGF0aWFsUG9seWdvbnMge1xuICBjb29yZHM6IEZsb2F0MzJBcnJheTtcbiAgb2Zmc2V0czogVWludDMyQXJyYXk7XG4gIC8qKiBOdW1iZXIgb2YgcmluZ3Mg4oCUIGBvZmZzZXRzLmxlbmd0aCAtIDFgLiAqL1xuICByZWFkb25seSBjb3VudDogbnVtYmVyO1xufVxuXG4vKiogUHJlc2VuY2Uvc2l6ZSBvZiB0aGUgYm91bmRhcnkgZ2VvbWV0cnksIHdpdGhvdXQgbG9hZGluZyBpdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BhdGlhbFBvbHlnb25zTWV0YSB7XG4gIGNvdW50OiBudW1iZXI7XG59XG5cbi8qKlxuICogSG93IG9ic2VydmF0aW9uIGNvb3JkaW5hdGVzIHJlbGF0ZSB0byB0aGUgdGlzc3VlIGltYWdlIHRoZXkgYXJlIGRyYXduIG92ZXIuXG4gKiBBcHBsaWVkIGFzIGB3b3JsZCA9IGNvb3JkICogc2NhbGUgKyB0cmFuc2xhdGVgLCBtYXRjaGluZyB0aGUgYWZmaW5lIHRoYXRcbiAqIFNwYXRpYWxEYXRhIHJlY29yZHMgcGVyIGNvb3JkaW5hdGUgc3lzdGVtIOKAlCBhbmQgdGhlIGZ1bGwtcmVzb2x1dGlvbiB3b3JsZFxuICogY29udmVudGlvbiB0aGUgbmFwYXJpLWpzIGJhY2tlbmQgYWxyZWFkeSB1c2VzIHNvIHByZS1zYXZlZCByZWdpb25zIGFsaWduIG9uXG4gKiBweXJhbWlkYWwgc2xpZGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNwYXRpYWxJbWFnZVJlZiB7XG4gIC8qKiBIb3N0LWRlZmluZWQgaWQgb2YgdGhlIGltYWdlIHRoZXNlIGNvb3JkaW5hdGVzIGxpdmUgaW4sIHNvIHRoZSBob3N0IGNhblxuICAgKiAgcmVzb2x2ZSBpdCB0byBhbiBgSUltYWdlSW5mb2AuICovXG4gIGltYWdlSWQ/OiBzdHJpbmc7XG4gIC8qKiBEYXRh4oaSd29ybGQgc2NhbGUuIERlZmF1bHRzIHRvIGBbMSwgMV1gIChjb29yZGluYXRlcyBhbHJlYWR5IGluXG4gICAqICBmdWxsLXJlc29sdXRpb24gaW1hZ2UgcGl4ZWxzKS4gKi9cbiAgc2NhbGU/OiBbbnVtYmVyLCBudW1iZXJdO1xuICAvKiogRGF0YeKGkndvcmxkIHRyYW5zbGF0aW9uLCBpbiB0aGUgc2FtZSB1bml0cyBhcyB7QGxpbmsgc2NhbGV9J3Mgb3V0cHV0LiAqL1xuICB0cmFuc2xhdGU/OiBbbnVtYmVyLCBudW1iZXJdO1xuICAvKiogUGh5c2ljYWwgcGl4ZWwgc2l6ZSBpbiDCtW0g4oCUIGRyaXZlcyB0aGUgc2NhbGUgYmFyIGFuZCBwaHlzaWNhbCBtYXJrZXJcbiAgICogIHNpemluZyAoYSA1NSDCtW0gVmlzaXVtIHNwb3QpLiAqL1xuICBtcHBYPzogbnVtYmVyO1xuICBtcHBZPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgc3BhdGlhbC1vbWljcyBkYXRhc2V0OiBldmVyeXRoaW5nIGNoZWFwIGVub3VnaCB0byBob2xkIHJlc2lkZW50LiBDb2x1bW4gYW5kXG4gKiBmZWF0dXJlICp2YWx1ZXMqLCBhbmQgcG9seWdvbiAqZ2VvbWV0cnkqLCBhcmUgZmV0Y2hlZCB0aHJvdWdoXG4gKiB7QGxpbmsgU3BhdGlhbERhdGFQb3J0fSBhcyB0aGV5IGFyZSBkaXNwbGF5ZWQuXG4gKi9cbi8qKlxuICogQSBwcmVjb21wdXRlZCBsb3ctZGltZW5zaW9uYWwgZW1iZWRkaW5nIG92ZXIgdGhlIFNBTUUgb2JzZXJ2YXRpb25zIOKAlCBVTUFQLCB0LVNORSwgUENBLlxuICpcbiAqIEFubm91bmNlZCBpbiB0aGUgZGF0YXNldCBhbmQgZmV0Y2hlZCBvbiBkZW1hbmQsIGV4YWN0bHkgbGlrZSBhIGNvbHVtbiBvciBhIGdlbmU6IHRoZVxuICogY29vcmRpbmF0ZXMgYXJlIGFub3RoZXIgcGVyLW9ic2VydmF0aW9uIHZlY3RvciwgYW5kIGEgZGF0YXNldCBtYXkgY2Fycnkgc2V2ZXJhbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcGF0aWFsRW1iZWRkaW5nTWV0YSB7XG4gIC8qKiBLZXkgYXMgdGhlIHNvdXJjZSBuYW1lcyBpdCwgZS5nLiBgWF91bWFwYC4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogU2hvcnQgbGFiZWwgZm9yIG1lbnVzOyBmYWxscyBiYWNrIHRvIHtAbGluayBuYW1lfS4gKi9cbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8qKiAyIGZvciBhIHBsYW5lLCAzIGZvciBhIGNsb3VkLiAqL1xuICBkaW1zOiAyIHwgMztcbiAgLyoqXG4gICAqIFRydWUgd2hlbiB0aGUgY29vcmRpbmF0ZXMgd2VyZSBDT01QVVRFRCBmb3IgdGhpcyBidW5kbGUgcmF0aGVyIHRoYW4gcHVibGlzaGVkIHdpdGggdGhlXG4gICAqIGRhdGFzZXQuIFdvcnRoIHN1cmZhY2luZzogYSBVTUFQIHJlY29tcHV0ZWQgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycyBpcyBhIGRpZmZlcmVudCBwaWN0dXJlLFxuICAgKiBhbmQgYSByZWFkZXIgY29tcGFyaW5nIGFnYWluc3QgYSBwYXBlcidzIGZpZ3VyZSBuZWVkcyB0byBrbm93IHdoaWNoIHRoZXkgYXJlIGxvb2tpbmcgYXQuXG4gICAqL1xuICBkZXJpdmVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEZyYWN0aW9uIG9mIHRvdGFsIHZhcmlhbmNlIGVhY2ggYXhpcyBhY2NvdW50cyBmb3IsIGluZGV4LWFsaWduZWQgd2l0aCB0aGUgZGltZW5zaW9ucy5cbiAgICpcbiAgICogT25seSBtZWFuaW5nZnVsIGZvciBhIExJTkVBUiBlbWJlZGRpbmcg4oCUIFBDQS4gSXRzIGF4ZXMgYXJlIG9yZGVyZWQsIGFuZCBlYWNoIG9uZSBleHBsYWlucyBhXG4gICAqIG1lYXN1cmFibGUgc2hhcmUgb2YgdGhlIHZhcmlhbmNlLCB3aGljaCBpcyB0aGUgd2hvbGUgcmVhc29uIHRvIGxvb2sgYXQgYSBQQ0EgcmF0aGVyIHRoYW4gYVxuICAgKiBVTUFQOiBcIlBDMSAoMjMlKVwiIHNheXMgc29tZXRoaW5nLCB3aGVyZSBcIlVNQVAgMVwiIHNheXMgbm90aGluZyBhdCBhbGwuIEEgVU1BUCdzIGNvb3JkaW5hdGVzXG4gICAqIGFyZSBhbiBhcmJpdHJhcnkgb3V0cHV0IG9mIGFuIG9wdGltaXNhdGlvbiB3aXRoIG5vIHZhcmlhbmNlIHRvIHJlcG9ydCwgc28gdGhpcyBzdGF5cyBhYnNlbnRcbiAgICogdGhlcmUgcmF0aGVyIHRoYW4gYmVpbmcgZmFrZWQuXG4gICAqL1xuICB2YXJpYW5jZVJhdGlvPzogbnVtYmVyW107XG4gIC8qKlxuICAgKiBIb3cgYSBkZXJpdmVkIGVtYmVkZGluZyB3YXMgY29tcHV0ZWQsIGluIGEgZmV3IHdvcmRzIOKAlCBlLmcuIFwiUENBKDUwKSB0aGVuIHBlcnBsZXhpdHkgMzAsXG4gICAqIHNlZWQgMFwiLlxuICAgKlxuICAgKiBOb3QgZGVjb3JhdGlvbi4gQSB0LVNORSBvciBVTUFQIGlzIHN0b2NoYXN0aWMsIGFuZCBpdHMgcGljdHVyZSBjaGFuZ2VzIG1hdGVyaWFsbHkgd2l0aFxuICAgKiBwZXJwbGV4aXR5IG9yIGBuX25laWdoYm9yc2A7IHR3byBydW5zIGF0IGRpZmZlcmVudCBzZXR0aW5ncyBhcmUgZGlmZmVyZW50IHBpY3R1cmVzIG9mIHRoZSBzYW1lXG4gICAqIGNlbGxzLCBhbmQgbmVpdGhlciBpcyBtb3JlIGNvcnJlY3QuIFNheWluZyBcImNvbXB1dGVkIGhlcmVcIiB3aXRob3V0IHNheWluZyBIT1cgbGVhdmVzIGEgcmVhZGVyXG4gICAqIHVuYWJsZSB0byByZXByb2R1Y2Ugb3IgY29tcGFyZSBpdC4gQWJzZW50IGZvciBhIHB1Ymxpc2hlZCBlbWJlZGRpbmcsIHdob3NlIHBhcmFtZXRlcnMgYmVsb25nXG4gICAqIHRvIHdob2V2ZXIgcHVibGlzaGVkIGl0LlxuICAgKi9cbiAgcGFyYW1zPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9uZSBlbWJlZGRpbmcncyBjb29yZGluYXRlcy5cbiAqXG4gKiBEZWxpYmVyYXRlbHkgc2hhcGVkIGxpa2Uge0BsaW5rIFNwYXRpYWxPYnNlcnZhdGlvbnN9JyBgeGAvYHlgL2B6YCByYXRoZXIgdGhhbiBhbiAoTiwgRCkgbWF0cml4OlxuICogdGhlIHBvaW50IG9mIGFuIGVtYmVkZGluZyBoZXJlIGlzIHRvIGJlIHN3YXBwZWQgaW4gYXMgdGhlIHNjYXR0ZXIncyBjb29yZGluYXRlIHNvdXJjZSwgYW5kXG4gKiBtYXRjaGluZyB0aGF0IHNoYXBlIG1lYW5zIHRoZSByZW5kZXJlciwgdGhlIGhvdmVyIGhpdC10ZXN0IGFuZCB0aGUgc2VsZWN0aW9uIGNvZGUgbmVlZCBub1xuICogdmFyaWFudCBmb3IgaXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BhdGlhbEVtYmVkZGluZyB7XG4gIG1ldGE6IFNwYXRpYWxFbWJlZGRpbmdNZXRhO1xuICB4OiBGbG9hdDMyQXJyYXk7XG4gIHk6IEZsb2F0MzJBcnJheTtcbiAgej86IEZsb2F0MzJBcnJheTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTcGF0aWFsRGF0YXNldCB7XG4gIC8qKiBTdGFibGUgaWQg4oCUIHRoZSBrZXkgdGhlIHBvcnQncyBsYXp5IGFjY2Vzc29ycyBhcmUgc2NvcGVkIHRvLiAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgbWVudXMuICovXG4gIG5hbWU6IHN0cmluZztcbiAgb2JzZXJ2YXRpb25zOiBTcGF0aWFsT2JzZXJ2YXRpb25zO1xuICAvKiogRXZlcnkgY29sdW1uIGF2YWlsYWJsZSwgd2hldGhlciBvciBub3QgaXRzIHZhbHVlcyBhcmUgbG9hZGVkLiAqL1xuICBjb2x1bW5zOiBTcGF0aWFsQ29sdW1uTWV0YVtdO1xuICBmZWF0dXJlcz86IFNwYXRpYWxGZWF0dXJlTWV0YTtcbiAgcG9seWdvbnM/OiBTcGF0aWFsUG9seWdvbnNNZXRhO1xuICBpbWFnZVJlZj86IFNwYXRpYWxJbWFnZVJlZjtcbiAgLyoqIFByZXNlbmNlICsgZ2VvbWV0cnkgb2YgYSByZWZlcmVuY2Ugdm9sdW1lIHRoZSBvYnNlcnZhdGlvbnMgc2l0IGluc2lkZS4gKi9cbiAgdm9sdW1lPzogU3BhdGlhbFZvbHVtZU1ldGE7XG4gIC8qKiBFbWJlZGRpbmdzIGF2YWlsYWJsZSBmb3IgdGhlc2Ugb2JzZXJ2YXRpb25zLCB3aG9zZSBjb29yZGluYXRlcyBhcmUgZmV0Y2hlZCBvbiBkZW1hbmQuICovXG4gIGVtYmVkZGluZ3M/OiBTcGF0aWFsRW1iZWRkaW5nTWV0YVtdO1xuICAvKipcbiAgICogTWljcm9ucyBwZXIgb2JzZXJ2YXRpb24gY29vcmRpbmF0ZSB1bml0IOKAlCB3aGF0IG1ha2VzIGEgc2NhbGUgYmFyIHBvc3NpYmxlLlxuICAgKlxuICAgKiBUaGUgMkQgcGF0aCBnZXRzIHRoaXMgZnJvbSBgaW1hZ2VSZWYubXBwWGAsIGJlY2F1c2UgdGhlcmUgdGhlIGNvb3JkaW5hdGVzIGFyZVxuICAgKiBpbWFnZSBwaXhlbHMuIEEgM0QgY2xvdWQgaGFzIG5vIGltYWdlLCBzbyBpdCBoYXMgdG8gc2F5IGZvciBpdHNlbGY6IGAxYCBtZWFuc1xuICAgKiB0aGUgY29vcmRpbmF0ZXMgYXJlIGFscmVhZHkgbWljcm9ucy5cbiAgICpcbiAgICogQWJzZW50IG1lYW5zIHRoZSB1bml0IGlzIFVOS05PV04sIGFuZCBhIHJlbmRlcmVyIG11c3QgdGhlbiBkcmF3IG5vIHNjYWxlIGJhclxuICAgKiByYXRoZXIgdGhhbiBhc3N1bWUgb25lLiBBIGJhciBsYWJlbGxlZCBpbiBtaWNyb25zIG92ZXIgcGl4ZWwtc3BhY2VcbiAgICogY29vcmRpbmF0ZXMgaXMgd29yc2UgdGhhbiBubyBiYXI6IGl0IGxvb2tzIGxpa2UgYSBtZWFzdXJlbWVudC5cbiAgICovXG4gIG1pY3JvbnNQZXJVbml0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgM0Qgc2NhbGFyIHJlZmVyZW5jZSB2b2x1bWUgcmVnaXN0ZXJlZCB0byB0aGUgb2JzZXJ2YXRpb24gY29vcmRpbmF0ZXMg4oCUIHRoZVxuICogYW5hdG9taWNhbCBiYWNrZHJvcCBmb3IgYSBwb2ludCBjbG91ZCAoYW4gYXRsYXMgdGVtcGxhdGUsIG9yIGFuIGltYWdlIHotc3RhY2spLlxuICpcbiAqIEdlb21ldHJ5IG9ubHk7IHRoZSB2b3hlbHMgYXJlIGZldGNoZWQgdGhyb3VnaFxuICoge0BsaW5rIFNwYXRpYWxEYXRhUG9ydC5nZXRWb2x1bWV9IHdoZW4gc29tZXRoaW5nIGlzIGdvaW5nIHRvIGRyYXcgdGhlbS4gQSBjbG91ZFxuICogd2l0aG91dCBvbmUgc3RpbGwgcmVuZGVycywganVzdCBpbiBlbXB0eSBzcGFjZS5cbiAqXG4gKiBUaGUgb2JzZXJ2YXRpb25zJyBjb29yZGluYXRlIGZyYW1lIG11c3QgYmUgdGhlIHZvbHVtZSdzIG93bjogdm94ZWwgYChpLCBqLCBrKWBcbiAqIGNvdmVycyBgW2kgKiB2b3hlbFNpemVbMF0sIChpICsgMSkgKiB2b3hlbFNpemVbMF0pYCBvbiB4LCBhbmQgc28gb24uIFRoYXQgbWVhbnNcbiAqIHRoZSB2b2x1bWUncyBuZWFyIGNvcm5lciBzaXRzIGF0IHRoZSBjb29yZGluYXRlIG9yaWdpbiwgc28gYSByZW5kZXJlciBjYW4gcGxhY2VcbiAqIHRoZSB0d28gdG9nZXRoZXIga25vd2luZyBub3RoaW5nIGVsc2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BhdGlhbFZvbHVtZU1ldGEge1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgZGVwdGg6IG51bWJlcjtcbiAgLyoqIFdvcmxkIHNpemUgb2Ygb25lIHZveGVsIHBlciBheGlzLCBpbiB0aGUgb2JzZXJ2YXRpb25zJyB1bml0cy4gKi9cbiAgdm94ZWxTaXplOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG59XG5cbi8qKiBMb29rIGEgY29sdW1uJ3MgZGVzY3JpcHRvciB1cCBieSBuYW1lLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDb2x1bW5NZXRhKFxuICBkYXRhc2V0OiBTcGF0aWFsRGF0YXNldCwgbmFtZTogc3RyaW5nLFxuKTogU3BhdGlhbENvbHVtbk1ldGEgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZGF0YXNldC5jb2x1bW5zLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gbmFtZSk7XG59XG4iXX0=
|
|
@@ -7,4 +7,4 @@ import { InjectionToken } from '@angular/core';
|
|
|
7
7
|
* the routing/fallback implementation can change without touching constructors.
|
|
8
8
|
*/
|
|
9
9
|
export const VISUALIZER = new InjectionToken('VISUALIZER');
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsaXplci5jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29udHJhY3RzL3Zpc3VhbGl6ZXIuY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQXFXL0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFjLFlBQVksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEltYWdlIH0gZnJvbSAnaW1hZ2UtanMnO1xuXG5pbXBvcnQgeyBJSW1hZ2VJbmZvLCBJSW1hZ2VNZXRhZGF0YSB9IGZyb20gJy4vaW1hZ2UuY29udHJhY3QnO1xuaW1wb3J0IHsgUmVnaW9uIH0gZnJvbSAnLi4vbW9kZWxzL3JlZ2lvbic7XG5pbXBvcnQgeyBQbG90VHlwZSwgUGxvdFR5cGVEZXNjcmlwdG9yIH0gZnJvbSAnLi9wbG90LXR5cGUnO1xuaW1wb3J0IHsgVmlld2VyQ2FwYWJpbGl0aWVzIH0gZnJvbSAnLi9jYXBhYmlsaXRpZXMuY29udHJhY3QnO1xuaW1wb3J0IHsgSVJlZ2lvbk92ZXJsYXkgfSBmcm9tICcuL3JlZ2lvbi1vdmVybGF5LmNvbnRyYWN0JztcbmltcG9ydCB7IElIaXN0b2dyYW0gfSBmcm9tICcuL2NoYW5uZWwtaGlzdG9ncmFtLWFwaS5jb250cmFjdCc7XG5pbXBvcnQgeyBDb2xvcm1hcE5vZGUsIElXYW5kT3B0aW9ucywgSUJydXNoT3B0aW9ucyB9IGZyb20gJy4vZGlzcGxheS10eXBlcyc7XG5cbi8qKlxuICogQmFja2VuZC1uZXV0cmFsIHZpc3VhbGl6YXRpb24gY29udHJhY3QuIFBsb3RseSBpcyBvbmUgaW1wbGVtZW50YXRpb247XG4gKiBPcGVuU2VhZHJhZ29uIGlzIGFub3RoZXIgKGZvciB0aGUgaW1hZ2UgcGxvdCB0eXBlKS4gVGhlIGFic3RyYWN0aW9uIHJlbmRlcnNcbiAqIGRhdGEg4oCUIGEgcmFzdGVyIGltYWdlIE9SIGEgc2NpZW50aWZpYyBwbG90IChoZWF0bWFwLCBzdXJmYWNlLCBjb250b3VyLFxuICogc2NhdHRlciwgbGluZSwgaXNvc3VyZmFjZSkg4oCUIGRyYXdzIHJlZ2lvbnMgb24gaXQsIGFuZCBkcml2ZXMgb24tY2FudmFzIHRvb2xzLlxuICpcbiAqIFNwbGl0IGludG8gcm9sZSBpbnRlcmZhY2VzIHNvIGEgY29uc3VtZXIgY2FuIGRlcGVuZCBvbmx5IG9uIHRoZSBzbGljZSBpdFxuICogdXNlcywgdGhlbiBjb21wb3NlZCBpbnRvIGBJVmlzdWFsaXplcmAuXG4gKlxuICogVHlwZXMgYXJlIGludGVudGlvbmFsbHkgcGVybWlzc2l2ZSAoYGFueWAgd2hlcmUgdGhlIGN1cnJlbnQgUGxvdGx5IHNlcnZpY2VcbiAqIGlzIHVudHlwZWQpIHNvIGBQbG90bHlTZXJ2aWNlYCBzYXRpc2ZpZXMgdGhlIGNvbnRyYWN0IHdpdGhvdXQgYSB0eXBpbmdcbiAqIHJld3JpdGUg4oCUIHRpZ2h0ZW5pbmcgaXMgYSBmb2xsb3ctdXAsIG5vdCBwYXJ0IG9mIHN0YW5kaW5nIHRoZSBpbnRlcmZhY2UgdXAuXG4gKi9cblxuLyoqIFBpeGVsIHJlYWRiYWNrIHNoYXBlIHJldHVybmVkIGJ5IGBnZXREaXNwbGF5ZWRQaXhlbERhdGFgLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaXhlbERhdGEge1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgY2hhbm5lbHM6IG51bWJlcjtcbiAgZGF0YTogVWludDhDbGFtcGVkQXJyYXk7XG59XG5cbi8qKiBJbnRlbnNpdHkgc2FtcGxlZCBhbG9uZyBhIGxpbmUgUk9JIChQbG90VHlwZS5MSU5FIG92ZXIgaW1hZ2UgZGF0YSkuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVuc2l0eVByb2ZpbGUge1xuICAvKiogRGlzdGFuY2UgYWxvbmcgdGhlIGxpbmUuIEluIG1pY3JvbnMgd2hlbiB0aGUgaW1hZ2UgY2FycmllcyBhIHBoeXNpY2FsXG4gICAqICBwaXhlbCBzaXplIChtcHApOyBvdGhlcndpc2UgaW4gaW1hZ2UgcGl4ZWxzLiBTZWUge0BsaW5rIHVuaXR9LiAqL1xuICBwb3NpdGlvbnM6IG51bWJlcltdO1xuICAvKiogU2FtcGxlZCBpbnRlbnNpdHkgKGdyYXlzY2FsZSB2YWx1ZSBvciBSR0IgbHVtaW5hbmNlKS4gKi9cbiAgdmFsdWVzOiBudW1iZXJbXTtcbiAgLyoqIFVuaXQgb2Yge0BsaW5rIHBvc2l0aW9uc306ICfCtW0nIHdoZW4gc2NhbGVkIGJ5IHRoZSBpbWFnZSdzIG1wcCwgZWxzZSAncHgnLiAqL1xuICB1bml0PzogJ8K1bScgfCAncHgnO1xuICAvKiogU3RhYmxlIGlkIG9mIHRoZSBsaW5lIFJPSSB0aGlzIHByb2ZpbGUgY2FtZSBmcm9tIChtdWx0aS1saW5lIHN1cHBvcnQpLiAqL1xuICBpZD86IG51bWJlcjtcbiAgLyoqIENvbG91ciBvZiB0aGUgbGluZSBST0kg4oCUIHRoZSBpbnNldCB0cmFjZSBpcyBkcmF3biBpbiB0aGUgc2FtZSBjb2xvdXIuICovXG4gIGNvbG9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSByZW5kZXIvdmlld3BvcnQgcm9sZTogbG9hZCBkYXRhLCByZW5kZXIgaXQgKGltYWdlIG9yIHBsb3QpLCBhbmQgaGFuZGxlXG4gKiB6b29tLCBzdGFjayBuYXZpZ2F0aW9uLCBhbmQgcGl4ZWwgcmVhZGJhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFSZW5kZXJlciB7XG4gIGxvYWQoaW1hZ2VJbmZvOiBJSW1hZ2VJbmZvLCB6SW5kZXg6IG51bWJlcik6IFByb21pc2U8YW55PjtcbiAgLyoqIGBpbWFnZUxvYWRlZGAgaXMgdGhlIGJhY2tlbmQtc3BlY2lmaWMgaGFuZGxlIHJldHVybmVkIGJ5IGBsb2FkKClgIOKAlFxuICAgKiAgdHJlYXQgaXQgYXMgb3BhcXVlIGFuZCBwYXNzIGl0IHN0cmFpZ2h0IHRocm91Z2guICovXG4gIHBsb3QocGxvdERpdjogc3RyaW5nLCBpbWFnZUxvYWRlZDogdW5rbm93biwgaW1hZ2VJbmZvOiBJSW1hZ2VJbmZvLCBzY3JlZW5IZWlnaHQ6IG51bWJlcixcbiAgICAgICBwbG90VHlwZTogUGxvdFR5cGUsIGluUGxhY2U/OiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPjtcbiAgLyoqIEBkZXByZWNhdGVkIFBsb3RseS1zcGVjaWZpYyByZS1yZW5kZXI7IHRoZSBPU0QgYmFja2VuZCBuby1vcHMgaXQuIFRoZSBob3N0XG4gICAqICByZS1kcml2ZXMgYHBsb3QoKWAgZnJvbSBpdHMgaW1hZ2Ugc3RyZWFtIGluc3RlYWQuICovXG4gIHJlbG9hZEFuZFBsb3QoKTogdm9pZDtcbiAgcmVzZXQoKTogdm9pZDtcbiAgcmVsYXlvdXQodHJ1ZUltYWdlU2l6ZT86IG51bWJlcltdKTogdm9pZDtcbiAgLyoqIEBkZXByZWNhdGVkIFBsb3RseS1zcGVjaWZpYyAoYXhpcyByZXNldCk7IHRoZSBPU0QgYmFja2VuZCBuby1vcHMgaXQuIEdhdGVcbiAgICogIG9uIHtAbGluayBWaWV3ZXJDYXBhYmlsaXRpZXN9IGJlZm9yZSBjYWxsaW5nLiAqL1xuICByZXNldEF4ZXMoKTogdm9pZDtcbiAgLyoqIEBkZXByZWNhdGVkIFBsb3RseS1zcGVjaWZpYyAoYXV0b3NjYWxlKTsgdGhlIE9TRCBiYWNrZW5kIG5vLW9wcyBpdC4gR2F0ZVxuICAgKiAgb24ge0BsaW5rIFZpZXdlckNhcGFiaWxpdGllc30gYmVmb3JlIGNhbGxpbmcuICovXG4gIGF1dG9zY2FsZSgpOiB2b2lkO1xuICB6b29tSW4oKTogdm9pZDtcbiAgem9vbU91dCgpOiB2b2lkO1xuICBzZXREcmFnTW9kZShtb2RlOiBzdHJpbmcgfCBmYWxzZSk6IHZvaWQ7XG4gIC8qKiBTaG93L2hpZGUgdGhlIG92ZXJ2aWV3IG5hdmlnYXRvciAodGhlIG1pbmltYXApLiBPcGVuU2VhZHJhZ29uIG9ubHkg4oCUIFBsb3RseVxuICAgKiAgbm8tb3BzIGl0IChpdCBoYXMgbm8gbmF2aWdhdG9yKS4gQXBwbGllZCB3aGVuIHRoZSB2aWV3ZXIgaXMgKHJlKWNyZWF0ZWQsIGFuZFxuICAgKiAgdG9nZ2xlZCBsaXZlIHdoZW4gb25lIGlzIGFscmVhZHkgbW91bnRlZC4gKi9cbiAgc2V0TmF2aWdhdG9yVmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKTogdm9pZDtcbiAgLyoqIEltYWdlIHNtb290aGluZyAoYmlsaW5lYXIgaW50ZXJwb2xhdGlvbikuIGBmYWxzZWAgPSBuZWFyZXN0LW5laWdoYm91ciwgc29cbiAgICogIHpvb21pbmcgcGFzdCAxOjEgc2hvd3MgY3Jpc3AgcGl4ZWwgYmxvY2tzIChwaXhlbC1sZXZlbCBpbnNwZWN0aW9uKS5cbiAgICogIE9wZW5TZWFkcmFnb24gb25seSDigJQgUGxvdGx5IG5vLW9wcyBpdC4gQXBwbGllZCBhdCB2aWV3ZXIgY3JlYXRpb24gYW5kIGxpdmVcbiAgICogICh3aXRoIGEgcmVkcmF3KSB3aGVuIG9uZSBpcyBtb3VudGVkLiAqL1xuICBzZXRJbWFnZVNtb290aGluZ0VuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IHZvaWQ7XG5cbiAgc2V0U2hvd1N0YWNrKHNob3dzdGFjazogYm9vbGVhbik6IHZvaWQ7XG4gIHNldFpJbmRleCh6SW5kZXg6IG51bWJlcik6IHZvaWQ7XG4gIHNldFN0YWNrTG9hZGluZyhzdGFja0xvYWRpbmc6IGJvb2xlYW4pOiB2b2lkO1xuICBpc1N0YWNrTG9hZGluZygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBnZXRTdGFja0xvYWRpbmdQcm9ncmVzcygpOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIC8qKiBDYW5jZWwgYW55IGluLWZsaWdodCBtdWx0aS1mcmFtZSBsb2FkaW5nICh2b2x1bWUtYXNzZW1ibHkgLyBzdXJmYWNlIHByZWxvYWQpIHNvIGl0IHN0b3BzXG4gICAqICBmZXRjaGluZyBtb3JlIGZyYW1lcyBhbmQgY2xlYXJzIHRoZSBsb2FkaW5nIHN0YXRlLiBPcHRpb25hbCDigJQgb25seSBiYWNrZW5kcyB0aGF0IHN0cmVhbSBhXG4gICAqICB6LXN0YWNrIChuYXBhcmktanMgV2ViR1BVKSBkbyByZWFsIHdvcmsgaGVyZTsgb3RoZXJzIG5vLW9wLiAqL1xuICBjYW5jZWxMb2FkaW5nPygpOiB2b2lkO1xuXG4gIGdldFRydWVJbWFnZVNpemUoKTogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9IHwgbnVsbDtcbiAgZ2V0Q3VycmVudEltYWdlKCk6IFByb21pc2U8SW1hZ2UgfCBudWxsPjtcbiAgZ2V0RGlzcGxheWVkUGl4ZWxEYXRhKCk6IFBpeGVsRGF0YSB8IG51bGw7XG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uIG9mIHRoZSBvcmlnaW5hbCwgZnVsbC1yZXNvbHV0aW9uIGltYWdlIHRoYXQgdGhlIHBpeGVscyByZXR1cm5lZFxuICAgKiBieSB7QGxpbmsgZ2V0RGlzcGxheWVkUGl4ZWxEYXRhfSBjdXJyZW50bHkgY292ZXIg4oCUIGB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfWBcbiAgICogaW4gZnVsbC1pbWFnZSBwaXhlbCBjb29yZGluYXRlcy4gV2hlbiB6b29tZWQvcGFubmVkIGludG8gYSBzdWItYXJlYSB0aGlzIGlzXG4gICAqIHRoZSBjcm9wJ3Mgb3JpZ2luICsgZXh0ZW50OyB3aGVuIHpvb21lZCBvdXQvcGFubmVkIGJleW9uZCB0aGUgZWRnZXMsIHRoZVxuICAgKiByZWN0YW5nbGUgbWF5IGV4dGVuZCBvdXRzaWRlIHRoZSBpbWFnZSBib3VuZHMgKG1hdGNoaW5nIHRoZSBwaXhlbCByZWFkYmFja1xuICAgKiBjYW52YXMpLiBMZXRzIGEgY29uc3VtZXIgbWFwIGRpc3BsYXllZC1waXhlbCBjb29yZGluYXRlcyBiYWNrIHRvIHRoZSBvcmlnaW5hbFxuICAgKiBpbWFnZSB2aWEgYG9yaWdpbiArIGRpc3BsYXllZFB4ICogKGV4dGVudCAvIGRpc3BsYXllZERpbSlgLiBcbiAgICpcbiAgICogUmV0dXJucyBgbnVsbGAgd2hlbiB0aGUgdmlld3BvcnQgaXNuJ3QgbGFpZCBvdXQgeWV0IG9yIHRoZSBiYWNrZW5kIGNhbid0XG4gICAqIHJlcG9ydCBpdCDigJQgY2FsbGVycyBzaG91bGQgdGhlbiBmYWxsIGJhY2sgdG8gdGhlIGZ1bGwtaW1hZ2Ugc2NhbGUgKHRyZWF0XG4gICAqIHRoZSBkaXNwbGF5ZWQgcGl4ZWxzIGFzIGEgZG93bnNhbXBsZSBvZiB0aGUgd2hvbGUgaW1hZ2UpLlxuICAgKi9cbiAgZ2V0RGlzcGxheWVkU291cmNlUmVjdCgpOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9IHwgbnVsbDtcbiAgZG93bmxvYWRJbWFnZSgpOiB2b2lkO1xuXG4gIHNldFBsb3RUeXBlKHBsb3RUeXBlOiBQbG90VHlwZSk6IHZvaWQ7XG4gIC8qKiBTZXQgdGhlIG5hcGFyaSAzRCBkZWNpbWF0ZSBmYWN0b3IgKDEgPSBmdWxsIOKApiA4ID0g4oWbKS4gT3B0aW9uYWwg4oCUIG9ubHkgdGhlIG5hcGFyaS1qcyBXZWJHUFVcbiAgICogIGJhY2tlbmQgaG9ub3JzIGl0OyBjaGFuZ2luZyBpdCByZS1sb2FkcyB0aGUgY3VycmVudCAzRCBwbG90IGF0IHRoZSBjb2Fyc2VyL2ZpbmVyIHNhbXBsaW5nLiAqL1xuICBzZXRSZXNvbHV0aW9uU2NhbGU/KHNjYWxlOiBudW1iZXIpOiB2b2lkO1xuICAvKiogVGhlIGN1cnJlbnQgbmFwYXJpIDNEIGRlY2ltYXRlIGZhY3RvciAodG8gaW5pdGlhbGl6ZSB0aGUgUmVzb2x1dGlvbiBjb250cm9sKS4gT3B0aW9uYWwuICovXG4gIGdldFJlc29sdXRpb25TY2FsZT8oKTogbnVtYmVyO1xuICAvKiogQGRlcHJlY2F0ZWQgVXNlIGBnZXRTdXJmYWNlM2RDb250cm9scygpYCDigJQgM0Qgc2NlbmUgY29udHJvbHMgb25seSBleGlzdCBvblxuICAgKiAgYSBiYWNrZW5kIHRoYXQgcmVuZGVycyAzRCBwbG90IHR5cGVzOyB0aGlzIG1ldGhvZCBzaWxlbnRseSBuby1vcHMgb24gT1NELiAqL1xuICBzZXRTdXJmYWNlRHJhZ01vZGUobW9kZTogc3RyaW5nKTogdm9pZDtcbiAgLyoqIEBkZXByZWNhdGVkIFVzZSBgZ2V0U3VyZmFjZTNkQ29udHJvbHMoKWAg4oCUIHNlZSB7QGxpbmsgc2V0U3VyZmFjZURyYWdNb2RlfS4gKi9cbiAgcmVzZXRTdXJmYWNlQ2FtZXJhKCk6IHZvaWQ7XG5cbiAgZ2V0QXV0b3NjYWxlRXZlbnQoKTogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIC8qKiBQbG90IHR5cGVzIHRoaXMgYmFja2VuZCBhZHZlcnRpc2VzIChkcml2ZXMgdGhlIFVJIHNlbGVjdG9yKS4gKi9cbiAgZ2V0UGxvdFR5cGVEZXNjcmlwdG9ycygpOiBQbG90VHlwZURlc2NyaXB0b3JbXTtcblxuICAvKiogSW50ZW5zaXR5IGFsb25nIHRoZSBsaW5lIFJPSXM7IGVtaXRzIHRoZSBmdWxsIHNldCBhcyBhbnkgbGluZSBpcyBhZGRlZCxcbiAgICogIG1vdmVkLCBvciByZW1vdmVkIChQbG90VHlwZS5MSU5FKS4gT25lIGVudHJ5IHBlciBsaW5lIFJPSS4gKi9cbiAgZ2V0SW50ZW5zaXR5UHJvZmlsZSQoKTogT2JzZXJ2YWJsZTxJbnRlbnNpdHlQcm9maWxlW10+O1xuXG4gIC8qKiBSZW5kZXIgdGhlIGZsb2F0aW5nIGludGVuc2l0eS1wcm9maWxlIGluc2V0IGNoYXJ0IGludG8gYGRpdklkYCBmcm9tIHRoZVxuICAgKiAgZ2l2ZW4gcHJvZmlsZXMgKG9uZSB0cmFjZSBwZXIgbGluZSBST0ksIGNvbG91cmVkIHRvIG1hdGNoIGl0cyBsaW5lKS5cbiAgICogIE93bmVkIGJ5IHRoZSBiYWNrZW5kIHNvIGNvbnN1bWVycyBuZXZlciByZWFjaCBhIGNoYXJ0aW5nIGxpYnJhcnkgZGlyZWN0bHkuICovXG4gIHJlbmRlckludGVuc2l0eUluc2V0KGRpdklkOiBzdHJpbmcsIHByb2ZpbGVzOiBJbnRlbnNpdHlQcm9maWxlW10pOiB2b2lkO1xufVxuXG4vKiogUmVnaW9uL3NoYXBlIHN0YXRlOiBDUlVELCBzZWxlY3Rpb24sIGNsYXNzaWZpY2F0aW9uIGNvbG91cnMsIEdlb0pTT04gSS9PLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUmVnaW9uU3RvcmUge1xuICBzZXRSZWdpb25zKHJlZ2lvbnM6IFJlZ2lvbltdLCBzaG93UmVnaW9uTGFiZWw/OiBib29sZWFuLCBpc1JlZ2lvblNhdmVPbj86IGJvb2xlYW4sXG4gICAgICAgICAgICAgZmlsbENvbG9yPzogc3RyaW5nLCBhcHBlbmQ/OiBib29sZWFuKTogdm9pZDtcbiAgLyoqIEZyYW1ld29yay1uZXV0cmFsIGFjY2Vzc29yIOKAlCB0aGUgY2Fub25pY2FsIHdheSB0byByZWFkIGN1cnJlbnQgcmVnaW9ucy4gKi9cbiAgZ2V0UmVnaW9ucygpOiBSZWdpb25bXTtcbiAgZ2V0UmVnaW9uUG9seWdvbnMoKTogYW55W107XG4gIGdldFJlZ2lvblVwZGF0ZUV2ZW50KCk6IE9ic2VydmFibGU8YW55W10+O1xuXG4gIHNldFNlbGVjdGVkU2hhcGVJbmRpY2VzKGluZGljZXM6IG51bWJlcltdKTogdm9pZDtcbiAgZ2V0U2VsZWN0ZWRTaGFwZUluZGljZXMkKCk6IE9ic2VydmFibGU8bnVtYmVyW10+O1xuICAvKiogU2VsZWN0IGEgc3BlY2lmaWMgcmVnaW9uIChieSBpZGVudGl0eSksIGhpZ2hsaWdodGluZyBpdCBvbiB3aGljaGV2ZXJcbiAgICogIGJhY2tlbmQgaXMgcmVuZGVyaW5nIOKAlCBQbG90bHkgc2V0cyBpdHMgYWN0aXZlLXNoYXBlIGhhbmRsZXMsIE9wZW5TZWFkcmFnb25cbiAgICogIGhpZ2hsaWdodHMgdGhlIFNWRyBlbGVtZW50LiBOby1vcCBpZiB0aGUgcmVnaW9uIGlzbid0IGluIHRoZSBzdG9yZS4gKi9cbiAgc2VsZWN0UmVnaW9uKHJlZ2lvbjogUmVnaW9uKTogdm9pZDtcbiAgZGVsZXRlQWN0aXZlU2hhcGUoKTogdm9pZDtcblxuICBnZXRTaG93U2hhcGVMYWJlbCgpOiBib29sZWFuO1xuICBnZXRTaGFwZUNvbG9yKCk6IHN0cmluZztcbiAgZ2V0RmlsbENvbG9yKCk6IHN0cmluZztcbiAgZ2V0Q2xhc3NpZmljYXRpb25Db2xvcnMoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgc2V0Q2xhc3NpZmljYXRpb25Db2xvcihsYWJlbDogc3RyaW5nLCBjb2xvcjogc3RyaW5nKTogdm9pZDtcblxuICBwbG90UHJldmlvdXNTaGFwZXMoKTogdm9pZDtcbiAgc2V0UHJldmlvdXNTaGFwZXMoc2hhcGVzOiBhbnlbXSk6IHZvaWQ7XG4gIGdldFByZXZpb3VzU2hhcGVzKCk6IGFueVtdO1xuXG4gIC8qKiBVbmRvIHRoZSBtb3N0IHJlY2VudCByZWdpb24gYWN0aW9uIChqaXQtdWkjODUpLiBSZXN0b3JlcyB0aGUgcmVnaW9uIHNldCB0b1xuICAgKiAgdGhlIHN0YXRlIGJlZm9yZSB0aGF0IGFjdGlvbjsgdXAgdG8gYSBzbWFsbCBmaXhlZCBkZXB0aCAoMTApIGlzIHJldGFpbmVkLFxuICAgKiAgc28gaXQgY2FuIGJlIGludm9rZWQgdXAgdG8gMTAgdGltZXMgaW4gYSByb3cuIE5vLW9wIHdoZW4gbm90aGluZyBpcyBsZWZ0IHRvXG4gICAqICB1bmRvLiAqL1xuICB1bmRvKCk6IHZvaWQ7XG4gIC8qKiBSZS1hcHBseSB0aGUgbW9zdCByZWNlbnRseSB1bmRvbmUgcmVnaW9uIGFjdGlvbi4gTm8tb3Agd2hlbiB0aGVyZSdzXG4gICAqICBub3RoaW5nIHRvIHJlZG8gKGFueSBmcmVzaCByZWdpb24gYWN0aW9uIGNsZWFycyB0aGUgcmVkbyBmdXR1cmUpLiAqL1xuICByZWRvKCk6IHZvaWQ7XG4gIC8qKiBTeW5jaHJvbm91cyByZWFkIG9mIHtAbGluayBnZXRDYW5VbmRvJH0uICovXG4gIGNhblVuZG8oKTogYm9vbGVhbjtcbiAgLyoqIFN5bmNocm9ub3VzIHJlYWQgb2Yge0BsaW5rIGdldENhblJlZG8kfS4gKi9cbiAgY2FuUmVkbygpOiBib29sZWFuO1xuICAvKiogRW1pdHMgd2hldGhlciBhbiB1bmRvIHN0ZXAgaXMgY3VycmVudGx5IGF2YWlsYWJsZSDigJQgZHJpdmVzIHRoZSB0b29sYmFyXG4gICAqICBVbmRvIGJ1dHRvbidzIGVuYWJsZWQgKGdyZXllZC1vdXQpIHN0YXRlLiAqL1xuICBnZXRDYW5VbmRvJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAvKiogRW1pdHMgd2hldGhlciBhIHJlZG8gc3RlcCBpcyBjdXJyZW50bHkgYXZhaWxhYmxlIOKAlCBkcml2ZXMgdGhlIHRvb2xiYXJcbiAgICogIFJlZG8gYnV0dG9uJ3MgZW5hYmxlZCAoZ3JleWVkLW91dCkgc3RhdGUuICovXG4gIGdldENhblJlZG8kKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIC8qKiBDbGVhciB0aGUgdW5kby9yZWRvIGhpc3RvcnkgKGUuZy4gb24gaW1hZ2UgbG9hZC9zd2l0Y2gpLiAqL1xuICByZXNldFVuZG9IaXN0b3J5KCk6IHZvaWQ7XG5cbiAgaW1wb3J0UmVnaW9ucyhnZW9Kc29uU3RyOiBzdHJpbmcpOiBSZWdpb25bXTtcbiAgZXhwb3J0UmVnaW9ucyhyZWdpb25zOiBSZWdpb25bXSk6IHZvaWQ7XG4gIGdldEdlb0pzb25TdHJpbmcocmVnaW9uczogUmVnaW9uW10pOiBzdHJpbmc7XG5cbiAgLyoqIEJlZ2luIGEgcGVyLXNsaWNlIHotc3RhY2sgcmVnaW9uIHNlc3Npb24gKGppdC11aSM5MykuIGBzbGljZXNgIG1hcHMgZWFjaFxuICAgKiAgemVyby1iYXNlZCBzbGljZSBpbmRleCB0byB0aGF0IHNsaWNlJ3MgcmVnaW9uczsgdGhlIHN0b3JlIHNob3dzIGBpbml0aWFsWmBcbiAgICogIGxpdmUgd2hpbGUgaG9sZGluZyB0aGUgcmVzdCwgc28gc2NydWJiaW5nIHN3YXBzIHJlZ2lvbiBzZXRzIGFuZCBlZGl0cyBvbiBhXG4gICAqICBzbGljZSBwZXJzaXN0LiBgc2F2ZUxheW91dGAgcmVjb3JkcyBob3cgdGhlIHN0YWNrIHBlcnNpc3RzIOKAlCBgY29tYmluZWRgXG4gICAqICAob25lIHotaW5kZXhlZCBnZW9qc29uLCBzaW5nbGUtZmlsZSB6LXN0YWNrKSBvciBgcGVyLXNsaWNlLWZpbGVgIChmb2xkZXJcbiAgICogIHN0YWNrKS4gU2VlIHtAbGluayBzZXREaXNwbGF5U2xpY2V9LCB7QGxpbmsgZ2V0U2xpY2VSZWdpb25zfS4gKi9cbiAgZW50ZXJTdGFja01vZGUoc2xpY2VzOiBNYXA8bnVtYmVyLCBSZWdpb25bXT4sIGluaXRpYWxaPzogbnVtYmVyLFxuICAgICAgICAgICAgICAgICBzYXZlTGF5b3V0PzogJ2NvbWJpbmVkJyB8ICdwZXItc2xpY2UtZmlsZScpOiB2b2lkO1xuICAvKiogRW5kIHRoZSBwZXItc2xpY2Ugc2Vzc2lvbiAoc2luZ2xlLXBsYW5lIGltYWdlLCBvciB0aGUgc3RhY2sgd2FzIGNsb3NlZCkuICovXG4gIGV4aXRTdGFja01vZGUoKTogdm9pZDtcbiAgLyoqIFRydWUgd2hpbGUgYSBwZXItc2xpY2Ugei1zdGFjayBzZXNzaW9uIGlzIGFjdGl2ZS4gKi9cbiAgaXNTdGFja01vZGUoKTogYm9vbGVhbjtcbiAgLyoqIEhvdyB0aGUgY3VycmVudCBzdGFjayBwZXJzaXN0cyB0byBkaXNrIChqaXQtdWkjOTMpLiAqL1xuICBnZXRTdGFja1NhdmVMYXlvdXQoKTogJ2NvbWJpbmVkJyB8ICdwZXItc2xpY2UtZmlsZSc7XG4gIC8qKiBTd2FwIHRoZSBsaXZlIHJlZ2lvbiBzZXQgdG8gc2xpY2UgYHpgIChzdGFjayBtb2RlIG9ubHkpLCBjYXB0dXJpbmcgdGhlXG4gICAqICBjdXJyZW50IHNsaWNlJ3MgZWRpdHMgZmlyc3QuIENhbGxlZCBvbiBldmVyeSBjb21taXR0ZWQgc2xpY2Ugc2NydWIuICovXG4gIHNldERpc3BsYXlTbGljZSh6OiBudW1iZXIpOiB2b2lkO1xuICAvKiogRXZlcnkgc2xpY2UncyByZWdpb25zIGZvciBzYXZlL2V4cG9ydCwgZWFjaCB0YWdnZWQgd2l0aCBpdHMgemVyby1iYXNlZFxuICAgKiAge0BsaW5rIFJlZ2lvbi56fTsgdGhlIGZsYXQgc2V0IG91dHNpZGUgc3RhY2sgbW9kZS4gKi9cbiAgZ2V0U2xpY2VSZWdpb25zKCk6IFJlZ2lvbltdO1xuICAvKiogU2xpY2VzIHRvIHdyaXRlIG9uIGEgcGVyLXNsaWNlLWZpbGUgc2F2ZSAoZm9sZGVyIHN0YWNrLCBqaXQtdWkjOTMpOiBlYWNoXG4gICAqICBzbGljZSB3aXRoIHJlZ2lvbnMsIHBsdXMgc2xpY2VzIGNsZWFyZWQgc2luY2UgbG9hZCAoZW1wdHksIHRvIG92ZXJ3cml0ZSkuXG4gICAqICBLZXllZCBieSB6ZXJvLWJhc2VkIHNsaWNlIGluZGV4OyByZWdpb25zIHRhZ2dlZCB3aXRoIHRoZWlyIHouICovXG4gIGdldFN0YWNrU2F2ZVNsaWNlcygpOiBNYXA8bnVtYmVyLCBSZWdpb25bXT47XG59XG5cbi8qKiBPbi1jYW52YXMgdG9vbCBtb2RlcyAod2FuZCwgYnJ1c2gsIHZlcnRleCBlcmFzZXIsIHpvb20tdG8tYm94KS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRvb2xDb250cm9sbGVyIHtcbiAgc2V0V2FuZE1vZGUoYWN0aXZlOiBib29sZWFuLCBvcHRpb25zPzogSVdhbmRPcHRpb25zKTogdm9pZDtcbiAgc2V0V2FuZE9wdGlvbnMob3B0aW9uczogSVdhbmRPcHRpb25zKTogdm9pZDtcbiAgY2xlYXJBY3RpdmVXYW5kUmVnaW9uKCk6IHZvaWQ7XG4gIC8qKiBCcnVzaCByZWdpb24gdG9vbC4gYHNpemVgIChtYXRyaXgtcGl4ZWwgZGlhbWV0ZXIpIHNpemVzIHRoZSBwYWludGVkIGRpc2MuICovXG4gIHNldEJydXNoTW9kZShhY3RpdmU6IGJvb2xlYW4sIG9wdGlvbnM/OiBJQnJ1c2hPcHRpb25zKTogdm9pZDtcbiAgc2V0QnJ1c2hPcHRpb25zKG9wdGlvbnM6IElCcnVzaE9wdGlvbnMpOiB2b2lkO1xuICBzZXRWZXJ0ZXhFcmFzZXJNb2RlKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQ7XG4gIHNldFZlcnRleEVyYXNlclJhZGl1cyhyYWRpdXM6IG51bWJlcik6IHZvaWQ7XG4gIHNldFpvb21Ub0JveE1vZGUoYWN0aXZlOiBib29sZWFuKTogdm9pZDtcbiAgLyoqIEJveC1wcm9tcHRlZCBTQU0gc2VnbWVudGF0aW9uOiBzZWdtZW50IGV2ZXJ5IHJlY3RhbmdsZSByZWdpb24gaW50byBtYXNrcy5cbiAgICogIFJldHVybnMgdGhlIG51bWJlciBvZiBtYXNrIHJlZ2lvbnMgYWRkZWQuIChqaXQtdWkjOTApICovXG4gIHNlZ21lbnRSZWN0YW5nbGVzKCk6IFByb21pc2U8bnVtYmVyPjtcbiAgLyoqIENlbGxwb3NlLW9uLWNyb3A6IGNsaWVudCBzbGlkZS1jcm9wIGVhY2ggcmVjdGFuZ2xlIGFuZCBzZWdtZW50IGNlbGxzIGluIGl0XG4gICAqICAoY2VsbHBvc2UtU0FNIHZpYSB0aGUgaG9zdCdzIENFTExfU0VHTUVOVEVSKS4gUmV0dXJucyByZWdpb25zIGFkZGVkLiAqL1xuICBzZWdtZW50UmVjdGFuZ2xlc0NlbGxwb3NlKCk6IFByb21pc2U8bnVtYmVyPjtcbiAgLyoqIENob29zZSB0aGUgcmVnaXN0ZXJlZCBTQU0gbW9kZWwgdGhlIHNlZ21lbnQgdG9vbHMgdXNlIChqaXQtdWkjOTAgUDEpLiAqL1xuICBzZXRTYW1Nb2RlbChpZDogc3RyaW5nKTogdm9pZDtcbiAgLyoqIFRvZ2dsZSB0aGUgaW50ZXJhY3RpdmUgU0FNIHBvaW50LXByb21wdCB0b29sIChjbGljayA9ICtwb2ludCwgU2hpZnQgPSAtKS4gKi9cbiAgc2V0U2FtUG9pbnRNb2RlKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQ7XG4gIC8qKiBGaW5hbGlzZSAvIGRpc2NhcmQgdGhlIGluLXByb2dyZXNzIFNBTSBwb2ludCBvYmplY3QuICovXG4gIGNvbW1pdFNhbVBvaW50cygpOiB2b2lkO1xuICBjbGVhclNhbVBvaW50cygpOiB2b2lkO1xufVxuXG4vKipcbiAqIENvbnRyb2xzIHNwZWNpZmljIHRvIHRoZSBJU09TVVJGQUNFIHBsb3QgdHlwZS4gT3B0aW9uYWwgYW5kIGNhcGFiaWxpdHktZ2F0ZWRcbiAqIChgVmlld2VyRmVhdHVyZS5Jc29zdXJmYWNlYCk6IG9ubHkgYSBiYWNrZW5kIHRoYXQgcmVuZGVycyBpc29zdXJmYWNlcyBleHBvc2VzXG4gKiBpdCwgdmlhIGBJVmlzdWFsaXplci5nZXRJc29zdXJmYWNlQ29udHJvbHMoKWAuIEtlcHQgb2ZmIHRoZSBhbHdheXMtb25cbiAqIGNvbnRyYWN0IHNvIGNvbnN1bWVycyBuZXZlciBjYWxsIGEgY29udHJvbCB0aGF0J3MgbWVhbmluZ2xlc3MgZm9yIHRoZSBjdXJyZW50XG4gKiBwbG90IHR5cGUgLyBiYWNrZW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElJc29zdXJmYWNlQ29udHJvbHMge1xuICAvKiogTGl2ZS11cGRhdGUgdGhlIGlzb3N1cmZhY2UgaW50ZW5zaXR5IGJhbmQgW2lzb21pbiwgaXNvbWF4XSBvdmVyIDDigJMyNTUuICovXG4gIHNldElzb1JhbmdlKGlzb01pbjogbnVtYmVyLCBpc29NYXg6IG51bWJlcik6IHZvaWQ7XG59XG5cbi8qKlxuICogQ29udHJvbHMgc3BlY2lmaWMgdG8gdGhlIDNEIHBsb3QgdHlwZXMgKFNVUkZBQ0UgLyBTQ0FUVEVSM0QgLyBJU09TVVJGQUNFXG4gKiBzY2VuZXMpLiBDYXBhYmlsaXR5LWdhdGVkIGxpa2Uge0BsaW5rIElJc29zdXJmYWNlQ29udHJvbHN9OiBvbmx5IGEgYmFja2VuZFxuICogdGhhdCByZW5kZXJzIDNEIHNjZW5lcyBleHBvc2VzIGl0LCB2aWEgYElWaXN1YWxpemVyLmdldFN1cmZhY2UzZENvbnRyb2xzKClgIOKAlFxuICogdGhlIGRlcHJlY2F0ZWQgdG9wLWxldmVsIGBzZXRTdXJmYWNlRHJhZ01vZGVgL2ByZXNldFN1cmZhY2VDYW1lcmFgIHNpbGVudGx5XG4gKiBuby1vcCBvbiAyRC1vbmx5IGJhY2tlbmRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTdXJmYWNlM2RDb250cm9scyB7XG4gIC8qKiBTd2l0Y2ggdGhlIDNEIHNjZW5lIGludGVyYWN0aW9uIG1vZGUgKG9yYml0IC8gdHVybnRhYmxlIC8gcGFuIC8gem9vbSkuICovXG4gIHNldFN1cmZhY2VEcmFnTW9kZShtb2RlOiBzdHJpbmcpOiB2b2lkO1xuICAvKiogUmVzZXQgdGhlIDNEIHNjZW5lIGNhbWVyYSB0byBpdHMgZGVmYXVsdCBleWUgcG9zaXRpb24uICovXG4gIHJlc2V0U3VyZmFjZUNhbWVyYSgpOiB2b2lkO1xuICAvKiogVG9nZ2xlIHRoZSAzRCBjb29yZGluYXRlLWF4ZXMgLyBzY2FsZSBnaXptbyBvbi9vZmYuIE9wdGlvbmFsIOKAlCBvbmx5IHRoZSBuYXBhcmktanMgV2ViR1BVXG4gICAqICB2b2x1bWUvaXNvc3VyZmFjZSBiYWNrZW5kIHJlbmRlcnMgb25lIChqaXQtdWkjMTAyKS4gKi9cbiAgc2V0QXhlc1Zpc2libGU/KHZpc2libGU6IGJvb2xlYW4pOiB2b2lkO1xuICAvKiogV2hldGhlciB0aGUgYXhlcyBnaXptbyBpcyBjdXJyZW50bHkgc2hvd24gKGZvciBpbml0aWFsaXppbmcgdGhlIHRvZ2dsZSBVSSkuIE9wdGlvbmFsLiAqL1xuICBheGVzVmlzaWJsZT8oKTogYm9vbGVhbjtcbiAgLyoqIFJlbmRlciB0aGUgc3VyZmFjZSBhcyBhIHdpcmVmcmFtZSAoZWRnZXMpIGluc3RlYWQgb2YgYSBmaWxsZWQgc3VyZmFjZS4gT3B0aW9uYWwg4oCUIG9ubHkgdGhlXG4gICAqICBuYXBhcmktanMgV2ViR1BVIHN1cmZhY2UgYmFja2VuZCBzdXBwb3J0cyBpdCAoaml0LXVpIzEwMikuICovXG4gIHNldFdpcmVmcmFtZT8ob246IGJvb2xlYW4pOiB2b2lkO1xuICAvKiogV2hldGhlciB0aGUgc3VyZmFjZSBpcyBjdXJyZW50bHkgZHJhd24gYXMgYSB3aXJlZnJhbWUgKGZvciBpbml0aWFsaXppbmcgdGhlIHRvZ2dsZSBVSSkuICovXG4gIHdpcmVmcmFtZT8oKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb250cm9scyBzcGVjaWZpYyB0byB0aGUgTElORSAoaW50ZW5zaXR5LXByb2ZpbGUpIHBsb3QgdHlwZS4gQ2FwYWJpbGl0eS1nYXRlZFxuICogbGlrZSB7QGxpbmsgSUlzb3N1cmZhY2VDb250cm9sc306IG9ubHkgYSBiYWNrZW5kIHRoYXQgcmVuZGVycyB0aGUgbGluZS1ST0kgL1xuICogaW5zZXQgZXhwb3NlcyBpdCwgdmlhIGBJVmlzdWFsaXplci5nZXRJbnRlbnNpdHlDb250cm9scygpYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSW50ZW5zaXR5Q29udHJvbHMge1xuICAvKiogQWRkIGFub3RoZXIgbGluZSBST0kgKG5leHQgYnJpZ2h0IHBhbGV0dGUgY29sb3VyKSBhbmQgaXRzIGluc2V0IHRyYWNlLlxuICAgKiAgUmV0dXJucyB0aGUgY3JlYXRlZCByZWdpb24gc28gdGhlIGNhbGxlciBjYW4gc2VsZWN0IGl0IG9uIHRoZSBhY3RpdmVcbiAgICogIGJhY2tlbmQsIG9yIG51bGwgaWYgbm8gaW1hZ2UgZXh0ZW50IGlzIGtub3duIHlldC4gKi9cbiAgYWRkUHJvZmlsZUxpbmUoKTogUmVnaW9uIHwgbnVsbDtcbn1cblxuLyoqIERpc3BsYXkgb3B0aW9ucyAoY29sb3JtYXAvTFVULCByZXZlcnNlIHNjYWxlLCBpbWFnZSBtZXRhZGF0YSkuICovXG5leHBvcnQgaW50ZXJmYWNlIElEaXNwbGF5T3B0aW9ucyB7XG4gIGdldENvbG9ybWFwKCk6IE9ic2VydmFibGU8Q29sb3JtYXBOb2RlIHwgbnVsbD47XG4gIHNldENvbG9ybWFwKGNvbG9ybWFwOiBDb2xvcm1hcE5vZGUpOiB2b2lkO1xuICBnZXRDb2xvcm1hcE9wdGlvbnMoKTogQ29sb3JtYXBOb2RlW107XG4gIGdldFJldmVyc2VTY2FsZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBzZXRSZXZlcnNlU2NhbGUocmV2ZXJzY2FsZTogYW55KTogdm9pZDtcbiAgc2V0SW1hZ2VNZXRhKGltYWdlTWV0YTogSUltYWdlTWV0YWRhdGFbXSk6IHZvaWQ7XG4gIGdldEltYWdlTWV0YSgpOiBPYnNlcnZhYmxlPElJbWFnZU1ldGFkYXRhW10+O1xufVxuXG4vKipcbiAqIEludGVuc2l0eS1wcm9maWxlIHNhbXBsaW5nIChQbG90VHlwZS5MSU5FKS4gVGhlIHNhbXBsaW5nICpzb3VyY2UqIGxpdmVzIGluIHRoZVxuICogUGxvdGx5IGJhY2tlbmQgKGl0IG93bnMgcGl4ZWwgcmVhZGJhY2spOyBPcGVuU2VhZHJhZ29uIGNvbnRyaWJ1dGVzIG9ubHkgdGhlXG4gKiB2aWV3cG9ydC1jaGFuZ2Ugc2lnbmFsIHRoYXQgZHJpdmVzIHJlLXNhbXBsaW5nIGF0IHRoZSBjdXJyZW50IHpvb20uIEVhY2hcbiAqIGJhY2tlbmQgaW1wbGVtZW50cyB0aGUgcGFydCBpdCBvd25zIGFuZCBuby1vcHMgdGhlIHJlc3Qg4oCUIG1pcnJvcmluZyB0aGVcbiAqIGRlcHJlY2F0ZWQgbm8tb3AgcGF0dGVybiBvbiB7QGxpbmsgSURhdGFSZW5kZXJlcn0g4oCUIHNvIHRoZSBjb250cmFjdCBpcyB1bmlmb3JtXG4gKiBhbmQgYSBjb25zdW1lciBjYW4gZGVwZW5kIG9uIGBJVmlzdWFsaXplcmAgYWxvbmUgKG5vIGNvbmNyZXRlLXR5cGUgcmVhY2gtaW4pLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElJbnRlbnNpdHlTYW1wbGluZyB7XG4gIC8qKiBQb3B1bGF0ZSB0aGUgaW50ZW5zaXR5LXNhbXBsaW5nIGNhY2hlIGZvciB0aGUgY3VycmVudCBpbWFnZS9zbGljZSBzbyB0aGVcbiAgICogIGxpbmUtUk9JIHByb2ZpbGVzIGhhdmUgcGl4ZWwgZGF0YS4gUmVhbCBvbiBQbG90bHk7IG5vLW9wIG9uIE9TRC4gKi9cbiAgZW5zdXJlSW50ZW5zaXR5U2FtcGxpbmcoaW1hZ2VJbmZvOiBJSW1hZ2VJbmZvLCB6SW5kZXg6IG51bWJlcik6IFByb21pc2U8dm9pZD47XG4gIC8qKiBSZS1zYW1wbGUgdGhlIHByb2ZpbGVzIGZyb20gYSBmcmVzaCBjcm9wIG9mIHRoZSBnaXZlbiBpbWFnZS1waXhlbCBST0kgYXRcbiAgICogIGRpc3BsYXkgcmVzb2x1dGlvbi4gUmVhbCBvbiBQbG90bHk7IG5vLW9wIG9uIE9TRC4gKi9cbiAgcmVmcmVzaEludGVuc2l0eVNhbXBsaW5nRm9yUm9pKHg6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogbnVtYmVyKTogdm9pZDtcbiAgLyoqIFZpc2libGUtcmVnaW9uIGNoYW5nZXMgKGltYWdlLXBpeGVsIGNvb3JkcyksIGVtaXR0ZWQgd2hlbiB0aGUgdmlldyBzZXR0bGVzLFxuICAgKiAgc28gdGhlIGluc2V0IGNhbiByZS1zYW1wbGUgYXQgdGhlIGN1cnJlbnQgem9vbS4gUmVhbCBvbiBPU0Q7IGVtcHR5IG9uIFBsb3RseVxuICAgKiAgKGl0cyBoaWdoLWRlZiB6b29tIHVwZGF0ZXMgdGhlIHNhbXBsaW5nIGNhY2hlIGlubGluZSBpbnN0ZWFkKS4gKi9cbiAgZ2V0Vmlld3BvcnRDaGFuZ2UkKCk6IE9ic2VydmFibGU8eyB4OiBudW1iZXI7IHk6IG51bWJlcjsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfT47XG59XG5cbi8qKiBDb21wb3NpdGUgY29udHJhY3QgYSB2aXN1YWxpemF0aW9uIGJhY2tlbmQgaW1wbGVtZW50cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVZpc3VhbGl6ZXIgZXh0ZW5kcyBJRGF0YVJlbmRlcmVyLCBJUmVnaW9uU3RvcmUsIElUb29sQ29udHJvbGxlciwgSURpc3BsYXlPcHRpb25zLFxuICBJSW50ZW5zaXR5U2FtcGxpbmcge1xuICByZWFkb25seSBjYXBhYmlsaXRpZXM6IFZpZXdlckNhcGFiaWxpdGllcztcbiAgLyoqIFRoaXMgYmFja2VuZCdzIHJlZ2lvbiByZW5kZXJlci4gTWF5IGJlIG51bGwgdW50aWwgYSBwbG90IGlzIG1vdW50ZWRcbiAgICogIChPcGVuU2VhZHJhZ29uKS4gRHJpdmVzIHJlZ2lvbiBkcmF3L3NlbGVjdCBtb2RlcyB1bmlmb3JtbHkuICovXG4gIGdldFJlZ2lvbk92ZXJsYXkoKTogSVJlZ2lvbk92ZXJsYXkgfCBudWxsO1xuICAvKiogSXNvc3VyZmFjZSBjb250cm9scyB3aGVuIHRoaXMgYmFja2VuZCBhZHZlcnRpc2VzIGBWaWV3ZXJGZWF0dXJlLklzb3N1cmZhY2VgLFxuICAgKiAgZWxzZSBudWxsIOKAlCBzbyBjb25zdW1lcnMgZ2F0ZSBvbiB0aGUgcmV0dXJuZWQgb2JqZWN0LCBub3QgYSBuby1vcCBtZXRob2QuICovXG4gIGdldElzb3N1cmZhY2VDb250cm9scygpOiBJSXNvc3VyZmFjZUNvbnRyb2xzIHwgbnVsbDtcbiAgLyoqIEludGVuc2l0eSAobGluZS1ST0kpIGNvbnRyb2xzIHdoZW4gdGhlIGJhY2tlbmQgcmVuZGVycyB0aGUgTElORSBwbG90IHR5cGUsXG4gICAqICBlbHNlIG51bGwuICovXG4gIGdldEludGVuc2l0eUNvbnRyb2xzKCk6IElJbnRlbnNpdHlDb250cm9scyB8IG51bGw7XG4gIC8qKiAzRCBzY2VuZSBjb250cm9scyB3aGVuIHRoaXMgYmFja2VuZCByZW5kZXJzIDNEIHBsb3QgdHlwZXMsIGVsc2UgbnVsbCDigJRcbiAgICogIHRoZSBjYXBhYmlsaXR5LWdhdGVkIHJlcGxhY2VtZW50IGZvciB0aGUgZGVwcmVjYXRlZCB0b3AtbGV2ZWxcbiAgICogIGBzZXRTdXJmYWNlRHJhZ01vZGVgL2ByZXNldFN1cmZhY2VDYW1lcmFgLiAqL1xuICBnZXRTdXJmYWNlM2RDb250cm9scygpOiBJU3VyZmFjZTNkQ29udHJvbHMgfCBudWxsO1xuICAvKiogQmlubmVkIGludGVuc2l0eSBoaXN0b2dyYW0gZm9yIGEgY2hhbm5lbCBmcm9tIHRoZSBjdXJyZW50bHktZGlzcGxheWVkXG4gICAqICBwaXhlbHMsIG9yIG51bGwgd2hlbiBub25lIGFyZSBhdmFpbGFibGUuIEZlZWRzIHRoZSBDaGFubmVscyAmIEhpc3RvZ3JhbVxuICAgKiAgcGFuZS4gKi9cbiAgZ2V0SGlzdG9ncmFtKGNoYW5uZWxJbmRleDogbnVtYmVyLCBiaW5zOiBudW1iZXIpOiBJSGlzdG9ncmFtIHwgbnVsbDtcbiAgLyoqIEFzeW5jIGhpc3RvZ3JhbSBzdHJlYW0g4oCUIG5hdGl2ZSBiaXQgZGVwdGggZm9yID44LWJpdCBpbWFnZXMgKHNlcnZlciksIGVsc2VcbiAgICogIHRoZSA4LWJpdCBjbGllbnQgaGlzdG9ncmFtLiAqL1xuICBnZXRIaXN0b2dyYW0kKGNoYW5uZWxJbmRleDogbnVtYmVyLCBiaW5zOiBudW1iZXIpOiBPYnNlcnZhYmxlPElIaXN0b2dyYW0gfCBudWxsPjtcbiAgLyoqIEV4cG9ydCB0aGUgZGlzcGxheWVkIGltYWdlLCBjb21wb3NpdGVkIHdpdGggdGhlIGN1cnJlbnQgZGlzcGxheSBzZXR0aW5ncyxcbiAgICogIGFzIGEgcHVibGljYXRpb24tcmVhZHkgUE5HIGRvd25sb2FkLiAqL1xuICBleHBvcnRDb21wb3NpdGUoKTogdm9pZDtcbiAgLyoqIEV4cG9ydCB0aGUgdW5kZXJseWluZyBpbWFnZSBkYXRhIGFzIGEgZGF0YS1wcmVzZXJ2aW5nIG11bHRpLWJhbmQgVElGRlxuICAgKiAgKG5hdGl2ZSBiaXQgZGVwdGgpLiBOby1vcCBvbiBiYWNrZW5kcyB0aGF0IGNhbid0IHByb3ZpZGUgaXQuICovXG4gIGV4cG9ydERhdGEoKTogdm9pZDtcbiAgdW5zdWJzY3JpYmUoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBESSB0b2tlbiBmb3IgdGhlIGFjdGl2ZSB2aXN1YWxpemF0aW9uIGJhY2tlbmQuIEJpbmQgaXQgKGB1c2VFeGlzdGluZ2ApIHRvIHRoZVxuICogYFJvdXRpbmdWaXN1YWxpemVyU2VydmljZWAsIHdoaWNoIHNlbGVjdHMgUGxvdGx5IHZzIE9wZW5TZWFkcmFnb24gcGVyIHBsb3RcbiAqIHR5cGUuIENvbnN1bWVycyDigJQgaW5jbHVkaW5nIHRoaXMgbGlicmFyeSdzIG93biBgVmlzdWFsaXplckNvbXBvbmVudGAg4oCUXG4gKiBpbmplY3QgYElWaXN1YWxpemVyYCB0aHJvdWdoIHRoaXMgdG9rZW4gcmF0aGVyIHRoYW4gdGhlIGNvbmNyZXRlIHJvdXRlciwgc29cbiAqIHRoZSByb3V0aW5nL2ZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGNhbiBjaGFuZ2Ugd2l0aG91dCB0b3VjaGluZyBjb25zdHJ1Y3RvcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBWSVNVQUxJWkVSID0gbmV3IEluamVjdGlvblRva2VuPElWaXN1YWxpemVyPignVklTVUFMSVpFUicpO1xuIl19
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsaXplci5jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29udHJhY3RzL3Zpc3VhbGl6ZXIuY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQXVkL0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFjLFlBQVksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEltYWdlIH0gZnJvbSAnaW1hZ2UtanMnO1xuXG5pbXBvcnQgeyBJSW1hZ2VJbmZvLCBJSW1hZ2VNZXRhZGF0YSB9IGZyb20gJy4vaW1hZ2UuY29udHJhY3QnO1xuaW1wb3J0IHsgUmVnaW9uIH0gZnJvbSAnLi4vbW9kZWxzL3JlZ2lvbic7XG5pbXBvcnQgeyBQbG90VHlwZSwgUGxvdFR5cGVEZXNjcmlwdG9yIH0gZnJvbSAnLi9wbG90LXR5cGUnO1xuaW1wb3J0IHsgVmlld2VyQ2FwYWJpbGl0aWVzIH0gZnJvbSAnLi9jYXBhYmlsaXRpZXMuY29udHJhY3QnO1xuaW1wb3J0IHsgSVJlZ2lvbk92ZXJsYXkgfSBmcm9tICcuL3JlZ2lvbi1vdmVybGF5LmNvbnRyYWN0JztcbmltcG9ydCB7IElIaXN0b2dyYW0gfSBmcm9tICcuL2NoYW5uZWwtaGlzdG9ncmFtLWFwaS5jb250cmFjdCc7XG5pbXBvcnQgeyBDb2xvcm1hcE5vZGUsIElXYW5kT3B0aW9ucywgSUJydXNoT3B0aW9ucywgU3BhdGlhbFZpZXdTdGF0ZSwgU3BhdGlhbENvbG9yQnkgfSBmcm9tICcuL2Rpc3BsYXktdHlwZXMnO1xuaW1wb3J0IHtcbiAgU3BhdGlhbERhdGFzZXQsXG4gIFNwYXRpYWxFbWJlZGRpbmcsXG59IGZyb20gJy4vc3BhdGlhbC1kYXRhc2V0LmNvbnRyYWN0JztcbmltcG9ydCB7IFNwYXRpYWxTZWxlY3Rpb25NYXNrIH0gZnJvbSAnLi4vc3BhdGlhbC9zcGF0aWFsLXNlbGVjdGlvbic7XG5pbXBvcnQgdHlwZSB7IFBsb3RNb2RlVmlld3BvcnQgfSBmcm9tICcuL3Bsb3QtdHlwZS1jb250cmlidXRpb24uY29udHJhY3QnO1xuXG4vKipcbiAqIEJhY2tlbmQtbmV1dHJhbCB2aXN1YWxpemF0aW9uIGNvbnRyYWN0LiBQbG90bHkgaXMgb25lIGltcGxlbWVudGF0aW9uO1xuICogT3BlblNlYWRyYWdvbiBpcyBhbm90aGVyIChmb3IgdGhlIGltYWdlIHBsb3QgdHlwZSkuIFRoZSBhYnN0cmFjdGlvbiByZW5kZXJzXG4gKiBkYXRhIOKAlCBhIHJhc3RlciBpbWFnZSBPUiBhIHNjaWVudGlmaWMgcGxvdCAoaGVhdG1hcCwgc3VyZmFjZSwgY29udG91cixcbiAqIHNjYXR0ZXIsIGxpbmUsIGlzb3N1cmZhY2UpIOKAlCBkcmF3cyByZWdpb25zIG9uIGl0LCBhbmQgZHJpdmVzIG9uLWNhbnZhcyB0b29scy5cbiAqXG4gKiBTcGxpdCBpbnRvIHJvbGUgaW50ZXJmYWNlcyBzbyBhIGNvbnN1bWVyIGNhbiBkZXBlbmQgb25seSBvbiB0aGUgc2xpY2UgaXRcbiAqIHVzZXMsIHRoZW4gY29tcG9zZWQgaW50byBgSVZpc3VhbGl6ZXJgLlxuICpcbiAqIFR5cGVzIGFyZSBpbnRlbnRpb25hbGx5IHBlcm1pc3NpdmUgKGBhbnlgIHdoZXJlIHRoZSBjdXJyZW50IFBsb3RseSBzZXJ2aWNlXG4gKiBpcyB1bnR5cGVkKSBzbyBgUGxvdGx5U2VydmljZWAgc2F0aXNmaWVzIHRoZSBjb250cmFjdCB3aXRob3V0IGEgdHlwaW5nXG4gKiByZXdyaXRlIOKAlCB0aWdodGVuaW5nIGlzIGEgZm9sbG93LXVwLCBub3QgcGFydCBvZiBzdGFuZGluZyB0aGUgaW50ZXJmYWNlIHVwLlxuICovXG5cbi8qKiBQaXhlbCByZWFkYmFjayBzaGFwZSByZXR1cm5lZCBieSBgZ2V0RGlzcGxheWVkUGl4ZWxEYXRhYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGl4ZWxEYXRhIHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIGNoYW5uZWxzOiBudW1iZXI7XG4gIGRhdGE6IFVpbnQ4Q2xhbXBlZEFycmF5O1xufVxuXG4vKiogSW50ZW5zaXR5IHNhbXBsZWQgYWxvbmcgYSBsaW5lIFJPSSAoUGxvdFR5cGUuTElORSBvdmVyIGltYWdlIGRhdGEpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlbnNpdHlQcm9maWxlIHtcbiAgLyoqIERpc3RhbmNlIGFsb25nIHRoZSBsaW5lLiBJbiBtaWNyb25zIHdoZW4gdGhlIGltYWdlIGNhcnJpZXMgYSBwaHlzaWNhbFxuICAgKiAgcGl4ZWwgc2l6ZSAobXBwKTsgb3RoZXJ3aXNlIGluIGltYWdlIHBpeGVscy4gU2VlIHtAbGluayB1bml0fS4gKi9cbiAgcG9zaXRpb25zOiBudW1iZXJbXTtcbiAgLyoqIFNhbXBsZWQgaW50ZW5zaXR5IChncmF5c2NhbGUgdmFsdWUgb3IgUkdCIGx1bWluYW5jZSkuICovXG4gIHZhbHVlczogbnVtYmVyW107XG4gIC8qKiBVbml0IG9mIHtAbGluayBwb3NpdGlvbnN9OiAnwrVtJyB3aGVuIHNjYWxlZCBieSB0aGUgaW1hZ2UncyBtcHAsIGVsc2UgJ3B4Jy4gKi9cbiAgdW5pdD86ICfCtW0nIHwgJ3B4JztcbiAgLyoqIFN0YWJsZSBpZCBvZiB0aGUgbGluZSBST0kgdGhpcyBwcm9maWxlIGNhbWUgZnJvbSAobXVsdGktbGluZSBzdXBwb3J0KS4gKi9cbiAgaWQ/OiBudW1iZXI7XG4gIC8qKiBDb2xvdXIgb2YgdGhlIGxpbmUgUk9JIOKAlCB0aGUgaW5zZXQgdHJhY2UgaXMgZHJhd24gaW4gdGhlIHNhbWUgY29sb3VyLiAqL1xuICBjb2xvcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcmVuZGVyL3ZpZXdwb3J0IHJvbGU6IGxvYWQgZGF0YSwgcmVuZGVyIGl0IChpbWFnZSBvciBwbG90KSwgYW5kIGhhbmRsZVxuICogem9vbSwgc3RhY2sgbmF2aWdhdGlvbiwgYW5kIHBpeGVsIHJlYWRiYWNrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhUmVuZGVyZXIge1xuICBsb2FkKGltYWdlSW5mbzogSUltYWdlSW5mbywgekluZGV4OiBudW1iZXIpOiBQcm9taXNlPGFueT47XG4gIC8qKiBgaW1hZ2VMb2FkZWRgIGlzIHRoZSBiYWNrZW5kLXNwZWNpZmljIGhhbmRsZSByZXR1cm5lZCBieSBgbG9hZCgpYCDigJRcbiAgICogIHRyZWF0IGl0IGFzIG9wYXF1ZSBhbmQgcGFzcyBpdCBzdHJhaWdodCB0aHJvdWdoLiAqL1xuICBwbG90KHBsb3REaXY6IHN0cmluZywgaW1hZ2VMb2FkZWQ6IHVua25vd24sIGltYWdlSW5mbzogSUltYWdlSW5mbywgc2NyZWVuSGVpZ2h0OiBudW1iZXIsXG4gICAgICAgcGxvdFR5cGU6IFBsb3RUeXBlLCBpblBsYWNlPzogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj47XG4gIC8qKiBAZGVwcmVjYXRlZCBQbG90bHktc3BlY2lmaWMgcmUtcmVuZGVyOyB0aGUgT1NEIGJhY2tlbmQgbm8tb3BzIGl0LiBUaGUgaG9zdFxuICAgKiAgcmUtZHJpdmVzIGBwbG90KClgIGZyb20gaXRzIGltYWdlIHN0cmVhbSBpbnN0ZWFkLiAqL1xuICByZWxvYWRBbmRQbG90KCk6IHZvaWQ7XG4gIHJlc2V0KCk6IHZvaWQ7XG4gIHJlbGF5b3V0KHRydWVJbWFnZVNpemU/OiBudW1iZXJbXSk6IHZvaWQ7XG4gIC8qKiBAZGVwcmVjYXRlZCBQbG90bHktc3BlY2lmaWMgKGF4aXMgcmVzZXQpOyB0aGUgT1NEIGJhY2tlbmQgbm8tb3BzIGl0LiBHYXRlXG4gICAqICBvbiB7QGxpbmsgVmlld2VyQ2FwYWJpbGl0aWVzfSBiZWZvcmUgY2FsbGluZy4gKi9cbiAgcmVzZXRBeGVzKCk6IHZvaWQ7XG4gIC8qKiBAZGVwcmVjYXRlZCBQbG90bHktc3BlY2lmaWMgKGF1dG9zY2FsZSk7IHRoZSBPU0QgYmFja2VuZCBuby1vcHMgaXQuIEdhdGVcbiAgICogIG9uIHtAbGluayBWaWV3ZXJDYXBhYmlsaXRpZXN9IGJlZm9yZSBjYWxsaW5nLiAqL1xuICBhdXRvc2NhbGUoKTogdm9pZDtcbiAgem9vbUluKCk6IHZvaWQ7XG4gIHpvb21PdXQoKTogdm9pZDtcbiAgc2V0RHJhZ01vZGUobW9kZTogc3RyaW5nIHwgZmFsc2UpOiB2b2lkO1xuICAvKiogU2hvdy9oaWRlIHRoZSBvdmVydmlldyBuYXZpZ2F0b3IgKHRoZSBtaW5pbWFwKS4gT3BlblNlYWRyYWdvbiBvbmx5IOKAlCBQbG90bHlcbiAgICogIG5vLW9wcyBpdCAoaXQgaGFzIG5vIG5hdmlnYXRvcikuIEFwcGxpZWQgd2hlbiB0aGUgdmlld2VyIGlzIChyZSljcmVhdGVkLCBhbmRcbiAgICogIHRvZ2dsZWQgbGl2ZSB3aGVuIG9uZSBpcyBhbHJlYWR5IG1vdW50ZWQuICovXG4gIHNldE5hdmlnYXRvclZpc2libGUodmlzaWJsZTogYm9vbGVhbik6IHZvaWQ7XG4gIC8qKiBJbWFnZSBzbW9vdGhpbmcgKGJpbGluZWFyIGludGVycG9sYXRpb24pLiBgZmFsc2VgID0gbmVhcmVzdC1uZWlnaGJvdXIsIHNvXG4gICAqICB6b29taW5nIHBhc3QgMToxIHNob3dzIGNyaXNwIHBpeGVsIGJsb2NrcyAocGl4ZWwtbGV2ZWwgaW5zcGVjdGlvbikuXG4gICAqICBPcGVuU2VhZHJhZ29uIG9ubHkg4oCUIFBsb3RseSBuby1vcHMgaXQuIEFwcGxpZWQgYXQgdmlld2VyIGNyZWF0aW9uIGFuZCBsaXZlXG4gICAqICAod2l0aCBhIHJlZHJhdykgd2hlbiBvbmUgaXMgbW91bnRlZC4gKi9cbiAgc2V0SW1hZ2VTbW9vdGhpbmdFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkO1xuXG4gIHNldFNob3dTdGFjayhzaG93c3RhY2s6IGJvb2xlYW4pOiB2b2lkO1xuICBzZXRaSW5kZXgoekluZGV4OiBudW1iZXIpOiB2b2lkO1xuICBzZXRTdGFja0xvYWRpbmcoc3RhY2tMb2FkaW5nOiBib29sZWFuKTogdm9pZDtcbiAgaXNTdGFja0xvYWRpbmcoKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgZ2V0U3RhY2tMb2FkaW5nUHJvZ3Jlc3MoKTogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICAvKiogQ2FuY2VsIGFueSBpbi1mbGlnaHQgbXVsdGktZnJhbWUgbG9hZGluZyAodm9sdW1lLWFzc2VtYmx5IC8gc3VyZmFjZSBwcmVsb2FkKSBzbyBpdCBzdG9wc1xuICAgKiAgZmV0Y2hpbmcgbW9yZSBmcmFtZXMgYW5kIGNsZWFycyB0aGUgbG9hZGluZyBzdGF0ZS4gT3B0aW9uYWwg4oCUIG9ubHkgYmFja2VuZHMgdGhhdCBzdHJlYW0gYVxuICAgKiAgei1zdGFjayAobmFwYXJpLWpzIFdlYkdQVSkgZG8gcmVhbCB3b3JrIGhlcmU7IG90aGVycyBuby1vcC4gKi9cbiAgY2FuY2VsTG9hZGluZz8oKTogdm9pZDtcblxuICBnZXRUcnVlSW1hZ2VTaXplKCk6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB8IG51bGw7XG4gIGdldEN1cnJlbnRJbWFnZSgpOiBQcm9taXNlPEltYWdlIHwgbnVsbD47XG4gIGdldERpc3BsYXllZFBpeGVsRGF0YSgpOiBQaXhlbERhdGEgfCBudWxsO1xuICAvKipcbiAgICogVGhlIHJlZ2lvbiBvZiB0aGUgb3JpZ2luYWwsIGZ1bGwtcmVzb2x1dGlvbiBpbWFnZSB0aGF0IHRoZSBwaXhlbHMgcmV0dXJuZWRcbiAgICogYnkge0BsaW5rIGdldERpc3BsYXllZFBpeGVsRGF0YX0gY3VycmVudGx5IGNvdmVyIOKAlCBgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH1gXG4gICAqIGluIGZ1bGwtaW1hZ2UgcGl4ZWwgY29vcmRpbmF0ZXMuIFdoZW4gem9vbWVkL3Bhbm5lZCBpbnRvIGEgc3ViLWFyZWEgdGhpcyBpc1xuICAgKiB0aGUgY3JvcCdzIG9yaWdpbiArIGV4dGVudDsgd2hlbiB6b29tZWQgb3V0L3Bhbm5lZCBiZXlvbmQgdGhlIGVkZ2VzLCB0aGVcbiAgICogcmVjdGFuZ2xlIG1heSBleHRlbmQgb3V0c2lkZSB0aGUgaW1hZ2UgYm91bmRzIChtYXRjaGluZyB0aGUgcGl4ZWwgcmVhZGJhY2tcbiAgICogY2FudmFzKS4gTGV0cyBhIGNvbnN1bWVyIG1hcCBkaXNwbGF5ZWQtcGl4ZWwgY29vcmRpbmF0ZXMgYmFjayB0byB0aGUgb3JpZ2luYWxcbiAgICogaW1hZ2UgdmlhIGBvcmlnaW4gKyBkaXNwbGF5ZWRQeCAqIChleHRlbnQgLyBkaXNwbGF5ZWREaW0pYC4gXG4gICAqXG4gICAqIFJldHVybnMgYG51bGxgIHdoZW4gdGhlIHZpZXdwb3J0IGlzbid0IGxhaWQgb3V0IHlldCBvciB0aGUgYmFja2VuZCBjYW4ndFxuICAgKiByZXBvcnQgaXQg4oCUIGNhbGxlcnMgc2hvdWxkIHRoZW4gZmFsbCBiYWNrIHRvIHRoZSBmdWxsLWltYWdlIHNjYWxlICh0cmVhdFxuICAgKiB0aGUgZGlzcGxheWVkIHBpeGVscyBhcyBhIGRvd25zYW1wbGUgb2YgdGhlIHdob2xlIGltYWdlKS5cbiAgICovXG4gIGdldERpc3BsYXllZFNvdXJjZVJlY3QoKTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB8IG51bGw7XG4gIGRvd25sb2FkSW1hZ2UoKTogdm9pZDtcblxuICBzZXRQbG90VHlwZShwbG90VHlwZTogUGxvdFR5cGUpOiB2b2lkO1xuICAvKiogU2V0IHRoZSBuYXBhcmkgM0QgZGVjaW1hdGUgZmFjdG9yICgxID0gZnVsbCDigKYgOCA9IOKFmykuIE9wdGlvbmFsIOKAlCBvbmx5IHRoZSBuYXBhcmktanMgV2ViR1BVXG4gICAqICBiYWNrZW5kIGhvbm9ycyBpdDsgY2hhbmdpbmcgaXQgcmUtbG9hZHMgdGhlIGN1cnJlbnQgM0QgcGxvdCBhdCB0aGUgY29hcnNlci9maW5lciBzYW1wbGluZy4gKi9cbiAgc2V0UmVzb2x1dGlvblNjYWxlPyhzY2FsZTogbnVtYmVyKTogdm9pZDtcbiAgLyoqIFRoZSBjdXJyZW50IG5hcGFyaSAzRCBkZWNpbWF0ZSBmYWN0b3IgKHRvIGluaXRpYWxpemUgdGhlIFJlc29sdXRpb24gY29udHJvbCkuIE9wdGlvbmFsLiAqL1xuICBnZXRSZXNvbHV0aW9uU2NhbGU/KCk6IG51bWJlcjtcbiAgLyoqIEBkZXByZWNhdGVkIFVzZSBgZ2V0U3VyZmFjZTNkQ29udHJvbHMoKWAg4oCUIDNEIHNjZW5lIGNvbnRyb2xzIG9ubHkgZXhpc3Qgb25cbiAgICogIGEgYmFja2VuZCB0aGF0IHJlbmRlcnMgM0QgcGxvdCB0eXBlczsgdGhpcyBtZXRob2Qgc2lsZW50bHkgbm8tb3BzIG9uIE9TRC4gKi9cbiAgc2V0U3VyZmFjZURyYWdNb2RlKG1vZGU6IHN0cmluZyk6IHZvaWQ7XG4gIC8qKiBAZGVwcmVjYXRlZCBVc2UgYGdldFN1cmZhY2UzZENvbnRyb2xzKClgIOKAlCBzZWUge0BsaW5rIHNldFN1cmZhY2VEcmFnTW9kZX0uICovXG4gIHJlc2V0U3VyZmFjZUNhbWVyYSgpOiB2b2lkO1xuXG4gIGdldEF1dG9zY2FsZUV2ZW50KCk6IE9ic2VydmFibGU8YW55PjtcblxuICAvKiogUGxvdCB0eXBlcyB0aGlzIGJhY2tlbmQgYWR2ZXJ0aXNlcyAoZHJpdmVzIHRoZSBVSSBzZWxlY3RvcikuICovXG4gIGdldFBsb3RUeXBlRGVzY3JpcHRvcnMoKTogUGxvdFR5cGVEZXNjcmlwdG9yW107XG5cbiAgLyoqIEludGVuc2l0eSBhbG9uZyB0aGUgbGluZSBST0lzOyBlbWl0cyB0aGUgZnVsbCBzZXQgYXMgYW55IGxpbmUgaXMgYWRkZWQsXG4gICAqICBtb3ZlZCwgb3IgcmVtb3ZlZCAoUGxvdFR5cGUuTElORSkuIE9uZSBlbnRyeSBwZXIgbGluZSBST0kuICovXG4gIGdldEludGVuc2l0eVByb2ZpbGUkKCk6IE9ic2VydmFibGU8SW50ZW5zaXR5UHJvZmlsZVtdPjtcblxuICAvKiogUmVuZGVyIHRoZSBmbG9hdGluZyBpbnRlbnNpdHktcHJvZmlsZSBpbnNldCBjaGFydCBpbnRvIGBkaXZJZGAgZnJvbSB0aGVcbiAgICogIGdpdmVuIHByb2ZpbGVzIChvbmUgdHJhY2UgcGVyIGxpbmUgUk9JLCBjb2xvdXJlZCB0byBtYXRjaCBpdHMgbGluZSkuXG4gICAqICBPd25lZCBieSB0aGUgYmFja2VuZCBzbyBjb25zdW1lcnMgbmV2ZXIgcmVhY2ggYSBjaGFydGluZyBsaWJyYXJ5IGRpcmVjdGx5LiAqL1xuICByZW5kZXJJbnRlbnNpdHlJbnNldChkaXZJZDogc3RyaW5nLCBwcm9maWxlczogSW50ZW5zaXR5UHJvZmlsZVtdKTogdm9pZDtcbn1cblxuLyoqIFJlZ2lvbi9zaGFwZSBzdGF0ZTogQ1JVRCwgc2VsZWN0aW9uLCBjbGFzc2lmaWNhdGlvbiBjb2xvdXJzLCBHZW9KU09OIEkvTy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJlZ2lvblN0b3JlIHtcbiAgc2V0UmVnaW9ucyhyZWdpb25zOiBSZWdpb25bXSwgc2hvd1JlZ2lvbkxhYmVsPzogYm9vbGVhbiwgaXNSZWdpb25TYXZlT24/OiBib29sZWFuLFxuICAgICAgICAgICAgIGZpbGxDb2xvcj86IHN0cmluZywgYXBwZW5kPzogYm9vbGVhbik6IHZvaWQ7XG4gIC8qKiBGcmFtZXdvcmstbmV1dHJhbCBhY2Nlc3NvciDigJQgdGhlIGNhbm9uaWNhbCB3YXkgdG8gcmVhZCBjdXJyZW50IHJlZ2lvbnMuICovXG4gIGdldFJlZ2lvbnMoKTogUmVnaW9uW107XG4gIGdldFJlZ2lvblBvbHlnb25zKCk6IGFueVtdO1xuICBnZXRSZWdpb25VcGRhdGVFdmVudCgpOiBPYnNlcnZhYmxlPGFueVtdPjtcblxuICBzZXRTZWxlY3RlZFNoYXBlSW5kaWNlcyhpbmRpY2VzOiBudW1iZXJbXSk6IHZvaWQ7XG4gIGdldFNlbGVjdGVkU2hhcGVJbmRpY2VzJCgpOiBPYnNlcnZhYmxlPG51bWJlcltdPjtcbiAgLyoqIFNlbGVjdCBhIHNwZWNpZmljIHJlZ2lvbiAoYnkgaWRlbnRpdHkpLCBoaWdobGlnaHRpbmcgaXQgb24gd2hpY2hldmVyXG4gICAqICBiYWNrZW5kIGlzIHJlbmRlcmluZyDigJQgUGxvdGx5IHNldHMgaXRzIGFjdGl2ZS1zaGFwZSBoYW5kbGVzLCBPcGVuU2VhZHJhZ29uXG4gICAqICBoaWdobGlnaHRzIHRoZSBTVkcgZWxlbWVudC4gTm8tb3AgaWYgdGhlIHJlZ2lvbiBpc24ndCBpbiB0aGUgc3RvcmUuICovXG4gIHNlbGVjdFJlZ2lvbihyZWdpb246IFJlZ2lvbik6IHZvaWQ7XG4gIGRlbGV0ZUFjdGl2ZVNoYXBlKCk6IHZvaWQ7XG5cbiAgZ2V0U2hvd1NoYXBlTGFiZWwoKTogYm9vbGVhbjtcbiAgZ2V0U2hhcGVDb2xvcigpOiBzdHJpbmc7XG4gIGdldEZpbGxDb2xvcigpOiBzdHJpbmc7XG4gIGdldENsYXNzaWZpY2F0aW9uQ29sb3JzKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gIHNldENsYXNzaWZpY2F0aW9uQ29sb3IobGFiZWw6IHN0cmluZywgY29sb3I6IHN0cmluZyk6IHZvaWQ7XG5cbiAgcGxvdFByZXZpb3VzU2hhcGVzKCk6IHZvaWQ7XG4gIHNldFByZXZpb3VzU2hhcGVzKHNoYXBlczogYW55W10pOiB2b2lkO1xuICBnZXRQcmV2aW91c1NoYXBlcygpOiBhbnlbXTtcblxuICAvKiogVW5kbyB0aGUgbW9zdCByZWNlbnQgcmVnaW9uIGFjdGlvbiAoaml0LXVpIzg1KS4gUmVzdG9yZXMgdGhlIHJlZ2lvbiBzZXQgdG9cbiAgICogIHRoZSBzdGF0ZSBiZWZvcmUgdGhhdCBhY3Rpb247IHVwIHRvIGEgc21hbGwgZml4ZWQgZGVwdGggKDEwKSBpcyByZXRhaW5lZCxcbiAgICogIHNvIGl0IGNhbiBiZSBpbnZva2VkIHVwIHRvIDEwIHRpbWVzIGluIGEgcm93LiBOby1vcCB3aGVuIG5vdGhpbmcgaXMgbGVmdCB0b1xuICAgKiAgdW5kby4gKi9cbiAgdW5kbygpOiB2b2lkO1xuICAvKiogUmUtYXBwbHkgdGhlIG1vc3QgcmVjZW50bHkgdW5kb25lIHJlZ2lvbiBhY3Rpb24uIE5vLW9wIHdoZW4gdGhlcmUnc1xuICAgKiAgbm90aGluZyB0byByZWRvIChhbnkgZnJlc2ggcmVnaW9uIGFjdGlvbiBjbGVhcnMgdGhlIHJlZG8gZnV0dXJlKS4gKi9cbiAgcmVkbygpOiB2b2lkO1xuICAvKiogU3luY2hyb25vdXMgcmVhZCBvZiB7QGxpbmsgZ2V0Q2FuVW5kbyR9LiAqL1xuICBjYW5VbmRvKCk6IGJvb2xlYW47XG4gIC8qKiBTeW5jaHJvbm91cyByZWFkIG9mIHtAbGluayBnZXRDYW5SZWRvJH0uICovXG4gIGNhblJlZG8oKTogYm9vbGVhbjtcbiAgLyoqIEVtaXRzIHdoZXRoZXIgYW4gdW5kbyBzdGVwIGlzIGN1cnJlbnRseSBhdmFpbGFibGUg4oCUIGRyaXZlcyB0aGUgdG9vbGJhclxuICAgKiAgVW5kbyBidXR0b24ncyBlbmFibGVkIChncmV5ZWQtb3V0KSBzdGF0ZS4gKi9cbiAgZ2V0Q2FuVW5kbyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgLyoqIEVtaXRzIHdoZXRoZXIgYSByZWRvIHN0ZXAgaXMgY3VycmVudGx5IGF2YWlsYWJsZSDigJQgZHJpdmVzIHRoZSB0b29sYmFyXG4gICAqICBSZWRvIGJ1dHRvbidzIGVuYWJsZWQgKGdyZXllZC1vdXQpIHN0YXRlLiAqL1xuICBnZXRDYW5SZWRvJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAvKiogQ2xlYXIgdGhlIHVuZG8vcmVkbyBoaXN0b3J5IChlLmcuIG9uIGltYWdlIGxvYWQvc3dpdGNoKS4gKi9cbiAgcmVzZXRVbmRvSGlzdG9yeSgpOiB2b2lkO1xuXG4gIGltcG9ydFJlZ2lvbnMoZ2VvSnNvblN0cjogc3RyaW5nKTogUmVnaW9uW107XG4gIGV4cG9ydFJlZ2lvbnMocmVnaW9uczogUmVnaW9uW10pOiB2b2lkO1xuICBnZXRHZW9Kc29uU3RyaW5nKHJlZ2lvbnM6IFJlZ2lvbltdKTogc3RyaW5nO1xuXG4gIC8qKiBCZWdpbiBhIHBlci1zbGljZSB6LXN0YWNrIHJlZ2lvbiBzZXNzaW9uIChqaXQtdWkjOTMpLiBgc2xpY2VzYCBtYXBzIGVhY2hcbiAgICogIHplcm8tYmFzZWQgc2xpY2UgaW5kZXggdG8gdGhhdCBzbGljZSdzIHJlZ2lvbnM7IHRoZSBzdG9yZSBzaG93cyBgaW5pdGlhbFpgXG4gICAqICBsaXZlIHdoaWxlIGhvbGRpbmcgdGhlIHJlc3QsIHNvIHNjcnViYmluZyBzd2FwcyByZWdpb24gc2V0cyBhbmQgZWRpdHMgb24gYVxuICAgKiAgc2xpY2UgcGVyc2lzdC4gYHNhdmVMYXlvdXRgIHJlY29yZHMgaG93IHRoZSBzdGFjayBwZXJzaXN0cyDigJQgYGNvbWJpbmVkYFxuICAgKiAgKG9uZSB6LWluZGV4ZWQgZ2VvanNvbiwgc2luZ2xlLWZpbGUgei1zdGFjaykgb3IgYHBlci1zbGljZS1maWxlYCAoZm9sZGVyXG4gICAqICBzdGFjaykuIFNlZSB7QGxpbmsgc2V0RGlzcGxheVNsaWNlfSwge0BsaW5rIGdldFNsaWNlUmVnaW9uc30uICovXG4gIGVudGVyU3RhY2tNb2RlKHNsaWNlczogTWFwPG51bWJlciwgUmVnaW9uW10+LCBpbml0aWFsWj86IG51bWJlcixcbiAgICAgICAgICAgICAgICAgc2F2ZUxheW91dD86ICdjb21iaW5lZCcgfCAncGVyLXNsaWNlLWZpbGUnKTogdm9pZDtcbiAgLyoqIEVuZCB0aGUgcGVyLXNsaWNlIHNlc3Npb24gKHNpbmdsZS1wbGFuZSBpbWFnZSwgb3IgdGhlIHN0YWNrIHdhcyBjbG9zZWQpLiAqL1xuICBleGl0U3RhY2tNb2RlKCk6IHZvaWQ7XG4gIC8qKiBUcnVlIHdoaWxlIGEgcGVyLXNsaWNlIHotc3RhY2sgc2Vzc2lvbiBpcyBhY3RpdmUuICovXG4gIGlzU3RhY2tNb2RlKCk6IGJvb2xlYW47XG4gIC8qKiBIb3cgdGhlIGN1cnJlbnQgc3RhY2sgcGVyc2lzdHMgdG8gZGlzayAoaml0LXVpIzkzKS4gKi9cbiAgZ2V0U3RhY2tTYXZlTGF5b3V0KCk6ICdjb21iaW5lZCcgfCAncGVyLXNsaWNlLWZpbGUnO1xuICAvKiogU3dhcCB0aGUgbGl2ZSByZWdpb24gc2V0IHRvIHNsaWNlIGB6YCAoc3RhY2sgbW9kZSBvbmx5KSwgY2FwdHVyaW5nIHRoZVxuICAgKiAgY3VycmVudCBzbGljZSdzIGVkaXRzIGZpcnN0LiBDYWxsZWQgb24gZXZlcnkgY29tbWl0dGVkIHNsaWNlIHNjcnViLiAqL1xuICBzZXREaXNwbGF5U2xpY2UoejogbnVtYmVyKTogdm9pZDtcbiAgLyoqIEV2ZXJ5IHNsaWNlJ3MgcmVnaW9ucyBmb3Igc2F2ZS9leHBvcnQsIGVhY2ggdGFnZ2VkIHdpdGggaXRzIHplcm8tYmFzZWRcbiAgICogIHtAbGluayBSZWdpb24uen07IHRoZSBmbGF0IHNldCBvdXRzaWRlIHN0YWNrIG1vZGUuICovXG4gIGdldFNsaWNlUmVnaW9ucygpOiBSZWdpb25bXTtcbiAgLyoqIFNsaWNlcyB0byB3cml0ZSBvbiBhIHBlci1zbGljZS1maWxlIHNhdmUgKGZvbGRlciBzdGFjaywgaml0LXVpIzkzKTogZWFjaFxuICAgKiAgc2xpY2Ugd2l0aCByZWdpb25zLCBwbHVzIHNsaWNlcyBjbGVhcmVkIHNpbmNlIGxvYWQgKGVtcHR5LCB0byBvdmVyd3JpdGUpLlxuICAgKiAgS2V5ZWQgYnkgemVyby1iYXNlZCBzbGljZSBpbmRleDsgcmVnaW9ucyB0YWdnZWQgd2l0aCB0aGVpciB6LiAqL1xuICBnZXRTdGFja1NhdmVTbGljZXMoKTogTWFwPG51bWJlciwgUmVnaW9uW10+O1xufVxuXG4vKiogT24tY2FudmFzIHRvb2wgbW9kZXMgKHdhbmQsIGJydXNoLCB2ZXJ0ZXggZXJhc2VyLCB6b29tLXRvLWJveCkuICovXG5leHBvcnQgaW50ZXJmYWNlIElUb29sQ29udHJvbGxlciB7XG4gIHNldFdhbmRNb2RlKGFjdGl2ZTogYm9vbGVhbiwgb3B0aW9ucz86IElXYW5kT3B0aW9ucyk6IHZvaWQ7XG4gIHNldFdhbmRPcHRpb25zKG9wdGlvbnM6IElXYW5kT3B0aW9ucyk6IHZvaWQ7XG4gIGNsZWFyQWN0aXZlV2FuZFJlZ2lvbigpOiB2b2lkO1xuICAvKiogQnJ1c2ggcmVnaW9uIHRvb2wuIGBzaXplYCAobWF0cml4LXBpeGVsIGRpYW1ldGVyKSBzaXplcyB0aGUgcGFpbnRlZCBkaXNjLiAqL1xuICBzZXRCcnVzaE1vZGUoYWN0aXZlOiBib29sZWFuLCBvcHRpb25zPzogSUJydXNoT3B0aW9ucyk6IHZvaWQ7XG4gIHNldEJydXNoT3B0aW9ucyhvcHRpb25zOiBJQnJ1c2hPcHRpb25zKTogdm9pZDtcbiAgc2V0VmVydGV4RXJhc2VyTW9kZShhY3RpdmU6IGJvb2xlYW4pOiB2b2lkO1xuICBzZXRWZXJ0ZXhFcmFzZXJSYWRpdXMocmFkaXVzOiBudW1iZXIpOiB2b2lkO1xuICBzZXRab29tVG9Cb3hNb2RlKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQ7XG4gIC8qKiBCb3gtcHJvbXB0ZWQgU0FNIHNlZ21lbnRhdGlvbjogc2VnbWVudCBldmVyeSByZWN0YW5nbGUgcmVnaW9uIGludG8gbWFza3MuXG4gICAqICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgbWFzayByZWdpb25zIGFkZGVkLiAoaml0LXVpIzkwKSAqL1xuICBzZWdtZW50UmVjdGFuZ2xlcygpOiBQcm9taXNlPG51bWJlcj47XG4gIC8qKiBDZWxscG9zZS1vbi1jcm9wOiBjbGllbnQgc2xpZGUtY3JvcCBlYWNoIHJlY3RhbmdsZSBhbmQgc2VnbWVudCBjZWxscyBpbiBpdFxuICAgKiAgKGNlbGxwb3NlLVNBTSB2aWEgdGhlIGhvc3QncyBDRUxMX1NFR01FTlRFUikuIFJldHVybnMgcmVnaW9ucyBhZGRlZC4gKi9cbiAgc2VnbWVudFJlY3RhbmdsZXNDZWxscG9zZSgpOiBQcm9taXNlPG51bWJlcj47XG4gIC8qKiBDaG9vc2UgdGhlIHJlZ2lzdGVyZWQgU0FNIG1vZGVsIHRoZSBzZWdtZW50IHRvb2xzIHVzZSAoaml0LXVpIzkwIFAxKS4gKi9cbiAgc2V0U2FtTW9kZWwoaWQ6IHN0cmluZyk6IHZvaWQ7XG4gIC8qKiBUb2dnbGUgdGhlIGludGVyYWN0aXZlIFNBTSBwb2ludC1wcm9tcHQgdG9vbCAoY2xpY2sgPSArcG9pbnQsIFNoaWZ0ID0gLSkuICovXG4gIHNldFNhbVBvaW50TW9kZShhY3RpdmU6IGJvb2xlYW4pOiB2b2lkO1xuICAvKiogRmluYWxpc2UgLyBkaXNjYXJkIHRoZSBpbi1wcm9ncmVzcyBTQU0gcG9pbnQgb2JqZWN0LiAqL1xuICBjb21taXRTYW1Qb2ludHMoKTogdm9pZDtcbiAgY2xlYXJTYW1Qb2ludHMoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBDb250cm9scyBzcGVjaWZpYyB0byB0aGUgSVNPU1VSRkFDRSBwbG90IHR5cGUuIE9wdGlvbmFsIGFuZCBjYXBhYmlsaXR5LWdhdGVkXG4gKiAoYFZpZXdlckZlYXR1cmUuSXNvc3VyZmFjZWApOiBvbmx5IGEgYmFja2VuZCB0aGF0IHJlbmRlcnMgaXNvc3VyZmFjZXMgZXhwb3Nlc1xuICogaXQsIHZpYSBgSVZpc3VhbGl6ZXIuZ2V0SXNvc3VyZmFjZUNvbnRyb2xzKClgLiBLZXB0IG9mZiB0aGUgYWx3YXlzLW9uXG4gKiBjb250cmFjdCBzbyBjb25zdW1lcnMgbmV2ZXIgY2FsbCBhIGNvbnRyb2wgdGhhdCdzIG1lYW5pbmdsZXNzIGZvciB0aGUgY3VycmVudFxuICogcGxvdCB0eXBlIC8gYmFja2VuZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSXNvc3VyZmFjZUNvbnRyb2xzIHtcbiAgLyoqIExpdmUtdXBkYXRlIHRoZSBpc29zdXJmYWNlIGludGVuc2l0eSBiYW5kIFtpc29taW4sIGlzb21heF0gb3ZlciAw4oCTMjU1LiAqL1xuICBzZXRJc29SYW5nZShpc29NaW46IG51bWJlciwgaXNvTWF4OiBudW1iZXIpOiB2b2lkO1xufVxuXG4vKipcbiAqIENvbnRyb2xzIHNwZWNpZmljIHRvIHRoZSAzRCBwbG90IHR5cGVzIChTVVJGQUNFIC8gU0NBVFRFUjNEIC8gSVNPU1VSRkFDRVxuICogc2NlbmVzKS4gQ2FwYWJpbGl0eS1nYXRlZCBsaWtlIHtAbGluayBJSXNvc3VyZmFjZUNvbnRyb2xzfTogb25seSBhIGJhY2tlbmRcbiAqIHRoYXQgcmVuZGVycyAzRCBzY2VuZXMgZXhwb3NlcyBpdCwgdmlhIGBJVmlzdWFsaXplci5nZXRTdXJmYWNlM2RDb250cm9scygpYCDigJRcbiAqIHRoZSBkZXByZWNhdGVkIHRvcC1sZXZlbCBgc2V0U3VyZmFjZURyYWdNb2RlYC9gcmVzZXRTdXJmYWNlQ2FtZXJhYCBzaWxlbnRseVxuICogbm8tb3Agb24gMkQtb25seSBiYWNrZW5kcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU3VyZmFjZTNkQ29udHJvbHMge1xuICAvKiogU3dpdGNoIHRoZSAzRCBzY2VuZSBpbnRlcmFjdGlvbiBtb2RlIChvcmJpdCAvIHR1cm50YWJsZSAvIHBhbiAvIHpvb20pLiAqL1xuICBzZXRTdXJmYWNlRHJhZ01vZGUobW9kZTogc3RyaW5nKTogdm9pZDtcbiAgLyoqIFJlc2V0IHRoZSAzRCBzY2VuZSBjYW1lcmEgdG8gaXRzIGRlZmF1bHQgZXllIHBvc2l0aW9uLiAqL1xuICByZXNldFN1cmZhY2VDYW1lcmEoKTogdm9pZDtcbiAgLyoqIFRvZ2dsZSB0aGUgM0QgY29vcmRpbmF0ZS1heGVzIC8gc2NhbGUgZ2l6bW8gb24vb2ZmLiBPcHRpb25hbCDigJQgb25seSB0aGUgbmFwYXJpLWpzIFdlYkdQVVxuICAgKiAgdm9sdW1lL2lzb3N1cmZhY2UgYmFja2VuZCByZW5kZXJzIG9uZSAoaml0LXVpIzEwMikuICovXG4gIHNldEF4ZXNWaXNpYmxlPyh2aXNpYmxlOiBib29sZWFuKTogdm9pZDtcbiAgLyoqIFdoZXRoZXIgdGhlIGF4ZXMgZ2l6bW8gaXMgY3VycmVudGx5IHNob3duIChmb3IgaW5pdGlhbGl6aW5nIHRoZSB0b2dnbGUgVUkpLiBPcHRpb25hbC4gKi9cbiAgYXhlc1Zpc2libGU/KCk6IGJvb2xlYW47XG4gIC8qKiBSZW5kZXIgdGhlIHN1cmZhY2UgYXMgYSB3aXJlZnJhbWUgKGVkZ2VzKSBpbnN0ZWFkIG9mIGEgZmlsbGVkIHN1cmZhY2UuIE9wdGlvbmFsIOKAlCBvbmx5IHRoZVxuICAgKiAgbmFwYXJpLWpzIFdlYkdQVSBzdXJmYWNlIGJhY2tlbmQgc3VwcG9ydHMgaXQgKGppdC11aSMxMDIpLiAqL1xuICBzZXRXaXJlZnJhbWU/KG9uOiBib29sZWFuKTogdm9pZDtcbiAgLyoqIFdoZXRoZXIgdGhlIHN1cmZhY2UgaXMgY3VycmVudGx5IGRyYXduIGFzIGEgd2lyZWZyYW1lIChmb3IgaW5pdGlhbGl6aW5nIHRoZSB0b2dnbGUgVUkpLiAqL1xuICB3aXJlZnJhbWU/KCk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udHJvbHMgc3BlY2lmaWMgdG8gdGhlIExJTkUgKGludGVuc2l0eS1wcm9maWxlKSBwbG90IHR5cGUuIENhcGFiaWxpdHktZ2F0ZWRcbiAqIGxpa2Uge0BsaW5rIElJc29zdXJmYWNlQ29udHJvbHN9OiBvbmx5IGEgYmFja2VuZCB0aGF0IHJlbmRlcnMgdGhlIGxpbmUtUk9JIC9cbiAqIGluc2V0IGV4cG9zZXMgaXQsIHZpYSBgSVZpc3VhbGl6ZXIuZ2V0SW50ZW5zaXR5Q29udHJvbHMoKWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUludGVuc2l0eUNvbnRyb2xzIHtcbiAgLyoqIEFkZCBhbm90aGVyIGxpbmUgUk9JIChuZXh0IGJyaWdodCBwYWxldHRlIGNvbG91cikgYW5kIGl0cyBpbnNldCB0cmFjZS5cbiAgICogIFJldHVybnMgdGhlIGNyZWF0ZWQgcmVnaW9uIHNvIHRoZSBjYWxsZXIgY2FuIHNlbGVjdCBpdCBvbiB0aGUgYWN0aXZlXG4gICAqICBiYWNrZW5kLCBvciBudWxsIGlmIG5vIGltYWdlIGV4dGVudCBpcyBrbm93biB5ZXQuICovXG4gIGFkZFByb2ZpbGVMaW5lKCk6IFJlZ2lvbiB8IG51bGw7XG59XG5cbi8qKiBBIGNhdGVnb3JpY2FsIGNvbHVtbiByZXNvbHZlZCBmb3IgY2hhcnRpbmc6IGxhYmVscywgY29kZXMgYW5kIG1hcCBjb2xvdXJzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcGF0aWFsQ2F0ZWdvcmljYWxWaWV3IHtcbiAgbmFtZTogc3RyaW5nO1xuICBjYXRlZ29yaWVzOiBzdHJpbmdbXTtcbiAgLyoqIGAjcnJnZ2JiYCBwZXIgY2F0ZWdvcnksIGluZGV4LWFsaWduZWQgd2l0aCB7QGxpbmsgY2F0ZWdvcmllc30uICovXG4gIGNvbG9yczogc3RyaW5nW107XG4gIC8qKiBQZXItb2JzZXJ2YXRpb24gY2F0ZWdvcnkgaW5kZXgsIG9yIGBOT19DQVRFR09SWWAuICovXG4gIGNvZGVzOiBVaW50MTZBcnJheTtcbn1cblxuLyoqXG4gKiBDb250cm9scyBmb3IgdGhlIFNQQVRJQUxfT01JQ1MgcGxvdCB0eXBlOiB3aGF0IHRoZSBvYnNlcnZhdGlvbiBtYXJrZXJzIGFyZVxuICogY29sb3VyZWQgYnksIGFuZCBob3cgdGhleSBhcmUgZHJhd24uIENhcGFiaWxpdHktZ2F0ZWQgbGlrZVxuICoge0BsaW5rIElJc29zdXJmYWNlQ29udHJvbHN9IOKAlCBgZ2V0U3BhdGlhbENvbnRyb2xzKClgIHJldHVybnMgbnVsbCB1bmxlc3MgYVxuICogaG9zdCBoYXMgYm91bmQgYFNQQVRJQUxfREFUQV9QT1JUYC5cbiAqXG4gKiBUaGUgdmlldyBzdGF0ZSBpcyBiYWNrZW5kLW5ldXRyYWwgKGl0IGxpdmVzIGluIHRoZSBzaGFyZWQgc3RvcmUsIGxpa2UgdGhlXG4gKiBjb2xvcm1hcCksIHNvIHRoZXNlIGNvbnRyb2xzIHdvcmsgd2hpY2hldmVyIGJhY2tlbmQgaXMgb24gc2NyZWVuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTcGF0aWFsQ29udHJvbHMge1xuICAvKiogVGhlIGRhdGFzZXQgYmVpbmcgdmlzdWFsaXplZCwgb3IgbnVsbC4gRHJpdmVzIHRoZSBjb2x1bW4vZ2VuZSBwaWNrZXJzIGFuZFxuICAgKiAgdGhlIGxlZ2VuZC4gKi9cbiAgZ2V0RGF0YXNldCQoKTogT2JzZXJ2YWJsZTxTcGF0aWFsRGF0YXNldCB8IG51bGw+O1xuICAvKiogQ3VycmVudCBkaXNwbGF5IHN0YXRlIChjb2xvdXIgc291cmNlLCBwb2ludCBzY2FsZSwgb3BhY2l0eSwgc2NhbGluZykuICovXG4gIGdldFZpZXdTdGF0ZSQoKTogT2JzZXJ2YWJsZTxTcGF0aWFsVmlld1N0YXRlPjtcbiAgLyoqIFN5bmNocm9ub3VzIHJlYWQsIGZvciBzZWVkaW5nIGEgY29udHJvbCdzIGluaXRpYWwgdmFsdWUuICovXG4gIHZpZXdTdGF0ZSgpOiBTcGF0aWFsVmlld1N0YXRlO1xuICAvKiogUGF0Y2ggdGhlIGRpc3BsYXkgc3RhdGU7IHRoZSBtYXJrZXJzIHJlYnVpbGQgd2l0aG91dCByZW1vdW50aW5nIHRoZSBzY2VuZS4gKi9cbiAgc2V0Vmlld1N0YXRlKHBhcnRpYWw6IFBhcnRpYWw8U3BhdGlhbFZpZXdTdGF0ZT4pOiB2b2lkO1xuICAvKiogQ29sb3VyIGJ5IGFuIGFubm90YXRpb24gY29sdW1uLiBSZWplY3RzIGZvciBhbiB1bmtub3duIGNvbHVtbi4gKi9cbiAgY29sb3JCeUNvbHVtbihuYW1lOiBzdHJpbmcpOiB2b2lkO1xuICAvKiogQ29sb3VyIGJ5IGEgZ2VuZTsgaXRzIHZlY3RvciBpcyBmZXRjaGVkIG9uIGRlbWFuZC4gKi9cbiAgY29sb3JCeUZlYXR1cmUobmFtZTogc3RyaW5nKTogdm9pZDtcbiAgLyoqIENsZWFyIHRoZSBjb2xvdXIgc291cmNlIOKAlCBldmVyeSBvYnNlcnZhdGlvbiByZW5kZXJzIGluIG9uZSBuZXV0cmFsIGNvbG91ci4gKi9cbiAgY2xlYXJDb2xvckJ5KCk6IHZvaWQ7XG4gIC8qKiBUeXBlYWhlYWQgb3ZlciBmZWF0dXJlIG5hbWVzLCBmb3IgZGF0YXNldHMgdG9vIHdpZGUgdG8gaW5saW5lIHRoZSBsaXN0LiAqL1xuICBzZWFyY2hGZWF0dXJlcyhxdWVyeTogc3RyaW5nLCBsaW1pdD86IG51bWJlcik6IFByb21pc2U8c3RyaW5nW10+O1xuICAvKiogUGVyLWNhdGVnb3J5IGRpc3BsYXkgY29sb3VycyBmb3IgYSBjYXRlZ29yaWNhbCBjb2x1bW4sIGluZGV4LWFsaWduZWQgd2l0aFxuICAgKiAgaXRzIGBjYXRlZ29yaWVzYCDigJQgdGhlIGxlZ2VuZCdzIHN3YXRjaGVzLCByZXNvbHZlZCB0aGUgc2FtZSB3YXkgdGhlXG4gICAqICByZW5kZXJlciByZXNvbHZlcyB0aGVtIHNvIHRoZSB0d28gY2Fubm90IGRpc2FncmVlLiAqL1xuICBjYXRlZ29yeUNvbG9ycyhuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPjtcblxuICAvLyDilIDilIAgdmFsdWVzLCBmb3IgdGhlIDEtRCBjaGFydHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIC8qKlxuICAgKiBUaGUgdmFsdWVzIGJlaGluZCBhIGNvbG91ciBzb3VyY2UsIGluZGV4LWFsaWduZWQgd2l0aCB0aGUgb2JzZXJ2YXRpb25zLlxuICAgKiBSZWplY3RzIGZvciBhIGNhdGVnb3JpY2FsIGNvbHVtbiDigJQgdGhlcmUgaXMgbm90aGluZyBjb250aW51b3VzIHRvIGNoYXJ0LlxuICAgKi9cbiAgY29udGludW91c1ZhbHVlcyhzb3VyY2U6IFNwYXRpYWxDb2xvckJ5KTogUHJvbWlzZTxGbG9hdDMyQXJyYXk+O1xuICAvKipcbiAgICogQSBjYXRlZ29yaWNhbCBjb2x1bW4ncyBjYXRlZ29yaWVzLCBwZXItb2JzZXJ2YXRpb24gY29kZXMgYW5kIGRpc3BsYXlcbiAgICogY29sb3VycyDigJQgZXZlcnl0aGluZyBhIGdyb3VwZWQgdmlvbGluL2JveCBuZWVkcywgd2l0aCB0aGUgY29sb3VycyByZXNvbHZlZFxuICAgKiB0aGUgc2FtZSB3YXkgdGhlIG1hcCByZXNvbHZlcyB0aGVtLlxuICAgKi9cbiAgY2F0ZWdvcmljYWxWaWV3KGNvbHVtbjogc3RyaW5nKTogUHJvbWlzZTxTcGF0aWFsQ2F0ZWdvcmljYWxWaWV3PjtcblxuICAvKipcbiAgICogT25lIGVtYmVkZGluZydzIGNvb3JkaW5hdGVzIOKAlCBhIFVNQVAsIHQtU05FIG9yIFBDQSBwbGFuZSBvdmVyIHRoZSBzYW1lIG9ic2VydmF0aW9ucy5cbiAgICpcbiAgICogT3B0aW9uYWwsIGFuZCBhYnNlbnQgd2hlbiB0aGUgZGF0YSBzb3VyY2Ugc2VydmVzIG5vbmU6IGBTcGF0aWFsRGF0YVBvcnQuZ2V0RW1iZWRkaW5nYFxuICAgKiBpcyBpdHNlbGYgb3B0aW9uYWwsIHNvIGEgcGFuZWwgbXVzdCBiZSBhYmxlIHRvIGFzayB3aGV0aGVyIHRoaXMgZXhpc3RzIHJhdGhlciB0aGFuXG4gICAqIGNhbGxpbmcgaXQgYW5kIGNhdGNoaW5nLlxuICAgKi9cbiAgZ2V0RW1iZWRkaW5nPyhuYW1lOiBzdHJpbmcpOiBQcm9taXNlPFNwYXRpYWxFbWJlZGRpbmc+O1xuICAvKiogTmFtZXMgb2YgdGhlIGNhdGVnb3JpY2FsIGNvbHVtbnMgYXZhaWxhYmxlIHRvIGdyb3VwIGJ5LiAqL1xuICBjYXRlZ29yaWNhbENvbHVtbnMoKTogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgeiBwb3NpdGlvbnMgb2YgdGhlIHNlY3Rpb25zIHRoZSBkYXRhc2V0IHdhcyBpbWFnZWQgYXQsIGFzY2VuZGluZyDigJQgb3JcbiAgICogbnVsbCB3aGVuIGl0cyB6IGlzIGNvbnRpbnVvdXMgcmF0aGVyIHRoYW4gc2VjdGlvbmVkIChzbyB0aGVyZSBhcmUgbm8gc2VjdGlvbnNcbiAgICogdG8gb2ZmZXIpIG9yIHdoZW4gdGhlcmUgaXMgbm8gZGF0YXNldC5cbiAgICpcbiAgICogTGV0cyBhIHBhbmVsIG9mZmVyIFwib25lIHNlY3Rpb24gYXQgYSB0aW1lXCIgZm9yIHRoZSAzRCBjbG91ZCBvbmx5IHdoZXJlIHRoYXRcbiAgICogbWVhbnMgc29tZXRoaW5nLCBhbmQgbGFiZWwgdGhlIGNob3NlbiBvbmUuIFNjYW5uZWQgb25jZSBwZXIgZGF0YXNldC5cbiAgICovXG4gIHNhbXBsZWRTZWN0aW9ucygpOiBGbG9hdDMyQXJyYXkgfCBudWxsO1xuXG4gIC8vIOKUgOKUgCBzZWxlY3Rpb24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIC8qKiBUaGUgY3VycmVudCBzZWxlY3Rpb24uIEVtcHR5IG1lYW5zIFwibm90aGluZyBzZWxlY3RlZFwiLCBpbiB3aGljaCBjYXNlIHRoZVxuICAgKiAgd2hvbGUgdGlzc3VlIHJlbmRlcnMgbm9ybWFsbHkgcmF0aGVyIHRoYW4gZXZlcnl0aGluZyBiZWluZyBtdXRlZC4gKi9cbiAgZ2V0U2VsZWN0aW9uJCgpOiBPYnNlcnZhYmxlPFNwYXRpYWxTZWxlY3Rpb25NYXNrPjtcbiAgLyoqXG4gICAqIFNlbGVjdCBldmVyeSBvYnNlcnZhdGlvbiBpbnNpZGUgdGhlIGN1cnJlbnRseS1kcmF3biByZWdpb25zICh0aGVpciB1bmlvbikuXG4gICAqIFJldXNlcyB0aGUgZXhpc3RpbmcgUk9JIHRvb2xzIOKAlCByZWN0YW5nbGUsIHBvbHlnb24sIGZyZWVoYW5kLCB3YW5kLCBicnVzaCDigJRcbiAgICogc28gdGhlcmUgaXMgbm8gc2VwYXJhdGUgbWFycXVlZSB0byBsZWFybi4gUmV0dXJucyBob3cgbWFueSB3ZXJlIHNlbGVjdGVkLlxuICAgKi9cbiAgc2VsZWN0RnJvbVJlZ2lvbnMoKTogbnVtYmVyO1xuICAvKiogU2VsZWN0IGV2ZXJ5IG9ic2VydmF0aW9uIGluIG9uZSBjYXRlZ29yeSBvZiBhIGNhdGVnb3JpY2FsIGNvbHVtbiDigJQgdGhlXG4gICAqICBsZWdlbmQgY2xpY2suIFJlamVjdHMgZm9yIGFuIHVua25vd24gb3IgY29udGludW91cyBjb2x1bW4uICovXG4gIHNlbGVjdENhdGVnb3J5KGNvbHVtbjogc3RyaW5nLCBjYXRlZ29yeUluZGV4OiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj47XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBhbiBleHBsaWNpdCBzZXQgb2Ygb2JzZXJ2YXRpb25zLCByZXBsYWNpbmcgYW55IGN1cnJlbnQgc2VsZWN0aW9uLlxuICAgKlxuICAgKiBGb3IgYSBsaW5rZWQgcGxvdDogbGFzc29pbmcgcG9pbnRzIGluIGFuIGVtYmVkZGluZyBpcyBhIHNlbGVjdGlvbiBPRiBvYnNlcnZhdGlvbnMsXG4gICAqIGFuZCBldmVyeSBvdGhlciB2aWV3IOKAlCB0aGUgbWFwLCB0aGUgZGlzdHJpYnV0aW9ucyDigJQgcmVhZHMgdGhlIHNhbWUgbWFzaywgc28gYnJ1c2hpbmdcbiAgICogb25lIGxpZ2h0cyB1cCB0aGUgcmVzdC4gUmV0dXJucyBob3cgbWFueSB3ZXJlIHNlbGVjdGVkLlxuICAgKi9cbiAgc2VsZWN0SW5kaWNlcyhpbmRpY2VzOiBJdGVyYWJsZTxudW1iZXI+KTogbnVtYmVyO1xuICBjbGVhclNlbGVjdGlvbigpOiB2b2lkO1xufVxuXG4vKiogRGlzcGxheSBvcHRpb25zIChjb2xvcm1hcC9MVVQsIHJldmVyc2Ugc2NhbGUsIGltYWdlIG1ldGFkYXRhKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURpc3BsYXlPcHRpb25zIHtcbiAgZ2V0Q29sb3JtYXAoKTogT2JzZXJ2YWJsZTxDb2xvcm1hcE5vZGUgfCBudWxsPjtcbiAgc2V0Q29sb3JtYXAoY29sb3JtYXA6IENvbG9ybWFwTm9kZSk6IHZvaWQ7XG4gIGdldENvbG9ybWFwT3B0aW9ucygpOiBDb2xvcm1hcE5vZGVbXTtcbiAgZ2V0UmV2ZXJzZVNjYWxlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHNldFJldmVyc2VTY2FsZShyZXZlcnNjYWxlOiBhbnkpOiB2b2lkO1xuICBzZXRJbWFnZU1ldGEoaW1hZ2VNZXRhOiBJSW1hZ2VNZXRhZGF0YVtdKTogdm9pZDtcbiAgZ2V0SW1hZ2VNZXRhKCk6IE9ic2VydmFibGU8SUltYWdlTWV0YWRhdGFbXT47XG59XG5cbi8qKlxuICogSW50ZW5zaXR5LXByb2ZpbGUgc2FtcGxpbmcgKFBsb3RUeXBlLkxJTkUpLiBUaGUgc2FtcGxpbmcgKnNvdXJjZSogbGl2ZXMgaW4gdGhlXG4gKiBQbG90bHkgYmFja2VuZCAoaXQgb3ducyBwaXhlbCByZWFkYmFjayk7IE9wZW5TZWFkcmFnb24gY29udHJpYnV0ZXMgb25seSB0aGVcbiAqIHZpZXdwb3J0LWNoYW5nZSBzaWduYWwgdGhhdCBkcml2ZXMgcmUtc2FtcGxpbmcgYXQgdGhlIGN1cnJlbnQgem9vbS4gRWFjaFxuICogYmFja2VuZCBpbXBsZW1lbnRzIHRoZSBwYXJ0IGl0IG93bnMgYW5kIG5vLW9wcyB0aGUgcmVzdCDigJQgbWlycm9yaW5nIHRoZVxuICogZGVwcmVjYXRlZCBuby1vcCBwYXR0ZXJuIG9uIHtAbGluayBJRGF0YVJlbmRlcmVyfSDigJQgc28gdGhlIGNvbnRyYWN0IGlzIHVuaWZvcm1cbiAqIGFuZCBhIGNvbnN1bWVyIGNhbiBkZXBlbmQgb24gYElWaXN1YWxpemVyYCBhbG9uZSAobm8gY29uY3JldGUtdHlwZSByZWFjaC1pbikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUludGVuc2l0eVNhbXBsaW5nIHtcbiAgLyoqIFBvcHVsYXRlIHRoZSBpbnRlbnNpdHktc2FtcGxpbmcgY2FjaGUgZm9yIHRoZSBjdXJyZW50IGltYWdlL3NsaWNlIHNvIHRoZVxuICAgKiAgbGluZS1ST0kgcHJvZmlsZXMgaGF2ZSBwaXhlbCBkYXRhLiBSZWFsIG9uIFBsb3RseTsgbm8tb3Agb24gT1NELiAqL1xuICBlbnN1cmVJbnRlbnNpdHlTYW1wbGluZyhpbWFnZUluZm86IElJbWFnZUluZm8sIHpJbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqIFJlLXNhbXBsZSB0aGUgcHJvZmlsZXMgZnJvbSBhIGZyZXNoIGNyb3Agb2YgdGhlIGdpdmVuIGltYWdlLXBpeGVsIFJPSSBhdFxuICAgKiAgZGlzcGxheSByZXNvbHV0aW9uLiBSZWFsIG9uIFBsb3RseTsgbm8tb3Agb24gT1NELiAqL1xuICByZWZyZXNoSW50ZW5zaXR5U2FtcGxpbmdGb3JSb2koeDogbnVtYmVyLCB5OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgekluZGV4OiBudW1iZXIpOiB2b2lkO1xuICAvKiogVmlzaWJsZS1yZWdpb24gY2hhbmdlcyAoaW1hZ2UtcGl4ZWwgY29vcmRzKSwgZW1pdHRlZCB3aGVuIHRoZSB2aWV3IHNldHRsZXMsXG4gICAqICBzbyB0aGUgaW5zZXQgY2FuIHJlLXNhbXBsZSBhdCB0aGUgY3VycmVudCB6b29tLiBSZWFsIG9uIE9TRDsgZW1wdHkgb24gUGxvdGx5XG4gICAqICAoaXRzIGhpZ2gtZGVmIHpvb20gdXBkYXRlcyB0aGUgc2FtcGxpbmcgY2FjaGUgaW5saW5lIGluc3RlYWQpLiAqL1xuICBnZXRWaWV3cG9ydENoYW5nZSQoKTogT2JzZXJ2YWJsZTx7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9Pjtcbn1cblxuLyoqIENvbXBvc2l0ZSBjb250cmFjdCBhIHZpc3VhbGl6YXRpb24gYmFja2VuZCBpbXBsZW1lbnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVmlzdWFsaXplciBleHRlbmRzIElEYXRhUmVuZGVyZXIsIElSZWdpb25TdG9yZSwgSVRvb2xDb250cm9sbGVyLCBJRGlzcGxheU9wdGlvbnMsXG4gIElJbnRlbnNpdHlTYW1wbGluZyB7XG4gIHJlYWRvbmx5IGNhcGFiaWxpdGllczogVmlld2VyQ2FwYWJpbGl0aWVzO1xuICAvKiogVGhpcyBiYWNrZW5kJ3MgcmVnaW9uIHJlbmRlcmVyLiBNYXkgYmUgbnVsbCB1bnRpbCBhIHBsb3QgaXMgbW91bnRlZFxuICAgKiAgKE9wZW5TZWFkcmFnb24pLiBEcml2ZXMgcmVnaW9uIGRyYXcvc2VsZWN0IG1vZGVzIHVuaWZvcm1seS4gKi9cbiAgZ2V0UmVnaW9uT3ZlcmxheSgpOiBJUmVnaW9uT3ZlcmxheSB8IG51bGw7XG4gIC8qKiBJc29zdXJmYWNlIGNvbnRyb2xzIHdoZW4gdGhpcyBiYWNrZW5kIGFkdmVydGlzZXMgYFZpZXdlckZlYXR1cmUuSXNvc3VyZmFjZWAsXG4gICAqICBlbHNlIG51bGwg4oCUIHNvIGNvbnN1bWVycyBnYXRlIG9uIHRoZSByZXR1cm5lZCBvYmplY3QsIG5vdCBhIG5vLW9wIG1ldGhvZC4gKi9cbiAgZ2V0SXNvc3VyZmFjZUNvbnRyb2xzKCk6IElJc29zdXJmYWNlQ29udHJvbHMgfCBudWxsO1xuICAvKiogSW50ZW5zaXR5IChsaW5lLVJPSSkgY29udHJvbHMgd2hlbiB0aGUgYmFja2VuZCByZW5kZXJzIHRoZSBMSU5FIHBsb3QgdHlwZSxcbiAgICogIGVsc2UgbnVsbC4gKi9cbiAgZ2V0SW50ZW5zaXR5Q29udHJvbHMoKTogSUludGVuc2l0eUNvbnRyb2xzIHwgbnVsbDtcbiAgLyoqIDNEIHNjZW5lIGNvbnRyb2xzIHdoZW4gdGhpcyBiYWNrZW5kIHJlbmRlcnMgM0QgcGxvdCB0eXBlcywgZWxzZSBudWxsIOKAlFxuICAgKiAgdGhlIGNhcGFiaWxpdHktZ2F0ZWQgcmVwbGFjZW1lbnQgZm9yIHRoZSBkZXByZWNhdGVkIHRvcC1sZXZlbFxuICAgKiAgYHNldFN1cmZhY2VEcmFnTW9kZWAvYHJlc2V0U3VyZmFjZUNhbWVyYWAuICovXG4gIGdldFN1cmZhY2UzZENvbnRyb2xzKCk6IElTdXJmYWNlM2RDb250cm9scyB8IG51bGw7XG4gIC8qKiBTcGF0aWFsLW9taWNzIGNvbnRyb2xzIHdoZW4gYSBgU1BBVElBTF9EQVRBX1BPUlRgIGlzIGJvdW5kLCBlbHNlIG51bGwuXG4gICAqICBPcHRpb25hbDogb25seSB0aGUgcm91dGluZyBzZXJ2aWNlIGltcGxlbWVudHMgaXQsIHNpbmNlIHRoZSBzdGF0ZSBpcyBzaGFyZWRcbiAgICogIHJhdGhlciB0aGFuIG93bmVkIGJ5IGFueSBvbmUgYmFja2VuZC4gKi9cbiAgZ2V0U3BhdGlhbENvbnRyb2xzPygpOiBJU3BhdGlhbENvbnRyb2xzIHwgbnVsbDtcbiAgLyoqIFRoZSB2aWV3cG9ydCBhIGNvbnRyaWJ1dGVkIHBsb3QgbW9kZSBkcmF3cyBvdmVyLCB3aGVuIHRoZSBiYWNrZW5kIG9uXG4gICAqICBzY3JlZW4gY2FuIHByb3ZpZGUgb25lIChPcGVuU2VhZHJhZ29uKSwgZWxzZSBudWxsLiBPcHRpb25hbDogYmFja2VuZHMgdGhhdFxuICAgKiAgbm8gY29udHJpYnV0ZWQgbW9kZSByaWRlcyBvbiBuZWVkIG5vdCBpbXBsZW1lbnQgaXQuICovXG4gIGdldFBsb3RNb2RlVmlld3BvcnQ/KCk6IFBsb3RNb2RlVmlld3BvcnQgfCBudWxsO1xuICAvKiogQmlubmVkIGludGVuc2l0eSBoaXN0b2dyYW0gZm9yIGEgY2hhbm5lbCBmcm9tIHRoZSBjdXJyZW50bHktZGlzcGxheWVkXG4gICAqICBwaXhlbHMsIG9yIG51bGwgd2hlbiBub25lIGFyZSBhdmFpbGFibGUuIEZlZWRzIHRoZSBDaGFubmVscyAmIEhpc3RvZ3JhbVxuICAgKiAgcGFuZS4gKi9cbiAgZ2V0SGlzdG9ncmFtKGNoYW5uZWxJbmRleDogbnVtYmVyLCBiaW5zOiBudW1iZXIpOiBJSGlzdG9ncmFtIHwgbnVsbDtcbiAgLyoqIEFzeW5jIGhpc3RvZ3JhbSBzdHJlYW0g4oCUIG5hdGl2ZSBiaXQgZGVwdGggZm9yID44LWJpdCBpbWFnZXMgKHNlcnZlciksIGVsc2VcbiAgICogIHRoZSA4LWJpdCBjbGllbnQgaGlzdG9ncmFtLiAqL1xuICBnZXRIaXN0b2dyYW0kKGNoYW5uZWxJbmRleDogbnVtYmVyLCBiaW5zOiBudW1iZXIpOiBPYnNlcnZhYmxlPElIaXN0b2dyYW0gfCBudWxsPjtcbiAgLyoqIEV4cG9ydCB0aGUgZGlzcGxheWVkIGltYWdlLCBjb21wb3NpdGVkIHdpdGggdGhlIGN1cnJlbnQgZGlzcGxheSBzZXR0aW5ncyxcbiAgICogIGFzIGEgcHVibGljYXRpb24tcmVhZHkgUE5HIGRvd25sb2FkLiAqL1xuICBleHBvcnRDb21wb3NpdGUoKTogdm9pZDtcbiAgLyoqIEV4cG9ydCB0aGUgdW5kZXJseWluZyBpbWFnZSBkYXRhIGFzIGEgZGF0YS1wcmVzZXJ2aW5nIG11bHRpLWJhbmQgVElGRlxuICAgKiAgKG5hdGl2ZSBiaXQgZGVwdGgpLiBOby1vcCBvbiBiYWNrZW5kcyB0aGF0IGNhbid0IHByb3ZpZGUgaXQuICovXG4gIGV4cG9ydERhdGEoKTogdm9pZDtcbiAgdW5zdWJzY3JpYmUoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBESSB0b2tlbiBmb3IgdGhlIGFjdGl2ZSB2aXN1YWxpemF0aW9uIGJhY2tlbmQuIEJpbmQgaXQgKGB1c2VFeGlzdGluZ2ApIHRvIHRoZVxuICogYFJvdXRpbmdWaXN1YWxpemVyU2VydmljZWAsIHdoaWNoIHNlbGVjdHMgUGxvdGx5IHZzIE9wZW5TZWFkcmFnb24gcGVyIHBsb3RcbiAqIHR5cGUuIENvbnN1bWVycyDigJQgaW5jbHVkaW5nIHRoaXMgbGlicmFyeSdzIG93biBgVmlzdWFsaXplckNvbXBvbmVudGAg4oCUXG4gKiBpbmplY3QgYElWaXN1YWxpemVyYCB0aHJvdWdoIHRoaXMgdG9rZW4gcmF0aGVyIHRoYW4gdGhlIGNvbmNyZXRlIHJvdXRlciwgc29cbiAqIHRoZSByb3V0aW5nL2ZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGNhbiBjaGFuZ2Ugd2l0aG91dCB0b3VjaGluZyBjb25zdHJ1Y3RvcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBWSVNVQUxJWkVSID0gbmV3IEluamVjdGlvblRva2VuPElWaXN1YWxpemVyPignVklTVUFMSVpFUicpO1xuIl19
|
|
@@ -6,25 +6,16 @@
|
|
|
6
6
|
* every `camera3d.changed`). Falls back to pixel/slice counts when no physical µm/pixel is known.
|
|
7
7
|
*/
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
9
|
+
* Re-exported from napari-js, which owns the projection now.
|
|
10
|
+
*
|
|
11
|
+
* This used to be a local copy: the same column-major multiply, perspective divide and y-flip
|
|
12
|
+
* that {@link NapariVisualizerService.getSpatialScreenProjection} ALSO carried, written twice
|
|
13
|
+
* with two different behind-the-eye conventions. The renderer owns the camera and the clip
|
|
14
|
+
* convention, so it owns the projection; kept as a named export here only so the overlays that
|
|
15
|
+
* import it from this module do not all have to change.
|
|
11
16
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
// Column-major: clip[r] = Σ_c M[c*4+r] * v[c].
|
|
15
|
-
const cx = mvp[0] * x + mvp[4] * y + mvp[8] * z + mvp[12];
|
|
16
|
-
const cy = mvp[1] * x + mvp[5] * y + mvp[9] * z + mvp[13];
|
|
17
|
-
const cw = mvp[3] * x + mvp[7] * y + mvp[11] * z + mvp[15];
|
|
18
|
-
if (cw <= 0)
|
|
19
|
-
return { x: 0, y: 0, visible: false };
|
|
20
|
-
const ndcX = cx / cw;
|
|
21
|
-
const ndcY = cy / cw;
|
|
22
|
-
return {
|
|
23
|
-
x: (ndcX * 0.5 + 0.5) * vw,
|
|
24
|
-
y: (0.5 - ndcY * 0.5) * vh,
|
|
25
|
-
visible: true,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
17
|
+
import { projectPoint } from 'napari-js';
|
|
18
|
+
export { projectPoint };
|
|
28
19
|
export class NapariAxesLabels {
|
|
29
20
|
constructor(host, camera3d, labels) {
|
|
30
21
|
this.host = host;
|
|
@@ -103,4 +94,4 @@ export class NapariAxesLabels {
|
|
|
103
94
|
this.els.length = 0;
|
|
104
95
|
}
|
|
105
96
|
}
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFwYXJpLWF4ZXMtbGFiZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9pbXBsZW1lbnRhdGlvbnMvbmFwYXJpLWpzL25hcGFyaS1heGVzLWxhYmVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFnQkg7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsR0FBc0IsRUFDdEIsQ0FBMkIsRUFDM0IsRUFBVSxFQUNWLEVBQVU7SUFFVixNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEIsK0NBQStDO0lBQy9DLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRCxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUQsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNELElBQUksRUFBRSxJQUFJLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNuRCxN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QUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzNCLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ2xDLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUc7WUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBET00gdGV4dCBsYWJlbHMgZm9yIHRoZSBuYXBhcmktanMgM0QgYXhlcyBnaXptbyAoaml0LXVpIzEwMikuIFRoZSB7QGxpbmsgQXhlc0xheWVyfSBkcmF3cyB0aGVcbiAqIGF4aXMgbGluZXMvdGlja3MvYm94IGluIFdlYkdQVTsgdGhpcyBvdmVybGF5IGFkZHMgdGhlIGNyaXNwIFgvWS9aICsgc2NhbGUgdGV4dCBvbiB0b3AsIHByb2plY3RlZFxuICogd2l0aCB0aGUgM0QgY2FtZXJhJ3Mgdmlldy1wcm9qZWN0aW9uIHNvIGVhY2ggbGFiZWwgdHJhY2tzIGl0cyBhbmNob3IgYXMgdGhlIHZvbHVtZSBvcmJpdHMuXG4gKiBNaXJyb3JzIHRoZSB7QGxpbmsgTmFwYXJpU2NhbGVCYXJ9IG92ZXJsYXkgcGF0dGVybiAoYWJzb2x1dGUtcG9zaXRpb25lZCBvdmVyIHRoZSBob3N0LCB1cGRhdGVkIG9uXG4gKiBldmVyeSBgY2FtZXJhM2QuY2hhbmdlZGApLiBGYWxscyBiYWNrIHRvIHBpeGVsL3NsaWNlIGNvdW50cyB3aGVuIG5vIHBoeXNpY2FsIMK1bS9waXhlbCBpcyBrbm93bi5cbiAqL1xuXG4vKiogT25lIGF4aXMgbGFiZWw6IGEgd29ybGQtc3BhY2UgYW5jaG9yICh0aGUgYXhpcyBlbmQsIGluIHRoZSB2b2x1bWUncyBjZW50cmVkIGJveCksIHRoZSB0ZXh0IHRvXG4gKiAgc2hvdywgYW5kIGl0cyBjb2xvdXIgKG1hdGNoaW5nIHRoZSBXZWJHUFUgYXhpcyBjb2xvdXIpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBeGlzTGFiZWxTcGVjIHtcbiAgYW5jaG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHRleHQ6IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbn1cblxuLyoqIFRoZSBzbGljZSBvZiBuYXBhcmkncyBDYW1lcmEzRCB0aGlzIG92ZXJsYXkgcmVhZHMuIGB2aWV3UHJvamVjdGlvbmAgaXMgY29sdW1uLW1ham9yIChnbC1tYXRyaXgpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBeGVzTGFiZWxDYW1lcmEzRCB7XG4gIHZpZXdQcm9qZWN0aW9uKHZ3OiBudW1iZXIsIHZoOiBudW1iZXIpOiBBcnJheUxpa2U8bnVtYmVyPjtcbiAgcmVhZG9ubHkgY2hhbmdlZDogeyBjb25uZWN0KGxpc3RlbmVyOiAoKSA9PiB2b2lkKTogKCkgPT4gdm9pZCB9O1xufVxuXG4vKipcbiAqIFByb2plY3QgYSB3b3JsZCBwb2ludCB0aHJvdWdoIGEgY29sdW1uLW1ham9yIDTDlzQgTVZQIHRvIENTUy1waXhlbCBzY3JlZW4gY29vcmRpbmF0ZXMuXG4gKiBSZXR1cm5zIGB2aXNpYmxlOiBmYWxzZWAgd2hlbiB0aGUgcG9pbnQgaXMgYXQvYmVoaW5kIHRoZSBjYW1lcmEgKHcg4omkIDApLiBQdXJlIOKAlCB1bml0LXRlc3RlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RQb2ludChcbiAgbXZwOiBBcnJheUxpa2U8bnVtYmVyPixcbiAgcDogW251bWJlciwgbnVtYmVyLCBudW1iZXJdLFxuICB2dzogbnVtYmVyLFxuICB2aDogbnVtYmVyLFxuKTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgdmlzaWJsZTogYm9vbGVhbiB9IHtcbiAgY29uc3QgW3gsIHksIHpdID0gcDtcbiAgLy8gQ29sdW1uLW1ham9yOiBjbGlwW3JdID0gzqNfYyBNW2MqNCtyXSAqIHZbY10uXG4gIGNvbnN0IGN4ID0gbXZwWzBdICogeCArIG12cFs0XSAqIHkgKyBtdnBbOF0gKiB6ICsgbXZwWzEyXTtcbiAgY29uc3QgY3kgPSBtdnBbMV0gKiB4ICsgbXZwWzVdICogeSArIG12cFs5XSAqIHogKyBtdnBbMTNdO1xuICBjb25zdCBjdyA9IG12cFszXSAqIHggKyBtdnBbN10gKiB5ICsgbXZwWzExXSAqIHogKyBtdnBbMTVdO1xuICBpZiAoY3cgPD0gMCkgcmV0dXJuIHsgeDogMCwgeTogMCwgdmlzaWJsZTogZmFsc2UgfTtcbiAgY29uc3QgbmRjWCA9IGN4IC8gY3c7XG4gIGNvbnN0IG5kY1kgPSBjeSAvIGN3O1xuICByZXR1cm4ge1xuICAgIHg6IChuZGNYICogMC41ICsgMC41KSAqIHZ3LFxuICAgIHk6ICgwLjUgLSBuZGNZICogMC41KSAqIHZoLFxuICAgIHZpc2libGU6IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBOYXBhcmlBeGVzTGFiZWxzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBlbHM6IEhUTUxTcGFuRWxlbWVudFtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzY29ubmVjdENhbWVyYTogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZWFkb25seSByZXNpemVPYnNlcnZlcj86IFJlc2l6ZU9ic2VydmVyO1xuICBwcml2YXRlIHZpc2libGUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaG9zdDogSFRNTEVsZW1lbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYW1lcmEzZDogQXhlc0xhYmVsQ2FtZXJhM0QsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsYWJlbHM6IEF4aXNMYWJlbFNwZWNbXSxcbiAgKSB7XG4gICAgaWYgKGdldENvbXB1dGVkU3R5bGUoaG9zdCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSBob3N0LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICBmb3IgKGNvbnN0IHNwZWMgb2YgbGFiZWxzKSB7XG4gICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIE9iamVjdC5hc3NpZ24oZWwuc3R5bGUsIHtcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIHpJbmRleDogJzMwJyxcbiAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICBmb250OiAnMTFweCBzYW5zLXNlcmlmJyxcbiAgICAgICAgZm9udFdlaWdodDogJzYwMCcsXG4gICAgICAgIGNvbG9yOiBzcGVjLmNvbG9yLFxuICAgICAgICB0ZXh0U2hhZG93OiAnMCAwIDNweCAjMDAwLCAwIDAgM3B4ICMwMDAnLFxuICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKC01MCUsIC01MCUpJyxcbiAgICAgICAgdXNlclNlbGVjdDogJ25vbmUnLFxuICAgICAgfSBhcyBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+KTtcbiAgICAgIGVsLnRleHRDb250ZW50ID0gc3BlYy50ZXh0O1xuICAgICAgdGhpcy5ob3N0LmFwcGVuZENoaWxkKGVsKTtcbiAgICAgIHRoaXMuZWxzLnB1c2goZWwpO1xuICAgIH1cbiAgICB0aGlzLmRpc2Nvbm5lY3RDYW1lcmEgPSB0aGlzLmNhbWVyYTNkLmNoYW5nZWQuY29ubmVjdCgoKSA9PiB0aGlzLnVwZGF0ZSgpKTtcbiAgICBpZiAodHlwZW9mIFJlc2l6ZU9ic2VydmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB0aGlzLnVwZGF0ZSgpKTtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmhvc3QpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgc2V0VmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy52aXNpYmxlID0gdmlzaWJsZTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgLyoqIFJlcGxhY2UgdGhlIGxhYmVsIGFuY2hvcnMvdGV4dCBpbiBwbGFjZSAoc2FtZSBjb3VudCkgYW5kIHJlcHJvamVjdCDigJQgbGV0cyBhIGhvc3QgbW92ZSB0aGVcbiAgICogIGxhYmVscyB3aGVuIHRoZSBib3ggZ2VvbWV0cnkgY2hhbmdlcyBsaXZlIChlLmcuIGEgWi1oZWlnaHQgZ2l6bW8gcmVzdHJldGNoaW5nIHRoZSB2b2x1bWUpXG4gICAqICB3aXRob3V0IHRlYXJpbmcgZG93biBhbmQgcmVjcmVhdGluZyB0aGUgRE9NIGVsZW1lbnRzICh3aGljaCB3b3VsZCBmbGlja2VyKS4gKi9cbiAgdXBkYXRlQW5jaG9ycyhsYWJlbHM6IEF4aXNMYWJlbFNwZWNbXSk6IHZvaWQge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sYWJlbHMubGVuZ3RoICYmIGkgPCBsYWJlbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMubGFiZWxzW2ldID0gbGFiZWxzW2ldO1xuICAgICAgaWYgKGxhYmVsc1tpXS50ZXh0ICE9PSB0aGlzLmVsc1tpXS50ZXh0Q29udGVudCkgdGhpcy5lbHNbaV0udGV4dENvbnRlbnQgPSBsYWJlbHNbaV0udGV4dDtcbiAgICB9XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHZ3ID0gdGhpcy5ob3N0LmNsaWVudFdpZHRoO1xuICAgIGNvbnN0IHZoID0gdGhpcy5ob3N0LmNsaWVudEhlaWdodDtcbiAgICBpZiAoIXRoaXMudmlzaWJsZSB8fCB2dyA8PSAwIHx8IHZoIDw9IDApIHtcbiAgICAgIGZvciAoY29uc3QgZWwgb2YgdGhpcy5lbHMpIGVsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG12cCA9IHRoaXMuY2FtZXJhM2Qudmlld1Byb2plY3Rpb24odncsIHZoKTtcbiAgICB0aGlzLmxhYmVscy5mb3JFYWNoKChzcGVjLCBpKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IHRoaXMuZWxzW2ldO1xuICAgICAgY29uc3QgcyA9IHByb2plY3RQb2ludChtdnAsIHNwZWMuYW5jaG9yLCB2dywgdmgpO1xuICAgICAgaWYgKCFzLnZpc2libGUpIHtcbiAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICcnO1xuICAgICAgZWwuc3R5bGUubGVmdCA9IGAke3MueH1weGA7XG4gICAgICBlbC5zdHlsZS50b3AgPSBgJHtzLnl9cHhgO1xuICAgIH0pO1xuICB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2Nvbm5lY3RDYW1lcmEoKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgZm9yIChjb25zdCBlbCBvZiB0aGlzLmVscykgZWwucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQoZWwpO1xuICAgIHRoaXMuZWxzLmxlbmd0aCA9IDA7XG4gIH1cbn1cbiJdfQ==
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFwYXJpLWF4ZXMtbGFiZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9pbXBsZW1lbnRhdGlvbnMvbmFwYXJpLWpzL25hcGFyaS1heGVzLWxhYmVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFnQkg7Ozs7Ozs7O0dBUUc7QUFDSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXpDLE9BQU8sRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUV4QixNQUFNLE9BQU8sZ0JBQWdCO0lBTTNCLFlBQ21CLElBQWlCLEVBQ2pCLFFBQTJCLEVBQzNCLE1BQXVCO1FBRnZCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBbUI7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7UUFSekIsUUFBRyxHQUFzQixFQUFFLENBQUM7UUFHckMsWUFBTyxHQUFHLElBQUksQ0FBQztRQU9yQixJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRO1lBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQ25GLEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7WUFDMUIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3RCLFFBQVEsRUFBRSxVQUFVO2dCQUNwQixNQUFNLEVBQUUsSUFBSTtnQkFDWixhQUFhLEVBQUUsTUFBTTtnQkFDckIsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsVUFBVSxFQUFFLDRCQUE0QjtnQkFDeEMsVUFBVSxFQUFFLFFBQVE7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QUFPO1lBQ1QsQ0FBQztZQUNELEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUN0QixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMzQixFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUNsQyxLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHO1lBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRE9NIHRleHQgbGFiZWxzIGZvciB0aGUgbmFwYXJpLWpzIDNEIGF4ZXMgZ2l6bW8gKGppdC11aSMxMDIpLiBUaGUge0BsaW5rIEF4ZXNMYXllcn0gZHJhd3MgdGhlXG4gKiBheGlzIGxpbmVzL3RpY2tzL2JveCBpbiBXZWJHUFU7IHRoaXMgb3ZlcmxheSBhZGRzIHRoZSBjcmlzcCBYL1kvWiArIHNjYWxlIHRleHQgb24gdG9wLCBwcm9qZWN0ZWRcbiAqIHdpdGggdGhlIDNEIGNhbWVyYSdzIHZpZXctcHJvamVjdGlvbiBzbyBlYWNoIGxhYmVsIHRyYWNrcyBpdHMgYW5jaG9yIGFzIHRoZSB2b2x1bWUgb3JiaXRzLlxuICogTWlycm9ycyB0aGUge0BsaW5rIE5hcGFyaVNjYWxlQmFyfSBvdmVybGF5IHBhdHRlcm4gKGFic29sdXRlLXBvc2l0aW9uZWQgb3ZlciB0aGUgaG9zdCwgdXBkYXRlZCBvblxuICogZXZlcnkgYGNhbWVyYTNkLmNoYW5nZWRgKS4gRmFsbHMgYmFjayB0byBwaXhlbC9zbGljZSBjb3VudHMgd2hlbiBubyBwaHlzaWNhbCDCtW0vcGl4ZWwgaXMga25vd24uXG4gKi9cblxuLyoqIE9uZSBheGlzIGxhYmVsOiBhIHdvcmxkLXNwYWNlIGFuY2hvciAodGhlIGF4aXMgZW5kLCBpbiB0aGUgdm9sdW1lJ3MgY2VudHJlZCBib3gpLCB0aGUgdGV4dCB0b1xuICogIHNob3csIGFuZCBpdHMgY29sb3VyIChtYXRjaGluZyB0aGUgV2ViR1BVIGF4aXMgY29sb3VyKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXhpc0xhYmVsU3BlYyB7XG4gIGFuY2hvcjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICB0ZXh0OiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG59XG5cbi8qKiBUaGUgc2xpY2Ugb2YgbmFwYXJpJ3MgQ2FtZXJhM0QgdGhpcyBvdmVybGF5IHJlYWRzLiBgdmlld1Byb2plY3Rpb25gIGlzIGNvbHVtbi1tYWpvciAoZ2wtbWF0cml4KS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXhlc0xhYmVsQ2FtZXJhM0Qge1xuICB2aWV3UHJvamVjdGlvbih2dzogbnVtYmVyLCB2aDogbnVtYmVyKTogQXJyYXlMaWtlPG51bWJlcj47XG4gIHJlYWRvbmx5IGNoYW5nZWQ6IHsgY29ubmVjdChsaXN0ZW5lcjogKCkgPT4gdm9pZCk6ICgpID0+IHZvaWQgfTtcbn1cblxuLyoqXG4gKiBSZS1leHBvcnRlZCBmcm9tIG5hcGFyaS1qcywgd2hpY2ggb3ducyB0aGUgcHJvamVjdGlvbiBub3cuXG4gKlxuICogVGhpcyB1c2VkIHRvIGJlIGEgbG9jYWwgY29weTogdGhlIHNhbWUgY29sdW1uLW1ham9yIG11bHRpcGx5LCBwZXJzcGVjdGl2ZSBkaXZpZGUgYW5kIHktZmxpcFxuICogdGhhdCB7QGxpbmsgTmFwYXJpVmlzdWFsaXplclNlcnZpY2UuZ2V0U3BhdGlhbFNjcmVlblByb2plY3Rpb259IEFMU08gY2FycmllZCwgd3JpdHRlbiB0d2ljZVxuICogd2l0aCB0d28gZGlmZmVyZW50IGJlaGluZC10aGUtZXllIGNvbnZlbnRpb25zLiBUaGUgcmVuZGVyZXIgb3ducyB0aGUgY2FtZXJhIGFuZCB0aGUgY2xpcFxuICogY29udmVudGlvbiwgc28gaXQgb3ducyB0aGUgcHJvamVjdGlvbjsga2VwdCBhcyBhIG5hbWVkIGV4cG9ydCBoZXJlIG9ubHkgc28gdGhlIG92ZXJsYXlzIHRoYXRcbiAqIGltcG9ydCBpdCBmcm9tIHRoaXMgbW9kdWxlIGRvIG5vdCBhbGwgaGF2ZSB0byBjaGFuZ2UuXG4gKi9cbmltcG9ydCB7IHByb2plY3RQb2ludCB9IGZyb20gJ25hcGFyaS1qcyc7XG5cbmV4cG9ydCB7IHByb2plY3RQb2ludCB9O1xuXG5leHBvcnQgY2xhc3MgTmFwYXJpQXhlc0xhYmVscyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWxzOiBIVE1MU3BhbkVsZW1lbnRbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IGRpc2Nvbm5lY3RDYW1lcmE6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzaXplT2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcjtcbiAgcHJpdmF0ZSB2aXNpYmxlID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhvc3Q6IEhUTUxFbGVtZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FtZXJhM2Q6IEF4ZXNMYWJlbENhbWVyYTNELFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGFiZWxzOiBBeGlzTGFiZWxTcGVjW10sXG4gICkge1xuICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKGhvc3QpLnBvc2l0aW9uID09PSAnc3RhdGljJykgaG9zdC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgZm9yIChjb25zdCBzcGVjIG9mIGxhYmVscykge1xuICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICBPYmplY3QuYXNzaWduKGVsLnN0eWxlLCB7XG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB6SW5kZXg6ICczMCcsXG4gICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgICAgZm9udDogJzExcHggc2Fucy1zZXJpZicsXG4gICAgICAgIGZvbnRXZWlnaHQ6ICc2MDAnLFxuICAgICAgICBjb2xvcjogc3BlYy5jb2xvcixcbiAgICAgICAgdGV4dFNoYWRvdzogJzAgMCAzcHggIzAwMCwgMCAwIDNweCAjMDAwJyxcbiAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgtNTAlLCAtNTAlKScsXG4gICAgICAgIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgICAgIH0gYXMgUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPik7XG4gICAgICBlbC50ZXh0Q29udGVudCA9IHNwZWMudGV4dDtcbiAgICAgIHRoaXMuaG9zdC5hcHBlbmRDaGlsZChlbCk7XG4gICAgICB0aGlzLmVscy5wdXNoKGVsKTtcbiAgICB9XG4gICAgdGhpcy5kaXNjb25uZWN0Q2FtZXJhID0gdGhpcy5jYW1lcmEzZC5jaGFuZ2VkLmNvbm5lY3QoKCkgPT4gdGhpcy51cGRhdGUoKSk7XG4gICAgaWYgKHR5cGVvZiBSZXNpemVPYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy51cGRhdGUoKSk7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5ob3N0KTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIHNldFZpc2libGUodmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMudmlzaWJsZSA9IHZpc2libGU7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIC8qKiBSZXBsYWNlIHRoZSBsYWJlbCBhbmNob3JzL3RleHQgaW4gcGxhY2UgKHNhbWUgY291bnQpIGFuZCByZXByb2plY3Qg4oCUIGxldHMgYSBob3N0IG1vdmUgdGhlXG4gICAqICBsYWJlbHMgd2hlbiB0aGUgYm94IGdlb21ldHJ5IGNoYW5nZXMgbGl2ZSAoZS5nLiBhIFotaGVpZ2h0IGdpem1vIHJlc3RyZXRjaGluZyB0aGUgdm9sdW1lKVxuICAgKiAgd2l0aG91dCB0ZWFyaW5nIGRvd24gYW5kIHJlY3JlYXRpbmcgdGhlIERPTSBlbGVtZW50cyAod2hpY2ggd291bGQgZmxpY2tlcikuICovXG4gIHVwZGF0ZUFuY2hvcnMobGFiZWxzOiBBeGlzTGFiZWxTcGVjW10pOiB2b2lkIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGFiZWxzLmxlbmd0aCAmJiBpIDwgbGFiZWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmxhYmVsc1tpXSA9IGxhYmVsc1tpXTtcbiAgICAgIGlmIChsYWJlbHNbaV0udGV4dCAhPT0gdGhpcy5lbHNbaV0udGV4dENvbnRlbnQpIHRoaXMuZWxzW2ldLnRleHRDb250ZW50ID0gbGFiZWxzW2ldLnRleHQ7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCB2dyA9IHRoaXMuaG9zdC5jbGllbnRXaWR0aDtcbiAgICBjb25zdCB2aCA9IHRoaXMuaG9zdC5jbGllbnRIZWlnaHQ7XG4gICAgaWYgKCF0aGlzLnZpc2libGUgfHwgdncgPD0gMCB8fCB2aCA8PSAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGVsIG9mIHRoaXMuZWxzKSBlbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtdnAgPSB0aGlzLmNhbWVyYTNkLnZpZXdQcm9qZWN0aW9uKHZ3LCB2aCk7XG4gICAgdGhpcy5sYWJlbHMuZm9yRWFjaCgoc3BlYywgaSkgPT4ge1xuICAgICAgY29uc3QgZWwgPSB0aGlzLmVsc1tpXTtcbiAgICAgIGNvbnN0IHMgPSBwcm9qZWN0UG9pbnQobXZwLCBzcGVjLmFuY2hvciwgdncsIHZoKTtcbiAgICAgIGlmICghcy52aXNpYmxlKSB7XG4gICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgICAgIGVsLnN0eWxlLmxlZnQgPSBgJHtzLnh9cHhgO1xuICAgICAgZWwuc3R5bGUudG9wID0gYCR7cy55fXB4YDtcbiAgICB9KTtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kaXNjb25uZWN0Q2FtZXJhKCk7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIGZvciAoY29uc3QgZWwgb2YgdGhpcy5lbHMpIGVsLnBhcmVudE5vZGU/LnJlbW92ZUNoaWxkKGVsKTtcbiAgICB0aGlzLmVscy5sZW5ndGggPSAwO1xuICB9XG59XG4iXX0=
|