@kepler.gl/constants 3.1.0-alpha.1 → 3.1.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.
@@ -0,0 +1,83 @@
1
+ import { HexColor, ValueOf } from '@kepler.gl/types';
2
+ import { MiniColorRange } from './layers';
3
+ declare type GetColors = (steps: number) => HexColor[];
4
+ declare type GetLinear = () => (n: number) => string;
5
+ export declare type CategoricalPalette = {
6
+ name: string;
7
+ type: 'qualitative';
8
+ category: ValueOf<typeof CATEGORIES>;
9
+ colorBlindSafe: boolean;
10
+ colors: GetColors;
11
+ maxStep: number;
12
+ };
13
+ export declare type SequentialPalette = {
14
+ name: string;
15
+ type: 'sequential' | 'diverging' | 'cyclical';
16
+ category: ValueOf<typeof CATEGORIES>;
17
+ colorBlindSafe: boolean;
18
+ colors: GetColors;
19
+ linear: GetLinear;
20
+ };
21
+ export declare type ColorPalette = CategoricalPalette | SequentialPalette;
22
+ export declare const CATEGORIES: {
23
+ COLORBREWER: string;
24
+ D3: string;
25
+ UBER: string;
26
+ COLORBLIND: string;
27
+ };
28
+ export declare const PALETTE_TYPES: {
29
+ SEQ: 'sequential';
30
+ QUA: 'qualitative';
31
+ DIV: 'diverging';
32
+ CYC: 'cyclical';
33
+ };
34
+ export declare const COLORBREWER_SCHEME: {
35
+ sequential: string[];
36
+ diverging: string[];
37
+ qualitative: string[];
38
+ };
39
+ export declare const D3_COLOR_CHROMATIC_SCHEME: {
40
+ cyclical: string[];
41
+ sequential: string[];
42
+ qualitative: string[];
43
+ };
44
+ export declare const DataVizColors: {
45
+ aqua: string;
46
+ tumbleweed: string;
47
+ mule_fawn: string;
48
+ tree_poppy: string;
49
+ flame: string;
50
+ sapphire: string;
51
+ orchid: string;
52
+ chathams_blue: string;
53
+ med_aquamarine: string;
54
+ crocodile: string;
55
+ java: string;
56
+ chalky: string;
57
+ light_taupe: string;
58
+ peach_orange: string;
59
+ apricot: string;
60
+ portage: string;
61
+ light_orchid: string;
62
+ blue_green: string;
63
+ bermuda: string;
64
+ cloudy: string;
65
+ };
66
+ /**
67
+ * Build Categorical color palette
68
+ */
69
+ export declare function buildCategoricalPalette({ name, category, colors, colorBlindSafe }: {
70
+ name: string;
71
+ category: ValueOf<typeof CATEGORIES>;
72
+ colors?: HexColor[];
73
+ colorBlindSafe?: boolean;
74
+ }): CategoricalPalette;
75
+ export declare const KEPLER_COLOR_PALETTES: ColorPalette[];
76
+ /**
77
+ * create color range from palette, with steps and reversed as config
78
+ */
79
+ export declare function colorPaletteToColorRange(colorPalette: ColorPalette, colorConfig: {
80
+ reversed: boolean;
81
+ steps: number;
82
+ }): MiniColorRange;
83
+ export {};
@@ -0,0 +1,440 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.PALETTE_TYPES = exports.KEPLER_COLOR_PALETTES = exports.DataVizColors = exports.D3_COLOR_CHROMATIC_SCHEME = exports.COLORBREWER_SCHEME = exports.CATEGORIES = void 0;
9
+ exports.buildCategoricalPalette = buildCategoricalPalette;
10
+ exports.colorPaletteToColorRange = colorPaletteToColorRange;
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var d3ScaleChromatic = _interopRequireWildcard(require("d3-scale-chromatic"));
15
+ var _d3Array = require("d3-array");
16
+ var _chromaJs = _interopRequireDefault(require("chroma-js"));
17
+ var _console = _interopRequireDefault(require("global/console"));
18
+ var _d3Color = require("d3-color");
19
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
20
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
21
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT
23
+ // Copyright contributors to the kepler.gl project
24
+ // linear interpolator
25
+
26
+ var CATEGORIES = exports.CATEGORIES = {
27
+ COLORBREWER: 'ColorBrewer',
28
+ D3: 'D3',
29
+ UBER: 'Uber',
30
+ COLORBLIND: 'ColorBlind'
31
+ };
32
+ var PALETTE_TYPES = exports.PALETTE_TYPES = {
33
+ SEQ: 'sequential',
34
+ QUA: 'qualitative',
35
+ DIV: 'diverging',
36
+ CYC: 'cyclical'
37
+ };
38
+ var COLORBREWER_SCHEME = exports.COLORBREWER_SCHEME = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, PALETTE_TYPES.SEQ, ['BuGn', 'BuPu', 'GnBu', 'OrRd', 'PuBu', 'PuBuGn', 'PuRd', 'RdPu', 'YlGn', 'YlGnBu', 'YlOrBr', 'YlOrRd', 'Blues', 'Greens', 'Greys', 'Oranges', 'Purples', 'Reds']), PALETTE_TYPES.DIV, ['BrBG', 'PiYG', 'PRGn', 'PuOr', 'RdBu', 'RdGy', 'RdYlBu', 'RdYlGn', 'Spectral']), PALETTE_TYPES.QUA, ['Accent', 'Dark2', 'Paired', 'Pastel1', 'Pastel2', 'Set1', 'Set2', 'Set3']);
39
+
40
+ // https://rdrr.io/cran/RColorBrewer/man/ColorBrewer.html
41
+ var COLOR_BLIND_SAFE_MAP = {
42
+ // colorbrewer
43
+ BrBG: true,
44
+ PiYG: true,
45
+ PRGn: true,
46
+ PuOr: true,
47
+ RdBu: true,
48
+ RdGy: false,
49
+ RdYlBu: true,
50
+ RdYlGn: false,
51
+ Spectral: false,
52
+ Accent: false,
53
+ Dark2: true,
54
+ Paired: true,
55
+ Pastel1: false,
56
+ Pastel2: false,
57
+ Set1: false,
58
+ Set2: true,
59
+ Set3: false,
60
+ Blues: true,
61
+ BuGn: true,
62
+ BuPu: true,
63
+ GnBu: true,
64
+ Greens: true,
65
+ Greys: true,
66
+ Oranges: true,
67
+ OrRd: true,
68
+ PuBu: true,
69
+ PuBuGn: true,
70
+ PuRd: true,
71
+ Purples: true,
72
+ RdPu: true,
73
+ Reds: true,
74
+ YlGn: true,
75
+ YlGnBu: true,
76
+ YlOrBr: true,
77
+ YlOrRd: true,
78
+ // d3 scale chromatic
79
+ Sinebow: true,
80
+ Rainbow: false,
81
+ Turbo: true,
82
+ Viridis: true,
83
+ Inferno: true,
84
+ Magma: true,
85
+ Plasma: true,
86
+ Cividis: true,
87
+ Warm: true,
88
+ Cool: false,
89
+ CubehelixDefault: true,
90
+ Tableau10: false
91
+ };
92
+ var D3_COLOR_CHROMATIC_SCHEME = exports.D3_COLOR_CHROMATIC_SCHEME = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, PALETTE_TYPES.CYC, ['Sinebow', 'Rainbow']), PALETTE_TYPES.SEQ, ['Turbo', 'Viridis', 'Inferno', 'Magma', 'Plasma', 'Cividis', 'Warm', 'Cool', 'CubehelixDefault']), PALETTE_TYPES.QUA, ['Tableau10']);
93
+ var DataVizColors = exports.DataVizColors = {
94
+ aqua: '#12939A',
95
+ tumbleweed: '#DDB27C',
96
+ mule_fawn: '#88572C',
97
+ tree_poppy: '#FF991F',
98
+ flame: '#F15C17',
99
+ sapphire: '#223F9A',
100
+ orchid: '#DA70BF',
101
+ chathams_blue: '#125C77',
102
+ med_aquamarine: '#4DC19C',
103
+ crocodile: '#776E57',
104
+ java: '#17B8BE',
105
+ chalky: '#F6D18A',
106
+ light_taupe: '#B7885E',
107
+ peach_orange: '#FFCB99',
108
+ apricot: '#F89570',
109
+ portage: '#829AE3',
110
+ light_orchid: '#E79FD5',
111
+ blue_green: '#1E96BE',
112
+ bermuda: '#89DAC1',
113
+ cloudy: '#B3AD9E'
114
+ };
115
+ var UberVizDiverging = {
116
+ name: 'Uber Viz Diverging',
117
+ category: CATEGORIES.UBER,
118
+ type: PALETTE_TYPES.DIV,
119
+ colors: ['#00939C', '#E6FAFA'],
120
+ colors2: ['#FEEEE8', '#C22E00'],
121
+ diverging: true,
122
+ correctLightness: false,
123
+ colorBlindSafe: true
124
+ };
125
+ var UberVizSequential = {
126
+ name: 'Uber Viz Sequential',
127
+ category: CATEGORIES.UBER,
128
+ type: PALETTE_TYPES.SEQ,
129
+ colors: ['#00939C', '#E6FAFA'],
130
+ colorBlindSafe: true
131
+ };
132
+ var UberPool = {
133
+ name: 'UberPool',
134
+ type: PALETTE_TYPES.DIV,
135
+ category: CATEGORIES.UBER,
136
+ colors: ['#223F9A', '#CF1750', '#FAE300'],
137
+ correctLightness: false,
138
+ colorBlindSafe: true
139
+ };
140
+ var IceAndFire = {
141
+ name: 'Ice And Fire',
142
+ type: PALETTE_TYPES.DIV,
143
+ category: CATEGORIES.UBER,
144
+ colors: ['#0198BD', '#FAFEB3'],
145
+ colors2: ['#FEEDB1', '#D50255'],
146
+ diverging: true,
147
+ colorBlindSafe: true
148
+ };
149
+ var GlobalWarming = {
150
+ name: 'Global Warming',
151
+ type: PALETTE_TYPES.SEQ,
152
+ category: CATEGORIES.UBER,
153
+ colors: ['#4C0035', '#AC1C17', '#FFC300'],
154
+ colorBlindSafe: true
155
+ };
156
+ var Sunrise = {
157
+ name: 'Sunrise',
158
+ type: PALETTE_TYPES.SEQ,
159
+ category: CATEGORIES.UBER,
160
+ colors: ['#355C7D', '#C06C84', '#F8B195'],
161
+ colorBlindSafe: true
162
+ };
163
+ var OceanGreen = {
164
+ name: 'Ocean Green',
165
+ type: PALETTE_TYPES.SEQ,
166
+ category: CATEGORIES.UBER,
167
+ colors: ['#37535E', '#3EACA8', '#E5EEC1'],
168
+ colorBlindSafe: true
169
+ };
170
+ var PinkWine = {
171
+ name: 'Pink Wine',
172
+ type: PALETTE_TYPES.SEQ,
173
+ category: CATEGORIES.UBER,
174
+ colors: ['#2C1E3D', '#956485', '#EDD1CA'],
175
+ colorBlindSafe: true
176
+ };
177
+ var PurpleBlueYellow = {
178
+ name: 'Purple Blue Yellow',
179
+ type: PALETTE_TYPES.SEQ,
180
+ category: CATEGORIES.UBER,
181
+ colors: ['#383C65', '#49838A', '#D6DEBF'],
182
+ mode: 'hsl',
183
+ colorBlindSafe: true
184
+ };
185
+ var ViovetOcean = {
186
+ name: 'ViovetOcean',
187
+ type: PALETTE_TYPES.SEQ,
188
+ category: CATEGORIES.UBER,
189
+ colors: ['#7400B8', '#5E60CE', '#4EA8DE', '#56CFE1', '#72EFDD'],
190
+ colorBlindSafe: false
191
+ };
192
+ var SummerSky = {
193
+ name: 'SummerSky',
194
+ type: PALETTE_TYPES.SEQ,
195
+ category: CATEGORIES.UBER,
196
+ colors: ['#184E77', '#168AAD', '#76C893', '#D9ED92'],
197
+ colorBlindSafe: false
198
+ };
199
+ var UberVizQualitative = {
200
+ name: 'Uber Viz Qualitative',
201
+ type: PALETTE_TYPES.QUA,
202
+ category: CATEGORIES.UBER,
203
+ colors: Object.values(DataVizColors),
204
+ colorBlindSafe: false
205
+ };
206
+
207
+ // https://personal.sron.nl/~pault/#sec:qualitative
208
+ // A set of Qualitative Colors designed by Paul Tol that are color blind friendly
209
+ var TolBright = {
210
+ name: 'Tol Bright',
211
+ type: PALETTE_TYPES.QUA,
212
+ category: CATEGORIES.COLORBLIND,
213
+ colors: ['#4477AA', '#EE6677', '#228833', '#CCBB44', '#66CCEE', '#AA3377', '#BBBBBB'],
214
+ colorBlindSafe: true
215
+ };
216
+ // Bad Data: #BBBBBB
217
+
218
+ var TolVibrant = {
219
+ name: 'Tol Vibrant',
220
+ type: PALETTE_TYPES.QUA,
221
+ category: CATEGORIES.COLORBLIND,
222
+ colors: ['#EE7733', '#0077BB', '#33BBEE', '#EE3377', '#CC3311', '#009988', '#BBBBBB'],
223
+ colorBlindSafe: true
224
+ };
225
+ // Bad Data: #BBBBBB
226
+
227
+ var TolMuted = {
228
+ name: 'Tol Muted',
229
+ type: PALETTE_TYPES.QUA,
230
+ category: CATEGORIES.COLORBLIND,
231
+ colors: ['#CC6677', '#332288', '#DDCC77', '#117733', '#88CCEE', '#882255', '#44AA99', '#999933', '#AA4499'],
232
+ colorBlindSafe: true
233
+ };
234
+ // Bad Data: #DDDDDD
235
+
236
+ var TolMediumContrast = {
237
+ name: 'Tol Medium Contrast',
238
+ type: PALETTE_TYPES.QUA,
239
+ category: CATEGORIES.COLORBLIND,
240
+ colors: ['#6699CC', '#004488', '#EECC66', '#994455', '#997700', '#EE99AA'],
241
+ colorBlindSafe: true
242
+ };
243
+ var TolLight = {
244
+ name: 'Tol Light',
245
+ type: PALETTE_TYPES.QUA,
246
+ category: CATEGORIES.COLORBLIND,
247
+ colors: ['#77AADD', '#EE8866', '#EEDD88', '#FFAABB', '#99DDFF', '#44BB99', '#BBCC33', '#AAAA00'],
248
+ colorBlindSafe: true
249
+ };
250
+
251
+ // https://jfly.uni-koeln.de/color/
252
+ var OkabeIto = {
253
+ name: 'Okabe Ito',
254
+ type: PALETTE_TYPES.QUA,
255
+ category: CATEGORIES.COLORBLIND,
256
+ colors: ['#E69F00', '#56B4E9', '#009E73', '#F0E442', '#0072B2', '#D55E00', '#CC79A7', '#000000'],
257
+ colorBlindSafe: true
258
+ };
259
+ // Bad Data: #DDDDDD
260
+
261
+ /**
262
+ * Build Categorical color palette
263
+ */
264
+ function buildCategoricalPalette(_ref) {
265
+ var name = _ref.name,
266
+ category = _ref.category,
267
+ colors = _ref.colors,
268
+ colorBlindSafe = _ref.colorBlindSafe;
269
+ var allColors;
270
+ // find d3 color scheme
271
+ var scheme = d3ScaleChromatic["scheme".concat(name)];
272
+ if (!scheme && !colors) {
273
+ _console["default"].warn("scheme".concat(name, " cant not be found in d3 scale chromatic, needs to provide colors"));
274
+ allColors = ['#DDDDDD'];
275
+ } else if (!scheme) {
276
+ // build from colors
277
+ allColors = colors;
278
+ } else {
279
+ allColors = scheme;
280
+ }
281
+ if (!allColors.length) {
282
+ _console["default"].warn('Needs to provide valid d3 color scheme name or an array of colors');
283
+ }
284
+ return {
285
+ name: name,
286
+ category: category,
287
+ type: PALETTE_TYPES.QUA,
288
+ colorBlindSafe: colorBlindSafe !== null && colorBlindSafe !== void 0 ? colorBlindSafe : COLOR_BLIND_SAFE_MAP[name],
289
+ maxStep: allColors.length,
290
+ colors: function colors(numColors) {
291
+ // if numColors > maxSteps, will return allColors
292
+ return allColors.slice(0, numColors).map(_colorToUppercase);
293
+ }
294
+ };
295
+ }
296
+ function _colorToUppercase(c) {
297
+ return (0, _d3Color.color)(c).formatHex().toUpperCase();
298
+ }
299
+ /**
300
+ * All sequantial palette is based on palette in d3-scale-chromatic
301
+ * https://github.com/d3/d3-scale-chromatic/blob/main/src/index.js
302
+ */
303
+ function buildSequentialPalette(_ref2) {
304
+ var name = _ref2.name,
305
+ type = _ref2.type,
306
+ category = _ref2.category;
307
+ if (!Object.prototype.hasOwnProperty.call(COLOR_BLIND_SAFE_MAP, name)) {
308
+ _console["default"].warn("".concat(name, " does not exists in COLOR_BLIND_SAFE_MAP"));
309
+ }
310
+ var interpolator = d3ScaleChromatic["interpolate".concat(name)];
311
+ return {
312
+ name: name,
313
+ type: type,
314
+ category: category,
315
+ colorBlindSafe: COLOR_BLIND_SAFE_MAP[name],
316
+ colors: function colors(numColors) {
317
+ return (0, _d3Array.range)(0, numColors, 1).map(function (d) {
318
+ return interpolator(d / (numColors - 1));
319
+ }).map(_colorToUppercase);
320
+ },
321
+ linear: function linear() {
322
+ return interpolator;
323
+ }
324
+ };
325
+ }
326
+ function buildCustomPalette(_ref3) {
327
+ var colors = _ref3.colors,
328
+ _ref3$colors = _ref3.colors2,
329
+ colors2 = _ref3$colors === void 0 ? [] : _ref3$colors,
330
+ _ref3$correctLightnes = _ref3.correctLightness,
331
+ correctLightness = _ref3$correctLightnes === void 0 ? true : _ref3$correctLightnes,
332
+ _ref3$bezier = _ref3.bezier,
333
+ bezier = _ref3$bezier === void 0 ? false : _ref3$bezier,
334
+ _ref3$diverging = _ref3.diverging,
335
+ diverging = _ref3$diverging === void 0 ? false : _ref3$diverging,
336
+ _ref3$mode = _ref3.mode,
337
+ mode = _ref3$mode === void 0 ? 'lch' : _ref3$mode,
338
+ name = _ref3.name,
339
+ type = _ref3.type,
340
+ category = _ref3.category,
341
+ colorBlindSafe = _ref3.colorBlindSafe;
342
+ var palette = {
343
+ name: name,
344
+ type: type,
345
+ category: category,
346
+ colorBlindSafe: colorBlindSafe,
347
+ colors: function colors() {
348
+ return [];
349
+ },
350
+ linear: function linear() {
351
+ return function () {
352
+ return '';
353
+ };
354
+ }
355
+ };
356
+ if (!colors.length) {
357
+ _console["default"].error('colors has to be an array of colors');
358
+ return;
359
+ }
360
+ var scaleLeft = _chromaJs["default"].scale(bezier && colors.length > 1 ? _chromaJs["default"].bezier(colors) : colors).mode(mode).correctLightness(correctLightness);
361
+ var scaleRight;
362
+ var scaleFull;
363
+ if (diverging) {
364
+ if (!colors.length) {
365
+ _console["default"].error('colors2 has to be an array of colors when diverging = true');
366
+ return;
367
+ }
368
+ scaleRight = _chromaJs["default"].scale(bezier && colors2.length > 1 ? _chromaJs["default"].bezier(colors2) : colors2).mode(mode).correctLightness(correctLightness);
369
+ scaleFull = _chromaJs["default"].scale(bezier ? _chromaJs["default"].bezier(colors.concat(colors2)) : colors.concat(colors2)).mode(mode).correctLightness(correctLightness);
370
+ }
371
+
372
+ // return numColors => (scaleLeft ? stepsLeft.colors(numColors) : []);
373
+
374
+ // given number of colors return color steps
375
+ palette.colors = function (numColors) {
376
+ if (diverging) {
377
+ var even = numColors % 2 === 0;
378
+ var numColorsLeft = Math.ceil(numColors / 2) + (even ? 1 : 0);
379
+ var numColorsRight = Math.ceil(numColors / 2) + (even ? 1 : 0);
380
+ var colorsLeft = scaleLeft ? scaleLeft.colors(numColorsLeft) : [];
381
+ var colorsRight = scaleRight ? scaleRight.colors(numColorsRight) : [];
382
+ var _steps = (even ? colorsLeft.slice(0, colorsLeft.length - 1) : colorsLeft).concat(colorsRight.slice(1)).map(_colorToUppercase);
383
+ return _steps;
384
+ }
385
+ return scaleLeft ? scaleLeft.colors(numColors).map(_colorToUppercase) : [];
386
+ };
387
+ palette.linear = function () {
388
+ return diverging ? scaleFull : scaleLeft;
389
+ };
390
+ return palette;
391
+ }
392
+ function buildPaletteBySchemeGroups(schemeGroups, category) {
393
+ return Object.entries(schemeGroups).reduce(function (accu, _ref4) {
394
+ var _ref5 = (0, _slicedToArray2["default"])(_ref4, 2),
395
+ type = _ref5[0],
396
+ palettes = _ref5[1];
397
+ return [].concat((0, _toConsumableArray2["default"])(accu), (0, _toConsumableArray2["default"])(palettes.reduce(function (group, name) {
398
+ var colorPalette = type === PALETTE_TYPES.QUA ? buildCategoricalPalette({
399
+ name: name,
400
+ category: category
401
+ }) :
402
+ // @ts-ignore jsdoc cant figure out type of 'type'
403
+ buildSequentialPalette({
404
+ name: name,
405
+ type: type,
406
+ category: category
407
+ });
408
+ // @ts-ignore type is not assignable to never[]
409
+ group.push(colorPalette);
410
+ return group;
411
+ }, [])));
412
+ }, []);
413
+ }
414
+ var COLORBREWER_PALETTES = buildPaletteBySchemeGroups(COLORBREWER_SCHEME, CATEGORIES.COLORBREWER);
415
+ var D3_COLOR_PALETTES = buildPaletteBySchemeGroups(D3_COLOR_CHROMATIC_SCHEME, CATEGORIES.D3);
416
+ var UBER_PALETTES = [UberVizDiverging, UberVizSequential, UberPool, IceAndFire, GlobalWarming, Sunrise, OceanGreen, PinkWine, PurpleBlueYellow, ViovetOcean, SummerSky, UberVizQualitative, TolBright, TolVibrant, TolMuted, TolMediumContrast, TolLight, OkabeIto].map(function (recipe) {
417
+ return recipe.type === PALETTE_TYPES.QUA ? buildCategoricalPalette(recipe) : buildCustomPalette(recipe);
418
+ }).filter(Boolean);
419
+ var KEPLER_COLOR_PALETTES = exports.KEPLER_COLOR_PALETTES = [].concat((0, _toConsumableArray2["default"])(UBER_PALETTES), (0, _toConsumableArray2["default"])(COLORBREWER_PALETTES), (0, _toConsumableArray2["default"])(D3_COLOR_PALETTES));
420
+
421
+ /**
422
+ * create color range from palette, with steps and reversed as config
423
+ */
424
+ function colorPaletteToColorRange(colorPalette, colorConfig) {
425
+ var steps = colorConfig.steps,
426
+ reversed = colorConfig.reversed;
427
+ var colors = colorPalette.colors(steps).slice();
428
+ if (reversed) {
429
+ colors.reverse();
430
+ }
431
+ return _objectSpread({
432
+ name: colorPalette.name,
433
+ type: colorPalette.type,
434
+ category: colorPalette.category,
435
+ colors: colors
436
+ }, reversed ? {
437
+ reversed: reversed
438
+ } : {});
439
+ }
440
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkM1NjYWxlQ2hyb21hdGljIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2QzQXJyYXkiLCJfY2hyb21hSnMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NvbnNvbGUiLCJfZDNDb2xvciIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIkNBVEVHT1JJRVMiLCJleHBvcnRzIiwiQ09MT1JCUkVXRVIiLCJEMyIsIlVCRVIiLCJDT0xPUkJMSU5EIiwiUEFMRVRURV9UWVBFUyIsIlNFUSIsIlFVQSIsIkRJViIsIkNZQyIsIkNPTE9SQlJFV0VSX1NDSEVNRSIsIkNPTE9SX0JMSU5EX1NBRkVfTUFQIiwiQnJCRyIsIlBpWUciLCJQUkduIiwiUHVPciIsIlJkQnUiLCJSZEd5IiwiUmRZbEJ1IiwiUmRZbEduIiwiU3BlY3RyYWwiLCJBY2NlbnQiLCJEYXJrMiIsIlBhaXJlZCIsIlBhc3RlbDEiLCJQYXN0ZWwyIiwiU2V0MSIsIlNldDIiLCJTZXQzIiwiQmx1ZXMiLCJCdUduIiwiQnVQdSIsIkduQnUiLCJHcmVlbnMiLCJHcmV5cyIsIk9yYW5nZXMiLCJPclJkIiwiUHVCdSIsIlB1QnVHbiIsIlB1UmQiLCJQdXJwbGVzIiwiUmRQdSIsIlJlZHMiLCJZbEduIiwiWWxHbkJ1IiwiWWxPckJyIiwiWWxPclJkIiwiU2luZWJvdyIsIlJhaW5ib3ciLCJUdXJibyIsIlZpcmlkaXMiLCJJbmZlcm5vIiwiTWFnbWEiLCJQbGFzbWEiLCJDaXZpZGlzIiwiV2FybSIsIkNvb2wiLCJDdWJlaGVsaXhEZWZhdWx0IiwiVGFibGVhdTEwIiwiRDNfQ09MT1JfQ0hST01BVElDX1NDSEVNRSIsIkRhdGFWaXpDb2xvcnMiLCJhcXVhIiwidHVtYmxld2VlZCIsIm11bGVfZmF3biIsInRyZWVfcG9wcHkiLCJmbGFtZSIsInNhcHBoaXJlIiwib3JjaGlkIiwiY2hhdGhhbXNfYmx1ZSIsIm1lZF9hcXVhbWFyaW5lIiwiY3JvY29kaWxlIiwiamF2YSIsImNoYWxreSIsImxpZ2h0X3RhdXBlIiwicGVhY2hfb3JhbmdlIiwiYXByaWNvdCIsInBvcnRhZ2UiLCJsaWdodF9vcmNoaWQiLCJibHVlX2dyZWVuIiwiYmVybXVkYSIsImNsb3VkeSIsIlViZXJWaXpEaXZlcmdpbmciLCJuYW1lIiwiY2F0ZWdvcnkiLCJ0eXBlIiwiY29sb3JzIiwiY29sb3JzMiIsImRpdmVyZ2luZyIsImNvcnJlY3RMaWdodG5lc3MiLCJjb2xvckJsaW5kU2FmZSIsIlViZXJWaXpTZXF1ZW50aWFsIiwiVWJlclBvb2wiLCJJY2VBbmRGaXJlIiwiR2xvYmFsV2FybWluZyIsIlN1bnJpc2UiLCJPY2VhbkdyZWVuIiwiUGlua1dpbmUiLCJQdXJwbGVCbHVlWWVsbG93IiwibW9kZSIsIlZpb3ZldE9jZWFuIiwiU3VtbWVyU2t5IiwiVWJlclZpelF1YWxpdGF0aXZlIiwidmFsdWVzIiwiVG9sQnJpZ2h0IiwiVG9sVmlicmFudCIsIlRvbE11dGVkIiwiVG9sTWVkaXVtQ29udHJhc3QiLCJUb2xMaWdodCIsIk9rYWJlSXRvIiwiYnVpbGRDYXRlZ29yaWNhbFBhbGV0dGUiLCJfcmVmIiwiYWxsQ29sb3JzIiwic2NoZW1lIiwiY29uY2F0IiwiQ29uc29sZSIsIndhcm4iLCJtYXhTdGVwIiwibnVtQ29sb3JzIiwic2xpY2UiLCJtYXAiLCJfY29sb3JUb1VwcGVyY2FzZSIsImMiLCJkM0NvbG9yIiwiZm9ybWF0SGV4IiwidG9VcHBlckNhc2UiLCJidWlsZFNlcXVlbnRpYWxQYWxldHRlIiwiX3JlZjIiLCJwcm90b3R5cGUiLCJpbnRlcnBvbGF0b3IiLCJyYW5nZSIsImQiLCJsaW5lYXIiLCJidWlsZEN1c3RvbVBhbGV0dGUiLCJfcmVmMyIsIl9yZWYzJGNvbG9ycyIsIl9yZWYzJGNvcnJlY3RMaWdodG5lcyIsIl9yZWYzJGJlemllciIsImJlemllciIsIl9yZWYzJGRpdmVyZ2luZyIsIl9yZWYzJG1vZGUiLCJwYWxldHRlIiwiZXJyb3IiLCJzY2FsZUxlZnQiLCJjaHJvbWEiLCJzY2FsZSIsInNjYWxlUmlnaHQiLCJzY2FsZUZ1bGwiLCJldmVuIiwibnVtQ29sb3JzTGVmdCIsIk1hdGgiLCJjZWlsIiwibnVtQ29sb3JzUmlnaHQiLCJjb2xvcnNMZWZ0IiwiY29sb3JzUmlnaHQiLCJzdGVwcyIsImJ1aWxkUGFsZXR0ZUJ5U2NoZW1lR3JvdXBzIiwic2NoZW1lR3JvdXBzIiwiZW50cmllcyIsInJlZHVjZSIsImFjY3UiLCJfcmVmNCIsIl9yZWY1IiwiX3NsaWNlZFRvQXJyYXkyIiwicGFsZXR0ZXMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZ3JvdXAiLCJjb2xvclBhbGV0dGUiLCJDT0xPUkJSRVdFUl9QQUxFVFRFUyIsIkQzX0NPTE9SX1BBTEVUVEVTIiwiVUJFUl9QQUxFVFRFUyIsInJlY2lwZSIsIkJvb2xlYW4iLCJLRVBMRVJfQ09MT1JfUEFMRVRURVMiLCJjb2xvclBhbGV0dGVUb0NvbG9yUmFuZ2UiLCJjb2xvckNvbmZpZyIsInJldmVyc2VkIiwicmV2ZXJzZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xvci1wYWxldHRlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBkM1NjYWxlQ2hyb21hdGljIGZyb20gJ2QzLXNjYWxlLWNocm9tYXRpYyc7XG5pbXBvcnQge3JhbmdlfSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQgY2hyb21hIGZyb20gJ2Nocm9tYS1qcyc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5pbXBvcnQge2NvbG9yIGFzIGQzQ29sb3J9IGZyb20gJ2QzLWNvbG9yJztcbmltcG9ydCB7SGV4Q29sb3IsIFZhbHVlT2Z9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtNaW5pQ29sb3JSYW5nZX0gZnJvbSAnLi9sYXllcnMnO1xuXG50eXBlIEdldENvbG9ycyA9IChzdGVwczogbnVtYmVyKSA9PiBIZXhDb2xvcltdO1xuLy8gbGluZWFyIGludGVycG9sYXRvclxudHlwZSBHZXRMaW5lYXIgPSAoKSA9PiAobjogbnVtYmVyKSA9PiBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIENhdGVnb3JpY2FsUGFsZXR0ZSA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiAncXVhbGl0YXRpdmUnO1xuICBjYXRlZ29yeTogVmFsdWVPZjx0eXBlb2YgQ0FURUdPUklFUz47XG4gIGNvbG9yQmxpbmRTYWZlOiBib29sZWFuO1xuXG4gIGNvbG9yczogR2V0Q29sb3JzO1xuICAvLyBjYXRlZ29yaWNhbCBwYWxldHRlXG4gIG1heFN0ZXA6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFNlcXVlbnRpYWxQYWxldHRlID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6ICdzZXF1ZW50aWFsJyB8ICdkaXZlcmdpbmcnIHwgJ2N5Y2xpY2FsJztcbiAgY2F0ZWdvcnk6IFZhbHVlT2Y8dHlwZW9mIENBVEVHT1JJRVM+O1xuICBjb2xvckJsaW5kU2FmZTogYm9vbGVhbjtcbiAgY29sb3JzOiBHZXRDb2xvcnM7XG4gIC8vIHNlcXVlbnRpYWwgcGFsZXR0ZVxuICBsaW5lYXI6IEdldExpbmVhcjtcbn07XG5cbmV4cG9ydCB0eXBlIENvbG9yUGFsZXR0ZSA9IENhdGVnb3JpY2FsUGFsZXR0ZSB8IFNlcXVlbnRpYWxQYWxldHRlO1xuXG5leHBvcnQgY29uc3QgQ0FURUdPUklFUyA9IHtcbiAgQ09MT1JCUkVXRVI6ICdDb2xvckJyZXdlcicsXG4gIEQzOiAnRDMnLFxuICBVQkVSOiAnVWJlcicsXG4gIENPTE9SQkxJTkQ6ICdDb2xvckJsaW5kJ1xufTtcblxuZXhwb3J0IGNvbnN0IFBBTEVUVEVfVFlQRVM6IHtcbiAgU0VROiAnc2VxdWVudGlhbCc7XG4gIFFVQTogJ3F1YWxpdGF0aXZlJztcbiAgRElWOiAnZGl2ZXJnaW5nJztcbiAgQ1lDOiAnY3ljbGljYWwnO1xufSA9IHtcbiAgU0VROiAnc2VxdWVudGlhbCcsXG4gIFFVQTogJ3F1YWxpdGF0aXZlJyxcbiAgRElWOiAnZGl2ZXJnaW5nJyxcbiAgQ1lDOiAnY3ljbGljYWwnXG59O1xuXG5leHBvcnQgY29uc3QgQ09MT1JCUkVXRVJfU0NIRU1FID0ge1xuICBbUEFMRVRURV9UWVBFUy5TRVFdOiBbXG4gICAgJ0J1R24nLFxuICAgICdCdVB1JyxcbiAgICAnR25CdScsXG4gICAgJ09yUmQnLFxuICAgICdQdUJ1JyxcbiAgICAnUHVCdUduJyxcbiAgICAnUHVSZCcsXG4gICAgJ1JkUHUnLFxuICAgICdZbEduJyxcbiAgICAnWWxHbkJ1JyxcbiAgICAnWWxPckJyJyxcbiAgICAnWWxPclJkJyxcbiAgICAnQmx1ZXMnLFxuICAgICdHcmVlbnMnLFxuICAgICdHcmV5cycsXG4gICAgJ09yYW5nZXMnLFxuICAgICdQdXJwbGVzJyxcbiAgICAnUmVkcydcbiAgXSwgLy8gMTggKyA5ICsgOFxuICAvLyBzaW5nbGVodWU6IFsnQmx1ZXMnLCAnR3JlZW5zJywgJ0dyZXlzJywgJ09yYW5nZXMnLCAnUHVycGxlcycsICdSZWRzJ10sXG4gIFtQQUxFVFRFX1RZUEVTLkRJVl06IFtcbiAgICAnQnJCRycsXG4gICAgJ1BpWUcnLFxuICAgICdQUkduJyxcbiAgICAnUHVPcicsXG4gICAgJ1JkQnUnLFxuICAgICdSZEd5JyxcbiAgICAnUmRZbEJ1JyxcbiAgICAnUmRZbEduJyxcbiAgICAnU3BlY3RyYWwnXG4gIF0sXG4gIFtQQUxFVFRFX1RZUEVTLlFVQV06IFsnQWNjZW50JywgJ0RhcmsyJywgJ1BhaXJlZCcsICdQYXN0ZWwxJywgJ1Bhc3RlbDInLCAnU2V0MScsICdTZXQyJywgJ1NldDMnXVxufTtcblxuLy8gaHR0cHM6Ly9yZHJyLmlvL2NyYW4vUkNvbG9yQnJld2VyL21hbi9Db2xvckJyZXdlci5odG1sXG5jb25zdCBDT0xPUl9CTElORF9TQUZFX01BUCA9IHtcbiAgLy8gY29sb3JicmV3ZXJcbiAgQnJCRzogdHJ1ZSxcbiAgUGlZRzogdHJ1ZSxcbiAgUFJHbjogdHJ1ZSxcbiAgUHVPcjogdHJ1ZSxcbiAgUmRCdTogdHJ1ZSxcbiAgUmRHeTogZmFsc2UsXG4gIFJkWWxCdTogdHJ1ZSxcbiAgUmRZbEduOiBmYWxzZSxcbiAgU3BlY3RyYWw6IGZhbHNlLFxuICBBY2NlbnQ6IGZhbHNlLFxuICBEYXJrMjogdHJ1ZSxcbiAgUGFpcmVkOiB0cnVlLFxuICBQYXN0ZWwxOiBmYWxzZSxcbiAgUGFzdGVsMjogZmFsc2UsXG4gIFNldDE6IGZhbHNlLFxuICBTZXQyOiB0cnVlLFxuICBTZXQzOiBmYWxzZSxcbiAgQmx1ZXM6IHRydWUsXG4gIEJ1R246IHRydWUsXG4gIEJ1UHU6IHRydWUsXG4gIEduQnU6IHRydWUsXG4gIEdyZWVuczogdHJ1ZSxcbiAgR3JleXM6IHRydWUsXG4gIE9yYW5nZXM6IHRydWUsXG4gIE9yUmQ6IHRydWUsXG4gIFB1QnU6IHRydWUsXG4gIFB1QnVHbjogdHJ1ZSxcbiAgUHVSZDogdHJ1ZSxcbiAgUHVycGxlczogdHJ1ZSxcbiAgUmRQdTogdHJ1ZSxcbiAgUmVkczogdHJ1ZSxcbiAgWWxHbjogdHJ1ZSxcbiAgWWxHbkJ1OiB0cnVlLFxuICBZbE9yQnI6IHRydWUsXG4gIFlsT3JSZDogdHJ1ZSxcblxuICAvLyBkMyBzY2FsZSBjaHJvbWF0aWNcbiAgU2luZWJvdzogdHJ1ZSxcbiAgUmFpbmJvdzogZmFsc2UsXG4gIFR1cmJvOiB0cnVlLFxuICBWaXJpZGlzOiB0cnVlLFxuICBJbmZlcm5vOiB0cnVlLFxuICBNYWdtYTogdHJ1ZSxcbiAgUGxhc21hOiB0cnVlLFxuICBDaXZpZGlzOiB0cnVlLFxuICBXYXJtOiB0cnVlLFxuICBDb29sOiBmYWxzZSxcbiAgQ3ViZWhlbGl4RGVmYXVsdDogdHJ1ZSxcbiAgVGFibGVhdTEwOiBmYWxzZVxufTtcblxuZXhwb3J0IGNvbnN0IEQzX0NPTE9SX0NIUk9NQVRJQ19TQ0hFTUUgPSB7XG4gIFtQQUxFVFRFX1RZUEVTLkNZQ106IFsnU2luZWJvdycsICdSYWluYm93J10sXG4gIFtQQUxFVFRFX1RZUEVTLlNFUV06IFtcbiAgICAnVHVyYm8nLFxuICAgICdWaXJpZGlzJyxcbiAgICAnSW5mZXJubycsXG4gICAgJ01hZ21hJyxcbiAgICAnUGxhc21hJyxcbiAgICAnQ2l2aWRpcycsXG4gICAgJ1dhcm0nLFxuICAgICdDb29sJyxcbiAgICAnQ3ViZWhlbGl4RGVmYXVsdCdcbiAgXSxcbiAgW1BBTEVUVEVfVFlQRVMuUVVBXTogWydUYWJsZWF1MTAnXVxufTtcblxuZXhwb3J0IGNvbnN0IERhdGFWaXpDb2xvcnMgPSB7XG4gIGFxdWE6ICcjMTI5MzlBJyxcbiAgdHVtYmxld2VlZDogJyNEREIyN0MnLFxuICBtdWxlX2Zhd246ICcjODg1NzJDJyxcbiAgdHJlZV9wb3BweTogJyNGRjk5MUYnLFxuICBmbGFtZTogJyNGMTVDMTcnLFxuICBzYXBwaGlyZTogJyMyMjNGOUEnLFxuICBvcmNoaWQ6ICcjREE3MEJGJyxcbiAgY2hhdGhhbXNfYmx1ZTogJyMxMjVDNzcnLFxuICBtZWRfYXF1YW1hcmluZTogJyM0REMxOUMnLFxuICBjcm9jb2RpbGU6ICcjNzc2RTU3JyxcbiAgamF2YTogJyMxN0I4QkUnLFxuICBjaGFsa3k6ICcjRjZEMThBJyxcbiAgbGlnaHRfdGF1cGU6ICcjQjc4ODVFJyxcbiAgcGVhY2hfb3JhbmdlOiAnI0ZGQ0I5OScsXG4gIGFwcmljb3Q6ICcjRjg5NTcwJyxcbiAgcG9ydGFnZTogJyM4MjlBRTMnLFxuICBsaWdodF9vcmNoaWQ6ICcjRTc5RkQ1JyxcbiAgYmx1ZV9ncmVlbjogJyMxRTk2QkUnLFxuICBiZXJtdWRhOiAnIzg5REFDMScsXG4gIGNsb3VkeTogJyNCM0FEOUUnXG59O1xuXG5jb25zdCBVYmVyVml6RGl2ZXJnaW5nID0ge1xuICBuYW1lOiAnVWJlciBWaXogRGl2ZXJnaW5nJyxcbiAgY2F0ZWdvcnk6IENBVEVHT1JJRVMuVUJFUixcbiAgdHlwZTogUEFMRVRURV9UWVBFUy5ESVYsXG4gIGNvbG9yczogWycjMDA5MzlDJywgJyNFNkZBRkEnXSxcbiAgY29sb3JzMjogWycjRkVFRUU4JywgJyNDMjJFMDAnXSxcbiAgZGl2ZXJnaW5nOiB0cnVlLFxuICBjb3JyZWN0TGlnaHRuZXNzOiBmYWxzZSxcbiAgY29sb3JCbGluZFNhZmU6IHRydWVcbn07XG5cbmNvbnN0IFViZXJWaXpTZXF1ZW50aWFsID0ge1xuICBuYW1lOiAnVWJlciBWaXogU2VxdWVudGlhbCcsXG4gIGNhdGVnb3J5OiBDQVRFR09SSUVTLlVCRVIsXG4gIHR5cGU6IFBBTEVUVEVfVFlQRVMuU0VRLFxuICBjb2xvcnM6IFsnIzAwOTM5QycsICcjRTZGQUZBJ10sXG4gIGNvbG9yQmxpbmRTYWZlOiB0cnVlXG59O1xuXG5jb25zdCBVYmVyUG9vbCA9IHtcbiAgbmFtZTogJ1ViZXJQb29sJyxcbiAgdHlwZTogUEFMRVRURV9UWVBFUy5ESVYsXG4gIGNhdGVnb3J5OiBDQVRFR09SSUVTLlVCRVIsXG4gIGNvbG9yczogWycjMjIzRjlBJywgJyNDRjE3NTAnLCAnI0ZBRTMwMCddLFxuICBjb3JyZWN0TGlnaHRuZXNzOiBmYWxzZSxcbiAgY29sb3JCbGluZFNhZmU6IHRydWVcbn07XG5cbmNvbnN0IEljZUFuZEZpcmUgPSB7XG4gIG5hbWU6ICdJY2UgQW5kIEZpcmUnLFxuICB0eXBlOiBQQUxFVFRFX1RZUEVTLkRJVixcbiAgY2F0ZWdvcnk6IENBVEVHT1JJRVMuVUJFUixcbiAgY29sb3JzOiBbJyMwMTk4QkQnLCAnI0ZBRkVCMyddLFxuICBjb2xvcnMyOiBbJyNGRUVEQjEnLCAnI0Q1MDI1NSddLFxuICBkaXZlcmdpbmc6IHRydWUsXG4gIGNvbG9yQmxpbmRTYWZlOiB0cnVlXG59O1xuXG5jb25zdCBHbG9iYWxXYXJtaW5nID0ge1xuICBuYW1lOiAnR2xvYmFsIFdhcm1pbmcnLFxuICB0eXBlOiBQQUxFVFRFX1RZUEVTLlNFUSxcbiAgY2F0ZWdvcnk6IENBVEVHT1JJRVMuVUJFUixcbiAgY29sb3JzOiBbJyM0QzAwMzUnLCAnI0FDMUMxNycsICcjRkZDMzAwJ10sXG4gIGNvbG9yQmxpbmRTYWZlOiB0cnVlXG59O1xuXG5jb25zdCBTdW5yaXNlID0ge1xuICBuYW1lOiAnU3VucmlzZScsXG4gIHR5cGU6IFBBTEVUVEVfVFlQRVMuU0VRLFxuICBjYXRlZ29yeTogQ0FURUdPUklFUy5VQkVSLFxuICBjb2xvcnM6IFsnIzM1NUM3RCcsICcjQzA2Qzg0JywgJyNGOEIxOTUnXSxcbiAgY29sb3JCbGluZFNhZmU6IHRydWVcbn07XG5cbmNvbnN0IE9jZWFuR3JlZW4gPSB7XG4gIG5hbWU6ICdPY2VhbiBHcmVlbicsXG4gIHR5cGU6IFBBTEVUVEVfVFlQRVMuU0VRLFxuICBjYXRlZ29yeTogQ0FURUdPUklFUy5VQkVSLFxuICBjb2xvcnM6IFsnIzM3NTM1RScsICcjM0VBQ0E4JywgJyNFNUVFQzEnXSxcbiAgY29sb3JCbGluZFNhZmU6IHRydWVcbn07XG5cbmNvbnN0IFBpbmtXaW5lID0ge1xuICBuYW1lOiAnUGluayBXaW5lJyxcbiAgdHlwZTogUEFMRVRURV9UWVBFUy5TRVEsXG4gIGNhdGVnb3J5OiBDQVRFR09SSUVTLlVCRVIsXG4gIGNvbG9yczogWycjMkMxRTNEJywgJyM5NTY0ODUnLCAnI0VERDFDQSddLFxuICBjb2xvckJsaW5kU2FmZTogdHJ1ZVxufTtcblxuY29uc3QgUHVycGxlQmx1ZVllbGxvdyA9IHtcbiAgbmFtZTogJ1B1cnBsZSBCbHVlIFllbGxvdycsXG4gIHR5cGU6IFBBTEVUVEVfVFlQRVMuU0VRLFxuICBjYXRlZ29yeTogQ0FURUdPUklFUy5VQkVSLFxuICBjb2xvcnM6IFsnIzM4M0M2NScsICcjNDk4MzhBJywgJyNENkRFQkYnXSxcbiAgbW9kZTogJ2hzbCcsXG4gIGNvbG9yQmxpbmRTYWZlOiB0cnVlXG59O1xuXG5jb25zdCBWaW92ZXRPY2VhbiA9IHtcbiAgbmFtZTogJ1Zpb3ZldE9jZWFuJyxcbiAgdHlwZTogUEFMRVRURV9UWVBFUy5TRVEsXG4gIGNhdGVnb3J5OiBDQVRFR09SSUVTLlVCRVIsXG4gIGNvbG9yczogWycjNzQwMEI4JywgJyM1RTYwQ0UnLCAnIzRFQThERScsICcjNTZDRkUxJywgJyM3MkVGREQnXSxcbiAgY29sb3JCbGluZFNhZmU6IGZhbHNlXG59O1xuXG5jb25zdCBTdW1tZXJTa3kgPSB7XG4gIG5hbWU6ICdTdW1tZXJTa3knLFxuICB0eXBlOiBQQUxFVFRFX1RZUEVTLlNFUSxcbiAgY2F0ZWdvcnk6IENBVEVHT1JJRVMuVUJFUixcbiAgY29sb3JzOiBbJyMxODRFNzcnLCAnIzE2OEFBRCcsICcjNzZDODkzJywgJyNEOUVEOTInXSxcbiAgY29sb3JCbGluZFNhZmU6IGZhbHNlXG59O1xuXG5jb25zdCBVYmVyVml6UXVhbGl0YXRpdmUgPSB7XG4gIG5hbWU6ICdVYmVyIFZpeiBRdWFsaXRhdGl2ZScsXG4gIHR5cGU6IFBBTEVUVEVfVFlQRVMuUVVBLFxuICBjYXRlZ29yeTogQ0FURUdPUklFUy5VQkVSLFxuICBjb2xvcnM6IE9iamVjdC52YWx1ZXMoRGF0YVZpekNvbG9ycyksXG4gIGNvbG9yQmxpbmRTYWZlOiBmYWxzZVxufTtcblxuLy8gaHR0cHM6Ly9wZXJzb25hbC5zcm9uLm5sL35wYXVsdC8jc2VjOnF1YWxpdGF0aXZlXG4vLyBBIHNldCBvZiBRdWFsaXRhdGl2ZSBDb2xvcnMgZGVzaWduZWQgYnkgUGF1bCBUb2wgdGhhdCBhcmUgY29sb3IgYmxpbmQgZnJpZW5kbHlcbmNvbnN0IFRvbEJyaWdodCA9IHtcbiAgbmFtZTogJ1RvbCBCcmlnaHQnLFxuICB0eXBlOiBQQUxFVFRFX1RZUEVTLlFVQSxcbiAgY2F0ZWdvcnk6IENBVEVHT1JJRVMuQ09MT1JCTElORCxcbiAgY29sb3JzOiBbJyM0NDc3QUEnLCAnI0VFNjY3NycsICcjMjI4ODMzJywgJyNDQ0JCNDQnLCAnIzY2Q0NFRScsICcjQUEzMzc3JywgJyNCQkJCQkInXSxcbiAgY29sb3JCbGluZFNhZmU6IHRydWVcbn07XG4vLyBCYWQgRGF0YTogI0JCQkJCQlxuXG5jb25zdCBUb2xWaWJyYW50ID0ge1xuICBuYW1lOiAnVG9sIFZpYnJhbnQnLFxuICB0eXBlOiBQQUxFVFRFX1RZUEVTLlFVQSxcbiAgY2F0ZWdvcnk6IENBVEVHT1JJRVMuQ09MT1JCTElORCxcbiAgY29sb3JzOiBbJyNFRTc3MzMnLCAnIzAwNzdCQicsICcjMzNCQkVFJywgJyNFRTMzNzcnLCAnI0NDMzMxMScsICcjMDA5OTg4JywgJyNCQkJCQkInXSxcbiAgY29sb3JCbGluZFNhZmU6IHRydWVcbn07XG4vLyBCYWQgRGF0YTogI0JCQkJCQlxuXG5jb25zdCBUb2xNdXRlZCA9IHtcbiAgbmFtZTogJ1RvbCBNdXRlZCcsXG4gIHR5cGU6IFBBTEVUVEVfVFlQRVMuUVVBLFxuICBjYXRlZ29yeTogQ0FURUdPUklFUy5DT0xPUkJMSU5ELFxuICBjb2xvcnM6IFtcbiAgICAnI0NDNjY3NycsXG4gICAgJyMzMzIyODgnLFxuICAgICcjRERDQzc3JyxcbiAgICAnIzExNzczMycsXG4gICAgJyM4OENDRUUnLFxuICAgICcjODgyMjU1JyxcbiAgICAnIzQ0QUE5OScsXG4gICAgJyM5OTk5MzMnLFxuICAgICcjQUE0NDk5J1xuICBdLFxuICBjb2xvckJsaW5kU2FmZTogdHJ1ZVxufTtcbi8vIEJhZCBEYXRhOiAjREREREREXG5cbmNvbnN0IFRvbE1lZGl1bUNvbnRyYXN0ID0ge1xuICBuYW1lOiAnVG9sIE1lZGl1bSBDb250cmFzdCcsXG4gIHR5cGU6IFBBTEVUVEVfVFlQRVMuUVVBLFxuICBjYXRlZ29yeTogQ0FURUdPUklFUy5DT0xPUkJMSU5ELFxuICBjb2xvcnM6IFsnIzY2OTlDQycsICcjMDA0NDg4JywgJyNFRUNDNjYnLCAnIzk5NDQ1NScsICcjOTk3NzAwJywgJyNFRTk5QUEnXSxcbiAgY29sb3JCbGluZFNhZmU6IHRydWVcbn07XG5cbmNvbnN0IFRvbExpZ2h0ID0ge1xuICBuYW1lOiAnVG9sIExpZ2h0JyxcbiAgdHlwZTogUEFMRVRURV9UWVBFUy5RVUEsXG4gIGNhdGVnb3J5OiBDQVRFR09SSUVTLkNPTE9SQkxJTkQsXG4gIGNvbG9yczogWycjNzdBQUREJywgJyNFRTg4NjYnLCAnI0VFREQ4OCcsICcjRkZBQUJCJywgJyM5OURERkYnLCAnIzQ0QkI5OScsICcjQkJDQzMzJywgJyNBQUFBMDAnXSxcbiAgY29sb3JCbGluZFNhZmU6IHRydWVcbn07XG5cbi8vIGh0dHBzOi8vamZseS51bmkta29lbG4uZGUvY29sb3IvXG5jb25zdCBPa2FiZUl0byA9IHtcbiAgbmFtZTogJ09rYWJlIEl0bycsXG4gIHR5cGU6IFBBTEVUVEVfVFlQRVMuUVVBLFxuICBjYXRlZ29yeTogQ0FURUdPUklFUy5DT0xPUkJMSU5ELFxuICBjb2xvcnM6IFsnI0U2OUYwMCcsICcjNTZCNEU5JywgJyMwMDlFNzMnLCAnI0YwRTQ0MicsICcjMDA3MkIyJywgJyNENTVFMDAnLCAnI0NDNzlBNycsICcjMDAwMDAwJ10sXG4gIGNvbG9yQmxpbmRTYWZlOiB0cnVlXG59O1xuLy8gQmFkIERhdGE6ICNERERERERcblxuLyoqXG4gKiBCdWlsZCBDYXRlZ29yaWNhbCBjb2xvciBwYWxldHRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZENhdGVnb3JpY2FsUGFsZXR0ZSh7XG4gIG5hbWUsXG4gIGNhdGVnb3J5LFxuICBjb2xvcnMsXG4gIGNvbG9yQmxpbmRTYWZlXG59OiB7XG4gIG5hbWU6IHN0cmluZztcbiAgY2F0ZWdvcnk6IFZhbHVlT2Y8dHlwZW9mIENBVEVHT1JJRVM+O1xuICBjb2xvcnM/OiBIZXhDb2xvcltdO1xuICBjb2xvckJsaW5kU2FmZT86IGJvb2xlYW47XG59KTogQ2F0ZWdvcmljYWxQYWxldHRlIHtcbiAgbGV0IGFsbENvbG9ycztcbiAgLy8gZmluZCBkMyBjb2xvciBzY2hlbWVcbiAgY29uc3Qgc2NoZW1lID0gZDNTY2FsZUNocm9tYXRpY1tgc2NoZW1lJHtuYW1lfWBdO1xuXG4gIGlmICghc2NoZW1lICYmICFjb2xvcnMpIHtcbiAgICBDb25zb2xlLndhcm4oYHNjaGVtZSR7bmFtZX0gY2FudCBub3QgYmUgZm91bmQgaW4gZDMgc2NhbGUgY2hyb21hdGljLCBuZWVkcyB0byBwcm92aWRlIGNvbG9yc2ApO1xuICAgIGFsbENvbG9ycyA9IFsnI0RERERERCddO1xuICB9IGVsc2UgaWYgKCFzY2hlbWUpIHtcbiAgICAvLyBidWlsZCBmcm9tIGNvbG9yc1xuICAgIGFsbENvbG9ycyA9IGNvbG9ycztcbiAgfSBlbHNlIHtcbiAgICBhbGxDb2xvcnMgPSBzY2hlbWU7XG4gIH1cblxuICBpZiAoIWFsbENvbG9ycy5sZW5ndGgpIHtcbiAgICBDb25zb2xlLndhcm4oJ05lZWRzIHRvIHByb3ZpZGUgdmFsaWQgZDMgY29sb3Igc2NoZW1lIG5hbWUgb3IgYW4gYXJyYXkgb2YgY29sb3JzJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5hbWUsXG4gICAgY2F0ZWdvcnksXG4gICAgdHlwZTogUEFMRVRURV9UWVBFUy5RVUEsXG4gICAgY29sb3JCbGluZFNhZmU6IGNvbG9yQmxpbmRTYWZlID8/IENPTE9SX0JMSU5EX1NBRkVfTUFQW25hbWVdLFxuICAgIG1heFN0ZXA6IGFsbENvbG9ycy5sZW5ndGgsXG4gICAgY29sb3JzOiBudW1Db2xvcnMgPT4ge1xuICAgICAgLy8gaWYgbnVtQ29sb3JzID4gbWF4U3RlcHMsICB3aWxsIHJldHVybiBhbGxDb2xvcnNcbiAgICAgIHJldHVybiBhbGxDb2xvcnMuc2xpY2UoMCwgbnVtQ29sb3JzKS5tYXAoX2NvbG9yVG9VcHBlcmNhc2UpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gX2NvbG9yVG9VcHBlcmNhc2UoYykge1xuICByZXR1cm4gZDNDb2xvcihjKS5mb3JtYXRIZXgoKS50b1VwcGVyQ2FzZSgpO1xufVxuLyoqXG4gKiBBbGwgc2VxdWFudGlhbCBwYWxldHRlIGlzIGJhc2VkIG9uIHBhbGV0dGUgaW4gZDMtc2NhbGUtY2hyb21hdGljXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZDMvZDMtc2NhbGUtY2hyb21hdGljL2Jsb2IvbWFpbi9zcmMvaW5kZXguanNcbiAqL1xuZnVuY3Rpb24gYnVpbGRTZXF1ZW50aWFsUGFsZXR0ZSh7bmFtZSwgdHlwZSwgY2F0ZWdvcnl9KSB7XG4gIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKENPTE9SX0JMSU5EX1NBRkVfTUFQLCBuYW1lKSkge1xuICAgIENvbnNvbGUud2FybihgJHtuYW1lfSBkb2VzIG5vdCBleGlzdHMgaW4gQ09MT1JfQkxJTkRfU0FGRV9NQVBgKTtcbiAgfVxuICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkM1NjYWxlQ2hyb21hdGljW2BpbnRlcnBvbGF0ZSR7bmFtZX1gXTtcblxuICByZXR1cm4ge1xuICAgIG5hbWUsXG4gICAgdHlwZSxcbiAgICBjYXRlZ29yeSxcbiAgICBjb2xvckJsaW5kU2FmZTogQ09MT1JfQkxJTkRfU0FGRV9NQVBbbmFtZV0sXG4gICAgY29sb3JzOiBudW1Db2xvcnMgPT4ge1xuICAgICAgcmV0dXJuIHJhbmdlKDAsIG51bUNvbG9ycywgMSlcbiAgICAgICAgLm1hcChkID0+IGludGVycG9sYXRvcihkIC8gKG51bUNvbG9ycyAtIDEpKSlcbiAgICAgICAgLm1hcChfY29sb3JUb1VwcGVyY2FzZSk7XG4gICAgfSxcbiAgICBsaW5lYXI6ICgpID0+IHtcbiAgICAgIHJldHVybiBpbnRlcnBvbGF0b3I7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZEN1c3RvbVBhbGV0dGUoe1xuICBjb2xvcnMsXG4gIGNvbG9yczIgPSBbXSxcbiAgY29ycmVjdExpZ2h0bmVzcyA9IHRydWUsXG4gIGJlemllciA9IGZhbHNlLFxuICBkaXZlcmdpbmcgPSBmYWxzZSxcbiAgbW9kZSA9ICdsY2gnLFxuICBuYW1lLFxuICB0eXBlLFxuICBjYXRlZ29yeSxcbiAgY29sb3JCbGluZFNhZmVcbn06IHtcbiAgY29sb3JzOiBIZXhDb2xvcltdO1xuICBjb2xvcnMyPzogSGV4Q29sb3JbXTtcbiAgY29ycmVjdExpZ2h0bmVzcz86IGJvb2xlYW47XG4gIGJlemllcj86IGJvb2xlYW47XG4gIGRpdmVyZ2luZz86IGJvb2xlYW47XG4gIG1vZGU/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogU2VxdWVudGlhbFBhbGV0dGVbJ3R5cGUnXTtcbiAgY2F0ZWdvcnk6IFZhbHVlT2Y8dHlwZW9mIENBVEVHT1JJRVM+O1xuICBjb2xvckJsaW5kU2FmZTogYm9vbGVhbjtcbn0pOiBTZXF1ZW50aWFsUGFsZXR0ZSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHBhbGV0dGU6IFNlcXVlbnRpYWxQYWxldHRlID0ge1xuICAgIG5hbWUsXG4gICAgdHlwZSxcbiAgICBjYXRlZ29yeSxcbiAgICBjb2xvckJsaW5kU2FmZSxcbiAgICBjb2xvcnM6ICgpID0+IFtdLFxuICAgIGxpbmVhcjogKCkgPT4gKCkgPT4gJydcbiAgfTtcblxuICBpZiAoIWNvbG9ycy5sZW5ndGgpIHtcbiAgICBDb25zb2xlLmVycm9yKCdjb2xvcnMgaGFzIHRvIGJlIGFuIGFycmF5IG9mIGNvbG9ycycpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHNjYWxlTGVmdCA9IGNocm9tYVxuICAgIC5zY2FsZShiZXppZXIgJiYgY29sb3JzLmxlbmd0aCA+IDEgPyBjaHJvbWEuYmV6aWVyKGNvbG9ycykgOiBjb2xvcnMpXG4gICAgLm1vZGUobW9kZSlcbiAgICAuY29ycmVjdExpZ2h0bmVzcyhjb3JyZWN0TGlnaHRuZXNzKTtcbiAgbGV0IHNjYWxlUmlnaHQ7XG4gIGxldCBzY2FsZUZ1bGw7XG4gIGlmIChkaXZlcmdpbmcpIHtcbiAgICBpZiAoIWNvbG9ycy5sZW5ndGgpIHtcbiAgICAgIENvbnNvbGUuZXJyb3IoJ2NvbG9yczIgaGFzIHRvIGJlIGFuIGFycmF5IG9mIGNvbG9ycyB3aGVuIGRpdmVyZ2luZyA9IHRydWUnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2NhbGVSaWdodCA9IGNocm9tYVxuICAgICAgLnNjYWxlKGJlemllciAmJiBjb2xvcnMyLmxlbmd0aCA+IDEgPyBjaHJvbWEuYmV6aWVyKGNvbG9yczIpIDogY29sb3JzMilcbiAgICAgIC5tb2RlKG1vZGUpXG4gICAgICAuY29ycmVjdExpZ2h0bmVzcyhjb3JyZWN0TGlnaHRuZXNzKTtcblxuICAgIHNjYWxlRnVsbCA9IGNocm9tYVxuICAgICAgLnNjYWxlKGJlemllciA/IGNocm9tYS5iZXppZXIoY29sb3JzLmNvbmNhdChjb2xvcnMyKSkgOiBjb2xvcnMuY29uY2F0KGNvbG9yczIpKVxuICAgICAgLm1vZGUobW9kZSlcbiAgICAgIC5jb3JyZWN0TGlnaHRuZXNzKGNvcnJlY3RMaWdodG5lc3MpO1xuICB9XG5cbiAgLy8gcmV0dXJuIG51bUNvbG9ycyA9PiAoc2NhbGVMZWZ0ID8gc3RlcHNMZWZ0LmNvbG9ycyhudW1Db2xvcnMpIDogW10pO1xuXG4gIC8vIGdpdmVuIG51bWJlciBvZiBjb2xvcnMgcmV0dXJuIGNvbG9yIHN0ZXBzXG4gIHBhbGV0dGUuY29sb3JzID0gbnVtQ29sb3JzID0+IHtcbiAgICBpZiAoZGl2ZXJnaW5nKSB7XG4gICAgICBjb25zdCBldmVuID0gbnVtQ29sb3JzICUgMiA9PT0gMDtcblxuICAgICAgY29uc3QgbnVtQ29sb3JzTGVmdCA9IE1hdGguY2VpbChudW1Db2xvcnMgLyAyKSArIChldmVuID8gMSA6IDApO1xuICAgICAgY29uc3QgbnVtQ29sb3JzUmlnaHQgPSBNYXRoLmNlaWwobnVtQ29sb3JzIC8gMikgKyAoZXZlbiA/IDEgOiAwKTtcblxuICAgICAgY29uc3QgY29sb3JzTGVmdCA9IHNjYWxlTGVmdCA/IHNjYWxlTGVmdC5jb2xvcnMobnVtQ29sb3JzTGVmdCkgOiBbXTtcbiAgICAgIGNvbnN0IGNvbG9yc1JpZ2h0ID0gc2NhbGVSaWdodCA/IHNjYWxlUmlnaHQuY29sb3JzKG51bUNvbG9yc1JpZ2h0KSA6IFtdO1xuICAgICAgY29uc3Qgc3RlcHMgPSAoZXZlbiA/IGNvbG9yc0xlZnQuc2xpY2UoMCwgY29sb3JzTGVmdC5sZW5ndGggLSAxKSA6IGNvbG9yc0xlZnQpXG4gICAgICAgIC5jb25jYXQoY29sb3JzUmlnaHQuc2xpY2UoMSkpXG4gICAgICAgIC5tYXAoX2NvbG9yVG9VcHBlcmNhc2UpO1xuXG4gICAgICByZXR1cm4gc3RlcHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjYWxlTGVmdCA/IHNjYWxlTGVmdC5jb2xvcnMobnVtQ29sb3JzKS5tYXAoX2NvbG9yVG9VcHBlcmNhc2UpIDogW107XG4gIH07XG5cbiAgcGFsZXR0ZS5saW5lYXIgPSAoKSA9PiB7XG4gICAgcmV0dXJuIGRpdmVyZ2luZyA/IHNjYWxlRnVsbCA6IHNjYWxlTGVmdDtcbiAgfTtcblxuICByZXR1cm4gcGFsZXR0ZTtcbn1cblxuZnVuY3Rpb24gYnVpbGRQYWxldHRlQnlTY2hlbWVHcm91cHMoXG4gIHNjaGVtZUdyb3VwczogdHlwZW9mIENPTE9SQlJFV0VSX1NDSEVNRSB8IHR5cGVvZiBEM19DT0xPUl9DSFJPTUFUSUNfU0NIRU1FLFxuICBjYXRlZ29yeTogVmFsdWVPZjx0eXBlb2YgQ0FURUdPUklFUz5cbik6IENvbG9yUGFsZXR0ZVtdIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHNjaGVtZUdyb3VwcykucmVkdWNlKChhY2N1LCBbdHlwZSwgcGFsZXR0ZXNdKSA9PiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLmFjY3UsXG4gICAgICAuLi5wYWxldHRlcy5yZWR1Y2UoKGdyb3VwLCBuYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbG9yUGFsZXR0ZSA9XG4gICAgICAgICAgdHlwZSA9PT0gUEFMRVRURV9UWVBFUy5RVUFcbiAgICAgICAgICAgID8gYnVpbGRDYXRlZ29yaWNhbFBhbGV0dGUoe25hbWUsIGNhdGVnb3J5fSlcbiAgICAgICAgICAgIDogLy8gQHRzLWlnbm9yZSBqc2RvYyBjYW50IGZpZ3VyZSBvdXQgdHlwZSBvZiAndHlwZSdcbiAgICAgICAgICAgICAgYnVpbGRTZXF1ZW50aWFsUGFsZXR0ZSh7bmFtZSwgdHlwZSwgY2F0ZWdvcnl9KTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZSB0eXBlIGlzIG5vdCBhc3NpZ25hYmxlIHRvIG5ldmVyW11cbiAgICAgICAgZ3JvdXAucHVzaChjb2xvclBhbGV0dGUpO1xuICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgICB9LCBbXSlcbiAgICBdO1xuICB9LCBbXSk7XG59XG5cbmNvbnN0IENPTE9SQlJFV0VSX1BBTEVUVEVTID0gYnVpbGRQYWxldHRlQnlTY2hlbWVHcm91cHMoQ09MT1JCUkVXRVJfU0NIRU1FLCBDQVRFR09SSUVTLkNPTE9SQlJFV0VSKTtcbmNvbnN0IEQzX0NPTE9SX1BBTEVUVEVTID0gYnVpbGRQYWxldHRlQnlTY2hlbWVHcm91cHMoRDNfQ09MT1JfQ0hST01BVElDX1NDSEVNRSwgQ0FURUdPUklFUy5EMyk7XG5jb25zdCBVQkVSX1BBTEVUVEVTOiBDb2xvclBhbGV0dGVbXSA9IFtcbiAgVWJlclZpekRpdmVyZ2luZyxcbiAgVWJlclZpelNlcXVlbnRpYWwsXG4gIFViZXJQb29sLFxuICBJY2VBbmRGaXJlLFxuICBHbG9iYWxXYXJtaW5nLFxuICBTdW5yaXNlLFxuICBPY2VhbkdyZWVuLFxuICBQaW5rV2luZSxcbiAgUHVycGxlQmx1ZVllbGxvdyxcbiAgVmlvdmV0T2NlYW4sXG4gIFN1bW1lclNreSxcbiAgVWJlclZpelF1YWxpdGF0aXZlLFxuICBUb2xCcmlnaHQsXG4gIFRvbFZpYnJhbnQsXG4gIFRvbE11dGVkLFxuICBUb2xNZWRpdW1Db250cmFzdCxcbiAgVG9sTGlnaHQsXG4gIE9rYWJlSXRvXG5dXG4gIC5tYXAocmVjaXBlID0+XG4gICAgcmVjaXBlLnR5cGUgPT09IFBBTEVUVEVfVFlQRVMuUVVBID8gYnVpbGRDYXRlZ29yaWNhbFBhbGV0dGUocmVjaXBlKSA6IGJ1aWxkQ3VzdG9tUGFsZXR0ZShyZWNpcGUpXG4gIClcbiAgLmZpbHRlcihCb29sZWFuKSBhcyBDb2xvclBhbGV0dGVbXTtcblxuZXhwb3J0IGNvbnN0IEtFUExFUl9DT0xPUl9QQUxFVFRFUzogQ29sb3JQYWxldHRlW10gPSBbXG4gIC4uLlVCRVJfUEFMRVRURVMsXG4gIC4uLkNPTE9SQlJFV0VSX1BBTEVUVEVTLFxuICAuLi5EM19DT0xPUl9QQUxFVFRFU1xuXTtcblxuLyoqXG4gKiBjcmVhdGUgY29sb3IgcmFuZ2UgZnJvbSBwYWxldHRlLCB3aXRoIHN0ZXBzIGFuZCByZXZlcnNlZCBhcyBjb25maWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yUGFsZXR0ZVRvQ29sb3JSYW5nZShcbiAgY29sb3JQYWxldHRlOiBDb2xvclBhbGV0dGUsXG4gIGNvbG9yQ29uZmlnOiB7XG4gICAgcmV2ZXJzZWQ6IGJvb2xlYW47XG4gICAgc3RlcHM6IG51bWJlcjtcbiAgfVxuKTogTWluaUNvbG9yUmFuZ2Uge1xuICBjb25zdCB7c3RlcHMsIHJldmVyc2VkfSA9IGNvbG9yQ29uZmlnO1xuICBjb25zdCBjb2xvcnMgPSBjb2xvclBhbGV0dGUuY29sb3JzKHN0ZXBzKS5zbGljZSgpO1xuICBpZiAocmV2ZXJzZWQpIHtcbiAgICBjb2xvcnMucmV2ZXJzZSgpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBjb2xvclBhbGV0dGUubmFtZSxcbiAgICB0eXBlOiBjb2xvclBhbGV0dGUudHlwZSxcbiAgICBjYXRlZ29yeTogY29sb3JQYWxldHRlLmNhdGVnb3J5LFxuICAgIGNvbG9ycyxcbiAgICAuLi4ocmV2ZXJzZWQgPyB7cmV2ZXJzZWR9IDoge30pXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxnQkFBQSxH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TSxDQUFDLENBQ2pHOztBQUVEO0FBQ0EsSUFBTUksb0JBQW9CLEdBQUc7RUFDM0I7RUFDQUMsSUFBSSxFQUFFLElBQUk7RUFDVkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsSUFBSSxFQUFFLEtBQUs7RUFDWEMsTUFBTSxFQUFFLElBQUk7RUFDWkMsTUFBTSxFQUFFLEtBQUs7RUFDYkMsUUFBUSxFQUFFLEtBQUs7RUFDZkMsTUFBTSxFQUFFLEtBQUs7RUFDYkMsS0FBSyxFQUFFLElBQUk7RUFDWEMsTUFBTSxFQUFFLElBQUk7RUFDWkMsT0FBTyxFQUFFLEtBQUs7RUFDZEMsT0FBTyxFQUFFLEtBQUs7RUFDZEMsSUFBSSxFQUFFLEtBQUs7RUFDWEMsSUFBSSxFQUFFLElBQUk7RUFDVkMsSUFBSSxFQUFFLEtBQUs7RUFDWEMsS0FBSyxFQUFFLElBQUk7RUFDWEMsSUFBSSxFQUFFLElBQUk7RUFDVkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsTUFBTSxFQUFFLElBQUk7RUFDWkMsS0FBSyxFQUFFLElBQUk7RUFDWEMsT0FBTyxFQUFFLElBQUk7RUFDYkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsTUFBTSxFQUFFLElBQUk7RUFDWkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsT0FBTyxFQUFFLElBQUk7RUFDYkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsTUFBTSxFQUFFLElBQUk7RUFDWkMsTUFBTSxFQUFFLElBQUk7RUFDWkMsTUFBTSxFQUFFLElBQUk7RUFFWjtFQUNBQyxPQUFPLEVBQUUsSUFBSTtFQUNiQyxPQUFPLEVBQUUsS0FBSztFQUNkQyxLQUFLLEVBQUUsSUFBSTtFQUNYQyxPQUFPLEVBQUUsSUFBSTtFQUNiQyxPQUFPLEVBQUUsSUFBSTtFQUNiQyxL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
@@ -0,0 +1,11 @@
1
+ import { HexColor } from '@kepler.gl/types';
2
+ declare const COLORS: {
3
+ [key: string]: HexColor;
4
+ };
5
+ export default COLORS;
6
+ export declare const ColorsByTheme: {
7
+ [theme: string]: {
8
+ [idx: string]: HexColor;
9
+ };
10
+ };
11
+ export declare const Themes: string[];