@opentripplanner/vehicle-rental-overlay 2.0.0-alpha.1 → 2.0.0-alpha.2
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/esm/StationPopup.js +4 -4
- package/esm/StationPopup.js.map +1 -1
- package/esm/index.js +39 -37
- package/esm/index.js.map +1 -1
- package/esm/styled.js +2 -2
- package/esm/styled.js.map +1 -1
- package/lib/StationPopup.d.ts +2 -1
- package/lib/StationPopup.d.ts.map +1 -1
- package/lib/StationPopup.js +3 -3
- package/lib/StationPopup.js.map +1 -1
- package/lib/index.d.ts +7 -6
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +37 -37
- package/lib/index.js.map +1 -1
- package/lib/styled.js +2 -2
- package/lib/styled.js.map +1 -1
- package/package.json +5 -5
- package/src/StationPopup.tsx +6 -6
- package/src/VehicleRentalOverlay.story.tsx +14 -16
- package/src/index.tsx +41 -40
- package/src/styled.ts +3 -3
- package/tsconfig.tsbuildinfo +1 -4891
package/esm/StationPopup.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Styled as BaseMapStyled } from "@opentripplanner/base-map";
|
|
2
|
-
import React from "react";
|
|
3
|
-
import FromToLocationPicker from "@opentripplanner/from-to-location-picker";
|
|
4
2
|
import coreUtils from "@opentripplanner/core-utils";
|
|
5
|
-
import
|
|
6
|
-
import flatten from "flat";
|
|
3
|
+
import FromToLocationPicker from "@opentripplanner/from-to-location-picker";
|
|
4
|
+
import flatten from "flat";
|
|
5
|
+
import { FormattedMessage, useIntl } from "react-intl";
|
|
6
|
+
import React from "react"; // Load the default messages.
|
|
7
7
|
// @ts-expect-error why is this failing?
|
|
8
8
|
|
|
9
9
|
import defaultEnglishMessages from "../i18n/en-US.yml"; // HACK: We should flatten the messages loaded above because
|
package/esm/StationPopup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/StationPopup.tsx"],"names":["Styled","BaseMapStyled","
|
|
1
|
+
{"version":3,"sources":["../src/StationPopup.tsx"],"names":["Styled","BaseMapStyled","coreUtils","FromToLocationPicker","flatten","FormattedMessage","useIntl","React","defaultEnglishMessages","defaultMessages","makeDefaultGetStationName","intl","defaultGetStationName","configCompanies","station","stationNetworks","itinerary","getCompaniesLabelFromNetworks","networks","stationName","name","id","match","length","isFloatingBike","formatMessage","defaultMessage","description","isFloatingCar","company","isFloatingVehicle","StationPopup","props","getStationName","setLocation","stationIsHub","bikesAvailable","undefined","getStationNameFunc","location","lat","y","lon","x","value","spacesAvailable"],"mappings":"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","sourcesContent":["import { Styled as BaseMapStyled } from \"@opentripplanner/base-map\";\nimport coreUtils from \"@opentripplanner/core-utils\";\nimport FromToLocationPicker from \"@opentripplanner/from-to-location-picker\";\nimport {\n Company,\n ConfiguredCompany,\n MapLocationActionArg,\n Station\n} from \"@opentripplanner/types\";\nimport flatten from \"flat\";\nimport { FormattedMessage, IntlShape, useIntl } from \"react-intl\";\nimport React from \"react\";\n\n// Load the default messages.\n// @ts-expect-error why is this failing?\nimport defaultEnglishMessages from \"../i18n/en-US.yml\";\n\n// HACK: We should flatten the messages loaded above because\n// the YAML loaders behave differently between webpack and our version of jest:\n// - the yaml loader for webpack returns a nested object,\n// - the yaml loader for jest returns messages with flattened ids.\nconst defaultMessages = flatten(defaultEnglishMessages);\n\nfunction makeDefaultGetStationName(intl: IntlShape) {\n return function defaultGetStationName(\n configCompanies: Company[],\n station: Station\n ) {\n const stationNetworks = coreUtils.itinerary.getCompaniesLabelFromNetworks(\n station?.networks || [],\n configCompanies\n );\n let stationName = station.name || station.id;\n // If the station name or id is a giant UUID (with more than 3 \"-\" characters)\n // best not to show that at all and instead use the network name.\n if ((stationName.match(/-/g) || []).length > 3) {\n stationName = stationNetworks;\n }\n\n if (station.isFloatingBike) {\n stationName = intl.formatMessage(\n {\n defaultMessage:\n defaultEnglishMessages[\"otpUi.VehicleRentalOverlay.floatingBike\"],\n description: \"Popup title for a free-floating bike\",\n id: \"otpUi.VehicleRentalOverlay.floatingBike\"\n },\n { name: stationName }\n );\n } else if (station.isFloatingCar) {\n stationName = intl.formatMessage(\n {\n defaultMessage:\n defaultEnglishMessages[\"otpUi.VehicleRentalOverlay.floatingCar\"],\n description: \"Popup title for a free-floating car\",\n id: \"otpUi.VehicleRentalOverlay.floatingCar\"\n },\n {\n company: stationNetworks,\n name: stationName\n }\n );\n } else if (station.isFloatingVehicle) {\n // assumes that all floating vehicles are E-scooters\n stationName = intl.formatMessage(\n {\n defaultMessage:\n defaultEnglishMessages[\n \"otpUi.VehicleRentalOverlay.floatingEScooter\"\n ],\n description: \"Popup title for a free-floating e-scooter\",\n id: \"otpUi.VehicleRentalOverlay.floatingEScooter\"\n },\n { company: stationNetworks }\n );\n }\n return stationName;\n };\n}\n\ntype Props = {\n configCompanies: ConfiguredCompany[];\n getStationName: (configCompanies: Company[], station: Station) => string;\n setLocation: (arg: MapLocationActionArg) => void;\n station: Station;\n};\n/**\n * Render some popup html for a station. This contains custom logic for\n * displaying rental vehicles in the TriMet MOD website that might not be\n * applicable to other regions.\n */\nconst StationPopup = (props: Props): JSX.Element => {\n const intl = useIntl();\n const { configCompanies, getStationName, setLocation, station } = props;\n const stationIsHub =\n station.bikesAvailable !== undefined && !station.isFloatingBike;\n const getStationNameFunc = getStationName || makeDefaultGetStationName(intl);\n const stationName = getStationNameFunc(configCompanies, station);\n const location = {\n lat: station.y,\n lon: station.x,\n name: stationName\n };\n return (\n <BaseMapStyled.MapOverlayPopup>\n <BaseMapStyled.PopupTitle>{stationName}</BaseMapStyled.PopupTitle>\n\n {/* render dock info if it is available */}\n {stationIsHub && (\n <BaseMapStyled.PopupRow>\n <div>\n <FormattedMessage\n defaultMessage={\n defaultMessages[\"otpUi.VehicleRentalOverlay.availableBikes\"]\n }\n description=\"Label text for the number of bikes available\"\n id=\"otpUi.VehicleRentalOverlay.availableBikes\"\n values={{ value: station.bikesAvailable }}\n />\n </div>\n <div>\n <FormattedMessage\n defaultMessage={\n defaultMessages[\"otpUi.VehicleRentalOverlay.availableDocks\"]\n }\n description=\"Label text for the number of docks available\"\n id=\"otpUi.VehicleRentalOverlay.availableDocks\"\n values={{ value: station.spacesAvailable }}\n />\n </div>\n </BaseMapStyled.PopupRow>\n )}\n\n {/* Set as from/to toolbar */}\n <BaseMapStyled.PopupRow>\n <FromToLocationPicker\n label\n location={location}\n setLocation={setLocation}\n />\n </BaseMapStyled.PopupRow>\n </BaseMapStyled.MapOverlayPopup>\n );\n};\n\nexport default StationPopup;\n"],"file":"StationPopup.js"}
|
package/esm/index.js
CHANGED
|
@@ -5,9 +5,9 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
5
5
|
|
|
6
6
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
7
7
|
|
|
8
|
-
import { Source, Layer, useMap, Popup } from "react-map-gl";
|
|
9
|
-
import React, { useEffect, useState } from "react";
|
|
10
8
|
import { MarkerWithPopup } from "@opentripplanner/base-map";
|
|
9
|
+
import React, { useEffect, useState } from "react";
|
|
10
|
+
import { Layer, Popup, Source, useMap } from "react-map-gl";
|
|
11
11
|
import StationPopup from "./StationPopup";
|
|
12
12
|
import { BaseBikeRentalIcon, StationMarker } from "./styled"; // TODO: Make configurable?
|
|
13
13
|
|
|
@@ -37,20 +37,21 @@ var checkIfPositionInViewport = function checkIfPositionInViewport(bounds, lat,
|
|
|
37
37
|
* types. This layer can be configured to show different styles of markers at
|
|
38
38
|
* different zoom levels.
|
|
39
39
|
*/
|
|
40
|
-
var VehicleRentalOverlay = function VehicleRentalOverlay(
|
|
40
|
+
var VehicleRentalOverlay = function VehicleRentalOverlay(_ref2) {
|
|
41
|
+
var companies = _ref2.companies,
|
|
42
|
+
configCompanies = _ref2.configCompanies,
|
|
43
|
+
getStationName = _ref2.getStationName,
|
|
44
|
+
id = _ref2.id,
|
|
45
|
+
refreshVehicles = _ref2.refreshVehicles,
|
|
46
|
+
_setLocation = _ref2.setLocation,
|
|
47
|
+
stations = _ref2.stations,
|
|
48
|
+
visible = _ref2.visible;
|
|
49
|
+
|
|
41
50
|
var _useMap = useMap(),
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
var zoom =
|
|
45
|
-
var bounds =
|
|
46
|
-
var configCompanies = props.configCompanies,
|
|
47
|
-
companies = props.companies,
|
|
48
|
-
getStationName = props.getStationName,
|
|
49
|
-
id = props.id,
|
|
50
|
-
refreshVehicles = props.refreshVehicles,
|
|
51
|
-
_setLocation = props.setLocation,
|
|
52
|
-
stations = props.stations,
|
|
53
|
-
visible = props.visible;
|
|
51
|
+
map = _useMap.current;
|
|
52
|
+
|
|
53
|
+
var zoom = map === null || map === void 0 ? void 0 : map.getZoom();
|
|
54
|
+
var bounds = map === null || map === void 0 ? void 0 : map.getBounds();
|
|
54
55
|
var layerId = "rental-vehicles-".concat(id);
|
|
55
56
|
|
|
56
57
|
var _useState = useState(null),
|
|
@@ -70,21 +71,22 @@ var VehicleRentalOverlay = function VehicleRentalOverlay(props) {
|
|
|
70
71
|
useEffect(function () {
|
|
71
72
|
var VEHICLE_LAYERS = [layerId];
|
|
72
73
|
VEHICLE_LAYERS.forEach(function (stopLayer) {
|
|
73
|
-
|
|
74
|
-
|
|
74
|
+
map === null || map === void 0 ? void 0 : map.on("mouseenter", stopLayer, function () {
|
|
75
|
+
map.getCanvas().style.cursor = "pointer";
|
|
75
76
|
});
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
map === null || map === void 0 ? void 0 : map.on("mouseleave", stopLayer, function () {
|
|
78
|
+
map.getCanvas().style.cursor = "";
|
|
78
79
|
});
|
|
79
|
-
|
|
80
|
+
map === null || map === void 0 ? void 0 : map.on("click", stopLayer, function (event) {
|
|
80
81
|
var _event$features;
|
|
81
82
|
|
|
82
83
|
setClickedVehicle((_event$features = event.features) === null || _event$features === void 0 ? void 0 : _event$features[0].properties);
|
|
83
84
|
});
|
|
84
85
|
});
|
|
85
|
-
}, [
|
|
86
|
+
}, [map]); // Don't render if no map or no stops are defined.
|
|
86
87
|
|
|
87
88
|
if (visible === false || !stations || stations.length === 0) {
|
|
89
|
+
// Null can't be returned here -- react-map-gl dislikes null values as children
|
|
88
90
|
return /*#__PURE__*/React.createElement(React.Fragment, null);
|
|
89
91
|
}
|
|
90
92
|
|
|
@@ -97,15 +99,15 @@ var VehicleRentalOverlay = function VehicleRentalOverlay(props) {
|
|
|
97
99
|
}).map(function (vehicle) {
|
|
98
100
|
return {
|
|
99
101
|
type: "Feature",
|
|
102
|
+
geometry: {
|
|
103
|
+
type: "Point",
|
|
104
|
+
coordinates: [vehicle.x, vehicle.y]
|
|
105
|
+
},
|
|
100
106
|
properties: _objectSpread(_objectSpread({}, vehicle), {}, {
|
|
101
107
|
networks: JSON.stringify(vehicle.networks),
|
|
102
108
|
"stroke-width": vehicle.isFloatingBike || vehicle.isFloatingVehicle ? 1 : 2,
|
|
103
109
|
color: getColorForStation(vehicle)
|
|
104
|
-
})
|
|
105
|
-
geometry: {
|
|
106
|
-
type: "Point",
|
|
107
|
-
coordinates: [vehicle.x, vehicle.y]
|
|
108
|
-
}
|
|
110
|
+
})
|
|
109
111
|
};
|
|
110
112
|
})
|
|
111
113
|
};
|
|
@@ -114,19 +116,18 @@ var VehicleRentalOverlay = function VehicleRentalOverlay(props) {
|
|
|
114
116
|
data: vehiclesGeoJSON
|
|
115
117
|
}, /*#__PURE__*/React.createElement(Layer, {
|
|
116
118
|
id: layerId,
|
|
117
|
-
type: "circle",
|
|
118
119
|
paint: {
|
|
119
120
|
"circle-color": ["get", "color"],
|
|
120
121
|
"circle-opacity": 0.9,
|
|
121
|
-
"circle-stroke-
|
|
122
|
-
"circle-stroke-
|
|
123
|
-
}
|
|
122
|
+
"circle-stroke-color": "#333",
|
|
123
|
+
"circle-stroke-width": ["get", "stroke-width"]
|
|
124
|
+
},
|
|
125
|
+
type: "circle"
|
|
124
126
|
})), zoom >= DETAILED_MARKER_CUTOFF && stations.filter(function (station) {
|
|
125
127
|
return checkIfPositionInViewport(bounds, station.y, station.x);
|
|
126
128
|
}).map(function (station) {
|
|
127
129
|
return /*#__PURE__*/React.createElement(MarkerWithPopup, {
|
|
128
130
|
key: station.id,
|
|
129
|
-
position: [station.y, station.x],
|
|
130
131
|
popupContents: /*#__PURE__*/React.createElement(StationPopup, {
|
|
131
132
|
configCompanies: configCompanies,
|
|
132
133
|
setLocation: function setLocation(location) {
|
|
@@ -136,7 +137,8 @@ var VehicleRentalOverlay = function VehicleRentalOverlay(props) {
|
|
|
136
137
|
},
|
|
137
138
|
getStationName: getStationName,
|
|
138
139
|
station: station
|
|
139
|
-
})
|
|
140
|
+
}),
|
|
141
|
+
position: [station.y, station.x]
|
|
140
142
|
}, station.bikesAvailable !== undefined && !station.isFloatingBike && !station.isFloatingVehicle && station.spacesAvailable !== undefined ? /*#__PURE__*/React.createElement(BaseBikeRentalIcon, {
|
|
141
143
|
percent: (station === null || station === void 0 ? void 0 : station.bikesAvailable) / ((station === null || station === void 0 ? void 0 : station.bikesAvailable) + (station === null || station === void 0 ? void 0 : station.spacesAvailable))
|
|
142
144
|
}) : /*#__PURE__*/React.createElement(StationMarker, {
|
|
@@ -144,20 +146,20 @@ var VehicleRentalOverlay = function VehicleRentalOverlay(props) {
|
|
|
144
146
|
color: getColorForStation(station)
|
|
145
147
|
}));
|
|
146
148
|
}), clickedVehicle && /*#__PURE__*/React.createElement(Popup, {
|
|
149
|
+
latitude: clickedVehicle.y,
|
|
150
|
+
longitude: clickedVehicle.x,
|
|
151
|
+
maxWidth: "100%",
|
|
147
152
|
onClose: function onClose() {
|
|
148
153
|
setClickedVehicle(null);
|
|
149
|
-
}
|
|
150
|
-
longitude: clickedVehicle.x,
|
|
151
|
-
latitude: clickedVehicle.y,
|
|
152
|
-
maxWidth: "100%"
|
|
154
|
+
}
|
|
153
155
|
}, /*#__PURE__*/React.createElement(StationPopup, {
|
|
154
156
|
configCompanies: configCompanies,
|
|
157
|
+
getStationName: getStationName,
|
|
155
158
|
setLocation: function setLocation(location) {
|
|
156
159
|
setClickedVehicle(null);
|
|
157
160
|
|
|
158
161
|
_setLocation(location);
|
|
159
162
|
},
|
|
160
|
-
getStationName: getStationName,
|
|
161
163
|
station: _objectSpread(_objectSpread({}, clickedVehicle), {}, {
|
|
162
164
|
networks: JSON.parse(clickedVehicle.networks)
|
|
163
165
|
})
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.tsx"],"names":["Source","Layer","useMap","Popup","React","useEffect","useState","MarkerWithPopup","StationPopup","BaseBikeRentalIcon","StationMarker","DETAILED_MARKER_CUTOFF","getColorForStation","v","isFloatingCar","isFloatingVehicle","bikesAvailable","undefined","isFloatingBike","checkIfPositionInViewport","bounds","lat","lng","PADDING","_sw","_ne","sw","ne","VehicleRentalOverlay","props","mainMap","zoom","getZoom","getBounds","configCompanies","companies","getStationName","id","refreshVehicles","setLocation","stations","visible","layerId","clickedVehicle","setClickedVehicle","setInterval","VEHICLE_LAYERS","forEach","stopLayer","on","getCanvas","style","cursor","event","features","properties","length","vehiclesGeoJSON","type","filter","vehicle","networks","includes","map","JSON","stringify","color","geometry","coordinates","x","y","station","location","spacesAvailable","parse"],"mappings":"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","sourcesContent":["import { Source, Layer, useMap, Popup } from \"react-map-gl\";\nimport { EventData } from \"mapbox-gl\";\nimport React, { useEffect, useState } from \"react\";\nimport {\n Company,\n Station,\n MapLocationActionArg,\n ConfiguredCompany\n} from \"@opentripplanner/types\";\nimport { MarkerWithPopup } from \"@opentripplanner/base-map\";\nimport StationPopup from \"./StationPopup\";\nimport { BaseBikeRentalIcon, StationMarker } from \"./styled\";\n\n// TODO: Make configurable?\nconst DETAILED_MARKER_CUTOFF = 16;\n\nconst getColorForStation = (v: Station) => {\n if (v.isFloatingCar) return \"#009cde\";\n if (v.isFloatingVehicle) return \"#f5a729\";\n // TODO: nicer color to match transitive\n if (v.bikesAvailable !== undefined || v.isFloatingBike) return \"#f00\";\n return \"gray\";\n};\n\nconst checkIfPositionInViewport = (\n bounds: mapboxgl.LngLatBounds,\n lat: number,\n lng: number\n): boolean => {\n const PADDING = 0.001;\n // @ts-expect-error types appear to be wrong? version issue?\n // eslint-disable-next-line no-underscore-dangle\n const [sw, ne] = [bounds._sw, bounds._ne];\n if (!sw || !ne) return false;\n\n return (\n lat >= sw.lat - PADDING &&\n lat <= ne.lat + PADDING &&\n lng >= sw.lng - PADDING &&\n lng <= ne.lng + PADDING\n );\n};\n\ntype Props = {\n /**\n * The entire companies config array.\n */\n configCompanies: ConfiguredCompany[];\n /**\n * A list of companies that are applicable to just this instance of the\n * overlay.\n */\n companies?: string[];\n /**\n * An id, used to make this layer uniquely identifiable\n */\n id: string;\n /**\n * An optional custom function to create a string name of a particular vehicle\n * rental station. This function takes two arguments of the configCompanies\n * prop and a vehicle rental station. The function must return a string.\n */\n getStationName?: (configCompanies: Company[], station: Station) => string;\n /**\n * If specified, a function that will be triggered every 30 seconds whenever this layer is\n * visible.\n */\n refreshVehicles?: () => void;\n /**\n * A callback for when a user clicks on setting this stop as either the from\n * or to location of a new search.\n *\n * This will be dispatched with the following argument:\n *\n * ```js\n * {\n * location: {\n * lat: number,\n * lon: number,\n * name: string\n * },\n * locationType: \"from\" or \"to\"\n * }\n * ```\n */\n setLocation?: (arg: MapLocationActionArg) => void;\n /**\n * A list of the vehicle rental stations specific to this overlay instance.\n */\n stations: Station[];\n /**\n * Whether the overlay is currently visible.\n */\n visible?: boolean;\n /**\n * TODO: Add props for overriding symbols?\n */\n};\n\n/**\n * This vehicle rental overlay can be used to render vehicle rentals of various\n * types. This layer can be configured to show different styles of markers at\n * different zoom levels.\n */\nconst VehicleRentalOverlay = (props: Props): JSX.Element => {\n const { mainMap } = useMap();\n const zoom = mainMap?.getZoom();\n const bounds = mainMap?.getBounds();\n\n const {\n configCompanies,\n companies,\n getStationName,\n id,\n refreshVehicles,\n setLocation,\n stations,\n visible\n } = props;\n const layerId = `rental-vehicles-${id}`;\n const [clickedVehicle, setClickedVehicle] = useState(null);\n\n useEffect(() => {\n // TODO: Make 30s configurable?\n if (!refreshVehicles || typeof refreshVehicles !== \"function\") {\n return;\n }\n\n refreshVehicles();\n setInterval(refreshVehicles, 30_000);\n }, [refreshVehicles]);\n\n useEffect(() => {\n const VEHICLE_LAYERS = [layerId];\n VEHICLE_LAYERS.forEach(stopLayer => {\n mainMap?.on(\"mouseenter\", stopLayer, () => {\n mainMap.getCanvas().style.cursor = \"pointer\";\n });\n mainMap?.on(\"mouseleave\", stopLayer, () => {\n mainMap.getCanvas().style.cursor = \"\";\n });\n mainMap?.on(\"click\", stopLayer, (event: EventData) => {\n setClickedVehicle(event.features?.[0].properties);\n });\n });\n }, [mainMap]);\n\n // Don't render if no map or no stops are defined.\n if (visible === false || !stations || stations.length === 0) {\n return <></>;\n }\n\n const vehiclesGeoJSON: GeoJSON.FeatureCollection = {\n type: \"FeatureCollection\",\n features: stations\n .filter(\n vehicle =>\n // Include specified companies only if companies is specified and network info is available\n !companies ||\n !vehicle.networks ||\n companies.includes(vehicle.networks[0])\n )\n .map(vehicle => ({\n type: \"Feature\",\n properties: {\n ...vehicle,\n networks: JSON.stringify(vehicle.networks),\n \"stroke-width\":\n vehicle.isFloatingBike || vehicle.isFloatingVehicle ? 1 : 2,\n color: getColorForStation(vehicle)\n },\n geometry: { type: \"Point\", coordinates: [vehicle.x, vehicle.y] }\n }))\n };\n\n return (\n <>\n {zoom < DETAILED_MARKER_CUTOFF && (\n <Source type=\"geojson\" data={vehiclesGeoJSON}>\n <Layer\n id={layerId}\n type=\"circle\"\n paint={{\n \"circle-color\": [\"get\", \"color\"],\n \"circle-opacity\": 0.9,\n \"circle-stroke-width\": [\"get\", \"stroke-width\"],\n \"circle-stroke-color\": \"#333\"\n }}\n />\n {/* this is where we add the symbols layer. add a second layer that gets swapped in and out dynamically */}\n </Source>\n )}\n {zoom >= DETAILED_MARKER_CUTOFF &&\n stations\n .filter(station =>\n checkIfPositionInViewport(bounds, station.y, station.x)\n )\n .map(station => (\n <MarkerWithPopup\n key={station.id}\n position={[station.y, station.x]}\n popupContents={\n <StationPopup\n configCompanies={configCompanies}\n setLocation={location => {\n setClickedVehicle(null);\n setLocation(location);\n }}\n getStationName={getStationName}\n station={station}\n />\n }\n >\n {station.bikesAvailable !== undefined &&\n !station.isFloatingBike &&\n !station.isFloatingVehicle &&\n station.spacesAvailable !== undefined ? (\n <BaseBikeRentalIcon\n percent={\n station?.bikesAvailable /\n (station?.bikesAvailable + station?.spacesAvailable)\n }\n />\n ) : (\n <StationMarker width={12} color={getColorForStation(station)} />\n )}\n </MarkerWithPopup>\n ))}\n {clickedVehicle && (\n <Popup\n onClose={() => {\n setClickedVehicle(null);\n }}\n longitude={clickedVehicle.x}\n latitude={clickedVehicle.y}\n maxWidth=\"100%\"\n >\n <StationPopup\n configCompanies={configCompanies}\n setLocation={location => {\n setClickedVehicle(null);\n setLocation(location);\n }}\n getStationName={getStationName}\n station={{\n ...clickedVehicle,\n networks: JSON.parse(clickedVehicle.networks)\n }}\n />\n </Popup>\n )}\n </>\n );\n};\nexport default VehicleRentalOverlay;\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx"],"names":["MarkerWithPopup","React","useEffect","useState","Layer","Popup","Source","useMap","StationPopup","BaseBikeRentalIcon","StationMarker","DETAILED_MARKER_CUTOFF","getColorForStation","v","isFloatingCar","isFloatingVehicle","bikesAvailable","undefined","isFloatingBike","checkIfPositionInViewport","bounds","lat","lng","PADDING","_sw","_ne","sw","ne","VehicleRentalOverlay","companies","configCompanies","getStationName","id","refreshVehicles","setLocation","stations","visible","map","current","zoom","getZoom","getBounds","layerId","clickedVehicle","setClickedVehicle","setInterval","VEHICLE_LAYERS","forEach","stopLayer","on","getCanvas","style","cursor","event","features","properties","length","vehiclesGeoJSON","type","filter","vehicle","networks","includes","geometry","coordinates","x","y","JSON","stringify","color","station","location","spacesAvailable","parse"],"mappings":"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","sourcesContent":["import { MarkerWithPopup } from \"@opentripplanner/base-map\";\nimport {\n Company,\n ConfiguredCompany,\n MapLocationActionArg,\n Station\n} from \"@opentripplanner/types\";\nimport { EventData } from \"mapbox-gl\";\nimport React, { useEffect, useState } from \"react\";\nimport { Layer, Popup, Source, useMap } from \"react-map-gl\";\n\nimport StationPopup from \"./StationPopup\";\nimport { BaseBikeRentalIcon, StationMarker } from \"./styled\";\n\n// TODO: Make configurable?\nconst DETAILED_MARKER_CUTOFF = 16;\n\nconst getColorForStation = (v: Station) => {\n if (v.isFloatingCar) return \"#009cde\";\n if (v.isFloatingVehicle) return \"#f5a729\";\n // TODO: nicer color to match transitive\n if (v.bikesAvailable !== undefined || v.isFloatingBike) return \"#f00\";\n return \"gray\";\n};\n\nconst checkIfPositionInViewport = (\n bounds: mapboxgl.LngLatBounds,\n lat: number,\n lng: number\n): boolean => {\n const PADDING = 0.001;\n // @ts-expect-error types appear to be wrong? version issue?\n // eslint-disable-next-line no-underscore-dangle\n const [sw, ne] = [bounds._sw, bounds._ne];\n if (!sw || !ne) return false;\n\n return (\n lat >= sw.lat - PADDING &&\n lat <= ne.lat + PADDING &&\n lng >= sw.lng - PADDING &&\n lng <= ne.lng + PADDING\n );\n};\n\ntype Props = {\n /**\n * A list of companies that are applicable to just this instance of the\n * overlay.\n */\n companies?: string[];\n /**\n * The entire companies config array.\n */\n configCompanies: ConfiguredCompany[];\n /**\n * An id, used to make this layer uniquely identifiable\n */\n id: string;\n /**\n * An optional custom function to create a string name of a particular vehicle\n * rental station. This function takes two arguments of the configCompanies\n * prop and a vehicle rental station. The function must return a string.\n */\n getStationName?: (configCompanies: Company[], station: Station) => string;\n /**\n * If specified, a function that will be triggered every 30 seconds whenever this layer is\n * visible.\n */\n refreshVehicles?: () => void;\n /**\n * A callback for when a user clicks on setting this stop as either the from\n * or to location of a new search.\n *\n * This will be dispatched with the following argument:\n *\n * ```js\n * {\n * location: {\n * lat: number,\n * lon: number,\n * name: string\n * },\n * locationType: \"from\" or \"to\"\n * }\n * ```\n */\n setLocation?: (arg: MapLocationActionArg) => void;\n /**\n * A list of the vehicle rental stations specific to this overlay instance.\n */\n stations: Station[];\n /**\n * Whether the overlay is currently visible.\n */\n visible?: boolean;\n /**\n * TODO: Add props for overriding symbols?\n */\n};\n\n/**\n * This vehicle rental overlay can be used to render vehicle rentals of various\n * types. This layer can be configured to show different styles of markers at\n * different zoom levels.\n */\nconst VehicleRentalOverlay = ({\n companies,\n configCompanies,\n getStationName,\n id,\n refreshVehicles,\n setLocation,\n stations,\n visible\n}: Props): JSX.Element => {\n const { current: map } = useMap();\n const zoom = map?.getZoom();\n const bounds = map?.getBounds();\n\n const layerId = `rental-vehicles-${id}`;\n const [clickedVehicle, setClickedVehicle] = useState(null);\n\n useEffect(() => {\n // TODO: Make 30s configurable?\n if (!refreshVehicles || typeof refreshVehicles !== \"function\") {\n return;\n }\n\n refreshVehicles();\n setInterval(refreshVehicles, 30_000);\n }, [refreshVehicles]);\n\n useEffect(() => {\n const VEHICLE_LAYERS = [layerId];\n VEHICLE_LAYERS.forEach(stopLayer => {\n map?.on(\"mouseenter\", stopLayer, () => {\n map.getCanvas().style.cursor = \"pointer\";\n });\n map?.on(\"mouseleave\", stopLayer, () => {\n map.getCanvas().style.cursor = \"\";\n });\n map?.on(\"click\", stopLayer, (event: EventData) => {\n setClickedVehicle(event.features?.[0].properties);\n });\n });\n }, [map]);\n\n // Don't render if no map or no stops are defined.\n if (visible === false || !stations || stations.length === 0) {\n // Null can't be returned here -- react-map-gl dislikes null values as children\n return <></>;\n }\n\n const vehiclesGeoJSON: GeoJSON.FeatureCollection = {\n type: \"FeatureCollection\",\n features: stations\n .filter(\n vehicle =>\n // Include specified companies only if companies is specified and network info is available\n !companies ||\n !vehicle.networks ||\n companies.includes(vehicle.networks[0])\n )\n .map(vehicle => ({\n type: \"Feature\",\n geometry: { type: \"Point\", coordinates: [vehicle.x, vehicle.y] },\n properties: {\n ...vehicle,\n networks: JSON.stringify(vehicle.networks),\n \"stroke-width\":\n vehicle.isFloatingBike || vehicle.isFloatingVehicle ? 1 : 2,\n color: getColorForStation(vehicle)\n }\n }))\n };\n\n return (\n <>\n {zoom < DETAILED_MARKER_CUTOFF && (\n <Source type=\"geojson\" data={vehiclesGeoJSON}>\n <Layer\n id={layerId}\n paint={{\n \"circle-color\": [\"get\", \"color\"],\n \"circle-opacity\": 0.9,\n \"circle-stroke-color\": \"#333\",\n \"circle-stroke-width\": [\"get\", \"stroke-width\"]\n }}\n type=\"circle\"\n />\n {/* this is where we add the symbols layer. add a second layer that gets swapped in and out dynamically */}\n </Source>\n )}\n {zoom >= DETAILED_MARKER_CUTOFF &&\n stations\n .filter(station =>\n checkIfPositionInViewport(bounds, station.y, station.x)\n )\n .map(station => (\n <MarkerWithPopup\n key={station.id}\n popupContents={\n <StationPopup\n configCompanies={configCompanies}\n setLocation={location => {\n setClickedVehicle(null);\n setLocation(location);\n }}\n getStationName={getStationName}\n station={station}\n />\n }\n position={[station.y, station.x]}\n >\n {station.bikesAvailable !== undefined &&\n !station.isFloatingBike &&\n !station.isFloatingVehicle &&\n station.spacesAvailable !== undefined ? (\n <BaseBikeRentalIcon\n percent={\n station?.bikesAvailable /\n (station?.bikesAvailable + station?.spacesAvailable)\n }\n />\n ) : (\n <StationMarker width={12} color={getColorForStation(station)} />\n )}\n </MarkerWithPopup>\n ))}\n {clickedVehicle && (\n <Popup\n latitude={clickedVehicle.y}\n longitude={clickedVehicle.x}\n maxWidth=\"100%\"\n onClose={() => {\n setClickedVehicle(null);\n }}\n >\n <StationPopup\n configCompanies={configCompanies}\n getStationName={getStationName}\n setLocation={location => {\n setClickedVehicle(null);\n setLocation(location);\n }}\n station={{\n ...clickedVehicle,\n networks: JSON.parse(clickedVehicle.networks)\n }}\n />\n </Popup>\n )}\n </>\n );\n};\nexport default VehicleRentalOverlay;\n"],"file":"index.js"}
|
package/esm/styled.js
CHANGED
|
@@ -51,13 +51,13 @@ var getPctIcon = function getPctIcon(percent) {
|
|
|
51
51
|
export var BaseBikeRentalIcon = styled.div.withConfig({
|
|
52
52
|
displayName: "styled__BaseBikeRentalIcon",
|
|
53
53
|
componentId: "sc-1lr3k75-0"
|
|
54
|
-
})(["background-
|
|
54
|
+
})(["background-position:center;background-repeat:no-repeat;background-size:contain;height:24px;margin:auto;width:24px;", ""], function (props) {
|
|
55
55
|
return getPctIcon(props.percent);
|
|
56
56
|
});
|
|
57
57
|
export var StationMarker = styled(MapMarkerAlt).withConfig({
|
|
58
58
|
displayName: "styled__StationMarker",
|
|
59
59
|
componentId: "sc-1lr3k75-1"
|
|
60
|
-
})(["height:12;width:12;
|
|
60
|
+
})(["color:", ";height:12;width:12;"], function (props) {
|
|
61
61
|
return props.color;
|
|
62
62
|
});
|
|
63
63
|
//# sourceMappingURL=styled.js.map
|
package/esm/styled.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/styled.ts"],"names":["styled","MapMarkerAlt","getPctIcon","percent","Math","floor","BaseBikeRentalIcon","div","props","StationMarker","color"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,mBAAnB;AACA,SAASC,YAAT,QAA6B,qCAA7B;;AAEA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,OAAD,EAAqB;AACtC,UAAQC,IAAI,CAACC,KAAL,CAAWF,OAAO,GAAG,EAArB,CAAR;AACE,SAAK,CAAL;AACE,aAAO,kjDAAP;;AACF,SAAK,CAAL;AACE,aAAO,0sDAAP;;AACF,SAAK,CAAL;AACE,aAAO,i0DAAP;;AACF,SAAK,CAAL;AACE,aAAO,07DAAP;;AACF,SAAK,CAAL;AACE,aAAO,kjEAAP;;AACF,SAAK,CAAL;AACE,aAAO,sqEAAP;;AACF,SAAK,CAAL;AACE,aAAO,kyEAAP;;AACF,SAAK,CAAL;AACE,aAAO,85EAAP;;AACF,SAAK,CAAL;AACE,aAAO,khFAAP;;AACF,SAAK,CAAL;AACE,aAAO,8oFAAP;;AACF,SAAK,EAAL;AACE,aAAO,siCAAP;;AACF;AACE,aAAO,kjDAAP;AAxBJ;AA0BD,CA3BD;AA4BA;AACA;AACA;AACA;AACA;AACA;;;AACA,OAAO,IAAMG,kBAAkB,GAAGN,MAAM,CAACO,GAAV;AAAA;AAAA;AAAA,+HAO3B,UAAAC,KAAK;AAAA,SAAIN,UAAU,CAACM,KAAK,CAACL,OAAP,CAAd;AAAA,CAPsB,CAAxB;AAUP,OAAO,IAAMM,aAAa,GAAGT,MAAM,CAACC,YAAD,CAAT;AAAA;AAAA;AAAA,uCAGf,UAAAO,KAAK;AAAA,SAAIA,KAAK,CAACE,KAAV;AAAA,CAHU,CAAnB","sourcesContent":["import styled from \"styled-components\";\nimport { MapMarkerAlt } from \"@styled-icons/fa-solid/MapMarkerAlt\";\n\nconst getPctIcon = (percent: number) => {\n switch (Math.floor(percent * 10)) {\n case 0:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItMDwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNODMuNCw0M0E0MS4yNSw0MS4yNSwwLDEsMCwyOS41LDgyLjNMNDMuNCw5Ni41LDU1LjMsODIuMUE0MS4yOSw0MS4yOSwwLDAsMCw4My40LDQzWk02NS43LDcwLjZMNDYuNSw0Ny43YTYsNiwwLDAsMCwxLjgtMy4ybDI5LjQsNS4yQTM2LjMzLDM2LjMzLDAsMCwxLDY1LjcsNzAuNlpNNi41LDQ5LjdsMjkuNC01LjJhNi44Myw2LjgzLDAsMCwwLDEuOCwzLjJMMTguNSw3MC42QTM2LjMzLDM2LjMzLDAsMCwxLDYuNSw0OS43Wk01LjksNDNhMzUuODIsMzUuODIsMCwwLDEsNC43LTE3LjhMMzYuNCw0MC4xYTUuOTIsNS45MiwwLDAsMC0uNywyLjl2MC43TDYuMyw0OUEzOS40NSwzOS40NSwwLDAsMSw1LjksNDNaTTI5LjQsOS4xbDEwLjIsMjhhNiw2LDAsMCwwLTIuOCwyLjRMMTAuOSwyNC42QTM2LjYyLDM2LjYyLDAsMCwxLDI5LjQsOS4xWk00Mi4xLDYuOGEzNCwzNCwwLDAsMSwxMiwyLjFsLTEwLjIsMjhhNS42Niw1LjY2LDAsMCwwLTEuOC0uMyw1LjIzLDUuMjMsMCwwLDAtMS44LjNMMzAuMSw4LjlBMzQsMzQsMCwwLDEsNDIuMSw2LjhaTTczLjMsMjQuNkw0Ny41LDM5LjVhNy4yLDcuMiwwLDAsMC0yLjgtMi40bDEwLjItMjhBMzYuOCwzNi44LDAsMCwxLDczLjMsMjQuNlpNMTkuMSw3MUwzOC4zLDQ4LjFhNy4wOSw3LjA5LDAsMCwwLDMuNSwxLjNWNzkuMkEzNS40NCwzNS40NCwwLDAsMSwxOS4xLDcxWm0yMy40LDguM1Y0OS40QTYuMjUsNi4yNSwwLDAsMCw0Niw0OC4xTDY1LjEsNzFBMzYsMzYsMCwwLDEsNDIuNSw3OS4zWm02LTM1LjVWNDMuMWE3LjI3LDcuMjcsMCwwLDAtLjctMi45TDczLjYsMjUuM2EzNS44MiwzNS44MiwwLDAsMSw0LjcsMTcuOCwzOC4wOCwzOC4wOCwwLDAsMS0uNSw1LjlaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC45IC0xLjgpIi8+PC9zdmc+\");';\n case 1:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItMTwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjQxLjEgODAuMDcgNDEuMTUgNDYuMDkgMzcuMTEgNDUuNjUgMTUuOTIgNzEuMTEgNDEuMSA4MC4wNyIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTgzLjQsNDNBNDEuMjUsNDEuMjUsMCwxLDAsMjkuNSw4Mi4zTDQzLjQsOTYuNSw1NS4zLDgyLjFBNDEuMjksNDEuMjksMCwwLDAsODMuNCw0M1pNNjUuNyw3MC42TDQ2LjUsNDcuN2E2LDYsMCwwLDAsMS44LTMuMmwyOS40LDUuMkEzNi4zMywzNi4zMywwLDAsMSw2NS43LDcwLjZaTTYuNSw0OS43bDI5LjQtNS4yYTYuODMsNi44MywwLDAsMCwxLjgsMy4yTDE4LjUsNzAuNkEzNi4zMywzNi4zMywwLDAsMSw2LjUsNDkuN1pNNS45LDQzYTM1LjgyLDM1LjgyLDAsMCwxLDQuNy0xNy44TDM2LjQsNDAuMWE1LjkyLDUuOTIsMCwwLDAtLjcsMi45djAuN0w2LjMsNDlBMzkuNDUsMzkuNDUsMCwwLDEsNS45LDQzWk0yOS40LDkuMWwxMC4yLDI4YTYsNiwwLDAsMC0yLjgsMi40TDEwLjksMjQuNkEzNi42MiwzNi42MiwwLDAsMSwyOS40LDkuMVpNNDIuMSw2LjhhMzQsMzQsMCwwLDEsMTIsMi4xbC0xMC4yLDI4YTUuNjYsNS42NiwwLDAsMC0xLjgtLjMsNS4yMyw1LjIzLDAsMCwwLTEuOC4zTDMwLjEsOC45QTM0LDM0LDAsMCwxLDQyLjEsNi44Wk03My4zLDI0LjZMNDcuNSwzOS41YTcuMiw3LjIsMCwwLDAtMi44LTIuNGwxMC4yLTI4QTM2LjgsMzYuOCwwLDAsMSw3My4zLDI0LjZaTTE5LjEsNzFMMzguMyw0OC4xYTcuMDksNy4wOSwwLDAsMCwzLjUsMS4zVjc5LjJBMzUuNDQsMzUuNDQsMCwwLDEsMTkuMSw3MVptMjMuNCw4LjNWNDkuNEE2LjI1LDYuMjUsMCwwLDAsNDYsNDguMUw2NS4xLDcxQTM2LDM2LDAsMCwxLDQyLjUsNzkuM1ptNi0zNS41VjQzLjFhNy4yNyw3LjI3LDAsMCwwLS43LTIuOUw3My42LDI1LjNhMzUuODIsMzUuODIsMCwwLDEsNC43LDE3LjgsMzguMDgsMzguMDgsMCwwLDEtLjUsNS45WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuOSAtMS44KSIvPjwvc3ZnPg==\");';\n case 2:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItMjwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjQxLjEgODAuMDcgNDEuMTUgNDYuMDkgMzcuMTEgNDUuNjUgMTUuOTIgNzEuMTEgNDEuMSA4MC4wNyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIxNS45NiA3MC43OCAzNy45MSA0NC44NSAzNS4xMSA0MS45MSAyLjQ5IDQ3LjY5IDE1Ljk2IDcwLjc4Ii8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNODMuNCw0M0E0MS4yNSw0MS4yNSwwLDEsMCwyOS41LDgyLjNMNDMuNCw5Ni41LDU1LjMsODIuMUE0MS4yOSw0MS4yOSwwLDAsMCw4My40LDQzWk02NS43LDcwLjZMNDYuNSw0Ny43YTYsNiwwLDAsMCwxLjgtMy4ybDI5LjQsNS4yQTM2LjMzLDM2LjMzLDAsMCwxLDY1LjcsNzAuNlpNNi41LDQ5LjdsMjkuNC01LjJhNi44Myw2LjgzLDAsMCwwLDEuOCwzLjJMMTguNSw3MC42QTM2LjMzLDM2LjMzLDAsMCwxLDYuNSw0OS43Wk01LjksNDNhMzUuODIsMzUuODIsMCwwLDEsNC43LTE3LjhMMzYuNCw0MC4xYTUuOTIsNS45MiwwLDAsMC0uNywyLjl2MC43TDYuMyw0OUEzOS40NSwzOS40NSwwLDAsMSw1LjksNDNaTTI5LjQsOS4xbDEwLjIsMjhhNiw2LDAsMCwwLTIuOCwyLjRMMTAuOSwyNC42QTM2LjYyLDM2LjYyLDAsMCwxLDI5LjQsOS4xWk00Mi4xLDYuOGEzNCwzNCwwLDAsMSwxMiwyLjFsLTEwLjIsMjhhNS42Niw1LjY2LDAsMCwwLTEuOC0uMyw1LjIzLDUuMjMsMCwwLDAtMS44LjNMMzAuMSw4LjlBMzQsMzQsMCwwLDEsNDIuMSw2LjhaTTczLjMsMjQuNkw0Ny41LDM5LjVhNy4yLDcuMiwwLDAsMC0yLjgtMi40bDEwLjItMjhBMzYuOCwzNi44LDAsMCwxLDczLjMsMjQuNlpNMTkuMSw3MUwzOC4zLDQ4LjFhNy4wOSw3LjA5LDAsMCwwLDMuNSwxLjNWNzkuMkEzNS40NCwzNS40NCwwLDAsMSwxOS4xLDcxWm0yMy40LDguM1Y0OS40QTYuMjUsNi4yNSwwLDAsMCw0Niw0OC4xTDY1LjEsNzFBMzYsMzYsMCwwLDEsNDIuNSw3OS4zWm02LTM1LjVWNDMuMWE3LjI3LDcuMjcsMCwwLDAtLjctMi45TDczLjYsMjUuM2EzNS44MiwzNS44MiwwLDAsMSw0LjcsMTcuOCwzOC4wOCwzOC4wOCwwLDAsMS0uNSw1LjlaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC45IC0xLjgpIi8+PC9zdmc+\")';\n case 3:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItMzwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjQxLjEgODAuMDcgNDEuMTUgNDYuMDkgMzcuMTEgNDUuNjUgMTUuOTIgNzEuMTEgNDEuMSA4MC4wNyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIxNS45NiA3MC43OCAzNy45MSA0NC44NSAzNS4xMSA0MS45MSAyLjQ5IDQ3LjY5IDE1Ljk2IDcwLjc4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjIuOTIgNDguMDcgMzYuMzggNDIuMTcgMzYuMSAzOC4xMiA3LjMzIDIxLjcgMi45MiA0OC4wNyIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTgzLjQsNDNBNDEuMjUsNDEuMjUsMCwxLDAsMjkuNSw4Mi4zTDQzLjQsOTYuNSw1NS4zLDgyLjFBNDEuMjksNDEuMjksMCwwLDAsODMuNCw0M1pNNjUuNyw3MC42TDQ2LjUsNDcuN2E2LDYsMCwwLDAsMS44LTMuMmwyOS40LDUuMkEzNi4zMywzNi4zMywwLDAsMSw2NS43LDcwLjZaTTYuNSw0OS43bDI5LjQtNS4yYTYuODMsNi44MywwLDAsMCwxLjgsMy4yTDE4LjUsNzAuNkEzNi4zMywzNi4zMywwLDAsMSw2LjUsNDkuN1pNNS45LDQzYTM1LjgyLDM1LjgyLDAsMCwxLDQuNy0xNy44TDM2LjQsNDAuMWE1LjkyLDUuOTIsMCwwLDAtLjcsMi45djAuN0w2LjMsNDlBMzkuNDUsMzkuNDUsMCwwLDEsNS45LDQzWk0yOS40LDkuMWwxMC4yLDI4YTYsNiwwLDAsMC0yLjgsMi40TDEwLjksMjQuNkEzNi42MiwzNi42MiwwLDAsMSwyOS40LDkuMVpNNDIuMSw2LjhhMzQsMzQsMCwwLDEsMTIsMi4xbC0xMC4yLDI4YTUuNjYsNS42NiwwLDAsMC0xLjgtLjMsNS4yMyw1LjIzLDAsMCwwLTEuOC4zTDMwLjEsOC45QTM0LDM0LDAsMCwxLDQyLjEsNi44Wk03My4zLDI0LjZMNDcuNSwzOS41YTcuMiw3LjIsMCwwLDAtMi44LTIuNGwxMC4yLTI4QTM2LjgsMzYuOCwwLDAsMSw3My4zLDI0LjZaTTE5LjEsNzFMMzguMyw0OC4xYTcuMDksNy4wOSwwLDAsMCwzLjUsMS4zVjc5LjJBMzUuNDQsMzUuNDQsMCwwLDEsMTkuMSw3MVptMjMuNCw4LjNWNDkuNEE2LjI1LDYuMjUsMCwwLDAsNDYsNDguMUw2NS4xLDcxQTM2LDM2LDAsMCwxLDQyLjUsNzkuM1ptNi0zNS41VjQzLjFhNy4yNyw3LjI3LDAsMCwwLS43LTIuOUw3My42LDI1LjNhMzUuODIsMzUuODIsMCwwLDEsNC43LDE3LjgsMzguMDgsMzguMDgsMCwwLDEtLjUsNS45WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuOSAtMS44KSIvPjwvc3ZnPg==\");';\n case 4:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItNDwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjQxLjEgODAuMDcgNDEuMTUgNDYuMDkgMzcuMTEgNDUuNjUgMTUuOTIgNzEuMTEgNDEuMSA4MC4wNyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIxNS45NiA3MC43OCAzNy45MSA0NC44NSAzNS4xMSA0MS45MSAyLjQ5IDQ3LjY5IDE1Ljk2IDcwLjc4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjIuOTIgNDguMDcgMzYuMzggNDIuMTcgMzYuMSAzOC4xMiA3LjMzIDIxLjcgMi45MiA0OC4wNyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSI3LjExIDIxLjcxIDM2LjY4IDM4LjQ1IDM5LjA0IDM1LjE1IDI3LjI5IDQuMTggNy4xMSAyMS43MSIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTgzLjQsNDNBNDEuMjUsNDEuMjUsMCwxLDAsMjkuNSw4Mi4zTDQzLjQsOTYuNSw1NS4zLDgyLjFBNDEuMjksNDEuMjksMCwwLDAsODMuNCw0M1pNNjUuNyw3MC42TDQ2LjUsNDcuN2E2LDYsMCwwLDAsMS44LTMuMmwyOS40LDUuMkEzNi4zMywzNi4zMywwLDAsMSw2NS43LDcwLjZaTTYuNSw0OS43bDI5LjQtNS4yYTYuODMsNi44MywwLDAsMCwxLjgsMy4yTDE4LjUsNzAuNkEzNi4zMywzNi4zMywwLDAsMSw2LjUsNDkuN1pNNS45LDQzYTM1LjgyLDM1LjgyLDAsMCwxLDQuNy0xNy44TDM2LjQsNDAuMWE1LjkyLDUuOTIsMCwwLDAtLjcsMi45djAuN0w2LjMsNDlBMzkuNDUsMzkuNDUsMCwwLDEsNS45LDQzWk0yOS40LDkuMWwxMC4yLDI4YTYsNiwwLDAsMC0yLjgsMi40TDEwLjksMjQuNkEzNi42MiwzNi42MiwwLDAsMSwyOS40LDkuMVpNNDIuMSw2LjhhMzQsMzQsMCwwLDEsMTIsMi4xbC0xMC4yLDI4YTUuNjYsNS42NiwwLDAsMC0xLjgtLjMsNS4yMyw1LjIzLDAsMCwwLTEuOC4zTDMwLjEsOC45QTM0LDM0LDAsMCwxLDQyLjEsNi44Wk03My4zLDI0LjZMNDcuNSwzOS41YTcuMiw3LjIsMCwwLDAtMi44LTIuNGwxMC4yLTI4QTM2LjgsMzYuOCwwLDAsMSw3My4zLDI0LjZaTTE5LjEsNzFMMzguMyw0OC4xYTcuMDksNy4wOSwwLDAsMCwzLjUsMS4zVjc5LjJBMzUuNDQsMzUuNDQsMCwwLDEsMTkuMSw3MVptMjMuNCw4LjNWNDkuNEE2LjI1LDYuMjUsMCwwLDAsNDYsNDguMUw2NS4xLDcxQTM2LDM2LDAsMCwxLDQyLjUsNzkuM1ptNi0zNS41VjQzLjFhNy4yNyw3LjI3LDAsMCwwLS43LTIuOUw3My42LDI1LjNhMzUuODIsMzUuODIsMCwwLDEsNC43LDE3LjgsMzguMDgsMzguMDgsMCwwLDEtLjUsNS45WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuOSAtMS44KSIvPjwvc3ZnPg==\");';\n case 5:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItNTwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjU0LjU1IDQuNjkgNDIuODYgMzYuNTkgMzguOTIgMzUuNiAyNy44MyA0LjM5IDU0LjU1IDQuNjkiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNDEuMSA4MC4wNyA0MS4xNSA0Ni4wOSAzNy4xMSA0NS42NSAxNS45MiA3MS4xMSA0MS4xIDgwLjA3Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjE1Ljk2IDcwLjc4IDM3LjkxIDQ0Ljg1IDM1LjExIDQxLjkxIDIuNDkgNDcuNjkgMTUuOTYgNzAuNzgiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMi45MiA0OC4wNyAzNi4zOCA0Mi4xNyAzNi4xIDM4LjEyIDcuMzMgMjEuNyAyLjkyIDQ4LjA3Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjcuMTEgMjEuNzEgMzYuNjggMzguNDUgMzkuMDQgMzUuMTUgMjcuMjkgNC4xOCA3LjExIDIxLjcxIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNODMuNCw0M0E0MS4yNSw0MS4yNSwwLDEsMCwyOS41LDgyLjNMNDMuNCw5Ni41LDU1LjMsODIuMUE0MS4yOSw0MS4yOSwwLDAsMCw4My40LDQzWk02NS43LDcwLjZMNDYuNSw0Ny43YTYsNiwwLDAsMCwxLjgtMy4ybDI5LjQsNS4yQTM2LjMzLDM2LjMzLDAsMCwxLDY1LjcsNzAuNlpNNi41LDQ5LjdsMjkuNC01LjJhNi44Myw2LjgzLDAsMCwwLDEuOCwzLjJMMTguNSw3MC42QTM2LjMzLDM2LjMzLDAsMCwxLDYuNSw0OS43Wk01LjksNDNhMzUuODIsMzUuODIsMCwwLDEsNC43LTE3LjhMMzYuNCw0MC4xYTUuOTIsNS45MiwwLDAsMC0uNywyLjl2MC43TDYuMyw0OUEzOS40NSwzOS40NSwwLDAsMSw1LjksNDNaTTI5LjQsOS4xbDEwLjIsMjhhNiw2LDAsMCwwLTIuOCwyLjRMMTAuOSwyNC42QTM2LjYyLDM2LjYyLDAsMCwxLDI5LjQsOS4xWk00Mi4xLDYuOGEzNCwzNCwwLDAsMSwxMiwyLjFsLTEwLjIsMjhhNS42Niw1LjY2LDAsMCwwLTEuOC0uMyw1LjIzLDUuMjMsMCwwLDAtMS44LjNMMzAuMSw4LjlBMzQsMzQsMCwwLDEsNDIuMSw2LjhaTTczLjMsMjQuNkw0Ny41LDM5LjVhNy4yLDcuMiwwLDAsMC0yLjgtMi40bDEwLjItMjhBMzYuOCwzNi44LDAsMCwxLDczLjMsMjQuNlpNMTkuMSw3MUwzOC4zLDQ4LjFhNy4wOSw3LjA5LDAsMCwwLDMuNSwxLjNWNzkuMkEzNS40NCwzNS40NCwwLDAsMSwxOS4xLDcxWm0yMy40LDguM1Y0OS40QTYuMjUsNi4yNSwwLDAsMCw0Niw0OC4xTDY1LjEsNzFBMzYsMzYsMCwwLDEsNDIuNSw3OS4zWm02LTM1LjVWNDMuMWE3LjI3LDcuMjcsMCwwLDAtLjctMi45TDczLjYsMjUuM2EzNS44MiwzNS44MiwwLDAsMSw0LjcsMTcuOCwzOC4wOCwzOC4wOCwwLDAsMS0uNSw1LjlaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC45IC0xLjgpIi8+PC9zdmc+\");';\n case 6:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItNjwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9Ijc1LjI0IDIxLjkyIDQ1LjY3IDM4LjY2IDQzLjMxIDM1LjM2IDU1LjA2IDQuMzkgNzUuMjQgMjEuOTIiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNTQuNTUgNC42OSA0Mi44NiAzNi41OSAzOC45MiAzNS42IDI3LjgzIDQuMzkgNTQuNTUgNC42OSIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSI0MS4xIDgwLjA3IDQxLjE1IDQ2LjA5IDM3LjExIDQ1LjY1IDE1LjkyIDcxLjExIDQxLjEgODAuMDciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMTUuOTYgNzAuNzggMzcuOTEgNDQuODUgMzUuMTEgNDEuOTEgMi40OSA0Ny42OSAxNS45NiA3MC43OCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIyLjkyIDQ4LjA3IDM2LjM4IDQyLjE3IDM2LjEgMzguMTIgNy4zMyAyMS43IDIuOTIgNDguMDciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNy4xMSAyMS43MSAzNi42OCAzOC40NSAzOS4wNCAzNS4xNSAyNy4yOSA0LjE4IDcuMTEgMjEuNzEiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik04My40LDQzQTQxLjI1LDQxLjI1LDAsMSwwLDI5LjUsODIuM0w0My40LDk2LjUsNTUuMyw4Mi4xQTQxLjI5LDQxLjI5LDAsMCwwLDgzLjQsNDNaTTY1LjcsNzAuNkw0Ni41LDQ3LjdhNiw2LDAsMCwwLDEuOC0zLjJsMjkuNCw1LjJBMzYuMzMsMzYuMzMsMCwwLDEsNjUuNyw3MC42Wk02LjUsNDkuN2wyOS40LTUuMmE2LjgzLDYuODMsMCwwLDAsMS44LDMuMkwxOC41LDcwLjZBMzYuMzMsMzYuMzMsMCwwLDEsNi41LDQ5LjdaTTUuOSw0M2EzNS44MiwzNS44MiwwLDAsMSw0LjctMTcuOEwzNi40LDQwLjFhNS45Miw1LjkyLDAsMCwwLS43LDIuOXYwLjdMNi4zLDQ5QTM5LjQ1LDM5LjQ1LDAsMCwxLDUuOSw0M1pNMjkuNCw5LjFsMTAuMiwyOGE2LDYsMCwwLDAtMi44LDIuNEwxMC45LDI0LjZBMzYuNjIsMzYuNjIsMCwwLDEsMjkuNCw5LjFaTTQyLjEsNi44YTM0LDM0LDAsMCwxLDEyLDIuMWwtMTAuMiwyOGE1LjY2LDUuNjYsMCwwLDAtMS44LS4zLDUuMjMsNS4yMywwLDAsMC0xLjguM0wzMC4xLDguOUEzNCwzNCwwLDAsMSw0Mi4xLDYuOFpNNzMuMywyNC42TDQ3LjUsMzkuNWE3LjIsNy4yLDAsMCwwLTIuOC0yLjRsMTAuMi0yOEEzNi44LDM2LjgsMCwwLDEsNzMuMywyNC42Wk0xOS4xLDcxTDM4LjMsNDguMWE3LjA5LDcuMDksMCwwLDAsMy41LDEuM1Y3OS4yQTM1LjQ0LDM1LjQ0LDAsMCwxLDE5LjEsNzFabTIzLjQsOC4zVjQ5LjRBNi4yNSw2LjI1LDAsMCwwLDQ2LDQ4LjFMNjUuMSw3MUEzNiwzNiwwLDAsMSw0Mi41LDc5LjNabTYtMzUuNVY0My4xYTcuMjcsNy4yNywwLDAsMC0uNy0yLjlMNzMuNiwyNS4zYTM1LjgyLDM1LjgyLDAsMCwxLDQuNywxNy44LDM4LjA4LDM4LjA4LDAsMCwxLS41LDUuOVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjkgLTEuOCkiLz48L3N2Zz4=\");';\n case 7:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItNzwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9Ijc5LjQzIDQ4LjI4IDQ1Ljk3IDQyLjM4IDQ2LjI1IDM4LjMzIDc1LjAyIDIxLjkyIDc5LjQzIDQ4LjI4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9Ijc1LjI0IDIxLjkyIDQ1LjY3IDM4LjY2IDQzLjMxIDM1LjM2IDU1LjA2IDQuMzkgNzUuMjQgMjEuOTIiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNTQuNTUgNC42OSA0Mi44NiAzNi41OSAzOC45MiAzNS42IDI3LjgzIDQuMzkgNTQuNTUgNC42OSIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSI0MS4xIDgwLjA3IDQxLjE1IDQ2LjA5IDM3LjExIDQ1LjY1IDE1LjkyIDcxLjExIDQxLjEgODAuMDciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMTUuOTYgNzAuNzggMzcuOTEgNDQuODUgMzUuMTEgNDEuOTEgMi40OSA0Ny42OSAxNS45NiA3MC43OCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIyLjkyIDQ4LjA3IDM2LjM4IDQyLjE3IDM2LjEgMzguMTIgNy4zMyAyMS43IDIuOTIgNDguMDciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNy4xMSAyMS43MSAzNi42OCAzOC40NSAzOS4wNCAzNS4xNSAyNy4yOSA0LjE4IDcuMTEgMjEuNzEiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik04My40LDQzQTQxLjI1LDQxLjI1LDAsMSwwLDI5LjUsODIuM0w0My40LDk2LjUsNTUuMyw4Mi4xQTQxLjI5LDQxLjI5LDAsMCwwLDgzLjQsNDNaTTY1LjcsNzAuNkw0Ni41LDQ3LjdhNiw2LDAsMCwwLDEuOC0zLjJsMjkuNCw1LjJBMzYuMzMsMzYuMzMsMCwwLDEsNjUuNyw3MC42Wk02LjUsNDkuN2wyOS40LTUuMmE2LjgzLDYuODMsMCwwLDAsMS44LDMuMkwxOC41LDcwLjZBMzYuMzMsMzYuMzMsMCwwLDEsNi41LDQ5LjdaTTUuOSw0M2EzNS44MiwzNS44MiwwLDAsMSw0LjctMTcuOEwzNi40LDQwLjFhNS45Miw1LjkyLDAsMCwwLS43LDIuOXYwLjdMNi4zLDQ5QTM5LjQ1LDM5LjQ1LDAsMCwxLDUuOSw0M1pNMjkuNCw5LjFsMTAuMiwyOGE2LDYsMCwwLDAtMi44LDIuNEwxMC45LDI0LjZBMzYuNjIsMzYuNjIsMCwwLDEsMjkuNCw5LjFaTTQyLjEsNi44YTM0LDM0LDAsMCwxLDEyLDIuMWwtMTAuMiwyOGE1LjY2LDUuNjYsMCwwLDAtMS44LS4zLDUuMjMsNS4yMywwLDAsMC0xLjguM0wzMC4xLDguOUEzNCwzNCwwLDAsMSw0Mi4xLDYuOFpNNzMuMywyNC42TDQ3LjUsMzkuNWE3LjIsNy4yLDAsMCwwLTIuOC0yLjRsMTAuMi0yOEEzNi44LDM2LjgsMCwwLDEsNzMuMywyNC42Wk0xOS4xLDcxTDM4LjMsNDguMWE3LjA5LDcuMDksMCwwLDAsMy41LDEuM1Y3OS4yQTM1LjQ0LDM1LjQ0LDAsMCwxLDE5LjEsNzFabTIzLjQsOC4zVjQ5LjRBNi4yNSw2LjI1LDAsMCwwLDQ2LDQ4LjFMNjUuMSw3MUEzNiwzNiwwLDAsMSw0Mi41LDc5LjNabTYtMzUuNVY0My4xYTcuMjcsNy4yNywwLDAsMC0uNy0yLjlMNzMuNiwyNS4zYTM1LjgyLDM1LjgyLDAsMCwxLDQuNywxNy44LDM4LjA4LDM4LjA4LDAsMCwxLS41LDUuOVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjkgLTEuOCkiLz48L3N2Zz4=\");';\n case 8:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItODwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjY2LjM5IDcxIDQ0LjQ0IDQ1LjA2IDQ3LjI0IDQyLjEzIDc5Ljg2IDQ3LjkxIDY2LjM5IDcxIi8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9Ijc5LjQzIDQ4LjI4IDQ1Ljk3IDQyLjM4IDQ2LjI1IDM4LjMzIDc1LjAyIDIxLjkyIDc5LjQzIDQ4LjI4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9Ijc1LjI0IDIxLjkyIDQ1LjY3IDM4LjY2IDQzLjMxIDM1LjM2IDU1LjA2IDQuMzkgNzUuMjQgMjEuOTIiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNTQuNTUgNC42OSA0Mi44NiAzNi41OSAzOC45MiAzNS42IDI3LjgzIDQuMzkgNTQuNTUgNC42OSIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSI0MS4xIDgwLjA3IDQxLjE1IDQ2LjA5IDM3LjExIDQ1LjY1IDE1LjkyIDcxLjExIDQxLjEgODAuMDciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMTUuOTYgNzAuNzggMzcuOTEgNDQuODUgMzUuMTEgNDEuOTEgMi40OSA0Ny42OSAxNS45NiA3MC43OCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIyLjkyIDQ4LjA3IDM2LjM4IDQyLjE3IDM2LjEgMzguMTIgNy4zMyAyMS43IDIuOTIgNDguMDciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNy4xMSAyMS43MSAzNi42OCAzOC40NSAzOS4wNCAzNS4xNSAyNy4yOSA0LjE4IDcuMTEgMjEuNzEiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik04My40LDQzQTQxLjI1LDQxLjI1LDAsMSwwLDI5LjUsODIuM0w0My40LDk2LjUsNTUuMyw4Mi4xQTQxLjI5LDQxLjI5LDAsMCwwLDgzLjQsNDNaTTY1LjcsNzAuNkw0Ni41LDQ3LjdhNiw2LDAsMCwwLDEuOC0zLjJsMjkuNCw1LjJBMzYuMzMsMzYuMzMsMCwwLDEsNjUuNyw3MC42Wk02LjUsNDkuN2wyOS40LTUuMmE2LjgzLDYuODMsMCwwLDAsMS44LDMuMkwxOC41LDcwLjZBMzYuMzMsMzYuMzMsMCwwLDEsNi41LDQ5LjdaTTUuOSw0M2EzNS44MiwzNS44MiwwLDAsMSw0LjctMTcuOEwzNi40LDQwLjFhNS45Miw1LjkyLDAsMCwwLS43LDIuOXYwLjdMNi4zLDQ5QTM5LjQ1LDM5LjQ1LDAsMCwxLDUuOSw0M1pNMjkuNCw5LjFsMTAuMiwyOGE2LDYsMCwwLDAtMi44LDIuNEwxMC45LDI0LjZBMzYuNjIsMzYuNjIsMCwwLDEsMjkuNCw5LjFaTTQyLjEsNi44YTM0LDM0LDAsMCwxLDEyLDIuMWwtMTAuMiwyOGE1LjY2LDUuNjYsMCwwLDAtMS44LS4zLDUuMjMsNS4yMywwLDAsMC0xLjguM0wzMC4xLDguOUEzNCwzNCwwLDAsMSw0Mi4xLDYuOFpNNzMuMywyNC42TDQ3LjUsMzkuNWE3LjIsNy4yLDAsMCwwLTIuOC0yLjRsMTAuMi0yOEEzNi44LDM2LjgsMCwwLDEsNzMuMywyNC42Wk0xOS4xLDcxTDM4LjMsNDguMWE3LjA5LDcuMDksMCwwLDAsMy41LDEuM1Y3OS4yQTM1LjQ0LDM1LjQ0LDAsMCwxLDE5LjEsNzFabTIzLjQsOC4zVjQ5LjRBNi4yNSw2LjI1LDAsMCwwLDQ2LDQ4LjFMNjUuMSw3MUEzNiwzNiwwLDAsMSw0Mi41LDc5LjNabTYtMzUuNVY0My4xYTcuMjcsNy4yNywwLDAsMC0uNy0yLjlMNzMuNiwyNS4zYTM1LjgyLDM1LjgyLDAsMCwxLDQuNywxNy44LDM4LjA4LDM4LjA4LDAsMCwxLS41LDUuOVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjkgLTEuOCkiLz48L3N2Zz4=\");';\n case 9:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItOTwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjQxLjI1IDgwLjI4IDQxLjIgNDYuMzEgNDUuMjQgNDUuODcgNjYuNDMgNzEuMzIgNDEuMjUgODAuMjgiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNjYuMzkgNzEgNDQuNDQgNDUuMDYgNDcuMjQgNDIuMTMgNzkuODYgNDcuOTEgNjYuMzkgNzEiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNzkuNDMgNDguMjggNDUuOTcgNDIuMzggNDYuMjUgMzguMzMgNzUuMDIgMjEuOTIgNzkuNDMgNDguMjgiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNzUuMjQgMjEuOTIgNDUuNjcgMzguNjYgNDMuMzEgMzUuMzYgNTUuMDYgNC4zOSA3NS4yNCAyMS45MiIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSI1NC41NSA0LjY5IDQyLjg2IDM2LjU5IDM4LjkyIDM1LjYgMjcuODMgNC4zOSA1NC41NSA0LjY5Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjQxLjEgODAuMDcgNDEuMTUgNDYuMDkgMzcuMTEgNDUuNjUgMTUuOTIgNzEuMTEgNDEuMSA4MC4wNyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIxNS45NiA3MC43OCAzNy45MSA0NC44NSAzNS4xMSA0MS45MSAyLjQ5IDQ3LjY5IDE1Ljk2IDcwLjc4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjIuOTIgNDguMDcgMzYuMzggNDIuMTcgMzYuMSAzOC4xMiA3LjMzIDIxLjcgMi45MiA0OC4wNyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSI3LjExIDIxLjcxIDM2LjY4IDM4LjQ1IDM5LjA0IDM1LjE1IDI3LjI5IDQuMTggNy4xMSAyMS43MSIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTgzLjQsNDNBNDEuMjUsNDEuMjUsMCwxLDAsMjkuNSw4Mi4zTDQzLjQsOTYuNSw1NS4zLDgyLjFBNDEuMjksNDEuMjksMCwwLDAsODMuNCw0M1pNNjUuNyw3MC42TDQ2LjUsNDcuN2E2LDYsMCwwLDAsMS44LTMuMmwyOS40LDUuMkEzNi4zMywzNi4zMywwLDAsMSw2NS43LDcwLjZaTTYuNSw0OS43bDI5LjQtNS4yYTYuODMsNi44MywwLDAsMCwxLjgsMy4yTDE4LjUsNzAuNkEzNi4zMywzNi4zMywwLDAsMSw2LjUsNDkuN1pNNS45LDQzYTM1LjgyLDM1LjgyLDAsMCwxLDQuNy0xNy44TDM2LjQsNDAuMWE1LjkyLDUuOTIsMCwwLDAtLjcsMi45djAuN0w2LjMsNDlBMzkuNDUsMzkuNDUsMCwwLDEsNS45LDQzWk0yOS40LDkuMWwxMC4yLDI4YTYsNiwwLDAsMC0yLjgsMi40TDEwLjksMjQuNkEzNi42MiwzNi42MiwwLDAsMSwyOS40LDkuMVpNNDIuMSw2LjhhMzQsMzQsMCwwLDEsMTIsMi4xbC0xMC4yLDI4YTUuNjYsNS42NiwwLDAsMC0xLjgtLjMsNS4yMyw1LjIzLDAsMCwwLTEuOC4zTDMwLjEsOC45QTM0LDM0LDAsMCwxLDQyLjEsNi44Wk03My4zLDI0LjZMNDcuNSwzOS41YTcuMiw3LjIsMCwwLDAtMi44LTIuNGwxMC4yLTI4QTM2LjgsMzYuOCwwLDAsMSw3My4zLDI0LjZaTTE5LjEsNzFMMzguMyw0OC4xYTcuMDksNy4wOSwwLDAsMCwzLjUsMS4zVjc5LjJBMzUuNDQsMzUuNDQsMCwwLDEsMTkuMSw3MVptMjMuNCw4LjNWNDkuNEE2LjI1LDYuMjUsMCwwLDAsNDYsNDguMUw2NS4xLDcxQTM2LDM2LDAsMCwxLDQyLjUsNzkuM1ptNi0zNS41VjQzLjFhNy4yNyw3LjI3LDAsMCwwLS43LTIuOUw3My42LDI1LjNhMzUuODIsMzUuODIsMCwwLDEsNC43LDE3LjgsMzguMDgsMzguMDgsMCwwLDEtLjUsNS45WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuOSAtMS44KSIvPjwvc3ZnPg==\");';\n case 10:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0ic3ZnNDYxOSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTUgMTcuMTQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojZjk0YTE1O308L3N0eWxlPjwvZGVmcz48dGl0bGU+YmlrZXNoYXJlX291dF9vZl9odWI8L3RpdGxlPjxwYXRoIGlkPSJjaXJjbGU0NjA0IiBjbGFzcz0iY2xzLTEiIGQ9Ik0xMS42OSwxLjM4YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDExLjY5LDEuMzhabS0xLjg2LDJhMC41LDAuNSwwLDAsMC0uMzUuMTRMNi44NCw2YTAuNSwwLjUsMCwwLDAsMCwuNzZsMS44LDEuMzV2Mi43NWEwLjUsMC41LDAsMSwwLDEsMHYtM2EwLjUsMC41LDAsMCwwLS4yLTAuNEw4LjcyLDYuOWwxLjgyLTEuNzIsMC43NSwxYTAuNSwwLjUsMCwwLDAsLjQuMmgxLjVhMC41LDAuNSwwLDEsMCwwLTFIMTEuOTRsLTAuNzUtMS0wLjYtLjhhMC41LDAuNSwwLDAsMC0uMzgtMC4yMUg5LjgzWm0tNS4xNCw0YTMsMywwLDEsMCwzLDNBMywzLDAsMCwwLDQuNjksNy4zOFptOSwwYTMsMywwLDEsMCwzLDNBMywzLDAsMCwwLDEzLjY5LDcuMzhabS05LDFhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsNC42OSw4LjM4Wm05LDBhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTMuNjksOC4zOFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xLjY5IC0xLjM4KSIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSIzLjMgMTIuOTQgNy41IDE3LjE0IDExLjcgMTIuOTQgMy4zIDEyLjk0Ii8+PC9zdmc+\");';\n default:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItMDwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNODMuNCw0M0E0MS4yNSw0MS4yNSwwLDEsMCwyOS41LDgyLjNMNDMuNCw5Ni41LDU1LjMsODIuMUE0MS4yOSw0MS4yOSwwLDAsMCw4My40LDQzWk02NS43LDcwLjZMNDYuNSw0Ny43YTYsNiwwLDAsMCwxLjgtMy4ybDI5LjQsNS4yQTM2LjMzLDM2LjMzLDAsMCwxLDY1LjcsNzAuNlpNNi41LDQ5LjdsMjkuNC01LjJhNi44Myw2LjgzLDAsMCwwLDEuOCwzLjJMMTguNSw3MC42QTM2LjMzLDM2LjMzLDAsMCwxLDYuNSw0OS43Wk01LjksNDNhMzUuODIsMzUuODIsMCwwLDEsNC43LTE3LjhMMzYuNCw0MC4xYTUuOTIsNS45MiwwLDAsMC0uNywyLjl2MC43TDYuMyw0OUEzOS40NSwzOS40NSwwLDAsMSw1LjksNDNaTTI5LjQsOS4xbDEwLjIsMjhhNiw2LDAsMCwwLTIuOCwyLjRMMTAuOSwyNC42QTM2LjYyLDM2LjYyLDAsMCwxLDI5LjQsOS4xWk00Mi4xLDYuOGEzNCwzNCwwLDAsMSwxMiwyLjFsLTEwLjIsMjhhNS42Niw1LjY2LDAsMCwwLTEuOC0uMyw1LjIzLDUuMjMsMCwwLDAtMS44LjNMMzAuMSw4LjlBMzQsMzQsMCwwLDEsNDIuMSw2LjhaTTczLjMsMjQuNkw0Ny41LDM5LjVhNy4yLDcuMiwwLDAsMC0yLjgtMi40bDEwLjItMjhBMzYuOCwzNi44LDAsMCwxLDczLjMsMjQuNlpNMTkuMSw3MUwzOC4zLDQ4LjFhNy4wOSw3LjA5LDAsMCwwLDMuNSwxLjNWNzkuMkEzNS40NCwzNS40NCwwLDAsMSwxOS4xLDcxWm0yMy40LDguM1Y0OS40QTYuMjUsNi4yNSwwLDAsMCw0Niw0OC4xTDY1LjEsNzFBMzYsMzYsMCwwLDEsNDIuNSw3OS4zWm02LTM1LjVWNDMuMWE3LjI3LDcuMjcsMCwwLDAtLjctMi45TDczLjYsMjUuM2EzNS44MiwzNS44MiwwLDAsMSw0LjcsMTcuOCwzOC4wOCwzOC4wOCwwLDAsMS0uNSw1LjlaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC45IC0xLjgpIi8+PC9zdmc+\");';\n }\n};\n/**\n * Bike rental icons are different from other vehicle rental types since they\n * typically have stations in addition to free-floating bikes. The stations are\n * drawn as svgs marking how full the stations are while the floating bikes have\n * their own unique icon.\n */\nexport const BaseBikeRentalIcon = styled.div<{ percent: number }>`\n background-size: contain;\n background-position: center;\n background-repeat: no-repeat;\n margin: auto;\n width: 24px;\n height: 24px;\n ${props => getPctIcon(props.percent)}\n`;\n\nexport const StationMarker = styled(MapMarkerAlt)`\n height: 12;\n width: 12;\n color: ${props => props.color};\n`;\n"],"file":"styled.js"}
|
|
1
|
+
{"version":3,"sources":["../src/styled.ts"],"names":["styled","MapMarkerAlt","getPctIcon","percent","Math","floor","BaseBikeRentalIcon","div","props","StationMarker","color"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,mBAAnB;AACA,SAASC,YAAT,QAA6B,qCAA7B;;AAEA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,OAAD,EAAqB;AACtC,UAAQC,IAAI,CAACC,KAAL,CAAWF,OAAO,GAAG,EAArB,CAAR;AACE,SAAK,CAAL;AACE,aAAO,kjDAAP;;AACF,SAAK,CAAL;AACE,aAAO,0sDAAP;;AACF,SAAK,CAAL;AACE,aAAO,i0DAAP;;AACF,SAAK,CAAL;AACE,aAAO,07DAAP;;AACF,SAAK,CAAL;AACE,aAAO,kjEAAP;;AACF,SAAK,CAAL;AACE,aAAO,sqEAAP;;AACF,SAAK,CAAL;AACE,aAAO,kyEAAP;;AACF,SAAK,CAAL;AACE,aAAO,85EAAP;;AACF,SAAK,CAAL;AACE,aAAO,khFAAP;;AACF,SAAK,CAAL;AACE,aAAO,8oFAAP;;AACF,SAAK,EAAL;AACE,aAAO,siCAAP;;AACF;AACE,aAAO,kjDAAP;AAxBJ;AA0BD,CA3BD;AA4BA;AACA;AACA;AACA;AACA;AACA;;;AACA,OAAO,IAAMG,kBAAkB,GAAGN,MAAM,CAACO,GAAV;AAAA;AAAA;AAAA,+HAO3B,UAAAC,KAAK;AAAA,SAAIN,UAAU,CAACM,KAAK,CAACL,OAAP,CAAd;AAAA,CAPsB,CAAxB;AAUP,OAAO,IAAMM,aAAa,GAAGT,MAAM,CAACC,YAAD,CAAT;AAAA;AAAA;AAAA,uCACf,UAAAO,KAAK;AAAA,SAAIA,KAAK,CAACE,KAAV;AAAA,CADU,CAAnB","sourcesContent":["import styled from \"styled-components\";\nimport { MapMarkerAlt } from \"@styled-icons/fa-solid/MapMarkerAlt\";\n\nconst getPctIcon = (percent: number) => {\n switch (Math.floor(percent * 10)) {\n case 0:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItMDwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNODMuNCw0M0E0MS4yNSw0MS4yNSwwLDEsMCwyOS41LDgyLjNMNDMuNCw5Ni41LDU1LjMsODIuMUE0MS4yOSw0MS4yOSwwLDAsMCw4My40LDQzWk02NS43LDcwLjZMNDYuNSw0Ny43YTYsNiwwLDAsMCwxLjgtMy4ybDI5LjQsNS4yQTM2LjMzLDM2LjMzLDAsMCwxLDY1LjcsNzAuNlpNNi41LDQ5LjdsMjkuNC01LjJhNi44Myw2LjgzLDAsMCwwLDEuOCwzLjJMMTguNSw3MC42QTM2LjMzLDM2LjMzLDAsMCwxLDYuNSw0OS43Wk01LjksNDNhMzUuODIsMzUuODIsMCwwLDEsNC43LTE3LjhMMzYuNCw0MC4xYTUuOTIsNS45MiwwLDAsMC0uNywyLjl2MC43TDYuMyw0OUEzOS40NSwzOS40NSwwLDAsMSw1LjksNDNaTTI5LjQsOS4xbDEwLjIsMjhhNiw2LDAsMCwwLTIuOCwyLjRMMTAuOSwyNC42QTM2LjYyLDM2LjYyLDAsMCwxLDI5LjQsOS4xWk00Mi4xLDYuOGEzNCwzNCwwLDAsMSwxMiwyLjFsLTEwLjIsMjhhNS42Niw1LjY2LDAsMCwwLTEuOC0uMyw1LjIzLDUuMjMsMCwwLDAtMS44LjNMMzAuMSw4LjlBMzQsMzQsMCwwLDEsNDIuMSw2LjhaTTczLjMsMjQuNkw0Ny41LDM5LjVhNy4yLDcuMiwwLDAsMC0yLjgtMi40bDEwLjItMjhBMzYuOCwzNi44LDAsMCwxLDczLjMsMjQuNlpNMTkuMSw3MUwzOC4zLDQ4LjFhNy4wOSw3LjA5LDAsMCwwLDMuNSwxLjNWNzkuMkEzNS40NCwzNS40NCwwLDAsMSwxOS4xLDcxWm0yMy40LDguM1Y0OS40QTYuMjUsNi4yNSwwLDAsMCw0Niw0OC4xTDY1LjEsNzFBMzYsMzYsMCwwLDEsNDIuNSw3OS4zWm02LTM1LjVWNDMuMWE3LjI3LDcuMjcsMCwwLDAtLjctMi45TDczLjYsMjUuM2EzNS44MiwzNS44MiwwLDAsMSw0LjcsMTcuOCwzOC4wOCwzOC4wOCwwLDAsMS0uNSw1LjlaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC45IC0xLjgpIi8+PC9zdmc+\");';\n case 1:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItMTwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjQxLjEgODAuMDcgNDEuMTUgNDYuMDkgMzcuMTEgNDUuNjUgMTUuOTIgNzEuMTEgNDEuMSA4MC4wNyIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTgzLjQsNDNBNDEuMjUsNDEuMjUsMCwxLDAsMjkuNSw4Mi4zTDQzLjQsOTYuNSw1NS4zLDgyLjFBNDEuMjksNDEuMjksMCwwLDAsODMuNCw0M1pNNjUuNyw3MC42TDQ2LjUsNDcuN2E2LDYsMCwwLDAsMS44LTMuMmwyOS40LDUuMkEzNi4zMywzNi4zMywwLDAsMSw2NS43LDcwLjZaTTYuNSw0OS43bDI5LjQtNS4yYTYuODMsNi44MywwLDAsMCwxLjgsMy4yTDE4LjUsNzAuNkEzNi4zMywzNi4zMywwLDAsMSw2LjUsNDkuN1pNNS45LDQzYTM1LjgyLDM1LjgyLDAsMCwxLDQuNy0xNy44TDM2LjQsNDAuMWE1LjkyLDUuOTIsMCwwLDAtLjcsMi45djAuN0w2LjMsNDlBMzkuNDUsMzkuNDUsMCwwLDEsNS45LDQzWk0yOS40LDkuMWwxMC4yLDI4YTYsNiwwLDAsMC0yLjgsMi40TDEwLjksMjQuNkEzNi42MiwzNi42MiwwLDAsMSwyOS40LDkuMVpNNDIuMSw2LjhhMzQsMzQsMCwwLDEsMTIsMi4xbC0xMC4yLDI4YTUuNjYsNS42NiwwLDAsMC0xLjgtLjMsNS4yMyw1LjIzLDAsMCwwLTEuOC4zTDMwLjEsOC45QTM0LDM0LDAsMCwxLDQyLjEsNi44Wk03My4zLDI0LjZMNDcuNSwzOS41YTcuMiw3LjIsMCwwLDAtMi44LTIuNGwxMC4yLTI4QTM2LjgsMzYuOCwwLDAsMSw3My4zLDI0LjZaTTE5LjEsNzFMMzguMyw0OC4xYTcuMDksNy4wOSwwLDAsMCwzLjUsMS4zVjc5LjJBMzUuNDQsMzUuNDQsMCwwLDEsMTkuMSw3MVptMjMuNCw4LjNWNDkuNEE2LjI1LDYuMjUsMCwwLDAsNDYsNDguMUw2NS4xLDcxQTM2LDM2LDAsMCwxLDQyLjUsNzkuM1ptNi0zNS41VjQzLjFhNy4yNyw3LjI3LDAsMCwwLS43LTIuOUw3My42LDI1LjNhMzUuODIsMzUuODIsMCwwLDEsNC43LDE3LjgsMzguMDgsMzguMDgsMCwwLDEtLjUsNS45WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuOSAtMS44KSIvPjwvc3ZnPg==\");';\n case 2:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItMjwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjQxLjEgODAuMDcgNDEuMTUgNDYuMDkgMzcuMTEgNDUuNjUgMTUuOTIgNzEuMTEgNDEuMSA4MC4wNyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIxNS45NiA3MC43OCAzNy45MSA0NC44NSAzNS4xMSA0MS45MSAyLjQ5IDQ3LjY5IDE1Ljk2IDcwLjc4Ii8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNODMuNCw0M0E0MS4yNSw0MS4yNSwwLDEsMCwyOS41LDgyLjNMNDMuNCw5Ni41LDU1LjMsODIuMUE0MS4yOSw0MS4yOSwwLDAsMCw4My40LDQzWk02NS43LDcwLjZMNDYuNSw0Ny43YTYsNiwwLDAsMCwxLjgtMy4ybDI5LjQsNS4yQTM2LjMzLDM2LjMzLDAsMCwxLDY1LjcsNzAuNlpNNi41LDQ5LjdsMjkuNC01LjJhNi44Myw2LjgzLDAsMCwwLDEuOCwzLjJMMTguNSw3MC42QTM2LjMzLDM2LjMzLDAsMCwxLDYuNSw0OS43Wk01LjksNDNhMzUuODIsMzUuODIsMCwwLDEsNC43LTE3LjhMMzYuNCw0MC4xYTUuOTIsNS45MiwwLDAsMC0uNywyLjl2MC43TDYuMyw0OUEzOS40NSwzOS40NSwwLDAsMSw1LjksNDNaTTI5LjQsOS4xbDEwLjIsMjhhNiw2LDAsMCwwLTIuOCwyLjRMMTAuOSwyNC42QTM2LjYyLDM2LjYyLDAsMCwxLDI5LjQsOS4xWk00Mi4xLDYuOGEzNCwzNCwwLDAsMSwxMiwyLjFsLTEwLjIsMjhhNS42Niw1LjY2LDAsMCwwLTEuOC0uMyw1LjIzLDUuMjMsMCwwLDAtMS44LjNMMzAuMSw4LjlBMzQsMzQsMCwwLDEsNDIuMSw2LjhaTTczLjMsMjQuNkw0Ny41LDM5LjVhNy4yLDcuMiwwLDAsMC0yLjgtMi40bDEwLjItMjhBMzYuOCwzNi44LDAsMCwxLDczLjMsMjQuNlpNMTkuMSw3MUwzOC4zLDQ4LjFhNy4wOSw3LjA5LDAsMCwwLDMuNSwxLjNWNzkuMkEzNS40NCwzNS40NCwwLDAsMSwxOS4xLDcxWm0yMy40LDguM1Y0OS40QTYuMjUsNi4yNSwwLDAsMCw0Niw0OC4xTDY1LjEsNzFBMzYsMzYsMCwwLDEsNDIuNSw3OS4zWm02LTM1LjVWNDMuMWE3LjI3LDcuMjcsMCwwLDAtLjctMi45TDczLjYsMjUuM2EzNS44MiwzNS44MiwwLDAsMSw0LjcsMTcuOCwzOC4wOCwzOC4wOCwwLDAsMS0uNSw1LjlaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC45IC0xLjgpIi8+PC9zdmc+\")';\n case 3:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItMzwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjQxLjEgODAuMDcgNDEuMTUgNDYuMDkgMzcuMTEgNDUuNjUgMTUuOTIgNzEuMTEgNDEuMSA4MC4wNyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIxNS45NiA3MC43OCAzNy45MSA0NC44NSAzNS4xMSA0MS45MSAyLjQ5IDQ3LjY5IDE1Ljk2IDcwLjc4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjIuOTIgNDguMDcgMzYuMzggNDIuMTcgMzYuMSAzOC4xMiA3LjMzIDIxLjcgMi45MiA0OC4wNyIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTgzLjQsNDNBNDEuMjUsNDEuMjUsMCwxLDAsMjkuNSw4Mi4zTDQzLjQsOTYuNSw1NS4zLDgyLjFBNDEuMjksNDEuMjksMCwwLDAsODMuNCw0M1pNNjUuNyw3MC42TDQ2LjUsNDcuN2E2LDYsMCwwLDAsMS44LTMuMmwyOS40LDUuMkEzNi4zMywzNi4zMywwLDAsMSw2NS43LDcwLjZaTTYuNSw0OS43bDI5LjQtNS4yYTYuODMsNi44MywwLDAsMCwxLjgsMy4yTDE4LjUsNzAuNkEzNi4zMywzNi4zMywwLDAsMSw2LjUsNDkuN1pNNS45LDQzYTM1LjgyLDM1LjgyLDAsMCwxLDQuNy0xNy44TDM2LjQsNDAuMWE1LjkyLDUuOTIsMCwwLDAtLjcsMi45djAuN0w2LjMsNDlBMzkuNDUsMzkuNDUsMCwwLDEsNS45LDQzWk0yOS40LDkuMWwxMC4yLDI4YTYsNiwwLDAsMC0yLjgsMi40TDEwLjksMjQuNkEzNi42MiwzNi42MiwwLDAsMSwyOS40LDkuMVpNNDIuMSw2LjhhMzQsMzQsMCwwLDEsMTIsMi4xbC0xMC4yLDI4YTUuNjYsNS42NiwwLDAsMC0xLjgtLjMsNS4yMyw1LjIzLDAsMCwwLTEuOC4zTDMwLjEsOC45QTM0LDM0LDAsMCwxLDQyLjEsNi44Wk03My4zLDI0LjZMNDcuNSwzOS41YTcuMiw3LjIsMCwwLDAtMi44LTIuNGwxMC4yLTI4QTM2LjgsMzYuOCwwLDAsMSw3My4zLDI0LjZaTTE5LjEsNzFMMzguMyw0OC4xYTcuMDksNy4wOSwwLDAsMCwzLjUsMS4zVjc5LjJBMzUuNDQsMzUuNDQsMCwwLDEsMTkuMSw3MVptMjMuNCw4LjNWNDkuNEE2LjI1LDYuMjUsMCwwLDAsNDYsNDguMUw2NS4xLDcxQTM2LDM2LDAsMCwxLDQyLjUsNzkuM1ptNi0zNS41VjQzLjFhNy4yNyw3LjI3LDAsMCwwLS43LTIuOUw3My42LDI1LjNhMzUuODIsMzUuODIsMCwwLDEsNC43LDE3LjgsMzguMDgsMzguMDgsMCwwLDEtLjUsNS45WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuOSAtMS44KSIvPjwvc3ZnPg==\");';\n case 4:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItNDwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjQxLjEgODAuMDcgNDEuMTUgNDYuMDkgMzcuMTEgNDUuNjUgMTUuOTIgNzEuMTEgNDEuMSA4MC4wNyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIxNS45NiA3MC43OCAzNy45MSA0NC44NSAzNS4xMSA0MS45MSAyLjQ5IDQ3LjY5IDE1Ljk2IDcwLjc4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjIuOTIgNDguMDcgMzYuMzggNDIuMTcgMzYuMSAzOC4xMiA3LjMzIDIxLjcgMi45MiA0OC4wNyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSI3LjExIDIxLjcxIDM2LjY4IDM4LjQ1IDM5LjA0IDM1LjE1IDI3LjI5IDQuMTggNy4xMSAyMS43MSIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTgzLjQsNDNBNDEuMjUsNDEuMjUsMCwxLDAsMjkuNSw4Mi4zTDQzLjQsOTYuNSw1NS4zLDgyLjFBNDEuMjksNDEuMjksMCwwLDAsODMuNCw0M1pNNjUuNyw3MC42TDQ2LjUsNDcuN2E2LDYsMCwwLDAsMS44LTMuMmwyOS40LDUuMkEzNi4zMywzNi4zMywwLDAsMSw2NS43LDcwLjZaTTYuNSw0OS43bDI5LjQtNS4yYTYuODMsNi44MywwLDAsMCwxLjgsMy4yTDE4LjUsNzAuNkEzNi4zMywzNi4zMywwLDAsMSw2LjUsNDkuN1pNNS45LDQzYTM1LjgyLDM1LjgyLDAsMCwxLDQuNy0xNy44TDM2LjQsNDAuMWE1LjkyLDUuOTIsMCwwLDAtLjcsMi45djAuN0w2LjMsNDlBMzkuNDUsMzkuNDUsMCwwLDEsNS45LDQzWk0yOS40LDkuMWwxMC4yLDI4YTYsNiwwLDAsMC0yLjgsMi40TDEwLjksMjQuNkEzNi42MiwzNi42MiwwLDAsMSwyOS40LDkuMVpNNDIuMSw2LjhhMzQsMzQsMCwwLDEsMTIsMi4xbC0xMC4yLDI4YTUuNjYsNS42NiwwLDAsMC0xLjgtLjMsNS4yMyw1LjIzLDAsMCwwLTEuOC4zTDMwLjEsOC45QTM0LDM0LDAsMCwxLDQyLjEsNi44Wk03My4zLDI0LjZMNDcuNSwzOS41YTcuMiw3LjIsMCwwLDAtMi44LTIuNGwxMC4yLTI4QTM2LjgsMzYuOCwwLDAsMSw3My4zLDI0LjZaTTE5LjEsNzFMMzguMyw0OC4xYTcuMDksNy4wOSwwLDAsMCwzLjUsMS4zVjc5LjJBMzUuNDQsMzUuNDQsMCwwLDEsMTkuMSw3MVptMjMuNCw4LjNWNDkuNEE2LjI1LDYuMjUsMCwwLDAsNDYsNDguMUw2NS4xLDcxQTM2LDM2LDAsMCwxLDQyLjUsNzkuM1ptNi0zNS41VjQzLjFhNy4yNyw3LjI3LDAsMCwwLS43LTIuOUw3My42LDI1LjNhMzUuODIsMzUuODIsMCwwLDEsNC43LDE3LjgsMzguMDgsMzguMDgsMCwwLDEtLjUsNS45WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuOSAtMS44KSIvPjwvc3ZnPg==\");';\n case 5:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItNTwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjU0LjU1IDQuNjkgNDIuODYgMzYuNTkgMzguOTIgMzUuNiAyNy44MyA0LjM5IDU0LjU1IDQuNjkiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNDEuMSA4MC4wNyA0MS4xNSA0Ni4wOSAzNy4xMSA0NS42NSAxNS45MiA3MS4xMSA0MS4xIDgwLjA3Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjE1Ljk2IDcwLjc4IDM3LjkxIDQ0Ljg1IDM1LjExIDQxLjkxIDIuNDkgNDcuNjkgMTUuOTYgNzAuNzgiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMi45MiA0OC4wNyAzNi4zOCA0Mi4xNyAzNi4xIDM4LjEyIDcuMzMgMjEuNyAyLjkyIDQ4LjA3Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjcuMTEgMjEuNzEgMzYuNjggMzguNDUgMzkuMDQgMzUuMTUgMjcuMjkgNC4xOCA3LjExIDIxLjcxIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNODMuNCw0M0E0MS4yNSw0MS4yNSwwLDEsMCwyOS41LDgyLjNMNDMuNCw5Ni41LDU1LjMsODIuMUE0MS4yOSw0MS4yOSwwLDAsMCw4My40LDQzWk02NS43LDcwLjZMNDYuNSw0Ny43YTYsNiwwLDAsMCwxLjgtMy4ybDI5LjQsNS4yQTM2LjMzLDM2LjMzLDAsMCwxLDY1LjcsNzAuNlpNNi41LDQ5LjdsMjkuNC01LjJhNi44Myw2LjgzLDAsMCwwLDEuOCwzLjJMMTguNSw3MC42QTM2LjMzLDM2LjMzLDAsMCwxLDYuNSw0OS43Wk01LjksNDNhMzUuODIsMzUuODIsMCwwLDEsNC43LTE3LjhMMzYuNCw0MC4xYTUuOTIsNS45MiwwLDAsMC0uNywyLjl2MC43TDYuMyw0OUEzOS40NSwzOS40NSwwLDAsMSw1LjksNDNaTTI5LjQsOS4xbDEwLjIsMjhhNiw2LDAsMCwwLTIuOCwyLjRMMTAuOSwyNC42QTM2LjYyLDM2LjYyLDAsMCwxLDI5LjQsOS4xWk00Mi4xLDYuOGEzNCwzNCwwLDAsMSwxMiwyLjFsLTEwLjIsMjhhNS42Niw1LjY2LDAsMCwwLTEuOC0uMyw1LjIzLDUuMjMsMCwwLDAtMS44LjNMMzAuMSw4LjlBMzQsMzQsMCwwLDEsNDIuMSw2LjhaTTczLjMsMjQuNkw0Ny41LDM5LjVhNy4yLDcuMiwwLDAsMC0yLjgtMi40bDEwLjItMjhBMzYuOCwzNi44LDAsMCwxLDczLjMsMjQuNlpNMTkuMSw3MUwzOC4zLDQ4LjFhNy4wOSw3LjA5LDAsMCwwLDMuNSwxLjNWNzkuMkEzNS40NCwzNS40NCwwLDAsMSwxOS4xLDcxWm0yMy40LDguM1Y0OS40QTYuMjUsNi4yNSwwLDAsMCw0Niw0OC4xTDY1LjEsNzFBMzYsMzYsMCwwLDEsNDIuNSw3OS4zWm02LTM1LjVWNDMuMWE3LjI3LDcuMjcsMCwwLDAtLjctMi45TDczLjYsMjUuM2EzNS44MiwzNS44MiwwLDAsMSw0LjcsMTcuOCwzOC4wOCwzOC4wOCwwLDAsMS0uNSw1LjlaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC45IC0xLjgpIi8+PC9zdmc+\");';\n case 6:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItNjwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9Ijc1LjI0IDIxLjkyIDQ1LjY3IDM4LjY2IDQzLjMxIDM1LjM2IDU1LjA2IDQuMzkgNzUuMjQgMjEuOTIiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNTQuNTUgNC42OSA0Mi44NiAzNi41OSAzOC45MiAzNS42IDI3LjgzIDQuMzkgNTQuNTUgNC42OSIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSI0MS4xIDgwLjA3IDQxLjE1IDQ2LjA5IDM3LjExIDQ1LjY1IDE1LjkyIDcxLjExIDQxLjEgODAuMDciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMTUuOTYgNzAuNzggMzcuOTEgNDQuODUgMzUuMTEgNDEuOTEgMi40OSA0Ny42OSAxNS45NiA3MC43OCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIyLjkyIDQ4LjA3IDM2LjM4IDQyLjE3IDM2LjEgMzguMTIgNy4zMyAyMS43IDIuOTIgNDguMDciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNy4xMSAyMS43MSAzNi42OCAzOC40NSAzOS4wNCAzNS4xNSAyNy4yOSA0LjE4IDcuMTEgMjEuNzEiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik04My40LDQzQTQxLjI1LDQxLjI1LDAsMSwwLDI5LjUsODIuM0w0My40LDk2LjUsNTUuMyw4Mi4xQTQxLjI5LDQxLjI5LDAsMCwwLDgzLjQsNDNaTTY1LjcsNzAuNkw0Ni41LDQ3LjdhNiw2LDAsMCwwLDEuOC0zLjJsMjkuNCw1LjJBMzYuMzMsMzYuMzMsMCwwLDEsNjUuNyw3MC42Wk02LjUsNDkuN2wyOS40LTUuMmE2LjgzLDYuODMsMCwwLDAsMS44LDMuMkwxOC41LDcwLjZBMzYuMzMsMzYuMzMsMCwwLDEsNi41LDQ5LjdaTTUuOSw0M2EzNS44MiwzNS44MiwwLDAsMSw0LjctMTcuOEwzNi40LDQwLjFhNS45Miw1LjkyLDAsMCwwLS43LDIuOXYwLjdMNi4zLDQ5QTM5LjQ1LDM5LjQ1LDAsMCwxLDUuOSw0M1pNMjkuNCw5LjFsMTAuMiwyOGE2LDYsMCwwLDAtMi44LDIuNEwxMC45LDI0LjZBMzYuNjIsMzYuNjIsMCwwLDEsMjkuNCw5LjFaTTQyLjEsNi44YTM0LDM0LDAsMCwxLDEyLDIuMWwtMTAuMiwyOGE1LjY2LDUuNjYsMCwwLDAtMS44LS4zLDUuMjMsNS4yMywwLDAsMC0xLjguM0wzMC4xLDguOUEzNCwzNCwwLDAsMSw0Mi4xLDYuOFpNNzMuMywyNC42TDQ3LjUsMzkuNWE3LjIsNy4yLDAsMCwwLTIuOC0yLjRsMTAuMi0yOEEzNi44LDM2LjgsMCwwLDEsNzMuMywyNC42Wk0xOS4xLDcxTDM4LjMsNDguMWE3LjA5LDcuMDksMCwwLDAsMy41LDEuM1Y3OS4yQTM1LjQ0LDM1LjQ0LDAsMCwxLDE5LjEsNzFabTIzLjQsOC4zVjQ5LjRBNi4yNSw2LjI1LDAsMCwwLDQ2LDQ4LjFMNjUuMSw3MUEzNiwzNiwwLDAsMSw0Mi41LDc5LjNabTYtMzUuNVY0My4xYTcuMjcsNy4yNywwLDAsMC0uNy0yLjlMNzMuNiwyNS4zYTM1LjgyLDM1LjgyLDAsMCwxLDQuNywxNy44LDM4LjA4LDM4LjA4LDAsMCwxLS41LDUuOVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjkgLTEuOCkiLz48L3N2Zz4=\");';\n case 7:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItNzwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9Ijc5LjQzIDQ4LjI4IDQ1Ljk3IDQyLjM4IDQ2LjI1IDM4LjMzIDc1LjAyIDIxLjkyIDc5LjQzIDQ4LjI4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9Ijc1LjI0IDIxLjkyIDQ1LjY3IDM4LjY2IDQzLjMxIDM1LjM2IDU1LjA2IDQuMzkgNzUuMjQgMjEuOTIiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNTQuNTUgNC42OSA0Mi44NiAzNi41OSAzOC45MiAzNS42IDI3LjgzIDQuMzkgNTQuNTUgNC42OSIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSI0MS4xIDgwLjA3IDQxLjE1IDQ2LjA5IDM3LjExIDQ1LjY1IDE1LjkyIDcxLjExIDQxLjEgODAuMDciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMTUuOTYgNzAuNzggMzcuOTEgNDQuODUgMzUuMTEgNDEuOTEgMi40OSA0Ny42OSAxNS45NiA3MC43OCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIyLjkyIDQ4LjA3IDM2LjM4IDQyLjE3IDM2LjEgMzguMTIgNy4zMyAyMS43IDIuOTIgNDguMDciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNy4xMSAyMS43MSAzNi42OCAzOC40NSAzOS4wNCAzNS4xNSAyNy4yOSA0LjE4IDcuMTEgMjEuNzEiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik04My40LDQzQTQxLjI1LDQxLjI1LDAsMSwwLDI5LjUsODIuM0w0My40LDk2LjUsNTUuMyw4Mi4xQTQxLjI5LDQxLjI5LDAsMCwwLDgzLjQsNDNaTTY1LjcsNzAuNkw0Ni41LDQ3LjdhNiw2LDAsMCwwLDEuOC0zLjJsMjkuNCw1LjJBMzYuMzMsMzYuMzMsMCwwLDEsNjUuNyw3MC42Wk02LjUsNDkuN2wyOS40LTUuMmE2LjgzLDYuODMsMCwwLDAsMS44LDMuMkwxOC41LDcwLjZBMzYuMzMsMzYuMzMsMCwwLDEsNi41LDQ5LjdaTTUuOSw0M2EzNS44MiwzNS44MiwwLDAsMSw0LjctMTcuOEwzNi40LDQwLjFhNS45Miw1LjkyLDAsMCwwLS43LDIuOXYwLjdMNi4zLDQ5QTM5LjQ1LDM5LjQ1LDAsMCwxLDUuOSw0M1pNMjkuNCw5LjFsMTAuMiwyOGE2LDYsMCwwLDAtMi44LDIuNEwxMC45LDI0LjZBMzYuNjIsMzYuNjIsMCwwLDEsMjkuNCw5LjFaTTQyLjEsNi44YTM0LDM0LDAsMCwxLDEyLDIuMWwtMTAuMiwyOGE1LjY2LDUuNjYsMCwwLDAtMS44LS4zLDUuMjMsNS4yMywwLDAsMC0xLjguM0wzMC4xLDguOUEzNCwzNCwwLDAsMSw0Mi4xLDYuOFpNNzMuMywyNC42TDQ3LjUsMzkuNWE3LjIsNy4yLDAsMCwwLTIuOC0yLjRsMTAuMi0yOEEzNi44LDM2LjgsMCwwLDEsNzMuMywyNC42Wk0xOS4xLDcxTDM4LjMsNDguMWE3LjA5LDcuMDksMCwwLDAsMy41LDEuM1Y3OS4yQTM1LjQ0LDM1LjQ0LDAsMCwxLDE5LjEsNzFabTIzLjQsOC4zVjQ5LjRBNi4yNSw2LjI1LDAsMCwwLDQ2LDQ4LjFMNjUuMSw3MUEzNiwzNiwwLDAsMSw0Mi41LDc5LjNabTYtMzUuNVY0My4xYTcuMjcsNy4yNywwLDAsMC0uNy0yLjlMNzMuNiwyNS4zYTM1LjgyLDM1LjgyLDAsMCwxLDQuNywxNy44LDM4LjA4LDM4LjA4LDAsMCwxLS41LDUuOVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjkgLTEuOCkiLz48L3N2Zz4=\");';\n case 8:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItODwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjY2LjM5IDcxIDQ0LjQ0IDQ1LjA2IDQ3LjI0IDQyLjEzIDc5Ljg2IDQ3LjkxIDY2LjM5IDcxIi8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9Ijc5LjQzIDQ4LjI4IDQ1Ljk3IDQyLjM4IDQ2LjI1IDM4LjMzIDc1LjAyIDIxLjkyIDc5LjQzIDQ4LjI4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9Ijc1LjI0IDIxLjkyIDQ1LjY3IDM4LjY2IDQzLjMxIDM1LjM2IDU1LjA2IDQuMzkgNzUuMjQgMjEuOTIiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNTQuNTUgNC42OSA0Mi44NiAzNi41OSAzOC45MiAzNS42IDI3LjgzIDQuMzkgNTQuNTUgNC42OSIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSI0MS4xIDgwLjA3IDQxLjE1IDQ2LjA5IDM3LjExIDQ1LjY1IDE1LjkyIDcxLjExIDQxLjEgODAuMDciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMTUuOTYgNzAuNzggMzcuOTEgNDQuODUgMzUuMTEgNDEuOTEgMi40OSA0Ny42OSAxNS45NiA3MC43OCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIyLjkyIDQ4LjA3IDM2LjM4IDQyLjE3IDM2LjEgMzguMTIgNy4zMyAyMS43IDIuOTIgNDguMDciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNy4xMSAyMS43MSAzNi42OCAzOC40NSAzOS4wNCAzNS4xNSAyNy4yOSA0LjE4IDcuMTEgMjEuNzEiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik04My40LDQzQTQxLjI1LDQxLjI1LDAsMSwwLDI5LjUsODIuM0w0My40LDk2LjUsNTUuMyw4Mi4xQTQxLjI5LDQxLjI5LDAsMCwwLDgzLjQsNDNaTTY1LjcsNzAuNkw0Ni41LDQ3LjdhNiw2LDAsMCwwLDEuOC0zLjJsMjkuNCw1LjJBMzYuMzMsMzYuMzMsMCwwLDEsNjUuNyw3MC42Wk02LjUsNDkuN2wyOS40LTUuMmE2LjgzLDYuODMsMCwwLDAsMS44LDMuMkwxOC41LDcwLjZBMzYuMzMsMzYuMzMsMCwwLDEsNi41LDQ5LjdaTTUuOSw0M2EzNS44MiwzNS44MiwwLDAsMSw0LjctMTcuOEwzNi40LDQwLjFhNS45Miw1LjkyLDAsMCwwLS43LDIuOXYwLjdMNi4zLDQ5QTM5LjQ1LDM5LjQ1LDAsMCwxLDUuOSw0M1pNMjkuNCw5LjFsMTAuMiwyOGE2LDYsMCwwLDAtMi44LDIuNEwxMC45LDI0LjZBMzYuNjIsMzYuNjIsMCwwLDEsMjkuNCw5LjFaTTQyLjEsNi44YTM0LDM0LDAsMCwxLDEyLDIuMWwtMTAuMiwyOGE1LjY2LDUuNjYsMCwwLDAtMS44LS4zLDUuMjMsNS4yMywwLDAsMC0xLjguM0wzMC4xLDguOUEzNCwzNCwwLDAsMSw0Mi4xLDYuOFpNNzMuMywyNC42TDQ3LjUsMzkuNWE3LjIsNy4yLDAsMCwwLTIuOC0yLjRsMTAuMi0yOEEzNi44LDM2LjgsMCwwLDEsNzMuMywyNC42Wk0xOS4xLDcxTDM4LjMsNDguMWE3LjA5LDcuMDksMCwwLDAsMy41LDEuM1Y3OS4yQTM1LjQ0LDM1LjQ0LDAsMCwxLDE5LjEsNzFabTIzLjQsOC4zVjQ5LjRBNi4yNSw2LjI1LDAsMCwwLDQ2LDQ4LjFMNjUuMSw3MUEzNiwzNiwwLDAsMSw0Mi41LDc5LjNabTYtMzUuNVY0My4xYTcuMjcsNy4yNywwLDAsMC0uNy0yLjlMNzMuNiwyNS4zYTM1LjgyLDM1LjgyLDAsMCwxLDQuNywxNy44LDM4LjA4LDM4LjA4LDAsMCwxLS41LDUuOVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjkgLTEuOCkiLz48L3N2Zz4=\");';\n case 9:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiNmZjJkMjk7fS5jbHMtM3tmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItOTwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjQxLjI1IDgwLjI4IDQxLjIgNDYuMzEgNDUuMjQgNDUuODcgNjYuNDMgNzEuMzIgNDEuMjUgODAuMjgiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNjYuMzkgNzEgNDQuNDQgNDUuMDYgNDcuMjQgNDIuMTMgNzkuODYgNDcuOTEgNjYuMzkgNzEiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNzkuNDMgNDguMjggNDUuOTcgNDIuMzggNDYuMjUgMzguMzMgNzUuMDIgMjEuOTIgNzkuNDMgNDguMjgiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iNzUuMjQgMjEuOTIgNDUuNjcgMzguNjYgNDMuMzEgMzUuMzYgNTUuMDYgNC4zOSA3NS4yNCAyMS45MiIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSI1NC41NSA0LjY5IDQyLjg2IDM2LjU5IDM4LjkyIDM1LjYgMjcuODMgNC4zOSA1NC41NSA0LjY5Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjQxLjEgODAuMDcgNDEuMTUgNDYuMDkgMzcuMTEgNDUuNjUgMTUuOTIgNzEuMTEgNDEuMSA4MC4wNyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIxNS45NiA3MC43OCAzNy45MSA0NC44NSAzNS4xMSA0MS45MSAyLjQ5IDQ3LjY5IDE1Ljk2IDcwLjc4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjIuOTIgNDguMDcgMzYuMzggNDIuMTcgMzYuMSAzOC4xMiA3LjMzIDIxLjcgMi45MiA0OC4wNyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSI3LjExIDIxLjcxIDM2LjY4IDM4LjQ1IDM5LjA0IDM1LjE1IDI3LjI5IDQuMTggNy4xMSAyMS43MSIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTgzLjQsNDNBNDEuMjUsNDEuMjUsMCwxLDAsMjkuNSw4Mi4zTDQzLjQsOTYuNSw1NS4zLDgyLjFBNDEuMjksNDEuMjksMCwwLDAsODMuNCw0M1pNNjUuNyw3MC42TDQ2LjUsNDcuN2E2LDYsMCwwLDAsMS44LTMuMmwyOS40LDUuMkEzNi4zMywzNi4zMywwLDAsMSw2NS43LDcwLjZaTTYuNSw0OS43bDI5LjQtNS4yYTYuODMsNi44MywwLDAsMCwxLjgsMy4yTDE4LjUsNzAuNkEzNi4zMywzNi4zMywwLDAsMSw2LjUsNDkuN1pNNS45LDQzYTM1LjgyLDM1LjgyLDAsMCwxLDQuNy0xNy44TDM2LjQsNDAuMWE1LjkyLDUuOTIsMCwwLDAtLjcsMi45djAuN0w2LjMsNDlBMzkuNDUsMzkuNDUsMCwwLDEsNS45LDQzWk0yOS40LDkuMWwxMC4yLDI4YTYsNiwwLDAsMC0yLjgsMi40TDEwLjksMjQuNkEzNi42MiwzNi42MiwwLDAsMSwyOS40LDkuMVpNNDIuMSw2LjhhMzQsMzQsMCwwLDEsMTIsMi4xbC0xMC4yLDI4YTUuNjYsNS42NiwwLDAsMC0xLjgtLjMsNS4yMyw1LjIzLDAsMCwwLTEuOC4zTDMwLjEsOC45QTM0LDM0LDAsMCwxLDQyLjEsNi44Wk03My4zLDI0LjZMNDcuNSwzOS41YTcuMiw3LjIsMCwwLDAtMi44LTIuNGwxMC4yLTI4QTM2LjgsMzYuOCwwLDAsMSw3My4zLDI0LjZaTTE5LjEsNzFMMzguMyw0OC4xYTcuMDksNy4wOSwwLDAsMCwzLjUsMS4zVjc5LjJBMzUuNDQsMzUuNDQsMCwwLDEsMTkuMSw3MVptMjMuNCw4LjNWNDkuNEE2LjI1LDYuMjUsMCwwLDAsNDYsNDguMUw2NS4xLDcxQTM2LDM2LDAsMCwxLDQyLjUsNzkuM1ptNi0zNS41VjQzLjFhNy4yNyw3LjI3LDAsMCwwLS43LTIuOUw3My42LDI1LjNhMzUuODIsMzUuODIsMCwwLDEsNC43LDE3LjgsMzguMDgsMzguMDgsMCwwLDEtLjUsNS45WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuOSAtMS44KSIvPjwvc3ZnPg==\");';\n case 10:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0ic3ZnNDYxOSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTUgMTcuMTQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojZjk0YTE1O308L3N0eWxlPjwvZGVmcz48dGl0bGU+YmlrZXNoYXJlX291dF9vZl9odWI8L3RpdGxlPjxwYXRoIGlkPSJjaXJjbGU0NjA0IiBjbGFzcz0iY2xzLTEiIGQ9Ik0xMS42OSwxLjM4YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDExLjY5LDEuMzhabS0xLjg2LDJhMC41LDAuNSwwLDAsMC0uMzUuMTRMNi44NCw2YTAuNSwwLjUsMCwwLDAsMCwuNzZsMS44LDEuMzV2Mi43NWEwLjUsMC41LDAsMSwwLDEsMHYtM2EwLjUsMC41LDAsMCwwLS4yLTAuNEw4LjcyLDYuOWwxLjgyLTEuNzIsMC43NSwxYTAuNSwwLjUsMCwwLDAsLjQuMmgxLjVhMC41LDAuNSwwLDEsMCwwLTFIMTEuOTRsLTAuNzUtMS0wLjYtLjhhMC41LDAuNSwwLDAsMC0uMzgtMC4yMUg5LjgzWm0tNS4xNCw0YTMsMywwLDEsMCwzLDNBMywzLDAsMCwwLDQuNjksNy4zOFptOSwwYTMsMywwLDEsMCwzLDNBMywzLDAsMCwwLDEzLjY5LDcuMzhabS05LDFhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsNC42OSw4LjM4Wm05LDBhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTMuNjksOC4zOFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xLjY5IC0xLjM4KSIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSIzLjMgMTIuOTQgNy41IDE3LjE0IDExLjcgMTIuOTQgMy4zIDEyLjk0Ii8+PC9zdmc+\");';\n default:\n return 'background-image: url(\"data:image/svg+xml;base64,PHN2ZyBpZD0id2hpdGVfYmciIGRhdGEtbmFtZT0id2hpdGUgYmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDgyLjUgOTQuNyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiMzMzM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5odWItMDwvdGl0bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI0MS4yNSIgY3k9IjQxLjIiIHI9IjM4LjE4Ii8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNODMuNCw0M0E0MS4yNSw0MS4yNSwwLDEsMCwyOS41LDgyLjNMNDMuNCw5Ni41LDU1LjMsODIuMUE0MS4yOSw0MS4yOSwwLDAsMCw4My40LDQzWk02NS43LDcwLjZMNDYuNSw0Ny43YTYsNiwwLDAsMCwxLjgtMy4ybDI5LjQsNS4yQTM2LjMzLDM2LjMzLDAsMCwxLDY1LjcsNzAuNlpNNi41LDQ5LjdsMjkuNC01LjJhNi44Myw2LjgzLDAsMCwwLDEuOCwzLjJMMTguNSw3MC42QTM2LjMzLDM2LjMzLDAsMCwxLDYuNSw0OS43Wk01LjksNDNhMzUuODIsMzUuODIsMCwwLDEsNC43LTE3LjhMMzYuNCw0MC4xYTUuOTIsNS45MiwwLDAsMC0uNywyLjl2MC43TDYuMyw0OUEzOS40NSwzOS40NSwwLDAsMSw1LjksNDNaTTI5LjQsOS4xbDEwLjIsMjhhNiw2LDAsMCwwLTIuOCwyLjRMMTAuOSwyNC42QTM2LjYyLDM2LjYyLDAsMCwxLDI5LjQsOS4xWk00Mi4xLDYuOGEzNCwzNCwwLDAsMSwxMiwyLjFsLTEwLjIsMjhhNS42Niw1LjY2LDAsMCwwLTEuOC0uMyw1LjIzLDUuMjMsMCwwLDAtMS44LjNMMzAuMSw4LjlBMzQsMzQsMCwwLDEsNDIuMSw2LjhaTTczLjMsMjQuNkw0Ny41LDM5LjVhNy4yLDcuMiwwLDAsMC0yLjgtMi40bDEwLjItMjhBMzYuOCwzNi44LDAsMCwxLDczLjMsMjQuNlpNMTkuMSw3MUwzOC4zLDQ4LjFhNy4wOSw3LjA5LDAsMCwwLDMuNSwxLjNWNzkuMkEzNS40NCwzNS40NCwwLDAsMSwxOS4xLDcxWm0yMy40LDguM1Y0OS40QTYuMjUsNi4yNSwwLDAsMCw0Niw0OC4xTDY1LjEsNzFBMzYsMzYsMCwwLDEsNDIuNSw3OS4zWm02LTM1LjVWNDMuMWE3LjI3LDcuMjcsMCwwLDAtLjctMi45TDczLjYsMjUuM2EzNS44MiwzNS44MiwwLDAsMSw0LjcsMTcuOCwzOC4wOCwzOC4wOCwwLDAsMS0uNSw1LjlaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC45IC0xLjgpIi8+PC9zdmc+\");';\n }\n};\n/**\n * Bike rental icons are different from other vehicle rental types since they\n * typically have stations in addition to free-floating bikes. The stations are\n * drawn as svgs marking how full the stations are while the floating bikes have\n * their own unique icon.\n */\nexport const BaseBikeRentalIcon = styled.div<{ percent: number }>`\n background-position: center;\n background-repeat: no-repeat;\n background-size: contain;\n height: 24px;\n margin: auto;\n width: 24px;\n ${props => getPctIcon(props.percent)}\n`;\n\nexport const StationMarker = styled(MapMarkerAlt)`\n color: ${props => props.color};\n height: 12;\n width: 12;\n`;\n"],"file":"styled.js"}
|
package/lib/StationPopup.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { Company, ConfiguredCompany, MapLocationActionArg, Station } from "@opentripplanner/types";
|
|
2
3
|
declare type Props = {
|
|
3
|
-
station: Station;
|
|
4
4
|
configCompanies: ConfiguredCompany[];
|
|
5
5
|
getStationName: (configCompanies: Company[], station: Station) => string;
|
|
6
6
|
setLocation: (arg: MapLocationActionArg) => void;
|
|
7
|
+
station: Station;
|
|
7
8
|
};
|
|
8
9
|
/**
|
|
9
10
|
* Render some popup html for a station. This contains custom logic for
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StationPopup.d.ts","sourceRoot":"","sources":["../src/StationPopup.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StationPopup.d.ts","sourceRoot":"","sources":["../src/StationPopup.tsx"],"names":[],"mappings":";AAGA,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,oBAAoB,EACpB,OAAO,EACR,MAAM,wBAAwB,CAAC;AAwEhC,aAAK,KAAK,GAAG;IACX,eAAe,EAAE,iBAAiB,EAAE,CAAC;IACrC,cAAc,EAAE,CAAC,eAAe,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;IACzE,WAAW,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AACF;;;;GAIG;AACH,QAAA,MAAM,YAAY,UAAW,KAAK,KAAG,WAoDpC,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
package/lib/StationPopup.js
CHANGED
|
@@ -9,15 +9,15 @@ exports.default = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _baseMap = require("@opentripplanner/base-map");
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _coreUtils = _interopRequireDefault(require("@opentripplanner/core-utils"));
|
|
13
13
|
|
|
14
14
|
var _fromToLocationPicker = _interopRequireDefault(require("@opentripplanner/from-to-location-picker"));
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _flat = _interopRequireDefault(require("flat"));
|
|
17
17
|
|
|
18
18
|
var _reactIntl = require("react-intl");
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _react = _interopRequireDefault(require("react"));
|
|
21
21
|
|
|
22
22
|
var _enUS = _interopRequireDefault(require("../i18n/en-US.yml"));
|
|
23
23
|
|
package/lib/StationPopup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/StationPopup.tsx"],"names":["defaultMessages","defaultEnglishMessages","makeDefaultGetStationName","intl","defaultGetStationName","configCompanies","station","stationNetworks","coreUtils","itinerary","getCompaniesLabelFromNetworks","networks","stationName","name","id","match","length","isFloatingBike","formatMessage","defaultMessage","description","isFloatingCar","company","isFloatingVehicle","StationPopup","props","getStationName","setLocation","stationIsHub","bikesAvailable","undefined","getStationNameFunc","location","lat","y","lon","x","value","spacesAvailable"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/StationPopup.tsx"],"names":["defaultMessages","defaultEnglishMessages","makeDefaultGetStationName","intl","defaultGetStationName","configCompanies","station","stationNetworks","coreUtils","itinerary","getCompaniesLabelFromNetworks","networks","stationName","name","id","match","length","isFloatingBike","formatMessage","defaultMessage","description","isFloatingCar","company","isFloatingVehicle","StationPopup","props","getStationName","setLocation","stationIsHub","bikesAvailable","undefined","getStationNameFunc","location","lat","y","lon","x","value","spacesAvailable"],"mappings":"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","sourcesContent":["import { Styled as BaseMapStyled } from \"@opentripplanner/base-map\";\nimport coreUtils from \"@opentripplanner/core-utils\";\nimport FromToLocationPicker from \"@opentripplanner/from-to-location-picker\";\nimport {\n Company,\n ConfiguredCompany,\n MapLocationActionArg,\n Station\n} from \"@opentripplanner/types\";\nimport flatten from \"flat\";\nimport { FormattedMessage, IntlShape, useIntl } from \"react-intl\";\nimport React from \"react\";\n\n// Load the default messages.\n// @ts-expect-error why is this failing?\nimport defaultEnglishMessages from \"../i18n/en-US.yml\";\n\n// HACK: We should flatten the messages loaded above because\n// the YAML loaders behave differently between webpack and our version of jest:\n// - the yaml loader for webpack returns a nested object,\n// - the yaml loader for jest returns messages with flattened ids.\nconst defaultMessages = flatten(defaultEnglishMessages);\n\nfunction makeDefaultGetStationName(intl: IntlShape) {\n return function defaultGetStationName(\n configCompanies: Company[],\n station: Station\n ) {\n const stationNetworks = coreUtils.itinerary.getCompaniesLabelFromNetworks(\n station?.networks || [],\n configCompanies\n );\n let stationName = station.name || station.id;\n // If the station name or id is a giant UUID (with more than 3 \"-\" characters)\n // best not to show that at all and instead use the network name.\n if ((stationName.match(/-/g) || []).length > 3) {\n stationName = stationNetworks;\n }\n\n if (station.isFloatingBike) {\n stationName = intl.formatMessage(\n {\n defaultMessage:\n defaultEnglishMessages[\"otpUi.VehicleRentalOverlay.floatingBike\"],\n description: \"Popup title for a free-floating bike\",\n id: \"otpUi.VehicleRentalOverlay.floatingBike\"\n },\n { name: stationName }\n );\n } else if (station.isFloatingCar) {\n stationName = intl.formatMessage(\n {\n defaultMessage:\n defaultEnglishMessages[\"otpUi.VehicleRentalOverlay.floatingCar\"],\n description: \"Popup title for a free-floating car\",\n id: \"otpUi.VehicleRentalOverlay.floatingCar\"\n },\n {\n company: stationNetworks,\n name: stationName\n }\n );\n } else if (station.isFloatingVehicle) {\n // assumes that all floating vehicles are E-scooters\n stationName = intl.formatMessage(\n {\n defaultMessage:\n defaultEnglishMessages[\n \"otpUi.VehicleRentalOverlay.floatingEScooter\"\n ],\n description: \"Popup title for a free-floating e-scooter\",\n id: \"otpUi.VehicleRentalOverlay.floatingEScooter\"\n },\n { company: stationNetworks }\n );\n }\n return stationName;\n };\n}\n\ntype Props = {\n configCompanies: ConfiguredCompany[];\n getStationName: (configCompanies: Company[], station: Station) => string;\n setLocation: (arg: MapLocationActionArg) => void;\n station: Station;\n};\n/**\n * Render some popup html for a station. This contains custom logic for\n * displaying rental vehicles in the TriMet MOD website that might not be\n * applicable to other regions.\n */\nconst StationPopup = (props: Props): JSX.Element => {\n const intl = useIntl();\n const { configCompanies, getStationName, setLocation, station } = props;\n const stationIsHub =\n station.bikesAvailable !== undefined && !station.isFloatingBike;\n const getStationNameFunc = getStationName || makeDefaultGetStationName(intl);\n const stationName = getStationNameFunc(configCompanies, station);\n const location = {\n lat: station.y,\n lon: station.x,\n name: stationName\n };\n return (\n <BaseMapStyled.MapOverlayPopup>\n <BaseMapStyled.PopupTitle>{stationName}</BaseMapStyled.PopupTitle>\n\n {/* render dock info if it is available */}\n {stationIsHub && (\n <BaseMapStyled.PopupRow>\n <div>\n <FormattedMessage\n defaultMessage={\n defaultMessages[\"otpUi.VehicleRentalOverlay.availableBikes\"]\n }\n description=\"Label text for the number of bikes available\"\n id=\"otpUi.VehicleRentalOverlay.availableBikes\"\n values={{ value: station.bikesAvailable }}\n />\n </div>\n <div>\n <FormattedMessage\n defaultMessage={\n defaultMessages[\"otpUi.VehicleRentalOverlay.availableDocks\"]\n }\n description=\"Label text for the number of docks available\"\n id=\"otpUi.VehicleRentalOverlay.availableDocks\"\n values={{ value: station.spacesAvailable }}\n />\n </div>\n </BaseMapStyled.PopupRow>\n )}\n\n {/* Set as from/to toolbar */}\n <BaseMapStyled.PopupRow>\n <FromToLocationPicker\n label\n location={location}\n setLocation={setLocation}\n />\n </BaseMapStyled.PopupRow>\n </BaseMapStyled.MapOverlayPopup>\n );\n};\n\nexport default StationPopup;\n"],"file":"StationPopup.js"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Company, ConfiguredCompany, MapLocationActionArg, Station } from "@opentripplanner/types";
|
|
2
3
|
declare type Props = {
|
|
3
|
-
/**
|
|
4
|
-
* The entire companies config array.
|
|
5
|
-
*/
|
|
6
|
-
configCompanies: ConfiguredCompany[];
|
|
7
4
|
/**
|
|
8
5
|
* A list of companies that are applicable to just this instance of the
|
|
9
6
|
* overlay.
|
|
10
7
|
*/
|
|
11
8
|
companies?: string[];
|
|
9
|
+
/**
|
|
10
|
+
* The entire companies config array.
|
|
11
|
+
*/
|
|
12
|
+
configCompanies: ConfiguredCompany[];
|
|
12
13
|
/**
|
|
13
14
|
* An id, used to make this layer uniquely identifiable
|
|
14
15
|
*/
|
|
@@ -56,6 +57,6 @@ declare type Props = {
|
|
|
56
57
|
* types. This layer can be configured to show different styles of markers at
|
|
57
58
|
* different zoom levels.
|
|
58
59
|
*/
|
|
59
|
-
declare const VehicleRentalOverlay: (
|
|
60
|
+
declare const VehicleRentalOverlay: ({ companies, configCompanies, getStationName, id, refreshVehicles, setLocation, stations, visible }: Props) => JSX.Element;
|
|
60
61
|
export default VehicleRentalOverlay;
|
|
61
62
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,oBAAoB,EACpB,OAAO,EACR,MAAM,wBAAwB,CAAC;AAsChC,aAAK,KAAK,GAAG;IACX;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;OAEG;IACH,eAAe,EAAE,iBAAiB,EAAE,CAAC;IACrC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,eAAe,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;IAC1E;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAClD;;OAEG;IACH,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CAInB,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,oBAAoB,wGASvB,KAAK,KAAG,WA4IV,CAAC;AACF,eAAe,oBAAoB,CAAC"}
|