react-native-chart-kit 6.12.2 → 7.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -35
- package/dist/{BarChart.d.ts → charts/bar/BarChart.d.ts} +8 -7
- package/dist/charts/bar/BarChart.d.ts.map +1 -0
- package/dist/charts/bar/BarChart.js +161 -0
- package/dist/charts/bar/index.d.ts +3 -0
- package/dist/charts/bar/index.d.ts.map +1 -0
- package/dist/charts/bar/index.js +3 -0
- package/dist/{contribution-graph → charts/contribution-graph}/ContributionGraph.d.ts +7 -6
- package/dist/charts/contribution-graph/ContributionGraph.d.ts.map +1 -0
- package/dist/charts/contribution-graph/ContributionGraph.js +310 -0
- package/dist/charts/contribution-graph/constants.d.ts.map +1 -0
- package/dist/charts/contribution-graph/constants.js +17 -0
- package/dist/{contribution-graph/DateHelpers.d.ts → charts/contribution-graph/date.d.ts} +1 -1
- package/dist/charts/contribution-graph/date.d.ts.map +1 -0
- package/dist/charts/contribution-graph/date.js +14 -0
- package/dist/{contribution-graph → charts/contribution-graph}/index.d.ts +1 -1
- package/dist/charts/contribution-graph/index.d.ts.map +1 -0
- package/dist/charts/contribution-graph/index.js +3 -0
- package/dist/charts/line/LegendItem.d.ts +12 -0
- package/dist/charts/line/LegendItem.d.ts.map +1 -0
- package/dist/charts/line/LegendItem.js +23 -0
- package/dist/{line-chart → charts/line}/LineChart.d.ts +9 -8
- package/dist/charts/line/LineChart.d.ts.map +1 -0
- package/dist/charts/line/LineChart.js +481 -0
- package/dist/charts/line/index.d.ts.map +1 -0
- package/dist/charts/line/index.js +3 -0
- package/dist/{PieChart.d.ts → charts/pie/PieChart.d.ts} +3 -2
- package/dist/charts/pie/PieChart.d.ts.map +1 -0
- package/dist/charts/pie/PieChart.js +103 -0
- package/dist/charts/pie/index.d.ts +3 -0
- package/dist/charts/pie/index.d.ts.map +1 -0
- package/dist/charts/pie/index.js +3 -0
- package/dist/{ProgressChart.d.ts → charts/progress/ProgressChart.d.ts} +3 -2
- package/dist/charts/progress/ProgressChart.d.ts.map +1 -0
- package/dist/charts/progress/ProgressChart.js +136 -0
- package/dist/charts/progress/index.d.ts +3 -0
- package/dist/charts/progress/index.d.ts.map +1 -0
- package/dist/charts/progress/index.js +3 -0
- package/dist/{StackedBarChart.d.ts → charts/stacked-bar/StackedBarChart.d.ts} +4 -3
- package/dist/charts/stacked-bar/StackedBarChart.d.ts.map +1 -0
- package/dist/charts/stacked-bar/StackedBarChart.js +147 -0
- package/dist/charts/stacked-bar/index.d.ts +3 -0
- package/dist/charts/stacked-bar/index.d.ts.map +1 -0
- package/dist/charts/stacked-bar/index.js +3 -0
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -8
- package/dist/{AbstractChart.d.ts → shared/AbstractChart.d.ts} +80 -58
- package/dist/shared/AbstractChart.d.ts.map +1 -0
- package/dist/shared/AbstractChart.js +283 -0
- package/dist/{HelperTypes.d.ts → shared/types.d.ts} +1 -1
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +2 -0
- package/dist/shared/utils.d.ts +5 -0
- package/dist/shared/utils.d.ts.map +1 -0
- package/dist/shared/utils.js +10 -0
- package/package.json +101 -53
- package/scripts/chartkit-codemod.mjs +256 -0
- package/dist/AbstractChart.d.ts.map +0 -1
- package/dist/AbstractChart.js +0 -261
- package/dist/BarChart.d.ts.map +0 -1
- package/dist/BarChart.js +0 -159
- package/dist/HelperTypes.d.ts.map +0 -1
- package/dist/HelperTypes.js +0 -2
- package/dist/PieChart.d.ts.map +0 -1
- package/dist/PieChart.js +0 -101
- package/dist/ProgressChart.d.ts.map +0 -1
- package/dist/ProgressChart.js +0 -134
- package/dist/StackedBarChart.d.ts.map +0 -1
- package/dist/StackedBarChart.js +0 -145
- package/dist/Utils.d.ts +0 -2
- package/dist/Utils.d.ts.map +0 -1
- package/dist/Utils.js +0 -4
- package/dist/contribution-graph/ContributionGraph.d.ts.map +0 -1
- package/dist/contribution-graph/ContributionGraph.js +0 -309
- package/dist/contribution-graph/DateHelpers.d.ts.map +0 -1
- package/dist/contribution-graph/DateHelpers.js +0 -14
- package/dist/contribution-graph/constants.d.ts.map +0 -1
- package/dist/contribution-graph/constants.js +0 -17
- package/dist/contribution-graph/index.d.ts.map +0 -1
- package/dist/contribution-graph/index.js +0 -3
- package/dist/line-chart/LegendItem.d.ts +0 -11
- package/dist/line-chart/LegendItem.d.ts.map +0 -1
- package/dist/line-chart/LegendItem.js +0 -23
- package/dist/line-chart/LineChart.d.ts.map +0 -1
- package/dist/line-chart/LineChart.js +0 -459
- package/dist/line-chart/index.d.ts.map +0 -1
- package/dist/line-chart/index.js +0 -3
- /package/dist/{contribution-graph → charts/contribution-graph}/constants.d.ts +0 -0
- /package/dist/{line-chart → charts/line}/index.d.ts +0 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
if (typeof b !== "function" && b !== null)
|
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
+
extendStatics(d, b);
|
|
12
|
+
function __() { this.constructor = d; }
|
|
13
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
var __assign = (this && this.__assign) || function () {
|
|
17
|
+
__assign = Object.assign || function(t) {
|
|
18
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
19
|
+
s = arguments[i];
|
|
20
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
21
|
+
t[p] = s[p];
|
|
22
|
+
}
|
|
23
|
+
return t;
|
|
24
|
+
};
|
|
25
|
+
return __assign.apply(this, arguments);
|
|
26
|
+
};
|
|
27
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
28
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
29
|
+
if (ar || !(i in from)) {
|
|
30
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
31
|
+
ar[i] = from[i];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
35
|
+
};
|
|
36
|
+
import React, { Component } from "react";
|
|
37
|
+
import { Defs, Line, LinearGradient, Stop, Text } from "react-native-svg";
|
|
38
|
+
export var DEFAULT_X_LABELS_HEIGHT_PERCENTAGE = 0.75;
|
|
39
|
+
var nextChartId = 0;
|
|
40
|
+
var AbstractChart = /** @class */ (function (_super) {
|
|
41
|
+
__extends(AbstractChart, _super);
|
|
42
|
+
function AbstractChart() {
|
|
43
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
44
|
+
_this.chartId = nextChartId++;
|
|
45
|
+
_this.getValidData = function (data) {
|
|
46
|
+
if (data === void 0) { data = []; }
|
|
47
|
+
return data.filter(function (value) { return typeof value === "number" && isFinite(value); });
|
|
48
|
+
};
|
|
49
|
+
_this.getGradientId = function (id) {
|
|
50
|
+
return "chart-kit-".concat(_this.chartId, "-").concat(id);
|
|
51
|
+
};
|
|
52
|
+
_this.getGradientUrl = function (id) {
|
|
53
|
+
return "url(#".concat(_this.getGradientId(id), ")");
|
|
54
|
+
};
|
|
55
|
+
_this.calcScaler = function (data) {
|
|
56
|
+
var values = _this.getValidData(data);
|
|
57
|
+
if (values.length === 0) {
|
|
58
|
+
return 1;
|
|
59
|
+
}
|
|
60
|
+
if (_this.props.fromZero && _this.props.fromNumber) {
|
|
61
|
+
return (Math.max.apply(Math, __spreadArray(__spreadArray([], values, false), [_this.props.fromNumber], false)) - Math.min.apply(Math, __spreadArray(__spreadArray([], values, false), [0], false)) || 1);
|
|
62
|
+
}
|
|
63
|
+
else if (_this.props.fromZero) {
|
|
64
|
+
return Math.max.apply(Math, __spreadArray(__spreadArray([], values, false), [0], false)) - Math.min.apply(Math, __spreadArray(__spreadArray([], values, false), [0], false)) || 1;
|
|
65
|
+
}
|
|
66
|
+
else if (_this.props.fromNumber) {
|
|
67
|
+
return (Math.max.apply(Math, __spreadArray(__spreadArray([], values, false), [_this.props.fromNumber], false)) - Math.min.apply(Math, __spreadArray(__spreadArray([], values, false), [_this.props.fromNumber], false)) || 1);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
return Math.max.apply(Math, values) - Math.min.apply(Math, values) || 1;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
_this.calcBaseHeight = function (data, height) {
|
|
74
|
+
var values = _this.getValidData(data);
|
|
75
|
+
if (values.length === 0) {
|
|
76
|
+
return height;
|
|
77
|
+
}
|
|
78
|
+
var min = Math.min.apply(Math, values);
|
|
79
|
+
var max = Math.max.apply(Math, values);
|
|
80
|
+
if (min >= 0 && max >= 0) {
|
|
81
|
+
return height;
|
|
82
|
+
}
|
|
83
|
+
else if (min < 0 && max <= 0) {
|
|
84
|
+
return 0;
|
|
85
|
+
}
|
|
86
|
+
else if (min < 0 && max > 0) {
|
|
87
|
+
return (height * max) / _this.calcScaler(values);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
_this.calcHeight = function (val, data, height) {
|
|
91
|
+
if (typeof val !== "number" || !isFinite(val)) {
|
|
92
|
+
return 0;
|
|
93
|
+
}
|
|
94
|
+
var values = _this.getValidData(data);
|
|
95
|
+
if (values.length === 0) {
|
|
96
|
+
return 0;
|
|
97
|
+
}
|
|
98
|
+
var max = Math.max.apply(Math, values);
|
|
99
|
+
var min = Math.min.apply(Math, values);
|
|
100
|
+
if (min < 0 && max > 0) {
|
|
101
|
+
return height * (val / _this.calcScaler(values));
|
|
102
|
+
}
|
|
103
|
+
else if (min >= 0 && max >= 0) {
|
|
104
|
+
return _this.props.fromZero
|
|
105
|
+
? height * (val / _this.calcScaler(values))
|
|
106
|
+
: height * ((val - min) / _this.calcScaler(values));
|
|
107
|
+
}
|
|
108
|
+
else if (min < 0 && max <= 0) {
|
|
109
|
+
return _this.props.fromZero
|
|
110
|
+
? height * (val / _this.calcScaler(values))
|
|
111
|
+
: height * ((val - max) / _this.calcScaler(values));
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
_this.renderHorizontalLines = function (config) {
|
|
115
|
+
var count = config.count, width = config.width, height = config.height, paddingTop = config.paddingTop, paddingRight = config.paddingRight, _a = config.verticalLabelsHeightPercentage, verticalLabelsHeightPercentage = _a === void 0 ? DEFAULT_X_LABELS_HEIGHT_PERCENTAGE : _a;
|
|
116
|
+
var basePosition = height * verticalLabelsHeightPercentage;
|
|
117
|
+
return __spreadArray([], new Array(count + 1), true).map(function (_, i) {
|
|
118
|
+
var y = (basePosition / count) * i + paddingTop;
|
|
119
|
+
return (<Line key={"horizontal-line-".concat(i)} x1={paddingRight} y1={y} x2={width} y2={y} {..._this.getPropsForBackgroundLines()}/>);
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
_this.renderHorizontalLine = function (config) {
|
|
123
|
+
var width = config.width, height = config.height, paddingTop = config.paddingTop, paddingRight = config.paddingRight, _a = config.verticalLabelsHeightPercentage, verticalLabelsHeightPercentage = _a === void 0 ? DEFAULT_X_LABELS_HEIGHT_PERCENTAGE : _a;
|
|
124
|
+
return (<Line key="horizontal-line" x1={paddingRight} y1={height * verticalLabelsHeightPercentage + paddingTop} x2={width} y2={height * verticalLabelsHeightPercentage + paddingTop} {..._this.getPropsForBackgroundLines()}/>);
|
|
125
|
+
};
|
|
126
|
+
_this.renderHorizontalLabels = function (config) {
|
|
127
|
+
var count = config.count, data = config.data, height = config.height, paddingTop = config.paddingTop, paddingRight = config.paddingRight, _a = config.horizontalLabelRotation, horizontalLabelRotation = _a === void 0 ? 0 : _a, _b = config.decimalPlaces, decimalPlaces = _b === void 0 ? 2 : _b, _c = config.formatYLabel, formatYLabel = _c === void 0 ? function (yLabel) { return yLabel; } : _c, _d = config.verticalLabelsHeightPercentage, verticalLabelsHeightPercentage = _d === void 0 ? DEFAULT_X_LABELS_HEIGHT_PERCENTAGE : _d;
|
|
128
|
+
var values = _this.getValidData(data);
|
|
129
|
+
var labelData = values.length === 0 ? [0] : values;
|
|
130
|
+
var _e = _this.props, _f = _e.yAxisLabel, yAxisLabel = _f === void 0 ? "" : _f, _g = _e.yAxisSuffix, yAxisSuffix = _g === void 0 ? "" : _g, _h = _e.yLabelsOffset, yLabelsOffset = _h === void 0 ? 12 : _h;
|
|
131
|
+
return new Array(count === 1 ? 1 : count + 1).fill(1).map(function (_, i) {
|
|
132
|
+
var yLabel = String(i * count);
|
|
133
|
+
if (count === 1) {
|
|
134
|
+
yLabel = "".concat(yAxisLabel).concat(formatYLabel(labelData[0].toFixed(decimalPlaces))).concat(yAxisSuffix);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
var label = _this.props.fromZero
|
|
138
|
+
? (_this.calcScaler(labelData) / count) * i + Math.min.apply(Math, __spreadArray(__spreadArray([], labelData, false), [0], false))
|
|
139
|
+
: (_this.calcScaler(labelData) / count) * i + Math.min.apply(Math, labelData);
|
|
140
|
+
yLabel = "".concat(yAxisLabel).concat(formatYLabel(label.toFixed(decimalPlaces))).concat(yAxisSuffix);
|
|
141
|
+
}
|
|
142
|
+
var basePosition = height * verticalLabelsHeightPercentage;
|
|
143
|
+
var x = paddingRight - yLabelsOffset;
|
|
144
|
+
var y = count === 1 && _this.props.fromZero
|
|
145
|
+
? paddingTop + 4
|
|
146
|
+
: height * verticalLabelsHeightPercentage -
|
|
147
|
+
(basePosition / count) * i +
|
|
148
|
+
paddingTop;
|
|
149
|
+
return (<Text rotation={horizontalLabelRotation} origin={"".concat(x, ", ").concat(y)} key={"horizontal-label-".concat(i, "-").concat(yLabel)} x={x} textAnchor="end" y={y} {..._this.getPropsForLabels()} {..._this.getPropsForHorizontalLabels()}>
|
|
150
|
+
{yLabel}
|
|
151
|
+
</Text>);
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
_this.renderVerticalLabels = function (_a) {
|
|
155
|
+
var _b = _a.labels, labels = _b === void 0 ? [] : _b, width = _a.width, height = _a.height, paddingRight = _a.paddingRight, paddingTop = _a.paddingTop, _c = _a.horizontalOffset, horizontalOffset = _c === void 0 ? 0 : _c, xAxisIntervalCount = _a.xAxisIntervalCount, _d = _a.stackedBar, stackedBar = _d === void 0 ? false : _d, _e = _a.verticalLabelRotation, verticalLabelRotation = _e === void 0 ? 0 : _e, _f = _a.formatXLabel, formatXLabel = _f === void 0 ? function (xLabel) { return xLabel; } : _f, _g = _a.verticalLabelsHeightPercentage, verticalLabelsHeightPercentage = _g === void 0 ? DEFAULT_X_LABELS_HEIGHT_PERCENTAGE : _g;
|
|
156
|
+
var _h = _this.props, _j = _h.xAxisLabel, xAxisLabel = _j === void 0 ? "" : _j, _k = _h.xLabelsOffset, xLabelsOffset = _k === void 0 ? 0 : _k, _l = _h.hidePointsAtIndex, hidePointsAtIndex = _l === void 0 ? [] : _l;
|
|
157
|
+
var fontSize = 12;
|
|
158
|
+
var fac = 1;
|
|
159
|
+
if (stackedBar) {
|
|
160
|
+
fac = 0.71;
|
|
161
|
+
}
|
|
162
|
+
var labelIntervalCount = xAxisIntervalCount !== null && xAxisIntervalCount !== void 0 ? xAxisIntervalCount : labels.length;
|
|
163
|
+
var xAxisDivisor = Math.max(labelIntervalCount, 1);
|
|
164
|
+
return labels.map(function (label, i) {
|
|
165
|
+
if (hidePointsAtIndex.includes(i)) {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
var isLastLabel = i === labels.length - 1;
|
|
169
|
+
var labelText = "".concat(formatXLabel(label)).concat(xAxisLabel);
|
|
170
|
+
var x = (((width - paddingRight) / xAxisDivisor) * i +
|
|
171
|
+
paddingRight +
|
|
172
|
+
horizontalOffset) *
|
|
173
|
+
fac;
|
|
174
|
+
var rotatedLabelRightOverflow = labelText.length *
|
|
175
|
+
fontSize *
|
|
176
|
+
0.62 *
|
|
177
|
+
Math.cos((Math.abs(verticalLabelRotation) * Math.PI) / 180);
|
|
178
|
+
var labelX = isLastLabel && i > 0 && verticalLabelRotation !== 0
|
|
179
|
+
? Math.min(x, width - rotatedLabelRightOverflow - 4)
|
|
180
|
+
: x;
|
|
181
|
+
var y = height * verticalLabelsHeightPercentage +
|
|
182
|
+
paddingTop +
|
|
183
|
+
fontSize * 2 +
|
|
184
|
+
xLabelsOffset;
|
|
185
|
+
return (<Text origin={"".concat(labelX, ", ").concat(y)} rotation={verticalLabelRotation} key={"vertical-label-".concat(i, "-").concat(label)} x={labelX} y={y} textAnchor={isLastLabel &&
|
|
186
|
+
i > 0 &&
|
|
187
|
+
xAxisIntervalCount !== undefined &&
|
|
188
|
+
verticalLabelRotation === 0
|
|
189
|
+
? "end"
|
|
190
|
+
: verticalLabelRotation === 0
|
|
191
|
+
? "middle"
|
|
192
|
+
: "start"} {..._this.getPropsForLabels()} {..._this.getPropsForVerticalLabels()}>
|
|
193
|
+
{labelText}
|
|
194
|
+
</Text>);
|
|
195
|
+
});
|
|
196
|
+
};
|
|
197
|
+
_this.renderVerticalLines = function (_a) {
|
|
198
|
+
var data = _a.data, width = _a.width, height = _a.height, paddingTop = _a.paddingTop, paddingRight = _a.paddingRight, xAxisIntervalCount = _a.xAxisIntervalCount, _b = _a.verticalLabelsHeightPercentage, verticalLabelsHeightPercentage = _b === void 0 ? DEFAULT_X_LABELS_HEIGHT_PERCENTAGE : _b;
|
|
199
|
+
var _c = _this.props.yAxisInterval, yAxisInterval = _c === void 0 ? 1 : _c;
|
|
200
|
+
var lineCount = Math.ceil(data.length / yAxisInterval);
|
|
201
|
+
var verticalLineStep = xAxisIntervalCount === undefined
|
|
202
|
+
? (width - paddingRight) / (data.length / yAxisInterval)
|
|
203
|
+
: ((width - paddingRight) / Math.max(xAxisIntervalCount, 1)) *
|
|
204
|
+
yAxisInterval;
|
|
205
|
+
return __spreadArray([], new Array(lineCount), true).map(function (_, i) {
|
|
206
|
+
var x = Math.floor(verticalLineStep * i + paddingRight);
|
|
207
|
+
return (<Line key={"vertical-line-".concat(i)} x1={x} y1={0} x2={x} y2={height * verticalLabelsHeightPercentage + paddingTop} {..._this.getPropsForBackgroundLines()}/>);
|
|
208
|
+
});
|
|
209
|
+
};
|
|
210
|
+
_this.renderVerticalLine = function (_a) {
|
|
211
|
+
var height = _a.height, paddingTop = _a.paddingTop, paddingRight = _a.paddingRight, _b = _a.verticalLabelsHeightPercentage, verticalLabelsHeightPercentage = _b === void 0 ? DEFAULT_X_LABELS_HEIGHT_PERCENTAGE : _b;
|
|
212
|
+
return (<Line key="vertical-line" x1={Math.floor(paddingRight)} y1={0} x2={Math.floor(paddingRight)} y2={height * verticalLabelsHeightPercentage + paddingTop} {..._this.getPropsForBackgroundLines()}/>);
|
|
213
|
+
};
|
|
214
|
+
_this.renderDefs = function (config) {
|
|
215
|
+
var width = config.width, height = config.height, backgroundGradientFrom = config.backgroundGradientFrom, backgroundGradientTo = config.backgroundGradientTo, useShadowColorFromDataset = config.useShadowColorFromDataset, data = config.data;
|
|
216
|
+
var fromOpacity = config.hasOwnProperty("backgroundGradientFromOpacity")
|
|
217
|
+
? config.backgroundGradientFromOpacity
|
|
218
|
+
: 1.0;
|
|
219
|
+
var toOpacity = config.hasOwnProperty("backgroundGradientToOpacity")
|
|
220
|
+
? config.backgroundGradientToOpacity
|
|
221
|
+
: 1.0;
|
|
222
|
+
var fillShadowGradient = config.hasOwnProperty("fillShadowGradient")
|
|
223
|
+
? config.fillShadowGradient
|
|
224
|
+
: _this.props.chartConfig.color(1.0);
|
|
225
|
+
var fillShadowGradientOpacity = config.hasOwnProperty("fillShadowGradientOpacity")
|
|
226
|
+
? config.fillShadowGradientOpacity
|
|
227
|
+
: 0.1;
|
|
228
|
+
var fillShadowGradientFrom = config.hasOwnProperty("fillShadowGradientFrom")
|
|
229
|
+
? config.fillShadowGradientFrom
|
|
230
|
+
: fillShadowGradient;
|
|
231
|
+
var fillShadowGradientFromOpacity = config.hasOwnProperty("fillShadowGradientFromOpacity")
|
|
232
|
+
? config.fillShadowGradientFromOpacity
|
|
233
|
+
: fillShadowGradientOpacity;
|
|
234
|
+
var fillShadowGradientFromOffset = config.hasOwnProperty("fillShadowGradientFromOffset")
|
|
235
|
+
? config.fillShadowGradientFromOffset
|
|
236
|
+
: 0;
|
|
237
|
+
var fillShadowGradientTo = config.hasOwnProperty("fillShadowGradientTo")
|
|
238
|
+
? config.fillShadowGradientTo
|
|
239
|
+
: _this.props.chartConfig.color(1.0);
|
|
240
|
+
var fillShadowGradientToOpacity = config.hasOwnProperty("fillShadowGradientToOpacity")
|
|
241
|
+
? config.fillShadowGradientToOpacity
|
|
242
|
+
: 0.1;
|
|
243
|
+
var fillShadowGradientToOffset = config.hasOwnProperty("fillShadowGradientToOffset")
|
|
244
|
+
? config.fillShadowGradientToOffset
|
|
245
|
+
: 1;
|
|
246
|
+
return (<Defs>
|
|
247
|
+
<LinearGradient id={_this.getGradientId("backgroundGradient")} x1={0} y1={height} x2={width} y2={0} gradientUnits="userSpaceOnUse">
|
|
248
|
+
<Stop offset="0" stopColor={backgroundGradientFrom} stopOpacity={fromOpacity}/>
|
|
249
|
+
<Stop offset="1" stopColor={backgroundGradientTo} stopOpacity={toOpacity}/>
|
|
250
|
+
</LinearGradient>
|
|
251
|
+
{useShadowColorFromDataset && data ? (data.map(function (dataset, index) { return (<LinearGradient id={_this.getGradientId("fillShadowGradientFrom_".concat(index))} key={"".concat(index)} x1={0} y1={0} x2={0} y2={height} gradientUnits="userSpaceOnUse">
|
|
252
|
+
<Stop offset={fillShadowGradientFromOffset} stopColor={dataset.color ? dataset.color(1.0) : fillShadowGradientFrom} stopOpacity={fillShadowGradientFromOpacity}/>
|
|
253
|
+
<Stop offset={fillShadowGradientToOffset} stopColor={dataset.color
|
|
254
|
+
? dataset.color(fillShadowGradientFromOpacity)
|
|
255
|
+
: fillShadowGradientFrom} stopOpacity={fillShadowGradientToOpacity || 0}/>
|
|
256
|
+
</LinearGradient>); })) : (<LinearGradient id={_this.getGradientId("fillShadowGradientFrom")} x1={0} y1={0} x2={0} y2={height} gradientUnits="userSpaceOnUse">
|
|
257
|
+
<Stop offset={fillShadowGradientFromOffset} stopColor={fillShadowGradientFrom} stopOpacity={fillShadowGradientFromOpacity}/>
|
|
258
|
+
<Stop offset={fillShadowGradientToOffset} stopColor={fillShadowGradientTo || fillShadowGradientFrom} stopOpacity={fillShadowGradientToOpacity || 0}/>
|
|
259
|
+
</LinearGradient>)}
|
|
260
|
+
</Defs>);
|
|
261
|
+
};
|
|
262
|
+
return _this;
|
|
263
|
+
}
|
|
264
|
+
AbstractChart.prototype.getPropsForBackgroundLines = function () {
|
|
265
|
+
var _a = this.props.chartConfig.propsForBackgroundLines, propsForBackgroundLines = _a === void 0 ? {} : _a;
|
|
266
|
+
return __assign({ stroke: this.props.chartConfig.color(0.2), strokeDasharray: "5, 10", strokeWidth: 1 }, propsForBackgroundLines);
|
|
267
|
+
};
|
|
268
|
+
AbstractChart.prototype.getPropsForLabels = function () {
|
|
269
|
+
var _a = this.props.chartConfig, _b = _a.propsForLabels, propsForLabels = _b === void 0 ? {} : _b, color = _a.color, _c = _a.labelColor, labelColor = _c === void 0 ? color : _c;
|
|
270
|
+
return __assign({ fontSize: 12, fill: labelColor(0.8) }, propsForLabels);
|
|
271
|
+
};
|
|
272
|
+
AbstractChart.prototype.getPropsForVerticalLabels = function () {
|
|
273
|
+
var _a = this.props.chartConfig, _b = _a.propsForVerticalLabels, propsForVerticalLabels = _b === void 0 ? {} : _b, color = _a.color, _c = _a.labelColor, labelColor = _c === void 0 ? color : _c;
|
|
274
|
+
return __assign({ fill: labelColor(0.8) }, propsForVerticalLabels);
|
|
275
|
+
};
|
|
276
|
+
AbstractChart.prototype.getPropsForHorizontalLabels = function () {
|
|
277
|
+
var _a = this.props.chartConfig, _b = _a.propsForHorizontalLabels, propsForHorizontalLabels = _b === void 0 ? {} : _b, color = _a.color, _c = _a.labelColor, labelColor = _c === void 0 ? color : _c;
|
|
278
|
+
return __assign({ fill: labelColor(0.8) }, propsForHorizontalLabels);
|
|
279
|
+
};
|
|
280
|
+
return AbstractChart;
|
|
281
|
+
}(Component));
|
|
282
|
+
export default AbstractChart;
|
|
283
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RDaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGFyZWQvQWJzdHJhY3RDaGFydC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN6QyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBc0MxRSxNQUFNLENBQUMsSUFBTSxrQ0FBa0MsR0FBRyxJQUFJLENBQUM7QUFFdkQsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBRXBCO0lBR1UsaUNBQW1FO0lBSDdFOztRQUlVLGFBQU8sR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUV0QixrQkFBWSxHQUFHLFVBQUMsSUFBbUI7WUFBbkIscUJBQUEsRUFBQSxTQUFtQjtZQUMzQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBQyxLQUFLLElBQUssT0FBQSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUE1QyxDQUE0QyxDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDO1FBRVEsbUJBQWEsR0FBRyxVQUFDLEVBQVU7WUFDbkMsT0FBTyxvQkFBYSxLQUFJLENBQUMsT0FBTyxjQUFJLEVBQUUsQ0FBRSxDQUFDO1FBQzNDLENBQUMsQ0FBQztRQUVRLG9CQUFjLEdBQUcsVUFBQyxFQUFVO1lBQ3BDLE9BQU8sZUFBUSxLQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxNQUFHLENBQUM7UUFDM0MsQ0FBQyxDQUFDO1FBRUYsZ0JBQVUsR0FBRyxVQUFDLElBQWM7WUFDMUIsSUFBTSxNQUFNLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV2QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztZQUVELElBQUksS0FBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDakQsT0FBTyxDQUNMLElBQUksQ0FBQyxHQUFHLE9BQVIsSUFBSSxrQ0FBUSxNQUFNLFdBQUUsS0FBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLGFBQUksSUFBSSxDQUFDLEdBQUcsT0FBUixJQUFJLGtDQUFRLE1BQU0sV0FBRSxDQUFDLFVBQUMsSUFBSSxDQUFDLENBQ3pFLENBQUM7WUFDSixDQUFDO2lCQUFNLElBQUksS0FBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxJQUFJLENBQUMsR0FBRyxPQUFSLElBQUksa0NBQVEsTUFBTSxXQUFFLENBQUMsYUFBSSxJQUFJLENBQUMsR0FBRyxPQUFSLElBQUksa0NBQVEsTUFBTSxXQUFFLENBQUMsVUFBQyxJQUFJLENBQUMsQ0FBQztZQUM5RCxDQUFDO2lCQUFNLElBQUksS0FBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxDQUNMLElBQUksQ0FBQyxHQUFHLE9BQVIsSUFBSSxrQ0FBUSxNQUFNLFdBQUUsS0FBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLGFBQ3ZDLElBQUksQ0FBQyxHQUFHLE9BQVIsSUFBSSxrQ0FBUSxNQUFNLFdBQUUsS0FBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLFVBQUMsSUFBSSxDQUFDLENBQ2xELENBQUM7WUFDSixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxJQUFJLENBQUMsR0FBRyxPQUFSLElBQUksRUFBUSxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsT0FBUixJQUFJLEVBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hELENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixvQkFBYyxHQUFHLFVBQUMsSUFBYyxFQUFFLE1BQWM7WUFDOUMsSUFBTSxNQUFNLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV2QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxPQUFSLElBQUksRUFBUSxNQUFNLENBQUMsQ0FBQztZQUNoQyxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxPQUFSLElBQUksRUFBUSxNQUFNLENBQUMsQ0FBQztZQUNoQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN6QixPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO2lCQUFNLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztpQkFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5QixPQUFPLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLGdCQUFVLEdBQUcsVUFBQyxHQUFXLEVBQUUsSUFBYyxFQUFFLE1BQWM7WUFDdkQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDO1lBRUQsSUFBTSxNQUFNLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV2QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztZQUVELElBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLE9BQVIsSUFBSSxFQUFRLE1BQU0sQ0FBQyxDQUFDO1lBQ2hDLElBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLE9BQVIsSUFBSSxFQUFRLE1BQU0sQ0FBQyxDQUFDO1lBRWhDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sTUFBTSxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNsRCxDQUFDO2lCQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sS0FBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO29CQUN4QixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxLQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDdkQsQ0FBQztpQkFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUMvQixPQUFPLEtBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtvQkFDeEIsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsR0FBRyxLQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUMxQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7UUFDSCxDQUFDLENBQUM7UUFpREYsMkJBQXFCLEdBQUcsVUFBQyxNQUFNO1lBRTNCLElBQUEsS0FBSyxHQU1ILE1BQU0sTUFOSCxFQUNMLEtBQUssR0FLSCxNQUFNLE1BTEgsRUFDTCxNQUFNLEdBSUosTUFBTSxPQUpGLEVBQ04sVUFBVSxHQUdSLE1BQU0sV0FIRSxFQUNWLFlBQVksR0FFVixNQUFNLGFBRkksRUFDWixLQUNFLE1BQU0sK0JBRDJELEVBQW5FLDhCQUE4QixtQkFBRyxrQ0FBa0MsS0FBQSxDQUMxRDtZQUNYLElBQU0sWUFBWSxHQUFHLE1BQU0sR0FBRyw4QkFBOEIsQ0FBQztZQUU3RCxPQUFPLGtCQUFJLElBQUksS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsUUFBRSxHQUFHLENBQUMsVUFBQyxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsSUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztnQkFDbEQsT0FBTyxDQUNMLENBQUMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLDBCQUFtQixDQUFDLENBQUUsQ0FBQyxDQUM1QixFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FDakIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ04sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQ1YsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ04sSUFBSSxLQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxFQUN0QyxDQUNILENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUVGLDBCQUFvQixHQUFHLFVBQUMsTUFBTTtZQUUxQixJQUFBLEtBQUssR0FLSCxNQUFNLE1BTEgsRUFDTCxNQUFNLEdBSUosTUFBTSxPQUpGLEVBQ04sVUFBVSxHQUdSLE1BQU0sV0FIRSxFQUNWLFlBQVksR0FFVixNQUFNLGFBRkksRUFDWixLQUNFLE1BQU0sK0JBRDJELEVBQW5FLDhCQUE4QixtQkFBRyxrQ0FBa0MsS0FBQSxDQUMxRDtZQUNYLE9BQU8sQ0FDTCxDQUFDLElBQUksQ0FDSCxHQUFHLENBQUMsaUJBQWlCLENBQ3JCLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUNqQixFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsOEJBQThCLEdBQUcsVUFBVSxDQUFDLENBQ3pELEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUNWLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyw4QkFBOEIsR0FBRyxVQUFVLENBQUMsQ0FDekQsSUFBSSxLQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxFQUN0QyxDQUNILENBQUM7UUFDSixDQUFDLENBQUM7UUFFRiw0QkFBc0IsR0FBRyxVQUN2QixNQUE4RDtZQUc1RCxJQUFBLEtBQUssR0FTSCxNQUFNLE1BVEgsRUFDTCxJQUFJLEdBUUYsTUFBTSxLQVJKLEVBQ0osTUFBTSxHQU9KLE1BQU0sT0FQRixFQUNOLFVBQVUsR0FNUixNQUFNLFdBTkUsRUFDVixZQUFZLEdBS1YsTUFBTSxhQUxJLEVBQ1osS0FJRSxNQUFNLHdCQUptQixFQUEzQix1QkFBdUIsbUJBQUcsQ0FBQyxLQUFBLEVBQzNCLEtBR0UsTUFBTSxjQUhTLEVBQWpCLGFBQWEsbUJBQUcsQ0FBQyxLQUFBLEVBQ2pCLEtBRUUsTUFBTSxhQUZpQyxFQUF6QyxZQUFZLG1CQUFHLFVBQUMsTUFBYyxJQUFLLE9BQUEsTUFBTSxFQUFOLENBQU0sS0FBQSxFQUN6QyxLQUNFLE1BQU0sK0JBRDJELEVBQW5FLDhCQUE4QixtQkFBRyxrQ0FBa0MsS0FBQSxDQUMxRDtZQUNYLElBQU0sTUFBTSxHQUFHLEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsSUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUUvQyxJQUFBLEtBSUYsS0FBSSxDQUFDLEtBQUssRUFIWixrQkFBZSxFQUFmLFVBQVUsbUJBQUcsRUFBRSxLQUFBLEVBQ2YsbUJBQWdCLEVBQWhCLFdBQVcsbUJBQUcsRUFBRSxLQUFBLEVBQ2hCLHFCQUFrQixFQUFsQixhQUFhLG1CQUFHLEVBQUUsS0FDTixDQUFDO1lBQ2YsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzdELElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7Z0JBRS9CLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNoQixNQUFNLEdBQUcsVUFBRyxVQUFVLFNBQUcsWUFBWSxDQUNuQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUNwQyxTQUFHLFdBQVcsQ0FBRSxDQUFDO2dCQUNwQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBTSxLQUFLLEdBQUcsS0FBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO3dCQUMvQixDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxPQUFSLElBQUksa0NBQVEsU0FBUyxXQUFFLENBQUMsVUFBQzt3QkFDdEUsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsT0FBUixJQUFJLEVBQVEsU0FBUyxDQUFDLENBQUM7b0JBQ3RFLE1BQU0sR0FBRyxVQUFHLFVBQVUsU0FBRyxZQUFZLENBQ25DLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQzdCLFNBQUcsV0FBVyxDQUFFLENBQUM7Z0JBQ3BCLENBQUM7Z0JBRUQsSUFBTSxZQUFZLEdBQUcsTUFBTSxHQUFHLDhCQUE4QixDQUFDO2dCQUM3RCxJQUFNLENBQUMsR0FBRyxZQUFZLEdBQUcsYUFBYSxDQUFDO2dCQUN2QyxJQUFNLENBQUMsR0FDTCxLQUFLLEtBQUssQ0FBQyxJQUFJLEtBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtvQkFDaEMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDO29CQUNoQixDQUFDLENBQUMsTUFBTSxHQUFHLDhCQUE4Qjt3QkFDdkMsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQzt3QkFDMUIsVUFBVSxDQUFDO2dCQUNqQixPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQ0gsUUFBUSxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FDbEMsTUFBTSxDQUFDLENBQUMsVUFBRyxDQUFDLGVBQUssQ0FBQyxDQUFFLENBQUMsQ0FDckIsR0FBRyxDQUFDLENBQUMsMkJBQW9CLENBQUMsY0FBSSxNQUFNLENBQUUsQ0FBQyxDQUN2QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDTCxVQUFVLENBQUMsS0FBSyxDQUNoQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDTCxJQUFJLEtBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQzdCLElBQUksS0FBSSxDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FFdkM7VUFBQSxDQUFDLE1BQU0sQ0FDVDtRQUFBLEVBQUUsSUFBSSxDQUFDLENBQ1IsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsMEJBQW9CLEdBQUcsVUFBQyxFQXlCdkI7Z0JBeEJDLGNBQVcsRUFBWCxNQUFNLG1CQUFHLEVBQUUsS0FBQSxFQUNYLEtBQUssV0FBQSxFQUNMLE1BQU0sWUFBQSxFQUNOLFlBQVksa0JBQUEsRUFDWixVQUFVLGdCQUFBLEVBQ1Ysd0JBQW9CLEVBQXBCLGdCQUFnQixtQkFBRyxDQUFDLEtBQUEsRUFDcEIsa0JBQWtCLHdCQUFBLEVBQ2xCLGtCQUFrQixFQUFsQixVQUFVLG1CQUFHLEtBQUssS0FBQSxFQUNsQiw2QkFBeUIsRUFBekIscUJBQXFCLG1CQUFHLENBQUMsS0FBQSxFQUN6QixvQkFBaUMsRUFBakMsWUFBWSxtQkFBRyxVQUFDLE1BQU0sSUFBSyxPQUFBLE1BQU0sRUFBTixDQUFNLEtBQUEsRUFDakMsc0NBQW1FLEVBQW5FLDhCQUE4QixtQkFBRyxrQ0FBa0MsS0FBQTtZQWU3RCxJQUFBLEtBSUYsS0FBSSxDQUFDLEtBQUssRUFIWixrQkFBZSxFQUFmLFVBQVUsbUJBQUcsRUFBRSxLQUFBLEVBQ2YscUJBQWlCLEVBQWpCLGFBQWEsbUJBQUcsQ0FBQyxLQUFBLEVBQ2pCLHlCQUFzQixFQUF0QixpQkFBaUIsbUJBQUcsRUFBRSxLQUNWLENBQUM7WUFFZixJQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFFcEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ1osSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQ2IsQ0FBQztZQUNELElBQU0sa0JBQWtCLEdBQUcsa0JBQWtCLGFBQWxCLGtCQUFrQixjQUFsQixrQkFBa0IsR0FBSSxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQy9ELElBQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFckQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2xDLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBRUQsSUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QyxJQUFNLFNBQVMsR0FBRyxVQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsU0FBRyxVQUFVLENBQUUsQ0FBQztnQkFDeEQsSUFBTSxDQUFDLEdBQ0wsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUM7b0JBQzFDLFlBQVk7b0JBQ1osZ0JBQWdCLENBQUM7b0JBQ25CLEdBQUcsQ0FBQztnQkFDTixJQUFNLHlCQUF5QixHQUM3QixTQUFTLENBQUMsTUFBTTtvQkFDaEIsUUFBUTtvQkFDUixJQUFJO29CQUNKLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUM5RCxJQUFNLE1BQU0sR0FDVixXQUFXLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxxQkFBcUIsS0FBSyxDQUFDO29CQUNqRCxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLHlCQUF5QixHQUFHLENBQUMsQ0FBQztvQkFDcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFUixJQUFNLENBQUMsR0FDTCxNQUFNLEdBQUcsOEJBQThCO29CQUN2QyxVQUFVO29CQUNWLFFBQVEsR0FBRyxDQUFDO29CQUNaLGFBQWEsQ0FBQztnQkFFaEIsT0FBTyxDQUNMLENBQUMsSUFBSSxDQUNILE1BQU0sQ0FBQyxDQUFDLFVBQUcsTUFBTSxlQUFLLENBQUMsQ0FBRSxDQUFDLENBQzFCLFFBQVEsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQ2hDLEdBQUcsQ0FBQyxDQUFDLHlCQUFrQixDQUFDLGNBQUksS0FBSyxDQUFFLENBQUMsQ0FDcEMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ0wsVUFBVSxDQUFDLENBQ1QsV0FBVzt3QkFDWCxDQUFDLEdBQUcsQ0FBQzt3QkFDTCxrQkFBa0IsS0FBSyxTQUFTO3dCQUNoQyxxQkFBcUIsS0FBSyxDQUFDO3dCQUN6QixDQUFDLENBQUMsS0FBSzt3QkFDUCxDQUFDLENBQUMscUJBQXFCLEtBQUssQ0FBQzs0QkFDM0IsQ0FBQyxDQUFDLFFBQVE7NEJBQ1YsQ0FBQyxDQUFDLE9BQ1IsQ0FBQyxDQUNELElBQUksS0FBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FDN0IsSUFBSSxLQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUVyQztVQUFBLENBQUMsU0FBUyxDQUNaO1FBQUEsRUFBRSxJQUFJLENBQUMsQ0FDUixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRix5QkFBbUIsR0FBRyxVQUFDLEVBb0JEO2dCQW5CcEIsSUFBSSxVQUFBLEVBQ0osS0FBSyxXQUFBLEVBQ0wsTUFBTSxZQUFBLEVBQ04sVUFBVSxnQkFBQSxFQUNWLFlBQVksa0JBQUEsRUFDWixrQkFBa0Isd0JBQUEsRUFDbEIsc0NBQW1FLEVBQW5FLDhCQUE4QixtQkFBRyxrQ0FBa0MsS0FBQTtZQWMzRCxJQUFBLEtBQXNCLEtBQUksQ0FBQyxLQUFLLGNBQWYsRUFBakIsYUFBYSxtQkFBRyxDQUFDLEtBQUEsQ0FBZ0I7WUFDekMsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDO1lBQ3pELElBQU0sZ0JBQWdCLEdBQ3BCLGtCQUFrQixLQUFLLFNBQVM7Z0JBQzlCLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDO2dCQUN4RCxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUMxRCxhQUFhLENBQUM7WUFFcEIsT0FBTyxrQkFBSSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBRSxHQUFHLENBQUMsVUFBQyxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUM7Z0JBQzFELE9BQU8sQ0FDTCxDQUFDLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyx3QkFBaUIsQ0FBQyxDQUFFLENBQUMsQ0FDMUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ04sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ04sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ04sRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLDhCQUE4QixHQUFHLFVBQVUsQ0FBQyxDQUN6RCxJQUFJLEtBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDLEVBQ3RDLENBQ0gsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsd0JBQWtCLEdBQUcsVUFBQyxFQVFyQjtnQkFQQyxNQUFNLFlBQUEsRUFDTixVQUFVLGdCQUFBLEVBQ1YsWUFBWSxrQkFBQSxFQUNaLHNDQUFtRSxFQUFuRSw4QkFBOEIsbUJBQUcsa0NBQWtDLEtBQUE7WUFJL0QsT0FBQSxDQUNKLENBQUMsSUFBSSxDQUNILEdBQUcsQ0FBQyxlQUFlLENBQ25CLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FDN0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ04sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUM3QixFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsOEJBQThCLEdBQUcsVUFBVSxDQUFDLENBQ3pELElBQUksS0FBSSxDQUFDLDBCQUEwQixFQUFFLENBQUMsRUFDdEMsQ0FDSDtRQVRLLENBU0wsQ0FBQztRQUVGLGdCQUFVLEdBQUcsVUFDWCxNQThCQztZQUdDLElBQUEsS0FBSyxHQU1ILE1BQU0sTUFOSCxFQUNMLE1BQU0sR0FLSixNQUFNLE9BTEYsRUFDTixzQkFBc0IsR0FJcEIsTUFBTSx1QkFKYyxFQUN0QixvQkFBb0IsR0FHbEIsTUFBTSxxQkFIWSxFQUNwQix5QkFBeUIsR0FFdkIsTUFBTSwwQkFGaUIsRUFDekIsSUFBSSxHQUNGLE1BQU0sS0FESixDQUNLO1lBRVgsSUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQywrQkFBK0IsQ0FBQztnQkFDeEUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyw2QkFBNkI7Z0JBQ3RDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDUixJQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLDZCQUE2QixDQUFDO2dCQUNwRSxDQUFDLENBQUMsTUFBTSxDQUFDLDJCQUEyQjtnQkFDcEMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUVSLElBQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDcEUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0I7Z0JBQzNCLENBQUMsQ0FBQyxLQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFdEMsSUFBTSx5QkFBeUIsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUNyRCwyQkFBMkIsQ0FDNUI7Z0JBQ0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUI7Z0JBQ2xDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFFUixJQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQ2xELHdCQUF3QixDQUN6QjtnQkFDQyxDQUFDLENBQUMsTUFBTSxDQUFDLHNCQUFzQjtnQkFDL0IsQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1lBRXZCLElBQU0sNkJBQTZCLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FDekQsK0JBQStCLENBQ2hDO2dCQUNDLENBQUMsQ0FBQyxNQUFNLENBQUMsNkJBQTZCO2dCQUN0QyxDQUFDLENBQUMseUJBQXlCLENBQUM7WUFFOUIsSUFBTSw0QkFBNEIsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUN4RCw4QkFBOEIsQ0FDL0I7Z0JBQ0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyw0QkFBNEI7Z0JBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFTixJQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUM7Z0JBQ3hFLENBQUMsQ0FBQyxNQUFNLENBQUMsb0JBQW9CO2dCQUM3QixDQUFDLENBQUMsS0FBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXRDLElBQU0sMkJBQTJCLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FDdkQsNkJBQTZCLENBQzlCO2dCQUNDLENBQUMsQ0FBQyxNQUFNLENBQUMsMkJBQTJCO2dCQUNwQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBRVIsSUFBTSwwQkFBMEIsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUN0RCw0QkFBNEIsQ0FDN0I7Z0JBQ0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQywwQkFBMEI7Z0JBQ25DLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFTixPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQ0g7UUFBQSxDQUFDLGNBQWMsQ0FDYixFQUFFLENBQUMsQ0FBQyxLQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FDN0MsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ04sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQ1gsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQ1YsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ04sYUFBYSxDQUFDLGdCQUFnQixDQUU5QjtVQUFBLENBQUMsSUFBSSxDQUNILE1BQU0sQ0FBQyxHQUFHLENBQ1YsU0FBUyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FDbEMsV0FBVyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBRTNCO1VBQUEsQ0FBQyxJQUFJLENBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FDVixTQUFTLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUNoQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFFM0I7UUFBQSxFQUFFLGNBQWMsQ0FDaEI7UUFBQSxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFDLE9BQU8sRUFBRSxLQUFLLElBQUssT0FBQSxDQUMzQixDQUFDLGNBQWMsQ0FDYixFQUFFLENBQUMsQ0FBQyxLQUFJLENBQUMsYUFBYSxDQUFDLGlDQUEwQixLQUFLLENBQUUsQ0FBQyxDQUFDLENBQzFELEdBQUcsQ0FBQyxDQUFDLFVBQUcsS0FBSyxDQUFFLENBQUMsQ0FDaEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ04sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ04sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ04sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQ1gsYUFBYSxDQUFDLGdCQUFnQixDQUU5QjtjQUFBLENBQUMsSUFBSSxDQUNILE1BQU0sQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQ3JDLFNBQVMsQ0FBQyxDQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUN2QyxDQUFDLENBQ0QsV0FBVyxDQUFDLENBQUMsNkJBQTZCLENBQUMsRUFFN0M7Y0FBQSxDQUFDLElBQUksQ0FDSCxNQUFNLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUNuQyxTQUFTLENBQUMsQ0FDUixPQUFPLENBQUMsS0FBSzt3QkFDWCxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQzt3QkFDOUMsQ0FBQyxDQUFDLHNCQUNOLENBQUMsQ0FDRCxXQUFXLENBQUMsQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsRUFFbEQ7WUFBQSxFQUFFLGNBQWMsQ0FBQyxDQUNsQixFQTNCNEIsQ0EyQjVCLENBQUMsQ0FDSCxDQUFDLENBQUMsQ0FBQyxDQUNGLENBQUMsY0FBYyxDQUNiLEVBQUUsQ0FBQyxDQUFDLEtBQUksQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUNqRCxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDTixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDTixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDTixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDWCxhQUFhLENBQUMsZ0JBQWdCLENBRTlCO1lBQUEsQ0FBQyxJQUFJLENBQ0gsTUFBTSxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FDckMsU0FBUyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FDbEMsV0FBVyxDQUFDLENBQUMsNkJBQTZCLENBQUMsRUFFN0M7WUFBQSxDQUFDLElBQUksQ0FDSCxNQUFNLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUNuQyxTQUFTLENBQUMsQ0FBQyxvQkFBb0IsSUFBSSxzQkFBc0IsQ0FBQyxDQUMxRCxXQUFXLENBQUMsQ0FBQywyQkFBMkIsSUFBSSxDQUFDLENBQUMsRUFFbEQ7VUFBQSxFQUFFLGNBQWMsQ0FBQyxDQUNsQixDQUNIO01BQUEsRUFBRSxJQUFJLENBQUMsQ0FDUixDQUFDO1FBQ0osQ0FBQyxDQUFDOztJQUNKLENBQUM7SUFqZUMsa0RBQTBCLEdBQTFCO1FBQ1UsSUFBQSxLQUFpQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsd0JBQTNCLEVBQTVCLHVCQUF1QixtQkFBRyxFQUFFLEtBQUEsQ0FBNEI7UUFDaEUsa0JBQ0UsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFDekMsZUFBZSxFQUFFLE9BQU8sRUFDeEIsV0FBVyxFQUFFLENBQUMsSUFDWCx1QkFBdUIsRUFDMUI7SUFDSixDQUFDO0lBRUQseUNBQWlCLEdBQWpCO1FBQ1EsSUFBQSxLQUlGLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUh4QixzQkFBbUIsRUFBbkIsY0FBYyxtQkFBRyxFQUFFLEtBQUEsRUFDbkIsS0FBSyxXQUFBLEVBQ0wsa0JBQWtCLEVBQWxCLFVBQVUsbUJBQUcsS0FBSyxLQUNNLENBQUM7UUFDM0Isa0JBQ0UsUUFBUSxFQUFFLEVBQUUsRUFDWixJQUFJLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUNsQixjQUFjLEVBQ2pCO0lBQ0osQ0FBQztJQUVELGlEQUF5QixHQUF6QjtRQUNRLElBQUEsS0FJRixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFIeEIsOEJBQTJCLEVBQTNCLHNCQUFzQixtQkFBRyxFQUFFLEtBQUEsRUFDM0IsS0FBSyxXQUFBLEVBQ0wsa0JBQWtCLEVBQWxCLFVBQVUsbUJBQUcsS0FBSyxLQUNNLENBQUM7UUFDM0Isa0JBQ0UsSUFBSSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFDbEIsc0JBQXNCLEVBQ3pCO0lBQ0osQ0FBQztJQUVELG1EQUEyQixHQUEzQjtRQUNRLElBQUEsS0FJRixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFIeEIsZ0NBQTZCLEVBQTdCLHdCQUF3QixtQkFBRyxFQUFFLEtBQUEsRUFDN0IsS0FBSyxXQUFBLEVBQ0wsa0JBQWtCLEVBQWxCLFVBQVUsbUJBQUcsS0FBSyxLQUNNLENBQUM7UUFDM0Isa0JBQ0UsSUFBSSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFDbEIsd0JBQXdCLEVBQzNCO0lBQ0osQ0FBQztJQW9iSCxvQkFBQztBQUFELENBQUMsQUF2akJELENBR1UsU0FBUyxHQW9qQmxCO0FBRUQsZUFBZSxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBEZWZzLCBMaW5lLCBMaW5lYXJHcmFkaWVudCwgU3RvcCwgVGV4dCB9IGZyb20gXCJyZWFjdC1uYXRpdmUtc3ZnXCI7XG5cbmltcG9ydCB7IENoYXJ0Q29uZmlnLCBEYXRhc2V0LCBQYXJ0aWFsQnkgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0Q2hhcnRQcm9wcyB7XG4gIGZyb21aZXJvPzogYm9vbGVhbjtcbiAgZnJvbU51bWJlcj86IG51bWJlcjtcbiAgY2hhcnRDb25maWc/OiBBYnN0cmFjdENoYXJ0Q29uZmlnO1xuICB5QXhpc0xhYmVsPzogc3RyaW5nO1xuICB5QXhpc1N1ZmZpeD86IHN0cmluZztcbiAgeUxhYmVsc09mZnNldD86IG51bWJlcjtcbiAgeUF4aXNJbnRlcnZhbD86IG51bWJlcjtcbiAgeEF4aXNMYWJlbD86IHN0cmluZztcbiAgeExhYmVsc09mZnNldD86IG51bWJlcjtcbiAgaGlkZVBvaW50c0F0SW5kZXg/OiBudW1iZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBYnN0cmFjdENoYXJ0Q29uZmlnIGV4dGVuZHMgQ2hhcnRDb25maWcge1xuICBjb3VudD86IG51bWJlcjtcbiAgZGF0YT86IERhdGFzZXRbXTtcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgcGFkZGluZ1RvcD86IG51bWJlcjtcbiAgcGFkZGluZ1JpZ2h0PzogbnVtYmVyO1xuICBob3Jpem9udGFsTGFiZWxSb3RhdGlvbj86IG51bWJlcjtcbiAgZm9ybWF0WUxhYmVsPzogKHlMYWJlbDogc3RyaW5nKSA9PiBzdHJpbmc7XG4gIGxhYmVscz86IHN0cmluZ1tdO1xuICBob3Jpem9udGFsT2Zmc2V0PzogbnVtYmVyO1xuICB4QXhpc0ludGVydmFsQ291bnQ/OiBudW1iZXI7XG4gIHN0YWNrZWRCYXI/OiBib29sZWFuO1xuICB2ZXJ0aWNhbExhYmVsUm90YXRpb24/OiBudW1iZXI7XG4gIGZvcm1hdFhMYWJlbD86ICh4TGFiZWw6IHN0cmluZykgPT4gc3RyaW5nO1xuICB2ZXJ0aWNhbExhYmVsc0hlaWdodFBlcmNlbnRhZ2U/OiBudW1iZXI7XG4gIGZvcm1hdFRvcEJhclZhbHVlPzogKHRvcEJhclZhbHVlOiBudW1iZXIpID0+IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgQWJzdHJhY3RDaGFydFN0YXRlID0ge307XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1hfTEFCRUxTX0hFSUdIVF9QRVJDRU5UQUdFID0gMC43NTtcblxubGV0IG5leHRDaGFydElkID0gMDtcblxuY2xhc3MgQWJzdHJhY3RDaGFydDxcbiAgSVByb3BzIGV4dGVuZHMgQWJzdHJhY3RDaGFydFByb3BzLFxuICBJU3RhdGUgZXh0ZW5kcyBBYnN0cmFjdENoYXJ0U3RhdGVcbj4gZXh0ZW5kcyBDb21wb25lbnQ8QWJzdHJhY3RDaGFydFByb3BzICYgSVByb3BzLCBBYnN0cmFjdENoYXJ0U3RhdGUgJiBJU3RhdGU+IHtcbiAgcHJpdmF0ZSBjaGFydElkID0gbmV4dENoYXJ0SWQrKztcblxuICBwcm90ZWN0ZWQgZ2V0VmFsaWREYXRhID0gKGRhdGE6IG51bWJlcltdID0gW10pID0+IHtcbiAgICByZXR1cm4gZGF0YS5maWx0ZXIoKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiYgaXNGaW5pdGUodmFsdWUpKTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgZ2V0R3JhZGllbnRJZCA9IChpZDogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIGBjaGFydC1raXQtJHt0aGlzLmNoYXJ0SWR9LSR7aWR9YDtcbiAgfTtcblxuICBwcm90ZWN0ZWQgZ2V0R3JhZGllbnRVcmwgPSAoaWQ6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBgdXJsKCMke3RoaXMuZ2V0R3JhZGllbnRJZChpZCl9KWA7XG4gIH07XG5cbiAgY2FsY1NjYWxlciA9IChkYXRhOiBudW1iZXJbXSkgPT4ge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZ2V0VmFsaWREYXRhKGRhdGEpO1xuXG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLmZyb21aZXJvICYmIHRoaXMucHJvcHMuZnJvbU51bWJlcikge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgTWF0aC5tYXgoLi4udmFsdWVzLCB0aGlzLnByb3BzLmZyb21OdW1iZXIpIC0gTWF0aC5taW4oLi4udmFsdWVzLCAwKSB8fCAxXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5mcm9tWmVybykge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KC4uLnZhbHVlcywgMCkgLSBNYXRoLm1pbiguLi52YWx1ZXMsIDApIHx8IDE7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLmZyb21OdW1iZXIpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIE1hdGgubWF4KC4uLnZhbHVlcywgdGhpcy5wcm9wcy5mcm9tTnVtYmVyKSAtXG4gICAgICAgICAgTWF0aC5taW4oLi4udmFsdWVzLCB0aGlzLnByb3BzLmZyb21OdW1iZXIpIHx8IDFcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBNYXRoLm1heCguLi52YWx1ZXMpIC0gTWF0aC5taW4oLi4udmFsdWVzKSB8fCAxO1xuICAgIH1cbiAgfTtcblxuICBjYWxjQmFzZUhlaWdodCA9IChkYXRhOiBudW1iZXJbXSwgaGVpZ2h0OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmdldFZhbGlkRGF0YShkYXRhKTtcblxuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gaGVpZ2h0O1xuICAgIH1cblxuICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKC4uLnZhbHVlcyk7XG4gICAgY29uc3QgbWF4ID0gTWF0aC5tYXgoLi4udmFsdWVzKTtcbiAgICBpZiAobWluID49IDAgJiYgbWF4ID49IDApIHtcbiAgICAgIHJldHVybiBoZWlnaHQ7XG4gICAgfSBlbHNlIGlmIChtaW4gPCAwICYmIG1heCA8PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGVsc2UgaWYgKG1pbiA8IDAgJiYgbWF4ID4gMCkge1xuICAgICAgcmV0dXJuIChoZWlnaHQgKiBtYXgpIC8gdGhpcy5jYWxjU2NhbGVyKHZhbHVlcyk7XG4gICAgfVxuICB9O1xuXG4gIGNhbGNIZWlnaHQgPSAodmFsOiBudW1iZXIsIGRhdGE6IG51bWJlcltdLCBoZWlnaHQ6IG51bWJlcikgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsICE9PSBcIm51bWJlclwiIHx8ICFpc0Zpbml0ZSh2YWwpKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmdldFZhbGlkRGF0YShkYXRhKTtcblxuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBtYXggPSBNYXRoLm1heCguLi52YWx1ZXMpO1xuICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKC4uLnZhbHVlcyk7XG5cbiAgICBpZiAobWluIDwgMCAmJiBtYXggPiAwKSB7XG4gICAgICByZXR1cm4gaGVpZ2h0ICogKHZhbCAvIHRoaXMuY2FsY1NjYWxlcih2YWx1ZXMpKTtcbiAgICB9IGVsc2UgaWYgKG1pbiA+PSAwICYmIG1heCA+PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5mcm9tWmVyb1xuICAgICAgICA/IGhlaWdodCAqICh2YWwgLyB0aGlzLmNhbGNTY2FsZXIodmFsdWVzKSlcbiAgICAgICAgOiBoZWlnaHQgKiAoKHZhbCAtIG1pbikgLyB0aGlzLmNhbGNTY2FsZXIodmFsdWVzKSk7XG4gICAgfSBlbHNlIGlmIChtaW4gPCAwICYmIG1heCA8PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5mcm9tWmVyb1xuICAgICAgICA/IGhlaWdodCAqICh2YWwgLyB0aGlzLmNhbGNTY2FsZXIodmFsdWVzKSlcbiAgICAgICAgOiBoZWlnaHQgKiAoKHZhbCAtIG1heCkgLyB0aGlzLmNhbGNTY2FsZXIodmFsdWVzKSk7XG4gICAgfVxuICB9O1xuXG4gIGdldFByb3BzRm9yQmFja2dyb3VuZExpbmVzKCkge1xuICAgIGNvbnN0IHsgcHJvcHNGb3JCYWNrZ3JvdW5kTGluZXMgPSB7fSB9ID0gdGhpcy5wcm9wcy5jaGFydENvbmZpZztcbiAgICByZXR1cm4ge1xuICAgICAgc3Ryb2tlOiB0aGlzLnByb3BzLmNoYXJ0Q29uZmlnLmNvbG9yKDAuMiksXG4gICAgICBzdHJva2VEYXNoYXJyYXk6IFwiNSwgMTBcIixcbiAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgLi4ucHJvcHNGb3JCYWNrZ3JvdW5kTGluZXNcbiAgICB9O1xuICB9XG5cbiAgZ2V0UHJvcHNGb3JMYWJlbHMoKSB7XG4gICAgY29uc3Qge1xuICAgICAgcHJvcHNGb3JMYWJlbHMgPSB7fSxcbiAgICAgIGNvbG9yLFxuICAgICAgbGFiZWxDb2xvciA9IGNvbG9yXG4gICAgfSA9IHRoaXMucHJvcHMuY2hhcnRDb25maWc7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgIGZpbGw6IGxhYmVsQ29sb3IoMC44KSxcbiAgICAgIC4uLnByb3BzRm9yTGFiZWxzXG4gICAgfTtcbiAgfVxuXG4gIGdldFByb3BzRm9yVmVydGljYWxMYWJlbHMoKSB7XG4gICAgY29uc3Qge1xuICAgICAgcHJvcHNGb3JWZXJ0aWNhbExhYmVscyA9IHt9LFxuICAgICAgY29sb3IsXG4gICAgICBsYWJlbENvbG9yID0gY29sb3JcbiAgICB9ID0gdGhpcy5wcm9wcy5jaGFydENvbmZpZztcbiAgICByZXR1cm4ge1xuICAgICAgZmlsbDogbGFiZWxDb2xvcigwLjgpLFxuICAgICAgLi4ucHJvcHNGb3JWZXJ0aWNhbExhYmVsc1xuICAgIH07XG4gIH1cblxuICBnZXRQcm9wc0Zvckhvcml6b250YWxMYWJlbHMoKSB7XG4gICAgY29uc3Qge1xuICAgICAgcHJvcHNGb3JIb3Jpem9udGFsTGFiZWxzID0ge30sXG4gICAgICBjb2xvcixcbiAgICAgIGxhYmVsQ29sb3IgPSBjb2xvclxuICAgIH0gPSB0aGlzLnByb3BzLmNoYXJ0Q29uZmlnO1xuICAgIHJldHVybiB7XG4gICAgICBmaWxsOiBsYWJlbENvbG9yKDAuOCksXG4gICAgICAuLi5wcm9wc0Zvckhvcml6b250YWxMYWJlbHNcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVySG9yaXpvbnRhbExpbmVzID0gKGNvbmZpZykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGNvdW50LFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHQsXG4gICAgICBwYWRkaW5nVG9wLFxuICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgdmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlID0gREVGQVVMVF9YX0xBQkVMU19IRUlHSFRfUEVSQ0VOVEFHRVxuICAgIH0gPSBjb25maWc7XG4gICAgY29uc3QgYmFzZVBvc2l0aW9uID0gaGVpZ2h0ICogdmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlO1xuXG4gICAgcmV0dXJuIFsuLi5uZXcgQXJyYXkoY291bnQgKyAxKV0ubWFwKChfLCBpKSA9PiB7XG4gICAgICBjb25zdCB5ID0gKGJhc2VQb3NpdGlvbiAvIGNvdW50KSAqIGkgKyBwYWRkaW5nVG9wO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPExpbmVcbiAgICAgICAgICBrZXk9e2Bob3Jpem9udGFsLWxpbmUtJHtpfWB9XG4gICAgICAgICAgeDE9e3BhZGRpbmdSaWdodH1cbiAgICAgICAgICB5MT17eX1cbiAgICAgICAgICB4Mj17d2lkdGh9XG4gICAgICAgICAgeTI9e3l9XG4gICAgICAgICAgey4uLnRoaXMuZ2V0UHJvcHNGb3JCYWNrZ3JvdW5kTGluZXMoKX1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmVuZGVySG9yaXpvbnRhbExpbmUgPSAoY29uZmlnKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHQsXG4gICAgICBwYWRkaW5nVG9wLFxuICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgdmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlID0gREVGQVVMVF9YX0xBQkVMU19IRUlHSFRfUEVSQ0VOVEFHRVxuICAgIH0gPSBjb25maWc7XG4gICAgcmV0dXJuIChcbiAgICAgIDxMaW5lXG4gICAgICAgIGtleT1cImhvcml6b250YWwtbGluZVwiXG4gICAgICAgIHgxPXtwYWRkaW5nUmlnaHR9XG4gICAgICAgIHkxPXtoZWlnaHQgKiB2ZXJ0aWNhbExhYmVsc0hlaWdodFBlcmNlbnRhZ2UgKyBwYWRkaW5nVG9wfVxuICAgICAgICB4Mj17d2lkdGh9XG4gICAgICAgIHkyPXtoZWlnaHQgKiB2ZXJ0aWNhbExhYmVsc0hlaWdodFBlcmNlbnRhZ2UgKyBwYWRkaW5nVG9wfVxuICAgICAgICB7Li4udGhpcy5nZXRQcm9wc0ZvckJhY2tncm91bmRMaW5lcygpfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIHJlbmRlckhvcml6b250YWxMYWJlbHMgPSAoXG4gICAgY29uZmlnOiBPbWl0PEFic3RyYWN0Q2hhcnRDb25maWcsIFwiZGF0YVwiPiAmIHsgZGF0YTogbnVtYmVyW10gfVxuICApID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBjb3VudCxcbiAgICAgIGRhdGEsXG4gICAgICBoZWlnaHQsXG4gICAgICBwYWRkaW5nVG9wLFxuICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgaG9yaXpvbnRhbExhYmVsUm90YXRpb24gPSAwLFxuICAgICAgZGVjaW1hbFBsYWNlcyA9IDIsXG4gICAgICBmb3JtYXRZTGFiZWwgPSAoeUxhYmVsOiBzdHJpbmcpID0+IHlMYWJlbCxcbiAgICAgIHZlcnRpY2FsTGFiZWxzSGVpZ2h0UGVyY2VudGFnZSA9IERFRkFVTFRfWF9MQUJFTFNfSEVJR0hUX1BFUkNFTlRBR0VcbiAgICB9ID0gY29uZmlnO1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZ2V0VmFsaWREYXRhKGRhdGEpO1xuICAgIGNvbnN0IGxhYmVsRGF0YSA9IHZhbHVlcy5sZW5ndGggPT09IDAgPyBbMF0gOiB2YWx1ZXM7XG5cbiAgICBjb25zdCB7XG4gICAgICB5QXhpc0xhYmVsID0gXCJcIixcbiAgICAgIHlBeGlzU3VmZml4ID0gXCJcIixcbiAgICAgIHlMYWJlbHNPZmZzZXQgPSAxMlxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiBuZXcgQXJyYXkoY291bnQgPT09IDEgPyAxIDogY291bnQgKyAxKS5maWxsKDEpLm1hcCgoXywgaSkgPT4ge1xuICAgICAgbGV0IHlMYWJlbCA9IFN0cmluZyhpICogY291bnQpO1xuXG4gICAgICBpZiAoY291bnQgPT09IDEpIHtcbiAgICAgICAgeUxhYmVsID0gYCR7eUF4aXNMYWJlbH0ke2Zvcm1hdFlMYWJlbChcbiAgICAgICAgICBsYWJlbERhdGFbMF0udG9GaXhlZChkZWNpbWFsUGxhY2VzKVxuICAgICAgICApfSR7eUF4aXNTdWZmaXh9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5wcm9wcy5mcm9tWmVyb1xuICAgICAgICAgID8gKHRoaXMuY2FsY1NjYWxlcihsYWJlbERhdGEpIC8gY291bnQpICogaSArIE1hdGgubWluKC4uLmxhYmVsRGF0YSwgMClcbiAgICAgICAgICA6ICh0aGlzLmNhbGNTY2FsZXIobGFiZWxEYXRhKSAvIGNvdW50KSAqIGkgKyBNYXRoLm1pbiguLi5sYWJlbERhdGEpO1xuICAgICAgICB5TGFiZWwgPSBgJHt5QXhpc0xhYmVsfSR7Zm9ybWF0WUxhYmVsKFxuICAgICAgICAgIGxhYmVsLnRvRml4ZWQoZGVjaW1hbFBsYWNlcylcbiAgICAgICAgKX0ke3lBeGlzU3VmZml4fWA7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJhc2VQb3NpdGlvbiA9IGhlaWdodCAqIHZlcnRpY2FsTGFiZWxzSGVpZ2h0UGVyY2VudGFnZTtcbiAgICAgIGNvbnN0IHggPSBwYWRkaW5nUmlnaHQgLSB5TGFiZWxzT2Zmc2V0O1xuICAgICAgY29uc3QgeSA9XG4gICAgICAgIGNvdW50ID09PSAxICYmIHRoaXMucHJvcHMuZnJvbVplcm9cbiAgICAgICAgICA/IHBhZGRpbmdUb3AgKyA0XG4gICAgICAgICAgOiBoZWlnaHQgKiB2ZXJ0aWNhbExhYmVsc0hlaWdodFBlcmNlbnRhZ2UgLVxuICAgICAgICAgICAgKGJhc2VQb3NpdGlvbiAvIGNvdW50KSAqIGkgK1xuICAgICAgICAgICAgcGFkZGluZ1RvcDtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUZXh0XG4gICAgICAgICAgcm90YXRpb249e2hvcml6b250YWxMYWJlbFJvdGF0aW9ufVxuICAgICAgICAgIG9yaWdpbj17YCR7eH0sICR7eX1gfVxuICAgICAgICAgIGtleT17YGhvcml6b250YWwtbGFiZWwtJHtpfS0ke3lMYWJlbH1gfVxuICAgICAgICAgIHg9e3h9XG4gICAgICAgICAgdGV4dEFuY2hvcj1cImVuZFwiXG4gICAgICAgICAgeT17eX1cbiAgICAgICAgICB7Li4udGhpcy5nZXRQcm9wc0ZvckxhYmVscygpfVxuICAgICAgICAgIHsuLi50aGlzLmdldFByb3BzRm9ySG9yaXpvbnRhbExhYmVscygpfVxuICAgICAgICA+XG4gICAgICAgICAge3lMYWJlbH1cbiAgICAgICAgPC9UZXh0PlxuICAgICAgKTtcbiAgICB9KTtcbiAgfTtcblxuICByZW5kZXJWZXJ0aWNhbExhYmVscyA9ICh7XG4gICAgbGFiZWxzID0gW10sXG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHBhZGRpbmdSaWdodCxcbiAgICBwYWRkaW5nVG9wLFxuICAgIGhvcml6b250YWxPZmZzZXQgPSAwLFxuICAgIHhBeGlzSW50ZXJ2YWxDb3VudCxcbiAgICBzdGFja2VkQmFyID0gZmFsc2UsXG4gICAgdmVydGljYWxMYWJlbFJvdGF0aW9uID0gMCxcbiAgICBmb3JtYXRYTGFiZWwgPSAoeExhYmVsKSA9PiB4TGFiZWwsXG4gICAgdmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlID0gREVGQVVMVF9YX0xBQkVMU19IRUlHSFRfUEVSQ0VOVEFHRVxuICB9OiBQaWNrPFxuICAgIEFic3RyYWN0Q2hhcnRDb25maWcsXG4gICAgfCBcImxhYmVsc1wiXG4gICAgfCBcIndpZHRoXCJcbiAgICB8IFwiaGVpZ2h0XCJcbiAgICB8IFwicGFkZGluZ1JpZ2h0XCJcbiAgICB8IFwicGFkZGluZ1RvcFwiXG4gICAgfCBcImhvcml6b250YWxPZmZzZXRcIlxuICAgIHwgXCJ4QXhpc0ludGVydmFsQ291bnRcIlxuICAgIHwgXCJzdGFja2VkQmFyXCJcbiAgICB8IFwidmVydGljYWxMYWJlbFJvdGF0aW9uXCJcbiAgICB8IFwiZm9ybWF0WExhYmVsXCJcbiAgICB8IFwidmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlXCJcbiAgPikgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHhBeGlzTGFiZWwgPSBcIlwiLFxuICAgICAgeExhYmVsc09mZnNldCA9IDAsXG4gICAgICBoaWRlUG9pbnRzQXRJbmRleCA9IFtdXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCBmb250U2l6ZSA9IDEyO1xuXG4gICAgbGV0IGZhYyA9IDE7XG4gICAgaWYgKHN0YWNrZWRCYXIpIHtcbiAgICAgIGZhYyA9IDAuNzE7XG4gICAgfVxuICAgIGNvbnN0IGxhYmVsSW50ZXJ2YWxDb3VudCA9IHhBeGlzSW50ZXJ2YWxDb3VudCA/PyBsYWJlbHMubGVuZ3RoO1xuICAgIGNvbnN0IHhBeGlzRGl2aXNvciA9IE1hdGgubWF4KGxhYmVsSW50ZXJ2YWxDb3VudCwgMSk7XG5cbiAgICByZXR1cm4gbGFiZWxzLm1hcCgobGFiZWwsIGkpID0+IHtcbiAgICAgIGlmIChoaWRlUG9pbnRzQXRJbmRleC5pbmNsdWRlcyhpKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNMYXN0TGFiZWwgPSBpID09PSBsYWJlbHMubGVuZ3RoIC0gMTtcbiAgICAgIGNvbnN0IGxhYmVsVGV4dCA9IGAke2Zvcm1hdFhMYWJlbChsYWJlbCl9JHt4QXhpc0xhYmVsfWA7XG4gICAgICBjb25zdCB4ID1cbiAgICAgICAgKCgod2lkdGggLSBwYWRkaW5nUmlnaHQpIC8geEF4aXNEaXZpc29yKSAqIGkgK1xuICAgICAgICAgIHBhZGRpbmdSaWdodCArXG4gICAgICAgICAgaG9yaXpvbnRhbE9mZnNldCkgKlxuICAgICAgICBmYWM7XG4gICAgICBjb25zdCByb3RhdGVkTGFiZWxSaWdodE92ZXJmbG93ID1cbiAgICAgICAgbGFiZWxUZXh0Lmxlbmd0aCAqXG4gICAgICAgIGZvbnRTaXplICpcbiAgICAgICAgMC42MiAqXG4gICAgICAgIE1hdGguY29zKChNYXRoLmFicyh2ZXJ0aWNhbExhYmVsUm90YXRpb24pICogTWF0aC5QSSkgLyAxODApO1xuICAgICAgY29uc3QgbGFiZWxYID1cbiAgICAgICAgaXNMYXN0TGFiZWwgJiYgaSA+IDAgJiYgdmVydGljYWxMYWJlbFJvdGF0aW9uICE9PSAwXG4gICAgICAgICAgPyBNYXRoLm1pbih4LCB3aWR0aCAtIHJvdGF0ZWRMYWJlbFJpZ2h0T3ZlcmZsb3cgLSA0KVxuICAgICAgICAgIDogeDtcblxuICAgICAgY29uc3QgeSA9XG4gICAgICAgIGhlaWdodCAqIHZlcnRpY2FsTGFiZWxzSGVpZ2h0UGVyY2VudGFnZSArXG4gICAgICAgIHBhZGRpbmdUb3AgK1xuICAgICAgICBmb250U2l6ZSAqIDIgK1xuICAgICAgICB4TGFiZWxzT2Zmc2V0O1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VGV4dFxuICAgICAgICAgIG9yaWdpbj17YCR7bGFiZWxYfSwgJHt5fWB9XG4gICAgICAgICAgcm90YXRpb249e3ZlcnRpY2FsTGFiZWxSb3RhdGlvbn1cbiAgICAgICAgICBrZXk9e2B2ZXJ0aWNhbC1sYWJlbC0ke2l9LSR7bGFiZWx9YH1cbiAgICAgICAgICB4PXtsYWJlbFh9XG4gICAgICAgICAgeT17eX1cbiAgICAgICAgICB0ZXh0QW5jaG9yPXtcbiAgICAgICAgICAgIGlzTGFzdExhYmVsICYmXG4gICAgICAgICAgICBpID4gMCAmJlxuICAgICAgICAgICAgeEF4aXNJbnRlcnZhbENvdW50ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIHZlcnRpY2FsTGFiZWxSb3RhdGlvbiA9PT0gMFxuICAgICAgICAgICAgICA/IFwiZW5kXCJcbiAgICAgICAgICAgICAgOiB2ZXJ0aWNhbExhYmVsUm90YXRpb24gPT09IDBcbiAgICAgICAgICAgICAgICA/IFwibWlkZGxlXCJcbiAgICAgICAgICAgICAgICA6IFwic3RhcnRcIlxuICAgICAgICAgIH1cbiAgICAgICAgICB7Li4udGhpcy5nZXRQcm9wc0ZvckxhYmVscygpfVxuICAgICAgICAgIHsuLi50aGlzLmdldFByb3BzRm9yVmVydGljYWxMYWJlbHMoKX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbFRleHR9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgICk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmVuZGVyVmVydGljYWxMaW5lcyA9ICh7XG4gICAgZGF0YSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgcGFkZGluZ1RvcCxcbiAgICBwYWRkaW5nUmlnaHQsXG4gICAgeEF4aXNJbnRlcnZhbENvdW50LFxuICAgIHZlcnRpY2FsTGFiZWxzSGVpZ2h0UGVyY2VudGFnZSA9IERFRkFVTFRfWF9MQUJFTFNfSEVJR0hUX1BFUkNFTlRBR0VcbiAgfTogT21pdDxcbiAgICBQaWNrPFxuICAgICAgQWJzdHJhY3RDaGFydENvbmZpZyxcbiAgICAgIHwgXCJkYXRhXCJcbiAgICAgIHwgXCJ3aWR0aFwiXG4gICAgICB8IFwiaGVpZ2h0XCJcbiAgICAgIHwgXCJwYWRkaW5nUmlnaHRcIlxuICAgICAgfCBcInBhZGRpbmdUb3BcIlxuICAgICAgfCBcInhBeGlzSW50ZXJ2YWxDb3VudFwiXG4gICAgICB8IFwidmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlXCJcbiAgICA+LFxuICAgIFwiZGF0YVwiXG4gID4gJiB7IGRhdGE6IG51bWJlcltdIH0pID0+IHtcbiAgICBjb25zdCB7IHlBeGlzSW50ZXJ2YWwgPSAxIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGxpbmVDb3VudCA9IE1hdGguY2VpbChkYXRhLmxlbmd0aCAvIHlBeGlzSW50ZXJ2YWwpO1xuICAgIGNvbnN0IHZlcnRpY2FsTGluZVN0ZXAgPVxuICAgICAgeEF4aXNJbnRlcnZhbENvdW50ID09PSB1bmRlZmluZWRcbiAgICAgICAgPyAod2lkdGggLSBwYWRkaW5nUmlnaHQpIC8gKGRhdGEubGVuZ3RoIC8geUF4aXNJbnRlcnZhbClcbiAgICAgICAgOiAoKHdpZHRoIC0gcGFkZGluZ1JpZ2h0KSAvIE1hdGgubWF4KHhBeGlzSW50ZXJ2YWxDb3VudCwgMSkpICpcbiAgICAgICAgICB5QXhpc0ludGVydmFsO1xuXG4gICAgcmV0dXJuIFsuLi5uZXcgQXJyYXkobGluZUNvdW50KV0ubWFwKChfLCBpKSA9PiB7XG4gICAgICBjb25zdCB4ID0gTWF0aC5mbG9vcih2ZXJ0aWNhbExpbmVTdGVwICogaSArIHBhZGRpbmdSaWdodCk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8TGluZVxuICAgICAgICAgIGtleT17YHZlcnRpY2FsLWxpbmUtJHtpfWB9XG4gICAgICAgICAgeDE9e3h9XG4gICAgICAgICAgeTE9ezB9XG4gICAgICAgICAgeDI9e3h9XG4gICAgICAgICAgeTI9e2hlaWdodCAqIHZlcnRpY2FsTGFiZWxzSGVpZ2h0UGVyY2VudGFnZSArIHBhZGRpbmdUb3B9XG4gICAgICAgICAgey4uLnRoaXMuZ2V0UHJvcHNGb3JCYWNrZ3JvdW5kTGluZXMoKX1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmVuZGVyVmVydGljYWxMaW5lID0gKHtcbiAgICBoZWlnaHQsXG4gICAgcGFkZGluZ1RvcCxcbiAgICBwYWRkaW5nUmlnaHQsXG4gICAgdmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlID0gREVGQVVMVF9YX0xBQkVMU19IRUlHSFRfUEVSQ0VOVEFHRVxuICB9OiBQaWNrPFxuICAgIEFic3RyYWN0Q2hhcnRDb25maWcsXG4gICAgXCJoZWlnaHRcIiB8IFwicGFkZGluZ1JpZ2h0XCIgfCBcInBhZGRpbmdUb3BcIiB8IFwidmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlXCJcbiAgPikgPT4gKFxuICAgIDxMaW5lXG4gICAgICBrZXk9XCJ2ZXJ0aWNhbC1saW5lXCJcbiAgICAgIHgxPXtNYXRoLmZsb29yKHBhZGRpbmdSaWdodCl9XG4gICAgICB5MT17MH1cbiAgICAgIHgyPXtNYXRoLmZsb29yKHBhZGRpbmdSaWdodCl9XG4gICAgICB5Mj17aGVpZ2h0ICogdmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlICsgcGFkZGluZ1RvcH1cbiAgICAgIHsuLi50aGlzLmdldFByb3BzRm9yQmFja2dyb3VuZExpbmVzKCl9XG4gICAgLz5cbiAgKTtcblxuICByZW5kZXJEZWZzID0gKFxuICAgIGNvbmZpZzogUGljazxcbiAgICAgIFBhcnRpYWxCeTxcbiAgICAgICAgQWJzdHJhY3RDaGFydENvbmZpZyxcbiAgICAgICAgfCBcImJhY2tncm91bmRHcmFkaWVudEZyb21PcGFjaXR5XCJcbiAgICAgICAgfCBcImJhY2tncm91bmRHcmFkaWVudFRvT3BhY2l0eVwiXG4gICAgICAgIHwgXCJmaWxsU2hhZG93R3JhZGllbnRcIlxuICAgICAgICB8IFwiZmlsbFNoYWRvd0dyYWRpZW50T3BhY2l0eVwiXG4gICAgICAgIHwgXCJmaWxsU2hhZG93R3JhZGllbnRGcm9tXCJcbiAgICAgICAgfCBcImZpbGxTaGFkb3dHcmFkaWVudEZyb21PcGFjaXR5XCJcbiAgICAgICAgfCBcImZpbGxTaGFkb3dHcmFkaWVudEZyb21PZmZzZXRcIlxuICAgICAgICB8IFwiZmlsbFNoYWRvd0dyYWRpZW50VG9cIlxuICAgICAgICB8IFwiZmlsbFNoYWRvd0dyYWRpZW50VG9PcGFjaXR5XCJcbiAgICAgICAgfCBcImZpbGxTaGFkb3dHcmFkaWVudFRvT2Zmc2V0XCJcbiAgICAgID4sXG4gICAgICB8IFwid2lkdGhcIlxuICAgICAgfCBcImhlaWdodFwiXG4gICAgICB8IFwiYmFja2dyb3VuZEdyYWRpZW50RnJvbVwiXG4gICAgICB8IFwiYmFja2dyb3VuZEdyYWRpZW50VG9cIlxuICAgICAgfCBcInVzZVNoYWRvd0NvbG9yRnJvbURhdGFzZXRcIlxuICAgICAgfCBcImRhdGFcIlxuICAgICAgfCBcImJhY2tncm91bmRHcmFkaWVudEZyb21PcGFjaXR5XCJcbiAgICAgIHwgXCJiYWNrZ3JvdW5kR3JhZGllbnRUb09wYWNpdHlcIlxuICAgICAgfCBcImZpbGxTaGFkb3dHcmFkaWVudFwiXG4gICAgICB8IFwiZmlsbFNoYWRvd0dyYWRpZW50T3BhY2l0eVwiXG4gICAgICB8IFwiZmlsbFNoYWRvd0dyYWRpZW50RnJvbVwiXG4gICAgICB8IFwiZmlsbFNoYWRvd0dyYWRpZW50RnJvbU9wYWNpdHlcIlxuICAgICAgfCBcImZpbGxTaGFkb3dHcmFkaWVudEZyb21PZmZzZXRcIlxuICAgICAgfCBcImZpbGxTaGFkb3dHcmFkaWVudFRvXCJcbiAgICAgIHwgXCJmaWxsU2hhZG93R3JhZGllbnRUb09wYWNpdHlcIlxuICAgICAgfCBcImZpbGxTaGFkb3dHcmFkaWVudFRvT2Zmc2V0XCJcbiAgICA+XG4gICkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgICAgYmFja2dyb3VuZEdyYWRpZW50RnJvbSxcbiAgICAgIGJhY2tncm91bmRHcmFkaWVudFRvLFxuICAgICAgdXNlU2hhZG93Q29sb3JGcm9tRGF0YXNldCxcbiAgICAgIGRhdGFcbiAgICB9ID0gY29uZmlnO1xuXG4gICAgY29uc3QgZnJvbU9wYWNpdHkgPSBjb25maWcuaGFzT3duUHJvcGVydHkoXCJiYWNrZ3JvdW5kR3JhZGllbnRGcm9tT3BhY2l0eVwiKVxuICAgICAgPyBjb25maWcuYmFja2dyb3VuZEdyYWRpZW50RnJvbU9wYWNpdHlcbiAgICAgIDogMS4wO1xuICAgIGNvbnN0IHRvT3BhY2l0eSA9IGNvbmZpZy5oYXNPd25Qcm9wZXJ0eShcImJhY2tncm91bmRHcmFkaWVudFRvT3BhY2l0eVwiKVxuICAgICAgPyBjb25maWcuYmFja2dyb3VuZEdyYWRpZW50VG9PcGFjaXR5XG4gICAgICA6IDEuMDtcblxuICAgIGNvbnN0IGZpbGxTaGFkb3dHcmFkaWVudCA9IGNvbmZpZy5oYXNPd25Qcm9wZXJ0eShcImZpbGxTaGFkb3dHcmFkaWVudFwiKVxuICAgICAgPyBjb25maWcuZmlsbFNoYWRvd0dyYWRpZW50XG4gICAgICA6IHRoaXMucHJvcHMuY2hhcnRDb25maWcuY29sb3IoMS4wKTtcblxuICAgIGNvbnN0IGZpbGxTaGFkb3dHcmFkaWVudE9wYWNpdHkgPSBjb25maWcuaGFzT3duUHJvcGVydHkoXG4gICAgICBcImZpbGxTaGFkb3dHcmFkaWVudE9wYWNpdHlcIlxuICAgIClcbiAgICAgID8gY29uZmlnLmZpbGxTaGFkb3dHcmFkaWVudE9wYWNpdHlcbiAgICAgIDogMC4xO1xuXG4gICAgY29uc3QgZmlsbFNoYWRvd0dyYWRpZW50RnJvbSA9IGNvbmZpZy5oYXNPd25Qcm9wZXJ0eShcbiAgICAgIFwiZmlsbFNoYWRvd0dyYWRpZW50RnJvbVwiXG4gICAgKVxuICAgICAgPyBjb25maWcuZmlsbFNoYWRvd0dyYWRpZW50RnJvbVxuICAgICAgOiBmaWxsU2hhZG93R3JhZGllbnQ7XG5cbiAgICBjb25zdCBmaWxsU2hhZG93R3JhZGllbnRGcm9tT3BhY2l0eSA9IGNvbmZpZy5oYXNPd25Qcm9wZXJ0eShcbiAgICAgIFwiZmlsbFNoYWRvd0dyYWRpZW50RnJvbU9wYWNpdHlcIlxuICAgIClcbiAgICAgID8gY29uZmlnLmZpbGxTaGFkb3dHcmFkaWVudEZyb21PcGFjaXR5XG4gICAgICA6IGZpbGxTaGFkb3dHcmFkaWVudE9wYWNpdHk7XG5cbiAgICBjb25zdCBmaWxsU2hhZG93R3JhZGllbnRGcm9tT2Zmc2V0ID0gY29uZmlnLmhhc093blByb3BlcnR5KFxuICAgICAgXCJmaWxsU2hhZG93R3JhZGllbnRGcm9tT2Zmc2V0XCJcbiAgICApXG4gICAgICA/IGNvbmZpZy5maWxsU2hhZG93R3JhZGllbnRGcm9tT2Zmc2V0XG4gICAgICA6IDA7XG5cbiAgICBjb25zdCBmaWxsU2hhZG93R3JhZGllbnRUbyA9IGNvbmZpZy5oYXNPd25Qcm9wZXJ0eShcImZpbGxTaGFkb3dHcmFkaWVudFRvXCIpXG4gICAgICA/IGNvbmZpZy5maWxsU2hhZG93R3JhZGllbnRUb1xuICAgICAgOiB0aGlzLnByb3BzLmNoYXJ0Q29uZmlnLmNvbG9yKDEuMCk7XG5cbiAgICBjb25zdCBmaWxsU2hhZG93R3JhZGllbnRUb09wYWNpdHkgPSBjb25maWcuaGFzT3duUHJvcGVydHkoXG4gICAgICBcImZpbGxTaGFkb3dHcmFkaWVudFRvT3BhY2l0eVwiXG4gICAgKVxuICAgICAgPyBjb25maWcuZmlsbFNoYWRvd0dyYWRpZW50VG9PcGFjaXR5XG4gICAgICA6IDAuMTtcblxuICAgIGNvbnN0IGZpbGxTaGFkb3dHcmFkaWVudFRvT2Zmc2V0ID0gY29uZmlnLmhhc093blByb3BlcnR5KFxuICAgICAgXCJmaWxsU2hhZG93R3JhZGllbnRUb09mZnNldFwiXG4gICAgKVxuICAgICAgPyBjb25maWcuZmlsbFNoYWRvd0dyYWRpZW50VG9PZmZzZXRcbiAgICAgIDogMTtcblxuICAgIHJldHVybiAoXG4gICAgICA8RGVmcz5cbiAgICAgICAgPExpbmVhckdyYWRpZW50XG4gICAgICAgICAgaWQ9e3RoaXMuZ2V0R3JhZGllbnRJZChcImJhY2tncm91bmRHcmFkaWVudFwiKX1cbiAgICAgICAgICB4MT17MH1cbiAgICAgICAgICB5MT17aGVpZ2h0fVxuICAgICAgICAgIHgyPXt3aWR0aH1cbiAgICAgICAgICB5Mj17MH1cbiAgICAgICAgICBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgPFN0b3BcbiAgICAgICAgICAgIG9mZnNldD1cIjBcIlxuICAgICAgICAgICAgc3RvcENvbG9yPXtiYWNrZ3JvdW5kR3JhZGllbnRGcm9tfVxuICAgICAgICAgICAgc3RvcE9wYWNpdHk9e2Zyb21PcGFjaXR5fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPFN0b3BcbiAgICAgICAgICAgIG9mZnNldD1cIjFcIlxuICAgICAgICAgICAgc3RvcENvbG9yPXtiYWNrZ3JvdW5kR3JhZGllbnRUb31cbiAgICAgICAgICAgIHN0b3BPcGFjaXR5PXt0b09wYWNpdHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9MaW5lYXJHcmFkaWVudD5cbiAgICAgICAge3VzZVNoYWRvd0NvbG9yRnJvbURhdGFzZXQgJiYgZGF0YSA/IChcbiAgICAgICAgICBkYXRhLm1hcCgoZGF0YXNldCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxMaW5lYXJHcmFkaWVudFxuICAgICAgICAgICAgICBpZD17dGhpcy5nZXRHcmFkaWVudElkKGBmaWxsU2hhZG93R3JhZGllbnRGcm9tXyR7aW5kZXh9YCl9XG4gICAgICAgICAgICAgIGtleT17YCR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgeDE9ezB9XG4gICAgICAgICAgICAgIHkxPXswfVxuICAgICAgICAgICAgICB4Mj17MH1cbiAgICAgICAgICAgICAgeTI9e2hlaWdodH1cbiAgICAgICAgICAgICAgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFN0b3BcbiAgICAgICAgICAgICAgICBvZmZzZXQ9e2ZpbGxTaGFkb3dHcmFkaWVudEZyb21PZmZzZXR9XG4gICAgICAgICAgICAgICAgc3RvcENvbG9yPXtcbiAgICAgICAgICAgICAgICAgIGRhdGFzZXQuY29sb3IgPyBkYXRhc2V0LmNvbG9yKDEuMCkgOiBmaWxsU2hhZG93R3JhZGllbnRGcm9tXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0b3BPcGFjaXR5PXtmaWxsU2hhZG93R3JhZGllbnRGcm9tT3BhY2l0eX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPFN0b3BcbiAgICAgICAgICAgICAgICBvZmZzZXQ9e2ZpbGxTaGFkb3dHcmFkaWVudFRvT2Zmc2V0fVxuICAgICAgICAgICAgICAgIHN0b3BDb2xvcj17XG4gICAgICAgICAgICAgICAgICBkYXRhc2V0LmNvbG9yXG4gICAgICAgICAgICAgICAgICAgID8gZGF0YXNldC5jb2xvcihmaWxsU2hhZG93R3JhZGllbnRGcm9tT3BhY2l0eSlcbiAgICAgICAgICAgICAgICAgICAgOiBmaWxsU2hhZG93R3JhZGllbnRGcm9tXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0b3BPcGFjaXR5PXtmaWxsU2hhZG93R3JhZGllbnRUb09wYWNpdHkgfHwgMH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvTGluZWFyR3JhZGllbnQ+XG4gICAgICAgICAgKSlcbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TGluZWFyR3JhZGllbnRcbiAgICAgICAgICAgIGlkPXt0aGlzLmdldEdyYWRpZW50SWQoXCJmaWxsU2hhZG93R3JhZGllbnRGcm9tXCIpfVxuICAgICAgICAgICAgeDE9ezB9XG4gICAgICAgICAgICB5MT17MH1cbiAgICAgICAgICAgIHgyPXswfVxuICAgICAgICAgICAgeTI9e2hlaWdodH1cbiAgICAgICAgICAgIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFN0b3BcbiAgICAgICAgICAgICAgb2Zmc2V0PXtmaWxsU2hhZG93R3JhZGllbnRGcm9tT2Zmc2V0fVxuICAgICAgICAgICAgICBzdG9wQ29sb3I9e2ZpbGxTaGFkb3dHcmFkaWVudEZyb219XG4gICAgICAgICAgICAgIHN0b3BPcGFjaXR5PXtmaWxsU2hhZG93R3JhZGllbnRGcm9tT3BhY2l0eX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8U3RvcFxuICAgICAgICAgICAgICBvZmZzZXQ9e2ZpbGxTaGFkb3dHcmFkaWVudFRvT2Zmc2V0fVxuICAgICAgICAgICAgICBzdG9wQ29sb3I9e2ZpbGxTaGFkb3dHcmFkaWVudFRvIHx8IGZpbGxTaGFkb3dHcmFkaWVudEZyb219XG4gICAgICAgICAgICAgIHN0b3BPcGFjaXR5PXtmaWxsU2hhZG93R3JhZGllbnRUb09wYWNpdHkgfHwgMH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9MaW5lYXJHcmFkaWVudD5cbiAgICAgICAgKX1cbiAgICAgIDwvRGVmcz5cbiAgICApO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBBYnN0cmFjdENoYXJ0O1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhcmVkL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXh0U3R5bGUsIFZpZXdTdHlsZSB9IGZyb20gXCJyZWFjdC1uYXRpdmVcIjtcbmltcG9ydCB7IENpcmNsZVByb3BzLCBUZXh0UHJvcHMgfSBmcm9tIFwicmVhY3QtbmF0aXZlLXN2Z1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXQge1xuICAvKiogVGhlIGRhdGEgY29ycmVzcG9uZGluZyB0byB0aGUgeC1heGlzIGxhYmVsLiAqL1xuICBkYXRhOiBudW1iZXJbXTtcblxuICAvKiogQSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIGNvbG9yIG9mIHRoZSBzdHJva2UgZ2l2ZW4gYW4gaW5wdXQgb3BhY2l0eSB2YWx1ZS4gKi9cbiAgY29sb3I/OiAob3BhY2l0eTogbnVtYmVyKSA9PiBzdHJpbmc7XG5cbiAgLyoqIEEgZnVuY3Rpb24gcmV0dXJuaW5nIGFycmF5IG9mIHRoZSBjb2xvcnMgb2YgdGhlIHN0cm9rZSBnaXZlbiBhbiBpbnB1dCBvcGFjaXR5IHZhbHVlIGZvciBlYWNoIGRhdGEgdmFsdWUuICovXG4gIGNvbG9ycz86IEFycmF5PChvcGFjaXR5OiBudW1iZXIpID0+IHN0cmluZz47XG5cbiAgLyoqIFRoZSB3aWR0aCBvZiB0aGUgc3Ryb2tlLiBEZWZhdWx0cyB0byAyLiAqL1xuICBzdHJva2VXaWR0aD86IG51bWJlcjtcblxuICAvKiogQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0byByZW5kZXIgZG90cyBmb3IgdGhpcyBsaW5lICovXG4gIHdpdGhEb3RzPzogYm9vbGVhbjtcblxuICAvKiogT3ZlcnJpZGUgb2YgTGluZUNoYXJ0J3Mgd2l0aFNjcm9sbGFibGVEb3QgcHJvcGVydHkganVzdCBmb3IgdGhpcyBkYXRhc2V0ICovXG4gIHdpdGhTY3JvbGxhYmxlRG90PzogYm9vbGVhbjtcblxuICAvKiogVW5pcXVlIGtleSAqKi9cbiAga2V5Pzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIC8qKiBTdHJva2UgRGFzaCBBcnJheSAqL1xuICBzdHJva2VEYXNoQXJyYXk/OiBudW1iZXJbXSB8IHN0cmluZztcblxuICAvKiogU3Ryb2tlIERhc2ggT2Zmc2V0ICovXG4gIHN0cm9rZURhc2hPZmZzZXQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnREYXRhIHtcbiAgLyoqIFRoZSB4LWF4aXMgbGFiZWxzICovXG4gIGxhYmVsczogc3RyaW5nW107XG4gIGRhdGFzZXRzOiBEYXRhc2V0W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRDb25maWcge1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBmaXJzdCBjb2xvciBpbiB0aGUgbGluZWFyIGdyYWRpZW50IG9mIGEgY2hhcnQncyBiYWNrZ3JvdW5kXG4gICAqL1xuICBiYWNrZ3JvdW5kR3JhZGllbnRGcm9tPzogc3RyaW5nO1xuICAvKipcbiAgICogRGVmaW5lcyB0aGUgZmlyc3QgY29sb3Igb3BhY2l0eSBpbiB0aGUgbGluZWFyIGdyYWRpZW50IG9mIGEgY2hhcnQncyBiYWNrZ3JvdW5kXG4gICAqL1xuICBiYWNrZ3JvdW5kR3JhZGllbnRGcm9tT3BhY2l0eT86IG51bWJlcjtcbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIHNlY29uZCBjb2xvciBpbiB0aGUgbGluZWFyIGdyYWRpZW50IG9mIGEgY2hhcnQncyBiYWNrZ3JvdW5kXG4gICAqL1xuICBiYWNrZ3JvdW5kR3JhZGllbnRUbz86IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIHNlY29uZCBjb2xvciBvcGFjaXR5IGluIHRoZSBsaW5lYXIgZ3JhZGllbnQgb2YgYSBjaGFydCdzIGJhY2tncm91bmRcbiAgICovXG4gIGJhY2tncm91bmRHcmFkaWVudFRvT3BhY2l0eT86IG51bWJlcjtcbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIHByZXZpb3VzIG9wdGlvbnMgdG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICovXG4gIGZpbGxTaGFkb3dHcmFkaWVudD86IHN0cmluZztcbiAgZmlsbFNoYWRvd0dyYWRpZW50T3BhY2l0eT86IG51bWJlcjtcbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIGZpcnN0IGNvbG9yIGluIHRoZSBsaW5lYXIgZ3JhZGllbnQgb2YgdGhlIGFyZWEgdW5kZXIgZGF0YVxuICAgKi9cbiAgZmlsbFNoYWRvd0dyYWRpZW50RnJvbT86IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIGZpcnN0IGNvbG9yIG9wYWNpdHkgaW4gdGhlIGxpbmVhciBncmFkaWVudCBvZiB0aGUgYXJlYSB1bmRlciBkYXRhXG4gICAqL1xuICBmaWxsU2hhZG93R3JhZGllbnRGcm9tT3BhY2l0eT86IG51bWJlcjtcbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIGZpcnN0IGNvbG9yIG9mZnNldCBpbiB0aGUgbGluZWFyIGdyYWRpZW50IG9mIHRoZSBhcmVhIHVuZGVyIGRhdGFcbiAgICovXG4gIGZpbGxTaGFkb3dHcmFkaWVudEZyb21PZmZzZXQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBzZWNvbmQgY29sb3IgaW4gdGhlIGxpbmVhciBncmFkaWVudCBvZiB0aGUgYXJlYSB1bmRlciBkYXRhXG4gICAqL1xuICBmaWxsU2hhZG93R3JhZGllbnRUbz86IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIHNlY29uZCBjb2xvciBvcGFjaXR5IGluIHRoZSBsaW5lYXIgZ3JhZGllbnQgb2YgdGhlIGFyZWEgdW5kZXIgZGF0YVxuICAgKi9cbiAgZmlsbFNoYWRvd0dyYWRpZW50VG9PcGFjaXR5PzogbnVtYmVyO1xuICAvKipcbiAgICogRGVmaW5lcyB0aGUgc2Vjb25kIGNvbG9yIG9mZnNldCBpbiB0aGUgbGluZWFyIGdyYWRpZW50IG9mIHRoZSBhcmVhIHVuZGVyIGRhdGFcbiAgICovXG4gIGZpbGxTaGFkb3dHcmFkaWVudFRvT2Zmc2V0PzogbnVtYmVyO1xuICAvKipcbiAgICogRGVmaW5lcyB0aGUgb3B0aW9uIHRvIHVzZSBjb2xvciBmcm9tIGRhdGFzZXQgdG8gZWFjaCBjaGFydCBkYXRhXG4gICAqL1xuICB1c2VTaGFkb3dDb2xvckZyb21EYXRhc2V0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIGJhc2UgY29sb3IgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIHRvIGNhbGN1bGF0ZSBjb2xvcnMgb2YgbGFiZWxzIGFuZCBzZWN0b3JzIHVzZWQgaW4gYSBjaGFydFxuICAgKi9cbiAgY29sb3I/OiAob3BhY2l0eTogbnVtYmVyLCBpbmRleD86IG51bWJlcikgPT4gc3RyaW5nO1xuICAvKipcbiAgICogRGVmaW5lcyB0aGUgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgY29sb3Igb2YgdGhlIGxhYmVscyB1c2VkIGluIGEgY2hhcnQuXG4gICAqL1xuICBsYWJlbENvbG9yPzogKG9wYWNpdHk6IG51bWJlcikgPT4gc3RyaW5nO1xuICAvKipcbiAgICogRGVmaW5lcyB0aGUgYmFzZSBzdHJva2Ugd2lkdGggaW4gYSBjaGFydFxuICAgKi9cbiAgc3Ryb2tlV2lkdGg/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBwZXJjZW50ICgwLTEpIG9mIHRoZSBhdmFpbGFibGUgd2lkdGggZWFjaCBiYXIgd2lkdGggaW4gYSBjaGFydFxuICAgKi9cbiAgYmFyUGVyY2VudGFnZT86IG51bWJlcjtcbiAgYmFyUmFkaXVzPzogbnVtYmVyO1xuICBwcm9wc0ZvclRvcExhYmVscz86IFRleHRQcm9wcztcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHN0eWxlcyBvZiB0aGUgYmFja2dyb3VuZCBsaW5lcywgcmVmZXIgdG8gcmVhY3QtbmF0aXZlLXN2ZydzIExpbmUgZG9jdW1lbnRhdGlvblxuICAgKi9cbiAgcHJvcHNGb3JCYWNrZ3JvdW5kTGluZXM/OiBvYmplY3Q7XG4gIC8qKlxuICAgKiBPdmVycmlkZSBzdHlsZXMgb2YgdGhlIGxhYmVscywgcmVmZXIgdG8gcmVhY3QtbmF0aXZlLXN2ZydzIFRleHQgZG9jdW1lbnRhdGlvblxuICAgKi9cbiAgcHJvcHNGb3JMYWJlbHM/OiBUZXh0UHJvcHM7XG4gIC8qKlxuICAgKiBPdmVycmlkZSBzdHlsZXMgb2YgdmVydGljYWwgbGFiZWxzLCByZWZlciB0byByZWFjdC1uYXRpdmUtc3ZnJ3MgVGV4dCBkb2N1bWVudGF0aW9uXG4gICAqL1xuICBwcm9wc0ZvclZlcnRpY2FsTGFiZWxzPzogVGV4dFByb3BzO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSBzdHlsZXMgb2YgaG9yaXpvbnRhbCBsYWJlbHMsIHJlZmVyIHRvIHJlYWN0LW5hdGl2ZS1zdmcncyBUZXh0IGRvY3VtZW50YXRpb25cbiAgICovXG4gIHByb3BzRm9ySG9yaXpvbnRhbExhYmVscz86IFRleHRQcm9wcztcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHN0eWxlcyBvZiB0aGUgZG90cywgcmVmZXIgdG8gcmVhY3QtbmF0aXZlLXN2ZydzIFRleHQgZG9jdW1lbnRhdGlvblxuICAgKi9cbiAgcHJvcHNGb3JEb3RzPzogQ2lyY2xlUHJvcHM7XG4gIGRlY2ltYWxQbGFjZXM/OiBudW1iZXI7XG4gIHN0eWxlPzogUGFydGlhbDxWaWV3U3R5bGU+O1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgc3Ryb2tlIGxpbmUgam9pbiB0eXBlXG4gICAqL1xuICBsaW5lam9pblR5cGU/OiBcIm1pdGVyXCIgfCBcImJldmVsXCIgfCBcInJvdW5kXCI7XG5cbiAgLyoqXG4gICAqIERlZmluZSBmaWxsIGNvbG9yIGZvciBzY3JvbGxhYmxlIGRvdFxuICAgKi9cbiAgc2Nyb2xsYWJsZURvdEZpbGw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlZmluZSBzdHJva2UgY29sb3IgZm9yIHNjcm9sbGFibGUgZG90XG4gICAqL1xuICBzY3JvbGxhYmxlRG90U3Ryb2tlQ29sb3I/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlZmluZSBzdHJva2Ugd2lkdGggZm9yIHNjcm9sbGFibGUgZG90XG4gICAqL1xuICBzY3JvbGxhYmxlRG90U3Ryb2tlV2lkdGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlZmluZSByYWRpdXMgZm9yIHNjcm9sbGFibGUgZG90XG4gICAqL1xuICBzY3JvbGxhYmxlRG90UmFkaXVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSBzdHlsZSBmb3IgYWRkaXRpb25hbCBpbmZvIHZpZXcgdXBwZXIgc2Nyb2xsYWJsZSBkb3RcbiAgICovXG4gIHNjcm9sbGFibGVJbmZvVmlld1N0eWxlPzogUGFydGlhbDxWaWV3U3R5bGU+O1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0ZXh0IHN0eWxlIGZvciBhZGRpdGlvbmFsIGluZm8gdmlldyB1cHBlciBzY3JvbGxhYmxlIGRvdFxuICAgKi9cbiAgc2Nyb2xsYWJsZUluZm9UZXh0U3R5bGU/OiBQYXJ0aWFsPFRleHRTdHlsZT47XG4gIHNjcm9sbGFibGVJbmZvVGV4dERlY29yYXRvcj86ICh2YWx1ZTogbnVtYmVyKSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldCBJbmZvIFZpZXcgb2Zmc2V0XG4gICAqL1xuICBzY3JvbGxhYmxlSW5mb09mZnNldD86IG51bWJlcjtcblxuICAvKipcbiAgICogU2V0IEluZm8gVmlldyBzaXplXG4gICAqL1xuICBzY3JvbGxhYmxlSW5mb1NpemU/OiBTaXplO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpemUge1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgUGFydGlhbEJ5PFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IE9taXQ8VCwgSz4gJiBQYXJ0aWFsPFBpY2s8VCwgSz4+O1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ViewStyle } from "react-native";
|
|
2
|
+
import { NumberProp } from "react-native-svg";
|
|
3
|
+
export declare function getNumberProp(value: ViewStyle["borderRadius"] | undefined, fallback?: NumberProp): NumberProp;
|
|
4
|
+
export declare function mapValue(x: number, in_min: number, in_max: number, out_min: number, out_max: number): number;
|
|
5
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/shared/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS,EAC5C,QAAQ,GAAE,UAAc,GACvB,UAAU,CAIZ;AAED,wBAAgB,QAAQ,CACtB,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,UAGhB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function getNumberProp(value, fallback) {
|
|
2
|
+
if (fallback === void 0) { fallback = 0; }
|
|
3
|
+
return typeof value === "number" || typeof value === "string"
|
|
4
|
+
? value
|
|
5
|
+
: fallback;
|
|
6
|
+
}
|
|
7
|
+
export function mapValue(x, in_min, in_max, out_min, out_max) {
|
|
8
|
+
return ((x - in_min) * (out_max - out_min)) / (in_max - in_min) + out_min;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhcmVkL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sVUFBVSxhQUFhLENBQzNCLEtBQTRDLEVBQzVDLFFBQXdCO0lBQXhCLHlCQUFBLEVBQUEsWUFBd0I7SUFFeEIsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUMzRCxDQUFDLENBQUMsS0FBSztRQUNQLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsQ0FBUyxFQUNULE1BQWMsRUFDZCxNQUFjLEVBQ2QsT0FBZSxFQUNmLE9BQWU7SUFFZixPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDNUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZpZXdTdHlsZSB9IGZyb20gXCJyZWFjdC1uYXRpdmVcIjtcbmltcG9ydCB7IE51bWJlclByb3AgfSBmcm9tIFwicmVhY3QtbmF0aXZlLXN2Z1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TnVtYmVyUHJvcChcbiAgdmFsdWU6IFZpZXdTdHlsZVtcImJvcmRlclJhZGl1c1wiXSB8IHVuZGVmaW5lZCxcbiAgZmFsbGJhY2s6IE51bWJlclByb3AgPSAwXG4pOiBOdW1iZXJQcm9wIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCJcbiAgICA/IHZhbHVlXG4gICAgOiBmYWxsYmFjaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFZhbHVlKFxuICB4OiBudW1iZXIsXG4gIGluX21pbjogbnVtYmVyLFxuICBpbl9tYXg6IG51bWJlcixcbiAgb3V0X21pbjogbnVtYmVyLFxuICBvdXRfbWF4OiBudW1iZXJcbikge1xuICByZXR1cm4gKCh4IC0gaW5fbWluKSAqIChvdXRfbWF4IC0gb3V0X21pbikpIC8gKGluX21heCAtIGluX21pbikgKyBvdXRfbWluO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,76 +1,124 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-chart-kit",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0-next.0",
|
|
4
|
+
"workspaces": [
|
|
5
|
+
"packages/*",
|
|
6
|
+
"apps/expo-showcase"
|
|
7
|
+
],
|
|
4
8
|
"devDependencies": {
|
|
5
|
-
"@
|
|
6
|
-
"@
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"eslint": "
|
|
11
|
-
"eslint-
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"react-native": "https://github.com/expo/react-native/archive/sdk-37.0.1.tar.gz",
|
|
24
|
-
"react-native-flash-message": "^0.1.10",
|
|
25
|
-
"react-native-scrollable-tab-view": "^1.0.0",
|
|
26
|
-
"react-native-svg": "11.0.1",
|
|
27
|
-
"react-test-renderer": "16.7.0",
|
|
28
|
-
"typescript": "^5.4.5"
|
|
9
|
+
"@eslint/js": "^9.39.4",
|
|
10
|
+
"@playwright/test": "^1.59.1",
|
|
11
|
+
"@types/node": "^25.6.0",
|
|
12
|
+
"@types/react": "^19.2.14",
|
|
13
|
+
"eslint": "^9.39.4",
|
|
14
|
+
"eslint-plugin-react": "^7.37.5",
|
|
15
|
+
"eslint-plugin-react-hooks": "^7.1.1",
|
|
16
|
+
"globals": "^17.5.0",
|
|
17
|
+
"husky": "^9.1.7",
|
|
18
|
+
"lint-staged": "^16.4.0",
|
|
19
|
+
"prettier": "^3.8.3",
|
|
20
|
+
"react": "^19.2.5",
|
|
21
|
+
"react-native": "^0.83.9",
|
|
22
|
+
"react-native-gesture-handler": "~2.28.0",
|
|
23
|
+
"react-native-svg": "^15.15.4",
|
|
24
|
+
"typescript": "^5.9.3",
|
|
25
|
+
"typescript-eslint": "^8.59.1",
|
|
26
|
+
"vitest": "^4.1.5"
|
|
29
27
|
},
|
|
30
|
-
"_main": "./node_modules/expo/AppEntry.js",
|
|
31
28
|
"main": "./dist/index.js",
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
32
30
|
"typings": "./dist/index.d.ts",
|
|
33
31
|
"files": [
|
|
34
|
-
"dist"
|
|
32
|
+
"dist",
|
|
33
|
+
"scripts/chartkit-codemod.mjs"
|
|
35
34
|
],
|
|
35
|
+
"bin": {
|
|
36
|
+
"chartkit-codemod": "./scripts/chartkit-codemod.mjs"
|
|
37
|
+
},
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public",
|
|
40
|
+
"registry": "https://registry.npmjs.org/"
|
|
41
|
+
},
|
|
36
42
|
"scripts": {
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
43
|
+
"lint": "eslint .",
|
|
44
|
+
"format": "prettier --write .",
|
|
45
|
+
"format:check": "prettier --check .",
|
|
46
|
+
"surface:check": "node scripts/verify-public-surface.mjs && node scripts/verify-package-boundaries.mjs && node scripts/verify-pro-preview-imports.mjs",
|
|
47
|
+
"boundaries:check": "node scripts/verify-package-boundaries.mjs",
|
|
48
|
+
"pack:check": "node scripts/check-package-packs.mjs",
|
|
49
|
+
"test": "npm run typecheck && npm run test:unit && npm run test:compat",
|
|
50
|
+
"test:unit": "vitest run --exclude \"packages/**/test/compat/**/*.test.ts\"",
|
|
51
|
+
"test:visual": "npm run visual:test",
|
|
52
|
+
"test:compat": "vitest run packages/core/test/compat",
|
|
53
|
+
"test:e2e": "npm run e2e:test",
|
|
54
|
+
"typecheck": "tsc --noEmit && npm run core:typecheck && npm run svg:typecheck && npm run skia:typecheck && npm run pro:typecheck && npm run rn:typecheck && npm run showcase:typecheck",
|
|
55
|
+
"core:typecheck": "tsc -p packages/core/tsconfig.json --noEmit && tsc -p packages/core/tsconfig.test.json --noEmit",
|
|
56
|
+
"core:build": "tsc -p packages/core/tsconfig.json",
|
|
57
|
+
"svg:typecheck": "tsc -p packages/svg-renderer/tsconfig.json --noEmit && tsc -p packages/svg-renderer/tsconfig.test.json --noEmit",
|
|
58
|
+
"svg:build": "tsc -p packages/svg-renderer/tsconfig.json",
|
|
59
|
+
"skia:typecheck": "tsc -p packages/skia-renderer/tsconfig.json --noEmit && tsc -p packages/skia-renderer/tsconfig.test.json --noEmit",
|
|
60
|
+
"skia:build": "tsc -p packages/skia-renderer/tsconfig.json",
|
|
61
|
+
"skia:parity": "vitest run packages/skia-renderer/test/skia-renderer.test.ts packages/react-native/test/line-renderer.test.ts packages/react-native/test/bar-renderer.test.ts packages/react-native/test/pie-renderer.test.ts packages/react-native/test/progress-renderer.test.ts packages/react-native/test/contribution-renderer.test.ts packages/react-native/test/combined-renderer.test.ts packages/react-native/test/candlestick-renderer.test.ts",
|
|
62
|
+
"pro:typecheck": "tsc -p packages/pro/tsconfig.json --noEmit && tsc -p packages/pro/tsconfig.test.json --noEmit",
|
|
63
|
+
"pro:build": "tsc -p packages/pro/tsconfig.json",
|
|
64
|
+
"rn:typecheck": "tsc -p packages/react-native/tsconfig.json --noEmit && tsc -p packages/react-native/tsconfig.test.json --noEmit",
|
|
65
|
+
"rn:build": "tsc -p packages/react-native/tsconfig.build.json",
|
|
66
|
+
"benchmark": "npm run benchmark:core-geometry && npm run benchmark:showcase-interaction",
|
|
67
|
+
"benchmark:core-geometry": "node scripts/benchmark-core-line.mjs",
|
|
68
|
+
"benchmark:core-line": "node scripts/benchmark-core-line.mjs",
|
|
69
|
+
"benchmark:showcase-interaction": "npm run showcase:build && playwright test -c apps/expo-showcase/benchmark.config.ts",
|
|
70
|
+
"showcase": "npm --workspace @chart-kit/expo-showcase run web --",
|
|
71
|
+
"showcase:build": "npm --workspace @chart-kit/expo-showcase run web:build",
|
|
72
|
+
"showcase:typecheck": "npm --workspace @chart-kit/expo-showcase run typecheck",
|
|
73
|
+
"expo:typecheck": "npm --workspace @chart-kit/expo-showcase run typecheck",
|
|
74
|
+
"visual:test": "npm run showcase:build && playwright test -c apps/expo-showcase/playwright.config.ts",
|
|
75
|
+
"visual:update": "npm run showcase:build && playwright test -c apps/expo-showcase/playwright.config.ts --update-snapshots",
|
|
76
|
+
"e2e:test": "npm run showcase:build && playwright test -c apps/expo-showcase/playwright.config.ts apps/expo-showcase/visual/chart-interaction.spec.ts",
|
|
77
|
+
"example:ios": "npm --workspace @chart-kit/expo-showcase run ios --",
|
|
78
|
+
"example:android": "npm --workspace @chart-kit/expo-showcase run android --",
|
|
79
|
+
"example:expo": "npm --workspace @chart-kit/expo-showcase run start --",
|
|
80
|
+
"example:rn-cli:typecheck": "tsc -p examples/rn-cli-basic/tsconfig.json --noEmit",
|
|
81
|
+
"native:release": "node scripts/run-expo-native-release-check.mjs --platform all",
|
|
82
|
+
"native:release:android": "node scripts/run-expo-native-release-check.mjs --platform android",
|
|
83
|
+
"native:release:ios": "node scripts/run-expo-native-release-check.mjs --platform ios",
|
|
84
|
+
"native:release:dry-run": "node scripts/run-expo-native-release-check.mjs --platform all --dry-run",
|
|
85
|
+
"release:native-workflow:record": "node scripts/record-native-workflow-evidence.mjs",
|
|
86
|
+
"release:qa:checklists": "node scripts/generate-native-qa-checklists.mjs",
|
|
87
|
+
"release:qa:checklists:check": "node scripts/generate-native-qa-checklists.mjs --check",
|
|
88
|
+
"release:qa:record": "node scripts/record-native-qa-evidence.mjs",
|
|
89
|
+
"release:owner:record": "node scripts/record-owner-gate-decision.mjs",
|
|
90
|
+
"release:gate": "node scripts/check-release-gates.mjs --strict",
|
|
91
|
+
"release:gate:report": "node scripts/check-release-gates.mjs",
|
|
92
|
+
"docs:build": "node scripts/docs-build.mjs && node scripts/typecheck-doc-examples.mjs",
|
|
93
|
+
"codemod:v1-to-v2": "node scripts/chartkit-codemod.mjs v1-to-v2",
|
|
94
|
+
"clean": "node scripts/clean-dist.mjs",
|
|
95
|
+
"build": "npm run clean && npm run core:build && npm run svg:build && npm run skia:build && npm run pro:build && npm run rn:build && tsc",
|
|
44
96
|
"dev": "tsc --watch",
|
|
45
|
-
"prepare": "npm run build"
|
|
46
|
-
},
|
|
47
|
-
"jest": {
|
|
48
|
-
"preset": "jest-expo"
|
|
97
|
+
"prepare": "npm run build && husky"
|
|
49
98
|
},
|
|
50
99
|
"peerDependencies": {
|
|
51
|
-
"react": "
|
|
52
|
-
"react-native": ">=
|
|
53
|
-
"react-native-
|
|
100
|
+
"react": ">=19.2.0 <20",
|
|
101
|
+
"react-native": ">=0.83 <1",
|
|
102
|
+
"react-native-gesture-handler": ">=2.28.0 <3",
|
|
103
|
+
"react-native-svg": ">=15.13.0 <16"
|
|
54
104
|
},
|
|
55
105
|
"dependencies": {
|
|
56
|
-
"paths-js": "^0.4.
|
|
57
|
-
"point-in-polygon": "^1.0.1"
|
|
106
|
+
"paths-js": "^0.4.11"
|
|
58
107
|
},
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
|
|
108
|
+
"lint-staged": {
|
|
109
|
+
"*.{js,jsx,ts,tsx}": [
|
|
110
|
+
"eslint --fix",
|
|
111
|
+
"prettier --write"
|
|
112
|
+
],
|
|
113
|
+
"*.{json,md,yml,yaml}": "prettier --write"
|
|
114
|
+
},
|
|
115
|
+
"engines": {
|
|
116
|
+
"node": ">=20.19.4"
|
|
63
117
|
},
|
|
64
118
|
"license": "MIT",
|
|
65
119
|
"homepage": "https://github.com/indiespirit/react-native-chart-kit",
|
|
66
120
|
"repository": {
|
|
67
121
|
"type": "git",
|
|
68
122
|
"url": "git+https://github.com/indiespirit/react-native-chart-kit.git"
|
|
69
|
-
},
|
|
70
|
-
"overrides": {
|
|
71
|
-
"@types/react": "16.14.8"
|
|
72
|
-
},
|
|
73
|
-
"resolutions": {
|
|
74
|
-
"@types/react": "16.14.8"
|
|
75
123
|
}
|
|
76
124
|
}
|