@flowmap.gl/data 8.0.0-alpha.4 → 8.0.0-alpha.5
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/dist/{FlowMapAggregateAccessors.d.ts → FlowmapAggregateAccessors.d.ts} +6 -6
- package/dist/{FlowMapAggregateAccessors.d.ts.map → FlowmapAggregateAccessors.d.ts.map} +1 -1
- package/dist/{FlowMapAggregateAccessors.js → FlowmapAggregateAccessors.js} +3 -3
- package/dist/{FlowMapSelectors.d.ts → FlowmapSelectors.d.ts} +45 -44
- package/dist/FlowmapSelectors.d.ts.map +1 -0
- package/dist/FlowmapSelectors.js +869 -0
- package/dist/{FlowMapState.d.ts → FlowmapState.d.ts} +4 -2
- package/dist/{FlowMapState.d.ts.map → FlowmapState.d.ts.map} +1 -1
- package/dist/{FlowMapState.js → FlowmapState.js} +1 -1
- package/dist/colors.d.ts +2 -2
- package/dist/colors.js +2 -2
- package/dist/index.d.ts +6 -6
- package/dist/index.js +6 -6
- package/dist/provider/FlowmapDataProvider.d.ts +16 -0
- package/dist/provider/{FlowMapDataProvider.d.ts.map → FlowmapDataProvider.d.ts.map} +1 -1
- package/dist/provider/{FlowMapDataProvider.js → FlowmapDataProvider.js} +4 -4
- package/dist/provider/LocalFlowmapDataProvider.d.ts +20 -0
- package/dist/provider/{LocalFlowMapDataProvider.d.ts.map → LocalFlowmapDataProvider.d.ts.map} +1 -1
- package/dist/provider/{LocalFlowMapDataProvider.js → LocalFlowmapDataProvider.js} +22 -22
- package/dist/types.d.ts +2 -2
- package/dist/types.js +1 -1
- package/package.json +2 -2
- package/src/{FlowMapAggregateAccessors.ts → FlowmapAggregateAccessors.ts} +6 -6
- package/src/{FlowMapSelectors.ts → FlowmapSelectors.ts} +80 -77
- package/src/{FlowMapState.ts → FlowmapState.ts} +3 -1
- package/src/colors.ts +2 -2
- package/src/index.ts +6 -6
- package/src/provider/{FlowMapDataProvider.ts → FlowmapDataProvider.ts} +11 -11
- package/src/provider/LocalFlowmapDataProvider.ts +105 -0
- package/src/types.ts +2 -2
- package/dist/FlowMapSelectors.d.ts.map +0 -1
- package/dist/FlowMapSelectors.js +0 -869
- package/dist/provider/FlowMapDataProvider.d.ts +0 -16
- package/dist/provider/LocalFlowMapDataProvider.d.ts +0 -20
- package/src/provider/LocalFlowMapDataProvider.ts +0 -105
|
@@ -16,10 +16,12 @@ export interface SettingsState {
|
|
|
16
16
|
darkMode: boolean;
|
|
17
17
|
fadeAmount: number;
|
|
18
18
|
colorScheme: string | undefined;
|
|
19
|
+
highlightColor: string;
|
|
20
|
+
maxTopFlowsDisplayNum: number;
|
|
19
21
|
}
|
|
20
|
-
export interface
|
|
22
|
+
export interface FlowmapState {
|
|
21
23
|
filterState: FilterState;
|
|
22
24
|
settingsState: SettingsState;
|
|
23
25
|
viewport: ViewportProps;
|
|
24
26
|
}
|
|
25
|
-
//# sourceMappingURL=
|
|
27
|
+
//# sourceMappingURL=FlowmapState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"FlowmapState.d.ts","sourceRoot":"","sources":["../src/FlowmapState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAE,aAAa,EAAC,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,iBAAiB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5C,kBAAkB,EAAE,kBAAkB,CAAC;CACxC;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,aAAa,CAAC;CACzB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd21hcFN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Zsb3dtYXBTdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMb2NhdGlvbkZpbHRlck1vZGUsIFZpZXdwb3J0UHJvcHN9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclN0YXRlIHtcbiAgc2VsZWN0ZWRMb2NhdGlvbnM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICBzZWxlY3RlZFRpbWVSYW5nZTogW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkO1xuICBsb2NhdGlvbkZpbHRlck1vZGU6IExvY2F0aW9uRmlsdGVyTW9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXR0aW5nc1N0YXRlIHtcbiAgYW5pbWF0aW9uRW5hYmxlZDogYm9vbGVhbjtcbiAgZmFkZUVuYWJsZWQ6IGJvb2xlYW47XG4gIGZhZGVPcGFjaXR5RW5hYmxlZDogYm9vbGVhbjtcbiAgbG9jYXRpb25Ub3RhbHNFbmFibGVkOiBib29sZWFuO1xuICBhZGFwdGl2ZVNjYWxlc0VuYWJsZWQ6IGJvb2xlYW47XG4gIGNsdXN0ZXJpbmdFbmFibGVkOiBib29sZWFuO1xuICBjbHVzdGVyaW5nQXV0bzogYm9vbGVhbjtcbiAgY2x1c3RlcmluZ0xldmVsPzogbnVtYmVyO1xuICBkYXJrTW9kZTogYm9vbGVhbjtcbiAgZmFkZUFtb3VudDogbnVtYmVyO1xuICBjb2xvclNjaGVtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoaWdobGlnaHRDb2xvcjogc3RyaW5nO1xuICBtYXhUb3BGbG93c0Rpc3BsYXlOdW06IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93bWFwU3RhdGUge1xuICBmaWx0ZXJTdGF0ZTogRmlsdGVyU3RhdGU7XG4gIHNldHRpbmdzU3RhdGU6IFNldHRpbmdzU3RhdGU7XG4gIHZpZXdwb3J0OiBWaWV3cG9ydFByb3BzO1xufVxuIl19
|
package/dist/colors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SettingsState } from './
|
|
1
|
+
import { SettingsState } from './FlowmapState';
|
|
2
2
|
export declare type ColorScale = (value: number) => RGBA;
|
|
3
3
|
export declare type RGBA = [number, number, number, number];
|
|
4
4
|
export declare function opacityFloatToInteger(opacity: number): number;
|
|
@@ -14,7 +14,7 @@ export declare const COLOR_SCHEMES: {
|
|
|
14
14
|
[key: string]: string[];
|
|
15
15
|
};
|
|
16
16
|
export declare const COLOR_SCHEME_KEYS: string[];
|
|
17
|
-
export declare function
|
|
17
|
+
export declare function getFlowmapColors(settingsState: SettingsState): Colors | DiffColors;
|
|
18
18
|
export declare function getColors(diffMode: boolean, schemeKey: string | undefined, darkMode: boolean, fadeEnabled: boolean, fadeOpacityEnabled: boolean, fadeAmount: number, animate: boolean): Colors | DiffColors;
|
|
19
19
|
export declare function createFlowColorScale(domain: [number, number], scheme: string[], animate: boolean | undefined): ColorScale;
|
|
20
20
|
export declare function getFlowColorScale(colors: ColorsRGBA | DiffColorsRGBA, magnitudeExtent: [number, number] | undefined, animate: boolean | undefined): (magnitude: number) => [number, number, number, number];
|
package/dist/colors.js
CHANGED
|
@@ -279,7 +279,7 @@ const diffColors = {
|
|
|
279
279
|
},
|
|
280
280
|
outlineColor: 'rgb(230,233,237)',
|
|
281
281
|
};
|
|
282
|
-
export function
|
|
282
|
+
export function getFlowmapColors(settingsState) {
|
|
283
283
|
return getColors(false, // TODO: diffMode
|
|
284
284
|
settingsState.colorScheme, settingsState.darkMode, settingsState.fadeEnabled, settingsState.fadeOpacityEnabled, settingsState.fadeAmount, settingsState.animationEnabled);
|
|
285
285
|
}
|
|
@@ -463,4 +463,4 @@ export function mixColorsRGBA(color1, color2, zeroToOne) {
|
|
|
463
463
|
return color1.map((v, i) => midpoint(v, color2[i], zeroToOne));
|
|
464
464
|
}
|
|
465
465
|
export default getColors;
|
|
466
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsV0FBVyxFQUNYLFVBQVUsRUFDVixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsYUFBYSxFQUNiLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixhQUFhLEVBQ2IsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixZQUFZLEdBQ2IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQy9CLE9BQU8sRUFBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxLQUFLLElBQUksT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksUUFBUSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBR2hFLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDO0FBQ3JDLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFDO0FBQ25DLE1BQU0sc0JBQXNCLEdBQUcsdUJBQXVCLENBQUM7QUFDdkQsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLHNCQUFzQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3RFLE1BQU0sMkJBQTJCLEdBQUcsdUJBQXVCLENBQUM7QUFFNUQsTUFBTSxrQ0FBa0MsR0FBRyxDQUFDLHNCQUFzQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQy9FLE1BQU0sa0NBQWtDLEdBQUcsQ0FB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QUMxQixJQUFJLEVBQUU7UUFDSixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxPQUFPLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQztJQUNoQyxNQUFNLEVBQUU7UUFDTixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUMxQixLQUFLLEVBQUU7UUFDTCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUMxQixNQUFNLEVBQUU7UUFDTixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxVQUFVLEVBQUU7UUFDVixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxJQUFJLEVBQUUsVUFBVTtJQUNoQixPQUFPLEVBQUU7UUFDUCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxPQUFPLEVBQUUsYUFBYSxDQUFDLGtCQUFrQixDQUFDO0lBQzFDLElBQUksRUFBRSxhQUFhLENBQUMsZUFBZSxDQUFDO0lBQ3BDLElBQUksRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQzFCLE1BQU0sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQzlCLE1BQU0sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQzlCLE1BQU0sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDO0NBQy9CLENBQUM7QUFF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USxFQUFFLHNCQUFzQixDQUM5QixNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsRUFDekIsa0NBQWtDLEVBQ2xDLGNBQWMsQ0FBQyxRQUFRLENBQ3hCLElBQ0Q7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFXO0lBQ3RDLE9BQU8sUUFBUSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxTQUFpQjtJQUM5RCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDakMsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQzNCLE1BQVksRUFDWixNQUFZLEVBQ1osU0FBaUI7SUFFakIsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQVMsQ0FBQztBQUN6RSxDQUFDO0FBRUQsZUFBZSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpbnRlcnBvbGF0ZUNvb2wsXG4gIGludGVycG9sYXRlSW5mZXJubyxcbiAgaW50ZXJwb2xhdGVNYWdtYSxcbiAgaW50ZXJwb2xhdGVQbGFzbWEsXG4gIGludGVycG9sYXRlVmlyaWRpcyxcbiAgaW50ZXJwb2xhdGVXYXJtLFxuICBzY2hlbWVCbHVlcyxcbiAgc2NoZW1lQnVHbixcbiAgc2NoZW1lQnVQdSxcbiAgc2NoZW1lR25CdSxcbiAgc2NoZW1lR3JlZW5zLFxuICBzY2hlbWVHcmV5cyxcbiAgc2NoZW1lT3JhbmdlcyxcbiAgc2NoZW1lT3JSZCxcbiAgc2NoZW1lUHVCdSxcbiAgc2NoZW1lUHVCdUduLFxuICBzY2hlbWVQdVJkLFxuICBzY2hlbWVQdXJwbGVzLFxuICBzY2hlbWVSZFB1LFxuICBzY2hlbWVSZWRzLFxuICBzY2hlbWVZbEduLFxuICBzY2hlbWVZbEduQnUsXG4gIHNjaGVtZVlsT3JCcixcbiAgc2NoZW1lWWxPclJkLFxufSBmcm9tICdkMy1zY2FsZS1jaHJvbWF0aWMnO1xuaW1wb3J0IHtyYW5nZX0gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IHtzY2FsZVBvdywgc2NhbGVTZXF1ZW50aWFsLCBzY2FsZVNlcXVlbnRpYWxQb3d9IGZyb20gJ2QzLXNjYWxlJztcbmltcG9ydCB7aW50ZXJwb2xhdGVCYXNpcywgaW50ZXJwb2xhdGVSZ2JCYXNpc30gZnJvbSAnZDMtaW50ZXJwb2xhdGUnO1xuaW1wb3J0IHtjb2xvciBhcyBkM2NvbG9yLCBoY2wsIHJnYiBhcyBjb2xvclJnYn0gZnJvbSAnZDMtY29sb3InO1xuaW1wb3J0IHtTZXR0aW5nc1N0YXRlfSBmcm9tICcuL0Zsb3dNYXBTdGF0ZSc7XG5cbmNvbnN0IERFRkFVTFRfT1VUTElORV9DT0xPUiA9ICcjZmZmJztcbmNvbnN0IERFRkFVTFRfRElNTUVEX09QQUNJVFkgPSAwLjQ7XG5jb25zdCBERUZBVUxUX0ZMT1dfTUlOX0NPTE9SID0gJ3JnYmEoMjQwLDI0MCwyNDAsMC41KSc7XG5jb25zdCBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FID0gW0RFRkFVTFRfRkxPV19NSU5fQ09MT1IsICcjMTM3Q0JEJ107XG5jb25zdCBERUZBVUxUX0xPQ0FUSU9OX0FSRUFfQ09MT1IgPSAncmdiYSgyMjAsMjIwLDIyMCwwLjUpJztcblxuY29uc3QgREVGQVVMVF9GTE9XX0NPTE9SX1NDSEVNRV9QT1NJVElWRSA9IFtERUZBVUxUX0ZMT1dfTUlOX0NPTE9SLCAnI2Y2NjU0ZSddO1xuY29uc3QgREVGQVVMVF9GTE9XX0NPTE9SX1NDSEVNRV9ORUdBVElWRSA9IFtERUZBVUxUX0ZMT1dfTUlOX0NPTE9SLCAnIzAwYTljYyddO1xuXG5leHBvcnQgdHlwZSBDb2xvclNjYWxlID0gKHZhbHVlOiBudW1iZXIpID0+IFJHQkE7XG5leHBvcnQgdHlwZSBSR0JBID0gW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cbmNvbnN0IEZBTExCQUNLX0NPTE9SX1JHQkE6IFJHQkEgPSBbMjU1LCAyNTUsIDI1NSwgMjU1XTtcblxuZXhwb3J0IGZ1bmN0aW9uIG9wYWNpdHlGbG9hdFRvSW50ZWdlcihvcGFjaXR5OiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gTWF0aC5yb3VuZChvcGFjaXR5ICogMjU1KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wYWNpZnlIZXgoaGV4Q29kZTogc3RyaW5nLCBvcGFjaXR5OiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBjID0gZDNjb2xvcihoZXhDb2RlKTtcbiAgaWYgKCFjKSB7XG4gICAgY29uc29sZS53YXJuKCdJbnZhbGlkIGNvbG9yOiAnLCBoZXhDb2RlKTtcbiAgICByZXR1cm4gYHJnYmEoMjU1LCAyNTUsIDI1NSwgJHtvcGFjaXR5fSlgO1xuICB9XG4gIGNvbnN0IGNvbCA9IGMucmdiKCk7XG4gIHJldHVybiBgcmdiYSgke2NvbC5yfSwgJHtjb2wuZ30sICR7Y29sLmJ9LCAke29wYWNpdHl9KWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2xvckFzUmdiYShjb2xvcjogc3RyaW5nKTogUkdCQSB7XG4gIGNvbnN0IGNvbCA9IGQzY29sb3IoY29sb3IpO1xuICBpZiAoIWNvbCkge1xuICAgIGNvbnNvbGUud2FybignSW52YWxpZCBjb2xvcjogJywgY29sb3IpO1xuICAgIHJldHVybiBGQUxMQkFDS19DT0xPUl9SR0JBO1xuICB9XG4gIGNvbnN0IHJnYkNvbG9yID0gY29sLnJnYigpO1xuICByZXR1cm4gW1xuICAgIE1hdGguZmxvb3IocmdiQ29sb3IuciksXG4gICAgTWF0aC5mbG9vcihyZ2JDb2xvci5nKSxcbiAgICBNYXRoLmZsb29yKHJnYkNvbG9yLmIpLFxuICAgIG9wYWNpdHlGbG9hdFRvSW50ZWdlcihjb2wub3BhY2l0eSksXG4gIF07XG59XG5cbmZ1bmN0aW9uIGNvbG9yQXNSZ2JhT3IoXG4gIGNvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGRlZmF1bHRDb2xvcjogUkdCQSB8IHN0cmluZyxcbik6IFJHQkEge1xuICBpZiAoY29sb3IpIHtcbiAgICByZXR1cm4gY29sb3JBc1JnYmEoY29sb3IpO1xuICB9XG4gIGlmICh0eXBlb2YgZGVmYXVsdENvbG9yID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBjb2xvckFzUmdiYShkZWZhdWx0Q29sb3IpO1xuICB9XG4gIHJldHVybiBkZWZhdWx0Q29sb3I7XG59XG5cbmNvbnN0IGFzU2NoZW1lID0gKHNjaGVtZTogUmVhZG9ubHlBcnJheTxSZWFkb25seUFycmF5PHN0cmluZz4+KSA9PlxuICBzY2hlbWVbc2NoZW1lLmxlbmd0aCAtIDFdIGFzIHN0cmluZ1tdO1xuXG5leHBvcnQgZW51bSBDb2xvclNjaGVtZSB7XG4gIHByaW1hcnkgPSAnIzE2MmQzYycsXG59XG5cbmNvbnN0IFNDQUxFX05VTV9TVEVQUyA9IDIwO1xuY29uc3QgZ2V0Q29sb3JTdGVwcyA9IChpbnRlcnBvbGF0ZTogKHg6IG51bWJlcikgPT4gc3RyaW5nKSA9PlxuICByYW5nZSgwLCBTQ0FMRV9OVU1fU1RFUFMgKyAxKVxuICAgIC5tYXAoKGkpID0+IGludGVycG9sYXRlKGkgLyBTQ0FMRV9OVU1fU1RFUFMpKVxuICAgIC5yZXZlcnNlKCk7XG5cbmNvbnN0IEZMT1dfTUlOX0NPTE9SID0gJ3JnYmEoMjQwLDI0MCwyNDAsMC41KSc7XG5leHBvcnQgY29uc3QgQkxVRVNfUEFMRSA9IFtGTE9XX01JTl9DT0xPUiwgQ29sb3JTY2hlbWUucHJpbWFyeV07XG5jb25zdCBzY2hlbWVCbHVZbCA9IFtcbiAgJyNmN2ZlYWUnLFxuICAnI2I3ZTZhNScsXG4gICcjN2NjYmEyJyxcbiAgJyM0NmFlYTAnLFxuICAnIzA4OTA5OScsXG4gICcjMDA3MThiJyxcbiAgJyMwNDUyNzUnLFxuXTtcblxuY29uc3Qgc2NoZW1lRW1ybGQgPSBbXG4gICcjZDNmMmEzJyxcbiAgJyM5N2UxOTYnLFxuICAnIzZjYzA4YicsXG4gICcjNGM5YjgyJyxcbiAgJyMyMTdhNzknLFxuICAnIzEwNTk2NScsXG4gICcjMDc0MDUwJyxcbl07XG5cbmV4cG9ydCBjb25zdCBzY2hlbWVUZWFsID0gW1xuICAnI2QxZWVlYScsXG4gICcjYThkYmQ5JyxcbiAgJyM4NWM0YzknLFxuICAnIzY4YWJiOCcsXG4gICcjNGY5MGE2JyxcbiAgJyMzYjczOGYnLFxuICAnIzJhNTY3NCcsXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT0xPUl9TQ0hFTUUgPSBzY2hlbWVUZWFsO1xuZXhwb3J0IGNvbnN0IENPTE9SX1NDSEVNRVM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmdbXX0gPSB7XG4gIEJsdWVzOiBhc1NjaGVtZShzY2hlbWVCbHVlcyksXG4gIEJsdWVzUGFsZTogQkxVRVNfUEFMRSxcbiAgQmx1R3JuOiBbXG4gICAgJyNjNGU2YzMnLFxuICAgICcjOTZkMmE0JyxcbiAgICAnIzZkYmM5MCcsXG4gICAgJyM0ZGEyODQnLFxuICAgICcjMzY4NzdhJyxcbiAgICAnIzI2NmI2ZScsXG4gICAgJyMxZDRmNjAnLFxuICBdLFxuICBCbHVZbDogc2NoZW1lQmx1WWwsXG4gIEJyd25ZbDogW1xuICAgICcjZWRlNWNmJyxcbiAgICAnI2UwYzJhMicsXG4gICAgJyNkMzljODMnLFxuICAgICcjYzE3NjZmJyxcbiAgICAnI2E2NTQ2MScsXG4gICAgJyM4MTM3NTMnLFxuICAgICcjNTQxZjNmJyxcbiAgXSxcbiAgQnVHbjogYXNTY2hlbWUoc2NoZW1lQnVHbiksXG4gIEJ1UHU6IGFzU2NoZW1lKHNjaGVtZUJ1UHUpLFxuICBCdXJnOiBbXG4gICAgJyNmZmM2YzQnLFxuICAgICcjZjRhM2E4JyxcbiAgICAnI2UzODE5MScsXG4gICAgJyNjYzYwN2QnLFxuICAgICcjYWQ0NjZjJyxcbiAgICAnIzhiMzA1OCcsXG4gICAgJyM2NzIwNDQnLFxuICBdLFxuICBCdXJnWWw6IFtcbiAgICAnI2ZiZTZjNScsXG4gICAgJyNmNWJhOTgnLFxuICAgICcjZWU4YTgyJyxcbiAgICAnI2RjNzE3NicsXG4gICAgJyNjODU4NmMnLFxuICAgICcjOWMzZjVkJyxcbiAgICAnIzcwMjg0YScsXG4gIF0sXG4gIENvb2w6IGdldENvbG9yU3RlcHMoaW50ZXJwb2xhdGVDb29sKSxcbiAgRGFya01pbnQ6IFtcbiAgICAnI2QyZmJkNCcsXG4gICAgJyNhNWRiYzInLFxuICAgICcjN2JiY2IwJyxcbiAgICAnIzU1OWM5ZScsXG4gICAgJyMzYTdjODknLFxuICAgICcjMjM1ZDcyJyxcbiAgICAnIzEyM2Y1YScsXG4gIF0sXG4gIEVtcmxkOiBzY2hlbWVFbXJsZCxcbiAgR25CdTogYXNTY2hlbWUoc2NoZW1lR25CdSksXG4gIEdyZWVuczogYXNTY2hlbWUoc2NoZW1lR3JlZW5zKSxcbiAgR3JleXM6IGFzU2NoZW1lKHNjaGVtZUdyZXlzKSxcbiAgSW5mZXJubzogZ2V0Q29sb3JTdGVwcyhpbnRlcnBvbGF0ZUluZmVybm8pLFxuICBNYWdlbnRhOiBbXG4gICAgJyNmM2NiZDMnLFxuICAgICcjZWFhOWJkJyxcbiAgICAnI2RkODhhYycsXG4gICAgJyNjYTY5OWQnLFxuICAgICcjYjE0ZDhlJyxcbiAgICAnIzkxMzU3ZCcsXG4gICAgJyM2YzIxNjcnLFxuICBdLFxuICBNYWdtYTogZ2V0Q29sb3JTdGVwcyhpbnRlcnBvbGF0ZU1hZ21hKSxcbiAgTWludDogW1xuICAgICcjZTRmMWUxJyxcbiAgICAnI2I0ZDljYycsXG4gICAgJyM4OWMwYjYnLFxuICAgICcjNjNhNmEwJyxcbiAgICAnIzQ0OGM4YScsXG4gICAgJyMyODcyNzQnLFxuICAgICcjMGQ1ODVmJyxcbiAgXSxcbiAgT3JhbmdlczogYXNTY2hlbWUoc2NoZW1lT3JhbmdlcyksXG4gIE9yUmQ6IGFzU2NoZW1lKHNjaGVtZU9yUmQpLFxuICBPclllbDogW1xuICAgICcjZWNkYTlhJyxcbiAgICAnI2VmYzQ3ZScsXG4gICAgJyNmM2FkNmEnLFxuICAgICcjZjc5NDVkJyxcbiAgICAnI2Y5N2I1NycsXG4gICAgJyNmNjYzNTYnLFxuICAgICcjZWU0ZDVhJyxcbiAgXSxcbiAgUGVhY2g6IFtcbiAgICAnI2ZkZTBjNScsXG4gICAgJyNmYWNiYTYnLFxuICAgICcjZjhiNThiJyxcbiAgICAnI2Y1OWU3MicsXG4gICAgJyNmMjg1NWQnLFxuICAgICcjZWY2YTRjJyxcbiAgICAnI2ViNGE0MCcsXG4gIF0sXG4gIFBsYXNtYTogZ2V0Q29sb3JTdGVwcyhpbnRlcnBvbGF0ZVBsYXNtYSksXG4gIFBpbmtZbDogW1xuICAgICcjZmVmNmI1JyxcbiAgICAnI2ZmZGQ5YScsXG4gICAgJyNmZmMyODUnLFxuICAgICcjZmZhNjc5JyxcbiAgICAnI2ZhOGE3NicsXG4gICAgJyNmMTZkN2EnLFxuICAgICcjZTE1MzgzJyxcbiAgXSxcbiAgUHVCdTogYXNTY2hlbWUoc2NoZW1lUHVCdSksXG4gIFB1QnVHbjogYXNTY2hlbWUoc2NoZW1lUHVCdUduKSxcbiAgUHVSZDogYXNTY2hlbWUoc2NoZW1lUHVSZCksXG4gIFB1cnA6IFtcbiAgICAnI2YzZTBmNycsXG4gICAgJyNlNGM3ZjEnLFxuICAgICcjZDFhZmU4JyxcbiAgICAnI2I5OThkZCcsXG4gICAgJyM5ZjgyY2UnLFxuICAgICcjODI2ZGJhJyxcbiAgICAnIzYzNTg5ZicsXG4gIF0sXG4gIFB1cnBsZXM6IGFzU2NoZW1lKHNjaGVtZVB1cnBsZXMpLFxuICBQdXJwT3I6IFtcbiAgICAnI2Y5ZGRkYScsXG4gICAgJyNmMmI5YzQnLFxuICAgICcjZTU5N2I5JyxcbiAgICAnI2NlNzhiMycsXG4gICAgJyNhZDVmYWQnLFxuICAgICcjODM0YmEwJyxcbiAgICAnIzU3M2I4OCcsXG4gIF0sXG4gIFJkUHU6IGFzU2NoZW1lKHNjaGVtZVJkUHUpLFxuICBSZWRPcjogW1xuICAgICcjZjZkMmE5JyxcbiAgICAnI2Y1Yjc4ZScsXG4gICAgJyNmMTljN2MnLFxuICAgICcjZWE4MTcxJyxcbiAgICAnI2RkNjg2YycsXG4gICAgJyNjYTUyNjgnLFxuICAgICcjYjEzZjY0JyxcbiAgXSxcbiAgUmVkczogYXNTY2hlbWUoc2NoZW1lUmVkcyksXG4gIFN1bnNldDogW1xuICAgICcjZjNlNzliJyxcbiAgICAnI2ZhYzQ4NCcsXG4gICAgJyNmOGEwN2UnLFxuICAgICcjZWI3Zjg2JyxcbiAgICAnI2NlNjY5MycsXG4gICAgJyNhMDU5YTAnLFxuICAgICcjNWM1M2E1JyxcbiAgXSxcbiAgU3Vuc2V0RGFyazogW1xuICAgICcjZmNkZTljJyxcbiAgICAnI2ZhYTQ3NicsXG4gICAgJyNmMDc0NmUnLFxuICAgICcjZTM0ZjZmJyxcbiAgICAnI2RjMzk3NycsXG4gICAgJyNiOTI1N2EnLFxuICAgICcjN2MxZDZmJyxcbiAgXSxcbiAgVGVhbDogc2NoZW1lVGVhbCxcbiAgVGVhbEdybjogW1xuICAgICcjYjBmMmJjJyxcbiAgICAnIzg5ZThhYycsXG4gICAgJyM2N2RiYTUnLFxuICAgICcjNGNjOGEzJyxcbiAgICAnIzM4YjJhMycsXG4gICAgJyMyYzk4YTAnLFxuICAgICcjMjU3ZDk4JyxcbiAgXSxcbiAgVmlyaWRpczogZ2V0Q29sb3JTdGVwcyhpbnRlcnBvbGF0ZVZpcmlkaXMpLFxuICBXYXJtOiBnZXRDb2xvclN0ZXBzKGludGVycG9sYXRlV2FybSksXG4gIFlsR246IGFzU2NoZW1lKHNjaGVtZVlsR24pLFxuICBZbEduQnU6IGFzU2NoZW1lKHNjaGVtZVlsR25CdSksXG4gIFlsT3JCcjogYXNTY2hlbWUoc2NoZW1lWWxPckJyKSxcbiAgWWxPclJkOiBhc1NjaGVtZShzY2hlbWVZbE9yUmQpLFxufTtcblxuZXhwb3J0IGNvbnN0IENPTE9SX1NDSEVNRV9LRVlTID0gT2JqZWN0LmtleXMoQ09MT1JfU0NIRU1FUyk7XG5cbmNvbnN0IGNvbXBsZW1lbnRhcnkgPSAnI2Y1MjAyMCc7XG5jb25zdCBiYXNlRGlmZkNvbG9yID0gJyMxN2E1YmUnO1xuXG5jb25zdCBkaWZmQ29sb3JzOiBEaWZmQ29sb3JzID0ge1xuICBuZWdhdGl2ZToge1xuICAgIGZsb3dzOiB7XG4gICAgICBzY2hlbWU6IFtGTE9XX01JTl9DT0xPUiwgYmFzZURpZmZDb2xvcl0sXG4gICAgfSxcbiAgfSxcbiAgcG9zaXRpdmU6IHtcbiAgICBmbG93czoge1xuICAgICAgc2NoZW1lOiBbRkxPV19NSU5fQ09MT1IsIGNvbXBsZW1lbnRhcnldLFxuICAgIH0sXG4gIH0sXG4gIGxvY2F0aW9uQXJlYXM6IHtcbiAgICBvdXRsaW5lOiAncmdiYSg5MiwxMTIsMTI4LDAuNSknLFxuICAgIG5vcm1hbDogJ3JnYmEoMjIwLDIyMCwyMjAsMC41KScsXG4gIH0sXG4gIG91dGxpbmVDb2xvcjogJ3JnYigyMzAsMjMzLDIzNyknLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZsb3dNYXBDb2xvcnMoXG4gIHNldHRpbmdzU3RhdGU6IFNldHRpbmdzU3RhdGUsXG4pOiBDb2xvcnMgfCBEaWZmQ29sb3JzIHtcbiAgcmV0dXJuIGdldENvbG9ycyhcbiAgICBmYWxzZSwgLy8gVE9ETzogZGlmZk1vZGVcbiAgICBzZXR0aW5nc1N0YXRlLmNvbG9yU2NoZW1lLFxuICAgIHNldHRpbmdzU3RhdGUuZGFya01vZGUsXG4gICAgc2V0dGluZ3NTdGF0ZS5mYWRlRW5hYmxlZCxcbiAgICBzZXR0aW5nc1N0YXRlLmZhZGVPcGFjaXR5RW5hYmxlZCxcbiAgICBzZXR0aW5nc1N0YXRlLmZhZGVBbW91bnQsXG4gICAgc2V0dGluZ3NTdGF0ZS5hbmltYXRpb25FbmFibGVkLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sb3JzKFxuICBkaWZmTW9kZTogYm9vbGVhbixcbiAgc2NoZW1lS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGRhcmtNb2RlOiBib29sZWFuLFxuICBmYWRlRW5hYmxlZDogYm9vbGVhbixcbiAgZmFkZU9wYWNpdHlFbmFibGVkOiBib29sZWFuLFxuICBmYWRlQW1vdW50OiBudW1iZXIsXG4gIGFuaW1hdGU6IGJvb2xlYW4sXG4pOiBDb2xvcnMgfCBEaWZmQ29sb3JzIHtcbiAgaWYgKGRpZmZNb2RlKSB7XG4gICAgcmV0dXJuIGRpZmZDb2xvcnM7XG4gIH1cblxuICBsZXQgc2NoZW1lID0gKHNjaGVtZUtleSAmJiBDT0xPUl9TQ0hFTUVTW3NjaGVtZUtleV0pIHx8IERFRkFVTFRfQ09MT1JfU0NIRU1FO1xuXG4gIGlmIChkYXJrTW9kZSkge1xuICAgIHNjaGVtZSA9IHNjaGVtZS5zbGljZSgpLnJldmVyc2UoKTtcbiAgfVxuICAvLyBpZiAoYW5pbWF0ZSlcbiAgLy8gaWYgKGZhZGVBbW91bnQgPiAwKVxuICB7XG4gICAgY29uc3QgaW5kaWNlcyA9IHJhbmdlKDAsIE1hdGgubWF4KDEwLCBzY2hlbWUubGVuZ3RoKSk7XG4gICAgY29uc3QgTiA9IGluZGljZXMubGVuZ3RoIC0gMTtcbiAgICBjb25zdCBjb2xvclNjYWxlID0gc2NhbGVTZXF1ZW50aWFsKGludGVycG9sYXRlUmdiQmFzaXMoc2NoZW1lKSkuZG9tYWluKFtcbiAgICAgIDAsXG4gICAgICBOLFxuICAgIF0pO1xuXG4gICAgaWYgKCFmYWRlRW5hYmxlZCB8fCBmYWRlQW1vdW50ID09PSAwKSB7XG4gICAgICBzY2hlbWUgPSBpbmRpY2VzLm1hcCgoYywgaSkgPT4gY29sb3JTY2FsZShpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGFtb3VudCA9IHNjYWxlUG93KClcbiAgICAgICAgLy8gLmV4cG9uZW50KGFuaW1hdGUgPyAxIDogMS8yLjUpXG4gICAgICAgIC8vIC5leHBvbmVudChhbmltYXRlID8gMTAwIDogNTApXG4gICAgICAgIC8vIC5leHBvbmVudChhbmltYXRlID8gMjAgOiA1KVxuICAgICAgICAvLyAuZXhwb25lbnQoMS8yLjUpXG4gICAgICAgIC5leHBvbmVudCgxLjUpXG4gICAgICAgIC5kb21haW4oW04sIDBdKVxuICAgICAgICAvLyAucmFuZ2UoW2ZhZGVBbW91bnQvMTAwKihhbmltYXRlPzI6MSksIDBdKVxuICAgICAgICAvLyAucmFuZ2UoWzAsIGZhZGVBbW91bnQvMTAwKihhbmltYXRlPzI6MSldKVxuICAgICAgICAvLyAucmFuZ2UoZGFya01vZGUgPyBbMS1mYWRlQW1vdW50LzEwMCwgMV0gOiBbMSwgMSAtIGZhZGVBbW91bnQvMTAwXSlcbiAgICAgICAgLy8gLnJhbmdlKGRhcmtNb2RlID8gWzEgLSBmYWRlQW1vdW50LzEwMCwgMV0gOiBbZmFkZUFtb3VudC8xMDAsIDBdKVxuICAgICAgICAvLyAucmFuZ2UoWzEgLSBmYWRlQW1vdW50LzEwMCwgMV0pXG4gICAgICAgIC5yYW5nZShbMCwgKDIgKiBmYWRlQW1vdW50KSAvIDEwMF0pO1xuXG4gICAgICBzY2hlbWUgPSBpbmRpY2VzLm1hcChcbiAgICAgICAgKGMsIGkpID0+IHtcbiAgICAgICAgICBjb25zdCBjb2xvciA9IGNvbG9yU2NhbGUoaSk7XG4gICAgICAgICAgY29uc3QgYSA9IGFtb3VudChpKTtcbiAgICAgICAgICBpZiAoY29sb3IgPT0gbnVsbCB8fCBhID09IG51bGwpIHJldHVybiAnIzAwMCc7XG4gICAgICAgICAgY29uc3QgY29sID0gaGNsKGNvbG9yKTtcbiAgICAgICAgICBjb2wubCA9IGRhcmtNb2RlID8gY29sLmwgLSBjb2wubCAqIGEgOiBjb2wubCArICgxMDAgLSBjb2wubCkgKiBhO1xuICAgICAgICAgIGNvbC5jID0gY29sLmMgLSBjb2wuYyAqIChhIC8gNCk7XG4gICAgICAgICAgaWYgKGZhZGVPcGFjaXR5RW5hYmxlZCkge1xuICAgICAgICAgICAgY29sLm9wYWNpdHkgPSBjb2wub3BhY2l0eSAqICgxLjAgLSBhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNvbC50b1N0cmluZygpO1xuICAgICAgICB9LFxuICAgICAgICAvLyBpbnRlcnBvbGF0ZVJnYkJhc2lzKFtjb2xvclNjYWxlKGkpLCBkYXJrTW9kZSA/ICcjMDAwJyA6ICcjZmZmJ10pKGFtb3VudChpKSlcbiAgICAgICAgLy8gaW50ZXJwb2xhdGVIc2woY29sb3JTY2FsZShpKSwgZGFya01vZGUgPyAnIzAwMCcgOiAnI2ZmZicpKGFtb3VudChpKSkudG9TdHJpbmcoKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRhcmtNb2RlLFxuICAgIGZsb3dzOiB7XG4gICAgICBzY2hlbWUsXG4gICAgfSxcbiAgICBsb2NhdGlvbkNpcmNsZXM6IHtcbiAgICAgIG91dGdvaW5nOiBkYXJrTW9kZSA/ICcjMDAwJyA6ICcjZmZmJyxcbiAgICB9LFxuICAgIG91dGxpbmVDb2xvcjogZGFya01vZGUgPyAnIzAwMCcgOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpJyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaW50ZXJwb2xhdGVSZ2JhQmFzaXMoY29sb3JzOiBzdHJpbmdbXSkge1xuICBjb25zdCBzcGxpbmUgPSBpbnRlcnBvbGF0ZUJhc2lzO1xuICBjb25zdCBuID0gY29sb3JzLmxlbmd0aDtcbiAgbGV0IHI6IGFueSA9IG5ldyBBcnJheShuKSxcbiAgICBnOiBhbnkgPSBuZXcgQXJyYXkobiksXG4gICAgYjogYW55ID0gbmV3IEFycmF5KG4pLFxuICAgIG9wYWNpdHk6IGFueSA9IG5ldyBBcnJheShuKSxcbiAgICBpLFxuICAgIGNvbG9yOiBhbnk7XG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICBjb2xvciA9IGNvbG9yUmdiKGNvbG9yc1tpXSk7XG4gICAgcltpXSA9IGNvbG9yLnIgfHwgMDtcbiAgICBnW2ldID0gY29sb3IuZyB8fCAwO1xuICAgIGJbaV0gPSBjb2xvci5iIHx8IDA7XG4gICAgb3BhY2l0eVtpXSA9IGNvbG9yLm9wYWNpdHkgfHwgMDtcbiAgfVxuICByID0gc3BsaW5lKHIpO1xuICBnID0gc3BsaW5lKGcpO1xuICBiID0gc3BsaW5lKGIpO1xuICBvcGFjaXR5ID0gc3BsaW5lKG9wYWNpdHkpO1xuICAvLyBjb2xvci5vcGFjaXR5ID0gMTtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0OiBudW1iZXIpIHtcbiAgICBjb2xvci5yID0gcih0KTtcbiAgICBjb2xvci5nID0gZyh0KTtcbiAgICBjb2xvci5iID0gYih0KTtcbiAgICBjb2xvci5vcGFjaXR5ID0gb3BhY2l0eSh0KTtcbiAgICByZXR1cm4gY29sb3IgKyAnJztcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZsb3dDb2xvclNjYWxlKFxuICBkb21haW46IFtudW1iZXIsIG51bWJlcl0sXG4gIHNjaGVtZTogc3RyaW5nW10sXG4gIGFuaW1hdGU6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4pOiBDb2xvclNjYWxlIHtcbiAgY29uc3Qgc2NhbGUgPSBzY2FsZVNlcXVlbnRpYWxQb3coaW50ZXJwb2xhdGVSZ2JhQmFzaXMoc2NoZW1lKSlcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgLmV4cG9uZW50KGFuaW1hdGUgPyAxIC8gMiA6IDEgLyAzKVxuICAgIC5kb21haW4oZG9tYWluKTtcblxuICByZXR1cm4gKHZhbHVlOiBudW1iZXIpID0+IGNvbG9yQXNSZ2JhKHNjYWxlKHZhbHVlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGbG93Q29sb3JTY2FsZShcbiAgY29sb3JzOiBDb2xvcnNSR0JBIHwgRGlmZkNvbG9yc1JHQkEsXG4gIG1hZ25pdHVkZUV4dGVudDogW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCxcbiAgYW5pbWF0ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbik6IChtYWduaXR1ZGU6IG51bWJlcikgPT4gW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0ge1xuICBjb25zdCBtaW5NYWduaXR1ZGUgPSBtYWduaXR1ZGVFeHRlbnQgPyBtYWduaXR1ZGVFeHRlbnRbMF0gOiAwO1xuICBjb25zdCBtYXhNYWduaXR1ZGUgPSBtYWduaXR1ZGVFeHRlbnQgPyBtYWduaXR1ZGVFeHRlbnRbMV0gOiAwO1xuICBpZiAoaXNEaWZmQ29sb3JzUkdCQShjb2xvcnMpKSB7XG4gICAgY29uc3QgcG9zU2NhbGUgPSBjcmVhdGVGbG93Q29sb3JTY2FsZShcbiAgICAgIFswLCBtYXhNYWduaXR1ZGVdLFxuICAgICAgY29sb3JzLnBvc2l0aXZlLmZsb3dzLnNjaGVtZSxcbiAgICAgIGFuaW1hdGUsXG4gICAgKTtcbiAgICBjb25zdCBuZWdTY2FsZSA9IGNyZWF0ZUZsb3dDb2xvclNjYWxlKFxuICAgICAgWzAsIG1pbk1hZ25pdHVkZV0sXG4gICAgICBjb2xvcnMubmVnYXRpdmUuZmxvd3Muc2NoZW1lLFxuICAgICAgYW5pbWF0ZSxcbiAgICApO1xuXG4gICAgcmV0dXJuIChtYWduaXR1ZGU6IG51bWJlcikgPT5cbiAgICAgIG1hZ25pdHVkZSA+PSAwID8gcG9zU2NhbGUobWFnbml0dWRlKSA6IG5lZ1NjYWxlKG1hZ25pdHVkZSk7XG4gIH1cblxuICBjb25zdCBzY2FsZSA9IGNyZWF0ZUZsb3dDb2xvclNjYWxlKFxuICAgIFswLCBtYXhNYWduaXR1ZGUgfHwgMF0sXG4gICAgY29sb3JzLmZsb3dzLnNjaGVtZSxcbiAgICBhbmltYXRlLFxuICApO1xuICByZXR1cm4gKG1hZ25pdHVkZTogbnVtYmVyKSA9PiBzY2FsZShtYWduaXR1ZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEaWZmQ29sb3JzKFxuICBjb2xvcnM6IERpZmZDb2xvcnMgfCBDb2xvcnMsXG4pOiBjb2xvcnMgaXMgRGlmZkNvbG9ycyB7XG4gIHJldHVybiAoY29sb3JzIGFzIERpZmZDb2xvcnMpLnBvc2l0aXZlICE9PSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RpZmZDb2xvcnNSR0JBKFxuICBjb2xvcnM6IERpZmZDb2xvcnNSR0JBIHwgQ29sb3JzUkdCQSxcbik6IGNvbG9ycyBpcyBEaWZmQ29sb3JzUkdCQSB7XG4gIHJldHVybiAoY29sb3JzIGFzIERpZmZDb2xvcnNSR0JBKS5wb3NpdGl2ZSAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRMb2NhdGlvbkFyZWFDb2xvcnNSR0JBKFxuICBjb2xvcnM6IExvY2F0aW9uQXJlYUNvbG9ycyB8IHVuZGVmaW5lZCxcbiAgZGFya01vZGU6IGJvb2xlYW4sXG4pOiBMb2NhdGlvbkFyZWFDb2xvcnNSR0JBIHtcbiAgY29uc3Qgbm9ybWFsQ29sb3IgPSAoY29sb3JzICYmIGNvbG9ycy5ub3JtYWwpIHx8IERFRkFVTFRfTE9DQVRJT05fQVJFQV9DT0xPUjtcbiAgY29uc3Qgbm9ybWFsQ29sb3JIY2wgPSBoY2wobm9ybWFsQ29sb3IpO1xuICBjb25zdCBsb2NhdGlvbkFyZWFzTm9ybWFsID0gY29sb3JBc1JnYmEobm9ybWFsQ29sb3IpO1xuICByZXR1cm4ge1xuICAgIG5vcm1hbDogbG9jYXRpb25BcmVhc05vcm1hbCxcbiAgICBjb25uZWN0ZWQ6IGNvbG9yQXNSZ2JhT3IoY29sb3JzICYmIGNvbG9ycy5jb25uZWN0ZWQsIGxvY2F0aW9uQXJlYXNOb3JtYWwpLFxuICAgIGhpZ2hsaWdodGVkOiBjb2xvckFzUmdiYU9yKFxuICAgICAgY29sb3JzICYmIGNvbG9ycy5oaWdobGlnaHRlZCxcbiAgICAgIG9wYWNpZnlIZXgoXG4gICAgICAgIG5vcm1hbENvbG9ySGNsW2RhcmtNb2RlID8gJ2JyaWdodGVyJyA6ICdkYXJrZXInXSgxKS50b1N0cmluZygpLFxuICAgICAgICAwLjUsXG4gICAgICApLFxuICAgICksXG4gICAgc2VsZWN0ZWQ6IGNvbG9yQXNSZ2JhT3IoXG4gICAgICBjb2xvcnMgJiYgY29sb3JzLnNlbGVjdGVkLFxuICAgICAgb3BhY2lmeUhleChcbiAgICAgICAgbm9ybWFsQ29sb3JIY2xbZGFya01vZGUgPyAnYnJpZ2h0ZXInIDogJ2RhcmtlciddKDIpLnRvU3RyaW5nKCksXG4gICAgICAgIDAuOCxcbiAgICAgICksXG4gICAgKSxcbiAgICBvdXRsaW5lOiBjb2xvckFzUmdiYU9yKFxuICAgICAgY29sb3JzICYmIGNvbG9ycy5vdXRsaW5lLFxuICAgICAgY29sb3JBc1JnYmEoXG4gICAgICAgIG5vcm1hbENvbG9ySGNsW2RhcmtNb2RlID8gJ2JyaWdodGVyJyA6ICdkYXJrZXInXSg0KS50b1N0cmluZygpLFxuICAgICAgKSxcbiAgICApLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dDb2xvcnMge1xuICBzY2hlbWU/OiBzdHJpbmdbXTtcbiAgaGlnaGxpZ2h0ZWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb25DaXJjbGVDb2xvcnMge1xuICBpbm5lcj86IHN0cmluZztcbiAgb3V0Z29pbmc/OiBzdHJpbmc7XG4gIGluY29taW5nPzogc3RyaW5nO1xuICBoaWdobGlnaHRlZD86IHN0cmluZztcbiAgZW1wdHk/OiBzdHJpbmc7XG4gIGVtcHR5T3V0bGluZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvbkFyZWFDb2xvcnMge1xuICBvdXRsaW5lPzogc3RyaW5nO1xuICBub3JtYWw/OiBzdHJpbmc7XG4gIHNlbGVjdGVkPzogc3RyaW5nO1xuICBoaWdobGlnaHRlZD86IHN0cmluZztcbiAgY29ubmVjdGVkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VDb2xvcnMge1xuICBkYXJrTW9kZT86IGJvb2xlYW47XG4gIGxvY2F0aW9uQXJlYXM/OiBMb2NhdGlvbkFyZWFDb2xvcnM7XG4gIGRpbW1lZE9wYWNpdHk/OiBudW1iZXI7XG4gIG91dGxpbmVDb2xvcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2xvcnMgZXh0ZW5kcyBCYXNlQ29sb3JzIHtcbiAgZmxvd3M/OiBGbG93Q29sb3JzO1xuICBsb2NhdGlvbkNpcmNsZXM/OiBMb2NhdGlvbkNpcmNsZUNvbG9ycztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93QW5kQ2lyY2xlQ29sb3JzIHtcbiAgZmxvd3M/OiBGbG93Q29sb3JzO1xuICBsb2NhdGlvbkNpcmNsZXM/OiBMb2NhdGlvbkNpcmNsZUNvbG9ycztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaWZmQ29sb3JzIGV4dGVuZHMgQmFzZUNvbG9ycyB7XG4gIHBvc2l0aXZlPzogRmxvd0FuZENpcmNsZUNvbG9ycztcbiAgbmVnYXRpdmU/OiBGbG93QW5kQ2lyY2xlQ29sb3JzO1xufVxuXG4vLyBUaGUgeHh4Q29sb3JzUkdCQSBvYmplY3RzIGFyZSBtaXJyb3JpbmcgdGhlIGlucHV0IGNvbG9ycycgb2JqZWN0cyxcbi8vIGJ1dCBjb252ZXJ0ZWQgdG8gUkdCQSBhbmQgd2l0aCBhbGwgdGhlIG9taXR0ZWQgb25lcyBzZXQgdG8gZGVmYXVsdHNcbi8vIG9yIGRlcml2ZWQuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dDb2xvcnNSR0JBIHtcbiAgc2NoZW1lOiBzdHJpbmdbXTtcbiAgaGlnaGxpZ2h0ZWQ6IFJHQkE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb25DaXJjbGVDb2xvcnNSR0JBIHtcbiAgaW5uZXI6IFJHQkE7XG4gIG91dGdvaW5nOiBSR0JBO1xuICBpbmNvbWluZzogUkdCQTtcbiAgaGlnaGxpZ2h0ZWQ6IFJHQkE7XG4gIGVtcHR5OiBSR0JBO1xuICBlbXB0eU91dGxpbmU6IFJHQkE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb25BcmVhQ29sb3JzUkdCQSB7XG4gIG91dGxpbmU6IFJHQkE7XG4gIG5vcm1hbDogUkdCQTtcbiAgc2VsZWN0ZWQ6IFJHQkE7XG4gIGhpZ2hsaWdodGVkOiBSR0JBO1xuICBjb25uZWN0ZWQ6IFJHQkE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUNvbG9yc1JHQkEge1xuICBkYXJrTW9kZTogYm9vbGVhbjtcbiAgbG9jYXRpb25BcmVhczogTG9jYXRpb25BcmVhQ29sb3JzUkdCQTtcbiAgZGltbWVkT3BhY2l0eTogbnVtYmVyO1xuICBvdXRsaW5lQ29sb3I6IFJHQkE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sb3JzUkdCQSBleHRlbmRzIEJhc2VDb2xvcnNSR0JBIHtcbiAgZmxvd3M6IEZsb3dDb2xvcnNSR0JBO1xuICBsb2NhdGlvbkNpcmNsZXM6IExvY2F0aW9uQ2lyY2xlQ29sb3JzUkdCQTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93QW5kQ2lyY2xlQ29sb3JzUkdCQSB7XG4gIGZsb3dzOiBGbG93Q29sb3JzUkdCQTtcbiAgbG9jYXRpb25DaXJjbGVzOiBMb2NhdGlvbkNpcmNsZUNvbG9yc1JHQkE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlmZkNvbG9yc1JHQkEgZXh0ZW5kcyBCYXNlQ29sb3JzUkdCQSB7XG4gIHBvc2l0aXZlOiBGbG93QW5kQ2lyY2xlQ29sb3JzUkdCQTtcbiAgbmVnYXRpdmU6IEZsb3dBbmRDaXJjbGVDb2xvcnNSR0JBO1xufVxuXG5mdW5jdGlvbiBnZXRGbG93QW5kQ2lyY2xlQ29sb3JzKFxuICBpbnB1dENvbG9yczogRmxvd0FuZENpcmNsZUNvbG9ycyB8IHVuZGVmaW5lZCxcbiAgZGVmYXVsdEZsb3dDb2xvclNjaGVtZTogc3RyaW5nW10sXG4gIGRhcmtNb2RlOiBib29sZWFuLFxuKTogRmxvd0FuZENpcmNsZUNvbG9yc1JHQkEge1xuICBjb25zdCBmbG93Q29sb3JTY2hlbWUgPVxuICAgIChpbnB1dENvbG9ycyAmJiBpbnB1dENvbG9ycy5mbG93cyAmJiBpbnB1dENvbG9ycy5mbG93cy5zY2hlbWUpIHx8XG4gICAgZGVmYXVsdEZsb3dDb2xvclNjaGVtZTtcbiAgY29uc3QgbWF4Rmxvd0NvbG9ySGNsID0gaGNsKGZsb3dDb2xvclNjaGVtZVtmbG93Q29sb3JTY2hlbWUubGVuZ3RoIC0gMV0pO1xuICBjb25zdCBmbG93Q29sb3JIaWdobGlnaHRlZCA9IGNvbG9yQXNSZ2JhT3IoXG4gICAgaW5wdXRDb2xvcnMgJiYgaW5wdXRDb2xvcnMuZmxvd3MgJiYgaW5wdXRDb2xvcnMuZmxvd3MuaGlnaGxpZ2h0ZWQsXG4gICAgY29sb3JBc1JnYmEoXG4gICAgICBtYXhGbG93Q29sb3JIY2xbZGFya01vZGUgPyAnYnJpZ2h0ZXInIDogJ2RhcmtlciddKDAuNykudG9TdHJpbmcoKSxcbiAgICApLFxuICApO1xuXG4gIGNvbnN0IGVtcHR5Q29sb3IgPSBjb2xvckFzUmdiYU9yKFxuICAgIGlucHV0Q29sb3JzPy5sb2NhdGlvbkNpcmNsZXM/LmVtcHR5LFxuICAgIGRhcmtNb2RlID8gJyMwMDAnIDogJyNmZmYnLFxuICApO1xuICBjb25zdCBpbm5lckNvbG9yID0gY29sb3JBc1JnYmFPcihcbiAgICBpbnB1dENvbG9ycyAmJlxuICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzICYmXG4gICAgICBpbnB1dENvbG9ycy5sb2NhdGlvbkNpcmNsZXMuaW5uZXIsXG4gICAgbWF4Rmxvd0NvbG9ySGNsLnRvU3RyaW5nKCksXG4gICk7XG4gIHJldHVybiB7XG4gICAgZmxvd3M6IHtcbiAgICAgIHNjaGVtZTogZmxvd0NvbG9yU2NoZW1lLFxuICAgICAgaGlnaGxpZ2h0ZWQ6IGZsb3dDb2xvckhpZ2hsaWdodGVkLFxuICAgIH0sXG4gICAgbG9jYXRpb25DaXJjbGVzOiB7XG4gICAgICBpbm5lcjogaW5uZXJDb2xvcixcbiAgICAgIG91dGdvaW5nOiBjb2xvckFzUmdiYU9yKFxuICAgICAgICBpbnB1dENvbG9ycyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcy5vdXRnb2luZyxcbiAgICAgICAgZGFya01vZGUgPyAnIzAwMCcgOiAnI2ZmZicsXG4gICAgICApLFxuICAgICAgaW5jb21pbmc6IGNvbG9yQXNSZ2JhT3IoXG4gICAgICAgIGlucHV0Q29sb3JzICYmXG4gICAgICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzICYmXG4gICAgICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzLmluY29taW5nLFxuICAgICAgICBtYXhGbG93Q29sb3JIY2xbZGFya01vZGUgPyAnYnJpZ2h0ZXInIDogJ2RhcmtlciddKDEuMjUpLnRvU3RyaW5nKCksXG4gICAgICApLFxuICAgICAgaGlnaGxpZ2h0ZWQ6IGNvbG9yQXNSZ2JhT3IoXG4gICAgICAgIGlucHV0Q29sb3JzICYmXG4gICAgICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzICYmXG4gICAgICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzLmhpZ2hsaWdodGVkLFxuICAgICAgICBmbG93Q29sb3JIaWdobGlnaHRlZCxcbiAgICAgICksXG4gICAgICBlbXB0eTogZW1wdHlDb2xvcixcbiAgICAgIGVtcHR5T3V0bGluZTogbWl4Q29sb3JzUkdCQShpbm5lckNvbG9yLCBlbXB0eUNvbG9yLCAwLjQpLFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEJhc2VDb2xvcnNSR0JBKFxuICBjb2xvcnM6IENvbG9ycyB8IERpZmZDb2xvcnMgfCB1bmRlZmluZWQsXG4pOiBCYXNlQ29sb3JzUkdCQSB7XG4gIGNvbnN0IGRhcmtNb2RlID0gY29sb3JzICYmIGNvbG9ycy5kYXJrTW9kZSA/IHRydWUgOiBmYWxzZTtcbiAgcmV0dXJuIHtcbiAgICBkYXJrTW9kZSxcbiAgICBsb2NhdGlvbkFyZWFzOiBnZXRMb2NhdGlvbkFyZWFDb2xvcnNSR0JBKFxuICAgICAgY29sb3JzICYmIGNvbG9ycy5sb2NhdGlvbkFyZWFzLFxuICAgICAgZGFya01vZGUsXG4gICAgKSxcbiAgICBvdXRsaW5lQ29sb3I6IGNvbG9yQXNSZ2JhKFxuICAgICAgKGNvbG9ycyAmJiBjb2xvcnMub3V0bGluZUNvbG9yKSB8fCBERUZBVUxUX09VVExJTkVfQ09MT1IsXG4gICAgKSxcbiAgICBkaW1tZWRPcGFjaXR5OlxuICAgICAgY29sb3JzICYmIGNvbG9ycy5kaW1tZWRPcGFjaXR5ICE9IG51bGxcbiAgICAgICAgPyBjb2xvcnMuZGltbWVkT3BhY2l0eVxuICAgICAgICA6IERFRkFVTFRfRElNTUVEX09QQUNJVFksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xvcnNSR0JBKGNvbG9yczogQ29sb3JzIHwgdW5kZWZpbmVkKTogQ29sb3JzUkdCQSB7XG4gIGNvbnN0IGJhc2VDb2xvcnNSR0JBID0gZ2V0QmFzZUNvbG9yc1JHQkEoY29sb3JzKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlQ29sb3JzUkdCQSxcbiAgICAuLi5nZXRGbG93QW5kQ2lyY2xlQ29sb3JzKFxuICAgICAgY29sb3JzLFxuICAgICAgREVGQVVMVF9GTE9XX0NPTE9SX1NDSEVNRSxcbiAgICAgIGJhc2VDb2xvcnNSR0JBLmRhcmtNb2RlLFxuICAgICksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREaWZmQ29sb3JzUkdCQShcbiAgY29sb3JzOiBEaWZmQ29sb3JzIHwgdW5kZWZpbmVkLFxuKTogRGlmZkNvbG9yc1JHQkEge1xuICBjb25zdCBiYXNlQ29sb3JzUkdCQSA9IGdldEJhc2VDb2xvcnNSR0JBKGNvbG9ycyk7XG4gIHJldHVybiB7XG4gICAgLi4uYmFzZUNvbG9yc1JHQkEsXG4gICAgcG9zaXRpdmU6IGdldEZsb3dBbmRDaXJjbGVDb2xvcnMoXG4gICAgICBjb2xvcnMgJiYgY29sb3JzLnBvc2l0aXZlLFxuICAgICAgREVGQVVMVF9GTE9XX0NPTE9SX1NDSEVNRV9QT1NJVElWRSxcbiAgICAgIGJhc2VDb2xvcnNSR0JBLmRhcmtNb2RlLFxuICAgICksXG4gICAgbmVnYXRpdmU6IGdldEZsb3dBbmRDaXJjbGVDb2xvcnMoXG4gICAgICBjb2xvcnMgJiYgY29sb3JzLm5lZ2F0aXZlLFxuICAgICAgREVGQVVMVF9GTE9XX0NPTE9SX1NDSEVNRV9ORUdBVElWRSxcbiAgICAgIGJhc2VDb2xvcnNSR0JBLmRhcmtNb2RlLFxuICAgICksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZ2JhQXNTdHJpbmcoY29sb3I6IFJHQkEpOiBzdHJpbmcge1xuICByZXR1cm4gYHJnYmEoJHtjb2xvci5qb2luKCcsJyl9KWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaWRwb2ludChhOiBudW1iZXIsIGI6IG51bWJlciwgemVyb1RvT25lOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYSArIChiIC0gYSkgKiB6ZXJvVG9PbmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaXhDb2xvcnNSR0JBKFxuICBjb2xvcjE6IFJHQkEsXG4gIGNvbG9yMjogUkdCQSxcbiAgemVyb1RvT25lOiBudW1iZXIsXG4pOiBSR0JBIHtcbiAgcmV0dXJuIGNvbG9yMS5tYXAoKHYsIGkpID0+IG1pZHBvaW50KHYsIGNvbG9yMltpXSwgemVyb1RvT25lKSkgYXMgUkdCQTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZ2V0Q29sb3JzO1xuIl19
|
|
466
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsV0FBVyxFQUNYLFVBQVUsRUFDVixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsYUFBYSxFQUNiLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixhQUFhLEVBQ2IsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixZQUFZLEdBQ2IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQy9CLE9BQU8sRUFBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxLQUFLLElBQUksT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksUUFBUSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBR2hFLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDO0FBQ3JDLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFDO0FBQ25DLE1BQU0sc0JBQXNCLEdBQUcsdUJBQXVCLENBQUM7QUFDdkQsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLHNCQUFzQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3RFLE1BQU0sMkJBQTJCLEdBQUcsdUJBQXVCLENBQUM7QUFFNUQsTUFBTSxrQ0FBa0MsR0FBRyxDQUFDLHNCQUFzQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQy9FLE1BQU0sa0NBQWtDLEdBQUcsQ0FB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QUMxQixJQUFJLEVBQUU7UUFDSixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxPQUFPLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQztJQUNoQyxNQUFNLEVBQUU7UUFDTixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUMxQixLQUFLLEVBQUU7UUFDTCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUMxQixNQUFNLEVBQUU7UUFDTixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxVQUFVLEVBQUU7UUFDVixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxJQUFJLEVBQUUsVUFBVTtJQUNoQixPQUFPLEVBQUU7UUFDUCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxPQUFPLEVBQUUsYUFBYSxDQUFDLGtCQUFrQixDQUFDO0lBQzFDLElBQUksRUFBRSxhQUFhLENBQUMsZUFBZSxDQUFDO0lBQ3BDLElBQUksRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQzFCLE1BQU0sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQzlCLE1BQU0sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQzlCLE1BQU0sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDO0NBQy9CLENBQUM7QUFF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USxFQUFFLHNCQUFzQixDQUM5QixNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsRUFDekIsa0NBQWtDLEVBQ2xDLGNBQWMsQ0FBQyxRQUFRLENBQ3hCLElBQ0Q7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFXO0lBQ3RDLE9BQU8sUUFBUSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxTQUFpQjtJQUM5RCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDakMsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQzNCLE1BQVksRUFDWixNQUFZLEVBQ1osU0FBaUI7SUFFakIsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQVMsQ0FBQztBQUN6RSxDQUFDO0FBRUQsZUFBZSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpbnRlcnBvbGF0ZUNvb2wsXG4gIGludGVycG9sYXRlSW5mZXJubyxcbiAgaW50ZXJwb2xhdGVNYWdtYSxcbiAgaW50ZXJwb2xhdGVQbGFzbWEsXG4gIGludGVycG9sYXRlVmlyaWRpcyxcbiAgaW50ZXJwb2xhdGVXYXJtLFxuICBzY2hlbWVCbHVlcyxcbiAgc2NoZW1lQnVHbixcbiAgc2NoZW1lQnVQdSxcbiAgc2NoZW1lR25CdSxcbiAgc2NoZW1lR3JlZW5zLFxuICBzY2hlbWVHcmV5cyxcbiAgc2NoZW1lT3JhbmdlcyxcbiAgc2NoZW1lT3JSZCxcbiAgc2NoZW1lUHVCdSxcbiAgc2NoZW1lUHVCdUduLFxuICBzY2hlbWVQdVJkLFxuICBzY2hlbWVQdXJwbGVzLFxuICBzY2hlbWVSZFB1LFxuICBzY2hlbWVSZWRzLFxuICBzY2hlbWVZbEduLFxuICBzY2hlbWVZbEduQnUsXG4gIHNjaGVtZVlsT3JCcixcbiAgc2NoZW1lWWxPclJkLFxufSBmcm9tICdkMy1zY2FsZS1jaHJvbWF0aWMnO1xuaW1wb3J0IHtyYW5nZX0gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IHtzY2FsZVBvdywgc2NhbGVTZXF1ZW50aWFsLCBzY2FsZVNlcXVlbnRpYWxQb3d9IGZyb20gJ2QzLXNjYWxlJztcbmltcG9ydCB7aW50ZXJwb2xhdGVCYXNpcywgaW50ZXJwb2xhdGVSZ2JCYXNpc30gZnJvbSAnZDMtaW50ZXJwb2xhdGUnO1xuaW1wb3J0IHtjb2xvciBhcyBkM2NvbG9yLCBoY2wsIHJnYiBhcyBjb2xvclJnYn0gZnJvbSAnZDMtY29sb3InO1xuaW1wb3J0IHtTZXR0aW5nc1N0YXRlfSBmcm9tICcuL0Zsb3dtYXBTdGF0ZSc7XG5cbmNvbnN0IERFRkFVTFRfT1VUTElORV9DT0xPUiA9ICcjZmZmJztcbmNvbnN0IERFRkFVTFRfRElNTUVEX09QQUNJVFkgPSAwLjQ7XG5jb25zdCBERUZBVUxUX0ZMT1dfTUlOX0NPTE9SID0gJ3JnYmEoMjQwLDI0MCwyNDAsMC41KSc7XG5jb25zdCBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FID0gW0RFRkFVTFRfRkxPV19NSU5fQ09MT1IsICcjMTM3Q0JEJ107XG5jb25zdCBERUZBVUxUX0xPQ0FUSU9OX0FSRUFfQ09MT1IgPSAncmdiYSgyMjAsMjIwLDIyMCwwLjUpJztcblxuY29uc3QgREVGQVVMVF9GTE9XX0NPTE9SX1NDSEVNRV9QT1NJVElWRSA9IFtERUZBVUxUX0ZMT1dfTUlOX0NPTE9SLCAnI2Y2NjU0ZSddO1xuY29uc3QgREVGQVVMVF9GTE9XX0NPTE9SX1NDSEVNRV9ORUdBVElWRSA9IFtERUZBVUxUX0ZMT1dfTUlOX0NPTE9SLCAnIzAwYTljYyddO1xuXG5leHBvcnQgdHlwZSBDb2xvclNjYWxlID0gKHZhbHVlOiBudW1iZXIpID0+IFJHQkE7XG5leHBvcnQgdHlwZSBSR0JBID0gW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cbmNvbnN0IEZBTExCQUNLX0NPTE9SX1JHQkE6IFJHQkEgPSBbMjU1LCAyNTUsIDI1NSwgMjU1XTtcblxuZXhwb3J0IGZ1bmN0aW9uIG9wYWNpdHlGbG9hdFRvSW50ZWdlcihvcGFjaXR5OiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gTWF0aC5yb3VuZChvcGFjaXR5ICogMjU1KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wYWNpZnlIZXgoaGV4Q29kZTogc3RyaW5nLCBvcGFjaXR5OiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBjID0gZDNjb2xvcihoZXhDb2RlKTtcbiAgaWYgKCFjKSB7XG4gICAgY29uc29sZS53YXJuKCdJbnZhbGlkIGNvbG9yOiAnLCBoZXhDb2RlKTtcbiAgICByZXR1cm4gYHJnYmEoMjU1LCAyNTUsIDI1NSwgJHtvcGFjaXR5fSlgO1xuICB9XG4gIGNvbnN0IGNvbCA9IGMucmdiKCk7XG4gIHJldHVybiBgcmdiYSgke2NvbC5yfSwgJHtjb2wuZ30sICR7Y29sLmJ9LCAke29wYWNpdHl9KWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2xvckFzUmdiYShjb2xvcjogc3RyaW5nKTogUkdCQSB7XG4gIGNvbnN0IGNvbCA9IGQzY29sb3IoY29sb3IpO1xuICBpZiAoIWNvbCkge1xuICAgIGNvbnNvbGUud2FybignSW52YWxpZCBjb2xvcjogJywgY29sb3IpO1xuICAgIHJldHVybiBGQUxMQkFDS19DT0xPUl9SR0JBO1xuICB9XG4gIGNvbnN0IHJnYkNvbG9yID0gY29sLnJnYigpO1xuICByZXR1cm4gW1xuICAgIE1hdGguZmxvb3IocmdiQ29sb3IuciksXG4gICAgTWF0aC5mbG9vcihyZ2JDb2xvci5nKSxcbiAgICBNYXRoLmZsb29yKHJnYkNvbG9yLmIpLFxuICAgIG9wYWNpdHlGbG9hdFRvSW50ZWdlcihjb2wub3BhY2l0eSksXG4gIF07XG59XG5cbmZ1bmN0aW9uIGNvbG9yQXNSZ2JhT3IoXG4gIGNvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGRlZmF1bHRDb2xvcjogUkdCQSB8IHN0cmluZyxcbik6IFJHQkEge1xuICBpZiAoY29sb3IpIHtcbiAgICByZXR1cm4gY29sb3JBc1JnYmEoY29sb3IpO1xuICB9XG4gIGlmICh0eXBlb2YgZGVmYXVsdENvbG9yID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBjb2xvckFzUmdiYShkZWZhdWx0Q29sb3IpO1xuICB9XG4gIHJldHVybiBkZWZhdWx0Q29sb3I7XG59XG5cbmNvbnN0IGFzU2NoZW1lID0gKHNjaGVtZTogUmVhZG9ubHlBcnJheTxSZWFkb25seUFycmF5PHN0cmluZz4+KSA9PlxuICBzY2hlbWVbc2NoZW1lLmxlbmd0aCAtIDFdIGFzIHN0cmluZ1tdO1xuXG5leHBvcnQgZW51bSBDb2xvclNjaGVtZSB7XG4gIHByaW1hcnkgPSAnIzE2MmQzYycsXG59XG5cbmNvbnN0IFNDQUxFX05VTV9TVEVQUyA9IDIwO1xuY29uc3QgZ2V0Q29sb3JTdGVwcyA9IChpbnRlcnBvbGF0ZTogKHg6IG51bWJlcikgPT4gc3RyaW5nKSA9PlxuICByYW5nZSgwLCBTQ0FMRV9OVU1fU1RFUFMgKyAxKVxuICAgIC5tYXAoKGkpID0+IGludGVycG9sYXRlKGkgLyBTQ0FMRV9OVU1fU1RFUFMpKVxuICAgIC5yZXZlcnNlKCk7XG5cbmNvbnN0IEZMT1dfTUlOX0NPTE9SID0gJ3JnYmEoMjQwLDI0MCwyNDAsMC41KSc7XG5leHBvcnQgY29uc3QgQkxVRVNfUEFMRSA9IFtGTE9XX01JTl9DT0xPUiwgQ29sb3JTY2hlbWUucHJpbWFyeV07XG5jb25zdCBzY2hlbWVCbHVZbCA9IFtcbiAgJyNmN2ZlYWUnLFxuICAnI2I3ZTZhNScsXG4gICcjN2NjYmEyJyxcbiAgJyM0NmFlYTAnLFxuICAnIzA4OTA5OScsXG4gICcjMDA3MThiJyxcbiAgJyMwNDUyNzUnLFxuXTtcblxuY29uc3Qgc2NoZW1lRW1ybGQgPSBbXG4gICcjZDNmMmEzJyxcbiAgJyM5N2UxOTYnLFxuICAnIzZjYzA4YicsXG4gICcjNGM5YjgyJyxcbiAgJyMyMTdhNzknLFxuICAnIzEwNTk2NScsXG4gICcjMDc0MDUwJyxcbl07XG5cbmV4cG9ydCBjb25zdCBzY2hlbWVUZWFsID0gW1xuICAnI2QxZWVlYScsXG4gICcjYThkYmQ5JyxcbiAgJyM4NWM0YzknLFxuICAnIzY4YWJiOCcsXG4gICcjNGY5MGE2JyxcbiAgJyMzYjczOGYnLFxuICAnIzJhNTY3NCcsXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT0xPUl9TQ0hFTUUgPSBzY2hlbWVUZWFsO1xuZXhwb3J0IGNvbnN0IENPTE9SX1NDSEVNRVM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmdbXX0gPSB7XG4gIEJsdWVzOiBhc1NjaGVtZShzY2hlbWVCbHVlcyksXG4gIEJsdWVzUGFsZTogQkxVRVNfUEFMRSxcbiAgQmx1R3JuOiBbXG4gICAgJyNjNGU2YzMnLFxuICAgICcjOTZkMmE0JyxcbiAgICAnIzZkYmM5MCcsXG4gICAgJyM0ZGEyODQnLFxuICAgICcjMzY4NzdhJyxcbiAgICAnIzI2NmI2ZScsXG4gICAgJyMxZDRmNjAnLFxuICBdLFxuICBCbHVZbDogc2NoZW1lQmx1WWwsXG4gIEJyd25ZbDogW1xuICAgICcjZWRlNWNmJyxcbiAgICAnI2UwYzJhMicsXG4gICAgJyNkMzljODMnLFxuICAgICcjYzE3NjZmJyxcbiAgICAnI2E2NTQ2MScsXG4gICAgJyM4MTM3NTMnLFxuICAgICcjNTQxZjNmJyxcbiAgXSxcbiAgQnVHbjogYXNTY2hlbWUoc2NoZW1lQnVHbiksXG4gIEJ1UHU6IGFzU2NoZW1lKHNjaGVtZUJ1UHUpLFxuICBCdXJnOiBbXG4gICAgJyNmZmM2YzQnLFxuICAgICcjZjRhM2E4JyxcbiAgICAnI2UzODE5MScsXG4gICAgJyNjYzYwN2QnLFxuICAgICcjYWQ0NjZjJyxcbiAgICAnIzhiMzA1OCcsXG4gICAgJyM2NzIwNDQnLFxuICBdLFxuICBCdXJnWWw6IFtcbiAgICAnI2ZiZTZjNScsXG4gICAgJyNmNWJhOTgnLFxuICAgICcjZWU4YTgyJyxcbiAgICAnI2RjNzE3NicsXG4gICAgJyNjODU4NmMnLFxuICAgICcjOWMzZjVkJyxcbiAgICAnIzcwMjg0YScsXG4gIF0sXG4gIENvb2w6IGdldENvbG9yU3RlcHMoaW50ZXJwb2xhdGVDb29sKSxcbiAgRGFya01pbnQ6IFtcbiAgICAnI2QyZmJkNCcsXG4gICAgJyNhNWRiYzInLFxuICAgICcjN2JiY2IwJyxcbiAgICAnIzU1OWM5ZScsXG4gICAgJyMzYTdjODknLFxuICAgICcjMjM1ZDcyJyxcbiAgICAnIzEyM2Y1YScsXG4gIF0sXG4gIEVtcmxkOiBzY2hlbWVFbXJsZCxcbiAgR25CdTogYXNTY2hlbWUoc2NoZW1lR25CdSksXG4gIEdyZWVuczogYXNTY2hlbWUoc2NoZW1lR3JlZW5zKSxcbiAgR3JleXM6IGFzU2NoZW1lKHNjaGVtZUdyZXlzKSxcbiAgSW5mZXJubzogZ2V0Q29sb3JTdGVwcyhpbnRlcnBvbGF0ZUluZmVybm8pLFxuICBNYWdlbnRhOiBbXG4gICAgJyNmM2NiZDMnLFxuICAgICcjZWFhOWJkJyxcbiAgICAnI2RkODhhYycsXG4gICAgJyNjYTY5OWQnLFxuICAgICcjYjE0ZDhlJyxcbiAgICAnIzkxMzU3ZCcsXG4gICAgJyM2YzIxNjcnLFxuICBdLFxuICBNYWdtYTogZ2V0Q29sb3JTdGVwcyhpbnRlcnBvbGF0ZU1hZ21hKSxcbiAgTWludDogW1xuICAgICcjZTRmMWUxJyxcbiAgICAnI2I0ZDljYycsXG4gICAgJyM4OWMwYjYnLFxuICAgICcjNjNhNmEwJyxcbiAgICAnIzQ0OGM4YScsXG4gICAgJyMyODcyNzQnLFxuICAgICcjMGQ1ODVmJyxcbiAgXSxcbiAgT3JhbmdlczogYXNTY2hlbWUoc2NoZW1lT3JhbmdlcyksXG4gIE9yUmQ6IGFzU2NoZW1lKHNjaGVtZU9yUmQpLFxuICBPclllbDogW1xuICAgICcjZWNkYTlhJyxcbiAgICAnI2VmYzQ3ZScsXG4gICAgJyNmM2FkNmEnLFxuICAgICcjZjc5NDVkJyxcbiAgICAnI2Y5N2I1NycsXG4gICAgJyNmNjYzNTYnLFxuICAgICcjZWU0ZDVhJyxcbiAgXSxcbiAgUGVhY2g6IFtcbiAgICAnI2ZkZTBjNScsXG4gICAgJyNmYWNiYTYnLFxuICAgICcjZjhiNThiJyxcbiAgICAnI2Y1OWU3MicsXG4gICAgJyNmMjg1NWQnLFxuICAgICcjZWY2YTRjJyxcbiAgICAnI2ViNGE0MCcsXG4gIF0sXG4gIFBsYXNtYTogZ2V0Q29sb3JTdGVwcyhpbnRlcnBvbGF0ZVBsYXNtYSksXG4gIFBpbmtZbDogW1xuICAgICcjZmVmNmI1JyxcbiAgICAnI2ZmZGQ5YScsXG4gICAgJyNmZmMyODUnLFxuICAgICcjZmZhNjc5JyxcbiAgICAnI2ZhOGE3NicsXG4gICAgJyNmMTZkN2EnLFxuICAgICcjZTE1MzgzJyxcbiAgXSxcbiAgUHVCdTogYXNTY2hlbWUoc2NoZW1lUHVCdSksXG4gIFB1QnVHbjogYXNTY2hlbWUoc2NoZW1lUHVCdUduKSxcbiAgUHVSZDogYXNTY2hlbWUoc2NoZW1lUHVSZCksXG4gIFB1cnA6IFtcbiAgICAnI2YzZTBmNycsXG4gICAgJyNlNGM3ZjEnLFxuICAgICcjZDFhZmU4JyxcbiAgICAnI2I5OThkZCcsXG4gICAgJyM5ZjgyY2UnLFxuICAgICcjODI2ZGJhJyxcbiAgICAnIzYzNTg5ZicsXG4gIF0sXG4gIFB1cnBsZXM6IGFzU2NoZW1lKHNjaGVtZVB1cnBsZXMpLFxuICBQdXJwT3I6IFtcbiAgICAnI2Y5ZGRkYScsXG4gICAgJyNmMmI5YzQnLFxuICAgICcjZTU5N2I5JyxcbiAgICAnI2NlNzhiMycsXG4gICAgJyNhZDVmYWQnLFxuICAgICcjODM0YmEwJyxcbiAgICAnIzU3M2I4OCcsXG4gIF0sXG4gIFJkUHU6IGFzU2NoZW1lKHNjaGVtZVJkUHUpLFxuICBSZWRPcjogW1xuICAgICcjZjZkMmE5JyxcbiAgICAnI2Y1Yjc4ZScsXG4gICAgJyNmMTljN2MnLFxuICAgICcjZWE4MTcxJyxcbiAgICAnI2RkNjg2YycsXG4gICAgJyNjYTUyNjgnLFxuICAgICcjYjEzZjY0JyxcbiAgXSxcbiAgUmVkczogYXNTY2hlbWUoc2NoZW1lUmVkcyksXG4gIFN1bnNldDogW1xuICAgICcjZjNlNzliJyxcbiAgICAnI2ZhYzQ4NCcsXG4gICAgJyNmOGEwN2UnLFxuICAgICcjZWI3Zjg2JyxcbiAgICAnI2NlNjY5MycsXG4gICAgJyNhMDU5YTAnLFxuICAgICcjNWM1M2E1JyxcbiAgXSxcbiAgU3Vuc2V0RGFyazogW1xuICAgICcjZmNkZTljJyxcbiAgICAnI2ZhYTQ3NicsXG4gICAgJyNmMDc0NmUnLFxuICAgICcjZTM0ZjZmJyxcbiAgICAnI2RjMzk3NycsXG4gICAgJyNiOTI1N2EnLFxuICAgICcjN2MxZDZmJyxcbiAgXSxcbiAgVGVhbDogc2NoZW1lVGVhbCxcbiAgVGVhbEdybjogW1xuICAgICcjYjBmMmJjJyxcbiAgICAnIzg5ZThhYycsXG4gICAgJyM2N2RiYTUnLFxuICAgICcjNGNjOGEzJyxcbiAgICAnIzM4YjJhMycsXG4gICAgJyMyYzk4YTAnLFxuICAgICcjMjU3ZDk4JyxcbiAgXSxcbiAgVmlyaWRpczogZ2V0Q29sb3JTdGVwcyhpbnRlcnBvbGF0ZVZpcmlkaXMpLFxuICBXYXJtOiBnZXRDb2xvclN0ZXBzKGludGVycG9sYXRlV2FybSksXG4gIFlsR246IGFzU2NoZW1lKHNjaGVtZVlsR24pLFxuICBZbEduQnU6IGFzU2NoZW1lKHNjaGVtZVlsR25CdSksXG4gIFlsT3JCcjogYXNTY2hlbWUoc2NoZW1lWWxPckJyKSxcbiAgWWxPclJkOiBhc1NjaGVtZShzY2hlbWVZbE9yUmQpLFxufTtcblxuZXhwb3J0IGNvbnN0IENPTE9SX1NDSEVNRV9LRVlTID0gT2JqZWN0LmtleXMoQ09MT1JfU0NIRU1FUyk7XG5cbmNvbnN0IGNvbXBsZW1lbnRhcnkgPSAnI2Y1MjAyMCc7XG5jb25zdCBiYXNlRGlmZkNvbG9yID0gJyMxN2E1YmUnO1xuXG5jb25zdCBkaWZmQ29sb3JzOiBEaWZmQ29sb3JzID0ge1xuICBuZWdhdGl2ZToge1xuICAgIGZsb3dzOiB7XG4gICAgICBzY2hlbWU6IFtGTE9XX01JTl9DT0xPUiwgYmFzZURpZmZDb2xvcl0sXG4gICAgfSxcbiAgfSxcbiAgcG9zaXRpdmU6IHtcbiAgICBmbG93czoge1xuICAgICAgc2NoZW1lOiBbRkxPV19NSU5fQ09MT1IsIGNvbXBsZW1lbnRhcnldLFxuICAgIH0sXG4gIH0sXG4gIGxvY2F0aW9uQXJlYXM6IHtcbiAgICBvdXRsaW5lOiAncmdiYSg5MiwxMTIsMTI4LDAuNSknLFxuICAgIG5vcm1hbDogJ3JnYmEoMjIwLDIyMCwyMjAsMC41KScsXG4gIH0sXG4gIG91dGxpbmVDb2xvcjogJ3JnYigyMzAsMjMzLDIzNyknLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZsb3dtYXBDb2xvcnMoXG4gIHNldHRpbmdzU3RhdGU6IFNldHRpbmdzU3RhdGUsXG4pOiBDb2xvcnMgfCBEaWZmQ29sb3JzIHtcbiAgcmV0dXJuIGdldENvbG9ycyhcbiAgICBmYWxzZSwgLy8gVE9ETzogZGlmZk1vZGVcbiAgICBzZXR0aW5nc1N0YXRlLmNvbG9yU2NoZW1lLFxuICAgIHNldHRpbmdzU3RhdGUuZGFya01vZGUsXG4gICAgc2V0dGluZ3NTdGF0ZS5mYWRlRW5hYmxlZCxcbiAgICBzZXR0aW5nc1N0YXRlLmZhZGVPcGFjaXR5RW5hYmxlZCxcbiAgICBzZXR0aW5nc1N0YXRlLmZhZGVBbW91bnQsXG4gICAgc2V0dGluZ3NTdGF0ZS5hbmltYXRpb25FbmFibGVkLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sb3JzKFxuICBkaWZmTW9kZTogYm9vbGVhbixcbiAgc2NoZW1lS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGRhcmtNb2RlOiBib29sZWFuLFxuICBmYWRlRW5hYmxlZDogYm9vbGVhbixcbiAgZmFkZU9wYWNpdHlFbmFibGVkOiBib29sZWFuLFxuICBmYWRlQW1vdW50OiBudW1iZXIsXG4gIGFuaW1hdGU6IGJvb2xlYW4sXG4pOiBDb2xvcnMgfCBEaWZmQ29sb3JzIHtcbiAgaWYgKGRpZmZNb2RlKSB7XG4gICAgcmV0dXJuIGRpZmZDb2xvcnM7XG4gIH1cblxuICBsZXQgc2NoZW1lID0gKHNjaGVtZUtleSAmJiBDT0xPUl9TQ0hFTUVTW3NjaGVtZUtleV0pIHx8IERFRkFVTFRfQ09MT1JfU0NIRU1FO1xuXG4gIGlmIChkYXJrTW9kZSkge1xuICAgIHNjaGVtZSA9IHNjaGVtZS5zbGljZSgpLnJldmVyc2UoKTtcbiAgfVxuICAvLyBpZiAoYW5pbWF0ZSlcbiAgLy8gaWYgKGZhZGVBbW91bnQgPiAwKVxuICB7XG4gICAgY29uc3QgaW5kaWNlcyA9IHJhbmdlKDAsIE1hdGgubWF4KDEwLCBzY2hlbWUubGVuZ3RoKSk7XG4gICAgY29uc3QgTiA9IGluZGljZXMubGVuZ3RoIC0gMTtcbiAgICBjb25zdCBjb2xvclNjYWxlID0gc2NhbGVTZXF1ZW50aWFsKGludGVycG9sYXRlUmdiQmFzaXMoc2NoZW1lKSkuZG9tYWluKFtcbiAgICAgIDAsXG4gICAgICBOLFxuICAgIF0pO1xuXG4gICAgaWYgKCFmYWRlRW5hYmxlZCB8fCBmYWRlQW1vdW50ID09PSAwKSB7XG4gICAgICBzY2hlbWUgPSBpbmRpY2VzLm1hcCgoYywgaSkgPT4gY29sb3JTY2FsZShpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGFtb3VudCA9IHNjYWxlUG93KClcbiAgICAgICAgLy8gLmV4cG9uZW50KGFuaW1hdGUgPyAxIDogMS8yLjUpXG4gICAgICAgIC8vIC5leHBvbmVudChhbmltYXRlID8gMTAwIDogNTApXG4gICAgICAgIC8vIC5leHBvbmVudChhbmltYXRlID8gMjAgOiA1KVxuICAgICAgICAvLyAuZXhwb25lbnQoMS8yLjUpXG4gICAgICAgIC5leHBvbmVudCgxLjUpXG4gICAgICAgIC5kb21haW4oW04sIDBdKVxuICAgICAgICAvLyAucmFuZ2UoW2ZhZGVBbW91bnQvMTAwKihhbmltYXRlPzI6MSksIDBdKVxuICAgICAgICAvLyAucmFuZ2UoWzAsIGZhZGVBbW91bnQvMTAwKihhbmltYXRlPzI6MSldKVxuICAgICAgICAvLyAucmFuZ2UoZGFya01vZGUgPyBbMS1mYWRlQW1vdW50LzEwMCwgMV0gOiBbMSwgMSAtIGZhZGVBbW91bnQvMTAwXSlcbiAgICAgICAgLy8gLnJhbmdlKGRhcmtNb2RlID8gWzEgLSBmYWRlQW1vdW50LzEwMCwgMV0gOiBbZmFkZUFtb3VudC8xMDAsIDBdKVxuICAgICAgICAvLyAucmFuZ2UoWzEgLSBmYWRlQW1vdW50LzEwMCwgMV0pXG4gICAgICAgIC5yYW5nZShbMCwgKDIgKiBmYWRlQW1vdW50KSAvIDEwMF0pO1xuXG4gICAgICBzY2hlbWUgPSBpbmRpY2VzLm1hcChcbiAgICAgICAgKGMsIGkpID0+IHtcbiAgICAgICAgICBjb25zdCBjb2xvciA9IGNvbG9yU2NhbGUoaSk7XG4gICAgICAgICAgY29uc3QgYSA9IGFtb3VudChpKTtcbiAgICAgICAgICBpZiAoY29sb3IgPT0gbnVsbCB8fCBhID09IG51bGwpIHJldHVybiAnIzAwMCc7XG4gICAgICAgICAgY29uc3QgY29sID0gaGNsKGNvbG9yKTtcbiAgICAgICAgICBjb2wubCA9IGRhcmtNb2RlID8gY29sLmwgLSBjb2wubCAqIGEgOiBjb2wubCArICgxMDAgLSBjb2wubCkgKiBhO1xuICAgICAgICAgIGNvbC5jID0gY29sLmMgLSBjb2wuYyAqIChhIC8gNCk7XG4gICAgICAgICAgaWYgKGZhZGVPcGFjaXR5RW5hYmxlZCkge1xuICAgICAgICAgICAgY29sLm9wYWNpdHkgPSBjb2wub3BhY2l0eSAqICgxLjAgLSBhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNvbC50b1N0cmluZygpO1xuICAgICAgICB9LFxuICAgICAgICAvLyBpbnRlcnBvbGF0ZVJnYkJhc2lzKFtjb2xvclNjYWxlKGkpLCBkYXJrTW9kZSA/ICcjMDAwJyA6ICcjZmZmJ10pKGFtb3VudChpKSlcbiAgICAgICAgLy8gaW50ZXJwb2xhdGVIc2woY29sb3JTY2FsZShpKSwgZGFya01vZGUgPyAnIzAwMCcgOiAnI2ZmZicpKGFtb3VudChpKSkudG9TdHJpbmcoKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRhcmtNb2RlLFxuICAgIGZsb3dzOiB7XG4gICAgICBzY2hlbWUsXG4gICAgfSxcbiAgICBsb2NhdGlvbkNpcmNsZXM6IHtcbiAgICAgIG91dGdvaW5nOiBkYXJrTW9kZSA/ICcjMDAwJyA6ICcjZmZmJyxcbiAgICB9LFxuICAgIG91dGxpbmVDb2xvcjogZGFya01vZGUgPyAnIzAwMCcgOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpJyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaW50ZXJwb2xhdGVSZ2JhQmFzaXMoY29sb3JzOiBzdHJpbmdbXSkge1xuICBjb25zdCBzcGxpbmUgPSBpbnRlcnBvbGF0ZUJhc2lzO1xuICBjb25zdCBuID0gY29sb3JzLmxlbmd0aDtcbiAgbGV0IHI6IGFueSA9IG5ldyBBcnJheShuKSxcbiAgICBnOiBhbnkgPSBuZXcgQXJyYXkobiksXG4gICAgYjogYW55ID0gbmV3IEFycmF5KG4pLFxuICAgIG9wYWNpdHk6IGFueSA9IG5ldyBBcnJheShuKSxcbiAgICBpLFxuICAgIGNvbG9yOiBhbnk7XG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICBjb2xvciA9IGNvbG9yUmdiKGNvbG9yc1tpXSk7XG4gICAgcltpXSA9IGNvbG9yLnIgfHwgMDtcbiAgICBnW2ldID0gY29sb3IuZyB8fCAwO1xuICAgIGJbaV0gPSBjb2xvci5iIHx8IDA7XG4gICAgb3BhY2l0eVtpXSA9IGNvbG9yLm9wYWNpdHkgfHwgMDtcbiAgfVxuICByID0gc3BsaW5lKHIpO1xuICBnID0gc3BsaW5lKGcpO1xuICBiID0gc3BsaW5lKGIpO1xuICBvcGFjaXR5ID0gc3BsaW5lKG9wYWNpdHkpO1xuICAvLyBjb2xvci5vcGFjaXR5ID0gMTtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0OiBudW1iZXIpIHtcbiAgICBjb2xvci5yID0gcih0KTtcbiAgICBjb2xvci5nID0gZyh0KTtcbiAgICBjb2xvci5iID0gYih0KTtcbiAgICBjb2xvci5vcGFjaXR5ID0gb3BhY2l0eSh0KTtcbiAgICByZXR1cm4gY29sb3IgKyAnJztcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZsb3dDb2xvclNjYWxlKFxuICBkb21haW46IFtudW1iZXIsIG51bWJlcl0sXG4gIHNjaGVtZTogc3RyaW5nW10sXG4gIGFuaW1hdGU6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4pOiBDb2xvclNjYWxlIHtcbiAgY29uc3Qgc2NhbGUgPSBzY2FsZVNlcXVlbnRpYWxQb3coaW50ZXJwb2xhdGVSZ2JhQmFzaXMoc2NoZW1lKSlcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgLmV4cG9uZW50KGFuaW1hdGUgPyAxIC8gMiA6IDEgLyAzKVxuICAgIC5kb21haW4oZG9tYWluKTtcblxuICByZXR1cm4gKHZhbHVlOiBudW1iZXIpID0+IGNvbG9yQXNSZ2JhKHNjYWxlKHZhbHVlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGbG93Q29sb3JTY2FsZShcbiAgY29sb3JzOiBDb2xvcnNSR0JBIHwgRGlmZkNvbG9yc1JHQkEsXG4gIG1hZ25pdHVkZUV4dGVudDogW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCxcbiAgYW5pbWF0ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbik6IChtYWduaXR1ZGU6IG51bWJlcikgPT4gW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0ge1xuICBjb25zdCBtaW5NYWduaXR1ZGUgPSBtYWduaXR1ZGVFeHRlbnQgPyBtYWduaXR1ZGVFeHRlbnRbMF0gOiAwO1xuICBjb25zdCBtYXhNYWduaXR1ZGUgPSBtYWduaXR1ZGVFeHRlbnQgPyBtYWduaXR1ZGVFeHRlbnRbMV0gOiAwO1xuICBpZiAoaXNEaWZmQ29sb3JzUkdCQShjb2xvcnMpKSB7XG4gICAgY29uc3QgcG9zU2NhbGUgPSBjcmVhdGVGbG93Q29sb3JTY2FsZShcbiAgICAgIFswLCBtYXhNYWduaXR1ZGVdLFxuICAgICAgY29sb3JzLnBvc2l0aXZlLmZsb3dzLnNjaGVtZSxcbiAgICAgIGFuaW1hdGUsXG4gICAgKTtcbiAgICBjb25zdCBuZWdTY2FsZSA9IGNyZWF0ZUZsb3dDb2xvclNjYWxlKFxuICAgICAgWzAsIG1pbk1hZ25pdHVkZV0sXG4gICAgICBjb2xvcnMubmVnYXRpdmUuZmxvd3Muc2NoZW1lLFxuICAgICAgYW5pbWF0ZSxcbiAgICApO1xuXG4gICAgcmV0dXJuIChtYWduaXR1ZGU6IG51bWJlcikgPT5cbiAgICAgIG1hZ25pdHVkZSA+PSAwID8gcG9zU2NhbGUobWFnbml0dWRlKSA6IG5lZ1NjYWxlKG1hZ25pdHVkZSk7XG4gIH1cblxuICBjb25zdCBzY2FsZSA9IGNyZWF0ZUZsb3dDb2xvclNjYWxlKFxuICAgIFswLCBtYXhNYWduaXR1ZGUgfHwgMF0sXG4gICAgY29sb3JzLmZsb3dzLnNjaGVtZSxcbiAgICBhbmltYXRlLFxuICApO1xuICByZXR1cm4gKG1hZ25pdHVkZTogbnVtYmVyKSA9PiBzY2FsZShtYWduaXR1ZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEaWZmQ29sb3JzKFxuICBjb2xvcnM6IERpZmZDb2xvcnMgfCBDb2xvcnMsXG4pOiBjb2xvcnMgaXMgRGlmZkNvbG9ycyB7XG4gIHJldHVybiAoY29sb3JzIGFzIERpZmZDb2xvcnMpLnBvc2l0aXZlICE9PSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RpZmZDb2xvcnNSR0JBKFxuICBjb2xvcnM6IERpZmZDb2xvcnNSR0JBIHwgQ29sb3JzUkdCQSxcbik6IGNvbG9ycyBpcyBEaWZmQ29sb3JzUkdCQSB7XG4gIHJldHVybiAoY29sb3JzIGFzIERpZmZDb2xvcnNSR0JBKS5wb3NpdGl2ZSAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRMb2NhdGlvbkFyZWFDb2xvcnNSR0JBKFxuICBjb2xvcnM6IExvY2F0aW9uQXJlYUNvbG9ycyB8IHVuZGVmaW5lZCxcbiAgZGFya01vZGU6IGJvb2xlYW4sXG4pOiBMb2NhdGlvbkFyZWFDb2xvcnNSR0JBIHtcbiAgY29uc3Qgbm9ybWFsQ29sb3IgPSAoY29sb3JzICYmIGNvbG9ycy5ub3JtYWwpIHx8IERFRkFVTFRfTE9DQVRJT05fQVJFQV9DT0xPUjtcbiAgY29uc3Qgbm9ybWFsQ29sb3JIY2wgPSBoY2wobm9ybWFsQ29sb3IpO1xuICBjb25zdCBsb2NhdGlvbkFyZWFzTm9ybWFsID0gY29sb3JBc1JnYmEobm9ybWFsQ29sb3IpO1xuICByZXR1cm4ge1xuICAgIG5vcm1hbDogbG9jYXRpb25BcmVhc05vcm1hbCxcbiAgICBjb25uZWN0ZWQ6IGNvbG9yQXNSZ2JhT3IoY29sb3JzICYmIGNvbG9ycy5jb25uZWN0ZWQsIGxvY2F0aW9uQXJlYXNOb3JtYWwpLFxuICAgIGhpZ2hsaWdodGVkOiBjb2xvckFzUmdiYU9yKFxuICAgICAgY29sb3JzICYmIGNvbG9ycy5oaWdobGlnaHRlZCxcbiAgICAgIG9wYWNpZnlIZXgoXG4gICAgICAgIG5vcm1hbENvbG9ySGNsW2RhcmtNb2RlID8gJ2JyaWdodGVyJyA6ICdkYXJrZXInXSgxKS50b1N0cmluZygpLFxuICAgICAgICAwLjUsXG4gICAgICApLFxuICAgICksXG4gICAgc2VsZWN0ZWQ6IGNvbG9yQXNSZ2JhT3IoXG4gICAgICBjb2xvcnMgJiYgY29sb3JzLnNlbGVjdGVkLFxuICAgICAgb3BhY2lmeUhleChcbiAgICAgICAgbm9ybWFsQ29sb3JIY2xbZGFya01vZGUgPyAnYnJpZ2h0ZXInIDogJ2RhcmtlciddKDIpLnRvU3RyaW5nKCksXG4gICAgICAgIDAuOCxcbiAgICAgICksXG4gICAgKSxcbiAgICBvdXRsaW5lOiBjb2xvckFzUmdiYU9yKFxuICAgICAgY29sb3JzICYmIGNvbG9ycy5vdXRsaW5lLFxuICAgICAgY29sb3JBc1JnYmEoXG4gICAgICAgIG5vcm1hbENvbG9ySGNsW2RhcmtNb2RlID8gJ2JyaWdodGVyJyA6ICdkYXJrZXInXSg0KS50b1N0cmluZygpLFxuICAgICAgKSxcbiAgICApLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dDb2xvcnMge1xuICBzY2hlbWU/OiBzdHJpbmdbXTtcbiAgaGlnaGxpZ2h0ZWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb25DaXJjbGVDb2xvcnMge1xuICBpbm5lcj86IHN0cmluZztcbiAgb3V0Z29pbmc/OiBzdHJpbmc7XG4gIGluY29taW5nPzogc3RyaW5nO1xuICBoaWdobGlnaHRlZD86IHN0cmluZztcbiAgZW1wdHk/OiBzdHJpbmc7XG4gIGVtcHR5T3V0bGluZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvbkFyZWFDb2xvcnMge1xuICBvdXRsaW5lPzogc3RyaW5nO1xuICBub3JtYWw/OiBzdHJpbmc7XG4gIHNlbGVjdGVkPzogc3RyaW5nO1xuICBoaWdobGlnaHRlZD86IHN0cmluZztcbiAgY29ubmVjdGVkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VDb2xvcnMge1xuICBkYXJrTW9kZT86IGJvb2xlYW47XG4gIGxvY2F0aW9uQXJlYXM/OiBMb2NhdGlvbkFyZWFDb2xvcnM7XG4gIGRpbW1lZE9wYWNpdHk/OiBudW1iZXI7XG4gIG91dGxpbmVDb2xvcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2xvcnMgZXh0ZW5kcyBCYXNlQ29sb3JzIHtcbiAgZmxvd3M/OiBGbG93Q29sb3JzO1xuICBsb2NhdGlvbkNpcmNsZXM/OiBMb2NhdGlvbkNpcmNsZUNvbG9ycztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93QW5kQ2lyY2xlQ29sb3JzIHtcbiAgZmxvd3M/OiBGbG93Q29sb3JzO1xuICBsb2NhdGlvbkNpcmNsZXM/OiBMb2NhdGlvbkNpcmNsZUNvbG9ycztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaWZmQ29sb3JzIGV4dGVuZHMgQmFzZUNvbG9ycyB7XG4gIHBvc2l0aXZlPzogRmxvd0FuZENpcmNsZUNvbG9ycztcbiAgbmVnYXRpdmU/OiBGbG93QW5kQ2lyY2xlQ29sb3JzO1xufVxuXG4vLyBUaGUgeHh4Q29sb3JzUkdCQSBvYmplY3RzIGFyZSBtaXJyb3JpbmcgdGhlIGlucHV0IGNvbG9ycycgb2JqZWN0cyxcbi8vIGJ1dCBjb252ZXJ0ZWQgdG8gUkdCQSBhbmQgd2l0aCBhbGwgdGhlIG9taXR0ZWQgb25lcyBzZXQgdG8gZGVmYXVsdHNcbi8vIG9yIGRlcml2ZWQuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dDb2xvcnNSR0JBIHtcbiAgc2NoZW1lOiBzdHJpbmdbXTtcbiAgaGlnaGxpZ2h0ZWQ6IFJHQkE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb25DaXJjbGVDb2xvcnNSR0JBIHtcbiAgaW5uZXI6IFJHQkE7XG4gIG91dGdvaW5nOiBSR0JBO1xuICBpbmNvbWluZzogUkdCQTtcbiAgaGlnaGxpZ2h0ZWQ6IFJHQkE7XG4gIGVtcHR5OiBSR0JBO1xuICBlbXB0eU91dGxpbmU6IFJHQkE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb25BcmVhQ29sb3JzUkdCQSB7XG4gIG91dGxpbmU6IFJHQkE7XG4gIG5vcm1hbDogUkdCQTtcbiAgc2VsZWN0ZWQ6IFJHQkE7XG4gIGhpZ2hsaWdodGVkOiBSR0JBO1xuICBjb25uZWN0ZWQ6IFJHQkE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUNvbG9yc1JHQkEge1xuICBkYXJrTW9kZTogYm9vbGVhbjtcbiAgbG9jYXRpb25BcmVhczogTG9jYXRpb25BcmVhQ29sb3JzUkdCQTtcbiAgZGltbWVkT3BhY2l0eTogbnVtYmVyO1xuICBvdXRsaW5lQ29sb3I6IFJHQkE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sb3JzUkdCQSBleHRlbmRzIEJhc2VDb2xvcnNSR0JBIHtcbiAgZmxvd3M6IEZsb3dDb2xvcnNSR0JBO1xuICBsb2NhdGlvbkNpcmNsZXM6IExvY2F0aW9uQ2lyY2xlQ29sb3JzUkdCQTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93QW5kQ2lyY2xlQ29sb3JzUkdCQSB7XG4gIGZsb3dzOiBGbG93Q29sb3JzUkdCQTtcbiAgbG9jYXRpb25DaXJjbGVzOiBMb2NhdGlvbkNpcmNsZUNvbG9yc1JHQkE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlmZkNvbG9yc1JHQkEgZXh0ZW5kcyBCYXNlQ29sb3JzUkdCQSB7XG4gIHBvc2l0aXZlOiBGbG93QW5kQ2lyY2xlQ29sb3JzUkdCQTtcbiAgbmVnYXRpdmU6IEZsb3dBbmRDaXJjbGVDb2xvcnNSR0JBO1xufVxuXG5mdW5jdGlvbiBnZXRGbG93QW5kQ2lyY2xlQ29sb3JzKFxuICBpbnB1dENvbG9yczogRmxvd0FuZENpcmNsZUNvbG9ycyB8IHVuZGVmaW5lZCxcbiAgZGVmYXVsdEZsb3dDb2xvclNjaGVtZTogc3RyaW5nW10sXG4gIGRhcmtNb2RlOiBib29sZWFuLFxuKTogRmxvd0FuZENpcmNsZUNvbG9yc1JHQkEge1xuICBjb25zdCBmbG93Q29sb3JTY2hlbWUgPVxuICAgIChpbnB1dENvbG9ycyAmJiBpbnB1dENvbG9ycy5mbG93cyAmJiBpbnB1dENvbG9ycy5mbG93cy5zY2hlbWUpIHx8XG4gICAgZGVmYXVsdEZsb3dDb2xvclNjaGVtZTtcbiAgY29uc3QgbWF4Rmxvd0NvbG9ySGNsID0gaGNsKGZsb3dDb2xvclNjaGVtZVtmbG93Q29sb3JTY2hlbWUubGVuZ3RoIC0gMV0pO1xuICBjb25zdCBmbG93Q29sb3JIaWdobGlnaHRlZCA9IGNvbG9yQXNSZ2JhT3IoXG4gICAgaW5wdXRDb2xvcnMgJiYgaW5wdXRDb2xvcnMuZmxvd3MgJiYgaW5wdXRDb2xvcnMuZmxvd3MuaGlnaGxpZ2h0ZWQsXG4gICAgY29sb3JBc1JnYmEoXG4gICAgICBtYXhGbG93Q29sb3JIY2xbZGFya01vZGUgPyAnYnJpZ2h0ZXInIDogJ2RhcmtlciddKDAuNykudG9TdHJpbmcoKSxcbiAgICApLFxuICApO1xuXG4gIGNvbnN0IGVtcHR5Q29sb3IgPSBjb2xvckFzUmdiYU9yKFxuICAgIGlucHV0Q29sb3JzPy5sb2NhdGlvbkNpcmNsZXM/LmVtcHR5LFxuICAgIGRhcmtNb2RlID8gJyMwMDAnIDogJyNmZmYnLFxuICApO1xuICBjb25zdCBpbm5lckNvbG9yID0gY29sb3JBc1JnYmFPcihcbiAgICBpbnB1dENvbG9ycyAmJlxuICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzICYmXG4gICAgICBpbnB1dENvbG9ycy5sb2NhdGlvbkNpcmNsZXMuaW5uZXIsXG4gICAgbWF4Rmxvd0NvbG9ySGNsLnRvU3RyaW5nKCksXG4gICk7XG4gIHJldHVybiB7XG4gICAgZmxvd3M6IHtcbiAgICAgIHNjaGVtZTogZmxvd0NvbG9yU2NoZW1lLFxuICAgICAgaGlnaGxpZ2h0ZWQ6IGZsb3dDb2xvckhpZ2hsaWdodGVkLFxuICAgIH0sXG4gICAgbG9jYXRpb25DaXJjbGVzOiB7XG4gICAgICBpbm5lcjogaW5uZXJDb2xvcixcbiAgICAgIG91dGdvaW5nOiBjb2xvckFzUmdiYU9yKFxuICAgICAgICBpbnB1dENvbG9ycyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcy5vdXRnb2luZyxcbiAgICAgICAgZGFya01vZGUgPyAnIzAwMCcgOiAnI2ZmZicsXG4gICAgICApLFxuICAgICAgaW5jb21pbmc6IGNvbG9yQXNSZ2JhT3IoXG4gICAgICAgIGlucHV0Q29sb3JzICYmXG4gICAgICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzICYmXG4gICAgICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzLmluY29taW5nLFxuICAgICAgICBtYXhGbG93Q29sb3JIY2xbZGFya01vZGUgPyAnYnJpZ2h0ZXInIDogJ2RhcmtlciddKDEuMjUpLnRvU3RyaW5nKCksXG4gICAgICApLFxuICAgICAgaGlnaGxpZ2h0ZWQ6IGNvbG9yQXNSZ2JhT3IoXG4gICAgICAgIGlucHV0Q29sb3JzICYmXG4gICAgICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzICYmXG4gICAgICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzLmhpZ2hsaWdodGVkLFxuICAgICAgICBmbG93Q29sb3JIaWdobGlnaHRlZCxcbiAgICAgICksXG4gICAgICBlbXB0eTogZW1wdHlDb2xvcixcbiAgICAgIGVtcHR5T3V0bGluZTogbWl4Q29sb3JzUkdCQShpbm5lckNvbG9yLCBlbXB0eUNvbG9yLCAwLjQpLFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEJhc2VDb2xvcnNSR0JBKFxuICBjb2xvcnM6IENvbG9ycyB8IERpZmZDb2xvcnMgfCB1bmRlZmluZWQsXG4pOiBCYXNlQ29sb3JzUkdCQSB7XG4gIGNvbnN0IGRhcmtNb2RlID0gY29sb3JzICYmIGNvbG9ycy5kYXJrTW9kZSA/IHRydWUgOiBmYWxzZTtcbiAgcmV0dXJuIHtcbiAgICBkYXJrTW9kZSxcbiAgICBsb2NhdGlvbkFyZWFzOiBnZXRMb2NhdGlvbkFyZWFDb2xvcnNSR0JBKFxuICAgICAgY29sb3JzICYmIGNvbG9ycy5sb2NhdGlvbkFyZWFzLFxuICAgICAgZGFya01vZGUsXG4gICAgKSxcbiAgICBvdXRsaW5lQ29sb3I6IGNvbG9yQXNSZ2JhKFxuICAgICAgKGNvbG9ycyAmJiBjb2xvcnMub3V0bGluZUNvbG9yKSB8fCBERUZBVUxUX09VVExJTkVfQ09MT1IsXG4gICAgKSxcbiAgICBkaW1tZWRPcGFjaXR5OlxuICAgICAgY29sb3JzICYmIGNvbG9ycy5kaW1tZWRPcGFjaXR5ICE9IG51bGxcbiAgICAgICAgPyBjb2xvcnMuZGltbWVkT3BhY2l0eVxuICAgICAgICA6IERFRkFVTFRfRElNTUVEX09QQUNJVFksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xvcnNSR0JBKGNvbG9yczogQ29sb3JzIHwgdW5kZWZpbmVkKTogQ29sb3JzUkdCQSB7XG4gIGNvbnN0IGJhc2VDb2xvcnNSR0JBID0gZ2V0QmFzZUNvbG9yc1JHQkEoY29sb3JzKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlQ29sb3JzUkdCQSxcbiAgICAuLi5nZXRGbG93QW5kQ2lyY2xlQ29sb3JzKFxuICAgICAgY29sb3JzLFxuICAgICAgREVGQVVMVF9GTE9XX0NPTE9SX1NDSEVNRSxcbiAgICAgIGJhc2VDb2xvcnNSR0JBLmRhcmtNb2RlLFxuICAgICksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREaWZmQ29sb3JzUkdCQShcbiAgY29sb3JzOiBEaWZmQ29sb3JzIHwgdW5kZWZpbmVkLFxuKTogRGlmZkNvbG9yc1JHQkEge1xuICBjb25zdCBiYXNlQ29sb3JzUkdCQSA9IGdldEJhc2VDb2xvcnNSR0JBKGNvbG9ycyk7XG4gIHJldHVybiB7XG4gICAgLi4uYmFzZUNvbG9yc1JHQkEsXG4gICAgcG9zaXRpdmU6IGdldEZsb3dBbmRDaXJjbGVDb2xvcnMoXG4gICAgICBjb2xvcnMgJiYgY29sb3JzLnBvc2l0aXZlLFxuICAgICAgREVGQVVMVF9GTE9XX0NPTE9SX1NDSEVNRV9QT1NJVElWRSxcbiAgICAgIGJhc2VDb2xvcnNSR0JBLmRhcmtNb2RlLFxuICAgICksXG4gICAgbmVnYXRpdmU6IGdldEZsb3dBbmRDaXJjbGVDb2xvcnMoXG4gICAgICBjb2xvcnMgJiYgY29sb3JzLm5lZ2F0aXZlLFxuICAgICAgREVGQVVMVF9GTE9XX0NPTE9SX1NDSEVNRV9ORUdBVElWRSxcbiAgICAgIGJhc2VDb2xvcnNSR0JBLmRhcmtNb2RlLFxuICAgICksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZ2JhQXNTdHJpbmcoY29sb3I6IFJHQkEpOiBzdHJpbmcge1xuICByZXR1cm4gYHJnYmEoJHtjb2xvci5qb2luKCcsJyl9KWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaWRwb2ludChhOiBudW1iZXIsIGI6IG51bWJlciwgemVyb1RvT25lOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYSArIChiIC0gYSkgKiB6ZXJvVG9PbmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaXhDb2xvcnNSR0JBKFxuICBjb2xvcjE6IFJHQkEsXG4gIGNvbG9yMjogUkdCQSxcbiAgemVyb1RvT25lOiBudW1iZXIsXG4pOiBSR0JBIHtcbiAgcmV0dXJuIGNvbG9yMS5tYXAoKHYsIGkpID0+IG1pZHBvaW50KHYsIGNvbG9yMltpXSwgemVyb1RvT25lKSkgYXMgUkdCQTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZ2V0Q29sb3JzO1xuIl19
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
export * from './types';
|
|
2
2
|
export * from './colors';
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
3
|
+
export * from './FlowmapState';
|
|
4
|
+
export * from './FlowmapSelectors';
|
|
5
5
|
export * from './time';
|
|
6
6
|
export * from './getViewStateForLocations';
|
|
7
|
-
export * from './provider/
|
|
8
|
-
export { default as
|
|
9
|
-
export type { default as
|
|
10
|
-
export { default as
|
|
7
|
+
export * from './provider/FlowmapDataProvider';
|
|
8
|
+
export { default as FlowmapAggregateAccessors } from './FlowmapAggregateAccessors';
|
|
9
|
+
export type { default as FlowmapDataProvider } from './provider/FlowmapDataProvider';
|
|
10
|
+
export { default as LocalFlowmapDataProvider } from './provider/LocalFlowmapDataProvider';
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export * from './types';
|
|
2
2
|
export * from './colors';
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
3
|
+
export * from './FlowmapState';
|
|
4
|
+
export * from './FlowmapSelectors';
|
|
5
5
|
export * from './time';
|
|
6
6
|
export * from './getViewStateForLocations';
|
|
7
|
-
export * from './provider/
|
|
8
|
-
export { default as
|
|
9
|
-
export { default as
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
export * from './provider/FlowmapDataProvider';
|
|
8
|
+
export { default as FlowmapAggregateAccessors } from './FlowmapAggregateAccessors';
|
|
9
|
+
export { default as LocalFlowmapDataProvider } from './provider/LocalFlowmapDataProvider';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxPQUFPLEVBQUMsT0FBTyxJQUFJLHlCQUF5QixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFakYsT0FBTyxFQUFDLE9BQU8sSUFBSSx3QkFBd0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL0Zsb3dtYXBTdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL0Zsb3dtYXBTZWxlY3RvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi90aW1lJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0Vmlld1N0YXRlRm9yTG9jYXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZXIvRmxvd21hcERhdGFQcm92aWRlcic7XG5leHBvcnQge2RlZmF1bHQgYXMgRmxvd21hcEFnZ3JlZ2F0ZUFjY2Vzc29yc30gZnJvbSAnLi9GbG93bWFwQWdncmVnYXRlQWNjZXNzb3JzJztcbmV4cG9ydCB0eXBlIHtkZWZhdWx0IGFzIEZsb3dtYXBEYXRhUHJvdmlkZXJ9IGZyb20gJy4vcHJvdmlkZXIvRmxvd21hcERhdGFQcm92aWRlcic7XG5leHBvcnQge2RlZmF1bHQgYXMgTG9jYWxGbG93bWFwRGF0YVByb3ZpZGVyfSBmcm9tICcuL3Byb3ZpZGVyL0xvY2FsRmxvd21hcERhdGFQcm92aWRlcic7XG4iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AggregateFlow, Cluster, LocationTotals } from '..';
|
|
2
|
+
import { FlowmapState } from '../FlowmapState';
|
|
3
|
+
import { ClusterNode, FlowmapData, FlowmapDataAccessors, LayersData, ViewportProps } from '../types';
|
|
4
|
+
export default interface FlowmapDataProvider<L, F> {
|
|
5
|
+
setAccessors(accessors: FlowmapDataAccessors<L, F>): void;
|
|
6
|
+
setFlowmapState(flowmapState: FlowmapState): Promise<void>;
|
|
7
|
+
getViewportForLocations(dims: [number, number]): Promise<ViewportProps>;
|
|
8
|
+
getFlowByIndex(index: number): Promise<F | AggregateFlow | undefined>;
|
|
9
|
+
getLocationById(id: string): Promise<L | Cluster | undefined>;
|
|
10
|
+
getLocationByIndex(idx: number): Promise<L | ClusterNode | undefined>;
|
|
11
|
+
getTotalsForLocation(id: string): Promise<LocationTotals | undefined>;
|
|
12
|
+
getLayersData(): Promise<LayersData | undefined>;
|
|
13
|
+
}
|
|
14
|
+
export declare function isFlowmapData<L, F>(data: Record<string, any>): data is FlowmapData<L, F>;
|
|
15
|
+
export declare function isFlowmapDataProvider<L, F>(dataProvider: Record<string, any>): dataProvider is FlowmapDataProvider<L, F>;
|
|
16
|
+
//# sourceMappingURL=FlowmapDataProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"FlowmapDataProvider.d.ts","sourceRoot":"","sources":["../../src/provider/FlowmapDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,OAAO,EAAqB,cAAc,EAAC,MAAM,IAAI,CAAC;AAC7E,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,aAAa,EACd,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,OAAO,WAAW,mBAAmB,CAAC,CAAC,EAAE,CAAC;IAC/C,YAAY,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAE1D,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAI3D,uBAAuB,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAIxE,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,aAAa,GAAG,SAAS,CAAC,CAAC;IAEtE,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAE9D,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,WAAW,GAAG,SAAS,CAAC,CAAC;IAEtE,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAQtE,aAAa,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;CAClD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,IAAI,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAQ3B;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAChC,YAAY,IAAI,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAU3C"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
export function
|
|
1
|
+
export function isFlowmapData(data) {
|
|
2
2
|
return (data &&
|
|
3
3
|
data.locations &&
|
|
4
4
|
data.flows &&
|
|
5
5
|
Array.isArray(data.locations) &&
|
|
6
6
|
Array.isArray(data.flows));
|
|
7
7
|
}
|
|
8
|
-
export function
|
|
8
|
+
export function isFlowmapDataProvider(dataProvider) {
|
|
9
9
|
return (dataProvider &&
|
|
10
|
-
typeof dataProvider.
|
|
10
|
+
typeof dataProvider.setFlowmapState === 'function' &&
|
|
11
11
|
typeof dataProvider.getViewportForLocations === 'function' &&
|
|
12
12
|
typeof dataProvider.getFlowByIndex === 'function' &&
|
|
13
13
|
typeof dataProvider.getLocationById === 'function' &&
|
|
14
14
|
typeof dataProvider.getLocationByIndex === 'function' &&
|
|
15
15
|
typeof dataProvider.getLayersData === 'function');
|
|
16
16
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd21hcERhdGFQcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aWRlci9GbG93bWFwRGF0YVByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNDQSxNQUFNLFVBQVUsYUFBYSxDQUMzQixJQUF5QjtJQUV6QixPQUFPLENBQ0wsSUFBSTtRQUNKLElBQUksQ0FBQyxTQUFTO1FBQ2QsSUFBSSxDQUFDLEtBQUs7UUFDVixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDN0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQzFCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxZQUFpQztJQUVqQyxPQUFPLENBQ0wsWUFBWTtRQUNaLE9BQU8sWUFBWSxDQUFDLGVBQWUsS0FBSyxVQUFVO1FBQ2xELE9BQU8sWUFBWSxDQUFDLHVCQUF1QixLQUFLLFVBQVU7UUFDMUQsT0FBTyxZQUFZLENBQUMsY0FBYyxLQUFLLFVBQVU7UUFDakQsT0FBTyxZQUFZLENBQUMsZUFBZSxLQUFLLFVBQVU7UUFDbEQsT0FBTyxZQUFZLENBQUMsa0JBQWtCLEtBQUssVUFBVTtRQUNyRCxPQUFPLFlBQVksQ0FBQyxhQUFhLEtBQUssVUFBVSxDQUNqRCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWdncmVnYXRlRmxvdywgQ2x1c3RlciwgTG9jYXRpb25BY2Nlc3NvcnMsIExvY2F0aW9uVG90YWxzfSBmcm9tICcuLic7XG5pbXBvcnQge0Zsb3dtYXBTdGF0ZX0gZnJvbSAnLi4vRmxvd21hcFN0YXRlJztcbmltcG9ydCB7XG4gIENsdXN0ZXJOb2RlLFxuICBGbG93bWFwRGF0YSxcbiAgRmxvd21hcERhdGFBY2Nlc3NvcnMsXG4gIExheWVyc0RhdGEsXG4gIFZpZXdwb3J0UHJvcHMsXG59IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgaW50ZXJmYWNlIEZsb3dtYXBEYXRhUHJvdmlkZXI8TCwgRj4ge1xuICBzZXRBY2Nlc3NvcnMoYWNjZXNzb3JzOiBGbG93bWFwRGF0YUFjY2Vzc29yczxMLCBGPik6IHZvaWQ7XG5cbiAgc2V0Rmxvd21hcFN0YXRlKGZsb3dtYXBTdGF0ZTogRmxvd21hcFN0YXRlKTogUHJvbWlzZTx2b2lkPjtcblxuICAvLyBjbGVhckRhdGEoKTogdm9pZDtcblxuICBnZXRWaWV3cG9ydEZvckxvY2F0aW9ucyhkaW1zOiBbbnVtYmVyLCBudW1iZXJdKTogUHJvbWlzZTxWaWV3cG9ydFByb3BzPjtcblxuICAvLyBnZXRGbG93VG90YWxzKCk6IFByb21pc2U8Rmxvd1RvdGFscz47XG5cbiAgZ2V0Rmxvd0J5SW5kZXgoaW5kZXg6IG51bWJlcik6IFByb21pc2U8RiB8IEFnZ3JlZ2F0ZUZsb3cgfCB1bmRlZmluZWQ+O1xuXG4gIGdldExvY2F0aW9uQnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxMIHwgQ2x1c3RlciB8IHVuZGVmaW5lZD47XG5cbiAgZ2V0TG9jYXRpb25CeUluZGV4KGlkeDogbnVtYmVyKTogUHJvbWlzZTxMIHwgQ2x1c3Rlck5vZGUgfCB1bmRlZmluZWQ+O1xuXG4gIGdldFRvdGFsc0ZvckxvY2F0aW9uKGlkOiBzdHJpbmcpOiBQcm9taXNlPExvY2F0aW9uVG90YWxzIHwgdW5kZWZpbmVkPjtcblxuICAvLyBnZXRMb2NhdGlvbnNJbkJib3goXG4gIC8vICAgYmJveDogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIC8vICk6IFByb21pc2U8QXJyYXk8Rmxvd0xvY2F0aW9uIHwgQ2x1c3Rlck5vZGU+IHwgdW5kZWZpbmVkPjtcblxuICAvLyBnZXRMb2NhdGlvbnNGb3JTZWFyY2hCb3goKTogUHJvbWlzZTwoRmxvd0xvY2F0aW9uIHwgQ2x1c3Rlck5vZGUpW10gfCB1bmRlZmluZWQ+O1xuXG4gIGdldExheWVyc0RhdGEoKTogUHJvbWlzZTxMYXllcnNEYXRhIHwgdW5kZWZpbmVkPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmxvd21hcERhdGE8TCwgRj4oXG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4pOiBkYXRhIGlzIEZsb3dtYXBEYXRhPEwsIEY+IHtcbiAgcmV0dXJuIChcbiAgICBkYXRhICYmXG4gICAgZGF0YS5sb2NhdGlvbnMgJiZcbiAgICBkYXRhLmZsb3dzICYmXG4gICAgQXJyYXkuaXNBcnJheShkYXRhLmxvY2F0aW9ucykgJiZcbiAgICBBcnJheS5pc0FycmF5KGRhdGEuZmxvd3MpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Zsb3dtYXBEYXRhUHJvdmlkZXI8TCwgRj4oXG4gIGRhdGFQcm92aWRlcjogUmVjb3JkPHN0cmluZywgYW55Pixcbik6IGRhdGFQcm92aWRlciBpcyBGbG93bWFwRGF0YVByb3ZpZGVyPEwsIEY+IHtcbiAgcmV0dXJuIChcbiAgICBkYXRhUHJvdmlkZXIgJiZcbiAgICB0eXBlb2YgZGF0YVByb3ZpZGVyLnNldEZsb3dtYXBTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBkYXRhUHJvdmlkZXIuZ2V0Vmlld3BvcnRGb3JMb2NhdGlvbnMgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgZGF0YVByb3ZpZGVyLmdldEZsb3dCeUluZGV4ID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIGRhdGFQcm92aWRlci5nZXRMb2NhdGlvbkJ5SWQgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgZGF0YVByb3ZpZGVyLmdldExvY2F0aW9uQnlJbmRleCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBkYXRhUHJvdmlkZXIuZ2V0TGF5ZXJzRGF0YSA9PT0gJ2Z1bmN0aW9uJ1xuICApO1xufVxuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import FlowmapDataProvider from './FlowmapDataProvider';
|
|
2
|
+
import { Cluster, ClusterNode, FlowmapData, FlowmapDataAccessors, LayersData, LocationTotals, ViewportProps } from '../types';
|
|
3
|
+
import { FlowmapState } from '../FlowmapState';
|
|
4
|
+
import { AggregateFlow } from '..';
|
|
5
|
+
export default class LocalFlowmapDataProvider<L, F> implements FlowmapDataProvider<L, F> {
|
|
6
|
+
private selectors;
|
|
7
|
+
private flowmapData;
|
|
8
|
+
private flowmapState;
|
|
9
|
+
constructor(accessors: FlowmapDataAccessors<L, F>);
|
|
10
|
+
setAccessors(accessors: FlowmapDataAccessors<L, F>): void;
|
|
11
|
+
setFlowmapData(flowmapData: FlowmapData<L, F>): Promise<void>;
|
|
12
|
+
setFlowmapState(flowmapState: FlowmapState): Promise<void>;
|
|
13
|
+
getFlowByIndex(idx: number): Promise<F | AggregateFlow | undefined>;
|
|
14
|
+
getLocationByIndex(idx: number): Promise<L | ClusterNode | undefined>;
|
|
15
|
+
getLayersData(): Promise<LayersData | undefined>;
|
|
16
|
+
getLocationById(id: string): Promise<L | Cluster | undefined>;
|
|
17
|
+
getTotalsForLocation(id: string): Promise<LocationTotals | undefined>;
|
|
18
|
+
getViewportForLocations(dims: [number, number]): Promise<ViewportProps>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=LocalFlowmapDataProvider.d.ts.map
|
package/dist/provider/{LocalFlowMapDataProvider.d.ts.map → LocalFlowmapDataProvider.d.ts.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"LocalFlowmapDataProvider.d.ts","sourceRoot":"","sources":["../../src/provider/LocalFlowmapDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,OAAO,EACP,WAAW,EAEX,WAAW,EACX,oBAAoB,EACpB,UAAU,EAEV,cAAc,EACd,aAAa,EACd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAC,aAAa,EAAC,MAAM,IAAI,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAO,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAChD,YAAW,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC;IAEpC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,YAAY,CAA2B;gBAEnC,SAAS,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;IAOjD,YAAY,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;IAI5C,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,aAAa,GAAG,SAAS,CAAC;IAWnE,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,WAAW,GAAG,SAAS,CAAC;IAWrE,aAAa,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAOhD,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC;IAqB7D,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAS3E,uBAAuB,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;CAGxE"}
|
|
@@ -7,81 +7,81 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import
|
|
11
|
-
export default class
|
|
10
|
+
import FlowmapSelectors from '../FlowmapSelectors';
|
|
11
|
+
export default class LocalFlowmapDataProvider {
|
|
12
12
|
constructor(accessors) {
|
|
13
|
-
// scope selectors to the concrete instance of
|
|
14
|
-
this.selectors = new
|
|
15
|
-
this.
|
|
16
|
-
this.
|
|
13
|
+
// scope selectors to the concrete instance of FlowmapDataProvider
|
|
14
|
+
this.selectors = new FlowmapSelectors(accessors);
|
|
15
|
+
this.flowmapData = undefined;
|
|
16
|
+
this.flowmapState = undefined;
|
|
17
17
|
}
|
|
18
18
|
setAccessors(accessors) {
|
|
19
19
|
this.selectors.setAccessors(accessors);
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
setFlowmapData(flowmapData) {
|
|
22
22
|
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
-
this.
|
|
23
|
+
this.flowmapData = flowmapData;
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
setFlowmapState(flowmapState) {
|
|
27
27
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
-
this.
|
|
28
|
+
this.flowmapState = flowmapState;
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
31
|
getFlowByIndex(idx) {
|
|
32
32
|
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
-
if (!this.
|
|
33
|
+
if (!this.flowmapState || !this.flowmapData) {
|
|
34
34
|
return undefined;
|
|
35
35
|
}
|
|
36
|
-
const flows = this.selectors.
|
|
36
|
+
const flows = this.selectors.getFlowsForFlowmapLayer(this.flowmapState, this.flowmapData);
|
|
37
37
|
return flows === null || flows === void 0 ? void 0 : flows[idx];
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
40
|
getLocationByIndex(idx) {
|
|
41
41
|
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
-
if (!this.
|
|
42
|
+
if (!this.flowmapState || !this.flowmapData) {
|
|
43
43
|
return undefined;
|
|
44
44
|
}
|
|
45
|
-
const locations = this.selectors.
|
|
45
|
+
const locations = this.selectors.getLocationsForFlowmapLayer(this.flowmapState, this.flowmapData);
|
|
46
46
|
return locations === null || locations === void 0 ? void 0 : locations[idx];
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
49
|
getLayersData() {
|
|
50
50
|
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
-
if (!this.
|
|
51
|
+
if (!this.flowmapState || !this.flowmapData) {
|
|
52
52
|
return undefined;
|
|
53
53
|
}
|
|
54
|
-
return this.selectors.getLayersData(this.
|
|
54
|
+
return this.selectors.getLayersData(this.flowmapState, this.flowmapData);
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
getLocationById(id) {
|
|
58
58
|
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
-
if (!this.
|
|
59
|
+
if (!this.flowmapState || !this.flowmapData) {
|
|
60
60
|
return undefined;
|
|
61
61
|
}
|
|
62
|
-
const clusterIndex = this.selectors.getClusterIndex(this.
|
|
62
|
+
const clusterIndex = this.selectors.getClusterIndex(this.flowmapState, this.flowmapData);
|
|
63
63
|
if (clusterIndex) {
|
|
64
64
|
const cluster = clusterIndex.getClusterById(id);
|
|
65
65
|
if (cluster) {
|
|
66
66
|
return cluster;
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
-
const locationsById = this.selectors.getLocationsById(this.
|
|
69
|
+
const locationsById = this.selectors.getLocationsById(this.flowmapState, this.flowmapData);
|
|
70
70
|
return locationsById === null || locationsById === void 0 ? void 0 : locationsById.get(id);
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
73
|
getTotalsForLocation(id) {
|
|
74
74
|
var _a;
|
|
75
75
|
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
-
if (!this.
|
|
76
|
+
if (!this.flowmapState || !this.flowmapData) {
|
|
77
77
|
return undefined;
|
|
78
78
|
}
|
|
79
79
|
return (_a = this.selectors
|
|
80
|
-
.getLocationTotals(this.
|
|
80
|
+
.getLocationTotals(this.flowmapState, this.flowmapData)) === null || _a === void 0 ? void 0 : _a.get(id);
|
|
81
81
|
});
|
|
82
82
|
}
|
|
83
83
|
getViewportForLocations(dims) {
|
|
84
84
|
return Promise.resolve({});
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxGbG93bWFwRGF0YVByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVyL0xvY2FsRmxvd21hcERhdGFQcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFhQSxPQUFPLGdCQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBR25ELE1BQU0sQ0FBQyxPQUFPLE9BQU8sd0JBQXdCO0lBTzNDLFlBQVksU0FBcUM7UUFDL0Msa0VBQWtFO1FBQ2xFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBTyxTQUFTLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQXFDO1FBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFSyxjQUFjLENBQUMsV0FBOEI7O1lBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQ2pDLENBQUM7S0FBQTtJQUVLLGVBQWUsQ0FBQyxZQUEwQjs7WUFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDbkMsQ0FBQztLQUFBO0lBRUssY0FBYyxDQUFDLEdBQVc7O1lBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDM0MsT0FBTyxTQUFTLENBQUM7YUFDbEI7WUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUNsRCxJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1lBQ0YsT0FBTyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUcsR0FBRyxDQUFDLENBQUM7UUFDdEIsQ0FBQztLQUFBO0lBRUssa0JBQWtCLENBQUMsR0FBVzs7WUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUMzQyxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQzFELElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7WUFDRixPQUFPLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDO0tBQUE7SUFFSyxhQUFhOztZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQzNDLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1lBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRSxDQUFDO0tBQUE7SUFFSyxlQUFlLENBQUMsRUFBVTs7WUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUMzQyxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUNqRCxJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1lBQ0YsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2hELElBQUksT0FBTyxFQUFFO29CQUNYLE9BQU8sT0FBTyxDQUFDO2lCQUNoQjthQUNGO1lBQ0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FDbkQsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FDakIsQ0FBQztZQUNGLE9BQU8sYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxDQUFDO0tBQUE7SUFFSyxvQkFBb0IsQ0FBQyxFQUFVOzs7WUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUMzQyxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE9BQU8sTUFBQSxJQUFJLENBQUMsU0FBUztpQkFDbEIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLDBDQUNyRCxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7O0tBQ2I7SUFFRCx1QkFBdUIsQ0FBQyxJQUFzQjtRQUM1QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBbUIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGbG93bWFwRGF0YVByb3ZpZGVyIGZyb20gJy4vRmxvd21hcERhdGFQcm92aWRlcic7XG5pbXBvcnQge1xuICBDbHVzdGVyLFxuICBDbHVzdGVyTm9kZSxcbiAgRmxvd0FjY2Vzc29ycyxcbiAgRmxvd21hcERhdGEsXG4gIEZsb3dtYXBEYXRhQWNjZXNzb3JzLFxuICBMYXllcnNEYXRhLFxuICBMb2NhdGlvbkFjY2Vzc29ycyxcbiAgTG9jYXRpb25Ub3RhbHMsXG4gIFZpZXdwb3J0UHJvcHMsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7Rmxvd21hcFN0YXRlfSBmcm9tICcuLi9GbG93bWFwU3RhdGUnO1xuaW1wb3J0IEZsb3dtYXBTZWxlY3RvcnMgZnJvbSAnLi4vRmxvd21hcFNlbGVjdG9ycyc7XG5pbXBvcnQge0FnZ3JlZ2F0ZUZsb3d9IGZyb20gJy4uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9jYWxGbG93bWFwRGF0YVByb3ZpZGVyPEwsIEY+XG4gIGltcGxlbWVudHMgRmxvd21hcERhdGFQcm92aWRlcjxMLCBGPlxue1xuICBwcml2YXRlIHNlbGVjdG9yczogRmxvd21hcFNlbGVjdG9yczxMLCBGPjtcbiAgcHJpdmF0ZSBmbG93bWFwRGF0YTogRmxvd21hcERhdGE8TCwgRj4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgZmxvd21hcFN0YXRlOiBGbG93bWFwU3RhdGUgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoYWNjZXNzb3JzOiBGbG93bWFwRGF0YUFjY2Vzc29yczxMLCBGPikge1xuICAgIC8vIHNjb3BlIHNlbGVjdG9ycyB0byB0aGUgY29uY3JldGUgaW5zdGFuY2Ugb2YgRmxvd21hcERhdGFQcm92aWRlclxuICAgIHRoaXMuc2VsZWN0b3JzID0gbmV3IEZsb3dtYXBTZWxlY3RvcnM8TCwgRj4oYWNjZXNzb3JzKTtcbiAgICB0aGlzLmZsb3dtYXBEYXRhID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZmxvd21hcFN0YXRlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgc2V0QWNjZXNzb3JzKGFjY2Vzc29yczogRmxvd21hcERhdGFBY2Nlc3NvcnM8TCwgRj4pIHtcbiAgICB0aGlzLnNlbGVjdG9ycy5zZXRBY2Nlc3NvcnMoYWNjZXNzb3JzKTtcbiAgfVxuXG4gIGFzeW5jIHNldEZsb3dtYXBEYXRhKGZsb3dtYXBEYXRhOiBGbG93bWFwRGF0YTxMLCBGPik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZmxvd21hcERhdGEgPSBmbG93bWFwRGF0YTtcbiAgfVxuXG4gIGFzeW5jIHNldEZsb3dtYXBTdGF0ZShmbG93bWFwU3RhdGU6IEZsb3dtYXBTdGF0ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZmxvd21hcFN0YXRlID0gZmxvd21hcFN0YXRlO1xuICB9XG5cbiAgYXN5bmMgZ2V0Rmxvd0J5SW5kZXgoaWR4OiBudW1iZXIpOiBQcm9taXNlPEYgfCBBZ2dyZWdhdGVGbG93IHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCF0aGlzLmZsb3dtYXBTdGF0ZSB8fCAhdGhpcy5mbG93bWFwRGF0YSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgZmxvd3MgPSB0aGlzLnNlbGVjdG9ycy5nZXRGbG93c0ZvckZsb3dtYXBMYXllcihcbiAgICAgIHRoaXMuZmxvd21hcFN0YXRlLFxuICAgICAgdGhpcy5mbG93bWFwRGF0YSxcbiAgICApO1xuICAgIHJldHVybiBmbG93cz8uW2lkeF07XG4gIH1cblxuICBhc3luYyBnZXRMb2NhdGlvbkJ5SW5kZXgoaWR4OiBudW1iZXIpOiBQcm9taXNlPEwgfCBDbHVzdGVyTm9kZSB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5mbG93bWFwU3RhdGUgfHwgIXRoaXMuZmxvd21hcERhdGEpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGxvY2F0aW9ucyA9IHRoaXMuc2VsZWN0b3JzLmdldExvY2F0aW9uc0ZvckZsb3dtYXBMYXllcihcbiAgICAgIHRoaXMuZmxvd21hcFN0YXRlLFxuICAgICAgdGhpcy5mbG93bWFwRGF0YSxcbiAgICApO1xuICAgIHJldHVybiBsb2NhdGlvbnM/LltpZHhdO1xuICB9XG5cbiAgYXN5bmMgZ2V0TGF5ZXJzRGF0YSgpOiBQcm9taXNlPExheWVyc0RhdGEgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMuZmxvd21hcFN0YXRlIHx8ICF0aGlzLmZsb3dtYXBEYXRhKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZWxlY3RvcnMuZ2V0TGF5ZXJzRGF0YSh0aGlzLmZsb3dtYXBTdGF0ZSwgdGhpcy5mbG93bWFwRGF0YSk7XG4gIH1cblxuICBhc3luYyBnZXRMb2NhdGlvbkJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8TCB8IENsdXN0ZXIgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMuZmxvd21hcFN0YXRlIHx8ICF0aGlzLmZsb3dtYXBEYXRhKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBjbHVzdGVySW5kZXggPSB0aGlzLnNlbGVjdG9ycy5nZXRDbHVzdGVySW5kZXgoXG4gICAgICB0aGlzLmZsb3dtYXBTdGF0ZSxcbiAgICAgIHRoaXMuZmxvd21hcERhdGEsXG4gICAgKTtcbiAgICBpZiAoY2x1c3RlckluZGV4KSB7XG4gICAgICBjb25zdCBjbHVzdGVyID0gY2x1c3RlckluZGV4LmdldENsdXN0ZXJCeUlkKGlkKTtcbiAgICAgIGlmIChjbHVzdGVyKSB7XG4gICAgICAgIHJldHVybiBjbHVzdGVyO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBsb2NhdGlvbnNCeUlkID0gdGhpcy5zZWxlY3RvcnMuZ2V0TG9jYXRpb25zQnlJZChcbiAgICAgIHRoaXMuZmxvd21hcFN0YXRlLFxuICAgICAgdGhpcy5mbG93bWFwRGF0YSxcbiAgICApO1xuICAgIHJldHVybiBsb2NhdGlvbnNCeUlkPy5nZXQoaWQpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG90YWxzRm9yTG9jYXRpb24oaWQ6IHN0cmluZyk6IFByb21pc2U8TG9jYXRpb25Ub3RhbHMgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMuZmxvd21hcFN0YXRlIHx8ICF0aGlzLmZsb3dtYXBEYXRhKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZWxlY3RvcnNcbiAgICAgIC5nZXRMb2NhdGlvblRvdGFscyh0aGlzLmZsb3dtYXBTdGF0ZSwgdGhpcy5mbG93bWFwRGF0YSlcbiAgICAgID8uZ2V0KGlkKTtcbiAgfVxuXG4gIGdldFZpZXdwb3J0Rm9yTG9jYXRpb25zKGRpbXM6IFtudW1iZXIsIG51bWJlcl0pOiBQcm9taXNlPFZpZXdwb3J0UHJvcHM+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9IGFzIFZpZXdwb3J0UHJvcHMpO1xuICB9XG59XG4iXX0=
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare type
|
|
1
|
+
export declare type FlowmapData<L, F> = {
|
|
2
2
|
locations: L[] | undefined;
|
|
3
3
|
flows: F[] | undefined;
|
|
4
4
|
};
|
|
@@ -24,7 +24,7 @@ export interface LocationAccessors<L> {
|
|
|
24
24
|
getLocationCentroid: LocationAccessor<L, [number, number]>;
|
|
25
25
|
getLocationClusterName?: (locationIds: string[]) => string;
|
|
26
26
|
}
|
|
27
|
-
export declare type
|
|
27
|
+
export declare type FlowmapDataAccessors<L, F> = LocationAccessors<L> & FlowAccessors<F>;
|
|
28
28
|
export interface LocationTotals {
|
|
29
29
|
incomingCount: number;
|
|
30
30
|
outgoingCount: number;
|
package/dist/types.js
CHANGED
|
@@ -20,4 +20,4 @@ export var LocationFilterMode;
|
|
|
20
20
|
LocationFilterMode["OUTGOING"] = "OUTGOING";
|
|
21
21
|
LocationFilterMode["BETWEEN"] = "BETWEEN";
|
|
22
22
|
})(LocationFilterMode || (LocationFilterMode = {}));
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNkZBLE1BQU0sVUFBVSxTQUFTLENBQUMsQ0FBYztJQUN0QyxNQUFNLEVBQUMsUUFBUSxFQUFDLEdBQUcsQ0FBWSxDQUFDO0lBQ2hDLE9BQU8sUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUksQ0FBa0I7SUFDekQsTUFBTSxFQUFDLElBQUksRUFBQyxHQUFHLENBQWdCLENBQUM7SUFDaEMsT0FBTyxJQUFJLEtBQUssU0FBUyxDQUFDO0FBQzVCLENBQUM7QUFTRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixJQUF5QjtJQUV6QixPQUFPLENBQ0wsSUFBSTtRQUNKLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUztRQUN6QixJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVM7UUFDdkIsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTO1FBQ3hCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDaEMsQ0FBQztBQUNKLENBQUM7QUFPRCxNQUFNLENBQU4sSUFBWSxrQkFLWDtBQUxELFdBQVksa0JBQWtCO0lBQzVCLGlDQUFXLENBQUE7SUFDWCwyQ0FBcUIsQ0FBQTtJQUNyQiwyQ0FBcUIsQ0FBQTtJQUNyQix5Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUs3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZsb3dtYXBEYXRhPEwsIEY+ID0ge1xuICBsb2NhdGlvbnM6IExbXSB8IHVuZGVmaW5lZDtcbiAgZmxvd3M6IEZbXSB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld1N0YXRlIHtcbiAgbGF0aXR1ZGU6IG51bWJlcjtcbiAgbG9uZ2l0dWRlOiBudW1iZXI7XG4gIHpvb206IG51bWJlcjtcbiAgYmVhcmluZz86IG51bWJlcjtcbiAgcGl0Y2g/OiBudW1iZXI7XG4gIGFsdGl0dWRlPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBGbG93QWNjZXNzb3I8RiwgVD4gPSAoZmxvdzogRikgPT4gVDsgLy8gb2JqZWN0SW5mbz86IEFjY2Vzc29yT2JqZWN0SW5mbyxcbmV4cG9ydCB0eXBlIExvY2F0aW9uQWNjZXNzb3I8TCwgVD4gPSAobG9jYXRpb246IEwpID0+IFQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0FjY2Vzc29yczxGPiB7XG4gIGdldEZsb3dPcmlnaW5JZDogRmxvd0FjY2Vzc29yPEYsIHN0cmluZz47XG4gIGdldEZsb3dEZXN0SWQ6IEZsb3dBY2Nlc3NvcjxGLCBzdHJpbmc+O1xuICBnZXRGbG93TWFnbml0dWRlOiBGbG93QWNjZXNzb3I8RiwgbnVtYmVyPjtcbiAgZ2V0Rmxvd1RpbWU/OiBGbG93QWNjZXNzb3I8RiwgRGF0ZT47IC8vIFRPRE86IHVzZSBudW1iZXIgaW5zdGVhZCBvZiBEYXRlXG4gIC8vIGdldEZsb3dDb2xvcj86IEZsb3dBY2Nlc3NvcjxzdHJpbmcgfCB1bmRlZmluZWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uQWNjZXNzb3JzPEw+IHtcbiAgZ2V0TG9jYXRpb25JZDogTG9jYXRpb25BY2Nlc3NvcjxMLCBzdHJpbmc+O1xuICBnZXRMb2NhdGlvbk5hbWU/OiBMb2NhdGlvbkFjY2Vzc29yPEwsIHN0cmluZz47XG4gIGdldExvY2F0aW9uQ2VudHJvaWQ6IExvY2F0aW9uQWNjZXNzb3I8TCwgW251bWJlciwgbnVtYmVyXT47XG4gIGdldExvY2F0aW9uQ2x1c3Rlck5hbWU/OiAobG9jYXRpb25JZHM6IHN0cmluZ1tdKSA9PiBzdHJpbmc7XG4gIC8vIGdldExvY2F0aW9uVG90YWxJbj86IExvY2F0aW9uQWNjZXNzb3I8bnVtYmVyPjtcbiAgLy8gZ2V0TG9jYXRpb25Ub3RhbE91dD86IExvY2F0aW9uQWNjZXNzb3I8bnVtYmVyPjtcbiAgLy8gZ2V0TG9jYXRpb25Ub3RhbEludGVybmFsPzogTG9jYXRpb25BY2Nlc3NvcjxudW1iZXI+O1xufVxuXG5leHBvcnQgdHlwZSBGbG93bWFwRGF0YUFjY2Vzc29yczxMLCBGPiA9IExvY2F0aW9uQWNjZXNzb3JzPEw+ICZcbiAgRmxvd0FjY2Vzc29yczxGPjtcblxuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvblRvdGFscyB7XG4gIGluY29taW5nQ291bnQ6IG51bWJlcjtcbiAgb3V0Z29pbmdDb3VudDogbnVtYmVyO1xuICBpbnRlcm5hbENvdW50OiBudW1iZXI7XG59XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb25zVG90YWxzIHtcbi8vICAgaW5jb21pbmc6IHtbaWQ6IHN0cmluZ106IG51bWJlcn07XG4vLyAgIG91dGdvaW5nOiB7W2lkOiBzdHJpbmddOiBudW1iZXJ9O1xuLy8gICBpbnRlcm5hbDoge1tpZDogc3RyaW5nXTogbnVtYmVyfTtcbi8vIH1cblxuZXhwb3J0IGludGVyZmFjZSBDb3VudEJ5VGltZSB7XG4gIHRpbWU6IERhdGU7XG4gIGNvdW50OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnRQcm9wcyB7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBsYXRpdHVkZTogbnVtYmVyO1xuICBsb25naXR1ZGU6IG51bWJlcjtcbiAgem9vbTogbnVtYmVyO1xuICBiZWFyaW5nOiBudW1iZXI7XG4gIHBpdGNoOiBudW1iZXI7XG4gIGFsdGl0dWRlPzogbnVtYmVyO1xuICBtYXhab29tPzogbnVtYmVyO1xuICBtaW5ab29tPzogbnVtYmVyO1xuICBtYXhQaXRjaD86IG51bWJlcjtcbiAgbWluUGl0Y2g/OiBudW1iZXI7XG4gIHRyYW5zaXRpb25EdXJhdGlvbj86IG51bWJlciB8ICdhdXRvJztcbiAgdHJhbnNpdGlvbkludGVycG9sYXRvcj86IGFueTtcbiAgdHJhbnNpdGlvbkludGVycnVwdGlvbj86IGFueTtcbiAgdHJhbnNpdGlvbkVhc2luZz86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyTm9kZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHpvb206IG51bWJlcjtcbiAgY2VudHJvaWQ6IFtudW1iZXIsIG51bWJlcl07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2x1c3RlckxldmVsIHtcbiAgem9vbTogbnVtYmVyO1xuICBub2RlczogQ2x1c3Rlck5vZGVbXTtcbn1cblxuZXhwb3J0IHR5cGUgQ2x1c3RlckxldmVscyA9IENsdXN0ZXJMZXZlbFtdO1xuXG4vLyBub24tbGVhZiBjbHVzdGVyIG5vZGVcbmV4cG9ydCBpbnRlcmZhY2UgQ2x1c3RlciBleHRlbmRzIENsdXN0ZXJOb2RlIHtcbiAgbmFtZT86IHN0cmluZztcbiAgY2hpbGRyZW46IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDbHVzdGVyKGM6IENsdXN0ZXJOb2RlKTogYyBpcyBDbHVzdGVyIHtcbiAgY29uc3Qge2NoaWxkcmVufSA9IGMgYXMgQ2x1c3RlcjtcbiAgcmV0dXJuIGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aCA+IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xvY2F0aW9uQ2x1c3Rlck5vZGU8TD4obDogTCB8IENsdXN0ZXJOb2RlKTogbCBpcyBDbHVzdGVyTm9kZSB7XG4gIGNvbnN0IHt6b29tfSA9IGwgYXMgQ2x1c3Rlck5vZGU7XG4gIHJldHVybiB6b29tICE9PSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdncmVnYXRlRmxvdyB7XG4gIG9yaWdpbjogc3RyaW5nO1xuICBkZXN0OiBzdHJpbmc7XG4gIGNvdW50OiBudW1iZXI7XG4gIGFnZ3JlZ2F0ZTogdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWdncmVnYXRlRmxvdyhcbiAgZmxvdzogUmVjb3JkPHN0cmluZywgYW55Pixcbik6IGZsb3cgaXMgQWdncmVnYXRlRmxvdyB7XG4gIHJldHVybiAoXG4gICAgZmxvdyAmJlxuICAgIGZsb3cub3JpZ2luICE9PSB1bmRlZmluZWQgJiZcbiAgICBmbG93LmRlc3QgIT09IHVuZGVmaW5lZCAmJlxuICAgIGZsb3cuY291bnQgIT09IHVuZGVmaW5lZCAmJlxuICAgIChmbG93LmFnZ3JlZ2F0ZSA/IHRydWUgOiBmYWxzZSlcbiAgKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93Q291bnRzTWFwUmVkdWNlPEYsIFQgPSBhbnk+IHtcbiAgbWFwOiAoZmxvdzogRikgPT4gVDtcbiAgcmVkdWNlOiAoYWNjdW11bGF0ZWQ6IFQsIHZhbDogVCkgPT4gVDtcbn1cblxuZXhwb3J0IGVudW0gTG9jYXRpb25GaWx0ZXJNb2RlIHtcbiAgQUxMID0gJ0FMTCcsXG4gIElOQ09NSU5HID0gJ0lOQ09NSU5HJyxcbiAgT1VUR09JTkcgPSAnT1VUR09JTkcnLFxuICBCRVRXRUVOID0gJ0JFVFdFRU4nLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dDaXJjbGVzTGF5ZXJBdHRyaWJ1dGVzIHtcbiAgbGVuZ3RoOiBudW1iZXI7XG4gIGF0dHJpYnV0ZXM6IHtcbiAgICBnZXRQb3NpdGlvbjogTGF5ZXJzRGF0YUF0dHJWYWx1ZXM8RmxvYXQzMkFycmF5PjtcbiAgICBnZXRDb2xvcjogTGF5ZXJzRGF0YUF0dHJWYWx1ZXM8VWludDhBcnJheT47XG4gICAgZ2V0SW5SYWRpdXM6IExheWVyc0RhdGFBdHRyVmFsdWVzPEZsb2F0MzJBcnJheT47XG4gICAgZ2V0T3V0UmFkaXVzOiBMYXllcnNEYXRhQXR0clZhbHVlczxGbG9hdDMyQXJyYXk+O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dMaW5lc0xheWVyQXR0cmlidXRlcyB7XG4gIGxlbmd0aDogbnVtYmVyO1xuICBhdHRyaWJ1dGVzOiB7XG4gICAgZ2V0U291cmNlUG9zaXRpb246IExheWVyc0RhdGFBdHRyVmFsdWVzPEZsb2F0MzJBcnJheT47XG4gICAgZ2V0VGFyZ2V0UG9zaXRpb246IExheWVyc0RhdGFBdHRyVmFsdWVzPEZsb2F0MzJBcnJheT47XG4gICAgZ2V0VGhpY2tuZXNzOiBMYXllcnNEYXRhQXR0clZhbHVlczxGbG9hdDMyQXJyYXk+O1xuICAgIGdldENvbG9yOiBMYXllcnNEYXRhQXR0clZhbHVlczxVaW50OEFycmF5PjtcbiAgICBnZXRFbmRwb2ludE9mZnNldHM6IExheWVyc0RhdGFBdHRyVmFsdWVzPEZsb2F0MzJBcnJheT47XG4gICAgZ2V0U3RhZ2dlcmluZz86IExheWVyc0RhdGFBdHRyVmFsdWVzPEZsb2F0MzJBcnJheT47XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF5ZXJzRGF0YSB7XG4gIGNpcmNsZUF0dHJpYnV0ZXM6IEZsb3dDaXJjbGVzTGF5ZXJBdHRyaWJ1dGVzO1xuICBsaW5lQXR0cmlidXRlczogRmxvd0xpbmVzTGF5ZXJBdHRyaWJ1dGVzO1xufVxuXG5leHBvcnQgdHlwZSBMYXllcnNEYXRhQXR0clZhbHVlczxUPiA9IHt2YWx1ZTogVDsgc2l6ZTogbnVtYmVyfTtcbiJdfQ==
|