@syncfusion/ej2-angular-charts 34.2.4 → 34.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -1
- package/README.md +140 -99
- package/esm2020/src/chart/axes.directive.mjs +1 -1
- package/fesm2015/syncfusion-ej2-angular-charts.mjs.map +1 -1
- package/fesm2020/syncfusion-ej2-angular-charts.mjs.map +1 -1
- package/package.json +3 -3
- package/schematics/utils/lib-details.js +2 -2
- package/schematics/utils/lib-details.ts +2 -2
- package/src/chart/axes.directive.d.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,9 +6,23 @@
|
|
|
6
6
|
|
|
7
7
|
#### Bug Fixes
|
|
8
8
|
|
|
9
|
+
- `#I858273` - Data labels are now positioned correctly when `enableRotation` is enabled in inverted charts.
|
|
10
|
+
|
|
11
|
+
- `#FB74509` - Added caching for text measurement results in `measureText`, reducing repeated width and height calculations and improving overall rendering performance.
|
|
12
|
+
|
|
13
|
+
#### New Features
|
|
14
|
+
|
|
15
|
+
- `#I849015` - Introduced the new `Rotate45WithTrim` and `Rotate90WithTrim` `LabelIntersectAction` options, which apply the `Trim` logic to improve label visibility and then rotate the labels by 45° or 90° respectively.
|
|
16
|
+
|
|
17
|
+
## 34.2.4 (2026-08-18)
|
|
18
|
+
|
|
19
|
+
### Chart
|
|
20
|
+
|
|
21
|
+
#### Bug Fixes
|
|
22
|
+
|
|
9
23
|
- Updated component name casing in telemetry to ensure consistent event tracking and reporting.
|
|
10
24
|
|
|
11
|
-
## 34.2.3 (2026-08-
|
|
25
|
+
## 34.2.3 (2026-08-11)
|
|
12
26
|
|
|
13
27
|
### Chart
|
|
14
28
|
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Angular Charts Components
|
|
2
2
|
|
|
3
|
-
The [Angular Charts](https://www.syncfusion.com/angular-components/angular-charts?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm) component is a well-crafted charting component for visualizing data with
|
|
3
|
+
The [Angular Charts](https://www.syncfusion.com/angular-components/angular-charts?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm) component is a well-crafted charting component for visualizing data with 55+ charts and graphs, ranging from line to financial types. It can bind data from datasource such as array of JSON objects, `OData web services` or [DataManager](https://ej2.syncfusion.com/angular/documentation/chart/data-binding/working-with-data?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm). All chart elements are rendered using Scalable Vector Graphics (SVG).
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
## What's Included in the Angular Charts Package
|
|
@@ -9,11 +9,11 @@ The [Angular Charts](https://www.syncfusion.com/angular-components/angular-chart
|
|
|
9
9
|
|
|
10
10
|
### Angular Chart
|
|
11
11
|
|
|
12
|
-
The [Angular Chart Component](https://www.syncfusion.com/angular-components/angular-charts) is a feature-rich chart component with built-in support for over 50 chart types, technical indictors, trendline, zooming, tooltip, selection, crosshair and trackball.
|
|
12
|
+
The [Angular Chart Component](https://www.syncfusion.com/angular-components/angular-charts?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm) is a feature-rich chart component with built-in support for over 50 chart types, technical indictors, trendline, zooming, tooltip, selection, crosshair and trackball.
|
|
13
13
|
|
|
14
14
|
<p align="center">
|
|
15
|
-
<a href="https://
|
|
16
|
-
<a href="https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/
|
|
15
|
+
<a href="https://help.syncfusion.com/chart-sdk/angular/chart/getting-started?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm">Getting started</a> .
|
|
16
|
+
<a href="https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/chart/overview-chart">Online demos</a> .
|
|
17
17
|
<a href="https://www.syncfusion.com/angular-components/angular-charts?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm">Learn more</a>
|
|
18
18
|
</p>
|
|
19
19
|
|
|
@@ -23,42 +23,42 @@ The [Angular Chart Component](https://www.syncfusion.com/angular-components/angu
|
|
|
23
23
|
|
|
24
24
|
#### Key features
|
|
25
25
|
|
|
26
|
-
* Chart types: Supports
|
|
27
|
-
* [Angular Area Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/area-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-
|
|
28
|
-
* [Angular Bar Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/bar-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-
|
|
29
|
-
* [Angular Line Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/line-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-
|
|
30
|
-
* [Angular Spline Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/spline-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-
|
|
31
|
-
* [Angular Bubble Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/bubble-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-
|
|
32
|
-
* [Angular Scatter Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/scatter-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-
|
|
33
|
-
* [Angular Step Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/stepline-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-
|
|
34
|
-
* [Angular Polar Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/polar-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-
|
|
35
|
-
* [Angular Radar Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/radar-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-
|
|
36
|
-
* [Angular Range Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/range-area-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-
|
|
37
|
-
* [Angular Stacked Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/range-area-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-
|
|
26
|
+
* Chart types: Supports 55+ interactive chart types starting from line to financial chart. Few chart types include:
|
|
27
|
+
* [Angular Area Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/area-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
28
|
+
* [Angular Bar Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/bar-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
29
|
+
* [Angular Line Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/line-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
30
|
+
* [Angular Spline Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/spline-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
31
|
+
* [Angular Bubble Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/bubble-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
32
|
+
* [Angular Scatter Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/scatter-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
33
|
+
* [Angular Step Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/stepline-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
34
|
+
* [Angular Polar Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/polar-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
35
|
+
* [Angular Radar Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/radar-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
36
|
+
* [Angular Range Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/range-area-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
37
|
+
* [Angular Stacked Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/range-area-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
38
38
|
* [Angular Box Plot Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/box-and-whisker-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
39
39
|
* [Angular Histogram Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/histogram-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
40
|
-
* [Angular Financial Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/stock-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-
|
|
41
|
-
* [Data binding](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
42
|
-
* [Axis types](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
43
|
-
* [Rendering modes](https://
|
|
44
|
-
* [Data label](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
45
|
-
* [Annotation](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
46
|
-
* [Zooming and panning](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
47
|
-
* [Crosshair & trackball](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
48
|
-
* [Selection](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
49
|
-
* [Export](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
50
|
-
* [RTL support](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
51
|
-
* [Appearance](https://
|
|
52
|
-
* [Accessibility](https://
|
|
53
|
-
* [Localization](https://
|
|
40
|
+
* [Angular Financial Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/stock-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
41
|
+
* [Data binding](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/chart/local-data): Bind the Chart component with an array of JSON objects or DataManager. Other than chart series, data label and tooltip can also bound to your data.
|
|
42
|
+
* [Axis types](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/chart/numeric): Supports multiple axes, and able to plot different data such as numbers, datetime, logarithmic and string.
|
|
43
|
+
* [Rendering modes](https://help.syncfusion.com/chart-sdk/angular/chart/render-methods?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm): Supports two type of rendering: SVG and Canvas. By default chart rendered in SVG, You can easily switch between the two simple configuration.
|
|
44
|
+
* [Data label](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/chart/data-label-template): Supports data label to annotate points with label to improve the readability of data.
|
|
45
|
+
* [Annotation](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/chart/pie-annotation): Provides support to mark any specific area of interest by adding custom element.
|
|
46
|
+
* [Zooming and panning](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/chart/zooming): Provides options to visualize the data points under any region using rectangular selection, pinch, or mouse wheel zooming.
|
|
47
|
+
* [Crosshair & trackball](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)#/material3/chart/cross-hair: Provides options to track data points closer to the mouse position or touch action.
|
|
48
|
+
* [Selection](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/chart/range-selection): Allows you to select any data point or subset of points using selection feature.
|
|
49
|
+
* [Export](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/chart/export): Provides the options to Export the chart to PDF, SVG and CSV formats.
|
|
50
|
+
* [RTL support](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/chart/rtl): Provides a full-fledged right-to-left mode which aligns axis, tooltip, legend and data in the chart component from right to left.
|
|
51
|
+
* [Appearance](https://help.syncfusion.com/chart-sdk/angular/chart/appearance?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm): Colors for the charts are picked by the built-in theme, but each element of the chart can be customized by simple configuration options.
|
|
52
|
+
* [Accessibility](https://help.syncfusion.com/chart-sdk/angular/chart/accessibility?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm): Designed to be accessible to users with disabilities, with features such as WAI-ARIA standard compliance and keyboard navigation to ensure that the chart can be effectively used with assistive technologies such as screen readers.
|
|
53
|
+
* [Localization](https://help.syncfusion.com/chart-sdk/angular/chart/localization?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm): The Localization library enables you to adapt the default text content of the chart to fit the language and cultural preferences of your target audience.
|
|
54
54
|
|
|
55
55
|
### Angular Accumulation Charts
|
|
56
56
|
|
|
57
57
|
Built-in support for pie, doughnut, pyramid and funnel chart types, to show the proportions and percentages between the categories.
|
|
58
58
|
|
|
59
59
|
<p align="center">
|
|
60
|
-
<a href="https://
|
|
61
|
-
<a href="https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/
|
|
60
|
+
<a href="https://help.syncfusion.com/chart-sdk/angular/accumulation-chart/getting-started?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm">Getting started</a> .
|
|
61
|
+
<a href="https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/chart/default-pie">Online demos</a> .
|
|
62
62
|
<a href="https://www.syncfusion.com/angular-components/angular-charts?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm">Learn more</a>
|
|
63
63
|
</p>
|
|
64
64
|
|
|
@@ -68,23 +68,23 @@ Built-in support for pie, doughnut, pyramid and funnel chart types, to show the
|
|
|
68
68
|
#### Key features
|
|
69
69
|
|
|
70
70
|
* Chart types: Supports Pie, Doughnut, Pyramid and Funnel charts.
|
|
71
|
-
* [Angular Pie Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/pie-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-
|
|
72
|
-
* [Angular Doughnut Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/donut-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-
|
|
73
|
-
* [Angular Pyramid Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/pyramid-chart)
|
|
74
|
-
* [Angular Funnel Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/funnel-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-
|
|
75
|
-
* [Smart labels](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
76
|
-
* [Grouping](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
77
|
-
* [Semi-pie](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
78
|
-
* [Legend](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
79
|
-
* [Tooltip](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
71
|
+
* [Angular Pie Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/pie-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
72
|
+
* [Angular Doughnut Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/donut-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
73
|
+
* [Angular Pyramid Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/pyramid-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
74
|
+
* [Angular Funnel Chart](https://www.syncfusion.com/angular-components/angular-charts/chart-types/funnel-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
75
|
+
* [Smart labels](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/chart/smart-labels): Supports arrangement of data labels smartly to avoid overlapping when the data point value falls in close range.
|
|
76
|
+
* [Grouping](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/chart/grouping): Supports grouping of data points based on value and point count.
|
|
77
|
+
* [Semi-pie](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/chart/semi-pie): Provides options to customize the start and end angle of the pie chart.
|
|
78
|
+
* [Legend](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/chart/pie-legend): Provides options to display additional information about the points with the help of legend.
|
|
79
|
+
* [Tooltip](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/chart/donut): Provides great user experiance by including a set of interactive features such as tooltip, drill-down, events, and selection.
|
|
80
80
|
|
|
81
81
|
### Angular Stock Chart
|
|
82
82
|
|
|
83
|
-
The [Angular Stock Chart](https://www.syncfusion.com/angular-components/angular-stock-chart) Component is a well-crafted, easy-to-use financial charting package to track and visualize stock price of any company over a specific period using charting and range tools.
|
|
83
|
+
The [Angular Stock Chart](https://www.syncfusion.com/angular-components/angular-stock-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm) Component is a well-crafted, easy-to-use financial charting package to track and visualize stock price of any company over a specific period using charting and range tools.
|
|
84
84
|
|
|
85
85
|
<p align="center">
|
|
86
|
-
<a href="https://
|
|
87
|
-
<a href="https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/
|
|
86
|
+
<a href="https://help.syncfusion.com/chart-sdk/angular/stock-chart/getting-started?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm">Getting started</a> .
|
|
87
|
+
<a href="https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/stock-chart/default">Online demos</a> .
|
|
88
88
|
<a href="https://www.syncfusion.com/angular-components/angular-stock-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm">Learn more</a>
|
|
89
89
|
</p>
|
|
90
90
|
|
|
@@ -94,23 +94,23 @@ The [Angular Stock Chart](https://www.syncfusion.com/angular-components/angular-
|
|
|
94
94
|
|
|
95
95
|
#### Key features
|
|
96
96
|
|
|
97
|
-
* [Data binding](https://
|
|
98
|
-
* [Range selector](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
99
|
-
* [Period selector](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
100
|
-
* [Technical indicators](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
101
|
-
* [Trendlines](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
102
|
-
* [Stock events](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
103
|
-
* [Export](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
104
|
-
* [Appearance](https://
|
|
105
|
-
* [Tooltip](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
97
|
+
* [Data binding](https://help.syncfusion.com/chart-sdk/angular/stock-chart/working-with-data?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm): Bind the stock chart component with an array of JSON objects or DataManager. Other than chart series, data label and tooltip can also bound to your data.
|
|
98
|
+
* [Range selector](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/stock-chart/disabled-period): Supports range selector to filter a date range for data that needs to be visualized.
|
|
99
|
+
* [Period selector](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/stock-chart/disabled-navigator): Supports period selector to select predefined periods just by a single click.
|
|
100
|
+
* [Technical indicators](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/stock-chart/default): Incidators allows to analyze the past and predict the future market trends based on historic price, volume, or open interest.
|
|
101
|
+
* [Trendlines](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/stock-chart/default): Predicts the future trends with predetermined data for any measurements.
|
|
102
|
+
* [Stock events](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/stock-chart/stock-events): Supports stock events to show different kinds of market events on the chart.
|
|
103
|
+
* [Export](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/stock-chart/multi-pane): Provides the options to Export the stock chart to PDF, SVG and CSV formats.
|
|
104
|
+
* [Appearance](https://help.syncfusion.com/chart-sdk/angular/stock-chart/appearance?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm): Colors for the stock chart are picked by the built-in theme, but each element of the stock chart can be customized by simple configuration options.
|
|
105
|
+
* [Tooltip](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/stock-chart/multi-pane): Provides great user experiance by including a set of interactive features such as tooltip, events, and trackball.
|
|
106
106
|
|
|
107
107
|
### Angular Range Navigator
|
|
108
108
|
|
|
109
|
-
The [Angular Range Navigator Component](https://www.syncfusion.com/angular-components/angular-range-selector) is an interface for selecting a small range from a large collection. It is commonly used in financial dashboards to filter a date range for data that needs to be visualized.
|
|
109
|
+
The [Angular Range Navigator Component](https://www.syncfusion.com/angular-components/angular-range-selector?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm) is an interface for selecting a small range from a large collection. It is commonly used in financial dashboards to filter a date range for data that needs to be visualized.
|
|
110
110
|
|
|
111
111
|
<p align="center">
|
|
112
|
-
<a href="https://
|
|
113
|
-
<a href="https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/
|
|
112
|
+
<a href="https://help.syncfusion.com/chart-sdk/angular/range-navigator/getting-started?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm">Getting started</a> .
|
|
113
|
+
<a href="https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/range-navigator/default">Online demos</a> .
|
|
114
114
|
<a href="https://www.syncfusion.com/angular-components/angular-range-selector?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm">Learn more</a>
|
|
115
115
|
</p>
|
|
116
116
|
|
|
@@ -120,19 +120,19 @@ The [Angular Range Navigator Component](https://www.syncfusion.com/angular-compo
|
|
|
120
120
|
|
|
121
121
|
#### Key features
|
|
122
122
|
|
|
123
|
-
* [Data sources](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
124
|
-
* [Tooltip](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
125
|
-
* [Lightweight](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
126
|
-
* [Period selector](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
127
|
-
* [Axis types](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
123
|
+
* [Data sources](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/range-navigator/stock-chart): Bind the range navigator component with an array of JSON objects or DataManager.
|
|
124
|
+
* [Tooltip](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/range-navigator/default): Provides great user experiance by including a set of interactive features such as tooltip, events, and animation.
|
|
125
|
+
* [Lightweight](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/range-navigator/light-weight): Supports light-weight range navigator to load in mobile device.
|
|
126
|
+
* [Period selector](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/range-navigator/period-default): Provides options to select the data over the custom period.
|
|
127
|
+
* [Axis types](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/range-navigator/date-time): Supports multiple axis and able to plot different data such as numbers, datetime, logarithmic and string.
|
|
128
128
|
|
|
129
129
|
### Angular Sparkline
|
|
130
130
|
|
|
131
|
-
The [Angular Sparkline Component](https://www.syncfusion.com/angular-components/angular-sparkline) is a very small chart control drawn without axes or coordinates. The sparklines are easy to interpret and convey more information to users by visualizing data in a small amount of space.
|
|
131
|
+
The [Angular Sparkline Component](https://www.syncfusion.com/angular-components/angular-sparkline?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm) is a very small chart control drawn without axes or coordinates. The sparklines are easy to interpret and convey more information to users by visualizing data in a small amount of space.
|
|
132
132
|
|
|
133
133
|
<p align="center">
|
|
134
|
-
<a href="https://
|
|
135
|
-
<a href="https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/
|
|
134
|
+
<a href="https://help.syncfusion.com/chart-sdk/angular/sparkline/getting-started?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm">Getting started</a> .
|
|
135
|
+
<a href="https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/sparkline/default">Online demos</a> .
|
|
136
136
|
<a href="https://www.syncfusion.com/angular-components/angular-sparkline?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm">Learn more</a>
|
|
137
137
|
</p>
|
|
138
138
|
|
|
@@ -142,19 +142,19 @@ The [Angular Sparkline Component](https://www.syncfusion.com/angular-components/
|
|
|
142
142
|
|
|
143
143
|
#### Key features
|
|
144
144
|
|
|
145
|
-
* [Series types](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
146
|
-
* [Axis types](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
147
|
-
* [Data label](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
148
|
-
* [Range band](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
149
|
-
* [Tooltip](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
145
|
+
* [Series types](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/sparkline/series-type): Supports five types of sparklines : line, area, column, win loss, and pie to show data trends.
|
|
146
|
+
* [Axis types](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/sparkline/axis-type): Supports multiple axis and able to plot different data such as numbers, datetime, logarithmic and string.
|
|
147
|
+
* [Data label](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/sparkline/customization): Supports data label to annotate points with label to improve the readability of data.
|
|
148
|
+
* [Range band](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/sparkline/range-band): Provides options to highlight specific range of values.
|
|
149
|
+
* [Tooltip](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/sparkline/default): Provides great user experiance by including a set of interactive features such as tooltip, events, and trackball.
|
|
150
150
|
|
|
151
151
|
### Angular Bullet Chart
|
|
152
152
|
|
|
153
|
-
The [Angular Bullet Chart Component](https://www.syncfusion.com/angular-components/angular-bullet-chart) is a interface to visually compare measures, similar to the commonly used bar chart. A bullet chart displays one or more measures and compares them with a target value.
|
|
153
|
+
The [Angular Bullet Chart Component](https://www.syncfusion.com/angular-components/angular-bullet-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm) is a interface to visually compare measures, similar to the commonly used bar chart. A bullet chart displays one or more measures and compares them with a target value.
|
|
154
154
|
|
|
155
155
|
<p align="center">
|
|
156
|
-
<a href="https://
|
|
157
|
-
<a href="https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/
|
|
156
|
+
<a href="https://help.syncfusion.com/chart-sdk/angular/bullet-chart/getting-started?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm">Getting started</a> .
|
|
157
|
+
<a href="https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/bullet-chart/default">Online demos</a> .
|
|
158
158
|
<a href="https://www.syncfusion.com/angular-components/angular-bullet-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm">Learn more</a>
|
|
159
159
|
</p>
|
|
160
160
|
|
|
@@ -164,18 +164,18 @@ The [Angular Bullet Chart Component](https://www.syncfusion.com/angular-componen
|
|
|
164
164
|
|
|
165
165
|
#### Key features
|
|
166
166
|
|
|
167
|
-
* [Multiple measures](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
168
|
-
* [Legend](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
169
|
-
* [RTL support](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
170
|
-
* [Tooltip](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
167
|
+
* [Multiple measures](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/bullet-chart/multiple-data): Provides options to render multiple measure bars as well as multiple target bars to allow comparison of several measures at once.
|
|
168
|
+
* [Legend](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/bullet-chart/bullet-legend): Provides options to display additional information about the target and actual bar.
|
|
169
|
+
* [RTL support](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npmt#/material3/grid/over-view): Provides a full-fledged right-to-left mode which aligns axis, tooltip, legend and data in the chart component from right to left.
|
|
170
|
+
* [Tooltip](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/bullet-chart/tooltip): Provides options to display additional information about target and actual on mouse hover.
|
|
171
171
|
|
|
172
172
|
### Angular Smith Chart
|
|
173
173
|
|
|
174
174
|
The [Angular Smith Chart Component](https://www.syncfusion.com/angular-components/angular-smith-chart) visualize data of high frequency circuit applications. It contains two sets of circles to plot parameters of transmission lines.
|
|
175
175
|
|
|
176
176
|
<p align="center">
|
|
177
|
-
<a href="https://
|
|
178
|
-
<a href="https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/
|
|
177
|
+
<a href="https://help.syncfusion.com/chart-sdk/angular/smithchart/getting-started?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm">Getting started</a> .
|
|
178
|
+
<a href="https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/smith-chart/default">Online demos</a> .
|
|
179
179
|
<a href="https://www.syncfusion.com/angular-components/angular-smith-chart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm">Learn more</a>
|
|
180
180
|
</p>
|
|
181
181
|
|
|
@@ -185,10 +185,10 @@ The [Angular Smith Chart Component](https://www.syncfusion.com/angular-component
|
|
|
185
185
|
|
|
186
186
|
#### Key features
|
|
187
187
|
|
|
188
|
-
* [Legend](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
189
|
-
* [Data label](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
190
|
-
* [Tooltip](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
191
|
-
* [Print and Export](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_campaign=
|
|
188
|
+
* [Legend](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/smith-chart/default): Provides options to display additional information about the series.
|
|
189
|
+
* [Data label](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/smith-chart/custom): Supports data label to annotate points with label to improve the readability of data.
|
|
190
|
+
* [Tooltip](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/smith-chart/custom): Provides options to display additional information about data points on mouse hover.
|
|
191
|
+
* [Print and Export](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm#/material3/smith-chart/print-export): Provides support to print and export the rendered smith chart for future use.
|
|
192
192
|
|
|
193
193
|
## Setup
|
|
194
194
|
|
|
@@ -262,44 +262,85 @@ export class AppComponent implements OnInit {
|
|
|
262
262
|
|
|
263
263
|
Chart components are available in following list of frameworks.
|
|
264
264
|
|
|
265
|
-
| [<img src="https://ej2.syncfusion.com/github/images/js.svg" height="50" />](https://www.syncfusion.com/javascript-ui-controls?utm_medium=listing&
|
|
265
|
+
| [<img src="https://ej2.syncfusion.com/github/images/js.svg" height="50" />](https://www.syncfusion.com/javascript-ui-controls?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)<br/> [JavaScript](https://www.syncfusion.com/javascript-ui-controls?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm) | [<img src="https://ej2.syncfusion.com/github/images/react.svg" height="50" />](https://www.syncfusion.com/react-components?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)<br/> [React](https://www.syncfusion.com/react-components?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm) | [<img src="https://ej2.syncfusion.com/github/images/vue.svg" height="50" />](https://www.syncfusion.com/vue-components?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)<br/> [Vue](https://www.syncfusion.com/vue-components?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm) | [<img src="https://ej2.syncfusion.com/github/images/netcore.svg" height="50" />](https://www.syncfusion.com/aspnet-core-ui-controls?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)<br/> [ASP.NET Core](https://www.syncfusion.com/aspnet-core-ui-controls?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm) | [<img src="https://ej2.syncfusion.com/github/images/netmvc.svg" height="50" />](https://www.syncfusion.com/aspnet-mvc-ui-controls?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)<br/> [ASP.NET MVC](https://www.syncfusion.com/aspnet-mvc-ui-controls?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm) |
|
|
266
266
|
| :-----: | :-----: | :-----: | :-----: | :-----: |
|
|
267
267
|
|
|
268
268
|
## Showcase samples
|
|
269
269
|
|
|
270
|
-
* Expense Tracker - [Source](https://github.com/syncfusion/ej2-
|
|
271
|
-
* Loan Calculator - [Source](https://github.com/syncfusion/ej2-
|
|
272
|
-
* [Angular Stock Chart demo](https://ej2.syncfusion.com/showcase/angular/stockchart/#/stockChart
|
|
273
|
-
* Fitness Tracker - [Source](https://github.com/SyncfusionExamples/showcase-angular-health-tracker-dashboard-demo), [Live Demo](https://ej2.syncfusion.com/showcase/angular/
|
|
270
|
+
* Expense Tracker - [Source](https://github.com/syncfusion/ej2-showcase-angular-expensetracker?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm), [Live Demo](https://ej2.syncfusion.com/showcase/angular/expensetracker/#/dashboard?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
271
|
+
* Loan Calculator - [Source](https://github.com/syncfusion/ej2-showcase-angular-loan-calculator?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm), [Live Demo](https://ej2.syncfusion.com/showcase/angular/loancalculator/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
272
|
+
* [Angular Stock Chart demo](https://ej2.syncfusion.com/showcase/angular/stockchart/#/stockChart?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
273
|
+
* Fitness Tracker - [Source](https://github.com/SyncfusionExamples/showcase-angular-health-tracker-dashboard-demo?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm), [Live Demo](https://ej2.syncfusion.com/showcase/angular/healthtracker/src/#/dashboard?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
274
274
|
|
|
275
275
|
## Resources
|
|
276
276
|
|
|
277
|
-
* [Documentation](https://
|
|
278
|
-
* [Theme Studio](https://ej2.syncfusion.com/themestudio
|
|
279
|
-
* [What's New](https://www.syncfusion.com/products/whatsnew/angular?utm_medium=listing&
|
|
280
|
-
* [Road Map](https://www.syncfusion.com/products/roadmap/angular)
|
|
281
|
-
* [E-Books](https://www.syncfusion.com/succinctly-free-ebooks?searchkey=angular&type=all)
|
|
277
|
+
* [Documentation](https://help.syncfusion.com/chart-sdk/angular/chart/getting-started?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
278
|
+
* [Theme Studio](https://ej2.syncfusion.com/themestudio/?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
279
|
+
* [What's New](https://www.syncfusion.com/products/whatsnew/angular?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
280
|
+
* [Road Map](https://www.syncfusion.com/products/roadmap/angular?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
281
|
+
* [E-Books](https://www.syncfusion.com/succinctly-free-ebooks?searchkey=angular&type=all?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
282
282
|
|
|
283
283
|
## Support
|
|
284
284
|
|
|
285
285
|
Product support is available through the following mediums.
|
|
286
286
|
|
|
287
|
-
* [Support ticket](https://support.syncfusion.com/support/tickets/create) - Guaranteed Response in 24 hours | Unlimited tickets | Holiday support
|
|
287
|
+
* [Support ticket](https://support.syncfusion.com/support/tickets/create?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm) - Guaranteed Response in 24 hours | Unlimited tickets | Holiday support
|
|
288
288
|
* [Community forum](https://www.syncfusion.com/forums/angular-js2?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
289
|
-
* [GitHub issues](https://github.com/syncfusion/ej2-angular-ui-components/issues/new)
|
|
289
|
+
* [GitHub issues](https://github.com/syncfusion/ej2-angular-ui-components/issues/new?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
290
290
|
* [Request feature or report bug](https://www.syncfusion.com/feedback/angular?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm)
|
|
291
291
|
* Live chat
|
|
292
292
|
|
|
293
|
+
## Other Popular Angular Components
|
|
294
|
+
|
|
295
|
+
Explore other popular Syncfusion<sup>®</sup> Angular components curated from UI components, standalone SDKs, and document solution suites.
|
|
296
|
+
|
|
297
|
+
<table>
|
|
298
|
+
<tr>
|
|
299
|
+
<td align="center">
|
|
300
|
+
<a href="https://www.syncfusion.com/angular-components/angular-data-grid">Angular DataGrid</a>
|
|
301
|
+
</td>
|
|
302
|
+
<td align="center">
|
|
303
|
+
<a href="https://www.syncfusion.com/scheduler-sdk/angular-scheduler">Angular Scheduler</a>
|
|
304
|
+
</td>
|
|
305
|
+
<td align="center">
|
|
306
|
+
<a href="https://www.syncfusion.com/angular-components/angular-file-manager">Angular File Manager</a>
|
|
307
|
+
</td>
|
|
308
|
+
<td align="center">
|
|
309
|
+
<a href="https://www.syncfusion.com/gantt-sdk/angular-gantt-chart">Angular Gantt Chart</a>
|
|
310
|
+
</td>
|
|
311
|
+
<td align="center">
|
|
312
|
+
<a href="https://www.syncfusion.com/diagram-sdk/angular-diagram">Angular Diagram</a>
|
|
313
|
+
</td>
|
|
314
|
+
</tr>
|
|
315
|
+
<tr>
|
|
316
|
+
<td align="center">
|
|
317
|
+
<a href="https://www.syncfusion.com/rich-text-editor-sdk/angular-rich-text-editor">Angular Rich Text Editor</a>
|
|
318
|
+
</td>
|
|
319
|
+
<td align="center">
|
|
320
|
+
<a href="https://www.syncfusion.com/docx-editor-sdk/angular-docx-editor">Angular DOCX Editor</a>
|
|
321
|
+
</td>
|
|
322
|
+
<td align="center">
|
|
323
|
+
<a href="https://www.syncfusion.com/pdf-viewer-sdk/angular-pdf-viewer">Angular PDF Viewer</a>
|
|
324
|
+
</td>
|
|
325
|
+
<td align="center">
|
|
326
|
+
<a href="https://www.syncfusion.com/spreadsheet-editor-sdk/angular-spreadsheet-editor">Angular Spreadsheet Editor</a>
|
|
327
|
+
</td>
|
|
328
|
+
<td align="center">
|
|
329
|
+
<a href="https://www.syncfusion.com/angular-components/angular-maps-library">Angular Maps</a>
|
|
330
|
+
</td>
|
|
331
|
+
</tr>
|
|
332
|
+
</table>
|
|
333
|
+
|
|
293
334
|
## Changelog
|
|
294
335
|
|
|
295
|
-
Check the changelog [here](https://github.com/syncfusion/ej2-angular-ui-components/blob/master/components/charts/CHANGELOG.md). Get minor improvements and bug fixes every week to stay up to date with frequent updates.
|
|
336
|
+
Check the changelog [here](https://github.com/syncfusion/ej2-angular-ui-components/blob/master/components/charts/CHANGELOG.md?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm). Get minor improvements and bug fixes every week to stay up to date with frequent updates.
|
|
296
337
|
|
|
297
338
|
## License and copyright
|
|
298
339
|
|
|
299
|
-
> This is a commercial product and requires a paid license for possession or use. Syncfusion<sup>®</sup> licensed software, including this component, is subject to the terms and conditions of Syncfusion's [EULA](https://www.syncfusion.com/
|
|
340
|
+
> This is a commercial product and requires a paid license for possession or use. Syncfusion<sup>®</sup> licensed software, including this component, is subject to the terms and conditions of Syncfusion's [EULA](https://www.syncfusion.com/license/studio/33.2.3/syncfusion_essential_studio_eula.pdf?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm). To acquire a license for 150+ [Angular UI components](https://www.syncfusion.com/angular-components?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm), you can [purchase](https://www.syncfusion.com/sales/pricing?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm) or [start a free 30-day trial](https://www.syncfusion.com/downloads/angular?tag=es-seo-ft-angular-banner-trial).
|
|
300
341
|
|
|
301
|
-
> A free community [license](https://
|
|
342
|
+
> A free community [license](https://github.com/syncfusion/ej2-angular-ui-components/blob/master/license?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm) is also available for companies and individuals whose organizations have less than $1 million USD in annual gross revenue and five or fewer developers.
|
|
302
343
|
|
|
303
|
-
See [LICENSE FILE](https://github.com/syncfusion/ej2-angular-ui-components/blob/master/license) for more info.
|
|
344
|
+
See [LICENSE FILE](https://github.com/syncfusion/ej2-angular-ui-components/blob/master/license?utm_source=npm&utm_medium=listing&utm_campaign=angular-charts-npm) for more info.
|
|
304
345
|
|
|
305
|
-
© Copyright 2026 Syncfusion<sup>®</sup> Inc. All Rights Reserved. The Syncfusion<sup>®</sup> Essential Studio<sup>®</sup> license and copyright applies to this distribution.
|
|
346
|
+
© Copyright 2026 Syncfusion<sup>®</sup> Inc. All Rights Reserved. The Syncfusion<sup>®</sup> Essential Studio<sup>®</sup> license and copyright applies to this distribution.
|
|
@@ -55,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
55
55
|
},
|
|
56
56
|
}]
|
|
57
57
|
}], ctorParameters: function () { return []; } });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhlcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2hhcnQvYXhlcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFFekUsSUFBSSxLQUFLLEdBQWEsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSw2QkFBNkIsRUFBRSwwQkFBMEIsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDdmpDLElBQUksT0FBTyxHQUFhLEVBQUUsQ0FBQztBQUMzQjs7Ozs7R0FLRztBQVVILE1BQU0sT0FBTyxhQUFjLFNBQVEsV0FBMEI7SUFxWXpELFlBQW9CLGdCQUFpQztRQUNqRCxLQUFLLEVBQUUsQ0FBQztRQURRLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFoWTlDLFNBQUksR0FBYSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBa1l2RCxRQUFRLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDOzswR0ExWVEsYUFBYTs4RkFBYixhQUFhLDRpRUFKZ0IsbUJBQW1CLHdGQUNiLHlCQUF5QjsyRkFHNUQsYUFBYTtrQkFUekIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLE9BQU8sRUFBRTt3QkFDTCxlQUFlLEVBQUUsSUFBSSxZQUFZLENBQUMsbUJBQW1CLENBQUM7d0JBQ3RELHFCQUFxQixFQUFFLElBQUksWUFBWSxDQUFDLHlCQUF5QixDQUFDO3FCQUNyRTtpQkFDSjs7QUE4WUQ7OztHQUdHO0FBT0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxTQUF3QjtJQUN2RDtRQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQixDQUFDOzswR0FIUSxhQUFhOzhGQUFiLGFBQWEsaUZBSFksYUFBYTsyRkFHdEMsYUFBYTtrQkFOekIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixPQUFPLEVBQUU7d0JBQ0wsUUFBUSxFQUFFLElBQUksZUFBZSxDQUFDLGFBQWEsQ0FBQztxQkFDL0M7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFZpZXdDb250YWluZXJSZWYsIENvbnRlbnRDaGlsZHJlbiwgQ29udGVudENoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wbGV4QmFzZSwgQXJyYXlCYXNlLCBzZXRWYWx1ZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJhc2UnO1xuXG5pbXBvcnQgeyBTdHJpcExpbmVzRGlyZWN0aXZlIH0gZnJvbSAnLi9zdHJpcGxpbmVzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNdWx0aUxldmVsTGFiZWxzRGlyZWN0aXZlIH0gZnJvbSAnLi9tdWx0aWxldmVsbGFiZWxzLmRpcmVjdGl2ZSc7XG5cbmxldCBpbnB1dDogc3RyaW5nW10gPSBbJ2JvcmRlcicsICdjb2VmZmljaWVudCcsICdjb2x1bW5JbmRleCcsICdjcm9zc2VzQXQnLCAnY3Jvc3Nlc0luQXhpcycsICdjcm9zc2hhaXJUb29sdGlwJywgJ2Rlc2NyaXB0aW9uJywgJ2Rlc2lyZWRJbnRlcnZhbHMnLCAnZWRnZUxhYmVsUGxhY2VtZW50JywgJ2VuYWJsZUF1dG9JbnRlcnZhbE9uWm9vbWluZycsICdlbmFibGVTY3JvbGxiYXJPblpvb21pbmcnLCAnZW5hYmxlVHJpbScsICdlbmFibGVXcmFwJywgJ2ludGVydmFsJywgJ2ludGVydmFsVHlwZScsICdpc0luZGV4ZWQnLCAnaXNJbnZlcnNlZCcsICdsYWJlbEZvcm1hdCcsICdsYWJlbEludGVyc2VjdEFjdGlvbicsICdsYWJlbFBhZGRpbmcnLCAnbGFiZWxQbGFjZW1lbnQnLCAnbGFiZWxQb3NpdGlvbicsICdsYWJlbFJvdGF0aW9uJywgJ2xhYmVsU3R5bGUnLCAnbGFiZWxUZW1wbGF0ZScsICdsaW5lQnJlYWtBbGlnbm1lbnQnLCAnbGluZVN0eWxlJywgJ2xvZ0Jhc2UnLCAnbWFqb3JHcmlkTGluZXMnLCAnbWFqb3JUaWNrTGluZXMnLCAnbWF4aW11bScsICdtYXhpbXVtTGFiZWxXaWR0aCcsICdtYXhpbXVtTGFiZWxzJywgJ21pbmltdW0nLCAnbWlub3JHcmlkTGluZXMnLCAnbWlub3JUaWNrTGluZXMnLCAnbWlub3JUaWNrc1BlckludGVydmFsJywgJ211bHRpTGV2ZWxMYWJlbHMnLCAnbmFtZScsICdvcHBvc2VkUG9zaXRpb24nLCAncGxhY2VOZXh0VG9BeGlzTGluZScsICdwbG90T2Zmc2V0JywgJ3Bsb3RPZmZzZXRCb3R0b20nLCAncGxvdE9mZnNldExlZnQnLCAncGxvdE9mZnNldFJpZ2h0JywgJ3Bsb3RPZmZzZXRUb3AnLCAncmFuZ2VQYWRkaW5nJywgJ3Jvd0luZGV4JywgJ3Njcm9sbGJhclNldHRpbmdzJywgJ3NrZWxldG9uJywgJ3NrZWxldG9uVHlwZScsICdzcGFuJywgJ3N0YXJ0QW5nbGUnLCAnc3RhcnRGcm9tWmVybycsICdzdHJpcExpbmVzJywgJ3RhYkluZGV4JywgJ3RpY2tQb3NpdGlvbicsICd0aXRsZScsICd0aXRsZVBhZGRpbmcnLCAndGl0bGVSb3RhdGlvbicsICd0aXRsZVN0eWxlJywgJ3ZhbHVlVHlwZScsICd2aXNpYmxlJywgJ3pvb21GYWN0b3InLCAnem9vbVBvc2l0aW9uJ107XG5sZXQgb3V0cHV0czogc3RyaW5nW10gPSBbXTtcbi8qKlxuICogQXhpcyBEaXJlY3RpdmVcbiAqIGBgYGh0bWxcbiAqIDxlLWF4ZXM+PGUtYXhpcz48L2UtYXhpcz48L2UtYXhlcz5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2UtYXhlcz5lLWF4aXMnLFxuICAgIGlucHV0czogaW5wdXQsXG4gICAgb3V0cHV0czogb3V0cHV0cywgICAgXG4gICAgcXVlcmllczoge1xuICAgICAgICBjaGlsZFN0cmlwTGluZXM6IG5ldyBDb250ZW50Q2hpbGQoU3RyaXBMaW5lc0RpcmVjdGl2ZSksIFxuICAgICAgICBjaGlsZE11bHRpTGV2ZWxMYWJlbHM6IG5ldyBDb250ZW50Q2hpbGQoTXVsdGlMZXZlbExhYmVsc0RpcmVjdGl2ZSlcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEF4aXNEaXJlY3RpdmUgZXh0ZW5kcyBDb21wbGV4QmFzZTxBeGlzRGlyZWN0aXZlPiB7XG4gICAgcHVibGljIGRpcmVjdGl2ZVByb3BMaXN0OiBhbnk7XG5cdFxuICAgIHB1YmxpYyBjaGlsZFN0cmlwTGluZXM6IGFueTtcbiAgICBwdWJsaWMgY2hpbGRNdWx0aUxldmVsTGFiZWxzOiBhbnk7XG4gICAgcHVibGljIHRhZ3M6IHN0cmluZ1tdID0gWydzdHJpcExpbmVzJywgJ211bHRpTGV2ZWxMYWJlbHMnXTtcbiAgICAvKiogXG4gICAgICogQ29uZmlndXJlcyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgYm9yZGVyIGFyb3VuZCBtdWx0aS1sZXZlbCBsYWJlbHMsIGluY2x1ZGluZyB0aGUgY29sb3IsIHdpZHRoLCBhbmQgdHlwZSBvZiB0aGUgYm9yZGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBib3JkZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGBjb2VmZmljaWVudGAgdmFsdWUgYWRqdXN0cyB0aGUgc2l6ZSBvZiB0aGUgcG9sYXIgcmFkYXIgY2hhcnQncyByYWRpdXMuIEEgaGlnaGVyIHZhbHVlIGluY3JlYXNlcyB0aGUgcmFkaXVzIHNpemUsIHdoaWxlIGEgc21hbGxlciB2YWx1ZSBkZWNyZWFzZXMgaXQuXG4gICAgICogQGRlZmF1bHQgMTAwXG4gICAgICovXG4gICAgcHVibGljIGNvZWZmaWNpZW50OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgaW5kZXggb2YgdGhlIGNvbHVtbiB3aGVyZSB0aGUgYXhpcyBpcyBhc3NvY2lhdGVkIHdoZW4gdGhlIGNoYXJ0IGFyZWEgaXMgZGl2aWRlZCBpbnRvIG11bHRpcGxlIHBsb3QgYXJlYXMgdXNpbmcgYGNvbHVtbnNgLiBcbiAgICAgKiBcbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgcHVibGljIGNvbHVtbkluZGV4OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgdmFsdWUgYXQgd2hpY2ggdGhlIGF4aXMgbGluZSBpbnRlcnNlY3RzIHdpdGggdGhlIHZlcnRpY2FsIGF4aXMgb3IgdmljZSB2ZXJzYS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGNyb3NzZXNBdDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGF4aXMgd2l0aCB3aGljaCB0aGUgYXhpcyBsaW5lIHNob3VsZCBpbnRlcnNlY3QuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBjcm9zc2VzSW5BeGlzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIE9wdGlvbnMgdG8gY3VzdG9taXplIHRoZSBhcHBlYXJhbmNlIGFuZCBiZWhhdmlvciBvZiB0aGUgY3Jvc3NoYWlyIHRvb2x0aXAgdGhhdCBhcHBlYXJzIHdoZW4gaG92ZXJpbmcgb3ZlciB0aGUgY2hhcnQuXG4gICAgICovXG4gICAgcHVibGljIGNyb3NzaGFpclRvb2x0aXA6IGFueTtcbiAgICAvKiogXG4gICAgICogQSBkZXNjcmlwdGlvbiBmb3IgdGhlIGF4aXMgdGhhdCBwcm92aWRlcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGl0cyBjb250ZW50IGZvciBzY3JlZW4gcmVhZGVycy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGRlc2NyaXB0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgZGVzaXJlZEludGVydmFsc2AgcHJvcGVydHkgYWxsb3dzIHRoZSBheGlzIHRvIGNhbGN1bGF0ZSBpbnRlcnZhbHMgdGhhdCBhcmUgcm91Z2hseSBlcXVhbCB0byB0aGUgc3BlY2lmaWVkIG51bWJlciwgcHJvbW90aW5nIGEgbW9yZSByZWFkYWJsZSBhbmQgZXZlbmx5IHNwYWNlZCBheGlzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwZGVmYXVsdHZhbHVlaWdub3JlIFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNpcmVkSW50ZXJ2YWxzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgZWRnZUxhYmVsUGxhY2VtZW50YCBwcm9wZXJ0eSBlbnN1cmVzIHRoYXQgbGFiZWxzIHBvc2l0aW9uZWQgYXQgdGhlIGVkZ2VzIG9mIHRoZSBheGlzIGRvIG5vdCBvdmVybGFwIHdpdGggdGhlIGF4aXMgYm91bmRhcmllcyBvciBvdGhlciBjaGFydCBlbGVtZW50cywgb2ZmZXJpbmcgc2V2ZXJhbCBvcHRpb25zIHRvIGltcHJvdmUgY2hhcnQgcmVhZGFiaWxpdHkgYnkgbWFuYWdpbmcgZWRnZSBsYWJlbHMgZWZmZWN0aXZlbHkuIFxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTogXG4gICAgICogKiBOb25lOiBObyBhY3Rpb24gd2lsbCBiZSBwZXJmb3JtZWQgb24gZWRnZSBsYWJlbHMuIFxuICAgICAqICogSGlkZTogRWRnZSBsYWJlbHMgd2lsbCBiZSBoaWRkZW4gdG8gcHJldmVudCBvdmVybGFwLiBcbiAgICAgKiAqIFNoaWZ0OiBFZGdlIGxhYmVscyB3aWxsIGJlIHNoaWZ0ZWQgdG8gZml0IHdpdGhpbiB0aGUgYXhpcyBib3VuZHMgd2l0aG91dCBvdmVybGFwcGluZy5cbiAgICAgKiBAZGVmYXVsdCAnU2hpZnQnXG4gICAgICovXG4gICAgcHVibGljIGVkZ2VMYWJlbFBsYWNlbWVudDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGF4aXMgaW50ZXJ2YWwgd2lsbCBiZSBjYWxjdWxhdGVkIGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gdGhlIHpvb21lZCByYW5nZS5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGVuYWJsZUF1dG9JbnRlcnZhbE9uWm9vbWluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgYSBzY3JvbGxiYXIgd2lsbCBhcHBlYXIgd2hpbGUgem9vbWluZyB0byBoZWxwIG5hdmlnYXRlIHRocm91Z2ggdGhlIHpvb21lZCBjb250ZW50LlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgZW5hYmxlU2Nyb2xsYmFyT25ab29taW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIHNldCB0byB0cnVlLCBheGlzIGxhYmVscyB3aWxsIGJlIHRyaW1tZWQgYmFzZWQgb24gdGhlIGBtYXhpbXVtTGFiZWxXaWR0aGAuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZW5hYmxlVHJpbTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgYXhpcyBsYWJlbHMgc2hvdWxkIGJlIHdyYXBwZWQgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBgbWF4aW11bUxhYmVsV2lkdGhgLiBcbiAgICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHRoZSBheGlzIGxhYmVscyB3aWxsIGF1dG9tYXRpY2FsbHkgd3JhcCB0byBmaXQgd2l0aGluIHRoZSBhdmFpbGFibGUgd2lkdGggZGVmaW5lZCBieSBgbWF4aW11bUxhYmVsV2lkdGhgLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGVuYWJsZVdyYXA6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBpbnRlcnZhbCBmb3IgdGhlIGF4aXMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3BkZWZhdWx0dmFsdWVpZ25vcmUgXG4gICAgICovXG4gICAgcHVibGljIGludGVydmFsOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgaW50ZXJ2YWxUeXBlYCBwcm9wZXJ0eSBkZWZpbmVzIGhvdyB0aGUgaW50ZXJ2YWxzIG9uIGEgZGF0ZS10aW1lIGF4aXMgYXJlIGNhbGN1bGF0ZWQgYW5kIGRpc3BsYXllZC4gXG4gICAgICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOiBcbiAgICAgKiAqIEF1dG86IEF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lcyB0aGUgaW50ZXJ2YWwgdHlwZSBiYXNlZCBvbiB0aGUgZGF0YSBhbmQgY2hhcnQgc2V0dGluZ3MuIFxuICAgICAqICogWWVhcnM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIHllYXJzLiBcbiAgICAgKiAqIE1vbnRoczogU2V0cyB0aGUgaW50ZXJ2YWwgb2YgdGhlIGF4aXMgaW4gbW9udGhzLiBcbiAgICAgKiAqIERheXM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIGRheXMuIFxuICAgICAqICogSG91cnM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIGhvdXJzLiBcbiAgICAgKiAqIE1pbnV0ZXM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIG1pbnV0ZXMuXG4gICAgICogQGRlZmF1bHQgJ0F1dG8nXG4gICAgICovXG4gICAgcHVibGljIGludGVydmFsVHlwZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgZGF0YSBwb2ludHMgYXJlIHJlbmRlcmVkIGJhc2VkIG9uIHRoZWlyIGluZGV4LlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGlzSW5kZXhlZDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGF4aXMgd2lsbCBiZSByZW5kZXJlZCBpbiBhbiBpbnZlcnNlZCBtYW5uZXIuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNJbnZlcnNlZDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBVc2VkIHRvIGZvcm1hdCB0aGUgYXhpcyBsYWJlbC4gVGhpcyBwcm9wZXJ0eSBhY2NlcHRzIGdsb2JhbCBzdHJpbmcgZm9ybWF0cyBzdWNoIGFzIGBDYCwgYG4xYCwgYFBgLCBldGMuIFxuICAgICAqIEl0IGFsc28gYWNjZXB0cyBwbGFjZWhvbGRlcnMgbGlrZSBge3ZhbHVlfcKwQ2AsIHdoZXJlIGB7dmFsdWV9YCByZXByZXNlbnRzIHRoZSBheGlzIGxhYmVsIChlLmcuLCAyMMKwQykuXG4gICAgICogQGRlZmF1bHQgJydcbiAgICAgKi9cbiAgICBwdWJsaWMgbGFiZWxGb3JtYXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBhY3Rpb24gdG8gdGFrZSB3aGVuIGF4aXMgbGFiZWxzIGludGVyc2VjdCB3aXRoIGVhY2ggb3RoZXIuIFxuICAgICAqIFRoZSBhdmFpbGFibGUgb3B0aW9ucyBhcmU6IFxuICAgICAqICogTm9uZTogU2hvd3MgYWxsIGxhYmVscyB3aXRob3V0IGFueSBtb2RpZmljYXRpb24uIFxuICAgICAqICogSGlkZTogSGlkZXMgdGhlIGxhYmVsIGlmIGl0IGludGVyc2VjdHMgd2l0aCBhbm90aGVyIGxhYmVsLiBcbiAgICAgKiAqIFRyaW06IFRyaW1zIHRoZSBsYWJlbCB0ZXh0IHRvIGZpdCB3aXRoaW4gdGhlIGF2YWlsYWJsZSBzcGFjZS4gXG4gICAgICogKiBXcmFwOiBXcmFwcyB0aGUgbGFiZWwgdGV4dCB0byBmaXQgd2l0aGluIHRoZSBhdmFpbGFibGUgc3BhY2UuIFxuICAgICAqICogTXVsdGlwbGVSb3dzOiBEaXNwbGF5cyB0aGUgbGFiZWwgdGV4dCBpbiBtdWx0aXBsZSByb3dzIHRvIGF2b2lkIGludGVyc2VjdGlvbi4gXG4gICAgICogKiBSb3RhdGU0NTogUm90YXRlcyB0aGUgbGFiZWwgdGV4dCBieSA0NSBkZWdyZWVzIHRvIGF2b2lkIGludGVyc2VjdGlvbi4gXG4gICAgICogKiBSb3RhdGU5MDogUm90YXRlcyB0aGUgbGFiZWwgdGV4dCBieSA5MCBkZWdyZWVzIHRvIGF2b2lkIGludGVyc2VjdGlvbi5cbiAgICAgKiBAZGVmYXVsdCBUcmltXG4gICAgICovXG4gICAgcHVibGljIGxhYmVsSW50ZXJzZWN0QWN0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgbGFiZWxQYWRkaW5nYCBwcm9wZXJ0eSBhZGp1c3RzIHRoZSBkaXN0YW5jZSB0byBlbnN1cmUgYSBjbGVhciBzcGFjZSBiZXR3ZWVuIHRoZSBheGlzIGxhYmVscyBhbmQgdGhlIGF4aXMgbGluZS5cbiAgICAgKiBAZGVmYXVsdCA1XG4gICAgICovXG4gICAgcHVibGljIGxhYmVsUGFkZGluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgYGxhYmVsUGxhY2VtZW50YCBwcm9wZXJ0eSBjb250cm9scyB3aGVyZSB0aGUgY2F0ZWdvcnkgYXhpcyBsYWJlbHMgYXJlIHJlbmRlcmVkIGluIHJlbGF0aW9uIHRvIHRoZSBheGlzIHRpY2tzLiBcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6IFxuICAgICAqICogQmV0d2VlblRpY2tzOiBSZW5kZXJzIHRoZSBsYWJlbCBiZXR3ZWVuIHRoZSBheGlzIHRpY2tzLiBcbiAgICAgKiAqIE9uVGlja3M6IFJlbmRlcnMgdGhlIGxhYmVsIGRpcmVjdGx5IG9uIHRoZSBheGlzIHRpY2tzLlxuICAgICAqIEBkZWZhdWx0ICdCZXR3ZWVuVGlja3MnXG4gICAgICovXG4gICAgcHVibGljIGxhYmVsUGxhY2VtZW50OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgbGFiZWxQb3NpdGlvbmAgcHJvcGVydHkgZGV0ZXJtaW5lcyB3aGVyZSB0aGUgYXhpcyBsYWJlbHMgYXJlIHJlbmRlcmVkIGluIHJlbGF0aW9uIHRvIHRoZSBheGlzIGxpbmUuIFxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTogXG4gICAgICogKiBJbnNpZGU6IFJlbmRlcnMgdGhlIGxhYmVscyBpbnNpZGUgdGhlIGF4aXMgbGluZS4gXG4gICAgICogKiBPdXRzaWRlOiBSZW5kZXJzIHRoZSBsYWJlbHMgb3V0c2lkZSB0aGUgYXhpcyBsaW5lLlxuICAgICAqIEBkZWZhdWx0ICdPdXRzaWRlJ1xuICAgICAqL1xuICAgIHB1YmxpYyBsYWJlbFBvc2l0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBhbmdsZSB0byB3aGljaCB0aGUgYXhpcyBsYWJlbCBnZXRzIHJvdGF0ZWQuXG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqL1xuICAgIHB1YmxpYyBsYWJlbFJvdGF0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoaXMgcHJvcGVydHkgYWxsb3dzIGRlZmluaW5nIHZhcmlvdXMgZm9udCBzZXR0aW5ncyB0byBjb250cm9sIGhvdyB0aGUgbGFiZWxzIGFyZSBkaXNwbGF5ZWQgb24gdGhlIGF4aXMuXG4gICAgICovXG4gICAgcHVibGljIGxhYmVsU3R5bGU6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSB0ZW1wbGF0ZSB1c2VkIHRvIHJlbmRlciBheGlzIGxhYmVscywgYWxsb3dpbmcgZm9yIGN1c3RvbWl6ZWQgbGFiZWxzIHdpdGggdGV4dCwgaW1hZ2VzLCBvciBvdGhlciBVSSBlbGVtZW50cy4gXG4gICAgICogVGhlIHRlbXBsYXRlIGlzIHByb3ZpZGVkIGFzIGEgc3RyaW5nIHdpdGggcGxhY2Vob2xkZXJzIGZvciBpbnRlcnBvbGF0aW9uLiBVc2UgYCR7bGFiZWx9YCB0byBpbnNlcnQgdGhlIGF4aXMgbGFiZWwgYW5kIGAke3ZhbHVlfWAgZm9yIHRoZSBheGlzIGxhYmVsIHZhbHVlLiBcbiAgICAgKiBGb3Igc2VjdXJpdHksIHN0cmluZyB0ZW1wbGF0ZXMgdXNlIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGluIFJlYWN04oCUZW5zdXJlIGlucHV0IGlzIHRydXN0ZWQgdG8gYXZvaWQgWFNTIHZ1bG5lcmFiaWxpdGllcy4gXG4gICAgICogSWYgbnVsbCBvciB1bmRlZmluZWQsIHRoZSBheGlzIHdpbGwgcmVuZGVyIGRlZmF1bHQgbGFiZWxzLiBcbiAgICAgKiBDb21wYXRpYmxlIHdpdGggYm90aCBjYXRlZ29yaWNhbCBhbmQgbnVtZXJpY2FsIGF4ZXMuXG4gICAgICogQGV4YW1wbGUgYGBgaHRtbFxuPGRpdiBpZD0nQ2hhcnQnPjwvZGl2PlxuYGBgXG5gYGB0eXBlc2NyaXB0XG5sZXQgY2hhcnQ6IENoYXJ0ID0gbmV3IENoYXJ0KHtcbi4uLlxucHJpbWFyeVhBeGlzOiB7XG5sYWJlbFRlbXBsYXRlOiAnPGRpdj5Db3VudHJ5OiAke2xhYmVsfTwvZGl2Pidcbn1cbi4uLlxufSk7XG5jaGFydC5hcHBlbmRUbygnI0NoYXJ0Jyk7XG5gYGBcblxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgbGFiZWxUZW1wbGF0ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZXRlcm1pbmVzIHRoZSBhbGlnbm1lbnQgb2YgbGFiZWxzIHdoZW4gYSBsaW5lIGJyZWFrIG9jY3VycyBpbiB0aGUgYXhpcyBsYWJlbHMuXG4gICAgICogQGRlZmF1bHQgJ0NlbnRlcidcbiAgICAgKi9cbiAgICBwdWJsaWMgbGluZUJyZWFrQWxpZ25tZW50OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIE9wdGlvbnMgZm9yIGN1c3RvbWl6aW5nIHRoZSBheGlzIGxpbmVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBsaW5lU3R5bGU6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBiYXNlIHZhbHVlIGZvciBhIGxvZ2FyaXRobWljIGF4aXMuIFxuICAgICAqID4gTm90ZSB0aGF0IGB2YWx1ZVR5cGVgIG11c3QgYmUgc2V0IHRvIGBMb2dhcml0aG1pY2AgZm9yIHRoaXMgZmVhdHVyZSB0byB3b3JrLlxuICAgICAqIEBkZWZhdWx0IDEwXG4gICAgICovXG4gICAgcHVibGljIGxvZ0Jhc2U6IGFueTtcbiAgICAvKiogXG4gICAgICogT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgbWFqb3IgZ3JpZCBsaW5lcyBvbiB0aGUgYXhpcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWFqb3JHcmlkTGluZXM6IGFueTtcbiAgICAvKiogXG4gICAgICogT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgbWFqb3IgdGljayBsaW5lcyBvbiB0aGUgYXhpcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWFqb3JUaWNrTGluZXM6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBheGlzIHJhbmdlLCB3aGljaCBzZXRzIHRoZSB1cHBlciBib3VuZCBvZiB0aGUgYXhpcyBhbmQgZGVmaW5lcyB0aGUgbGFyZ2VzdCB2YWx1ZSBkaXNwbGF5ZWQgb24gdGhlIGNoYXJ0LCBoZWxwaW5nIHRvIGNvbnRyb2wgdGhlIHZpc2libGUgcmFuZ2Ugb2YgZGF0YS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIG1heGltdW06IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIHdpZHRoIG9mIGFuIGF4aXMgbGFiZWwuXG4gICAgICogQGRlZmF1bHQgMzQuXG4gICAgICovXG4gICAgcHVibGljIG1heGltdW1MYWJlbFdpZHRoOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbGFiZWxzIHBlciAxMDAgcGl4ZWxzIHJlbGF0aXZlIHRvIHRoZSBheGlzIGxlbmd0aC5cbiAgICAgKiBAZGVmYXVsdCAzXG4gICAgICovXG4gICAgcHVibGljIG1heGltdW1MYWJlbHM6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSBheGlzIHJhbmdlLCB3aGljaCBzZXRzIHRoZSBsb3dlciBib3VuZCBvZiB0aGUgYXhpcyBhbmQgZGVmaW5lcyB0aGUgc21hbGxlc3QgdmFsdWUgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGUgY2hhcnQgdG8gY29udHJvbCB0aGUgdmlzaWJsZSByYW5nZSBvZiBkYXRhLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgbWluaW11bTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBPcHRpb25zIGZvciBjdXN0b21pemluZyBtaW5vciBncmlkIGxpbmVzIG9uIHRoZSBheGlzLlxuICAgICAqL1xuICAgIHB1YmxpYyBtaW5vckdyaWRMaW5lczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBPcHRpb25zIGZvciBjdXN0b21pemluZyBtaW5vciB0aWNrIGxpbmVzIG9uIHRoZSBheGlzLlxuICAgICAqL1xuICAgIHB1YmxpYyBtaW5vclRpY2tMaW5lczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBtaW5vciB0aWNrcyBwZXIgaW50ZXJ2YWwuXG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqL1xuICAgIHB1YmxpYyBtaW5vclRpY2tzUGVySW50ZXJ2YWw6IGFueTtcbiAgICAvKiogXG4gICAgICogTXVsdGktbGV2ZWwgbGFiZWxzIGFyZSB1c2VkIHRvIGRpc3BsYXkgaGllcmFyY2hpY2FsIG9yIGdyb3VwZWQgbGFiZWxzIG9uIHRoZSBheGlzLCBhbGxvd2luZyBmb3IgYSBtb3JlIGRldGFpbGVkIGFuZCBzdHJ1Y3R1cmVkIGRhdGEgcmVwcmVzZW50YXRpb24uXG4gICAgICovXG4gICAgcHVibGljIG11bHRpTGV2ZWxMYWJlbHM6IGFueTtcbiAgICAvKiogXG4gICAgICogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYW4gYXhpcy4gVG8gYXNzb2NpYXRlIGFuIGF4aXMgd2l0aCBhIHNlcmllcywgc2V0IHRoaXMgbmFtZSB0byB0aGUgYHhBeGlzTmFtZWAgb3IgYHlBeGlzTmFtZWAgcHJvcGVydGllcyBvZiB0aGUgc2VyaWVzLlxuICAgICAqIEBkZWZhdWx0ICcnXG4gICAgICovXG4gICAgcHVibGljIG5hbWU6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgc2V0IHRvIHRydWUsIHRoZSBheGlzIHdpbGwgcmVuZGVyIG9uIHRoZSBvcHBvc2l0ZSBzaWRlIG9mIGl0cyBkZWZhdWx0IHBvc2l0aW9uLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIG9wcG9zZWRQb3NpdGlvbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgd2hldGhlciBheGlzIGVsZW1lbnRzLCBzdWNoIGFzIGF4aXMgbGFiZWxzIGFuZCB0aGUgYXhpcyB0aXRsZSwgc2hvdWxkIGJlIGNyb3NzZWQgYnkgdGhlIGF4aXMgbGluZS5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHBsYWNlTmV4dFRvQXhpc0xpbmU6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBwYWRkaW5nIG9uIHRoZSB0b3AsIGJvdHRvbSwgbGVmdCBhbmQgcmlnaHQgc2lkZXMgb2YgdGhlIGNoYXJ0IGFyZWEsIGluIHBpeGVscy5cbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgcHVibGljIHBsb3RPZmZzZXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBib3R0b20gcGFkZGluZyBmb3IgdGhlIGNoYXJ0IGFyZWEsIGluIHBpeGVscy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHBsb3RPZmZzZXRCb3R0b206IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBsZWZ0IHBhZGRpbmcgZm9yIHRoZSBjaGFydCBhcmVhLCBpbiBwaXhlbHMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBwbG90T2Zmc2V0TGVmdDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHJpZ2h0IHBhZGRpbmcgZm9yIHRoZSBjaGFydCBhcmVhLCBpbiBwaXhlbHMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBwbG90T2Zmc2V0UmlnaHQ6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSB0b3AgcGFkZGluZyBmb3IgdGhlIGNoYXJ0IGFyZWEsIGluIHBpeGVscy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHBsb3RPZmZzZXRUb3A6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGByYW5nZVBhZGRpbmdgIHByb3BlcnR5IGRldGVybWluZXMgaG93IHBhZGRpbmcgaXMgYXBwbGllZCB0byB0aGUgYXhpcyByYW5nZSwgYWZmZWN0aW5nIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBjaGFydCBieSBhZGp1c3RpbmcgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIG9mIHRoZSBheGlzLiBcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6IFxuICAgICAqICogTm9uZTogTm8gcGFkZGluZyBpcyBhcHBsaWVkIHRvIHRoZSBheGlzLiBcbiAgICAgKiAqIE5vcm1hbDogUGFkZGluZyBpcyBhcHBsaWVkIGJhc2VkIG9uIHRoZSByYW5nZSBjYWxjdWxhdGlvbi4gXG4gICAgICogKiBBZGRpdGlvbmFsOiBUaGUgaW50ZXJ2YWwgb2YgdGhlIGF4aXMgaXMgYWRkZWQgYXMgcGFkZGluZyB0byBib3RoIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyBvZiB0aGUgcmFuZ2UuIFxuICAgICAqICogUm91bmQ6IFRoZSBheGlzIHJhbmdlIGlzIHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgcG9zc2libGUgdmFsdWUgdGhhdCBpcyBkaXZpc2libGUgYnkgdGhlIGludGVydmFsLlxuICAgICAqIEBkZWZhdWx0ICdBdXRvJ1xuICAgICAqL1xuICAgIHB1YmxpYyByYW5nZVBhZGRpbmc6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBpbmRleCBvZiB0aGUgcm93IHdoZXJlIHRoZSBheGlzIGlzIGFzc29jaWF0ZWQgd2hlbiB0aGUgY2hhcnQgYXJlYSBpcyBkaXZpZGVkIGludG8gbXVsdGlwbGUgcGxvdCBhcmVhcyB1c2luZyBgcm93c2AuIFxuICAgICAqIFxuICAgICAqIEBkZWZhdWx0IDBcbiAgICAgKi9cbiAgICBwdWJsaWMgcm93SW5kZXg6IGFueTtcbiAgICAvKiogXG4gICAgICogQ29uZmlndXJlcyB0aGUgc2Nyb2xsYmFyIHdpdGggb3B0aW9ucyBmb3IgY3VzdG9taXphdGlvbiwgaW5jbHVkaW5nIGFwcGVhcmFuY2UsIGJlaGF2aW9yLCBhbmQgbGF6eSBsb2FkaW5nIHNldHRpbmdzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzY3JvbGxiYXJTZXR0aW5nczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHNrZWxldG9uIGZvcm1hdCB1c2VkIGZvciBwcm9jZXNzaW5nIGRhdGUtdGltZSB2YWx1ZXMuXG4gICAgICogQGRlZmF1bHQgJydcbiAgICAgKi9cbiAgICBwdWJsaWMgc2tlbGV0b246IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBmb3JtYXQgdHlwZSB0byBiZSB1c2VkIGluIGRhdGUtdGltZSBmb3JtYXR0aW5nLlxuICAgICAqIEBkZWZhdWx0ICdEYXRlVGltZSdcbiAgICAgKiBAZGVwcmVjYXRlZCBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2tlbGV0b25UeXBlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGBjb2x1bW5zYCBvciBgcm93c2AgdGhhdCBhbiBheGlzIHNwYW5zIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5LlxuICAgICAqIEBkZWZhdWx0IDFcbiAgICAgKi9cbiAgICBwdWJsaWMgc3BhbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHN0YXJ0IGFuZ2xlIGZvciB0aGUgc2VyaWVzIGluIGEgcG9sYXIgb3IgcmFkYXIgY2hhcnQsIG1lYXN1cmVkIGluIGRlZ3JlZXMgZnJvbSB0aGUgaG9yaXpvbnRhbCBheGlzLCBkZXRlcm1pbmluZyB0aGUgaW5pdGlhbCBhbmdsZSBmcm9tIHdoaWNoIHRoZSBzZXJpZXMgYmVnaW5zLlxuICAgICAqIEBkZWZhdWx0IDBcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhcnRBbmdsZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGF4aXMgc3RhcnRzIGZyb20gemVyby4gXG4gICAgICogSWYgc2V0IHRvIGZhbHNlLCB0aGUgYXhpcyBzdGFydHMgZnJvbSB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgZGF0YS5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHN0YXJ0RnJvbVplcm86IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBjb2xsZWN0aW9uIG9mIHN0cmlwIGxpbmVzIGZvciB0aGUgYXhpcywgd2hpY2ggYXJlIHZpc3VhbCBlbGVtZW50cyB1c2VkIHRvIG1hcmsgb3IgaGlnaGxpZ2h0IHNwZWNpZmljIHJhbmdlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RyaXBMaW5lczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgYHRhYkluZGV4YCB2YWx1ZSBmb3IgdGhlIGF4aXMsIGRldGVybWluaW5nIGl0cyBwb3NpdGlvbiBpbiB0aGUgdGFiIG9yZGVyLlxuICAgICAqIEBkZWZhdWx0IDJcbiAgICAgKi9cbiAgICBwdWJsaWMgdGFiSW5kZXg6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGB0aWNrUG9zaXRpb25gIHByb3BlcnR5IGRldGVybWluZXMgd2hlcmUgdGhlIGF4aXMgdGlja3MgYXJlIHJlbmRlcmVkIGluIHJlbGF0aW9uIHRvIHRoZSBheGlzIGxpbmUuIFxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTogXG4gICAgICogKiBJbnNpZGU6IFJlbmRlcnMgdGhlIHRpY2tzIGluc2lkZSB0aGUgYXhpcyBsaW5lLiBcbiAgICAgKiAqIE91dHNpZGU6IFJlbmRlcnMgdGhlIHRpY2tzIG91dHNpZGUgdGhlIGF4aXMgbGluZS5cbiAgICAgKiBAZGVmYXVsdCAnT3V0c2lkZSdcbiAgICAgKi9cbiAgICBwdWJsaWMgdGlja1Bvc2l0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgdGl0bGUgb2YgYW4gYXhpcywgZGlzcGxheWVkIGFsb25nIHRoZSBheGlzIHRvIHByb3ZpZGUgY29udGV4dCBhYm91dCB0aGUgcmVwcmVzZW50ZWQgZGF0YS5cbiAgICAgKiBAZGVmYXVsdCAnJ1xuICAgICAqL1xuICAgIHB1YmxpYyB0aXRsZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiB0aGUgYXhpcyB0aXRsZSBhbmQgdGhlIGF4aXMgbGFiZWxzLlxuICAgICAqIEBkZWZhdWx0IDVcbiAgICAgKi9cbiAgICBwdWJsaWMgdGl0bGVQYWRkaW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgYW4gYW5nbGUgZm9yIHJvdGF0aW5nIHRoZSBheGlzIHRpdGxlLiBCeSBkZWZhdWx0LCB0aGUgYW5nbGUgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgcG9zaXRpb24gYW5kIG9yaWVudGF0aW9uIG9mIHRoZSBheGlzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgdGl0bGVSb3RhdGlvbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBPcHRpb25zIGZvciBjdXN0b21pemluZyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgYXhpcyB0aXRsZSwgaW5jbHVkaW5nIGZvbnQgZmFtaWx5LCBzaXplLCBzdHlsZSwgd2VpZ2h0LCBhbmQgY29sb3IuXG4gICAgICovXG4gICAgcHVibGljIHRpdGxlU3R5bGU6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGB2YWx1ZVR5cGVgIHByb3BlcnR5IGRlZmluZXMgdGhlIHR5cGUgb2YgZGF0YSB0aGF0IHRoZSBheGlzIGNhbiBtYW5hZ2UsIGVuc3VyaW5nIGNvcnJlY3QgcmVuZGVyaW5nIGJhc2VkIG9uIHRoZSBkYXRhIHR5cGUuIFRoaXMgcHJvcGVydHkgc3VwcG9ydHMgbXVsdGlwbGUgZGF0YSB0eXBlcywgZWFjaCBzdWl0ZWQgZm9yIGRpZmZlcmVudCBraW5kcyBvZiBkYXRhIHZpc3VhbGl6YXRpb24uIFxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zIGluY2x1ZGU6IFxuICAgICAqICogRG91YmxlOiBVc2VkIGZvciByZW5kZXJpbmcgYSBudW1lcmljIGF4aXMgdG8gYWNjb21tb2RhdGUgbnVtZXJpYyBkYXRhLiBcbiAgICAgKiAqIERhdGVUaW1lOiBVdGlsaXplZCBmb3IgcmVuZGVyaW5nIGEgZGF0ZS10aW1lIGF4aXMgdG8gbWFuYWdlIGRhdGUtdGltZSBkYXRhLiBcbiAgICAgKiAqIENhdGVnb3J5OiBFbXBsb3llZCBmb3IgcmVuZGVyaW5nIGEgY2F0ZWdvcnkgYXhpcyB0byBtYW5hZ2UgY2F0ZWdvcmljYWwgZGF0YS4gXG4gICAgICogKiBMb2dhcml0aG1pYzogQXBwbGllZCBmb3IgcmVuZGVyaW5nIGEgbG9nYXJpdGhtaWMgYXhpcyB0byBoYW5kbGUgYSB3aWRlIHJhbmdlIG9mIHZhbHVlcy4gXG4gICAgICogKiBEYXRlVGltZUNhdGVnb3J5OiBVc2VkIHRvIHJlbmRlciBhIGRhdGUtdGltZSBjYXRlZ29yeSBheGlzIGZvciBtYW5hZ2luZyBidXNpbmVzcyBkYXlzLlxuICAgICAqIEBkZWZhdWx0ICdEb3VibGUnXG4gICAgICogQGJsYXpvcnR5cGUgU3luY2Z1c2lvbi5FSjIuQmxhem9yLkNoYXJ0cy5WYWx1ZVR5cGVcbiAgICAgKiBAaXNlbnVtZXJhdGlvbiB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHZhbHVlVHlwZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgYXhpcyBsYWJlbHMgd2lsbCBiZSB2aXNpYmxlIGluIHRoZSBjaGFydC4gQnkgZGVmYXVsdCwgYXhpcyBsYWJlbHMgYXJlIGVuYWJsZWQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyB2aXNpYmxlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBheGlzIGlzIHNjYWxlZCBieSB0aGlzIGZhY3Rvci4gV2hlbiBgem9vbUZhY3RvcmAgaXMgMC41LCB0aGUgY2hhcnQgaXMgc2NhbGVkIGJ5IDIwMCUgYWxvbmcgdGhpcyBheGlzLiBcbiAgICAgKiA+IE5vdGUgdGhlIHZhbHVlIHJhbmdlcyBmcm9tIDAgdG8gMS5cbiAgICAgKiBAZGVmYXVsdCAxXG4gICAgICovXG4gICAgcHVibGljIHpvb21GYWN0b3I6IGFueTtcbiAgICAvKiogXG4gICAgICogU2V0cyB0aGUgcG9zaXRpb24gb2YgdGhlIHpvb21lZCBheGlzIG9uIHRoZSBjaGFydCwgd2l0aCB0aGUgYHpvb21Qb3NpdGlvbmAgcHJvcGVydHkgc3BlY2lmeWluZyB0aGUgcG9zaXRpb24gd2l0aGluIHRoZSB6b29tZWQgcmFuZ2UsIGZyb20gMCAoc3RhcnQpIHRvIDEgKGVuZCkuXG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqL1xuICAgIHB1YmxpYyB6b29tUG9zaXRpb246IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjpWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHNldFZhbHVlKCdjdXJyZW50SW5zdGFuY2UnLCB0aGlzLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKG91dHB1dHMpO1xuICAgICAgICB0aGlzLmRpcmVjdGl2ZVByb3BMaXN0ID0gaW5wdXQ7XG4gICAgfVxufVxuXG4vKipcbiAqIEF4aXMgQXJyYXkgRGlyZWN0aXZlXG4gKiBAcHJpdmF0ZVxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2Vqcy1jaGFydD5lLWF4ZXMnLFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgICAgY2hpbGRyZW46IG5ldyBDb250ZW50Q2hpbGRyZW4oQXhpc0RpcmVjdGl2ZSlcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBBeGVzRGlyZWN0aXZlIGV4dGVuZHMgQXJyYXlCYXNlPEF4ZXNEaXJlY3RpdmU+IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoJ2F4ZXMnKTtcbiAgICB9XG59Il19
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhlcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2hhcnQvYXhlcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFFekUsSUFBSSxLQUFLLEdBQWEsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSw2QkFBNkIsRUFBRSwwQkFBMEIsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDdmpDLElBQUksT0FBTyxHQUFhLEVBQUUsQ0FBQztBQUMzQjs7Ozs7R0FLRztBQVVILE1BQU0sT0FBTyxhQUFjLFNBQVEsV0FBMEI7SUF1WXpELFlBQW9CLGdCQUFpQztRQUNqRCxLQUFLLEVBQUUsQ0FBQztRQURRLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFsWTlDLFNBQUksR0FBYSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBb1l2RCxRQUFRLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDOzswR0E1WVEsYUFBYTs4RkFBYixhQUFhLDRpRUFKZ0IsbUJBQW1CLHdGQUNiLHlCQUF5QjsyRkFHNUQsYUFBYTtrQkFUekIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLE9BQU8sRUFBRTt3QkFDTCxlQUFlLEVBQUUsSUFBSSxZQUFZLENBQUMsbUJBQW1CLENBQUM7d0JBQ3RELHFCQUFxQixFQUFFLElBQUksWUFBWSxDQUFDLHlCQUF5QixDQUFDO3FCQUNyRTtpQkFDSjs7QUFnWkQ7OztHQUdHO0FBT0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxTQUF3QjtJQUN2RDtRQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQixDQUFDOzswR0FIUSxhQUFhOzhGQUFiLGFBQWEsaUZBSFksYUFBYTsyRkFHdEMsYUFBYTtrQkFOekIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixPQUFPLEVBQUU7d0JBQ0wsUUFBUSxFQUFFLElBQUksZUFBZSxDQUFDLGFBQWEsQ0FBQztxQkFDL0M7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFZpZXdDb250YWluZXJSZWYsIENvbnRlbnRDaGlsZHJlbiwgQ29udGVudENoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wbGV4QmFzZSwgQXJyYXlCYXNlLCBzZXRWYWx1ZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJhc2UnO1xuXG5pbXBvcnQgeyBTdHJpcExpbmVzRGlyZWN0aXZlIH0gZnJvbSAnLi9zdHJpcGxpbmVzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNdWx0aUxldmVsTGFiZWxzRGlyZWN0aXZlIH0gZnJvbSAnLi9tdWx0aWxldmVsbGFiZWxzLmRpcmVjdGl2ZSc7XG5cbmxldCBpbnB1dDogc3RyaW5nW10gPSBbJ2JvcmRlcicsICdjb2VmZmljaWVudCcsICdjb2x1bW5JbmRleCcsICdjcm9zc2VzQXQnLCAnY3Jvc3Nlc0luQXhpcycsICdjcm9zc2hhaXJUb29sdGlwJywgJ2Rlc2NyaXB0aW9uJywgJ2Rlc2lyZWRJbnRlcnZhbHMnLCAnZWRnZUxhYmVsUGxhY2VtZW50JywgJ2VuYWJsZUF1dG9JbnRlcnZhbE9uWm9vbWluZycsICdlbmFibGVTY3JvbGxiYXJPblpvb21pbmcnLCAnZW5hYmxlVHJpbScsICdlbmFibGVXcmFwJywgJ2ludGVydmFsJywgJ2ludGVydmFsVHlwZScsICdpc0luZGV4ZWQnLCAnaXNJbnZlcnNlZCcsICdsYWJlbEZvcm1hdCcsICdsYWJlbEludGVyc2VjdEFjdGlvbicsICdsYWJlbFBhZGRpbmcnLCAnbGFiZWxQbGFjZW1lbnQnLCAnbGFiZWxQb3NpdGlvbicsICdsYWJlbFJvdGF0aW9uJywgJ2xhYmVsU3R5bGUnLCAnbGFiZWxUZW1wbGF0ZScsICdsaW5lQnJlYWtBbGlnbm1lbnQnLCAnbGluZVN0eWxlJywgJ2xvZ0Jhc2UnLCAnbWFqb3JHcmlkTGluZXMnLCAnbWFqb3JUaWNrTGluZXMnLCAnbWF4aW11bScsICdtYXhpbXVtTGFiZWxXaWR0aCcsICdtYXhpbXVtTGFiZWxzJywgJ21pbmltdW0nLCAnbWlub3JHcmlkTGluZXMnLCAnbWlub3JUaWNrTGluZXMnLCAnbWlub3JUaWNrc1BlckludGVydmFsJywgJ211bHRpTGV2ZWxMYWJlbHMnLCAnbmFtZScsICdvcHBvc2VkUG9zaXRpb24nLCAncGxhY2VOZXh0VG9BeGlzTGluZScsICdwbG90T2Zmc2V0JywgJ3Bsb3RPZmZzZXRCb3R0b20nLCAncGxvdE9mZnNldExlZnQnLCAncGxvdE9mZnNldFJpZ2h0JywgJ3Bsb3RPZmZzZXRUb3AnLCAncmFuZ2VQYWRkaW5nJywgJ3Jvd0luZGV4JywgJ3Njcm9sbGJhclNldHRpbmdzJywgJ3NrZWxldG9uJywgJ3NrZWxldG9uVHlwZScsICdzcGFuJywgJ3N0YXJ0QW5nbGUnLCAnc3RhcnRGcm9tWmVybycsICdzdHJpcExpbmVzJywgJ3RhYkluZGV4JywgJ3RpY2tQb3NpdGlvbicsICd0aXRsZScsICd0aXRsZVBhZGRpbmcnLCAndGl0bGVSb3RhdGlvbicsICd0aXRsZVN0eWxlJywgJ3ZhbHVlVHlwZScsICd2aXNpYmxlJywgJ3pvb21GYWN0b3InLCAnem9vbVBvc2l0aW9uJ107XG5sZXQgb3V0cHV0czogc3RyaW5nW10gPSBbXTtcbi8qKlxuICogQXhpcyBEaXJlY3RpdmVcbiAqIGBgYGh0bWxcbiAqIDxlLWF4ZXM+PGUtYXhpcz48L2UtYXhpcz48L2UtYXhlcz5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2UtYXhlcz5lLWF4aXMnLFxuICAgIGlucHV0czogaW5wdXQsXG4gICAgb3V0cHV0czogb3V0cHV0cywgICAgXG4gICAgcXVlcmllczoge1xuICAgICAgICBjaGlsZFN0cmlwTGluZXM6IG5ldyBDb250ZW50Q2hpbGQoU3RyaXBMaW5lc0RpcmVjdGl2ZSksIFxuICAgICAgICBjaGlsZE11bHRpTGV2ZWxMYWJlbHM6IG5ldyBDb250ZW50Q2hpbGQoTXVsdGlMZXZlbExhYmVsc0RpcmVjdGl2ZSlcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEF4aXNEaXJlY3RpdmUgZXh0ZW5kcyBDb21wbGV4QmFzZTxBeGlzRGlyZWN0aXZlPiB7XG4gICAgcHVibGljIGRpcmVjdGl2ZVByb3BMaXN0OiBhbnk7XG5cdFxuICAgIHB1YmxpYyBjaGlsZFN0cmlwTGluZXM6IGFueTtcbiAgICBwdWJsaWMgY2hpbGRNdWx0aUxldmVsTGFiZWxzOiBhbnk7XG4gICAgcHVibGljIHRhZ3M6IHN0cmluZ1tdID0gWydzdHJpcExpbmVzJywgJ211bHRpTGV2ZWxMYWJlbHMnXTtcbiAgICAvKiogXG4gICAgICogQ29uZmlndXJlcyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgYm9yZGVyIGFyb3VuZCBtdWx0aS1sZXZlbCBsYWJlbHMsIGluY2x1ZGluZyB0aGUgY29sb3IsIHdpZHRoLCBhbmQgdHlwZSBvZiB0aGUgYm9yZGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBib3JkZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGBjb2VmZmljaWVudGAgdmFsdWUgYWRqdXN0cyB0aGUgc2l6ZSBvZiB0aGUgcG9sYXIgcmFkYXIgY2hhcnQncyByYWRpdXMuIEEgaGlnaGVyIHZhbHVlIGluY3JlYXNlcyB0aGUgcmFkaXVzIHNpemUsIHdoaWxlIGEgc21hbGxlciB2YWx1ZSBkZWNyZWFzZXMgaXQuXG4gICAgICogQGRlZmF1bHQgMTAwXG4gICAgICovXG4gICAgcHVibGljIGNvZWZmaWNpZW50OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgaW5kZXggb2YgdGhlIGNvbHVtbiB3aGVyZSB0aGUgYXhpcyBpcyBhc3NvY2lhdGVkIHdoZW4gdGhlIGNoYXJ0IGFyZWEgaXMgZGl2aWRlZCBpbnRvIG11bHRpcGxlIHBsb3QgYXJlYXMgdXNpbmcgYGNvbHVtbnNgLiBcbiAgICAgKiBcbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgcHVibGljIGNvbHVtbkluZGV4OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgdmFsdWUgYXQgd2hpY2ggdGhlIGF4aXMgbGluZSBpbnRlcnNlY3RzIHdpdGggdGhlIHZlcnRpY2FsIGF4aXMgb3IgdmljZSB2ZXJzYS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGNyb3NzZXNBdDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGF4aXMgd2l0aCB3aGljaCB0aGUgYXhpcyBsaW5lIHNob3VsZCBpbnRlcnNlY3QuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBjcm9zc2VzSW5BeGlzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIE9wdGlvbnMgdG8gY3VzdG9taXplIHRoZSBhcHBlYXJhbmNlIGFuZCBiZWhhdmlvciBvZiB0aGUgY3Jvc3NoYWlyIHRvb2x0aXAgdGhhdCBhcHBlYXJzIHdoZW4gaG92ZXJpbmcgb3ZlciB0aGUgY2hhcnQuXG4gICAgICovXG4gICAgcHVibGljIGNyb3NzaGFpclRvb2x0aXA6IGFueTtcbiAgICAvKiogXG4gICAgICogQSBkZXNjcmlwdGlvbiBmb3IgdGhlIGF4aXMgdGhhdCBwcm92aWRlcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGl0cyBjb250ZW50IGZvciBzY3JlZW4gcmVhZGVycy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGRlc2NyaXB0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgZGVzaXJlZEludGVydmFsc2AgcHJvcGVydHkgYWxsb3dzIHRoZSBheGlzIHRvIGNhbGN1bGF0ZSBpbnRlcnZhbHMgdGhhdCBhcmUgcm91Z2hseSBlcXVhbCB0byB0aGUgc3BlY2lmaWVkIG51bWJlciwgcHJvbW90aW5nIGEgbW9yZSByZWFkYWJsZSBhbmQgZXZlbmx5IHNwYWNlZCBheGlzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwZGVmYXVsdHZhbHVlaWdub3JlIFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNpcmVkSW50ZXJ2YWxzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgZWRnZUxhYmVsUGxhY2VtZW50YCBwcm9wZXJ0eSBlbnN1cmVzIHRoYXQgbGFiZWxzIHBvc2l0aW9uZWQgYXQgdGhlIGVkZ2VzIG9mIHRoZSBheGlzIGRvIG5vdCBvdmVybGFwIHdpdGggdGhlIGF4aXMgYm91bmRhcmllcyBvciBvdGhlciBjaGFydCBlbGVtZW50cywgb2ZmZXJpbmcgc2V2ZXJhbCBvcHRpb25zIHRvIGltcHJvdmUgY2hhcnQgcmVhZGFiaWxpdHkgYnkgbWFuYWdpbmcgZWRnZSBsYWJlbHMgZWZmZWN0aXZlbHkuIFxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTogXG4gICAgICogKiBOb25lOiBObyBhY3Rpb24gd2lsbCBiZSBwZXJmb3JtZWQgb24gZWRnZSBsYWJlbHMuIFxuICAgICAqICogSGlkZTogRWRnZSBsYWJlbHMgd2lsbCBiZSBoaWRkZW4gdG8gcHJldmVudCBvdmVybGFwLiBcbiAgICAgKiAqIFNoaWZ0OiBFZGdlIGxhYmVscyB3aWxsIGJlIHNoaWZ0ZWQgdG8gZml0IHdpdGhpbiB0aGUgYXhpcyBib3VuZHMgd2l0aG91dCBvdmVybGFwcGluZy5cbiAgICAgKiBAZGVmYXVsdCAnU2hpZnQnXG4gICAgICovXG4gICAgcHVibGljIGVkZ2VMYWJlbFBsYWNlbWVudDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGF4aXMgaW50ZXJ2YWwgd2lsbCBiZSBjYWxjdWxhdGVkIGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gdGhlIHpvb21lZCByYW5nZS5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGVuYWJsZUF1dG9JbnRlcnZhbE9uWm9vbWluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgYSBzY3JvbGxiYXIgd2lsbCBhcHBlYXIgd2hpbGUgem9vbWluZyB0byBoZWxwIG5hdmlnYXRlIHRocm91Z2ggdGhlIHpvb21lZCBjb250ZW50LlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgZW5hYmxlU2Nyb2xsYmFyT25ab29taW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIHNldCB0byB0cnVlLCBheGlzIGxhYmVscyB3aWxsIGJlIHRyaW1tZWQgYmFzZWQgb24gdGhlIGBtYXhpbXVtTGFiZWxXaWR0aGAuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZW5hYmxlVHJpbTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgYXhpcyBsYWJlbHMgc2hvdWxkIGJlIHdyYXBwZWQgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBgbWF4aW11bUxhYmVsV2lkdGhgLiBcbiAgICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHRoZSBheGlzIGxhYmVscyB3aWxsIGF1dG9tYXRpY2FsbHkgd3JhcCB0byBmaXQgd2l0aGluIHRoZSBhdmFpbGFibGUgd2lkdGggZGVmaW5lZCBieSBgbWF4aW11bUxhYmVsV2lkdGhgLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGVuYWJsZVdyYXA6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBpbnRlcnZhbCBmb3IgdGhlIGF4aXMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3BkZWZhdWx0dmFsdWVpZ25vcmUgXG4gICAgICovXG4gICAgcHVibGljIGludGVydmFsOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgaW50ZXJ2YWxUeXBlYCBwcm9wZXJ0eSBkZWZpbmVzIGhvdyB0aGUgaW50ZXJ2YWxzIG9uIGEgZGF0ZS10aW1lIGF4aXMgYXJlIGNhbGN1bGF0ZWQgYW5kIGRpc3BsYXllZC4gXG4gICAgICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOiBcbiAgICAgKiAqIEF1dG86IEF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lcyB0aGUgaW50ZXJ2YWwgdHlwZSBiYXNlZCBvbiB0aGUgZGF0YSBhbmQgY2hhcnQgc2V0dGluZ3MuIFxuICAgICAqICogWWVhcnM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIHllYXJzLiBcbiAgICAgKiAqIE1vbnRoczogU2V0cyB0aGUgaW50ZXJ2YWwgb2YgdGhlIGF4aXMgaW4gbW9udGhzLiBcbiAgICAgKiAqIERheXM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIGRheXMuIFxuICAgICAqICogSG91cnM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIGhvdXJzLiBcbiAgICAgKiAqIE1pbnV0ZXM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIG1pbnV0ZXMuXG4gICAgICogQGRlZmF1bHQgJ0F1dG8nXG4gICAgICovXG4gICAgcHVibGljIGludGVydmFsVHlwZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgZGF0YSBwb2ludHMgYXJlIHJlbmRlcmVkIGJhc2VkIG9uIHRoZWlyIGluZGV4LlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGlzSW5kZXhlZDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGF4aXMgd2lsbCBiZSByZW5kZXJlZCBpbiBhbiBpbnZlcnNlZCBtYW5uZXIuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNJbnZlcnNlZDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBVc2VkIHRvIGZvcm1hdCB0aGUgYXhpcyBsYWJlbC4gVGhpcyBwcm9wZXJ0eSBhY2NlcHRzIGdsb2JhbCBzdHJpbmcgZm9ybWF0cyBzdWNoIGFzIGBDYCwgYG4xYCwgYFBgLCBldGMuIFxuICAgICAqIEl0IGFsc28gYWNjZXB0cyBwbGFjZWhvbGRlcnMgbGlrZSBge3ZhbHVlfcKwQ2AsIHdoZXJlIGB7dmFsdWV9YCByZXByZXNlbnRzIHRoZSBheGlzIGxhYmVsIChlLmcuLCAyMMKwQykuXG4gICAgICogQGRlZmF1bHQgJydcbiAgICAgKi9cbiAgICBwdWJsaWMgbGFiZWxGb3JtYXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBhY3Rpb24gdG8gdGFrZSB3aGVuIGF4aXMgbGFiZWxzIGludGVyc2VjdCB3aXRoIGVhY2ggb3RoZXIuIFxuICAgICAqIFRoZSBhdmFpbGFibGUgb3B0aW9ucyBhcmU6IFxuICAgICAqICogTm9uZTogU2hvd3MgYWxsIGxhYmVscyB3aXRob3V0IGFueSBtb2RpZmljYXRpb24uIFxuICAgICAqICogSGlkZTogSGlkZXMgdGhlIGxhYmVsIGlmIGl0IGludGVyc2VjdHMgd2l0aCBhbm90aGVyIGxhYmVsLiBcbiAgICAgKiAqIFRyaW06IFRyaW1zIHRoZSBsYWJlbCB0ZXh0IHRvIGZpdCB3aXRoaW4gdGhlIGF2YWlsYWJsZSBzcGFjZS4gXG4gICAgICogKiBXcmFwOiBXcmFwcyB0aGUgbGFiZWwgdGV4dCB0byBmaXQgd2l0aGluIHRoZSBhdmFpbGFibGUgc3BhY2UuIFxuICAgICAqICogTXVsdGlwbGVSb3dzOiBEaXNwbGF5cyB0aGUgbGFiZWwgdGV4dCBpbiBtdWx0aXBsZSByb3dzIHRvIGF2b2lkIGludGVyc2VjdGlvbi4gXG4gICAgICogKiBSb3RhdGU0NTogUm90YXRlcyB0aGUgbGFiZWwgdGV4dCBieSA0NSBkZWdyZWVzIHRvIGF2b2lkIGludGVyc2VjdGlvbi4gXG4gICAgICogKiBSb3RhdGU5MDogUm90YXRlcyB0aGUgbGFiZWwgdGV4dCBieSA5MCBkZWdyZWVzIHRvIGF2b2lkIGludGVyc2VjdGlvbi4gXG4gICAgICogKiBSb3RhdGU0NVdpdGhUcmltOiBUcmltIHRoZSBsYWJlbCBhbmQgcm90YXRlIGl0IHRvIDQ1IGRlZ3JlZXMgd2hlbiBpdCBpbnRlcnNlY3RzLiBcbiAgICAgKiAqIFJvdGF0ZTkwV2l0aFRyaW06IFRyaW0gdGhlIGxhYmVsIGFuZCByb3RhdGUgaXQgdG8gOTAgZGVncmVlcyB3aGVuIGl0IGludGVyc2VjdHMuXG4gICAgICogQGRlZmF1bHQgVHJpbVxuICAgICAqL1xuICAgIHB1YmxpYyBsYWJlbEludGVyc2VjdEFjdGlvbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgYGxhYmVsUGFkZGluZ2AgcHJvcGVydHkgYWRqdXN0cyB0aGUgZGlzdGFuY2UgdG8gZW5zdXJlIGEgY2xlYXIgc3BhY2UgYmV0d2VlbiB0aGUgYXhpcyBsYWJlbHMgYW5kIHRoZSBheGlzIGxpbmUuXG4gICAgICogQGRlZmF1bHQgNVxuICAgICAqL1xuICAgIHB1YmxpYyBsYWJlbFBhZGRpbmc6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGBsYWJlbFBsYWNlbWVudGAgcHJvcGVydHkgY29udHJvbHMgd2hlcmUgdGhlIGNhdGVnb3J5IGF4aXMgbGFiZWxzIGFyZSByZW5kZXJlZCBpbiByZWxhdGlvbiB0byB0aGUgYXhpcyB0aWNrcy4gXG4gICAgICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOiBcbiAgICAgKiAqIEJldHdlZW5UaWNrczogUmVuZGVycyB0aGUgbGFiZWwgYmV0d2VlbiB0aGUgYXhpcyB0aWNrcy4gXG4gICAgICogKiBPblRpY2tzOiBSZW5kZXJzIHRoZSBsYWJlbCBkaXJlY3RseSBvbiB0aGUgYXhpcyB0aWNrcy5cbiAgICAgKiBAZGVmYXVsdCAnQmV0d2VlblRpY2tzJ1xuICAgICAqL1xuICAgIHB1YmxpYyBsYWJlbFBsYWNlbWVudDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgYGxhYmVsUG9zaXRpb25gIHByb3BlcnR5IGRldGVybWluZXMgd2hlcmUgdGhlIGF4aXMgbGFiZWxzIGFyZSByZW5kZXJlZCBpbiByZWxhdGlvbiB0byB0aGUgYXhpcyBsaW5lLiBcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6IFxuICAgICAqICogSW5zaWRlOiBSZW5kZXJzIHRoZSBsYWJlbHMgaW5zaWRlIHRoZSBheGlzIGxpbmUuIFxuICAgICAqICogT3V0c2lkZTogUmVuZGVycyB0aGUgbGFiZWxzIG91dHNpZGUgdGhlIGF4aXMgbGluZS5cbiAgICAgKiBAZGVmYXVsdCAnT3V0c2lkZSdcbiAgICAgKi9cbiAgICBwdWJsaWMgbGFiZWxQb3NpdGlvbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgYW5nbGUgdG8gd2hpY2ggdGhlIGF4aXMgbGFiZWwgZ2V0cyByb3RhdGVkLlxuICAgICAqIEBkZWZhdWx0IDBcbiAgICAgKi9cbiAgICBwdWJsaWMgbGFiZWxSb3RhdGlvbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGlzIHByb3BlcnR5IGFsbG93cyBkZWZpbmluZyB2YXJpb3VzIGZvbnQgc2V0dGluZ3MgdG8gY29udHJvbCBob3cgdGhlIGxhYmVscyBhcmUgZGlzcGxheWVkIG9uIHRoZSBheGlzLlxuICAgICAqL1xuICAgIHB1YmxpYyBsYWJlbFN0eWxlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgdGVtcGxhdGUgdXNlZCB0byByZW5kZXIgYXhpcyBsYWJlbHMsIGFsbG93aW5nIGZvciBjdXN0b21pemVkIGxhYmVscyB3aXRoIHRleHQsIGltYWdlcywgb3Igb3RoZXIgVUkgZWxlbWVudHMuIFxuICAgICAqIFRoZSB0ZW1wbGF0ZSBpcyBwcm92aWRlZCBhcyBhIHN0cmluZyB3aXRoIHBsYWNlaG9sZGVycyBmb3IgaW50ZXJwb2xhdGlvbi4gVXNlIGAke2xhYmVsfWAgdG8gaW5zZXJ0IHRoZSBheGlzIGxhYmVsIGFuZCBgJHt2YWx1ZX1gIGZvciB0aGUgYXhpcyBsYWJlbCB2YWx1ZS4gXG4gICAgICogRm9yIHNlY3VyaXR5LCBzdHJpbmcgdGVtcGxhdGVzIHVzZSBkYW5nZXJvdXNseVNldElubmVySFRNTCBpbiBSZWFjdOKAlGVuc3VyZSBpbnB1dCBpcyB0cnVzdGVkIHRvIGF2b2lkIFhTUyB2dWxuZXJhYmlsaXRpZXMuIFxuICAgICAqIElmIG51bGwgb3IgdW5kZWZpbmVkLCB0aGUgYXhpcyB3aWxsIHJlbmRlciBkZWZhdWx0IGxhYmVscy4gXG4gICAgICogQ29tcGF0aWJsZSB3aXRoIGJvdGggY2F0ZWdvcmljYWwgYW5kIG51bWVyaWNhbCBheGVzLlxuICAgICAqIEBleGFtcGxlIGBgYGh0bWxcbjxkaXYgaWQ9J0NoYXJ0Jz48L2Rpdj5cbmBgYFxuYGBgdHlwZXNjcmlwdFxubGV0IGNoYXJ0OiBDaGFydCA9IG5ldyBDaGFydCh7XG4uLi5cbnByaW1hcnlYQXhpczoge1xubGFiZWxUZW1wbGF0ZTogJzxkaXY+Q291bnRyeTogJHtsYWJlbH08L2Rpdj4nXG59XG4uLi5cbn0pO1xuY2hhcnQuYXBwZW5kVG8oJyNDaGFydCcpO1xuYGBgXG5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGxhYmVsVGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogRGV0ZXJtaW5lcyB0aGUgYWxpZ25tZW50IG9mIGxhYmVscyB3aGVuIGEgbGluZSBicmVhayBvY2N1cnMgaW4gdGhlIGF4aXMgbGFiZWxzLlxuICAgICAqIEBkZWZhdWx0ICdDZW50ZXInXG4gICAgICovXG4gICAgcHVibGljIGxpbmVCcmVha0FsaWdubWVudDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBPcHRpb25zIGZvciBjdXN0b21pemluZyB0aGUgYXhpcyBsaW5lcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbGluZVN0eWxlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgYmFzZSB2YWx1ZSBmb3IgYSBsb2dhcml0aG1pYyBheGlzLiBcbiAgICAgKiA+IE5vdGUgdGhhdCBgdmFsdWVUeXBlYCBtdXN0IGJlIHNldCB0byBgTG9nYXJpdGhtaWNgIGZvciB0aGlzIGZlYXR1cmUgdG8gd29yay5cbiAgICAgKiBAZGVmYXVsdCAxMFxuICAgICAqL1xuICAgIHB1YmxpYyBsb2dCYXNlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIE9wdGlvbnMgZm9yIGN1c3RvbWl6aW5nIG1ham9yIGdyaWQgbGluZXMgb24gdGhlIGF4aXMuXG4gICAgICovXG4gICAgcHVibGljIG1ham9yR3JpZExpbmVzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIE9wdGlvbnMgZm9yIGN1c3RvbWl6aW5nIG1ham9yIHRpY2sgbGluZXMgb24gdGhlIGF4aXMuXG4gICAgICovXG4gICAgcHVibGljIG1ham9yVGlja0xpbmVzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgYXhpcyByYW5nZSwgd2hpY2ggc2V0cyB0aGUgdXBwZXIgYm91bmQgb2YgdGhlIGF4aXMgYW5kIGRlZmluZXMgdGhlIGxhcmdlc3QgdmFsdWUgZGlzcGxheWVkIG9uIHRoZSBjaGFydCwgaGVscGluZyB0byBjb250cm9sIHRoZSB2aXNpYmxlIHJhbmdlIG9mIGRhdGEuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBtYXhpbXVtOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSB3aWR0aCBvZiBhbiBheGlzIGxhYmVsLlxuICAgICAqIEBkZWZhdWx0IDM0LlxuICAgICAqL1xuICAgIHB1YmxpYyBtYXhpbXVtTGFiZWxXaWR0aDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGxhYmVscyBwZXIgMTAwIHBpeGVscyByZWxhdGl2ZSB0byB0aGUgYXhpcyBsZW5ndGguXG4gICAgICogQGRlZmF1bHQgM1xuICAgICAqL1xuICAgIHB1YmxpYyBtYXhpbXVtTGFiZWxzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgYXhpcyByYW5nZSwgd2hpY2ggc2V0cyB0aGUgbG93ZXIgYm91bmQgb2YgdGhlIGF4aXMgYW5kIGRlZmluZXMgdGhlIHNtYWxsZXN0IHZhbHVlIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgb24gdGhlIGNoYXJ0IHRvIGNvbnRyb2wgdGhlIHZpc2libGUgcmFuZ2Ugb2YgZGF0YS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIG1pbmltdW06IGFueTtcbiAgICAvKiogXG4gICAgICogT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgbWlub3IgZ3JpZCBsaW5lcyBvbiB0aGUgYXhpcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWlub3JHcmlkTGluZXM6IGFueTtcbiAgICAvKiogXG4gICAgICogT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgbWlub3IgdGljayBsaW5lcyBvbiB0aGUgYXhpcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWlub3JUaWNrTGluZXM6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgbWlub3IgdGlja3MgcGVyIGludGVydmFsLlxuICAgICAqIEBkZWZhdWx0IDBcbiAgICAgKi9cbiAgICBwdWJsaWMgbWlub3JUaWNrc1BlckludGVydmFsOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIE11bHRpLWxldmVsIGxhYmVscyBhcmUgdXNlZCB0byBkaXNwbGF5IGhpZXJhcmNoaWNhbCBvciBncm91cGVkIGxhYmVscyBvbiB0aGUgYXhpcywgYWxsb3dpbmcgZm9yIGEgbW9yZSBkZXRhaWxlZCBhbmQgc3RydWN0dXJlZCBkYXRhIHJlcHJlc2VudGF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBtdWx0aUxldmVsTGFiZWxzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGFuIGF4aXMuIFRvIGFzc29jaWF0ZSBhbiBheGlzIHdpdGggYSBzZXJpZXMsIHNldCB0aGlzIG5hbWUgdG8gdGhlIGB4QXhpc05hbWVgIG9yIGB5QXhpc05hbWVgIHByb3BlcnRpZXMgb2YgdGhlIHNlcmllcy5cbiAgICAgKiBAZGVmYXVsdCAnJ1xuICAgICAqL1xuICAgIHB1YmxpYyBuYW1lOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIHNldCB0byB0cnVlLCB0aGUgYXhpcyB3aWxsIHJlbmRlciBvbiB0aGUgb3Bwb3NpdGUgc2lkZSBvZiBpdHMgZGVmYXVsdCBwb3NpdGlvbi5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHB1YmxpYyBvcHBvc2VkUG9zaXRpb246IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHdoZXRoZXIgYXhpcyBlbGVtZW50cywgc3VjaCBhcyBheGlzIGxhYmVscyBhbmQgdGhlIGF4aXMgdGl0bGUsIHNob3VsZCBiZSBjcm9zc2VkIGJ5IHRoZSBheGlzIGxpbmUuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBwbGFjZU5leHRUb0F4aXNMaW5lOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgcGFkZGluZyBvbiB0aGUgdG9wLCBib3R0b20sIGxlZnQgYW5kIHJpZ2h0IHNpZGVzIG9mIHRoZSBjaGFydCBhcmVhLCBpbiBwaXhlbHMuXG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqL1xuICAgIHB1YmxpYyBwbG90T2Zmc2V0OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgYm90dG9tIHBhZGRpbmcgZm9yIHRoZSBjaGFydCBhcmVhLCBpbiBwaXhlbHMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBwbG90T2Zmc2V0Qm90dG9tOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgbGVmdCBwYWRkaW5nIGZvciB0aGUgY2hhcnQgYXJlYSwgaW4gcGl4ZWxzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgcGxvdE9mZnNldExlZnQ6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSByaWdodCBwYWRkaW5nIGZvciB0aGUgY2hhcnQgYXJlYSwgaW4gcGl4ZWxzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgcGxvdE9mZnNldFJpZ2h0OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgdG9wIHBhZGRpbmcgZm9yIHRoZSBjaGFydCBhcmVhLCBpbiBwaXhlbHMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBwbG90T2Zmc2V0VG9wOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgcmFuZ2VQYWRkaW5nYCBwcm9wZXJ0eSBkZXRlcm1pbmVzIGhvdyBwYWRkaW5nIGlzIGFwcGxpZWQgdG8gdGhlIGF4aXMgcmFuZ2UsIGFmZmVjdGluZyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgY2hhcnQgYnkgYWRqdXN0aW5nIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyBvZiB0aGUgYXhpcy4gXG4gICAgICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOiBcbiAgICAgKiAqIE5vbmU6IE5vIHBhZGRpbmcgaXMgYXBwbGllZCB0byB0aGUgYXhpcy4gXG4gICAgICogKiBOb3JtYWw6IFBhZGRpbmcgaXMgYXBwbGllZCBiYXNlZCBvbiB0aGUgcmFuZ2UgY2FsY3VsYXRpb24uIFxuICAgICAqICogQWRkaXRpb25hbDogVGhlIGludGVydmFsIG9mIHRoZSBheGlzIGlzIGFkZGVkIGFzIHBhZGRpbmcgdG8gYm90aCB0aGUgbWluaW11bSBhbmQgbWF4aW11bSB2YWx1ZXMgb2YgdGhlIHJhbmdlLiBcbiAgICAgKiAqIFJvdW5kOiBUaGUgYXhpcyByYW5nZSBpcyByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IHBvc3NpYmxlIHZhbHVlIHRoYXQgaXMgZGl2aXNpYmxlIGJ5IHRoZSBpbnRlcnZhbC5cbiAgICAgKiBAZGVmYXVsdCAnQXV0bydcbiAgICAgKi9cbiAgICBwdWJsaWMgcmFuZ2VQYWRkaW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgaW5kZXggb2YgdGhlIHJvdyB3aGVyZSB0aGUgYXhpcyBpcyBhc3NvY2lhdGVkIHdoZW4gdGhlIGNoYXJ0IGFyZWEgaXMgZGl2aWRlZCBpbnRvIG11bHRpcGxlIHBsb3QgYXJlYXMgdXNpbmcgYHJvd3NgLiBcbiAgICAgKiBcbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgcHVibGljIHJvd0luZGV4OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIENvbmZpZ3VyZXMgdGhlIHNjcm9sbGJhciB3aXRoIG9wdGlvbnMgZm9yIGN1c3RvbWl6YXRpb24sIGluY2x1ZGluZyBhcHBlYXJhbmNlLCBiZWhhdmlvciwgYW5kIGxhenkgbG9hZGluZyBzZXR0aW5ncy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2Nyb2xsYmFyU2V0dGluZ3M6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBza2VsZXRvbiBmb3JtYXQgdXNlZCBmb3IgcHJvY2Vzc2luZyBkYXRlLXRpbWUgdmFsdWVzLlxuICAgICAqIEBkZWZhdWx0ICcnXG4gICAgICovXG4gICAgcHVibGljIHNrZWxldG9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgZm9ybWF0IHR5cGUgdG8gYmUgdXNlZCBpbiBkYXRlLXRpbWUgZm9ybWF0dGluZy5cbiAgICAgKiBAZGVmYXVsdCAnRGF0ZVRpbWUnXG4gICAgICogQGRlcHJlY2F0ZWQgXG4gICAgICovXG4gICAgcHVibGljIHNrZWxldG9uVHlwZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBgY29sdW1uc2Agb3IgYHJvd3NgIHRoYXQgYW4gYXhpcyBzcGFucyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseS5cbiAgICAgKiBAZGVmYXVsdCAxXG4gICAgICovXG4gICAgcHVibGljIHNwYW46IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBzdGFydCBhbmdsZSBmb3IgdGhlIHNlcmllcyBpbiBhIHBvbGFyIG9yIHJhZGFyIGNoYXJ0LCBtZWFzdXJlZCBpbiBkZWdyZWVzIGZyb20gdGhlIGhvcml6b250YWwgYXhpcywgZGV0ZXJtaW5pbmcgdGhlIGluaXRpYWwgYW5nbGUgZnJvbSB3aGljaCB0aGUgc2VyaWVzIGJlZ2lucy5cbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgcHVibGljIHN0YXJ0QW5nbGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgc2V0IHRvIHRydWUsIHRoZSBheGlzIHN0YXJ0cyBmcm9tIHplcm8uIFxuICAgICAqIElmIHNldCB0byBmYWxzZSwgdGhlIGF4aXMgc3RhcnRzIGZyb20gdGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIGRhdGEuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGFydEZyb21aZXJvOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgY29sbGVjdGlvbiBvZiBzdHJpcCBsaW5lcyBmb3IgdGhlIGF4aXMsIHdoaWNoIGFyZSB2aXN1YWwgZWxlbWVudHMgdXNlZCB0byBtYXJrIG9yIGhpZ2hsaWdodCBzcGVjaWZpYyByYW5nZXMuXG4gICAgICovXG4gICAgcHVibGljIHN0cmlwTGluZXM6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGB0YWJJbmRleGAgdmFsdWUgZm9yIHRoZSBheGlzLCBkZXRlcm1pbmluZyBpdHMgcG9zaXRpb24gaW4gdGhlIHRhYiBvcmRlci5cbiAgICAgKiBAZGVmYXVsdCAyXG4gICAgICovXG4gICAgcHVibGljIHRhYkluZGV4OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgdGlja1Bvc2l0aW9uYCBwcm9wZXJ0eSBkZXRlcm1pbmVzIHdoZXJlIHRoZSBheGlzIHRpY2tzIGFyZSByZW5kZXJlZCBpbiByZWxhdGlvbiB0byB0aGUgYXhpcyBsaW5lLiBcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6IFxuICAgICAqICogSW5zaWRlOiBSZW5kZXJzIHRoZSB0aWNrcyBpbnNpZGUgdGhlIGF4aXMgbGluZS4gXG4gICAgICogKiBPdXRzaWRlOiBSZW5kZXJzIHRoZSB0aWNrcyBvdXRzaWRlIHRoZSBheGlzIGxpbmUuXG4gICAgICogQGRlZmF1bHQgJ091dHNpZGUnXG4gICAgICovXG4gICAgcHVibGljIHRpY2tQb3NpdGlvbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHRpdGxlIG9mIGFuIGF4aXMsIGRpc3BsYXllZCBhbG9uZyB0aGUgYXhpcyB0byBwcm92aWRlIGNvbnRleHQgYWJvdXQgdGhlIHJlcHJlc2VudGVkIGRhdGEuXG4gICAgICogQGRlZmF1bHQgJydcbiAgICAgKi9cbiAgICBwdWJsaWMgdGl0bGU6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBwYWRkaW5nIGJldHdlZW4gdGhlIGF4aXMgdGl0bGUgYW5kIHRoZSBheGlzIGxhYmVscy5cbiAgICAgKiBAZGVmYXVsdCA1XG4gICAgICovXG4gICAgcHVibGljIHRpdGxlUGFkZGluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIGFuIGFuZ2xlIGZvciByb3RhdGluZyB0aGUgYXhpcyB0aXRsZS4gQnkgZGVmYXVsdCwgdGhlIGFuZ2xlIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIHBvc2l0aW9uIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgYXhpcy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHRpdGxlUm90YXRpb246IGFueTtcbiAgICAvKiogXG4gICAgICogT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGF4aXMgdGl0bGUsIGluY2x1ZGluZyBmb250IGZhbWlseSwgc2l6ZSwgc3R5bGUsIHdlaWdodCwgYW5kIGNvbG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyB0aXRsZVN0eWxlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgdmFsdWVUeXBlYCBwcm9wZXJ0eSBkZWZpbmVzIHRoZSB0eXBlIG9mIGRhdGEgdGhhdCB0aGUgYXhpcyBjYW4gbWFuYWdlLCBlbnN1cmluZyBjb3JyZWN0IHJlbmRlcmluZyBiYXNlZCBvbiB0aGUgZGF0YSB0eXBlLiBUaGlzIHByb3BlcnR5IHN1cHBvcnRzIG11bHRpcGxlIGRhdGEgdHlwZXMsIGVhY2ggc3VpdGVkIGZvciBkaWZmZXJlbnQga2luZHMgb2YgZGF0YSB2aXN1YWxpemF0aW9uLiBcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9ucyBpbmNsdWRlOiBcbiAgICAgKiAqIERvdWJsZTogVXNlZCBmb3IgcmVuZGVyaW5nIGEgbnVtZXJpYyBheGlzIHRvIGFjY29tbW9kYXRlIG51bWVyaWMgZGF0YS4gXG4gICAgICogKiBEYXRlVGltZTogVXRpbGl6ZWQgZm9yIHJlbmRlcmluZyBhIGRhdGUtdGltZSBheGlzIHRvIG1hbmFnZSBkYXRlLXRpbWUgZGF0YS4gXG4gICAgICogKiBDYXRlZ29yeTogRW1wbG95ZWQgZm9yIHJlbmRlcmluZyBhIGNhdGVnb3J5IGF4aXMgdG8gbWFuYWdlIGNhdGVnb3JpY2FsIGRhdGEuIFxuICAgICAqICogTG9nYXJpdGhtaWM6IEFwcGxpZWQgZm9yIHJlbmRlcmluZyBhIGxvZ2FyaXRobWljIGF4aXMgdG8gaGFuZGxlIGEgd2lkZSByYW5nZSBvZiB2YWx1ZXMuIFxuICAgICAqICogRGF0ZVRpbWVDYXRlZ29yeTogVXNlZCB0byByZW5kZXIgYSBkYXRlLXRpbWUgY2F0ZWdvcnkgYXhpcyBmb3IgbWFuYWdpbmcgYnVzaW5lc3MgZGF5cy5cbiAgICAgKiBAZGVmYXVsdCAnRG91YmxlJ1xuICAgICAqIEBibGF6b3J0eXBlIFN5bmNmdXNpb24uRUoyLkJsYXpvci5DaGFydHMuVmFsdWVUeXBlXG4gICAgICogQGlzZW51bWVyYXRpb24gdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyB2YWx1ZVR5cGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgc2V0IHRvIHRydWUsIGF4aXMgbGFiZWxzIHdpbGwgYmUgdmlzaWJsZSBpbiB0aGUgY2hhcnQuIEJ5IGRlZmF1bHQsIGF4aXMgbGFiZWxzIGFyZSBlbmFibGVkLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgdmlzaWJsZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgYXhpcyBpcyBzY2FsZWQgYnkgdGhpcyBmYWN0b3IuIFdoZW4gYHpvb21GYWN0b3JgIGlzIDAuNSwgdGhlIGNoYXJ0IGlzIHNjYWxlZCBieSAyMDAlIGFsb25nIHRoaXMgYXhpcy4gXG4gICAgICogPiBOb3RlIHRoZSB2YWx1ZSByYW5nZXMgZnJvbSAwIHRvIDEuXG4gICAgICogQGRlZmF1bHQgMVxuICAgICAqL1xuICAgIHB1YmxpYyB6b29tRmFjdG9yOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNldHMgdGhlIHBvc2l0aW9uIG9mIHRoZSB6b29tZWQgYXhpcyBvbiB0aGUgY2hhcnQsIHdpdGggdGhlIGB6b29tUG9zaXRpb25gIHByb3BlcnR5IHNwZWNpZnlpbmcgdGhlIHBvc2l0aW9uIHdpdGhpbiB0aGUgem9vbWVkIHJhbmdlLCBmcm9tIDAgKHN0YXJ0KSB0byAxIChlbmQpLlxuICAgICAqIEBkZWZhdWx0IDBcbiAgICAgKi9cbiAgICBwdWJsaWMgem9vbVBvc2l0aW9uOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXdDb250YWluZXJSZWY6Vmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBzZXRWYWx1ZSgnY3VycmVudEluc3RhbmNlJywgdGhpcywgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50cyhvdXRwdXRzKTtcbiAgICAgICAgdGhpcy5kaXJlY3RpdmVQcm9wTGlzdCA9IGlucHV0O1xuICAgIH1cbn1cblxuLyoqXG4gKiBBeGlzIEFycmF5IERpcmVjdGl2ZVxuICogQHByaXZhdGVcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdlanMtY2hhcnQ+ZS1heGVzJyxcbiAgICBxdWVyaWVzOiB7XG4gICAgICAgIGNoaWxkcmVuOiBuZXcgQ29udGVudENoaWxkcmVuKEF4aXNEaXJlY3RpdmUpXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQXhlc0RpcmVjdGl2ZSBleHRlbmRzIEFycmF5QmFzZTxBeGVzRGlyZWN0aXZlPiB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCdheGVzJyk7XG4gICAgfVxufSJdfQ==
|