react-native-chart-kit 6.12.0 → 6.12.1

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.
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { ViewStyle } from "react-native";
3
2
  import AbstractChart, { AbstractChartConfig, AbstractChartProps } from "./AbstractChart";
4
3
  export interface StackedBarChartData {
@@ -47,16 +46,16 @@ export interface StackedBarChartProps extends AbstractChartProps {
47
46
  verticalLabelsHeightPercentage?: number;
48
47
  formatYLabel?: (yLabel: string) => string;
49
48
  }
50
- declare type StackedBarChartState = {};
49
+ type StackedBarChartState = {};
51
50
  declare class StackedBarChart extends AbstractChart<StackedBarChartProps, StackedBarChartState> {
52
51
  getBarPercentage: () => number;
53
52
  getBarRadius: (ret: string | any[], x: string | any[]) => number;
54
- renderBars: ({ data, width, height, paddingTop, paddingRight, border, colors, stackedBar, verticalLabelsHeightPercentage }: Pick<Pick<AbstractChartConfig, "color" | "style" | "backgroundColor" | "height" | "paddingRight" | "paddingTop" | "width" | "strokeWidth" | "propsForBackgroundLines" | "propsForLabels" | "labelColor" | "propsForVerticalLabels" | "propsForHorizontalLabels" | "count" | "horizontalLabelRotation" | "formatYLabel" | "labels" | "horizontalOffset" | "stackedBar" | "verticalLabelRotation" | "formatXLabel" | "verticalLabelsHeightPercentage" | "formatTopBarValue" | "backgroundGradientFrom" | "backgroundGradientFromOpacity" | "backgroundGradientTo" | "backgroundGradientToOpacity" | "fillShadowGradient" | "fillShadowGradientOpacity" | "fillShadowGradientFrom" | "fillShadowGradientFromOpacity" | "fillShadowGradientFromOffset" | "fillShadowGradientTo" | "fillShadowGradientToOpacity" | "fillShadowGradientToOffset" | "useShadowColorFromDataset" | "barPercentage" | "barRadius" | "propsForDots" | "decimalPlaces" | "linejoinType" | "scrollableDotFill" | "scrollableDotStrokeColor" | "scrollableDotStrokeWidth" | "scrollableDotRadius" | "scrollableInfoViewStyle" | "scrollableInfoTextStyle" | "scrollableInfoTextDecorator" | "scrollableInfoOffset" | "scrollableInfoSize">, "height" | "paddingRight" | "paddingTop" | "width" | "stackedBar" | "verticalLabelsHeightPercentage"> & {
53
+ renderBars: ({ data, width, height, paddingTop, paddingRight, border, colors, stackedBar, verticalLabelsHeightPercentage }: Pick<Omit<AbstractChartConfig, "data">, "width" | "height" | "paddingRight" | "paddingTop" | "stackedBar" | "verticalLabelsHeightPercentage"> & {
55
54
  border: number;
56
55
  colors: string[];
57
56
  data: number[][];
58
57
  }) => any[][];
59
- renderLegend: ({ legend, colors, width, height }: Pick<AbstractChartConfig, "height" | "width"> & {
58
+ renderLegend: ({ legend, colors, width, height }: Pick<AbstractChartConfig, "width" | "height"> & {
60
59
  legend: string[];
61
60
  colors: string[];
62
61
  }) => JSX.Element[];
@@ -1 +1 @@
1
- {"version":3,"file":"StackedBarChart.d.ts","sourceRoot":"","sources":["../src/StackedBarChart.tsx"],"names":[],"mappings":";AACA,OAAO,EAAQ,SAAS,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,aAAa,EAAE,EACpB,mBAAmB,EACnB,kBAAkB,EAEnB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D;;;;;;;;;;OAUG;IACH,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,mBAAmB,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAC;IAExC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C;AAED,aAAK,oBAAoB,GAAG,EAAE,CAAC;AAE/B,cAAM,eAAgB,SAAQ,aAAa,CACzC,oBAAoB,EACpB,oBAAoB,CACrB;IACC,gBAAgB,eAGd;IAEF,YAAY,QAAS,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE,YAIpD;IAEF,UAAU;gBAmBA,MAAM;gBACN,MAAM,EAAE;cACV,MAAM,EAAE,EAAE;kBAsDb;IAEL,YAAY;gBAMF,MAAM,EAAE;gBACR,MAAM,EAAE;wBAuBb;IAEL,MAAM;CAsHP;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"StackedBarChart.d.ts","sourceRoot":"","sources":["../src/StackedBarChart.tsx"],"names":[],"mappings":"AACA,OAAO,EAAQ,SAAS,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,aAAa,EAAE,EACpB,mBAAmB,EACnB,kBAAkB,EAEnB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D;;;;;;;;;;OAUG;IACH,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,mBAAmB,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAC;IAExC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C;AAED,KAAK,oBAAoB,GAAG,EAAE,CAAC;AAE/B,cAAM,eAAgB,SAAQ,aAAa,CACzC,oBAAoB,EACpB,oBAAoB,CACrB;IACC,gBAAgB,eAGd;IAEF,YAAY,GAAI,KAAK,MAAM,GAAG,GAAG,EAAE,EAAE,GAAG,MAAM,GAAG,GAAG,EAAE,YAIpD;IAEF,UAAU,GAAI,+GAUX,IAAI,CACL,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,EAC/B,OAAO,GACP,QAAQ,GACR,cAAc,GACd,YAAY,GACZ,YAAY,GACZ,gCAAgC,CACnC,GAAG;QACF,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;KAClB,aAqDI;IAEL,YAAY,GAAI,mCAKb,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,QAAQ,CAAC,GAAG;QACjD,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,mBAsBI;IAEL,MAAM;CAsHP;AAED,eAAe,eAAe,CAAC"}
@@ -2,10 +2,12 @@ var __extends = (this && this.__extends) || (function () {
2
2
  var extendStatics = function (d, b) {
3
3
  extendStatics = Object.setPrototypeOf ||
4
4
  ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
6
  return extendStatics(d, b);
7
7
  };
8
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");
9
11
  extendStatics(d, b);
10
12
  function __() { this.constructor = d; }
11
13
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
@@ -59,9 +61,9 @@ var StackedBarChart = /** @class */ (function (_super) {
59
61
  (i * (width - paddingRight)) / data.length +
60
62
  barWidth / 2) *
61
63
  fac;
62
- ret.push(<Rect key={Math.random()} x={xC} y={y} rx={_this.getBarRadius(ret, x)} ry={_this.getBarRadius(ret, x)} width={barWidth} height={h} fill={colors[z]}/>);
64
+ ret.push(<Rect key={"bar-".concat(i, "-").concat(z)} x={xC} y={y} rx={_this.getBarRadius(ret, x)} ry={_this.getBarRadius(ret, x)} width={barWidth} height={h} fill={colors[z]}/>);
63
65
  if (!_this.props.hideLegend) {
64
- ret.push(<Text key={Math.random()} x={xC + 7 + barWidth / 2} textAnchor="end" y={h > 15 ? y + 15 : y + 7} {..._this.getPropsForLabels()}>
66
+ ret.push(<Text key={"bar-label-".concat(i, "-").concat(z)} x={xC + 7 + barWidth / 2} textAnchor="end" y={h > 15 ? y + 15 : y + 7} {..._this.getPropsForLabels()}>
65
67
  {x[z]}
66
68
  </Text>);
67
69
  }
@@ -73,7 +75,7 @@ var StackedBarChart = /** @class */ (function (_super) {
73
75
  _this.renderLegend = function (_a) {
74
76
  var legend = _a.legend, colors = _a.colors, width = _a.width, height = _a.height;
75
77
  return legend.map(function (x, i) {
76
- return (<G key={Math.random()}>
78
+ return (<G key={"legend-".concat(i)}>
77
79
  <Rect width="16px" height="16px" fill={colors[i]} rx={8} ry={8} x={width * 0.71} y={height * 0.7 - i * 50}/>
78
80
  <Text x={width * 0.78} y={height * 0.76 - i * 50} {..._this.getPropsForLabels()}>
79
81
  {x}
@@ -114,36 +116,29 @@ var StackedBarChart = /** @class */ (function (_super) {
114
116
  return (<View style={style}>
115
117
  <Svg height={height} width={width}>
116
118
  {this.renderDefs(__assign(__assign({}, config), this.props.chartConfig))}
117
- <Rect width="100%" height={height} rx={borderRadius} ry={borderRadius} fill="url(#backgroundGradient)"/>
119
+ <Rect width="100%" height={height} rx={borderRadius} ry={borderRadius} fill={this.getGradientUrl("backgroundGradient")}/>
118
120
  <G>
119
- {this.renderHorizontalLines(__assign(__assign({}, config), { count: segments, paddingTop: paddingTop,
120
- verticalLabelsHeightPercentage: verticalLabelsHeightPercentage }))}
121
+ {this.renderHorizontalLines(__assign(__assign({}, config), { count: segments, paddingTop: paddingTop, verticalLabelsHeightPercentage: verticalLabelsHeightPercentage }))}
121
122
  </G>
122
123
  <G>
123
124
  {withHorizontalLabels
124
- ? this.renderHorizontalLabels(__assign(__assign({}, config), { count: segments, data: [0, border], paddingTop: paddingTop,
125
- paddingRight: paddingRight,
126
- decimalPlaces: decimalPlaces,
127
- verticalLabelsHeightPercentage: verticalLabelsHeightPercentage,
128
- formatYLabel: formatYLabel }))
129
- : null}
125
+ ? this.renderHorizontalLabels(__assign(__assign({}, config), { count: segments, data: [0, border], paddingTop: paddingTop, paddingRight: paddingRight, decimalPlaces: decimalPlaces, verticalLabelsHeightPercentage: verticalLabelsHeightPercentage, formatYLabel: formatYLabel }))
126
+ : null}
130
127
  </G>
131
128
  <G>
132
129
  {withVerticalLabels
133
- ? this.renderVerticalLabels(__assign(__assign({}, config), { labels: data.labels, paddingRight: paddingRight + 28, stackedBar: stackedBar,
134
- paddingTop: paddingTop, horizontalOffset: barWidth, verticalLabelsHeightPercentage: verticalLabelsHeightPercentage }))
135
- : null}
130
+ ? this.renderVerticalLabels(__assign(__assign({}, config), { labels: data.labels, paddingRight: paddingRight + 28, stackedBar: stackedBar, paddingTop: paddingTop, horizontalOffset: barWidth, verticalLabelsHeightPercentage: verticalLabelsHeightPercentage }))
131
+ : null}
136
132
  </G>
137
133
  <G>
138
- {this.renderBars(__assign(__assign({}, config), { data: data.data, border: border, colors: this.props.data.barColors, paddingTop: paddingTop, paddingRight: paddingRight + 20, stackedBar: stackedBar,
139
- verticalLabelsHeightPercentage: verticalLabelsHeightPercentage }))}
134
+ {this.renderBars(__assign(__assign({}, config), { data: data.data, border: border, colors: this.props.data.barColors, paddingTop: paddingTop, paddingRight: paddingRight + 20, stackedBar: stackedBar, verticalLabelsHeightPercentage: verticalLabelsHeightPercentage }))}
140
135
  </G>
141
136
  {showLegend &&
142
- this.renderLegend(__assign(__assign({}, config), { legend: data.legend, colors: this.props.data.barColors }))}
137
+ this.renderLegend(__assign(__assign({}, config), { legend: data.legend, colors: this.props.data.barColors }))}
143
138
  </Svg>
144
139
  </View>);
145
140
  };
146
141
  return StackedBarChart;
147
142
  }(AbstractChart));
148
143
  export default StackedBarChart;
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhY2tlZEJhckNoYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1N0YWNrZWRCYXJDaGFydC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxJQUFJLEVBQWEsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRELE9BQU8sYUFBYSxFQUFFLEVBR3BCLGtDQUFrQyxFQUNuQyxNQUFNLGlCQUFpQixDQUFDO0FBdUR6QjtJQUE4QixtQ0FHN0I7SUFIRDtRQUFBLHFFQWtQQztRQTlPQyxzQkFBZ0IsR0FBRztZQUNULElBQUEsS0FBc0IsS0FBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLGNBQTNCLEVBQWpCLGFBQWEsbUJBQUcsQ0FBQyxLQUFBLENBQTRCO1lBQ3JELE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQztRQUVGLGtCQUFZLEdBQUcsVUFBQyxHQUFtQixFQUFFLENBQWlCO1lBQ3BELE9BQU8sS0FBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUNwRSxDQUFDLENBQUMsS0FBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUztnQkFDbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNSLENBQUMsQ0FBQztRQUVGLGdCQUFVLEdBQUcsVUFBQyxFQXNCYjtnQkFyQkMsSUFBSSxVQUFBLEVBQ0osS0FBSyxXQUFBLEVBQ0wsTUFBTSxZQUFBLEVBQ04sVUFBVSxnQkFBQSxFQUNWLFlBQVksa0JBQUEsRUFDWixNQUFNLFlBQUEsRUFDTixNQUFNLFlBQUEsRUFDTixrQkFBa0IsRUFBbEIs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a1AxQztBQUVELGVBQWUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVmlldywgVmlld1N0eWxlIH0gZnJvbSBcInJlYWN0LW5hdGl2ZVwiO1xuaW1wb3J0IHsgRywgUmVjdCwgU3ZnLCBUZXh0IH0gZnJvbSBcInJlYWN0LW5hdGl2ZS1zdmdcIjtcblxuaW1wb3J0IEFic3RyYWN0Q2hhcnQsIHtcbiAgQWJzdHJhY3RDaGFydENvbmZpZyxcbiAgQWJzdHJhY3RDaGFydFByb3BzLFxuICBERUZBVUxUX1hfTEFCRUxTX0hFSUdIVF9QRVJDRU5UQUdFXG59IGZyb20gXCIuL0Fic3RyYWN0Q2hhcnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTdGFja2VkQmFyQ2hhcnREYXRhIHtcbiAgbGFiZWxzOiBzdHJpbmdbXTtcbiAgbGVnZW5kOiBzdHJpbmdbXTtcbiAgZGF0YTogbnVtYmVyW11bXTtcbiAgYmFyQ29sb3JzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFja2VkQmFyQ2hhcnRQcm9wcyBleHRlbmRzIEFic3RyYWN0Q2hhcnRQcm9wcyB7XG4gIC8qKlxuICAgKiBFLmcuXG4gICAqIGBgYGphdmFzY3JpcHRcbiAgICogY29uc3QgZGF0YSA9IHtcbiAgICogICBsYWJlbHM6IFtcIlRlc3QxXCIsIFwiVGVzdDJcIl0sXG4gICAqICAgbGVnZW5kOiBbXCJMMVwiLCBcIkwyXCIsIFwiTDNcIl0sXG4gICAqICAgZGF0YTogW1s2MCwgNjAsIDYwXSwgWzMwLCAzMCwgNjBdXSxcbiAgICogICBiYXJDb2xvcnM6IFtcIiNkZmU0ZWFcIiwgXCIjY2VkNmUwXCIsIFwiI2E0YjBiZVwiXVxuICAgKiB9O1xuICAgKiBgYGBcbiAgICovXG4gIGRhdGE6IFN0YWNrZWRCYXJDaGFydERhdGE7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBjaGFydENvbmZpZzogQWJzdHJhY3RDaGFydENvbmZpZztcbiAgaGlkZUxlZ2VuZDogYm9vbGVhbjtcbiAgc3R5bGU/OiBQYXJ0aWFsPFZpZXdTdHlsZT47XG4gIGJhclBlcmNlbnRhZ2U/OiBudW1iZXI7XG4gIGRlY2ltYWxQbGFjZXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBTaG93IHZlcnRpY2FsIGxhYmVscyAtIGRlZmF1bHQ6IFRydWUuXG4gICAqL1xuICB3aXRoVmVydGljYWxMYWJlbHM/OiBib29sZWFuO1xuICAvKipcbiAgICogU2hvdyBob3Jpem9udGFsIGxhYmVscyAtIGRlZmF1bHQ6IFRydWUuXG4gICAqL1xuICB3aXRoSG9yaXpvbnRhbExhYmVscz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGhvcml6b250YWwgbGluZXNcbiAgICovXG4gIHNlZ21lbnRzPzogbnVtYmVyO1xuXG4gIHBlcmNlbnRpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQZXJjZW50YWdlIG9mIHRoZSBjaGFydCBoZWlnaHQsIGRlZGljYXRlZCB0byB2ZXJ0aWNhbCBsYWJlbHNcbiAgICogKHNwYWNlIGJlbG93IGNoYXJ0KVxuICAgKi9cbiAgdmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlPzogbnVtYmVyO1xuXG4gIGZvcm1hdFlMYWJlbD86ICh5TGFiZWw6IHN0cmluZykgPT4gc3RyaW5nO1xufVxuXG50eXBlIFN0YWNrZWRCYXJDaGFydFN0YXRlID0ge307XG5cbmNsYXNzIFN0YWNrZWRCYXJDaGFydCBleHRlbmRzIEFic3RyYWN0Q2hhcnQ8XG4gIFN0YWNrZWRCYXJDaGFydFByb3BzLFxuICBTdGFja2VkQmFyQ2hhcnRTdGF0ZVxuPiB7XG4gIGdldEJhclBlcmNlbnRhZ2UgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBiYXJQZXJjZW50YWdlID0gMSB9ID0gdGhpcy5wcm9wcy5jaGFydENvbmZpZztcbiAgICByZXR1cm4gYmFyUGVyY2VudGFnZTtcbiAgfTtcblxuICBnZXRCYXJSYWRpdXMgPSAocmV0OiBzdHJpbmcgfCBhbnlbXSwgeDogc3RyaW5nIHwgYW55W10pID0+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGFydENvbmZpZy5iYXJSYWRpdXMgJiYgcmV0Lmxlbmd0aCA9PT0geC5sZW5ndGggLSAxXG4gICAgICA/IHRoaXMucHJvcHMuY2hhcnRDb25maWcuYmFyUmFkaXVzXG4gICAgICA6IDA7XG4gIH07XG5cbiAgcmVuZGVyQmFycyA9ICh7XG4gICAgZGF0YSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgcGFkZGluZ1RvcCxcbiAgICBwYWRkaW5nUmlnaHQsXG4gICAgYm9yZGVyLFxuICAgIGNvbG9ycyxcbiAgICBzdGFja2VkQmFyID0gZmFsc2UsXG4gICAgdmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlXG4gIH06IFBpY2s8XG4gICAgT21pdDxBYnN0cmFjdENoYXJ0Q29uZmlnLCBcImRhdGFcIj4sXG4gICAgfCBcIndpZHRoXCJcbiAgICB8IFwiaGVpZ2h0XCJcbiAgICB8IFwicGFkZGluZ1JpZ2h0XCJcbiAgICB8IFwicGFkZGluZ1RvcFwiXG4gICAgfCBcInN0YWNrZWRCYXJcIlxuICAgIHwgXCJ2ZXJ0aWNhbExhYmVsc0hlaWdodFBlcmNlbnRhZ2VcIlxuICA+ICYge1xuICAgIGJvcmRlcjogbnVtYmVyO1xuICAgIGNvbG9yczogc3RyaW5nW107XG4gICAgZGF0YTogbnVtYmVyW11bXTtcbiAgfSkgPT5cbiAgICBkYXRhLm1hcCgoeCwgaSkgPT4ge1xuICAgICAgY29uc3QgYmFyV2lkdGggPSAzMiAqIHRoaXMuZ2V0QmFyUGVyY2VudGFnZSgpO1xuICAgICAgY29uc3QgcmV0ID0gW107XG4gICAgICBsZXQgaCA9IDA7XG4gICAgICBsZXQgc3QgPSBwYWRkaW5nVG9wO1xuXG4gICAgICBsZXQgZmFjID0gMTtcbiAgICAgIGlmIChzdGFja2VkQmFyKSB7XG4gICAgICAgIGZhYyA9IDAuNztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN1bSA9IHRoaXMucHJvcHMucGVyY2VudGlsZSA/IHgucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCkgOiBib3JkZXI7XG4gICAgICBjb25zdCBiYXJzQXJlYUhlaWdodCA9IGhlaWdodCAqIHZlcnRpY2FsTGFiZWxzSGVpZ2h0UGVyY2VudGFnZTtcbiAgICAgIGZvciAobGV0IHogPSAwOyB6IDwgeC5sZW5ndGg7IHorKykge1xuICAgICAgICBoID0gYmFyc0FyZWFIZWlnaHQgKiAoeFt6XSAvIHN1bSk7XG4gICAgICAgIGNvbnN0IHkgPSBiYXJzQXJlYUhlaWdodCAtIGggKyBzdDtcbiAgICAgICAgY29uc3QgeEMgPVxuICAgICAgICAgIChwYWRkaW5nUmlnaHQgK1xuICAgICAgICAgICAgKGkgKiAod2lkdGggLSBwYWRkaW5nUmlnaHQpKSAvIGRhdGEubGVuZ3RoICtcbiAgICAgICAgICAgIGJhcldpZHRoIC8gMikgKlxuICAgICAgICAgIGZhYztcblxuICAgICAgICByZXQucHVzaChcbiAgICAgICAgICA8UmVjdFxuICAgICAgICAgICAga2V5PXtNYXRoLnJhbmRvbSgpfVxuICAgICAgICAgICAgeD17eEN9XG4gICAgICAgICAgICB5PXt5fVxuICAgICAgICAgICAgcng9e3RoaXMuZ2V0QmFyUmFkaXVzKHJldCwgeCl9XG4gICAgICAgICAgICByeT17dGhpcy5nZXRCYXJSYWRpdXMocmV0LCB4KX1cbiAgICAgICAgICAgIHdpZHRoPXtiYXJXaWR0aH1cbiAgICAgICAgICAgIGhlaWdodD17aH1cbiAgICAgICAgICAgIGZpbGw9e2NvbG9yc1t6XX1cbiAgICAgICAgICAvPlxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5oaWRlTGVnZW5kKSB7XG4gICAgICAgICAgcmV0LnB1c2goXG4gICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICBrZXk9e01hdGgucmFuZG9tKCl9XG4gICAgICAgICAgICAgIHg9e3hDICsgNyArIGJhcldpZHRoIC8gMn1cbiAgICAgICAgICAgICAgdGV4dEFuY2hvcj1cImVuZFwiXG4gICAgICAgICAgICAgIHk9e2ggPiAxNSA/IHkgKyAxNSA6IHkgKyA3fVxuICAgICAgICAgICAgICB7Li4udGhpcy5nZXRQcm9wc0ZvckxhYmVscygpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eFt6XX1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgc3QgLT0gaDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJldDtcbiAgICB9KTtcblxuICByZW5kZXJMZWdlbmQgPSAoe1xuICAgIGxlZ2VuZCxcbiAgICBjb2xvcnMsXG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH06IFBpY2s8QWJzdHJhY3RDaGFydENvbmZpZywgXCJ3aWR0aFwiIHwgXCJoZWlnaHRcIj4gJiB7XG4gICAgbGVnZW5kOiBzdHJpbmdbXTtcbiAgICBjb2xvcnM6IHN0cmluZ1tdO1xuICB9KSA9PlxuICAgIGxlZ2VuZC5tYXAoKHgsIGkpID0+IHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxHIGtleT17TWF0aC5yYW5kb20oKX0+XG4gICAgICAgICAgPFJlY3RcbiAgICAgICAgICAgIHdpZHRoPVwiMTZweFwiXG4gICAgICAgICAgICBoZWlnaHQ9XCIxNnB4XCJcbiAgICAgICAgICAgIGZpbGw9e2NvbG9yc1tpXX1cbiAgICAgICAgICAgIHJ4PXs4fVxuICAgICAgICAgICAgcnk9ezh9XG4gICAgICAgICAgICB4PXt3aWR0aCAqIDAuNzF9XG4gICAgICAgICAgICB5PXtoZWlnaHQgKiAwLjcgLSBpICogNTB9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgeD17d2lkdGggKiAwLjc4fVxuICAgICAgICAgICAgeT17aGVpZ2h0ICogMC43NiAtIGkgKiA1MH1cbiAgICAgICAgICAgIHsuLi50aGlzLmdldFByb3BzRm9yTGFiZWxzKCl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3h9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L0c+XG4gICAgICApO1xuICAgIH0pO1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBwYWRkaW5nVG9wID0gMTU7XG4gICAgY29uc3QgcGFkZGluZ1JpZ2h0ID0gNTA7XG4gICAgY29uc3QgYmFyV2lkdGggPSAzMiAqIHRoaXMuZ2V0QmFyUGVyY2VudGFnZSgpO1xuXG4gICAgY29uc3Qge1xuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHQsXG4gICAgICBzdHlsZSA9IHt9LFxuICAgICAgZGF0YSxcbiAgICAgIHdpdGhIb3Jpem9udGFsTGFiZWxzID0gdHJ1ZSxcbiAgICAgIHdpdGhWZXJ0aWNhbExhYmVscyA9IHRydWUsXG4gICAgICBzZWdtZW50cyA9IDQsXG4gICAgICBkZWNpbWFsUGxhY2VzLFxuICAgICAgcGVyY2VudGlsZSA9IGZhbHNlLFxuICAgICAgdmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlID0gREVGQVVMVF9YX0xBQkVMU19IRUlHSFRfUEVSQ0VOVEFHRSxcbiAgICAgIGZvcm1hdFlMYWJlbCA9ICh5TGFiZWw6IHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4geUxhYmVsO1xuICAgICAgfSxcbiAgICAgIGhpZGVMZWdlbmQgPSBmYWxzZVxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgeyBib3JkZXJSYWRpdXMgPSAwIH0gPSBzdHlsZTtcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH07XG5cbiAgICBsZXQgYm9yZGVyID0gMDtcblxuICAgIGxldCBtYXggPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBhY3R1YWwgPSBkYXRhLmRhdGFbaV0ucmVkdWNlKChwdiwgY3YpID0+IHB2ICsgY3YsIDApO1xuICAgICAgaWYgKGFjdHVhbCA+IG1heCkge1xuICAgICAgICBtYXggPSBhY3R1YWw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBlcmNlbnRpbGUpIHtcbiAgICAgIGJvcmRlciA9IDEwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9yZGVyID0gbWF4O1xuICAgIH1cblxuICAgIGNvbnN0IHNob3dMZWdlbmQgPSAhaGlkZUxlZ2VuZCAmJiBkYXRhLmxlZ2VuZCAmJiBkYXRhLmxlZ2VuZC5sZW5ndGggIT0gMDtcbiAgICBjb25zdCBzdGFja2VkQmFyID0gc2hvd0xlZ2VuZDtcblxuICAgIHJldHVybiAoXG4gICAgICA8VmlldyBzdHlsZT17c3R5bGV9PlxuICAgICAgICA8U3ZnIGhlaWdodD17aGVpZ2h0fSB3aWR0aD17d2lkdGh9PlxuICAgICAgICAgIHt0aGlzLnJlbmRlckRlZnMoe1xuICAgICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgICAgLi4udGhpcy5wcm9wcy5jaGFydENvbmZpZ1xuICAgICAgICAgIH0pfVxuICAgICAgICAgIDxSZWN0XG4gICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgaGVpZ2h0PXtoZWlnaHR9XG4gICAgICAgICAgICByeD17Ym9yZGVyUmFkaXVzfVxuICAgICAgICAgICAgcnk9e2JvcmRlclJhZGl1c31cbiAgICAgICAgICAgIGZpbGw9XCJ1cmwoI2JhY2tncm91bmRHcmFkaWVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPEc+XG4gICAgICAgICAgICB7dGhpcy5yZW5kZXJIb3Jpem9udGFsTGluZXMoe1xuICAgICAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgICAgIGNvdW50OiBzZWdtZW50cyxcbiAgICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgdmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L0c+XG4gICAgICAgICAgPEc+XG4gICAgICAgICAgICB7d2l0aEhvcml6b250YWxMYWJlbHNcbiAgICAgICAgICAgICAgPyB0aGlzLnJlbmRlckhvcml6b250YWxMYWJlbHMoe1xuICAgICAgICAgICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgICAgICAgICAgY291bnQ6IHNlZ21lbnRzLFxuICAgICAgICAgICAgICAgICAgZGF0YTogWzAsIGJvcmRlcl0sXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgICAgICAgZGVjaW1hbFBsYWNlcyxcbiAgICAgICAgICAgICAgICAgIHZlcnRpY2FsTGFiZWxzSGVpZ2h0UGVyY2VudGFnZSxcbiAgICAgICAgICAgICAgICAgIGZvcm1hdFlMYWJlbFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIDogbnVsbH1cbiAgICAgICAgICA8L0c+XG4gICAgICAgICAgPEc+XG4gICAgICAgICAgICB7d2l0aFZlcnRpY2FsTGFiZWxzXG4gICAgICAgICAgICAgID8gdGhpcy5yZW5kZXJWZXJ0aWNhbExhYmVscyh7XG4gICAgICAgICAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgICAgICAgICBsYWJlbHM6IGRhdGEubGFiZWxzLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBwYWRkaW5nUmlnaHQgKyAyOCxcbiAgICAgICAgICAgICAgICAgIHN0YWNrZWRCYXIsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbE9mZnNldDogYmFyV2lkdGgsXG4gICAgICAgICAgICAgICAgICB2ZXJ0aWNhbExhYmVsc0hlaWdodFBlcmNlbnRhZ2VcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICA6IG51bGx9XG4gICAgICAgICAgPC9HPlxuICAgICAgICAgIDxHPlxuICAgICAgICAgICAge3RoaXMucmVuZGVyQmFycyh7XG4gICAgICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICAgICAgZGF0YTogZGF0YS5kYXRhLFxuICAgICAgICAgICAgICBib3JkZXIsXG4gICAgICAgICAgICAgIGNvbG9yczogdGhpcy5wcm9wcy5kYXRhLmJhckNvbG9ycyxcbiAgICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBwYWRkaW5nUmlnaHQgKyAyMCxcbiAgICAgICAgICAgICAgc3RhY2tlZEJhcixcbiAgICAgICAgICAgICAgdmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L0c+XG4gICAgICAgICAge3Nob3dMZWdlbmQgJiZcbiAgICAgICAgICAgIHRoaXMucmVuZGVyTGVnZW5kKHtcbiAgICAgICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgICAgICBsZWdlbmQ6IGRhdGEubGVnZW5kLFxuICAgICAgICAgICAgICBjb2xvcnM6IHRoaXMucHJvcHMuZGF0YS5iYXJDb2xvcnNcbiAgICAgICAgICAgIH0pfVxuICAgICAgICA8L1N2Zz5cbiAgICAgIDwvVmlldz5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFN0YWNrZWRCYXJDaGFydDtcbiJdfQ==
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhY2tlZEJhckNoYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1N0YWNrZWRCYXJDaGFydC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLElBQUksRUFBYSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEQsT0FBTyxhQUFhLEVBQUUsRUFHcEIsa0NBQWtDLEVBQ25DLE1BQU0saUJBQWlCLENBQUM7QUF1RHpCO0lBQThCLG1DQUc3QjtJQUhEOztRQUlFLHNCQUFnQixHQUFHO1lBQ1QsSUFBQSxLQUFzQixLQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsY0FBM0IsRUFBakIsYUFBYSxtQkFBRyxDQUFDLEtBQUEsQ0FBNEI7WUFDckQsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQyxDQUFDO1FBRUYsa0JBQVksR0FBRyxVQUFDLEdBQW1CLEVBQUUsQ0FBaUI7WUFDcEQsT0FBTyxLQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQ3BFLENBQUMsQ0FBQyxLQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTO2dCQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1IsQ0FBQyxDQUFDO1FBRUYsZ0JBQVUsR0FBRyxVQUFDLEVBc0JiO2dCQXJCQyxJQUFJLFVBQUEsRUFDSixLQUFLLFdBQUEsRUFDTCxNQUFNLFlBQUEsRUFDTixVQUFVLGdCQUFBLEVBQ1YsWUFBWSxrQkFBQSxFQUNaLE1BQU0sWUFBQSxFQUNOLE1BQU0sWUFBQSxFQUNOLGtCQUFrQixFQUFsQixVQUFVLG1CQUFH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TjtRQUFBLEVBQUUsR0FBRyxDQUNQO01BQUEsRUFBRSxJQUFJLENBQUMsQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUNILHNCQUFDO0FBQUQsQ0FBQyxBQWxQRCxDQUE4QixhQUFhLEdBa1AxQztBQUVELGVBQWUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVmlldywgVmlld1N0eWxlIH0gZnJvbSBcInJlYWN0LW5hdGl2ZVwiO1xuaW1wb3J0IHsgRywgUmVjdCwgU3ZnLCBUZXh0IH0gZnJvbSBcInJlYWN0LW5hdGl2ZS1zdmdcIjtcblxuaW1wb3J0IEFic3RyYWN0Q2hhcnQsIHtcbiAgQWJzdHJhY3RDaGFydENvbmZpZyxcbiAgQWJzdHJhY3RDaGFydFByb3BzLFxuICBERUZBVUxUX1hfTEFCRUxTX0hFSUdIVF9QRVJDRU5UQUdFXG59IGZyb20gXCIuL0Fic3RyYWN0Q2hhcnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTdGFja2VkQmFyQ2hhcnREYXRhIHtcbiAgbGFiZWxzOiBzdHJpbmdbXTtcbiAgbGVnZW5kOiBzdHJpbmdbXTtcbiAgZGF0YTogbnVtYmVyW11bXTtcbiAgYmFyQ29sb3JzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFja2VkQmFyQ2hhcnRQcm9wcyBleHRlbmRzIEFic3RyYWN0Q2hhcnRQcm9wcyB7XG4gIC8qKlxuICAgKiBFLmcuXG4gICAqIGBgYGphdmFzY3JpcHRcbiAgICogY29uc3QgZGF0YSA9IHtcbiAgICogICBsYWJlbHM6IFtcIlRlc3QxXCIsIFwiVGVzdDJcIl0sXG4gICAqICAgbGVnZW5kOiBbXCJMMVwiLCBcIkwyXCIsIFwiTDNcIl0sXG4gICAqICAgZGF0YTogW1s2MCwgNjAsIDYwXSwgWzMwLCAzMCwgNjBdXSxcbiAgICogICBiYXJDb2xvcnM6IFtcIiNkZmU0ZWFcIiwgXCIjY2VkNmUwXCIsIFwiI2E0YjBiZVwiXVxuICAgKiB9O1xuICAgKiBgYGBcbiAgICovXG4gIGRhdGE6IFN0YWNrZWRCYXJDaGFydERhdGE7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBjaGFydENvbmZpZzogQWJzdHJhY3RDaGFydENvbmZpZztcbiAgaGlkZUxlZ2VuZDogYm9vbGVhbjtcbiAgc3R5bGU/OiBQYXJ0aWFsPFZpZXdTdHlsZT47XG4gIGJhclBlcmNlbnRhZ2U/OiBudW1iZXI7XG4gIGRlY2ltYWxQbGFjZXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBTaG93IHZlcnRpY2FsIGxhYmVscyAtIGRlZmF1bHQ6IFRydWUuXG4gICAqL1xuICB3aXRoVmVydGljYWxMYWJlbHM/OiBib29sZWFuO1xuICAvKipcbiAgICogU2hvdyBob3Jpem9udGFsIGxhYmVscyAtIGRlZmF1bHQ6IFRydWUuXG4gICAqL1xuICB3aXRoSG9yaXpvbnRhbExhYmVscz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGhvcml6b250YWwgbGluZXNcbiAgICovXG4gIHNlZ21lbnRzPzogbnVtYmVyO1xuXG4gIHBlcmNlbnRpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQZXJjZW50YWdlIG9mIHRoZSBjaGFydCBoZWlnaHQsIGRlZGljYXRlZCB0byB2ZXJ0aWNhbCBsYWJlbHNcbiAgICogKHNwYWNlIGJlbG93IGNoYXJ0KVxuICAgKi9cbiAgdmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlPzogbnVtYmVyO1xuXG4gIGZvcm1hdFlMYWJlbD86ICh5TGFiZWw6IHN0cmluZykgPT4gc3RyaW5nO1xufVxuXG50eXBlIFN0YWNrZWRCYXJDaGFydFN0YXRlID0ge307XG5cbmNsYXNzIFN0YWNrZWRCYXJDaGFydCBleHRlbmRzIEFic3RyYWN0Q2hhcnQ8XG4gIFN0YWNrZWRCYXJDaGFydFByb3BzLFxuICBTdGFja2VkQmFyQ2hhcnRTdGF0ZVxuPiB7XG4gIGdldEJhclBlcmNlbnRhZ2UgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBiYXJQZXJjZW50YWdlID0gMSB9ID0gdGhpcy5wcm9wcy5jaGFydENvbmZpZztcbiAgICByZXR1cm4gYmFyUGVyY2VudGFnZTtcbiAgfTtcblxuICBnZXRCYXJSYWRpdXMgPSAocmV0OiBzdHJpbmcgfCBhbnlbXSwgeDogc3RyaW5nIHwgYW55W10pID0+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGFydENvbmZpZy5iYXJSYWRpdXMgJiYgcmV0Lmxlbmd0aCA9PT0geC5sZW5ndGggLSAxXG4gICAgICA/IHRoaXMucHJvcHMuY2hhcnRDb25maWcuYmFyUmFkaXVzXG4gICAgICA6IDA7XG4gIH07XG5cbiAgcmVuZGVyQmFycyA9ICh7XG4gICAgZGF0YSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgcGFkZGluZ1RvcCxcbiAgICBwYWRkaW5nUmlnaHQsXG4gICAgYm9yZGVyLFxuICAgIGNvbG9ycyxcbiAgICBzdGFja2VkQmFyID0gZmFsc2UsXG4gICAgdmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlXG4gIH06IFBpY2s8XG4gICAgT21pdDxBYnN0cmFjdENoYXJ0Q29uZmlnLCBcImRhdGFcIj4sXG4gICAgfCBcIndpZHRoXCJcbiAgICB8IFwiaGVpZ2h0XCJcbiAgICB8IFwicGFkZGluZ1JpZ2h0XCJcbiAgICB8IFwicGFkZGluZ1RvcFwiXG4gICAgfCBcInN0YWNrZWRCYXJcIlxuICAgIHwgXCJ2ZXJ0aWNhbExhYmVsc0hlaWdodFBlcmNlbnRhZ2VcIlxuICA+ICYge1xuICAgIGJvcmRlcjogbnVtYmVyO1xuICAgIGNvbG9yczogc3RyaW5nW107XG4gICAgZGF0YTogbnVtYmVyW11bXTtcbiAgfSkgPT5cbiAgICBkYXRhLm1hcCgoeCwgaSkgPT4ge1xuICAgICAgY29uc3QgYmFyV2lkdGggPSAzMiAqIHRoaXMuZ2V0QmFyUGVyY2VudGFnZSgpO1xuICAgICAgY29uc3QgcmV0ID0gW107XG4gICAgICBsZXQgaCA9IDA7XG4gICAgICBsZXQgc3QgPSBwYWRkaW5nVG9wO1xuXG4gICAgICBsZXQgZmFjID0gMTtcbiAgICAgIGlmIChzdGFja2VkQmFyKSB7XG4gICAgICAgIGZhYyA9IDAuNztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN1bSA9IHRoaXMucHJvcHMucGVyY2VudGlsZSA/IHgucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCkgOiBib3JkZXI7XG4gICAgICBjb25zdCBiYXJzQXJlYUhlaWdodCA9IGhlaWdodCAqIHZlcnRpY2FsTGFiZWxzSGVpZ2h0UGVyY2VudGFnZTtcbiAgICAgIGZvciAobGV0IHogPSAwOyB6IDwgeC5sZW5ndGg7IHorKykge1xuICAgICAgICBoID0gYmFyc0FyZWFIZWlnaHQgKiAoeFt6XSAvIHN1bSk7XG4gICAgICAgIGNvbnN0IHkgPSBiYXJzQXJlYUhlaWdodCAtIGggKyBzdDtcbiAgICAgICAgY29uc3QgeEMgPVxuICAgICAgICAgIChwYWRkaW5nUmlnaHQgK1xuICAgICAgICAgICAgKGkgKiAod2lkdGggLSBwYWRkaW5nUmlnaHQpKSAvIGRhdGEubGVuZ3RoICtcbiAgICAgICAgICAgIGJhcldpZHRoIC8gMikgKlxuICAgICAgICAgIGZhYztcblxuICAgICAgICByZXQucHVzaChcbiAgICAgICAgICA8UmVjdFxuICAgICAgICAgICAga2V5PXtgYmFyLSR7aX0tJHt6fWB9XG4gICAgICAgICAgICB4PXt4Q31cbiAgICAgICAgICAgIHk9e3l9XG4gICAgICAgICAgICByeD17dGhpcy5nZXRCYXJSYWRpdXMocmV0LCB4KX1cbiAgICAgICAgICAgIHJ5PXt0aGlzLmdldEJhclJhZGl1cyhyZXQsIHgpfVxuICAgICAgICAgICAgd2lkdGg9e2JhcldpZHRofVxuICAgICAgICAgICAgaGVpZ2h0PXtofVxuICAgICAgICAgICAgZmlsbD17Y29sb3JzW3pdfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLmhpZGVMZWdlbmQpIHtcbiAgICAgICAgICByZXQucHVzaChcbiAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgIGtleT17YGJhci1sYWJlbC0ke2l9LSR7en1gfVxuICAgICAgICAgICAgICB4PXt4QyArIDcgKyBiYXJXaWR0aCAvIDJ9XG4gICAgICAgICAgICAgIHRleHRBbmNob3I9XCJlbmRcIlxuICAgICAgICAgICAgICB5PXtoID4gMTUgPyB5ICsgMTUgOiB5ICsgN31cbiAgICAgICAgICAgICAgey4uLnRoaXMuZ2V0UHJvcHNGb3JMYWJlbHMoKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3hbel19XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0IC09IGg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSk7XG5cbiAgcmVuZGVyTGVnZW5kID0gKHtcbiAgICBsZWdlbmQsXG4gICAgY29sb3JzLFxuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9OiBQaWNrPEFic3RyYWN0Q2hhcnRDb25maWcsIFwid2lkdGhcIiB8IFwiaGVpZ2h0XCI+ICYge1xuICAgIGxlZ2VuZDogc3RyaW5nW107XG4gICAgY29sb3JzOiBzdHJpbmdbXTtcbiAgfSkgPT5cbiAgICBsZWdlbmQubWFwKCh4LCBpKSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8RyBrZXk9e2BsZWdlbmQtJHtpfWB9PlxuICAgICAgICAgIDxSZWN0XG4gICAgICAgICAgICB3aWR0aD1cIjE2cHhcIlxuICAgICAgICAgICAgaGVpZ2h0PVwiMTZweFwiXG4gICAgICAgICAgICBmaWxsPXtjb2xvcnNbaV19XG4gICAgICAgICAgICByeD17OH1cbiAgICAgICAgICAgIHJ5PXs4fVxuICAgICAgICAgICAgeD17d2lkdGggKiAwLjcxfVxuICAgICAgICAgICAgeT17aGVpZ2h0ICogMC43IC0gaSAqIDUwfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIHg9e3dpZHRoICogMC43OH1cbiAgICAgICAgICAgIHk9e2hlaWdodCAqIDAuNzYgLSBpICogNTB9XG4gICAgICAgICAgICB7Li4udGhpcy5nZXRQcm9wc0ZvckxhYmVscygpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt4fVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9HPlxuICAgICAgKTtcbiAgICB9KTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgcGFkZGluZ1RvcCA9IDE1O1xuICAgIGNvbnN0IHBhZGRpbmdSaWdodCA9IDUwO1xuICAgIGNvbnN0IGJhcldpZHRoID0gMzIgKiB0aGlzLmdldEJhclBlcmNlbnRhZ2UoKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgICAgc3R5bGUgPSB7fSxcbiAgICAgIGRhdGEsXG4gICAgICB3aXRoSG9yaXpvbnRhbExhYmVscyA9IHRydWUsXG4gICAgICB3aXRoVmVydGljYWxMYWJlbHMgPSB0cnVlLFxuICAgICAgc2VnbWVudHMgPSA0LFxuICAgICAgZGVjaW1hbFBsYWNlcyxcbiAgICAgIHBlcmNlbnRpbGUgPSBmYWxzZSxcbiAgICAgIHZlcnRpY2FsTGFiZWxzSGVpZ2h0UGVyY2VudGFnZSA9IERFRkFVTFRfWF9MQUJFTFNfSEVJR0hUX1BFUkNFTlRBR0UsXG4gICAgICBmb3JtYXRZTGFiZWwgPSAoeUxhYmVsOiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIHlMYWJlbDtcbiAgICAgIH0sXG4gICAgICBoaWRlTGVnZW5kID0gZmFsc2VcbiAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IHsgYm9yZGVyUmFkaXVzID0gMCB9ID0gc3R5bGU7XG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHRcbiAgICB9O1xuXG4gICAgbGV0IGJvcmRlciA9IDA7XG5cbiAgICBsZXQgbWF4ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgYWN0dWFsID0gZGF0YS5kYXRhW2ldLnJlZHVjZSgocHYsIGN2KSA9PiBwdiArIGN2LCAwKTtcbiAgICAgIGlmIChhY3R1YWwgPiBtYXgpIHtcbiAgICAgICAgbWF4ID0gYWN0dWFsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwZXJjZW50aWxlKSB7XG4gICAgICBib3JkZXIgPSAxMDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvcmRlciA9IG1heDtcbiAgICB9XG5cbiAgICBjb25zdCBzaG93TGVnZW5kID0gIWhpZGVMZWdlbmQgJiYgZGF0YS5sZWdlbmQgJiYgZGF0YS5sZWdlbmQubGVuZ3RoICE9IDA7XG4gICAgY29uc3Qgc3RhY2tlZEJhciA9IHNob3dMZWdlbmQ7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlfT5cbiAgICAgICAgPFN2ZyBoZWlnaHQ9e2hlaWdodH0gd2lkdGg9e3dpZHRofT5cbiAgICAgICAgICB7dGhpcy5yZW5kZXJEZWZzKHtcbiAgICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICAgIC4uLnRoaXMucHJvcHMuY2hhcnRDb25maWdcbiAgICAgICAgICB9KX1cbiAgICAgICAgICA8UmVjdFxuICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgIGhlaWdodD17aGVpZ2h0fVxuICAgICAgICAgICAgcng9e2JvcmRlclJhZGl1c31cbiAgICAgICAgICAgIHJ5PXtib3JkZXJSYWRpdXN9XG4gICAgICAgICAgICBmaWxsPXt0aGlzLmdldEdyYWRpZW50VXJsKFwiYmFja2dyb3VuZEdyYWRpZW50XCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPEc+XG4gICAgICAgICAgICB7dGhpcy5yZW5kZXJIb3Jpem9udGFsTGluZXMoe1xuICAgICAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgICAgIGNvdW50OiBzZWdtZW50cyxcbiAgICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgdmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L0c+XG4gICAgICAgICAgPEc+XG4gICAgICAgICAgICB7d2l0aEhvcml6b250YWxMYWJlbHNcbiAgICAgICAgICAgICAgPyB0aGlzLnJlbmRlckhvcml6b250YWxMYWJlbHMoe1xuICAgICAgICAgICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgICAgICAgICAgY291bnQ6IHNlZ21lbnRzLFxuICAgICAgICAgICAgICAgICAgZGF0YTogWzAsIGJvcmRlcl0sXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgICAgICAgZGVjaW1hbFBsYWNlcyxcbiAgICAgICAgICAgICAgICAgIHZlcnRpY2FsTGFiZWxzSGVpZ2h0UGVyY2VudGFnZSxcbiAgICAgICAgICAgICAgICAgIGZvcm1hdFlMYWJlbFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIDogbnVsbH1cbiAgICAgICAgICA8L0c+XG4gICAgICAgICAgPEc+XG4gICAgICAgICAgICB7d2l0aFZlcnRpY2FsTGFiZWxzXG4gICAgICAgICAgICAgID8gdGhpcy5yZW5kZXJWZXJ0aWNhbExhYmVscyh7XG4gICAgICAgICAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgICAgICAgICBsYWJlbHM6IGRhdGEubGFiZWxzLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBwYWRkaW5nUmlnaHQgKyAyOCxcbiAgICAgICAgICAgICAgICAgIHN0YWNrZWRCYXIsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbE9mZnNldDogYmFyV2lkdGgsXG4gICAgICAgICAgICAgICAgICB2ZXJ0aWNhbExhYmVsc0hlaWdodFBlcmNlbnRhZ2VcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICA6IG51bGx9XG4gICAgICAgICAgPC9HPlxuICAgICAgICAgIDxHPlxuICAgICAgICAgICAge3RoaXMucmVuZGVyQmFycyh7XG4gICAgICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICAgICAgZGF0YTogZGF0YS5kYXRhLFxuICAgICAgICAgICAgICBib3JkZXIsXG4gICAgICAgICAgICAgIGNvbG9yczogdGhpcy5wcm9wcy5kYXRhLmJhckNvbG9ycyxcbiAgICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBwYWRkaW5nUmlnaHQgKyAyMCxcbiAgICAgICAgICAgICAgc3RhY2tlZEJhcixcbiAgICAgICAgICAgICAgdmVydGljYWxMYWJlbHNIZWlnaHRQZXJjZW50YWdlXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L0c+XG4gICAgICAgICAge3Nob3dMZWdlbmQgJiZcbiAgICAgICAgICAgIHRoaXMucmVuZGVyTGVnZW5kKHtcbiAgICAgICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgICAgICBsZWdlbmQ6IGRhdGEubGVnZW5kLFxuICAgICAgICAgICAgICBjb2xvcnM6IHRoaXMucHJvcHMuZGF0YS5iYXJDb2xvcnNcbiAgICAgICAgICAgIH0pfVxuICAgICAgICA8L1N2Zz5cbiAgICAgIDwvVmlldz5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFN0YWNrZWRCYXJDaGFydDtcbiJdfQ==
@@ -1,17 +1,16 @@
1
- /// <reference types="react" />
2
1
  import { RectProps } from "react-native-svg";
3
2
  import AbstractChart from "../AbstractChart";
4
3
  import { ContributionGraphProps, ContributionGraphState } from ".";
5
- export declare type ContributionChartValue = {
4
+ export type ContributionChartValue = {
6
5
  value: number;
7
6
  title: string;
8
7
  tooltipDataAttrs: TooltipDataAttrs;
9
8
  date: Date;
10
9
  };
11
- export declare type TooltipDataAttrs = (value: ContributionChartValue) => Partial<RectProps> | Partial<RectProps>;
10
+ export type TooltipDataAttrs = (value: ContributionChartValue) => Partial<RectProps> | Partial<RectProps>;
12
11
  declare class ContributionGraph extends AbstractChart<ContributionGraphProps, ContributionGraphState> {
13
12
  constructor(props: ContributionGraphProps);
14
- UNSAFE_componentWillReceiveProps(nextProps: ContributionGraphProps): void;
13
+ componentDidUpdate(prevProps: ContributionGraphProps): void;
15
14
  getSquareSizeWithGutter(): number;
16
15
  getMonthLabelSize(): number;
17
16
  getStartDate(): Date;
@@ -1 +1 @@
1
- {"version":3,"file":"ContributionGraph.d.ts","sourceRoot":"","sources":["../../src/contribution-graph/ContributionGraph.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAW,SAAS,EAAa,MAAM,kBAAkB,CAAC;AAEjE,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAY7C,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,GAAG,CAAC;AAMnE,oBAAY,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,oBAAY,gBAAgB,GAAG,CAC7B,KAAK,EAAE,sBAAsB,KAC1B,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAE7C,cAAM,iBAAkB,SAAQ,aAAa,CAC3C,sBAAsB,EACtB,sBAAsB,CACvB;gBACa,KAAK,EAAE,sBAAsB;IAYzC,gCAAgC,CAAC,SAAS,EAAE,sBAAsB;IAYlE,uBAAuB;IAIvB,iBAAiB;IAWjB,YAAY;IAIZ,UAAU;IAIV,yBAAyB;IAIzB,sBAAsB;IAItB,oBAAoB;IAIpB,YAAY;IAQZ,YAAY;IAIZ,QAAQ;IAOR,SAAS;IAMT,aAAa,CAAC,MAAM,EAAE,sBAAsB,EAAE;;;;;IA+B9C,gBAAgB,CAAC,KAAK,EAAE,MAAM;IAO9B,oBAAoB,CAAC,KAAK,EAAE,MAAM;IAsBlC,gBAAgB,CAAC,KAAK,EAAE,MAAM;IAQ9B,2BAA2B,CAAC,KAAK,EAAE,MAAM;IAWzC,2BAA2B,CAAC,KAAK,EAAE,sBAAsB;IAUzD,mBAAmB,CAAC,SAAS,EAAE,MAAM;IAOrC,0BAA0B;IAO1B,uBAAuB;IAOvB,UAAU;IAOV,oBAAoB,CAAC,QAAQ,EAAE,MAAM;IAOrC,wBAAwB,CAAC,SAAS,EAAE,MAAM;IAc1C,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IA6B5C,cAAc,CAAC,KAAK,EAAE,MAAM;IAiB5B,UAAU,CAAC,SAAS,EAAE,MAAM;IAW5B,cAAc;IAMd,iBAAiB;IA8BjB,OAAc,YAAY;;;;;;;;;;;MAWxB;IAEF,MAAM;CA+BP;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"ContributionGraph.d.ts","sourceRoot":"","sources":["../../src/contribution-graph/ContributionGraph.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAW,SAAS,EAAa,MAAM,kBAAkB,CAAC;AAEjE,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAY7C,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,GAAG,CAAC;AAMnE,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAC7B,KAAK,EAAE,sBAAsB,KAC1B,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAE7C,cAAM,iBAAkB,SAAQ,aAAa,CAC3C,sBAAsB,EACtB,sBAAsB,CACvB;gBACa,KAAK,EAAE,sBAAsB;IAYzC,kBAAkB,CAAC,SAAS,EAAE,sBAAsB;IAwBpD,uBAAuB;IAIvB,iBAAiB;IAWjB,YAAY;IAIZ,UAAU;IAIV,yBAAyB;IAIzB,sBAAsB;IAItB,oBAAoB;IAIpB,YAAY;IAQZ,YAAY;IAIZ,QAAQ;IAOR,SAAS;IAMT,aAAa,CAAC,MAAM,EAAE,sBAAsB,EAAE;;;;;IA+B9C,gBAAgB,CAAC,KAAK,EAAE,MAAM;IAO9B,oBAAoB,CAAC,KAAK,EAAE,MAAM;IAwBlC,gBAAgB,CAAC,KAAK,EAAE,MAAM;IAQ9B,2BAA2B,CAAC,KAAK,EAAE,MAAM;IAWzC,2BAA2B,CAAC,KAAK,EAAE,sBAAsB;IAUzD,mBAAmB,CAAC,SAAS,EAAE,MAAM;IAOrC,0BAA0B;IAO1B,uBAAuB;IAOvB,UAAU;IAOV,oBAAoB,CAAC,QAAQ,EAAE,MAAM;IAOrC,wBAAwB,CAAC,SAAS,EAAE,MAAM;IAc1C,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IA6B5C,cAAc,CAAC,KAAK,EAAE,MAAM;IAiB5B,UAAU,CAAC,SAAS,EAAE,MAAM;IAW5B,cAAc;IAMd,iBAAiB;IA8BjB,OAAc,YAAY;;;;;;;;;;;MAWxB;IAEF,MAAM;CA+BP;AAED,eAAe,iBAAiB,CAAC"}
@@ -2,10 +2,12 @@ var __extends = (this && this.__extends) || (function () {
2
2
  var extendStatics = function (d, b) {
3
3
  extendStatics = Object.setPrototypeOf ||
4
4
  ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
6
  return extendStatics(d, b);
7
7
  };
8
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");
9
11
  extendStatics(d, b);
10
12
  function __() { this.constructor = d; }
11
13
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
@@ -45,8 +47,17 @@ var ContributionGraph = /** @class */ (function (_super) {
45
47
  };
46
48
  return _this;
47
49
  }
48
- ContributionGraph.prototype.UNSAFE_componentWillReceiveProps = function (nextProps) {
49
- var _a = this.getValueCache(nextProps.values), maxValue = _a.maxValue, minValue = _a.minValue, valueCache = _a.valueCache;
50
+ ContributionGraph.prototype.componentDidUpdate = function (prevProps) {
51
+ var shouldUpdateValueCache = prevProps.values !== this.props.values ||
52
+ prevProps.endDate !== this.props.endDate ||
53
+ prevProps.numDays !== this.props.numDays ||
54
+ prevProps.accessor !== this.props.accessor ||
55
+ prevProps.titleForValue !== this.props.titleForValue ||
56
+ prevProps.tooltipDataAttrs !== this.props.tooltipDataAttrs;
57
+ if (!shouldUpdateValueCache) {
58
+ return;
59
+ }
60
+ var _a = this.getValueCache(this.props.values), maxValue = _a.maxValue, minValue = _a.minValue, valueCache = _a.valueCache;
50
61
  this.setState({
51
62
  maxValue: maxValue,
52
63
  minValue: minValue,
@@ -131,7 +142,9 @@ var ContributionGraph = /** @class */ (function (_super) {
131
142
  if (this.state.valueCache[index].value) {
132
143
  var count = this.state.valueCache[index].value[this.props.accessor];
133
144
  if (count) {
134
- var opacity = mapValue(count, this.state.maxValue === this.state.minValue ? 0 : this.state.minValue, isNaN(this.state.maxValue) ? 1 : this.state.maxValue, 0.15 + 0.05, // + 0.05 to make smaller values a bit more visible
145
+ var opacity = mapValue(count, this.state.maxValue === this.state.minValue
146
+ ? 0
147
+ : this.state.minValue, isNaN(this.state.maxValue) ? 1 : this.state.maxValue, 0.15 + 0.05, // + 0.05 to make smaller values a bit more visible
135
148
  1);
136
149
  return this.props.chartConfig.color(opacity);
137
150
  }
@@ -173,19 +186,19 @@ var ContributionGraph = /** @class */ (function (_super) {
173
186
  if (this.props.horizontal) {
174
187
  return null;
175
188
  }
176
- return this.getWeekWidth() + MONTH_LABEL_GUTTER_SIZE + ", 0";
189
+ return "".concat(this.getWeekWidth() + MONTH_LABEL_GUTTER_SIZE, ", 0");
177
190
  };
178
191
  ContributionGraph.prototype.getTransformForAllWeeks = function () {
179
192
  if (this.props.horizontal) {
180
- return "0, " + (this.getMonthLabelSize() - 100);
193
+ return "0, ".concat(this.getMonthLabelSize() - 100);
181
194
  }
182
195
  return null;
183
196
  };
184
197
  ContributionGraph.prototype.getViewBox = function () {
185
198
  if (this.props.horizontal) {
186
- return this.getWidth() + " " + this.getHeight();
199
+ return "".concat(this.getWidth(), " ").concat(this.getHeight());
187
200
  }
188
- return this.getHeight() + " " + this.getWidth();
201
+ return "".concat(this.getHeight(), " ").concat(this.getWidth());
189
202
  };
190
203
  ContributionGraph.prototype.getSquareCoordinates = function (dayIndex) {
191
204
  if (this.props.horizontal) {
@@ -216,8 +229,8 @@ var ContributionGraph = /** @class */ (function (_super) {
216
229
  var _a = this.getSquareCoordinates(dayIndex), x = _a[0], y = _a[1];
217
230
  var _b = this.props.squareSize, squareSize = _b === void 0 ? SQUARE_SIZE : _b;
218
231
  return (<Rect key={index} width={squareSize} height={squareSize} x={x + paddingLeft} y={y} title={this.getTitleForIndex(index)} fill={this.getClassNameForIndex(index)} onPress={function () {
219
- _this.handleDayPress(index);
220
- }} {...this.getTooltipDataAttrsForIndex(index)}/>);
232
+ _this.handleDayPress(index);
233
+ }} {...this.getTooltipDataAttrsForIndex(index)}/>);
221
234
  };
222
235
  ContributionGraph.prototype.handleDayPress = function (index) {
223
236
  var _a;
@@ -236,8 +249,8 @@ var ContributionGraph = /** @class */ (function (_super) {
236
249
  var _a = this.getTransformForWeek(weekIndex), x = _a[0], y = _a[1];
237
250
  return (<G key={weekIndex} x={x} y={y}>
238
251
  {_.range(DAYS_IN_WEEK).map(function (dayIndex) {
239
- return _this.renderSquare(dayIndex, weekIndex * DAYS_IN_WEEK + dayIndex);
240
- })}
252
+ return _this.renderSquare(dayIndex, weekIndex * DAYS_IN_WEEK + dayIndex);
253
+ })}
241
254
  </G>);
242
255
  };
243
256
  ContributionGraph.prototype.renderAllWeeks = function () {
@@ -257,8 +270,8 @@ var ContributionGraph = /** @class */ (function (_super) {
257
270
  var _a = _this.getMonthLabelCoordinates(weekIndex), x = _a[0], y = _a[1];
258
271
  return endOfWeek.getDate() >= 1 && endOfWeek.getDate() <= DAYS_IN_WEEK ? (<Text key={weekIndex} x={x + paddingLeft} y={y + 8} {..._this.getPropsForLabels()}>
259
272
  {_this.props.getMonthLabel
260
- ? _this.props.getMonthLabel(endOfWeek.getMonth())
261
- : MONTH_LABELS[endOfWeek.getMonth()]}
273
+ ? _this.props.getMonthLabel(endOfWeek.getMonth())
274
+ : MONTH_LABELS[endOfWeek.getMonth()]}
262
275
  </Text>) : null;
263
276
  });
264
277
  };
@@ -272,7 +285,7 @@ var ContributionGraph = /** @class */ (function (_super) {
272
285
  return (<View style={style}>
273
286
  <Svg height={this.props.height} width={this.props.width}>
274
287
  {this.renderDefs(__assign({ width: this.props.width, height: this.props.height }, this.props.chartConfig))}
275
- <Rect width="100%" height={this.props.height} rx={borderRadius} ry={borderRadius} fill="url(#backgroundGradient)"/>
288
+ <Rect width="100%" height={this.props.height} rx={borderRadius} ry={borderRadius} fill={this.getGradientUrl("backgroundGradient")}/>
276
289
  <G>{this.renderMonthLabels()}</G>
277
290
  <G>{this.renderAllWeeks()}</G>
278
291
  </Svg>
@@ -293,4 +306,4 @@ var ContributionGraph = /** @class */ (function (_super) {
293
306
  return ContributionGraph;
294
307
  }(AbstractChart));
295
308
  export default ContributionGraph;
296
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJpYnV0aW9uR3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJpYnV0aW9uLWdyYXBoL0NvbnRyaWJ1dGlvbkdyYXBoLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQWEsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpFLE9BQU8sYUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLGFBQWEsRUFDYix1QkFBdUIsRUFDdkIsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLFlBQVksRUFDYixNQUFNLGFBQWEsQ0FBQztBQUdyQixJQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDdkIsSUFBTSx1QkFBdUIsR0FBRyxDQUFDLENBQUM7QUFDbEMsSUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBYXZCO0lBQWdDLHFDQUcvQjtJQUNDLDJCQUFZLEtBQTZCO1FBQXpDLFlBQ0Usa0JBQU0sS0FBSyxDQUFDLFNBU2I7UUFQSyxJQUFBLEtBQXFDLEtBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFuRSxRQUFRLGNBQUEsRUFBRSxRQUFRLGNBQUEsRUFBRSxVQUFVLGdCQUFxQyxDQUFDO1FBRTFFLEtBQUksQ0FBQyxLQUFLLEdBQUc7WUFDWCxRQUFRLFVBQUE7WUFDUixRQUFRLFVBQUE7WUFDUixVQUFVLFlBQUE7U0FDWCxDQUFD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c2hcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFZpZXcgfSBmcm9tIFwicmVhY3QtbmF0aXZlXCI7XG5pbXBvcnQgeyBHLCBSZWN0LCBSZWN0UHJvcHMsIFN2ZywgVGV4dCB9IGZyb20gXCJyZWFjdC1uYXRpdmUtc3ZnXCI7XG5cbmltcG9ydCBBYnN0cmFjdENoYXJ0IGZyb20gXCIuLi9BYnN0cmFjdENoYXJ0XCI7XG5pbXBvcnQgeyBtYXBWYWx1ZSB9IGZyb20gXCIuLi9VdGlsc1wiO1xuaW1wb3J0IHtcbiAgY29udmVydFRvRGF0ZSxcbiAgZ2V0QmVnaW5uaW5nVGltZUZvckRhdGUsXG4gIHNoaWZ0RGF0ZVxufSBmcm9tIFwiLi9EYXRlSGVscGVyc1wiO1xuaW1wb3J0IHtcbiAgREFZU19JTl9XRUVLLFxuICBNSUxMSVNFQ09ORFNfSU5fT05FX0RBWSxcbiAgTU9OVEhfTEFCRUxTXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ29udHJpYnV0aW9uR3JhcGhQcm9wcywgQ29udHJpYnV0aW9uR3JhcGhTdGF0ZSB9IGZyb20gXCIuXCI7XG5cbmNvbnN0IFNRVUFSRV9TSVpFID0gMjA7XG5jb25zdCBNT05USF9MQUJFTF9HVVRURVJfU0laRSA9IDg7XG5jb25zdCBwYWRkaW5nTGVmdCA9IDMyO1xuXG5leHBvcnQgdHlwZSBDb250cmlidXRpb25DaGFydFZhbHVlID0ge1xuICB2YWx1ZTogbnVtYmVyO1xuICB0aXRsZTogc3RyaW5nO1xuICB0b29sdGlwRGF0YUF0dHJzOiBUb29sdGlwRGF0YUF0dHJzO1xuICBkYXRlOiBEYXRlO1xufTtcblxuZXhwb3J0IHR5cGUgVG9vbHRpcERhdGFBdHRycyA9IChcbiAgdmFsdWU6IENvbnRyaWJ1dGlvbkNoYXJ0VmFsdWVcbikgPT4gUGFydGlhbDxSZWN0UHJvcHM+IHwgUGFydGlhbDxSZWN0UHJvcHM+O1xuXG5jbGFzcyBDb250cmlidXRpb25HcmFwaCBleHRlbmRzIEFic3RyYWN0Q2hhcnQ8XG4gIENvbnRyaWJ1dGlvbkdyYXBoUHJvcHMsXG4gIENvbnRyaWJ1dGlvbkdyYXBoU3RhdGVcbj4ge1xuICBjb25zdHJ1Y3Rvcihwcm9wczogQ29udHJpYnV0aW9uR3JhcGhQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIGxldCB7IG1heFZhbHVlLCBtaW5WYWx1ZSwgdmFsdWVDYWNoZSB9ID0gdGhpcy5nZXRWYWx1ZUNhY2hlKHByb3BzLnZhbHVlcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgbWF4VmFsdWUsXG4gICAgICBtaW5WYWx1ZSxcbiAgICAgIHZhbHVlQ2FjaGVcbiAgICB9O1xuICB9XG5cbiAgVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzOiBDb250cmlidXRpb25HcmFwaFByb3BzKSB7XG4gICAgbGV0IHsgbWF4VmFsdWUsIG1pblZhbHVlLCB2YWx1ZUNhY2hlIH0gPSB0aGlzLmdldFZhbHVlQ2FjaGUoXG4gICAgICBuZXh0UHJvcHMudmFsdWVzXG4gICAgKTtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgbWF4VmFsdWUsXG4gICAgICBtaW5WYWx1ZSxcbiAgICAgIHZhbHVlQ2FjaGVcbiAgICB9KTtcbiAgfVxuXG4gIGdldFNxdWFyZVNpemVXaXRoR3V0dGVyKCkge1xuICAgIHJldHVybiAodGhpcy5wcm9wcy5zcXVhcmVTaXplIHx8IFNRVUFSRV9TSVpFKSArIHRoaXMucHJvcHMuZ3V0dGVyU2l6ZTtcbiAgfVxuXG4gIGdldE1vbnRoTGFiZWxTaXplKCkge1xuICAgIGxldCB7IHNxdWFyZVNpemUgPSBTUVVBUkVfU0laRSB9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAoIXRoaXMucHJvcHMuc2hvd01vbnRoTGFiZWxzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKHRoaXMucHJvcHMuaG9yaXpvbnRhbCkge1xuICAgICAgcmV0dXJuIHNxdWFyZVNpemUgKyBNT05USF9MQUJFTF9HVVRURVJfU0laRTtcbiAgICB9XG4gICAgcmV0dXJuIDIgKiAoc3F1YXJlU2l6ZSArIE1PTlRIX0xBQkVMX0dVVFRFUl9TSVpFKTtcbiAgfVxuXG4gIGdldFN0YXJ0RGF0ZSgpIHtcbiAgICByZXR1cm4gc2hpZnREYXRlKHRoaXMuZ2V0RW5kRGF0ZSgpLCAtdGhpcy5wcm9wcy5udW1EYXlzICsgMSk7IC8vICsxIGJlY2F1c2UgZW5kRGF0ZSBpcyBpbmNsdXNpdmVcbiAgfVxuXG4gIGdldEVuZERhdGUoKSB7XG4gICAgcmV0dXJuIGdldEJlZ2lubmluZ1RpbWVGb3JEYXRlKGNvbnZlcnRUb0RhdGUodGhpcy5wcm9wcy5lbmREYXRlKSk7XG4gIH1cblxuICBnZXRTdGFydERhdGVXaXRoRW1wdHlEYXlzKCkge1xuICAgIHJldHVybiBzaGlmdERhdGUodGhpcy5nZXRTdGFydERhdGUoKSwgLXRoaXMuZ2V0TnVtRW1wdHlEYXlzQXRTdGFydCgpKTtcbiAgfVxuXG4gIGdldE51bUVtcHR5RGF5c0F0U3RhcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RhcnREYXRlKCkuZ2V0RGF5KCk7XG4gIH1cblxuICBnZXROdW1FbXB0eURheXNBdEVuZCgpIHtcbiAgICByZXR1cm4gREFZU19JTl9XRUVLIC0gMSAtIHRoaXMuZ2V0RW5kRGF0ZSgpLmdldERheSgpO1xuICB9XG5cbiAgZ2V0V2Vla0NvdW50KCkge1xuICAgIGNvbnN0IG51bURheXNSb3VuZGVkVG9XZWVrID1cbiAgICAgIHRoaXMucHJvcHMubnVtRGF5cyArXG4gICAgICB0aGlzLmdldE51bUVtcHR5RGF5c0F0U3RhcnQoKSArXG4gICAgICB0aGlzLmdldE51bUVtcHR5RGF5c0F0RW5kKCk7XG4gICAgcmV0dXJuIE1hdGguY2VpbChudW1EYXlzUm91bmRlZFRvV2VlayAvIERBWVNfSU5fV0VFSyk7XG4gIH1cblxuICBnZXRXZWVrV2lkdGgoKSB7XG4gICAgcmV0dXJuIERBWVNfSU5fV0VFSyAqIHRoaXMuZ2V0U3F1YXJlU2l6ZVdpdGhHdXR0ZXIoKTtcbiAgfVxuXG4gIGdldFdpZHRoKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmdldFdlZWtDb3VudCgpICogdGhpcy5nZXRTcXVhcmVTaXplV2l0aEd1dHRlcigpIC1cbiAgICAgIHRoaXMucHJvcHMuZ3V0dGVyU2l6ZVxuICAgICk7XG4gIH1cblxuICBnZXRIZWlnaHQoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZ2V0V2Vla1dpZHRoKCkgKyAodGhpcy5nZXRNb250aExhYmVsU2l6ZSgpIC0gdGhpcy5wcm9wcy5ndXR0ZXJTaXplKVxuICAgICk7XG4gIH1cblxuICBnZXRWYWx1ZUNhY2hlKHZhbHVlczogQ29udHJpYnV0aW9uQ2hhcnRWYWx1ZVtdKSB7XG4gICAgbGV0IG1pblZhbHVlID0gSW5maW5pdHksXG4gICAgICBtYXhWYWx1ZSA9IC1JbmZpbml0eTtcblxuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZUNhY2hlOiB2YWx1ZXMucmVkdWNlKChtZW1vLCB2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRlID0gY29udmVydFRvRGF0ZSh2YWx1ZS5kYXRlKTtcblxuICAgICAgICBjb25zdCBpbmRleCA9IE1hdGguZmxvb3IoXG4gICAgICAgICAgKGRhdGUudmFsdWVPZigpIC0gdGhpcy5nZXRTdGFydERhdGVXaXRoRW1wdHlEYXlzKCkudmFsdWVPZigpKSAvXG4gICAgICAgICAgICBNSUxMSVNFQ09ORFNfSU5fT05FX0RBWVxuICAgICAgICApO1xuXG4gICAgICAgIG1pblZhbHVlID0gTWF0aC5taW4odmFsdWVbdGhpcy5wcm9wcy5hY2Nlc3Nvcl0sIG1pblZhbHVlKTtcbiAgICAgICAgbWF4VmFsdWUgPSBNYXRoLm1heCh2YWx1ZVt0aGlzLnByb3BzLmFjY2Vzc29yXSwgbWF4VmFsdWUpO1xuXG4gICAgICAgIG1lbW9baW5kZXhdID0ge1xuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLnByb3BzLnRpdGxlRm9yVmFsdWVcbiAgICAgICAgICAgID8gdGhpcy5wcm9wcy50aXRsZUZvclZhbHVlKHZhbHVlKVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIHRvb2x0aXBEYXRhQXR0cnM6IHRoaXMuZ2V0VG9vbHRpcERhdGFBdHRyc0ZvclZhbHVlKHZhbHVlKVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBtZW1vO1xuICAgICAgfSwge30pLFxuICAgICAgbWluVmFsdWUsXG4gICAgICBtYXhWYWx1ZVxuICAgIH07XG4gIH1cblxuICBnZXRWYWx1ZUZvckluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZUNhY2hlW2luZGV4XSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhdGUudmFsdWVDYWNoZVtpbmRleF0udmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0Q2xhc3NOYW1lRm9ySW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnN0YXRlLnZhbHVlQ2FjaGVbaW5kZXhdKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZUNhY2hlW2luZGV4XS52YWx1ZSkge1xuICAgICAgICBjb25zdCBjb3VudCA9IHRoaXMuc3RhdGUudmFsdWVDYWNoZVtpbmRleF0udmFsdWVbdGhpcy5wcm9wcy5hY2Nlc3Nvcl07XG5cbiAgICAgICAgaWYgKGNvdW50KSB7XG4gICAgICAgICAgY29uc3Qgb3BhY2l0eSA9IG1hcFZhbHVlKFxuICAgICAgICAgICAgY291bnQsXG4gICAgICAgICAgICB0aGlzLnN0YXRlLm1heFZhbHVlID09PSB0aGlzLnN0YXRlLm1pblZhbHVlID8gMDogdGhpcy5zdGF0ZS5taW5WYWx1ZSxcbiAgICAgICAgICAgIGlzTmFOKHRoaXMuc3RhdGUubWF4VmFsdWUpID8gMSA6IHRoaXMuc3RhdGUubWF4VmFsdWUsXG4gICAgICAgICAgICAwLjE1ICsgMC4wNSwgLy8gKyAwLjA1IHRvIG1ha2Ugc21hbGxlciB2YWx1ZXMgYSBiaXQgbW9yZSB2aXNpYmxlXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLnByb3BzLmNoYXJ0Q29uZmlnLmNvbG9yKG9wYWNpdHkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY2hhcnRDb25maWcuY29sb3IoMC4xNSk7XG4gIH1cblxuICBnZXRUaXRsZUZvckluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZUNhY2hlW2luZGV4XSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhdGUudmFsdWVDYWNoZVtpbmRleF0udGl0bGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvcHMudGl0bGVGb3JWYWx1ZSA/IHRoaXMucHJvcHMudGl0bGVGb3JWYWx1ZShudWxsKSA6IG51bGw7XG4gIH1cblxuICBnZXRUb29sdGlwRGF0YUF0dHJzRm9ySW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnN0YXRlLnZhbHVlQ2FjaGVbaW5kZXhdKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZS52YWx1ZUNhY2hlW2luZGV4XS50b29sdGlwRGF0YUF0dHJzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFRvb2x0aXBEYXRhQXR0cnNGb3JWYWx1ZSh7XG4gICAgICBkYXRlOiBudWxsLFxuICAgICAgW3RoaXMucHJvcHMuYWNjZXNzb3JdOiBudWxsXG4gICAgfSBhcyBDb250cmlidXRpb25DaGFydFZhbHVlKTtcbiAgfVxuXG4gIGdldFRvb2x0aXBEYXRhQXR0cnNGb3JWYWx1ZSh2YWx1ZTogQ29udHJpYnV0aW9uQ2hhcnRWYWx1ZSkge1xuICAgIGNvbnN0IHsgdG9vbHRpcERhdGFBdHRycyB9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmICh0eXBlb2YgdG9vbHRpcERhdGFBdHRycyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gdG9vbHRpcERhdGFBdHRycyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvb2x0aXBEYXRhQXR0cnM7XG4gIH1cblxuICBnZXRUcmFuc2Zvcm1Gb3JXZWVrKHdlZWtJbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuaG9yaXpvbnRhbCkge1xuICAgICAgcmV0dXJuIFt3ZWVrSW5kZXggKiB0aGlzLmdldFNxdWFyZVNpemVXaXRoR3V0dGVyKCksIDUwXTtcbiAgICB9XG4gICAgcmV0dXJuIFsxMCwgd2Vla0luZGV4ICogdGhpcy5nZXRTcXVhcmVTaXplV2l0aEd1dHRlcigpXTtcbiAgfVxuXG4gIGdldFRyYW5zZm9ybUZvck1vbnRoTGFiZWxzKCkge1xuICAgIGlmICh0aGlzLnByb3BzLmhvcml6b250YWwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy5nZXRXZWVrV2lkdGgoKSArIE1PTlRIX0xBQkVMX0dVVFRFUl9TSVpFfSwgMGA7XG4gIH1cblxuICBnZXRUcmFuc2Zvcm1Gb3JBbGxXZWVrcygpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5ob3Jpem9udGFsKSB7XG4gICAgICByZXR1cm4gYDAsICR7dGhpcy5nZXRNb250aExhYmVsU2l6ZSgpIC0gMTAwfWA7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0Vmlld0JveCgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5ob3Jpem9udGFsKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5nZXRXaWR0aCgpfSAke3RoaXMuZ2V0SGVpZ2h0KCl9YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuZ2V0SGVpZ2h0KCl9ICR7dGhpcy5nZXRXaWR0aCgpfWA7XG4gIH1cblxuICBnZXRTcXVhcmVDb29yZGluYXRlcyhkYXlJbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuaG9yaXpvbnRhbCkge1xuICAgICAgcmV0dXJuIFswLCBkYXlJbmRleCAqIHRoaXMuZ2V0U3F1YXJlU2l6ZVdpdGhHdXR0ZXIoKV07XG4gICAgfVxuICAgIHJldHVybiBbZGF5SW5kZXggKiB0aGlzLmdldFNxdWFyZVNpemVXaXRoR3V0dGVyKCksIDBdO1xuICB9XG5cbiAgZ2V0TW9udGhMYWJlbENvb3JkaW5hdGVzKHdlZWtJbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuaG9yaXpvbnRhbCkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgd2Vla0luZGV4ICogdGhpcy5nZXRTcXVhcmVTaXplV2l0aEd1dHRlcigpLFxuICAgICAgICB0aGlzLmdldE1vbnRoTGFiZWxTaXplKCkgLSBNT05USF9MQUJFTF9HVVRURVJfU0laRVxuICAgICAgXTtcbiAgICB9XG4gICAgY29uc3QgdmVydGljYWxPZmZzZXQgPSAtMjtcbiAgICByZXR1cm4gW1xuICAgICAgMCxcbiAgICAgICh3ZWVrSW5kZXggKyAxKSAqIHRoaXMuZ2V0U3F1YXJlU2l6ZVdpdGhHdXR0ZXIoKSArIHZlcnRpY2FsT2Zmc2V0XG4gICAgXTtcbiAgfVxuXG4gIHJlbmRlclNxdWFyZShkYXlJbmRleDogbnVtYmVyLCBpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgaW5kZXhPdXRPZlJhbmdlID1cbiAgICAgIGluZGV4IDwgdGhpcy5nZXROdW1FbXB0eURheXNBdFN0YXJ0KCkgfHxcbiAgICAgIGluZGV4ID49IHRoaXMuZ2V0TnVtRW1wdHlEYXlzQXRTdGFydCgpICsgdGhpcy5wcm9wcy5udW1EYXlzO1xuXG4gICAgaWYgKGluZGV4T3V0T2ZSYW5nZSAmJiAhdGhpcy5wcm9wcy5zaG93T3V0T2ZSYW5nZURheXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IFt4LCB5XSA9IHRoaXMuZ2V0U3F1YXJlQ29vcmRpbmF0ZXMoZGF5SW5kZXgpO1xuICAgIGNvbnN0IHsgc3F1YXJlU2l6ZSA9IFNRVUFSRV9TSVpFIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxSZWN0XG4gICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgIHdpZHRoPXtzcXVhcmVTaXplfVxuICAgICAgICBoZWlnaHQ9e3NxdWFyZVNpemV9XG4gICAgICAgIHg9e3ggKyBwYWRkaW5nTGVmdH1cbiAgICAgICAgeT17eX1cbiAgICAgICAgdGl0bGU9e3RoaXMuZ2V0VGl0bGVGb3JJbmRleChpbmRleCl9XG4gICAgICAgIGZpbGw9e3RoaXMuZ2V0Q2xhc3NOYW1lRm9ySW5kZXgoaW5kZXgpfVxuICAgICAgICBvblByZXNzPXsoKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVEYXlQcmVzcyhpbmRleCk7XG4gICAgICAgIH19XG4gICAgICAgIHsuLi50aGlzLmdldFRvb2x0aXBEYXRhQXR0cnNGb3JJbmRleChpbmRleCl9XG4gICAgICAvPlxuICAgICk7XG4gIH1cblxuICBoYW5kbGVEYXlQcmVzcyhpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLnByb3BzLm9uRGF5UHJlc3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLm9uRGF5UHJlc3MoXG4gICAgICB0aGlzLnN0YXRlLnZhbHVlQ2FjaGVbaW5kZXhdICYmIHRoaXMuc3RhdGUudmFsdWVDYWNoZVtpbmRleF0udmFsdWVcbiAgICAgICAgPyB0aGlzLnN0YXRlLnZhbHVlQ2FjaGVbaW5kZXhdLnZhbHVlXG4gICAgICAgIDoge1xuICAgICAgICAgICAgW3RoaXMucHJvcHMuYWNjZXNzb3JdOiAwLFxuICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoXG4gICAgICAgICAgICAgIHRoaXMuZ2V0U3RhcnREYXRlKCkudmFsdWVPZigpICsgaW5kZXggKiBNSUxMSVNFQ09ORFNfSU5fT05FX0RBWVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcmVuZGVyV2Vlayh3ZWVrSW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IFt4LCB5XSA9IHRoaXMuZ2V0VHJhbnNmb3JtRm9yV2Vlayh3ZWVrSW5kZXgpO1xuICAgIHJldHVybiAoXG4gICAgICA8RyBrZXk9e3dlZWtJbmRleH0geD17eH0geT17eX0+XG4gICAgICAgIHtfLnJhbmdlKERBWVNfSU5fV0VFSykubWFwKGRheUluZGV4ID0+XG4gICAgICAgICAgdGhpcy5yZW5kZXJTcXVhcmUoZGF5SW5kZXgsIHdlZWtJbmRleCAqIERBWVNfSU5fV0VFSyArIGRheUluZGV4KVxuICAgICAgICApfVxuICAgICAgPC9HPlxuICAgICk7XG4gIH1cblxuICByZW5kZXJBbGxXZWVrcygpIHtcbiAgICByZXR1cm4gXy5yYW5nZSh0aGlzLmdldFdlZWtDb3VudCgpKS5tYXAod2Vla0luZGV4ID0+XG4gICAgICB0aGlzLnJlbmRlcldlZWsod2Vla0luZGV4KVxuICAgICk7XG4gIH1cblxuICByZW5kZXJNb250aExhYmVscygpIHtcbiAgICBpZiAoIXRoaXMucHJvcHMuc2hvd01vbnRoTGFiZWxzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB3ZWVrUmFuZ2UgPSBfLnJhbmdlKHRoaXMuZ2V0V2Vla0NvdW50KCkgLSAxKTsgLy8gZG9uJ3QgcmVuZGVyIGZvciBsYXN0IHdlZWssIGJlY2F1c2UgbGFiZWwgd2lsbCBiZSBjdXQgb2ZmXG5cbiAgICByZXR1cm4gd2Vla1JhbmdlLm1hcCh3ZWVrSW5kZXggPT4ge1xuICAgICAgY29uc3QgZW5kT2ZXZWVrID0gc2hpZnREYXRlKFxuICAgICAgICB0aGlzLmdldFN0YXJ0RGF0ZVdpdGhFbXB0eURheXMoKSxcbiAgICAgICAgKHdlZWtJbmRleCArIDEpICogREFZU19JTl9XRUVLXG4gICAgICApO1xuXG4gICAgICBjb25zdCBbeCwgeV0gPSB0aGlzLmdldE1vbnRoTGFiZWxDb29yZGluYXRlcyh3ZWVrSW5kZXgpO1xuXG4gICAgICByZXR1cm4gZW5kT2ZXZWVrLmdldERhdGUoKSA+PSAxICYmIGVuZE9mV2Vlay5nZXREYXRlKCkgPD0gREFZU19JTl9XRUVLID8gKFxuICAgICAgICA8VGV4dFxuICAgICAgICAgIGtleT17d2Vla0luZGV4fVxuICAgICAgICAgIHg9e3ggKyBwYWRkaW5nTGVmdH1cbiAgICAgICAgICB5PXt5ICsgOH1cbiAgICAgICAgICB7Li4udGhpcy5nZXRQcm9wc0ZvckxhYmVscygpfVxuICAgICAgICA+XG4gICAgICAgICAge3RoaXMucHJvcHMuZ2V0TW9udGhMYWJlbFxuICAgICAgICAgICAgPyB0aGlzLnByb3BzLmdldE1vbnRoTGFiZWwoZW5kT2ZXZWVrLmdldE1vbnRoKCkpXG4gICAgICAgICAgICA6IE1PTlRIX0xBQkVMU1tlbmRPZldlZWsuZ2V0TW9udGgoKV19XG4gICAgICAgIDwvVGV4dD5cbiAgICAgICkgOiBudWxsO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgbnVtRGF5czogMjAwLFxuICAgIGVuZERhdGU6IG5ldyBEYXRlKCksXG4gICAgZ3V0dGVyU2l6ZTogMSxcbiAgICBzcXVhcmVTaXplOiBTUVVBUkVfU0laRSxcbiAgICBob3Jpem9udGFsOiB0cnVlLFxuICAgIHNob3dNb250aExhYmVsczogdHJ1ZSxcbiAgICBzaG93T3V0T2ZSYW5nZURheXM6IGZhbHNlLFxuICAgIGFjY2Vzc29yOiBcImNvdW50XCIsXG4gICAgY2xhc3NGb3JWYWx1ZTogdmFsdWUgPT4gKHZhbHVlID8gXCJibGFja1wiIDogXCIjOGNjNjY1XCIpLFxuICAgIHN0eWxlOiB7fVxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IHN0eWxlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgbGV0IHsgYm9yZGVyUmFkaXVzID0gMCB9ID0gc3R5bGU7XG5cbiAgICBpZiAoIWJvcmRlclJhZGl1cyAmJiB0aGlzLnByb3BzLmNoYXJ0Q29uZmlnLnN0eWxlKSB7XG4gICAgICBjb25zdCBzdHVwaWRYbyA9IHRoaXMucHJvcHMuY2hhcnRDb25maWcuc3R5bGUuYm9yZGVyUmFkaXVzO1xuICAgICAgYm9yZGVyUmFkaXVzID0gc3R1cGlkWG87XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZX0+XG4gICAgICAgIDxTdmcgaGVpZ2h0PXt0aGlzLnByb3BzLmhlaWdodH0gd2lkdGg9e3RoaXMucHJvcHMud2lkdGh9PlxuICAgICAgICAgIHt0aGlzLnJlbmRlckRlZnMoe1xuICAgICAgICAgICAgd2lkdGg6IHRoaXMucHJvcHMud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMucHJvcHMuaGVpZ2h0LFxuICAgICAgICAgICAgLi4udGhpcy5wcm9wcy5jaGFydENvbmZpZ1xuICAgICAgICAgIH0pfVxuICAgICAgICAgIDxSZWN0XG4gICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgaGVpZ2h0PXt0aGlzLnByb3BzLmhlaWdodH1cbiAgICAgICAgICAgIHJ4PXtib3JkZXJSYWRpdXN9XG4gICAgICAgICAgICByeT17Ym9yZGVyUmFkaXVzfVxuICAgICAgICAgICAgZmlsbD1cInVybCgjYmFja2dyb3VuZEdyYWRpZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8Rz57dGhpcy5yZW5kZXJNb250aExhYmVscygpfTwvRz5cbiAgICAgICAgICA8Rz57dGhpcy5yZW5kZXJBbGxXZWVrcygpfTwvRz5cbiAgICAgICAgPC9Tdmc+XG4gICAgICA8L1ZpZXc+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDb250cmlidXRpb25HcmFwaDtcbiJdfQ==
309
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJpYnV0aW9uR3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJpYnV0aW9uLWdyYXBoL0NvbnRyaWJ1dGlvbkdyYXBoLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBYSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakUsT0FBTyxhQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsYUFBYSxFQUNiLHVCQUF1QixFQUN2QixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsWUFBWSxFQUNiLE1BQU0sYUFBYSxDQUFDO0FBR3JCLElBQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixJQUFNLHVCQUF1QixHQUFHLENBQUMsQ0FBQztBQUNsQyxJQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFhdkI7SUFBZ0MscUNBRy9CO0lBQ0MsMkJBQVksS0FBNkI7UUFDdkMsWUFBQSxNQUFLLFlBQUMsS0FBSyxDQUFDLFNBQUM7UUFFVCxJQUFBLEtBQXFDLEtBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFuRSxRQUFRLGNBQUEsRUFBRSxRQUFRLGNBQUEsRUFBRSxVQUFVLGdCQUFxQyxDQUFDO1FBRTFFLEtBQUksQ0FBQyxLQUFLLEdBQUc7WUFDWCxRQUFRLFVBQUE7WUFDUixRQUFRLFVBQUE7WUFDUixVQUFVLFlBQUE7U0FD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QWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBRWxEO1VBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FDaEM7VUFBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FDL0I7UUFBQSxFQUFFLEdBQUcsQ0FDUDtNQUFBLEVBQUUsSUFBSSxDQUFDLENBQ1IsQ0FBQztJQUNKLENBQUM7SUEzQ2EsOEJBQVksR0FBRztRQUMzQixPQUFPLEVBQUUsR0FBRztRQUNaLE9BQU8sRUFBRSxJQUFJLElBQUksRUFBRTtRQUNuQixVQUFVLEVBQUUsQ0FBQztRQUNiLFVBQVUsRUFBRSxXQUFXO1FBQ3ZCLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLGtCQUFrQixFQUFFLEtBQUs7UUFDekIsUUFBUSxFQUFFLE9BQU87UUFDakIsYUFBYSxFQUFFLFVBQUEsS0FBSyxJQUFJLE9BQUEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQTdCLENBQTZCO1FBQ3JELEtBQUssRUFBRSxFQUFFO0tBQ1YsQ0FBQztJQWlDSix3QkFBQztDQUFBLEFBelhELENBQWdDLGFBQWEsR0F5WDVDO0FBRUQsZUFBZSxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFZpZXcgfSBmcm9tIFwicmVhY3QtbmF0aXZlXCI7XG5pbXBvcnQgeyBHLCBSZWN0LCBSZWN0UHJvcHMsIFN2ZywgVGV4dCB9IGZyb20gXCJyZWFjdC1uYXRpdmUtc3ZnXCI7XG5cbmltcG9ydCBBYnN0cmFjdENoYXJ0IGZyb20gXCIuLi9BYnN0cmFjdENoYXJ0XCI7XG5pbXBvcnQgeyBtYXBWYWx1ZSB9IGZyb20gXCIuLi9VdGlsc1wiO1xuaW1wb3J0IHtcbiAgY29udmVydFRvRGF0ZSxcbiAgZ2V0QmVnaW5uaW5nVGltZUZvckRhdGUsXG4gIHNoaWZ0RGF0ZVxufSBmcm9tIFwiLi9EYXRlSGVscGVyc1wiO1xuaW1wb3J0IHtcbiAgREFZU19JTl9XRUVLLFxuICBNSUxMSVNFQ09ORFNfSU5fT05FX0RBWSxcbiAgTU9OVEhfTEFCRUxTXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ29udHJpYnV0aW9uR3JhcGhQcm9wcywgQ29udHJpYnV0aW9uR3JhcGhTdGF0ZSB9IGZyb20gXCIuXCI7XG5cbmNvbnN0IFNRVUFSRV9TSVpFID0gMjA7XG5jb25zdCBNT05USF9MQUJFTF9HVVRURVJfU0laRSA9IDg7XG5jb25zdCBwYWRkaW5nTGVmdCA9IDMyO1xuXG5leHBvcnQgdHlwZSBDb250cmlidXRpb25DaGFydFZhbHVlID0ge1xuICB2YWx1ZTogbnVtYmVyO1xuICB0aXRsZTogc3RyaW5nO1xuICB0b29sdGlwRGF0YUF0dHJzOiBUb29sdGlwRGF0YUF0dHJzO1xuICBkYXRlOiBEYXRlO1xufTtcblxuZXhwb3J0IHR5cGUgVG9vbHRpcERhdGFBdHRycyA9IChcbiAgdmFsdWU6IENvbnRyaWJ1dGlvbkNoYXJ0VmFsdWVcbikgPT4gUGFydGlhbDxSZWN0UHJvcHM+IHwgUGFydGlhbDxSZWN0UHJvcHM+O1xuXG5jbGFzcyBDb250cmlidXRpb25HcmFwaCBleHRlbmRzIEFic3RyYWN0Q2hhcnQ8XG4gIENvbnRyaWJ1dGlvbkdyYXBoUHJvcHMsXG4gIENvbnRyaWJ1dGlvbkdyYXBoU3RhdGVcbj4ge1xuICBjb25zdHJ1Y3Rvcihwcm9wczogQ29udHJpYnV0aW9uR3JhcGhQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIGxldCB7IG1heFZhbHVlLCBtaW5WYWx1ZSwgdmFsdWVDYWNoZSB9ID0gdGhpcy5nZXRWYWx1ZUNhY2hlKHByb3BzLnZhbHVlcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgbWF4VmFsdWUsXG4gICAgICBtaW5WYWx1ZSxcbiAgICAgIHZhbHVlQ2FjaGVcbiAgICB9O1xuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wczogQ29udHJpYnV0aW9uR3JhcGhQcm9wcykge1xuICAgIGNvbnN0IHNob3VsZFVwZGF0ZVZhbHVlQ2FjaGUgPVxuICAgICAgcHJldlByb3BzLnZhbHVlcyAhPT0gdGhpcy5wcm9wcy52YWx1ZXMgfHxcbiAgICAgIHByZXZQcm9wcy5lbmREYXRlICE9PSB0aGlzLnByb3BzLmVuZERhdGUgfHxcbiAgICAgIHByZXZQcm9wcy5udW1EYXlzICE9PSB0aGlzLnByb3BzLm51bURheXMgfHxcbiAgICAgIHByZXZQcm9wcy5hY2Nlc3NvciAhPT0gdGhpcy5wcm9wcy5hY2Nlc3NvciB8fFxuICAgICAgcHJldlByb3BzLnRpdGxlRm9yVmFsdWUgIT09IHRoaXMucHJvcHMudGl0bGVGb3JWYWx1ZSB8fFxuICAgICAgcHJldlByb3BzLnRvb2x0aXBEYXRhQXR0cnMgIT09IHRoaXMucHJvcHMudG9vbHRpcERhdGFBdHRycztcblxuICAgIGlmICghc2hvdWxkVXBkYXRlVmFsdWVDYWNoZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCB7IG1heFZhbHVlLCBtaW5WYWx1ZSwgdmFsdWVDYWNoZSB9ID0gdGhpcy5nZXRWYWx1ZUNhY2hlKFxuICAgICAgdGhpcy5wcm9wcy52YWx1ZXNcbiAgICApO1xuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBtYXhWYWx1ZSxcbiAgICAgIG1pblZhbHVlLFxuICAgICAgdmFsdWVDYWNoZVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0U3F1YXJlU2l6ZVdpdGhHdXR0ZXIoKSB7XG4gICAgcmV0dXJuICh0aGlzLnByb3BzLnNxdWFyZVNpemUgfHwgU1FVQVJFX1NJWkUpICsgdGhpcy5wcm9wcy5ndXR0ZXJTaXplO1xuICB9XG5cbiAgZ2V0TW9udGhMYWJlbFNpemUoKSB7XG4gICAgbGV0IHsgc3F1YXJlU2l6ZSA9IFNRVUFSRV9TSVpFIH0gPSB0aGlzLnByb3BzO1xuICAgIGlmICghdGhpcy5wcm9wcy5zaG93TW9udGhMYWJlbHMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9wcy5ob3Jpem9udGFsKSB7XG4gICAgICByZXR1cm4gc3F1YXJlU2l6ZSArIE1PTlRIX0xBQkVMX0dVVFRFUl9TSVpFO1xuICAgIH1cbiAgICByZXR1cm4gMiAqIChzcXVhcmVTaXplICsgTU9OVEhfTEFCRUxfR1VUVEVSX1NJWkUpO1xuICB9XG5cbiAgZ2V0U3RhcnREYXRlKCkge1xuICAgIHJldHVybiBzaGlmdERhdGUodGhpcy5nZXRFbmREYXRlKCksIC10aGlzLnByb3BzLm51bURheXMgKyAxKTsgLy8gKzEgYmVjYXVzZSBlbmREYXRlIGlzIGluY2x1c2l2ZVxuICB9XG5cbiAgZ2V0RW5kRGF0ZSgpIHtcbiAgICByZXR1cm4gZ2V0QmVnaW5uaW5nVGltZUZvckRhdGUoY29udmVydFRvRGF0ZSh0aGlzLnByb3BzLmVuZERhdGUpKTtcbiAgfVxuXG4gIGdldFN0YXJ0RGF0ZVdpdGhFbXB0eURheXMoKSB7XG4gICAgcmV0dXJuIHNoaWZ0RGF0ZSh0aGlzLmdldFN0YXJ0RGF0ZSgpLCAtdGhpcy5nZXROdW1FbXB0eURheXNBdFN0YXJ0KCkpO1xuICB9XG5cbiAgZ2V0TnVtRW1wdHlEYXlzQXRTdGFydCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdGFydERhdGUoKS5nZXREYXkoKTtcbiAgfVxuXG4gIGdldE51bUVtcHR5RGF5c0F0RW5kKCkge1xuICAgIHJldHVybiBEQVlTX0lOX1dFRUsgLSAxIC0gdGhpcy5nZXRFbmREYXRlKCkuZ2V0RGF5KCk7XG4gIH1cblxuICBnZXRXZWVrQ291bnQoKSB7XG4gICAgY29uc3QgbnVtRGF5c1JvdW5kZWRUb1dlZWsgPVxuICAgICAgdGhpcy5wcm9wcy5udW1EYXlzICtcbiAgICAgIHRoaXMuZ2V0TnVtRW1wdHlEYXlzQXRTdGFydCgpICtcbiAgICAgIHRoaXMuZ2V0TnVtRW1wdHlEYXlzQXRFbmQoKTtcbiAgICByZXR1cm4gTWF0aC5jZWlsKG51bURheXNSb3VuZGVkVG9XZWVrIC8gREFZU19JTl9XRUVLKTtcbiAgfVxuXG4gIGdldFdlZWtXaWR0aCgpIHtcbiAgICByZXR1cm4gREFZU19JTl9XRUVLICogdGhpcy5nZXRTcXVhcmVTaXplV2l0aEd1dHRlcigpO1xuICB9XG5cbiAgZ2V0V2lkdGgoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZ2V0V2Vla0NvdW50KCkgKiB0aGlzLmdldFNxdWFyZVNpemVXaXRoR3V0dGVyKCkgLVxuICAgICAgdGhpcy5wcm9wcy5ndXR0ZXJTaXplXG4gICAgKTtcbiAgfVxuXG4gIGdldEhlaWdodCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5nZXRXZWVrV2lkdGgoKSArICh0aGlzLmdldE1vbnRoTGFiZWxTaXplKCkgLSB0aGlzLnByb3BzLmd1dHRlclNpemUpXG4gICAgKTtcbiAgfVxuXG4gIGdldFZhbHVlQ2FjaGUodmFsdWVzOiBDb250cmlidXRpb25DaGFydFZhbHVlW10pIHtcbiAgICBsZXQgbWluVmFsdWUgPSBJbmZpbml0eSxcbiAgICAgIG1heFZhbHVlID0gLUluZmluaXR5O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlQ2FjaGU6IHZhbHVlcy5yZWR1Y2UoKG1lbW8sIHZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBjb252ZXJ0VG9EYXRlKHZhbHVlLmRhdGUpO1xuXG4gICAgICAgIGNvbnN0IGluZGV4ID0gTWF0aC5mbG9vcihcbiAgICAgICAgICAoZGF0ZS52YWx1ZU9mKCkgLSB0aGlzLmdldFN0YXJ0RGF0ZVdpdGhFbXB0eURheXMoKS52YWx1ZU9mKCkpIC9cbiAgICAgICAgICAgIE1JTExJU0VDT05EU19JTl9PTkVfREFZXG4gICAgICAgICk7XG5cbiAgICAgICAgbWluVmFsdWUgPSBNYXRoLm1pbih2YWx1ZVt0aGlzLnByb3BzLmFjY2Vzc29yXSwgbWluVmFsdWUpO1xuICAgICAgICBtYXhWYWx1ZSA9IE1hdGgubWF4KHZhbHVlW3RoaXMucHJvcHMuYWNjZXNzb3JdLCBtYXhWYWx1ZSk7XG5cbiAgICAgICAgbWVtb1tpbmRleF0gPSB7XG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgdGl0bGU6IHRoaXMucHJvcHMudGl0bGVGb3JWYWx1ZVxuICAgICAgICAgICAgPyB0aGlzLnByb3BzLnRpdGxlRm9yVmFsdWUodmFsdWUpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgdG9vbHRpcERhdGFBdHRyczogdGhpcy5nZXRUb29sdGlwRGF0YUF0dHJzRm9yVmFsdWUodmFsdWUpXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG1lbW87XG4gICAgICB9LCB7fSksXG4gICAgICBtaW5WYWx1ZSxcbiAgICAgIG1heFZhbHVlXG4gICAgfTtcbiAgfVxuXG4gIGdldFZhbHVlRm9ySW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnN0YXRlLnZhbHVlQ2FjaGVbaW5kZXhdKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZS52YWx1ZUNhY2hlW2luZGV4XS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXRDbGFzc05hbWVGb3JJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUudmFsdWVDYWNoZVtpbmRleF0pIHtcbiAgICAgIGlmICh0aGlzLnN0YXRlLnZhbHVlQ2FjaGVbaW5kZXhdLnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGNvdW50ID0gdGhpcy5zdGF0ZS52YWx1ZUNhY2hlW2luZGV4XS52YWx1ZVt0aGlzLnByb3BzLmFjY2Vzc29yXTtcblxuICAgICAgICBpZiAoY291bnQpIHtcbiAgICAgICAgICBjb25zdCBvcGFjaXR5ID0gbWFwVmFsdWUoXG4gICAgICAgICAgICBjb3VudCxcbiAgICAgICAgICAgIHRoaXMuc3RhdGUubWF4VmFsdWUgPT09IHRoaXMuc3RhdGUubWluVmFsdWVcbiAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgIDogdGhpcy5zdGF0ZS5taW5WYWx1ZSxcbiAgICAgICAgICAgIGlzTmFOKHRoaXMuc3RhdGUubWF4VmFsdWUpID8gMSA6IHRoaXMuc3RhdGUubWF4VmFsdWUsXG4gICAgICAgICAgICAwLjE1ICsgMC4wNSwgLy8gKyAwLjA1IHRvIG1ha2Ugc21hbGxlciB2YWx1ZXMgYSBiaXQgbW9yZSB2aXNpYmxlXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLnByb3BzLmNoYXJ0Q29uZmlnLmNvbG9yKG9wYWNpdHkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY2hhcnRDb25maWcuY29sb3IoMC4xNSk7XG4gIH1cblxuICBnZXRUaXRsZUZvckluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZUNhY2hlW2luZGV4XSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhdGUudmFsdWVDYWNoZVtpbmRleF0udGl0bGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvcHMudGl0bGVGb3JWYWx1ZSA/IHRoaXMucHJvcHMudGl0bGVGb3JWYWx1ZShudWxsKSA6IG51bGw7XG4gIH1cblxuICBnZXRUb29sdGlwRGF0YUF0dHJzRm9ySW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnN0YXRlLnZhbHVlQ2FjaGVbaW5kZXhdKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZS52YWx1ZUNhY2hlW2luZGV4XS50b29sdGlwRGF0YUF0dHJzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFRvb2x0aXBEYXRhQXR0cnNGb3JWYWx1ZSh7XG4gICAgICBkYXRlOiBudWxsLFxuICAgICAgW3RoaXMucHJvcHMuYWNjZXNzb3JdOiBudWxsXG4gICAgfSBhcyBDb250cmlidXRpb25DaGFydFZhbHVlKTtcbiAgfVxuXG4gIGdldFRvb2x0aXBEYXRhQXR0cnNGb3JWYWx1ZSh2YWx1ZTogQ29udHJpYnV0aW9uQ2hhcnRWYWx1ZSkge1xuICAgIGNvbnN0IHsgdG9vbHRpcERhdGFBdHRycyB9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmICh0eXBlb2YgdG9vbHRpcERhdGFBdHRycyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gdG9vbHRpcERhdGFBdHRycyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvb2x0aXBEYXRhQXR0cnM7XG4gIH1cblxuICBnZXRUcmFuc2Zvcm1Gb3JXZWVrKHdlZWtJbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuaG9yaXpvbnRhbCkge1xuICAgICAgcmV0dXJuIFt3ZWVrSW5kZXggKiB0aGlzLmdldFNxdWFyZVNpemVXaXRoR3V0dGVyKCksIDUwXTtcbiAgICB9XG4gICAgcmV0dXJuIFsxMCwgd2Vla0luZGV4ICogdGhpcy5nZXRTcXVhcmVTaXplV2l0aEd1dHRlcigpXTtcbiAgfVxuXG4gIGdldFRyYW5zZm9ybUZvck1vbnRoTGFiZWxzKCkge1xuICAgIGlmICh0aGlzLnByb3BzLmhvcml6b250YWwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy5nZXRXZWVrV2lkdGgoKSArIE1PTlRIX0xBQkVMX0dVVFRFUl9TSVpFfSwgMGA7XG4gIH1cblxuICBnZXRUcmFuc2Zvcm1Gb3JBbGxXZWVrcygpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5ob3Jpem9udGFsKSB7XG4gICAgICByZXR1cm4gYDAsICR7dGhpcy5nZXRNb250aExhYmVsU2l6ZSgpIC0gMTAwfWA7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0Vmlld0JveCgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5ob3Jpem9udGFsKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5nZXRXaWR0aCgpfSAke3RoaXMuZ2V0SGVpZ2h0KCl9YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuZ2V0SGVpZ2h0KCl9ICR7dGhpcy5nZXRXaWR0aCgpfWA7XG4gIH1cblxuICBnZXRTcXVhcmVDb29yZGluYXRlcyhkYXlJbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuaG9yaXpvbnRhbCkge1xuICAgICAgcmV0dXJuIFswLCBkYXlJbmRleCAqIHRoaXMuZ2V0U3F1YXJlU2l6ZVdpdGhHdXR0ZXIoKV07XG4gICAgfVxuICAgIHJldHVybiBbZGF5SW5kZXggKiB0aGlzLmdldFNxdWFyZVNpemVXaXRoR3V0dGVyKCksIDBdO1xuICB9XG5cbiAgZ2V0TW9udGhMYWJlbENvb3JkaW5hdGVzKHdlZWtJbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuaG9yaXpvbnRhbCkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgd2Vla0luZGV4ICogdGhpcy5nZXRTcXVhcmVTaXplV2l0aEd1dHRlcigpLFxuICAgICAgICB0aGlzLmdldE1vbnRoTGFiZWxTaXplKCkgLSBNT05USF9MQUJFTF9HVVRURVJfU0laRVxuICAgICAgXTtcbiAgICB9XG4gICAgY29uc3QgdmVydGljYWxPZmZzZXQgPSAtMjtcbiAgICByZXR1cm4gW1xuICAgICAgMCxcbiAgICAgICh3ZWVrSW5kZXggKyAxKSAqIHRoaXMuZ2V0U3F1YXJlU2l6ZVdpdGhHdXR0ZXIoKSArIHZlcnRpY2FsT2Zmc2V0XG4gICAgXTtcbiAgfVxuXG4gIHJlbmRlclNxdWFyZShkYXlJbmRleDogbnVtYmVyLCBpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgaW5kZXhPdXRPZlJhbmdlID1cbiAgICAgIGluZGV4IDwgdGhpcy5nZXROdW1FbXB0eURheXNBdFN0YXJ0KCkgfHxcbiAgICAgIGluZGV4ID49IHRoaXMuZ2V0TnVtRW1wdHlEYXlzQXRTdGFydCgpICsgdGhpcy5wcm9wcy5udW1EYXlzO1xuXG4gICAgaWYgKGluZGV4T3V0T2ZSYW5nZSAmJiAhdGhpcy5wcm9wcy5zaG93T3V0T2ZSYW5nZURheXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IFt4LCB5XSA9IHRoaXMuZ2V0U3F1YXJlQ29vcmRpbmF0ZXMoZGF5SW5kZXgpO1xuICAgIGNvbnN0IHsgc3F1YXJlU2l6ZSA9IFNRVUFSRV9TSVpFIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxSZWN0XG4gICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgIHdpZHRoPXtzcXVhcmVTaXplfVxuICAgICAgICBoZWlnaHQ9e3NxdWFyZVNpemV9XG4gICAgICAgIHg9e3ggKyBwYWRkaW5nTGVmdH1cbiAgICAgICAgeT17eX1cbiAgICAgICAgdGl0bGU9e3RoaXMuZ2V0VGl0bGVGb3JJbmRleChpbmRleCl9XG4gICAgICAgIGZpbGw9e3RoaXMuZ2V0Q2xhc3NOYW1lRm9ySW5kZXgoaW5kZXgpfVxuICAgICAgICBvblByZXNzPXsoKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVEYXlQcmVzcyhpbmRleCk7XG4gICAgICAgIH19XG4gICAgICAgIHsuLi50aGlzLmdldFRvb2x0aXBEYXRhQXR0cnNGb3JJbmRleChpbmRleCl9XG4gICAgICAvPlxuICAgICk7XG4gIH1cblxuICBoYW5kbGVEYXlQcmVzcyhpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLnByb3BzLm9uRGF5UHJlc3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLm9uRGF5UHJlc3MoXG4gICAgICB0aGlzLnN0YXRlLnZhbHVlQ2FjaGVbaW5kZXhdICYmIHRoaXMuc3RhdGUudmFsdWVDYWNoZVtpbmRleF0udmFsdWVcbiAgICAgICAgPyB0aGlzLnN0YXRlLnZhbHVlQ2FjaGVbaW5kZXhdLnZhbHVlXG4gICAgICAgIDoge1xuICAgICAgICAgICAgW3RoaXMucHJvcHMuYWNjZXNzb3JdOiAwLFxuICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoXG4gICAgICAgICAgICAgIHRoaXMuZ2V0U3RhcnREYXRlKCkudmFsdWVPZigpICsgaW5kZXggKiBNSUxMSVNFQ09ORFNfSU5fT05FX0RBWVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcmVuZGVyV2Vlayh3ZWVrSW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IFt4LCB5XSA9IHRoaXMuZ2V0VHJhbnNmb3JtRm9yV2Vlayh3ZWVrSW5kZXgpO1xuICAgIHJldHVybiAoXG4gICAgICA8RyBrZXk9e3dlZWtJbmRleH0geD17eH0geT17eX0+XG4gICAgICAgIHtfLnJhbmdlKERBWVNfSU5fV0VFSykubWFwKGRheUluZGV4ID0+XG4gICAgICAgICAgdGhpcy5yZW5kZXJTcXVhcmUoZGF5SW5kZXgsIHdlZWtJbmRleCAqIERBWVNfSU5fV0VFSyArIGRheUluZGV4KVxuICAgICAgICApfVxuICAgICAgPC9HPlxuICAgICk7XG4gIH1cblxuICByZW5kZXJBbGxXZWVrcygpIHtcbiAgICByZXR1cm4gXy5yYW5nZSh0aGlzLmdldFdlZWtDb3VudCgpKS5tYXAod2Vla0luZGV4ID0+XG4gICAgICB0aGlzLnJlbmRlcldlZWsod2Vla0luZGV4KVxuICAgICk7XG4gIH1cblxuICByZW5kZXJNb250aExhYmVscygpIHtcbiAgICBpZiAoIXRoaXMucHJvcHMuc2hvd01vbnRoTGFiZWxzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB3ZWVrUmFuZ2UgPSBfLnJhbmdlKHRoaXMuZ2V0V2Vla0NvdW50KCkgLSAxKTsgLy8gZG9uJ3QgcmVuZGVyIGZvciBsYXN0IHdlZWssIGJlY2F1c2UgbGFiZWwgd2lsbCBiZSBjdXQgb2ZmXG5cbiAgICByZXR1cm4gd2Vla1JhbmdlLm1hcCh3ZWVrSW5kZXggPT4ge1xuICAgICAgY29uc3QgZW5kT2ZXZWVrID0gc2hpZnREYXRlKFxuICAgICAgICB0aGlzLmdldFN0YXJ0RGF0ZVdpdGhFbXB0eURheXMoKSxcbiAgICAgICAgKHdlZWtJbmRleCArIDEpICogREFZU19JTl9XRUVLXG4gICAgICApO1xuXG4gICAgICBjb25zdCBbeCwgeV0gPSB0aGlzLmdldE1vbnRoTGFiZWxDb29yZGluYXRlcyh3ZWVrSW5kZXgpO1xuXG4gICAgICByZXR1cm4gZW5kT2ZXZWVrLmdldERhdGUoKSA+PSAxICYmIGVuZE9mV2Vlay5nZXREYXRlKCkgPD0gREFZU19JTl9XRUVLID8gKFxuICAgICAgICA8VGV4dFxuICAgICAgICAgIGtleT17d2Vla0luZGV4fVxuICAgICAgICAgIHg9e3ggKyBwYWRkaW5nTGVmdH1cbiAgICAgICAgICB5PXt5ICsgOH1cbiAgICAgICAgICB7Li4udGhpcy5nZXRQcm9wc0ZvckxhYmVscygpfVxuICAgICAgICA+XG4gICAgICAgICAge3RoaXMucHJvcHMuZ2V0TW9udGhMYWJlbFxuICAgICAgICAgICAgPyB0aGlzLnByb3BzLmdldE1vbnRoTGFiZWwoZW5kT2ZXZWVrLmdldE1vbnRoKCkpXG4gICAgICAgICAgICA6IE1PTlRIX0xBQkVMU1tlbmRPZldlZWsuZ2V0TW9udGgoKV19XG4gICAgICAgIDwvVGV4dD5cbiAgICAgICkgOiBudWxsO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgbnVtRGF5czogMjAwLFxuICAgIGVuZERhdGU6IG5ldyBEYXRlKCksXG4gICAgZ3V0dGVyU2l6ZTogMSxcbiAgICBzcXVhcmVTaXplOiBTUVVBUkVfU0laRSxcbiAgICBob3Jpem9udGFsOiB0cnVlLFxuICAgIHNob3dNb250aExhYmVsczogdHJ1ZSxcbiAgICBzaG93T3V0T2ZSYW5nZURheXM6IGZhbHNlLFxuICAgIGFjY2Vzc29yOiBcImNvdW50XCIsXG4gICAgY2xhc3NGb3JWYWx1ZTogdmFsdWUgPT4gKHZhbHVlID8gXCJibGFja1wiIDogXCIjOGNjNjY1XCIpLFxuICAgIHN0eWxlOiB7fVxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IHN0eWxlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgbGV0IHsgYm9yZGVyUmFkaXVzID0gMCB9ID0gc3R5bGU7XG5cbiAgICBpZiAoIWJvcmRlclJhZGl1cyAmJiB0aGlzLnByb3BzLmNoYXJ0Q29uZmlnLnN0eWxlKSB7XG4gICAgICBjb25zdCBzdHVwaWRYbyA9IHRoaXMucHJvcHMuY2hhcnRDb25maWcuc3R5bGUuYm9yZGVyUmFkaXVzO1xuICAgICAgYm9yZGVyUmFkaXVzID0gc3R1cGlkWG87XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZX0+XG4gICAgICAgIDxTdmcgaGVpZ2h0PXt0aGlzLnByb3BzLmhlaWdodH0gd2lkdGg9e3RoaXMucHJvcHMud2lkdGh9PlxuICAgICAgICAgIHt0aGlzLnJlbmRlckRlZnMoe1xuICAgICAgICAgICAgd2lkdGg6IHRoaXMucHJvcHMud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMucHJvcHMuaGVpZ2h0LFxuICAgICAgICAgICAgLi4udGhpcy5wcm9wcy5jaGFydENvbmZpZ1xuICAgICAgICAgIH0pfVxuICAgICAgICAgIDxSZWN0XG4gICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgaGVpZ2h0PXt0aGlzLnByb3BzLmhlaWdodH1cbiAgICAgICAgICAgIHJ4PXtib3JkZXJSYWRpdXN9XG4gICAgICAgICAgICByeT17Ym9yZGVyUmFkaXVzfVxuICAgICAgICAgICAgZmlsbD17dGhpcy5nZXRHcmFkaWVudFVybChcImJhY2tncm91bmRHcmFkaWVudFwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxHPnt0aGlzLnJlbmRlck1vbnRoTGFiZWxzKCl9PC9HPlxuICAgICAgICAgIDxHPnt0aGlzLnJlbmRlckFsbFdlZWtzKCl9PC9HPlxuICAgICAgICA8L1N2Zz5cbiAgICAgIDwvVmlldz5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbnRyaWJ1dGlvbkdyYXBoO1xuIl19
@@ -14,16 +14,16 @@ export interface ContributionGraphProps extends AbstractChartProps {
14
14
  showOutOfRangeDays?: boolean;
15
15
  accessor?: string;
16
16
  getMonthLabel?: (monthIndex: number) => string;
17
- onDayPress?: ({ count: number, date: Date }: {
18
- count: any;
19
- date: any;
17
+ onDayPress?: (value: {
18
+ count: number;
19
+ date: Date;
20
20
  }) => void;
21
21
  classForValue?: (value: string) => string;
22
22
  style?: Partial<ViewStyle>;
23
23
  titleForValue?: (value: ContributionChartValue) => string;
24
24
  tooltipDataAttrs: TooltipDataAttrs;
25
25
  }
26
- export declare type ContributionGraphState = {
26
+ export type ContributionGraphState = {
27
27
  maxValue: number;
28
28
  minValue: number;
29
29
  valueCache: object;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contribution-graph/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,iBAAiB,EAAE,EACxB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAChE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;;;KAAA,KAAK,IAAI,CAAC;IACrD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,MAAM,CAAC;IAC1D,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,oBAAY,sBAAsB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contribution-graph/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,iBAAiB,EAAE,EACxB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAChE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,MAAM,CAAC;IAC1D,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import ContributionGraph from "./ContributionGraph";
2
2
  export default ContributionGraph;
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJpYnV0aW9uLWdyYXBoL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLGlCQUdOLE1BQU0scUJBQXFCLENBQUM7QUE0QjdCLGVBQWUsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3U3R5bGUgfSBmcm9tIFwicmVhY3QtbmF0aXZlXCI7XG5cbmltcG9ydCB7IEFic3RyYWN0Q2hhcnRQcm9wcyB9IGZyb20gXCIuLi9BYnN0cmFjdENoYXJ0XCI7XG5pbXBvcnQgQ29udHJpYnV0aW9uR3JhcGgsIHtcbiAgQ29udHJpYnV0aW9uQ2hhcnRWYWx1ZSxcbiAgVG9vbHRpcERhdGFBdHRyc1xufSBmcm9tIFwiLi9Db250cmlidXRpb25HcmFwaFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyaWJ1dGlvbkdyYXBoUHJvcHMgZXh0ZW5kcyBBYnN0cmFjdENoYXJ0UHJvcHMge1xuICB2YWx1ZXM6IEFycmF5PGFueT47XG4gIGVuZERhdGU6IERhdGU7XG4gIG51bURheXM6IG51bWJlcjtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIGd1dHRlclNpemU/OiBudW1iZXI7XG4gIHNxdWFyZVNpemU/OiBudW1iZXI7XG4gIGhvcml6b250YWw/OiBib29sZWFuO1xuICBzaG93TW9udGhMYWJlbHM/OiBib29sZWFuO1xuICBzaG93T3V0T2ZSYW5nZURheXM/OiBib29sZWFuO1xuICBhY2Nlc3Nvcj86IHN0cmluZztcbiAgZ2V0TW9udGhMYWJlbD86IChtb250aEluZGV4OiBudW1iZXIpID0+IHN0cmluZztcbiAgb25EYXlQcmVzcz86ICh7IGNvdW50OiBudW1iZXIsIGRhdGU6IERhdGUgfSkgPT4gdm9pZDtcbiAgY2xhc3NGb3JWYWx1ZT86ICh2YWx1ZTogc3RyaW5nKSA9PiBzdHJpbmc7XG4gIHN0eWxlPzogUGFydGlhbDxWaWV3U3R5bGU+O1xuICB0aXRsZUZvclZhbHVlPzogKHZhbHVlOiBDb250cmlidXRpb25DaGFydFZhbHVlKSA9PiBzdHJpbmc7XG4gIHRvb2x0aXBEYXRhQXR0cnM6IFRvb2x0aXBEYXRhQXR0cnM7XG59XG5cbmV4cG9ydCB0eXBlIENvbnRyaWJ1dGlvbkdyYXBoU3RhdGUgPSB7XG4gIG1heFZhbHVlOiBudW1iZXI7XG4gIG1pblZhbHVlOiBudW1iZXI7XG4gIHZhbHVlQ2FjaGU6IG9iamVjdDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbnRyaWJ1dGlvbkdyYXBoO1xuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJpYnV0aW9uLWdyYXBoL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLGlCQUdOLE1BQU0scUJBQXFCLENBQUM7QUE0QjdCLGVBQWUsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3U3R5bGUgfSBmcm9tIFwicmVhY3QtbmF0aXZlXCI7XG5cbmltcG9ydCB7IEFic3RyYWN0Q2hhcnRQcm9wcyB9IGZyb20gXCIuLi9BYnN0cmFjdENoYXJ0XCI7XG5pbXBvcnQgQ29udHJpYnV0aW9uR3JhcGgsIHtcbiAgQ29udHJpYnV0aW9uQ2hhcnRWYWx1ZSxcbiAgVG9vbHRpcERhdGFBdHRyc1xufSBmcm9tIFwiLi9Db250cmlidXRpb25HcmFwaFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyaWJ1dGlvbkdyYXBoUHJvcHMgZXh0ZW5kcyBBYnN0cmFjdENoYXJ0UHJvcHMge1xuICB2YWx1ZXM6IEFycmF5PGFueT47XG4gIGVuZERhdGU6IERhdGU7XG4gIG51bURheXM6IG51bWJlcjtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIGd1dHRlclNpemU/OiBudW1iZXI7XG4gIHNxdWFyZVNpemU/OiBudW1iZXI7XG4gIGhvcml6b250YWw/OiBib29sZWFuO1xuICBzaG93TW9udGhMYWJlbHM/OiBib29sZWFuO1xuICBzaG93T3V0T2ZSYW5nZURheXM/OiBib29sZWFuO1xuICBhY2Nlc3Nvcj86IHN0cmluZztcbiAgZ2V0TW9udGhMYWJlbD86IChtb250aEluZGV4OiBudW1iZXIpID0+IHN0cmluZztcbiAgb25EYXlQcmVzcz86ICh2YWx1ZTogeyBjb3VudDogbnVtYmVyOyBkYXRlOiBEYXRlIH0pID0+IHZvaWQ7XG4gIGNsYXNzRm9yVmFsdWU/OiAodmFsdWU6IHN0cmluZykgPT4gc3RyaW5nO1xuICBzdHlsZT86IFBhcnRpYWw8Vmlld1N0eWxlPjtcbiAgdGl0bGVGb3JWYWx1ZT86ICh2YWx1ZTogQ29udHJpYnV0aW9uQ2hhcnRWYWx1ZSkgPT4gc3RyaW5nO1xuICB0b29sdGlwRGF0YUF0dHJzOiBUb29sdGlwRGF0YUF0dHJzO1xufVxuXG5leHBvcnQgdHlwZSBDb250cmlidXRpb25HcmFwaFN0YXRlID0ge1xuICBtYXhWYWx1ZTogbnVtYmVyO1xuICBtaW5WYWx1ZTogbnVtYmVyO1xuICB2YWx1ZUNhY2hlOiBvYmplY3Q7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb250cmlidXRpb25HcmFwaDtcbiJdfQ==
@@ -1,6 +1,5 @@
1
- /// <reference types="react" />
2
1
  import { Color, TextProps } from "react-native-svg";
3
- export declare type LegendItemProps = {
2
+ export type LegendItemProps = {
4
3
  baseLegendItemX: number;
5
4
  index: number;
6
5
  legendOffset: number;
@@ -1 +1 @@
1
- {"version":3,"file":"LegendItem.d.ts","sourceRoot":"","sources":["../../src/line-chart/LegendItem.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAc,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMhE,oBAAY,eAAe,GAAG;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;IACjB,UAAU,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,UAAU,UAAW,eAAe,gBAmChD,CAAC"}
1
+ {"version":3,"file":"LegendItem.d.ts","sourceRoot":"","sources":["../../src/line-chart/LegendItem.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAc,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMhE,MAAM,MAAM,eAAe,GAAG;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;IACjB,UAAU,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,OAAO,eAAe,gBAmChD,CAAC"}
@@ -20,4 +20,4 @@ export var LegendItem = function (props) {
20
20
  </Text>
21
21
  </>);
22
22
  };
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGVnZW5kSXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saW5lLWNoYXJ0L0xlZ2VuZEl0ZW0udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQVMsSUFBSSxFQUFFLElBQUksRUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBRWhFLElBQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUN4QixJQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0FBVzFCLE1BQU0sQ0FBQyxJQUFNLFVBQVUsR0FBRyxVQUFDLEtBQXNCO0lBQ3ZDLElBQUEsZUFBZSxHQUFZLEtBQUssZ0JBQWpCLEVBQUUsS0FBSyxHQUFLLEtBQUssTUFBVixDQUFXO0lBQ3pDO3NEQUNrRDtJQUNsRCxJQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDdEUsaUZBQWlGO0lBQ2pGLElBQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDcEQsa0RBQWtEO0lBQ2xELElBQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekUsSUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBRW5DLE9BQU8sQ0FDTCxFQUNFO01BQUEsQ0FBQyxJQUFJLENBQ0gsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQ3BCLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUNyQixJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQ3RCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNOLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNOLENBQUMsQ0FBQyxDQUNBLGVBQWUsR0FBRyxnQkFBZ0IsR0FBRyxDQUFDLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxDQUN2RSxDQUNELENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLEVBRXpCO01BQUEsQ0FBQyxJQUFJLENBQ0gsQ0FBQyxDQUFDLENBQ0EsZUFBZSxHQUFHLGdCQUFnQixHQUFHLENBQUMsWUFBWSxHQUFHLGdCQUFnQixDQUFDLENBQ3ZFLENBQ0QsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FDckIsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLENBRXJCO1FBQUEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUNuQjtNQUFBLEVBQUUsSUFBSSxDQUNSO0lBQUEsR0FBRyxDQUNKLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDb2xvciwgUmVjdCwgVGV4dCwgVGV4dFByb3BzIH0gZnJvbSBcInJlYWN0LW5hdGl2ZS1zdmdcIjtcblxuY29uc3QgQ0lSQ0xFX1dJRFRIID0gMTY7XG5jb25zdCBQQURESU5HX0xFRlQgPSA0O1xuY29uc3QgQ0hBUkFDVEVSX1dJRFRIID0gNjtcblxuZXhwb3J0IHR5cGUgTGVnZW5kSXRlbVByb3BzID0ge1xuICBiYXNlTGVnZW5kSXRlbVg6IG51bWJlcjtcbiAgaW5kZXg6IG51bWJlcjtcbiAgbGVnZW5kT2Zmc2V0OiBudW1iZXI7XG4gIGxlZ2VuZFRleHQ6IHN0cmluZztcbiAgaWNvbkNvbG9yOiBDb2xvcjtcbiAgbGFiZWxQcm9wczogVGV4dFByb3BzO1xufTtcblxuZXhwb3J0IGNvbnN0IExlZ2VuZEl0ZW0gPSAocHJvcHM6IExlZ2VuZEl0ZW1Qcm9wcykgPT4ge1xuICBjb25zdCB7IGJhc2VMZWdlbmRJdGVtWCwgaW5kZXggfSA9IHByb3BzO1xuICAvKiBoYWxmIHRoZSBoZWlnaHQgb2YgdGhlIGxlZ2VuZCBSZWN0LCBtaW51cyBoYWxmIHRoZSBoZWlnaHQgb2YgdGhlIGNpcmNsZSB0byBhbGlnbiB0aGVcbiAgICAgY2lyY2xlIGZyb20gaXRzIGNlbnRlciwgcmF0aGVyIHRoYW4gaXRzIHRvcC4gKi9cbiAgY29uc3QgY2VudGVyQWxpZ25lZENpcmNsZSA9IHByb3BzLmxlZ2VuZE9mZnNldCAvIDIgLSBDSVJDTEVfV0lEVEggLyAyO1xuICAvLyA2NSUgb2YgdGhlIGxlZ2VuZCBjb250YWluZXIgaGVpZ2h0IGNlbnRlcnMgdGhlIHRleHQgaW4gcmVsYXRpb24gdG8gdGhlIGNpcmNsZXNcbiAgY29uc3QgY2VudGVyQWxpZ25lZFRleHQgPSBwcm9wcy5sZWdlbmRPZmZzZXQgKiAwLjY1O1xuICAvLyB0byBjZW50ZXIgdGhlIGxlZ2VuZEl0ZW0gb24gdGhlIGJhc2VMZWdlbmRJdGVtWFxuICBjb25zdCB0ZXh0TGVuZ3RoT2Zmc2V0ID0gKHByb3BzLmxlZ2VuZFRleHQubGVuZ3RoICogQ0hBUkFDVEVSX1dJRFRIKSAvIDI7XG4gIGNvbnN0IGxlZ2VuZEl0ZW1OdW1iZXIgPSBpbmRleCArIDE7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFJlY3RcbiAgICAgICAgd2lkdGg9e0NJUkNMRV9XSURUSH1cbiAgICAgICAgaGVpZ2h0PXtDSVJDTEVfV0lEVEh9XG4gICAgICAgIGZpbGw9e3Byb3BzLmljb25Db2xvcn1cbiAgICAgICAgcng9ezh9XG4gICAgICAgIHJ5PXs4fVxuICAgICAgICB4PXtcbiAgICAgICAgICBiYXNlTGVnZW5kSXRlbVggKiBsZWdlbmRJdGVtTnVtYmVyIC0gKENJUkNMRV9XSURUSCArIHRleHRMZW5ndGhPZmZzZXQpXG4gICAgICAgIH1cbiAgICAgICAgeT17Y2VudGVyQWxpZ25lZENpcmNsZX1cbiAgICAgIC8+XG4gICAgICA8VGV4dFxuICAgICAgICB4PXtcbiAgICAgICAgICBiYXNlTGVnZW5kSXRlbVggKiBsZWdlbmRJdGVtTnVtYmVyICsgKFBBRERJTkdfTEVGVCAtIHRleHRMZW5ndGhPZmZzZXQpXG4gICAgICAgIH1cbiAgICAgICAgeT17Y2VudGVyQWxpZ25lZFRleHR9XG4gICAgICAgIHsuLi5wcm9wcy5sYWJlbFByb3BzfVxuICAgICAgPlxuICAgICAgICB7cHJvcHMubGVnZW5kVGV4dH1cbiAgICAgIDwvVGV4dD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGVnZW5kSXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saW5lLWNoYXJ0L0xlZ2VuZEl0ZW0udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQVMsSUFBSSxFQUFFLElBQUksRUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBRWhFLElBQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUN4QixJQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0FBVzFCLE1BQU0sQ0FBQyxJQUFNLFVBQVUsR0FBRyxVQUFDLEtBQXNCO0lBQ3ZDLElBQUEsZUFBZSxHQUFZLEtBQUssZ0JBQWpCLEVBQUUsS0FBSyxHQUFLLEtBQUssTUFBVixDQUFXO0lBQ3pDO3NEQUNrRDtJQUNsRCxJQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDdEUsaUZBQWlGO0lBQ2pGLElBQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDcEQsa0RBQWtEO0lBQ2xELElBQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekUsSUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBRW5DLE9BQU8sQ0FDTCxFQUNFO01BQUEsQ0FBQyxJQUFJLENBQ0gsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQ3BCLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUNyQixJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQ3RCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNOLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNOLENBQUMsQ0FBQyxDQUNBLGVBQWUsR0FBRyxnQkFBZ0IsR0FBRyxDQUFDLFlBQVksR0FBRyxnQkFBZ0IsQ0FDdkUsQ0FBQyxDQUNELENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLEVBRXpCO01BQUEsQ0FBQyxJQUFJLENBQ0gsQ0FBQyxDQUFDLENBQ0EsZUFBZSxHQUFHLGdCQUFnQixHQUFHLENBQUMsWUFBWSxHQUFHLGdCQUFnQixDQUN2RSxDQUFDLENBQ0QsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FDckIsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLENBRXJCO1FBQUEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUNuQjtNQUFBLEVBQUUsSUFBSSxDQUNSO0lBQUEsR0FBRyxDQUNKLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDb2xvciwgUmVjdCwgVGV4dCwgVGV4dFByb3BzIH0gZnJvbSBcInJlYWN0LW5hdGl2ZS1zdmdcIjtcblxuY29uc3QgQ0lSQ0xFX1dJRFRIID0gMTY7XG5jb25zdCBQQURESU5HX0xFRlQgPSA0O1xuY29uc3QgQ0hBUkFDVEVSX1dJRFRIID0gNjtcblxuZXhwb3J0IHR5cGUgTGVnZW5kSXRlbVByb3BzID0ge1xuICBiYXNlTGVnZW5kSXRlbVg6IG51bWJlcjtcbiAgaW5kZXg6IG51bWJlcjtcbiAgbGVnZW5kT2Zmc2V0OiBudW1iZXI7XG4gIGxlZ2VuZFRleHQ6IHN0cmluZztcbiAgaWNvbkNvbG9yOiBDb2xvcjtcbiAgbGFiZWxQcm9wczogVGV4dFByb3BzO1xufTtcblxuZXhwb3J0IGNvbnN0IExlZ2VuZEl0ZW0gPSAocHJvcHM6IExlZ2VuZEl0ZW1Qcm9wcykgPT4ge1xuICBjb25zdCB7IGJhc2VMZWdlbmRJdGVtWCwgaW5kZXggfSA9IHByb3BzO1xuICAvKiBoYWxmIHRoZSBoZWlnaHQgb2YgdGhlIGxlZ2VuZCBSZWN0LCBtaW51cyBoYWxmIHRoZSBoZWlnaHQgb2YgdGhlIGNpcmNsZSB0byBhbGlnbiB0aGVcbiAgICAgY2lyY2xlIGZyb20gaXRzIGNlbnRlciwgcmF0aGVyIHRoYW4gaXRzIHRvcC4gKi9cbiAgY29uc3QgY2VudGVyQWxpZ25lZENpcmNsZSA9IHByb3BzLmxlZ2VuZE9mZnNldCAvIDIgLSBDSVJDTEVfV0lEVEggLyAyO1xuICAvLyA2NSUgb2YgdGhlIGxlZ2VuZCBjb250YWluZXIgaGVpZ2h0IGNlbnRlcnMgdGhlIHRleHQgaW4gcmVsYXRpb24gdG8gdGhlIGNpcmNsZXNcbiAgY29uc3QgY2VudGVyQWxpZ25lZFRleHQgPSBwcm9wcy5sZWdlbmRPZmZzZXQgKiAwLjY1O1xuICAvLyB0byBjZW50ZXIgdGhlIGxlZ2VuZEl0ZW0gb24gdGhlIGJhc2VMZWdlbmRJdGVtWFxuICBjb25zdCB0ZXh0TGVuZ3RoT2Zmc2V0ID0gKHByb3BzLmxlZ2VuZFRleHQubGVuZ3RoICogQ0hBUkFDVEVSX1dJRFRIKSAvIDI7XG4gIGNvbnN0IGxlZ2VuZEl0ZW1OdW1iZXIgPSBpbmRleCArIDE7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFJlY3RcbiAgICAgICAgd2lkdGg9e0NJUkNMRV9XSURUSH1cbiAgICAgICAgaGVpZ2h0PXtDSVJDTEVfV0lEVEh9XG4gICAgICAgIGZpbGw9e3Byb3BzLmljb25Db2xvcn1cbiAgICAgICAgcng9ezh9XG4gICAgICAgIHJ5PXs4fVxuICAgICAgICB4PXtcbiAgICAgICAgICBiYXNlTGVnZW5kSXRlbVggKiBsZWdlbmRJdGVtTnVtYmVyIC0gKENJUkNMRV9XSURUSCArIHRleHRMZW5ndGhPZmZzZXQpXG4gICAgICAgIH1cbiAgICAgICAgeT17Y2VudGVyQWxpZ25lZENpcmNsZX1cbiAgICAgIC8+XG4gICAgICA8VGV4dFxuICAgICAgICB4PXtcbiAgICAgICAgICBiYXNlTGVnZW5kSXRlbVggKiBsZWdlbmRJdGVtTnVtYmVyICsgKFBBRERJTkdfTEVGVCAtIHRleHRMZW5ndGhPZmZzZXQpXG4gICAgICAgIH1cbiAgICAgICAgeT17Y2VudGVyQWxpZ25lZFRleHR9XG4gICAgICAgIHsuLi5wcm9wcy5sYWJlbFByb3BzfVxuICAgICAgPlxuICAgICAgICB7cHJvcHMubGVnZW5kVGV4dH1cbiAgICAgIDwvVGV4dD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0=