@flogeez/angular-tiptap-editor 3.4.1 → 3.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/esm2022/lib/components/table-of-contents/ate-table-of-contents.component.mjs +14 -3
- package/esm2022/lib/components/table-of-contents/ate-toc-node.component.mjs +9 -4
- package/esm2022/lib/config/ate-toc.config.mjs +13 -0
- package/esm2022/lib/models/ate-editor-config.model.mjs +1 -1
- package/esm2022/lib/models/ate-toc.model.mjs +2 -0
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/flogeez-angular-tiptap-editor.mjs +35 -6
- package/fesm2022/flogeez-angular-tiptap-editor.mjs.map +1 -1
- package/lib/components/editor/angular-tiptap-editor.component.d.ts +1 -0
- package/lib/components/table-of-contents/ate-table-of-contents.component.d.ts +3 -9
- package/lib/config/ate-toc.config.d.ts +5 -0
- package/lib/models/ate-editor-config.model.d.ts +3 -0
- package/lib/models/ate-toc.model.d.ts +26 -0
- package/package.json +1 -1
- package/public-api.d.ts +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,17 @@ All notable changes to `@flogeez/angular-tiptap-editor` will be documented in th
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html), with the exception that the major version is specifically aligned with the major version of [Tiptap](https://tiptap.dev).
|
|
7
7
|
|
|
8
|
+
## [3.4.2] - 2026-07-31
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **`maxDepth` Heading Filtering (`AteTableOfContentsComponent`)**: Added `maxDepth` input (1 to 6, default: `6`) to filter extracted headings up to a specific level (e.g. H1 to H4). Supported across `AteTableOfContentsComponent`, `AteTocNodeComponent`, and `AteEditorConfig`.
|
|
13
|
+
|
|
14
|
+
### Refactored
|
|
15
|
+
|
|
16
|
+
- **TOC Models & Configuration Architecture**: Extracted `AteTocConfig`, `AteTocItem`, and `AteTocVariant` into `lib/models/ate-toc.model.ts` and `ATE_DEFAULT_TOC_CONFIG` into `lib/config/ate-toc.config.ts`.
|
|
17
|
+
- **Cleaned Public Exports**: Cleaned up duplicate re-exports in `public-api.ts` to export all TOC types and configurations directly from the unified models and config modules.
|
|
18
|
+
|
|
8
19
|
## [3.4.1] - 2026-07-31
|
|
9
20
|
|
|
10
21
|
### Added
|
|
@@ -41,6 +41,16 @@ export class AteTableOfContentsComponent {
|
|
|
41
41
|
this.variant = input("minimal");
|
|
42
42
|
// Notion-style hover expansion (collapses text into dashes until hovered)
|
|
43
43
|
this.hoverExpand = input(true);
|
|
44
|
+
// Maximum heading level depth to include (1-6, default: 6)
|
|
45
|
+
this.maxDepth = input(6, {
|
|
46
|
+
transform: (v) => {
|
|
47
|
+
const parsed = typeof v === "string" ? parseInt(v, 10) : v;
|
|
48
|
+
if (isNaN(parsed)) {
|
|
49
|
+
return 6;
|
|
50
|
+
}
|
|
51
|
+
return Math.min(Math.max(1, parsed), 6);
|
|
52
|
+
},
|
|
53
|
+
});
|
|
44
54
|
this.registry = inject(AteEditorRegistry);
|
|
45
55
|
this.i18n = inject(AteI18nService);
|
|
46
56
|
// Computed header title with fallback to i18n
|
|
@@ -154,7 +164,8 @@ export class AteTableOfContentsComponent {
|
|
|
154
164
|
if (node.type.name === "heading") {
|
|
155
165
|
const text = node.textContent.trim();
|
|
156
166
|
const level = node.attrs["level"] || 1;
|
|
157
|
-
|
|
167
|
+
const maxDepthLevel = this.maxDepth();
|
|
168
|
+
if (text && level <= maxDepthLevel) {
|
|
158
169
|
nextItems.push({
|
|
159
170
|
text,
|
|
160
171
|
level,
|
|
@@ -228,7 +239,7 @@ export class AteTableOfContentsComponent {
|
|
|
228
239
|
});
|
|
229
240
|
}
|
|
230
241
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteTableOfContentsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
231
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AteTableOfContentsComponent, isStandalone: true, selector: "ate-table-of-contents", inputs: { editor: { classPropertyName: "editor", publicName: "editor", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, showTitle: { classPropertyName: "showTitle", publicName: "showTitle", isSignal: true, isRequired: false, transformFunction: null }, floating: { classPropertyName: "floating", publicName: "floating", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, hoverExpand: { classPropertyName: "hoverExpand", publicName: "hoverExpand", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:scroll": "onScroll()", "window:resize": "onScroll()" } }, ngImport: i0, template: `
|
|
242
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AteTableOfContentsComponent, isStandalone: true, selector: "ate-table-of-contents", inputs: { editor: { classPropertyName: "editor", publicName: "editor", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, showTitle: { classPropertyName: "showTitle", publicName: "showTitle", isSignal: true, isRequired: false, transformFunction: null }, floating: { classPropertyName: "floating", publicName: "floating", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, hoverExpand: { classPropertyName: "hoverExpand", publicName: "hoverExpand", isSignal: true, isRequired: false, transformFunction: null }, maxDepth: { classPropertyName: "maxDepth", publicName: "maxDepth", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:scroll": "onScroll()", "window:resize": "onScroll()" } }, ngImport: i0, template: `
|
|
232
243
|
<div
|
|
233
244
|
class="ate-toc-wrapper"
|
|
234
245
|
[class.ate-toc-floating]="floating()"
|
|
@@ -360,4 +371,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
360
371
|
type: HostListener,
|
|
361
372
|
args: ["window:resize", []]
|
|
362
373
|
}] } });
|
|
363
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXRhYmxlLW9mLWNvbnRlbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUtb2YtY29udGVudHMvYXRlLXRhYmxlLW9mLWNvbnRlbnRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULHVCQUF1QixFQUV2QixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFZakU7Ozs7R0FJRztBQTBXSCxNQUFNLE9BQU8sMkJBQTJCO0lBeUJ0QyxrRUFBa0U7SUFDbEUsU0FBUyxDQUFDLEtBQWE7UUFDckIsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQztnQkFDSixPQUFPLEVBQUUsQ0FBQztZQUNaLEtBQUssQ0FBQztnQkFDSixPQUFPLEVBQUUsQ0FBQztZQUNaLEtBQUssQ0FBQztnQkFDSixPQUFPLENBQUMsQ0FBQztZQUNYLEtBQUssQ0FBQztnQkFDSixPQUFPLENBQUMsQ0FBQztZQUNYLEtBQUssQ0FBQztnQkFDSixPQUFPLENBQUMsQ0FBQztZQUNYO2dCQUNFLE9BQU8sQ0FBQyxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUM7SUFrQ0Q7UUExRUEscUVBQXFFO1FBQ3JFLFdBQU0sR0FBRyxLQUFLLENBQW9ELElBQUksQ0FBQyxDQUFDO1FBRXhFLGlFQUFpRTtRQUNqRSxVQUFLLEdBQUcs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REEyWUQsUUFBUTtzQkFGUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFOztzQkFDaEMsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICB1bnRyYWNrZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBPbkRlc3Ryb3ksXG4gIEhvc3RMaXN0ZW5lcixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbmltcG9ydCB7IEF0ZUVkaXRvclJlZiB9IGZyb20gXCIuLi8uLi9tb2RlbHMvYXRlLWVkaXRvci1yZWZcIjtcbmltcG9ydCB7IEF0ZUVkaXRvclJlZ2lzdHJ5IH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2F0ZS1lZGl0b3ItcmVnaXN0cnkuc2VydmljZVwiO1xuaW1wb3J0IHsgQXRlSTE4blNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYXRlLWkxOG4uc2VydmljZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF0ZVRvY0l0ZW0ge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGxldmVsOiBudW1iZXI7XG4gIHBvczogbnVtYmVyO1xuICBpZDogc3RyaW5nO1xuICBhY3RpdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEF0ZVRvY1ZhcmlhbnQgPSBcImNhcmRcIiB8IFwidHJhbnNwYXJlbnRcIiB8IFwibWluaW1hbFwiO1xuXG4vKipcbiAqIFRhYmxlIG9mIENvbnRlbnRzIENvbXBvbmVudCAoTm90aW9uLXN0eWxlKVxuICogRHluYW1pY2FsbHkgZXh0cmFjdHMgaGVhZGluZ3MgZnJvbSB0aGUgYWN0aXZlIGVkaXRvciBhbmQgZGlzcGxheXMgdGhlbS5cbiAqIENvbmZpZ3VyYWJsZSB2aWEgaW5wdXRzIChmbG9hdGluZywgcG9zaXRpb24sIHZhcmlhbnRzLCBob3ZlciBleHBhbnNpb24pIGFuZCBDU1MgdmFyaWFibGVzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXRlLXRhYmxlLW9mLWNvbnRlbnRzXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImF0ZS10b2Mtd3JhcHBlclwiXG4gICAgICBbY2xhc3MuYXRlLXRvYy1mbG9hdGluZ109XCJmbG9hdGluZygpXCJcbiAgICAgIFtjbGFzcy5hdGUtdG9jLXBvc2l0aW9uLWxlZnRdPVwicG9zaXRpb24oKSA9PT0gJ2xlZnQnXCJcbiAgICAgIFtjbGFzcy5hdGUtdG9jLXBvc2l0aW9uLXJpZ2h0XT1cInBvc2l0aW9uKCkgPT09ICdyaWdodCdcIlxuICAgICAgKG1vdXNlZW50ZXIpPVwic2V0TW91c2VIb3Zlcih0cnVlKVwiXG4gICAgICAobW91c2VsZWF2ZSk9XCJzZXRNb3VzZUhvdmVyKGZhbHNlKVwiXG4gICAgICAoZm9jdXNpbik9XCJzZXRGb2N1c2VkKHRydWUpXCJcbiAgICAgIChmb2N1c291dCk9XCJzZXRGb2N1c2VkKGZhbHNlKVwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImF0ZS10b2NcIlxuICAgICAgICBbY2xhc3MuYXRlLXRvYy1mbG9hdGluZ109XCJmbG9hdGluZygpXCJcbiAgICAgICAgW2NsYXNzLmF0ZS10b2MtcG9zaXRpb24tbGVmdF09XCJwb3NpdGlvbigpID09PSAnbGVmdCdcIlxuICAgICAgICBbY2xhc3MuYXRlLXRvYy1wb3NpdGlvbi1yaWdodF09XCJwb3NpdGlvbigpID09PSAncmlnaHQnXCJcbiAgICAgICAgW2NsYXNzLmF0ZS10b2MtdmFyaWFudC1jYXJkXT1cInZhcmlhbnQoKSA9PT0gJ2NhcmQnXCJcbiAgICAgICAgW2NsYXNzLmF0ZS10b2MtdmFyaWFudC10cmFuc3BhcmVudF09XCJ2YXJpYW50KCkgPT09ICd0cmFuc3BhcmVudCdcIlxuICAgICAgICBbY2xhc3MuYXRlLXRvYy12YXJpYW50LW1pbmltYWxdPVwidmFyaWFudCgpID09PSAnbWluaW1hbCdcIlxuICAgICAgICBbY2xhc3MuYXRlLXRvYy1ob3Zlci1leHBhbmRdPVwiZmxvYXRpbmcoKSAmJiBob3ZlckV4cGFuZCgpXCJcbiAgICAgICAgW2NsYXNzLmF0ZS10b2MtaG92ZXJlZF09XCJmbG9hdGluZygpICYmIGhvdmVyRXhwYW5kKCkgJiYgaXNFeHBhbmRlZCgpXCJcbiAgICAgICAgcm9sZT1cIm5hdmlnYXRpb25cIlxuICAgICAgICBhcmlhLWxhYmVsPVwiVGFibGUgb2YgQ29udGVudHNcIj5cbiAgICAgICAgQGlmIChpdGVtcygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBAaWYgKHNob3dUaXRsZSgpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXRlLXRvYy1oZWFkZXJcIj57eyBoZWFkZXJUaXRsZSgpIH19PC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdGUtdG9jLWxpc3RcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXMoKTsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhdGUtdG9jLWl0ZW1cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hdGUtdG9jLWFjdGl2ZV09XCJpdGVtLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cIml0ZW0uYWN0aXZlID8gJ3RydWUnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1sZXZlbF09XCJpdGVtLmxldmVsXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2Nyb2xsVG9IZWFkaW5nKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtLnRleHRcIj5cbiAgICAgICAgICAgICAgICA8IS0tIFBlcmZlY3QgbmF0aXZlIHZlY3RvciBTVkcgZGFzaCB3aXRoIGxldmVsLWFkYXB0ZWQgdmlld0JveCAmIHdpZHRoIC0tPlxuICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cImRhc2hXaWR0aChpdGVtLmxldmVsKVwiXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLnZpZXdCb3hdPVwiJzAgMCAnICsgZGFzaFdpZHRoKGl0ZW0ubGV2ZWwpICsgJyAyJ1wiXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXRlLXRvYy1kYXNoXCI+XG4gICAgICAgICAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgICAgICAgICBbYXR0ci53aWR0aF09XCJkYXNoV2lkdGgoaXRlbS5sZXZlbClcIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgcng9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgcnk9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cblxuICAgICAgICAgICAgICAgIDwhLS0gRnVsbCBoZWFkaW5nIHRleHQgLS0+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdGUtdG9jLXRleHRcIj57eyBpdGVtLnRleHQgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLyogT3V0ZXIgSGl0Ym94IENvbnRhaW5lciBQb3NpdGlvbmluZyAqL1xuICAgICAgLmF0ZS10b2Mtd3JhcHBlci5hdGUtdG9jLWZsb2F0aW5nIHtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICB0b3A6IHZhcigtLWF0ZS10b2MtdG9wLCA1MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIHotaW5kZXg6IHZhcigtLWF0ZS10b2Mtei1pbmRleCwgOTUpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy13cmFwcGVyLmF0ZS10b2MtZmxvYXRpbmcuYXRlLXRvYy1wb3NpdGlvbi1yaWdodCB7XG4gICAgICAgIHJpZ2h0OiB2YXIoLS1hdGUtdG9jLXJpZ2h0LCAycmVtKTtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1hdGUtdG9jLWhpdGJveC1wYWRkaW5nLCAxNnB4KTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLWF0ZS10b2MtaGl0Ym94LXBhZGRpbmctdmVydGljYWwsIDhweCk7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1hdGUtdG9jLWhpdGJveC1wYWRkaW5nLXZlcnRpY2FsLCA4cHgpO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy13cmFwcGVyLmF0ZS10b2MtZmxvYXRpbmcuYXRlLXRvYy1wb3NpdGlvbi1sZWZ0IHtcbiAgICAgICAgbGVmdDogdmFyKC0tYXRlLXRvYy1sZWZ0LCAycmVtKTtcbiAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLWF0ZS10b2MtaGl0Ym94LXBhZGRpbmcsIDE2cHgpO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1hdGUtdG9jLWhpdGJveC1wYWRkaW5nLXZlcnRpY2FsLCA4cHgpO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tYXRlLXRvYy1oaXRib3gtcGFkZGluZy12ZXJ0aWNhbCwgOHB4KTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2Mge1xuICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgICB9XG5cbiAgICAgIC8qIEZsb2F0aW5nIE1vZGUgQ29udGFpbmVyIFBvc2l0aW9uaW5nICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWZsb2F0aW5nIHtcbiAgICAgICAgbWF4LWhlaWdodDogdmFyKC0tYXRlLXRvYy1tYXgtaGVpZ2h0LCA0MDBweCk7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG5cbiAgICAgIC8qIEZsb2F0aW5nIG1vZGUgd2lkdGggJiBwYWRkaW5nICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWZsb2F0aW5nOm5vdCguYXRlLXRvYy1ob3Zlci1leHBhbmQpLFxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1mbG9hdGluZy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpob3ZlcixcbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtZmxvYXRpbmcuYXRlLXRvYy1ob3Zlci1leHBhbmQuYXRlLXRvYy1ob3ZlcmVkIHtcbiAgICAgICAgd2lkdGg6IHZhcigtLWF0ZS10b2Mtd2lkdGgsIDI0MHB4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYXRlLXRvYy1ib3JkZXItcmFkaXVzLCB2YXIoLS1hdGUtYm9yZGVyLXJhZGl1cywgMTZweCkpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1hdGUtdG9jLXBhZGRpbmcpO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWZsb2F0aW5nLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1ob3ZlcmVkKTpub3QoOmhvdmVyKSB7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1hdGUtdG9jLWNvbGxhcHNlZC13aWR0aCwgMzJweCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS10b2MtY29sbGFwc2VkLXJhZGl1cywgMTZweCk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLWF0ZS10b2MtcGFkZGluZyk7XG4gICAgICB9XG5cbiAgICAgIC8qIFZhcmlhbnQ6IGNhcmQgKi9cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtdmFyaWFudC1jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXRvYy1iZywgdmFyKC0tYXRlLXN1cmZhY2UsICNmZmZmZmYpKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYXRlLXRvYy1ib3JkZXIsIHZhcigtLWF0ZS1ib3JkZXIsICNlMmU4ZjApKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYXRlLXRvYy1ib3JkZXItcmFkaXVzLCB2YXIoLS1hdGUtYm9yZGVyLXJhZGl1cywgMTJweCkpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1hdGUtdG9jLXNoYWRvdywgMCA0cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDYpKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tYXRlLXRvYy1wYWRkaW5nKTtcbiAgICAgIH1cblxuICAgICAgLyogVmFyaWFudDogbWluaW1hbCAqL1xuICAgICAgLmF0ZS10b2MuYXRlLXRvYy12YXJpYW50LW1pbmltYWwge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS10b2MtYm9yZGVyLXJhZGl1cywgdmFyKC0tYXRlLWJvcmRlci1yYWRpdXMsIDEycHgpKTtcbiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4O1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLXZhcmlhbnQtbWluaW1hbDpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS10b2MtaG92ZXItYmcsIHZhcigtLWF0ZS1zdXJmYWNlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpKSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYXRlLXRvYy1ob3Zlci1ib3JkZXIsIHZhcigtLWF0ZS1ib3JkZXIsICNlMmU4ZjApKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tYXRlLXRvYy1ob3Zlci1zaGFkb3csIDAgNHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA2KSk7XG4gICAgICB9XG5cbiAgICAgIC8qIFZhcmlhbnQ6IHRyYW5zcGFyZW50ICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLXZhcmlhbnQtdHJhbnNwYXJlbnQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuXG4gICAgICAvKiBIZWFkZXIgc3R5bGluZyAqL1xuICAgICAgLmF0ZS10b2MtaGVhZGVyIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXRleHQtbXV0ZWQsICM5Y2EzYWYpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiA2cHg7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTJweDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAvKiBMaXN0IGNvbnRhaW5lciAqL1xuICAgICAgLmF0ZS10b2MtbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tYXRlLXRvYy10ZXh0LWdhcCwgdmFyKC0tYXRlLXRvYy1nYXAsIDJweCkpO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRyYW5zaXRpb246IGdhcCAwLjJzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC8qIEJhc2UgSXRlbSAoRXhwYW5kZWQgLyBUZXh0IG1vZGUgZGVmYXVsdCkgKi9cbiAgICAgIC5hdGUtdG9jLWl0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IHZhcigtLWF0ZS10b2MtaXRlbS1ob3Zlci1oZWlnaHQsIDIycHgpO1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXRvb2xiYXItYnV0dG9uLWNvbG9yLCB2YXIoLS1hdGUtdGV4dC1zZWNvbmRhcnksICM2NDc0OGIpKTtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYXRlLXN1Yi1ib3JkZXItcmFkaXVzLCA4cHgpO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy1pdGVtOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tYXRlLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMXB4O1xuICAgICAgfVxuXG4gICAgICAvKiBMZXZlbCBJbmRlbnRhdGlvbnMgaW4gVGV4dCBtb2RlICovXG4gICAgICAuYXRlLXRvYy1pdGVtW2RhdGEtbGV2ZWw9XCIxXCJdIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gICAgICB9XG4gICAgICAuYXRlLXRvYy1pdGVtW2RhdGEtbGV2ZWw9XCIyXCJdIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNnB4O1xuICAgICAgfVxuICAgICAgLmF0ZS10b2MtaXRlbVtkYXRhLWxldmVsPVwiM1wiXSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMjRweDtcbiAgICAgIH1cbiAgICAgIC5hdGUtdG9jLWl0ZW1bZGF0YS1sZXZlbD1cIjRcIl0ge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDMycHg7XG4gICAgICB9XG4gICAgICAuYXRlLXRvYy1pdGVtW2RhdGEtbGV2ZWw9XCI1XCJdIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA0MHB4O1xuICAgICAgfVxuICAgICAgLmF0ZS10b2MtaXRlbVtkYXRhLWxldmVsPVwiNlwiXSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogNDhweDtcbiAgICAgIH1cblxuICAgICAgLyogSXRlbSBob3ZlciBvdmVybGF5ICYgYWN0aXZlIHN0YXRlIChFeHBhbmRlZCAvIFRleHQgbW9kZSkgKi9cbiAgICAgIC5hdGUtdG9jLWl0ZW06OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS1zdWItYm9yZGVyLXJhZGl1cywgOHB4KTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLWl0ZW06aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXRvb2xiYXItYnV0dG9uLWFjdGl2ZS1jb2xvciwgdmFyKC0tYXRlLXByaW1hcnksICMyNTYzZWIpKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXRvb2xiYXItYnV0dG9uLWhvdmVyLWJhY2tncm91bmQsIHRyYW5zcGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MtaXRlbTpob3Zlcjo6YmVmb3JlIHtcbiAgICAgICAgb3BhY2l0eTogMC4xO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy1pdGVtLmF0ZS10b2MtYWN0aXZlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1hY3RpdmUtY29sb3IsIHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcihcbiAgICAgICAgICAtLWF0ZS10b29sYmFyLWJ1dHRvbi1hY3RpdmUtYmFja2dyb3VuZCxcbiAgICAgICAgICB2YXIoLS1hdGUtcHJpbWFyeS1saWdodCwgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKSwgdHJhbnNwYXJlbnQgOTAlKSlcbiAgICAgICAgKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIH1cblxuICAgICAgLyogSGVhZGluZyBUZXh0IHN0eWxpbmcgKi9cbiAgICAgIC5hdGUtdG9jLXRleHQge1xuICAgICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgbWF4LXdpZHRoOiAyNTBweDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgICAgICBtYXJnaW4tbGVmdDogNHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgb3BhY2l0eSAwLjI1cyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCksXG4gICAgICAgICAgbWF4LXdpZHRoIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpLFxuICAgICAgICAgIHRyYW5zZm9ybSAwLjI1cyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCksXG4gICAgICAgICAgbWFyZ2luIDAuMjVzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC8qIFNWRyBSZWN0IERhc2ggc3R5bGluZyAoSGlkZGVuIGluIFRleHQgbW9kZSkgKi9cbiAgICAgIC5hdGUtdG9jLWRhc2gge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBoZWlnaHQ6IDNweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10b2MtZGFzaC1jb2xvciwgdmFyKC0tYXRlLWJvcmRlciwgI2NiZDVlMSkpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KTtcbiAgICAgIH1cblxuICAgICAgLyogLS0tIENPTExBUFNFRCBOT1RJT04gTU9ERSAoRGFzaGVzIG9ubHksIHdoZW4gaG92ZXItZXhwYW5kIGlzIGFjdGl2ZSAmIG5vdCBob3ZlcmVkKSAtLS0gKi9cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtaG92ZXJlZCkgLmF0ZS10b2MtZGFzaCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLWl0ZW0ge1xuICAgICAgICBoZWlnaHQ6IHZhcigtLWF0ZS10b2MtaXRlbS1oZWlnaHQsIDE4cHgpO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtaG92ZXJlZCkgLmF0ZS10b2MtaXRlbTo6YmVmb3JlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLWl0ZW06aG92ZXIgLmF0ZS10b2MtZGFzaCxcbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1ob3ZlcmVkKVxuICAgICAgICAuYXRlLXRvYy1pdGVtLmF0ZS10b2MtYWN0aXZlXG4gICAgICAgIC5hdGUtdG9jLWRhc2gge1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuXG4gICAgICAvKiBEaXJlY3Rpb24gJiB0ZXh0IGNvbGxhcHNlIGZvciBDb2xsYXBzZWQgUklHSFQgcG9zaXRpb24gKi9cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLWl0ZW0ge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQuYXRlLXRvYy1wb3NpdGlvbi1yaWdodDpub3QoLmF0ZS10b2MtaG92ZXJlZCkgLmF0ZS10b2MtdGV4dCB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIG1heC13aWR0aDogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDRweCk7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgIH1cblxuICAgICAgLyogRGlyZWN0aW9uICYgdGV4dCBjb2xsYXBzZSBmb3IgQ29sbGFwc2VkIExFRlQgcG9zaXRpb24gKi9cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1wb3NpdGlvbi1yaWdodCk6bm90KC5hdGUtdG9jLWhvdmVyZWQpXG4gICAgICAgIC5hdGUtdG9jLWl0ZW0sXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZC5hdGUtdG9jLXBvc2l0aW9uLWxlZnQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLWl0ZW0ge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1wb3NpdGlvbi1yaWdodCk6bm90KC5hdGUtdG9jLWhvdmVyZWQpXG4gICAgICAgIC5hdGUtdG9jLXRleHQsXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZC5hdGUtdG9jLXBvc2l0aW9uLWxlZnQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLXRleHQge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBtYXgtd2lkdGg6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNHB4KTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXRlVGFibGVPZkNvbnRlbnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLy8gSW5wdXQgYWNjZXB0cyByYXcgRWRpdG9yLCBBdGVFZGl0b3JSZWYsIG9yIElEIG9mIHJlZ2lzdGVyZWQgZWRpdG9yXG4gIGVkaXRvciA9IGlucHV0PEVkaXRvciB8IEF0ZUVkaXRvclJlZiB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KG51bGwpO1xuXG4gIC8vIE9wdGlvbmFsIGN1c3RvbSB0aXRsZSAoaWYgbm90IHByb3ZpZGVkLCB1c2VzIGkxOG4gdHJhbnNsYXRpb24pXG4gIHRpdGxlID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gV2hldGhlciB0byBzaG93IHRoZSBoZWFkZXIgdGl0bGVcbiAgc2hvd1RpdGxlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgLy8gTGF5b3V0IG1vZGU6IGZsb2F0aW5nIG9uIGZpeGVkIHBvc2l0aW9uIG9yIGlubGluZSBpbnNpZGUgcGFyZW50IGNvbnRhaW5lclxuICBmbG9hdGluZyA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gIC8vIEZsb2F0aW5nIHBvc2l0aW9uOiAncmlnaHQnIHwgJ2xlZnQnXG4gIHBvc2l0aW9uID0gaW5wdXQ8XCJsZWZ0XCIgfCBcInJpZ2h0XCI+KFwicmlnaHRcIik7XG5cbiAgLy8gVmlzdWFsIHZhcmlhbnQ6ICdtaW5pbWFsJyB8ICdjYXJkJyB8ICd0cmFuc3BhcmVudCdcbiAgdmFyaWFudCA9IGlucHV0PEF0ZVRvY1ZhcmlhbnQ+KFwibWluaW1hbFwiKTtcblxuICAvLyBOb3Rpb24tc3R5bGUgaG92ZXIgZXhwYW5zaW9uIChjb2xsYXBzZXMgdGV4dCBpbnRvIGRhc2hlcyB1bnRpbCBob3ZlcmVkKVxuICBob3ZlckV4cGFuZCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnaXN0cnkgPSBpbmplY3QoQXRlRWRpdG9yUmVnaXN0cnkpO1xuICBwcml2YXRlIHJlYWRvbmx5IGkxOG4gPSBpbmplY3QoQXRlSTE4blNlcnZpY2UpO1xuXG4gIC8vIEhlbHBlciBtZXRob2QgZm9yIGV4YWN0IG5hdGl2ZSBTVkcgZGFzaCB3aWR0aCBwZXIgaGVhZGluZyBsZXZlbFxuICBkYXNoV2lkdGgobGV2ZWw6IG51bWJlcik6IG51bWJlciB7XG4gICAgc3dpdGNoIChsZXZlbCkge1xuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gMTY7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiAxMjtcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgcmV0dXJuIDg7XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHJldHVybiA2O1xuICAgICAgY2FzZSA1OlxuICAgICAgICByZXR1cm4gNDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAzO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbXB1dGVkIGhlYWRlciB0aXRsZSB3aXRoIGZhbGxiYWNrIHRvIGkxOG5cbiAgcmVhZG9ubHkgaGVhZGVyVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VzdG9tID0gdGhpcy50aXRsZSgpO1xuICAgIGlmIChjdXN0b20gIT09IG51bGwgJiYgY3VzdG9tICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjdXN0b207XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmkxOG4uZWRpdG9yKCkudGFibGVPZkNvbnRlbnRzO1xuICB9KTtcblxuICAvLyBSZXNvbHZlZCBlZGl0b3IgaW5zdGFuY2VcbiAgcmVhZG9ubHkgcmVzb2x2ZWRFZGl0b3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdmFsID0gdGhpcy5lZGl0b3IoKTtcbiAgICBpZiAoIXZhbCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVnaXN0cnkuYWN0aXZlRWRpdG9yKCk/LmVkaXRvciB8fCBudWxsO1xuICAgIH1cbiAgICBpZiAodmFsIGluc3RhbmNlb2YgQXRlRWRpdG9yUmVmKSB7XG4gICAgICByZXR1cm4gdmFsLmVkaXRvcjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWwgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5LmdldCh2YWwpPy5lZGl0b3IgfHwgbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbDtcbiAgfSk7XG5cbiAgLy8gVGFibGUgb2YgQ29udGVudHMgaXRlbXNcbiAgcmVhZG9ubHkgaXRlbXMgPSBzaWduYWw8QXRlVG9jSXRlbVtdPihbXSk7XG5cbiAgLy8gRGlzdGluY3QgbW91c2UgaG92ZXIgYW5kIGtleWJvYXJkIGZvY3VzIHN0YXRlIHRyYWNraW5nXG4gIGlzTW91c2VIb3ZlcmVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgaXNGb2N1c2VkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNFeHBhbmRlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaXNNb3VzZUhvdmVyZWQoKSB8fCB0aGlzLmlzRm9jdXNlZCgpKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBSZWFjdCBzdHJpY3RseSB0byBlZGl0b3IgaW5zdGFuY2UgY2hhbmdlcyB3aXRob3V0IHRyYWNraW5nIGludGVybmFsIHNpZ25hbCB1cGRhdGVzXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGVkaXRvciA9IHRoaXMucmVzb2x2ZWRFZGl0b3IoKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmIChlZGl0b3IpIHtcbiAgICAgICAgICB0aGlzLmJpbmRFZGl0b3JFdmVudHMoZWRpdG9yKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUhlYWRpbmdzKGVkaXRvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pdGVtcy5zZXQoW10pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMucmVzb2x2ZWRFZGl0b3IoKTtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLnVuYmluZEVkaXRvckV2ZW50cyhlZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6c2Nyb2xsXCIsIFtdKVxuICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiLCBbXSlcbiAgb25TY3JvbGwoKSB7XG4gICAgdGhpcy5jaGVja0FjdGl2ZUhlYWRpbmcoKTtcbiAgfVxuXG4gIC8vIEhhbmRsZSBtb3VzZSBob3ZlciBzdGF0ZSBpbmRlcGVuZGVudGx5XG4gIHNldE1vdXNlSG92ZXIoaG92ZXJlZDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNNb3VzZUhvdmVyZWQuc2V0KGhvdmVyZWQpO1xuICB9XG5cbiAgLy8gSGFuZGxlIGtleWJvYXJkIGZvY3VzIHN0YXRlIGluZGVwZW5kZW50bHlcbiAgc2V0Rm9jdXNlZChmb2N1c2VkOiBib29sZWFuKSB7XG4gICAgdGhpcy5pc0ZvY3VzZWQuc2V0KGZvY3VzZWQpO1xuICB9XG5cbiAgLy8gTmF2aWdhdGUgdG8gaGVhZGluZyBvbiBjbGlja1xuICBzY3JvbGxUb0hlYWRpbmcoaXRlbTogQXRlVG9jSXRlbSwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5yZXNvbHZlZEVkaXRvcigpO1xuICAgIGlmICghZWRpdG9yIHx8ICFlZGl0b3Iudmlldykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyAxLiBQb3NpdGlvbiBjdXJzb3IgaW5zaWRlIHRoZSBoZWFkaW5nIHRleHQgKGl0ZW0ucG9zICsgMSBwb2ludHMgdG8gaW5saW5lIHRleHQpXG4gICAgICBjb25zdCB0YXJnZXRQb3MgPSBNYXRoLm1pbihpdGVtLnBvcyArIDEsIGVkaXRvci5zdGF0ZS5kb2MuY29udGVudC5zaXplKTtcbiAgICAgIGVkaXRvci5jb21tYW5kcy5zZXRUZXh0U2VsZWN0aW9uKHRhcmdldFBvcyk7XG4gICAgICBlZGl0b3IuY29tbWFuZHMuZm9jdXMoKTtcbiAgICB9IGNhdGNoIChfZSkge1xuICAgICAgLy8gU2FmZS1ndWFyZCBhZ2FpbnN0IHBvc2l0aW9uIHNlbGVjdGlvbiBlcnJvcnNcbiAgICB9XG5cbiAgICAvLyAyLiBTbW9vdGhseSBzY3JvbGwgRE9NIG5vZGUgaW50byB2aWV3XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkb21Ob2RlID0gZWRpdG9yLnZpZXcubm9kZURPTShpdGVtLnBvcykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmIChkb21Ob2RlKSB7XG4gICAgICAgICAgZG9tTm9kZS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiBcInNtb290aFwiLCBibG9jazogXCJzdGFydFwiIH0pO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChfZSkge1xuICAgICAgICAvLyBTYWZlLWd1YXJkXG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9XG5cbiAgcHJpdmF0ZSBiaW5kRWRpdG9yRXZlbnRzKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgdGhpcy51bmJpbmRFZGl0b3JFdmVudHMoZWRpdG9yKTtcbiAgICBlZGl0b3Iub24oXCJ1cGRhdGVcIiwgdGhpcy5vbkVkaXRvclVwZGF0ZSk7XG4gICAgZWRpdG9yLm9uKFwic2VsZWN0aW9uVXBkYXRlXCIsIHRoaXMub25FZGl0b3JVcGRhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bmJpbmRFZGl0b3JFdmVudHMoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICBlZGl0b3Iub2ZmKFwidXBkYXRlXCIsIHRoaXMub25FZGl0b3JVcGRhdGUpO1xuICAgIGVkaXRvci5vZmYoXCJzZWxlY3Rpb25VcGRhdGVcIiwgdGhpcy5vbkVkaXRvclVwZGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IG9uRWRpdG9yVXBkYXRlID0gKCkgPT4ge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMucmVzb2x2ZWRFZGl0b3IoKTtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLnVwZGF0ZUhlYWRpbmdzKGVkaXRvcik7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgdXBkYXRlSGVhZGluZ3MoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICBjb25zdCBuZXh0SXRlbXM6IEF0ZVRvY0l0ZW1bXSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIGVkaXRvci5zdGF0ZS5kb2MuZGVzY2VuZGFudHMoKG5vZGUsIHBvcykgPT4ge1xuICAgICAgICBpZiAobm9kZS50eXBlLm5hbWUgPT09IFwiaGVhZGluZ1wiKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IG5vZGUudGV4dENvbnRlbnQudHJpbSgpO1xuICAgICAgICAgIGNvbnN0IGxldmVsID0gbm9kZS5hdHRyc1tcImxldmVsXCJdIHx8IDE7XG5cbiAgICAgICAgICBpZiAodGV4dCkge1xuICAgICAgICAgICAgbmV4dEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgICAgcG9zLFxuICAgICAgICAgICAgICBpZDogYGhlYWRpbmctJHtwb3N9YCxcbiAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgIC8vIFNhZmUgZ3VhcmQgYWdhaW5zdCBkb2N1bWVudCBhY2Nlc3MgaXNzdWVzXG4gICAgfVxuXG4gICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgIHRoaXMuaXRlbXMuc2V0KG5leHRJdGVtcyk7XG4gICAgICB0aGlzLmNoZWNrQWN0aXZlSGVhZGluZygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0FjdGl2ZUhlYWRpbmcoKSB7XG4gICAgLy8gQWN0aXZlIGhlYWRpbmcgc2Nyb2xsIHRyYWNraW5nIG9ubHkgYXBwbGllcyB0byBmbG9hdGluZyBUT0MgbW9kZVxuICAgIGlmICghdGhpcy5mbG9hdGluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5yZXNvbHZlZEVkaXRvcigpO1xuICAgIGlmICghZWRpdG9yIHx8ICFlZGl0b3Iudmlldykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50SXRlbXMgPSB0aGlzLml0ZW1zKCk7XG4gICAgICBpZiAoY3VycmVudEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhlYWRpbmdzV2l0aERvbSA9IGN1cnJlbnRJdGVtc1xuICAgICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkb20gPSBlZGl0b3Iudmlldy5ub2RlRE9NKGl0ZW0ucG9zKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIHJldHVybiB7IGl0ZW0sIGRvbSB9O1xuICAgICAgICAgIH0gY2F0Y2ggKF9lKSB7XG4gICAgICAgICAgICByZXR1cm4geyBpdGVtLCBkb206IG51bGwgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoKGVudHJ5KTogZW50cnkgaXMgeyBpdGVtOiBBdGVUb2NJdGVtOyBkb206IEhUTUxFbGVtZW50IH0gPT4gZW50cnkuZG9tICE9PSBudWxsKTtcblxuICAgICAgaWYgKGhlYWRpbmdzV2l0aERvbS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93LmlubmVySGVpZ2h0IDogODAwO1xuICAgICAgbGV0IGFjdGl2ZUl0ZW06IEF0ZVRvY0l0ZW0gfCBudWxsID0gbnVsbDtcblxuICAgICAgZm9yIChsZXQgaSA9IGhlYWRpbmdzV2l0aERvbS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCB7IGl0ZW0sIGRvbSB9ID0gaGVhZGluZ3NXaXRoRG9tW2ldO1xuICAgICAgICBjb25zdCByZWN0ID0gZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGlmIChyZWN0LnRvcCA8PSB3aW5kb3dIZWlnaHQgKiAwLjM1KSB7XG4gICAgICAgICAgYWN0aXZlSXRlbSA9IGl0ZW07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFhY3RpdmVJdGVtICYmIGhlYWRpbmdzV2l0aERvbS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFjdGl2ZUl0ZW0gPSBoZWFkaW5nc1dpdGhEb21bMF0uaXRlbTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZCA9IGN1cnJlbnRJdGVtcy5tYXAoaXRlbSA9PiAoe1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgYWN0aXZlOiBpdGVtLmlkID09PSBhY3RpdmVJdGVtIS5pZCxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGNvbnN0IGlzRGlmZmVyZW50ID0gdXBkYXRlZC5zb21lKChpdGVtLCBpZHgpID0+IGl0ZW0uYWN0aXZlICE9PSBjdXJyZW50SXRlbXNbaWR4XS5hY3RpdmUpO1xuICAgICAgICBpZiAoaXNEaWZmZXJlbnQpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnNldCh1cGRhdGVkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
374
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXRhYmxlLW9mLWNvbnRlbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUtb2YtY29udGVudHMvYXRlLXRhYmxlLW9mLWNvbnRlbnRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULHVCQUF1QixFQUV2QixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFJakU7Ozs7R0FJRztBQTBXSCxNQUFNLE9BQU8sMkJBQTJCO0lBb0N0QyxrRUFBa0U7SUFDbEUsU0FBUyxDQUFDLEtBQWE7UUFDckIsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQztnQkFDSixPQUFPLEVBQUUsQ0FBQztZQUNaLEtBQUssQ0FBQztnQkFDSixPQUFPLEVBQUUsQ0FBQztZQUNaLEtBQUssQ0FBQztnQkFDSixPQUFPLENBQUMsQ0FBQztZQUNYLEtBQUssQ0FBQztnQkFDSixPQUFPLENBQUMsQ0FBQztZQUNYLEtBQUssQ0FBQztnQkFDSixPQUFPLENBQUMsQ0FBQztZQUNYO2dCQUNFLE9BQU8sQ0FBQyxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUM7SUFrQ0Q7UUFyRkEscUVBQXFFO1FBQ3JFLFdBQU0sR0FBRyxLQUFLLENBQW9ELElBQUksQ0FBQyxDQUFDO1FBRXhFLGlFQUFpRTtRQUNqRSxVQUFLLEdBQUcs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QUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUYsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTFRVSwyQkFBMkI7bUdBQTNCLDJCQUEyQixzckNBcFc1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNERUOzs0RkF3U1UsMkJBQTJCO2tCQXpXdkMsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQLEVBQUUsbUJBQ00sdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNERUO3dEQXNaRCxRQUFRO3NCQUZQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUU7O3NCQUNoQyxZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIHVudHJhY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9uRGVzdHJveSxcbiAgSG9zdExpc3RlbmVyLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yUmVmIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hdGUtZWRpdG9yLXJlZlwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yUmVnaXN0cnkgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYXRlLWVkaXRvci1yZWdpc3RyeS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBdGVJMThuU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hdGUtaTE4bi5zZXJ2aWNlXCI7XG5cbmltcG9ydCB7IEF0ZVRvY0l0ZW0sIEF0ZVRvY1ZhcmlhbnQgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2F0ZS10b2MubW9kZWxcIjtcblxuLyoqXG4gKiBUYWJsZSBvZiBDb250ZW50cyBDb21wb25lbnQgKE5vdGlvbi1zdHlsZSlcbiAqIER5bmFtaWNhbGx5IGV4dHJhY3RzIGhlYWRpbmdzIGZyb20gdGhlIGFjdGl2ZSBlZGl0b3IgYW5kIGRpc3BsYXlzIHRoZW0uXG4gKiBDb25maWd1cmFibGUgdmlhIGlucHV0cyAoZmxvYXRpbmcsIHBvc2l0aW9uLCB2YXJpYW50cywgaG92ZXIgZXhwYW5zaW9uKSBhbmQgQ1NTIHZhcmlhYmxlcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImF0ZS10YWJsZS1vZi1jb250ZW50c1wiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJhdGUtdG9jLXdyYXBwZXJcIlxuICAgICAgW2NsYXNzLmF0ZS10b2MtZmxvYXRpbmddPVwiZmxvYXRpbmcoKVwiXG4gICAgICBbY2xhc3MuYXRlLXRvYy1wb3NpdGlvbi1sZWZ0XT1cInBvc2l0aW9uKCkgPT09ICdsZWZ0J1wiXG4gICAgICBbY2xhc3MuYXRlLXRvYy1wb3NpdGlvbi1yaWdodF09XCJwb3NpdGlvbigpID09PSAncmlnaHQnXCJcbiAgICAgIChtb3VzZWVudGVyKT1cInNldE1vdXNlSG92ZXIodHJ1ZSlcIlxuICAgICAgKG1vdXNlbGVhdmUpPVwic2V0TW91c2VIb3ZlcihmYWxzZSlcIlxuICAgICAgKGZvY3VzaW4pPVwic2V0Rm9jdXNlZCh0cnVlKVwiXG4gICAgICAoZm9jdXNvdXQpPVwic2V0Rm9jdXNlZChmYWxzZSlcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhdGUtdG9jXCJcbiAgICAgICAgW2NsYXNzLmF0ZS10b2MtZmxvYXRpbmddPVwiZmxvYXRpbmcoKVwiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLXBvc2l0aW9uLWxlZnRdPVwicG9zaXRpb24oKSA9PT0gJ2xlZnQnXCJcbiAgICAgICAgW2NsYXNzLmF0ZS10b2MtcG9zaXRpb24tcmlnaHRdPVwicG9zaXRpb24oKSA9PT0gJ3JpZ2h0J1wiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLXZhcmlhbnQtY2FyZF09XCJ2YXJpYW50KCkgPT09ICdjYXJkJ1wiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLXZhcmlhbnQtdHJhbnNwYXJlbnRdPVwidmFyaWFudCgpID09PSAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgW2NsYXNzLmF0ZS10b2MtdmFyaWFudC1taW5pbWFsXT1cInZhcmlhbnQoKSA9PT0gJ21pbmltYWwnXCJcbiAgICAgICAgW2NsYXNzLmF0ZS10b2MtaG92ZXItZXhwYW5kXT1cImZsb2F0aW5nKCkgJiYgaG92ZXJFeHBhbmQoKVwiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLWhvdmVyZWRdPVwiZmxvYXRpbmcoKSAmJiBob3ZlckV4cGFuZCgpICYmIGlzRXhwYW5kZWQoKVwiXG4gICAgICAgIHJvbGU9XCJuYXZpZ2F0aW9uXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIlRhYmxlIG9mIENvbnRlbnRzXCI+XG4gICAgICAgIEBpZiAoaXRlbXMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgQGlmIChzaG93VGl0bGUoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0ZS10b2MtaGVhZGVyXCI+e3sgaGVhZGVyVGl0bGUoKSB9fTwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXRlLXRvYy1saXN0XCI+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zKCk7IHRyYWNrIGl0ZW0uaWQpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXRlLXRvYy1pdGVtXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYXRlLXRvYy1hY3RpdmVdPVwiaXRlbS5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCJpdGVtLmFjdGl2ZSA/ICd0cnVlJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtbGV2ZWxdPVwiaXRlbS5sZXZlbFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNjcm9sbFRvSGVhZGluZyhpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50ZXh0XCI+XG4gICAgICAgICAgICAgICAgPCEtLSBQZXJmZWN0IG5hdGl2ZSB2ZWN0b3IgU1ZHIGRhc2ggd2l0aCBsZXZlbC1hZGFwdGVkIHZpZXdCb3ggJiB3aWR0aCAtLT5cbiAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICBbYXR0ci53aWR0aF09XCJkYXNoV2lkdGgoaXRlbS5sZXZlbClcIlxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMlwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci52aWV3Qm94XT1cIicwIDAgJyArIGRhc2hXaWR0aChpdGVtLmxldmVsKSArICcgMidcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF0ZS10b2MtZGFzaFwiPlxuICAgICAgICAgICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwiZGFzaFdpZHRoKGl0ZW0ubGV2ZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMlwiXG4gICAgICAgICAgICAgICAgICAgIHJ4PVwiMVwiXG4gICAgICAgICAgICAgICAgICAgIHJ5PVwiMVwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3JlY3Q+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEZ1bGwgaGVhZGluZyB0ZXh0IC0tPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXRlLXRvYy10ZXh0XCI+e3sgaXRlbS50ZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG5cbiAgICAgIC8qIE91dGVyIEhpdGJveCBDb250YWluZXIgUG9zaXRpb25pbmcgKi9cbiAgICAgIC5hdGUtdG9jLXdyYXBwZXIuYXRlLXRvYy1mbG9hdGluZyB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgdG9wOiB2YXIoLS1hdGUtdG9jLXRvcCwgNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB6LWluZGV4OiB2YXIoLS1hdGUtdG9jLXotaW5kZXgsIDk1KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2Mtd3JhcHBlci5hdGUtdG9jLWZsb2F0aW5nLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQge1xuICAgICAgICByaWdodDogdmFyKC0tYXRlLXRvYy1yaWdodCwgMnJlbSk7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tYXRlLXRvYy1oaXRib3gtcGFkZGluZywgMTZweCk7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1hdGUtdG9jLWhpdGJveC1wYWRkaW5nLXZlcnRpY2FsLCA4cHgpO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tYXRlLXRvYy1oaXRib3gtcGFkZGluZy12ZXJ0aWNhbCwgOHB4KTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2Mtd3JhcHBlci5hdGUtdG9jLWZsb2F0aW5nLmF0ZS10b2MtcG9zaXRpb24tbGVmdCB7XG4gICAgICAgIGxlZnQ6IHZhcigtLWF0ZS10b2MtbGVmdCwgMnJlbSk7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1hdGUtdG9jLWhpdGJveC1wYWRkaW5nLCAxNnB4KTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tYXRlLXRvYy1oaXRib3gtcGFkZGluZy12ZXJ0aWNhbCwgOHB4KTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHZhcigtLWF0ZS10b2MtaGl0Ym94LXBhZGRpbmctdmVydGljYWwsIDhweCk7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgICAgfVxuXG4gICAgICAvKiBGbG9hdGluZyBNb2RlIENvbnRhaW5lciBQb3NpdGlvbmluZyAqL1xuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1mbG9hdGluZyB7XG4gICAgICAgIG1heC1oZWlnaHQ6IHZhcigtLWF0ZS10b2MtbWF4LWhlaWdodCwgNDAwcHgpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgfVxuXG4gICAgICAvKiBGbG9hdGluZyBtb2RlIHdpZHRoICYgcGFkZGluZyAqL1xuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1mbG9hdGluZzpub3QoLmF0ZS10b2MtaG92ZXItZXhwYW5kKSxcbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtZmxvYXRpbmcuYXRlLXRvYy1ob3Zlci1leHBhbmQ6aG92ZXIsXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWZsb2F0aW5nLmF0ZS10b2MtaG92ZXItZXhwYW5kLmF0ZS10b2MtaG92ZXJlZCB7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1hdGUtdG9jLXdpZHRoLCAyNDBweCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS10b2MtYm9yZGVyLXJhZGl1cywgdmFyKC0tYXRlLWJvcmRlci1yYWRpdXMsIDE2cHgpKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tYXRlLXRvYy1wYWRkaW5nKTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1mbG9hdGluZy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtaG92ZXJlZCk6bm90KDpob3Zlcikge1xuICAgICAgICB3aWR0aDogdmFyKC0tYXRlLXRvYy1jb2xsYXBzZWQtd2lkdGgsIDMycHgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtdG9jLWNvbGxhcHNlZC1yYWRpdXMsIDE2cHgpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1hdGUtdG9jLXBhZGRpbmcpO1xuICAgICAgfVxuXG4gICAgICAvKiBWYXJpYW50OiBjYXJkICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLXZhcmlhbnQtY2FyZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS10b2MtYmcsIHZhcigtLWF0ZS1zdXJmYWNlLCAjZmZmZmZmKSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWF0ZS10b2MtYm9yZGVyLCB2YXIoLS1hdGUtYm9yZGVyLCAjZTJlOGYwKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS10b2MtYm9yZGVyLXJhZGl1cywgdmFyKC0tYXRlLWJvcmRlci1yYWRpdXMsIDEycHgpKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tYXRlLXRvYy1zaGFkb3csIDAgNHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA2KSk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLWF0ZS10b2MtcGFkZGluZyk7XG4gICAgICB9XG5cbiAgICAgIC8qIFZhcmlhbnQ6IG1pbmltYWwgKi9cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtdmFyaWFudC1taW5pbWFsIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtdG9jLWJvcmRlci1yYWRpdXMsIHZhcigtLWF0ZS1ib3JkZXItcmFkaXVzLCAxMnB4KSk7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy12YXJpYW50LW1pbmltYWw6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hdGUtdG9jLWhvdmVyLWJnLCB2YXIoLS1hdGUtc3VyZmFjZSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KSkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWF0ZS10b2MtaG92ZXItYm9yZGVyLCB2YXIoLS1hdGUtYm9yZGVyLCAjZTJlOGYwKSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLWF0ZS10b2MtaG92ZXItc2hhZG93LCAwIDRweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNikpO1xuICAgICAgfVxuXG4gICAgICAvKiBWYXJpYW50OiB0cmFuc3BhcmVudCAqL1xuICAgICAgLmF0ZS10b2MuYXRlLXRvYy12YXJpYW50LXRyYW5zcGFyZW50IHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cblxuICAgICAgLyogSGVhZGVyIHN0eWxpbmcgKi9cbiAgICAgIC5hdGUtdG9jLWhlYWRlciB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10ZXh0LW11dGVkLCAjOWNhM2FmKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogNnB4O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLyogTGlzdCBjb250YWluZXIgKi9cbiAgICAgIC5hdGUtdG9jLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLWF0ZS10b2MtdGV4dC1nYXAsIHZhcigtLWF0ZS10b2MtZ2FwLCAycHgpKTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0cmFuc2l0aW9uOiBnYXAgMC4ycyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAvKiBCYXNlIEl0ZW0gKEV4cGFuZGVkIC8gVGV4dCBtb2RlIGRlZmF1bHQpICovXG4gICAgICAuYXRlLXRvYy1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1hdGUtdG9jLWl0ZW0taG92ZXItaGVpZ2h0LCAyMnB4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1jb2xvciwgdmFyKC0tYXRlLXRleHQtc2Vjb25kYXJ5LCAjNjQ3NDhiKSk7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS1zdWItYm9yZGVyLXJhZGl1cywgOHB4KTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MtaXRlbTpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDFweDtcbiAgICAgIH1cblxuICAgICAgLyogTGV2ZWwgSW5kZW50YXRpb25zIGluIFRleHQgbW9kZSAqL1xuICAgICAgLmF0ZS10b2MtaXRlbVtkYXRhLWxldmVsPVwiMVwiXSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICAgICAgfVxuICAgICAgLmF0ZS10b2MtaXRlbVtkYXRhLWxldmVsPVwiMlwiXSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTZweDtcbiAgICAgIH1cbiAgICAgIC5hdGUtdG9jLWl0ZW1bZGF0YS1sZXZlbD1cIjNcIl0ge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XG4gICAgICB9XG4gICAgICAuYXRlLXRvYy1pdGVtW2RhdGEtbGV2ZWw9XCI0XCJdIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAzMnB4O1xuICAgICAgfVxuICAgICAgLmF0ZS10b2MtaXRlbVtkYXRhLWxldmVsPVwiNVwiXSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogNDBweDtcbiAgICAgIH1cbiAgICAgIC5hdGUtdG9jLWl0ZW1bZGF0YS1sZXZlbD1cIjZcIl0ge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDQ4cHg7XG4gICAgICB9XG5cbiAgICAgIC8qIEl0ZW0gaG92ZXIgb3ZlcmxheSAmIGFjdGl2ZSBzdGF0ZSAoRXhwYW5kZWQgLyBUZXh0IG1vZGUpICovXG4gICAgICAuYXRlLXRvYy1pdGVtOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hdGUtcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtc3ViLWJvcmRlci1yYWRpdXMsIDhweCk7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy1pdGVtOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1hY3RpdmUtY29sb3IsIHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1ob3Zlci1iYWNrZ3JvdW5kLCB0cmFuc3BhcmVudCk7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLWl0ZW06aG92ZXI6OmJlZm9yZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuMTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MtaXRlbS5hdGUtdG9jLWFjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtdG9vbGJhci1idXR0b24tYWN0aXZlLWNvbG9yLCB2YXIoLS1hdGUtcHJpbWFyeSwgIzI1NjNlYikpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoXG4gICAgICAgICAgLS1hdGUtdG9vbGJhci1idXR0b24tYWN0aXZlLWJhY2tncm91bmQsXG4gICAgICAgICAgdmFyKC0tYXRlLXByaW1hcnktbGlnaHQsIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1hdGUtcHJpbWFyeSwgIzI1NjNlYiksIHRyYW5zcGFyZW50IDkwJSkpXG4gICAgICAgICk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICB9XG5cbiAgICAgIC8qIEhlYWRpbmcgVGV4dCBzdHlsaW5nICovXG4gICAgICAuYXRlLXRvYy10ZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIG1heC13aWR0aDogMjUwcHg7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIG9wYWNpdHkgMC4yNXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpLFxuICAgICAgICAgIG1heC13aWR0aCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMC4yNXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpLFxuICAgICAgICAgIG1hcmdpbiAwLjI1cyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAvKiBTVkcgUmVjdCBEYXNoIHN0eWxpbmcgKEhpZGRlbiBpbiBUZXh0IG1vZGUpICovXG4gICAgICAuYXRlLXRvYy1kYXNoIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgaGVpZ2h0OiAzcHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtdG9jLWRhc2gtY29sb3IsIHZhcigtLWF0ZS1ib3JkZXIsICNjYmQ1ZTEpKTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgICB9XG5cbiAgICAgIC8qIC0tLSBDT0xMQVBTRUQgTk9USU9OIE1PREUgKERhc2hlcyBvbmx5LCB3aGVuIGhvdmVyLWV4cGFuZCBpcyBhY3RpdmUgJiBub3QgaG92ZXJlZCkgLS0tICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtaG92ZXJlZCkgLmF0ZS10b2MtaGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLWRhc2gge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1pdGVtIHtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1hdGUtdG9jLWl0ZW0taGVpZ2h0LCAxOHB4KTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLWl0ZW06OmJlZm9yZSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1pdGVtOmhvdmVyIC5hdGUtdG9jLWRhc2gsXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtaG92ZXJlZClcbiAgICAgICAgLmF0ZS10b2MtaXRlbS5hdGUtdG9jLWFjdGl2ZVxuICAgICAgICAuYXRlLXRvYy1kYXNoIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLyogRGlyZWN0aW9uICYgdGV4dCBjb2xsYXBzZSBmb3IgQ29sbGFwc2VkIFJJR0hUIHBvc2l0aW9uICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZC5hdGUtdG9jLXBvc2l0aW9uLXJpZ2h0Om5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1pdGVtIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLXRleHQge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBtYXgtd2lkdGg6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0cHgpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICB9XG5cbiAgICAgIC8qIERpcmVjdGlvbiAmIHRleHQgY29sbGFwc2UgZm9yIENvbGxhcHNlZCBMRUZUIHBvc2l0aW9uICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQpOm5vdCguYXRlLXRvYy1ob3ZlcmVkKVxuICAgICAgICAuYXRlLXRvYy1pdGVtLFxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQuYXRlLXRvYy1wb3NpdGlvbi1sZWZ0Om5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1pdGVtIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQpOm5vdCguYXRlLXRvYy1ob3ZlcmVkKVxuICAgICAgICAuYXRlLXRvYy10ZXh0LFxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQuYXRlLXRvYy1wb3NpdGlvbi1sZWZ0Om5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy10ZXh0IHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgbWF4LXdpZHRoOiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTRweCk7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEF0ZVRhYmxlT2ZDb250ZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8vIElucHV0IGFjY2VwdHMgcmF3IEVkaXRvciwgQXRlRWRpdG9yUmVmLCBvciBJRCBvZiByZWdpc3RlcmVkIGVkaXRvclxuICBlZGl0b3IgPSBpbnB1dDxFZGl0b3IgfCBBdGVFZGl0b3JSZWYgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPihudWxsKTtcblxuICAvLyBPcHRpb25hbCBjdXN0b20gdGl0bGUgKGlmIG5vdCBwcm92aWRlZCwgdXNlcyBpMThuIHRyYW5zbGF0aW9uKVxuICB0aXRsZSA9IGlucHV0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIC8vIFdoZXRoZXIgdG8gc2hvdyB0aGUgaGVhZGVyIHRpdGxlXG4gIHNob3dUaXRsZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gIC8vIExheW91dCBtb2RlOiBmbG9hdGluZyBvbiBmaXhlZCBwb3NpdGlvbiBvciBpbmxpbmUgaW5zaWRlIHBhcmVudCBjb250YWluZXJcbiAgZmxvYXRpbmcgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblxuICAvLyBGbG9hdGluZyBwb3NpdGlvbjogJ3JpZ2h0JyB8ICdsZWZ0J1xuICBwb3NpdGlvbiA9IGlucHV0PFwibGVmdFwiIHwgXCJyaWdodFwiPihcInJpZ2h0XCIpO1xuXG4gIC8vIFZpc3VhbCB2YXJpYW50OiAnbWluaW1hbCcgfCAnY2FyZCcgfCAndHJhbnNwYXJlbnQnXG4gIHZhcmlhbnQgPSBpbnB1dDxBdGVUb2NWYXJpYW50PihcIm1pbmltYWxcIik7XG5cbiAgLy8gTm90aW9uLXN0eWxlIGhvdmVyIGV4cGFuc2lvbiAoY29sbGFwc2VzIHRleHQgaW50byBkYXNoZXMgdW50aWwgaG92ZXJlZClcbiAgaG92ZXJFeHBhbmQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblxuICAvLyBNYXhpbXVtIGhlYWRpbmcgbGV2ZWwgZGVwdGggdG8gaW5jbHVkZSAoMS02LCBkZWZhdWx0OiA2KVxuICBtYXhEZXB0aCA9IGlucHV0PG51bWJlciwgbnVtYmVyIHwgc3RyaW5nPig2LCB7XG4gICAgdHJhbnNmb3JtOiAodjogbnVtYmVyIHwgc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZWQgPSB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlSW50KHYsIDEwKSA6IHY7XG4gICAgICBpZiAoaXNOYU4ocGFyc2VkKSkge1xuICAgICAgICByZXR1cm4gNjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heCgxLCBwYXJzZWQpLCA2KTtcbiAgICB9LFxuICB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5ID0gaW5qZWN0KEF0ZUVkaXRvclJlZ2lzdHJ5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBpMThuID0gaW5qZWN0KEF0ZUkxOG5TZXJ2aWNlKTtcblxuICAvLyBIZWxwZXIgbWV0aG9kIGZvciBleGFjdCBuYXRpdmUgU1ZHIGRhc2ggd2lkdGggcGVyIGhlYWRpbmcgbGV2ZWxcbiAgZGFzaFdpZHRoKGxldmVsOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHN3aXRjaCAobGV2ZWwpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgcmV0dXJuIDE2O1xuICAgICAgY2FzZSAyOlxuICAgICAgICByZXR1cm4gMTI7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHJldHVybiA4O1xuICAgICAgY2FzZSA0OlxuICAgICAgICByZXR1cm4gNjtcbiAgICAgIGNhc2UgNTpcbiAgICAgICAgcmV0dXJuIDQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gMztcbiAgICB9XG4gIH1cblxuICAvLyBDb21wdXRlZCBoZWFkZXIgdGl0bGUgd2l0aCBmYWxsYmFjayB0byBpMThuXG4gIHJlYWRvbmx5IGhlYWRlclRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGN1c3RvbSA9IHRoaXMudGl0bGUoKTtcbiAgICBpZiAoY3VzdG9tICE9PSBudWxsICYmIGN1c3RvbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gY3VzdG9tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pMThuLmVkaXRvcigpLnRhYmxlT2ZDb250ZW50cztcbiAgfSk7XG5cbiAgLy8gUmVzb2x2ZWQgZWRpdG9yIGluc3RhbmNlXG4gIHJlYWRvbmx5IHJlc29sdmVkRWRpdG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuZWRpdG9yKCk7XG4gICAgaWYgKCF2YWwpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5LmFjdGl2ZUVkaXRvcigpPy5lZGl0b3IgfHwgbnVsbDtcbiAgICB9XG4gICAgaWYgKHZhbCBpbnN0YW5jZW9mIEF0ZUVkaXRvclJlZikge1xuICAgICAgcmV0dXJuIHZhbC5lZGl0b3I7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5nZXQodmFsKT8uZWRpdG9yIHx8IG51bGw7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG4gIH0pO1xuXG4gIC8vIFRhYmxlIG9mIENvbnRlbnRzIGl0ZW1zXG4gIHJlYWRvbmx5IGl0ZW1zID0gc2lnbmFsPEF0ZVRvY0l0ZW1bXT4oW10pO1xuXG4gIC8vIERpc3RpbmN0IG1vdXNlIGhvdmVyIGFuZCBrZXlib2FyZCBmb2N1cyBzdGF0ZSB0cmFja2luZ1xuICBpc01vdXNlSG92ZXJlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGlzRm9jdXNlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGlzRXhwYW5kZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlzTW91c2VIb3ZlcmVkKCkgfHwgdGhpcy5pc0ZvY3VzZWQoKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gUmVhY3Qgc3RyaWN0bHkgdG8gZWRpdG9yIGluc3RhbmNlIGNoYW5nZXMgd2l0aG91dCB0cmFja2luZyBpbnRlcm5hbCBzaWduYWwgdXBkYXRlc1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBlZGl0b3IgPSB0aGlzLnJlc29sdmVkRWRpdG9yKCk7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICBpZiAoZWRpdG9yKSB7XG4gICAgICAgICAgdGhpcy5iaW5kRWRpdG9yRXZlbnRzKGVkaXRvcik7XG4gICAgICAgICAgdGhpcy51cGRhdGVIZWFkaW5ncyhlZGl0b3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaXRlbXMuc2V0KFtdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLnJlc29sdmVkRWRpdG9yKCk7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy51bmJpbmRFZGl0b3JFdmVudHMoZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwid2luZG93OnNjcm9sbFwiLCBbXSlcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgW10pXG4gIG9uU2Nyb2xsKCkge1xuICAgIHRoaXMuY2hlY2tBY3RpdmVIZWFkaW5nKCk7XG4gIH1cblxuICAvLyBIYW5kbGUgbW91c2UgaG92ZXIgc3RhdGUgaW5kZXBlbmRlbnRseVxuICBzZXRNb3VzZUhvdmVyKGhvdmVyZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzTW91c2VIb3ZlcmVkLnNldChob3ZlcmVkKTtcbiAgfVxuXG4gIC8vIEhhbmRsZSBrZXlib2FyZCBmb2N1cyBzdGF0ZSBpbmRlcGVuZGVudGx5XG4gIHNldEZvY3VzZWQoZm9jdXNlZDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNGb2N1c2VkLnNldChmb2N1c2VkKTtcbiAgfVxuXG4gIC8vIE5hdmlnYXRlIHRvIGhlYWRpbmcgb24gY2xpY2tcbiAgc2Nyb2xsVG9IZWFkaW5nKGl0ZW06IEF0ZVRvY0l0ZW0sIGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMucmVzb2x2ZWRFZGl0b3IoKTtcbiAgICBpZiAoIWVkaXRvciB8fCAhZWRpdG9yLnZpZXcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gMS4gUG9zaXRpb24gY3Vyc29yIGluc2lkZSB0aGUgaGVhZGluZyB0ZXh0IChpdGVtLnBvcyArIDEgcG9pbnRzIHRvIGlubGluZSB0ZXh0KVxuICAgICAgY29uc3QgdGFyZ2V0UG9zID0gTWF0aC5taW4oaXRlbS5wb3MgKyAxLCBlZGl0b3Iuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZSk7XG4gICAgICBlZGl0b3IuY29tbWFuZHMuc2V0VGV4dFNlbGVjdGlvbih0YXJnZXRQb3MpO1xuICAgICAgZWRpdG9yLmNvbW1hbmRzLmZvY3VzKCk7XG4gICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgIC8vIFNhZmUtZ3VhcmQgYWdhaW5zdCBwb3NpdGlvbiBzZWxlY3Rpb24gZXJyb3JzXG4gICAgfVxuXG4gICAgLy8gMi4gU21vb3RobHkgc2Nyb2xsIERPTSBub2RlIGludG8gdmlld1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZG9tTm9kZSA9IGVkaXRvci52aWV3Lm5vZGVET00oaXRlbS5wb3MpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAoZG9tTm9kZSkge1xuICAgICAgICAgIGRvbU5vZGUuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogXCJzbW9vdGhcIiwgYmxvY2s6IFwic3RhcnRcIiB9KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgICAgLy8gU2FmZS1ndWFyZFxuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfVxuXG4gIHByaXZhdGUgYmluZEVkaXRvckV2ZW50cyhlZGl0b3I6IEVkaXRvcikge1xuICAgIHRoaXMudW5iaW5kRWRpdG9yRXZlbnRzKGVkaXRvcik7XG4gICAgZWRpdG9yLm9uKFwidXBkYXRlXCIsIHRoaXMub25FZGl0b3JVcGRhdGUpO1xuICAgIGVkaXRvci5vbihcInNlbGVjdGlvblVwZGF0ZVwiLCB0aGlzLm9uRWRpdG9yVXBkYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5iaW5kRWRpdG9yRXZlbnRzKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgZWRpdG9yLm9mZihcInVwZGF0ZVwiLCB0aGlzLm9uRWRpdG9yVXBkYXRlKTtcbiAgICBlZGl0b3Iub2ZmKFwic2VsZWN0aW9uVXBkYXRlXCIsIHRoaXMub25FZGl0b3JVcGRhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvbkVkaXRvclVwZGF0ZSA9ICgpID0+IHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLnJlc29sdmVkRWRpdG9yKCk7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy51cGRhdGVIZWFkaW5ncyhlZGl0b3IpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHVwZGF0ZUhlYWRpbmdzKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgY29uc3QgbmV4dEl0ZW1zOiBBdGVUb2NJdGVtW10gPSBbXTtcblxuICAgIHRyeSB7XG4gICAgICBlZGl0b3Iuc3RhdGUuZG9jLmRlc2NlbmRhbnRzKChub2RlLCBwb3MpID0+IHtcbiAgICAgICAgaWYgKG5vZGUudHlwZS5uYW1lID09PSBcImhlYWRpbmdcIikge1xuICAgICAgICAgIGNvbnN0IHRleHQgPSBub2RlLnRleHRDb250ZW50LnRyaW0oKTtcbiAgICAgICAgICBjb25zdCBsZXZlbCA9IG5vZGUuYXR0cnNbXCJsZXZlbFwiXSB8fCAxO1xuXG4gICAgICAgICAgY29uc3QgbWF4RGVwdGhMZXZlbCA9IHRoaXMubWF4RGVwdGgoKTtcbiAgICAgICAgICBpZiAodGV4dCAmJiBsZXZlbCA8PSBtYXhEZXB0aExldmVsKSB7XG4gICAgICAgICAgICBuZXh0SXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgIHRleHQsXG4gICAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgICBwb3MsXG4gICAgICAgICAgICAgIGlkOiBgaGVhZGluZy0ke3Bvc31gLFxuICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChfZSkge1xuICAgICAgLy8gU2FmZSBndWFyZCBhZ2FpbnN0IGRvY3VtZW50IGFjY2VzcyBpc3N1ZXNcbiAgICB9XG5cbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgdGhpcy5pdGVtcy5zZXQobmV4dEl0ZW1zKTtcbiAgICAgIHRoaXMuY2hlY2tBY3RpdmVIZWFkaW5nKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQWN0aXZlSGVhZGluZygpIHtcbiAgICAvLyBBY3RpdmUgaGVhZGluZyBzY3JvbGwgdHJhY2tpbmcgb25seSBhcHBsaWVzIHRvIGZsb2F0aW5nIFRPQyBtb2RlXG4gICAgaWYgKCF0aGlzLmZsb2F0aW5nKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLnJlc29sdmVkRWRpdG9yKCk7XG4gICAgaWYgKCFlZGl0b3IgfHwgIWVkaXRvci52aWV3KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRJdGVtcyA9IHRoaXMuaXRlbXMoKTtcbiAgICAgIGlmIChjdXJyZW50SXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGVhZGluZ3NXaXRoRG9tID0gY3VycmVudEl0ZW1zXG4gICAgICAgIC5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRvbSA9IGVkaXRvci52aWV3Lm5vZGVET00oaXRlbS5wb3MpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgcmV0dXJuIHsgaXRlbSwgZG9tIH07XG4gICAgICAgICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGl0ZW0sIGRvbTogbnVsbCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcigoZW50cnkpOiBlbnRyeSBpcyB7IGl0ZW06IEF0ZVRvY0l0ZW07IGRvbTogSFRNTEVsZW1lbnQgfSA9PiBlbnRyeS5kb20gIT09IG51bGwpO1xuXG4gICAgICBpZiAoaGVhZGluZ3NXaXRoRG9tLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdpbmRvd0hlaWdodCA9IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiA4MDA7XG4gICAgICBsZXQgYWN0aXZlSXRlbTogQXRlVG9jSXRlbSB8IG51bGwgPSBudWxsO1xuXG4gICAgICBmb3IgKGxldCBpID0gaGVhZGluZ3NXaXRoRG9tLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IHsgaXRlbSwgZG9tIH0gPSBoZWFkaW5nc1dpdGhEb21baV07XG4gICAgICAgIGNvbnN0IHJlY3QgPSBkb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKHJlY3QudG9wIDw9IHdpbmRvd0hlaWdodCAqIDAuMzUpIHtcbiAgICAgICAgICBhY3RpdmVJdGVtID0gaXRlbTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWFjdGl2ZUl0ZW0gJiYgaGVhZGluZ3NXaXRoRG9tLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYWN0aXZlSXRlbSA9IGhlYWRpbmdzV2l0aERvbVswXS5pdGVtO1xuICAgICAgfVxuXG4gICAgICBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICBjb25zdCB1cGRhdGVkID0gY3VycmVudEl0ZW1zLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICBhY3RpdmU6IGl0ZW0uaWQgPT09IGFjdGl2ZUl0ZW0hLmlkLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgY29uc3QgaXNEaWZmZXJlbnQgPSB1cGRhdGVkLnNvbWUoKGl0ZW0sIGlkeCkgPT4gaXRlbS5hY3RpdmUgIT09IGN1cnJlbnRJdGVtc1tpZHhdLmFjdGl2ZSk7XG4gICAgICAgIGlmIChpc0RpZmZlcmVudCkge1xuICAgICAgICAgIHRoaXMuaXRlbXMuc2V0KHVwZGF0ZWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -14,9 +14,10 @@ export class AteTocNodeComponent extends AteAngularNodeView {
|
|
|
14
14
|
[editor]="editor()"
|
|
15
15
|
[floating]="false"
|
|
16
16
|
[variant]="node().attrs['variant'] || 'minimal'"
|
|
17
|
-
[showTitle]="node().attrs['showTitle'] !== false"
|
|
17
|
+
[showTitle]="node().attrs['showTitle'] !== false"
|
|
18
|
+
[maxDepth]="node().attrs['maxDepth'] || 6" />
|
|
18
19
|
</div>
|
|
19
|
-
`, isInline: true, styles: [".ate-toc-node-wrapper{margin:1rem 0;-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "component", type: AteTableOfContentsComponent, selector: "ate-table-of-contents", inputs: ["editor", "title", "showTitle", "floating", "position", "variant", "hoverExpand"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20
|
+
`, isInline: true, styles: [".ate-toc-node-wrapper{margin:1rem 0;-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "component", type: AteTableOfContentsComponent, selector: "ate-table-of-contents", inputs: ["editor", "title", "showTitle", "floating", "position", "variant", "hoverExpand", "maxDepth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20
21
|
}
|
|
21
22
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteTocNodeComponent, decorators: [{
|
|
22
23
|
type: Component,
|
|
@@ -26,7 +27,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
26
27
|
[editor]="editor()"
|
|
27
28
|
[floating]="false"
|
|
28
29
|
[variant]="node().attrs['variant'] || 'minimal'"
|
|
29
|
-
[showTitle]="node().attrs['showTitle'] !== false"
|
|
30
|
+
[showTitle]="node().attrs['showTitle'] !== false"
|
|
31
|
+
[maxDepth]="node().attrs['maxDepth'] || 6" />
|
|
30
32
|
</div>
|
|
31
33
|
`, styles: [".ate-toc-node-wrapper{margin:1rem 0;-webkit-user-select:none;user-select:none}\n"] }]
|
|
32
34
|
}] });
|
|
@@ -45,6 +47,9 @@ export const AteTocNodeOptions = {
|
|
|
45
47
|
showTitle: {
|
|
46
48
|
default: true,
|
|
47
49
|
},
|
|
50
|
+
maxDepth: {
|
|
51
|
+
default: 6,
|
|
52
|
+
},
|
|
48
53
|
},
|
|
49
54
|
};
|
|
50
55
|
/**
|
|
@@ -56,4 +61,4 @@ export function getAteTocNodeExtension(injector) {
|
|
|
56
61
|
}
|
|
57
62
|
return registerAngularComponent(AteTocNodeOptions);
|
|
58
63
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXRvYy1ub2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUtb2YtY29udGVudHMvYXRlLXRvYy1ub2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRTFGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQUVoRjs7R0FFRztBQXlCSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsa0JBQWtCOytHQUE5QyxtQkFBbUI7bUdBQW5CLG1CQUFtQiwrRkFuQnBCOzs7Ozs7Ozs7R0FTVCwwSkFYUywyQkFBMkI7OzRGQXFCMUIsbUJBQW1CO2tCQXhCL0IsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQLENBQUMsMkJBQTJCLENBQUMsbUJBQ3JCLHVCQUF1QixDQUFDLE1BQU0sWUFDckM7Ozs7Ozs7OztHQVNUOztBQVlIOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQXlEO0lBQ3JGLFNBQVMsRUFBRSxtQkFBbUI7SUFDOUIsSUFBSSxFQUFFLGlCQUFpQjtJQUN2QixLQUFLLEVBQUUsT0FBTztJQUNkLFNBQVMsRUFBRSxJQUFJO0lBQ2YsVUFBVSxFQUFFO1FBQ1YsT0FBTyxFQUFFO1lBQ1AsT0FBTyxFQUFFLFNBQVM7U0FDbkI7UUFDRCxTQUFTLEVBQUU7WUFDVCxPQUFPLEVBQUUsSUFBSTtTQUNkO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsT0FBTyxFQUFFLENBQUM7U0FDWDtLQUNGO0NBQ0YsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFFBQW1CO0lBQ3hELElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixPQUFPLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDRCxPQUFPLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQXRlQW5ndWxhck5vZGVWaWV3IH0gZnJvbSBcIi4uLy4uL25vZGUtdmlldy9hdGUtYW5ndWxhci1ub2RlLXZpZXdcIjtcbmltcG9ydCB7IHJlZ2lzdGVyQW5ndWxhckNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9ub2RlLXZpZXcvYXRlLXJlZ2lzdGVyLWFuZ3VsYXItY29tcG9uZW50XCI7XG5pbXBvcnQgeyBSZWdpc3RlckFuZ3VsYXJDb21wb25lbnRPcHRpb25zIH0gZnJvbSBcIi4uLy4uL25vZGUtdmlldy9hdGUtbm9kZS12aWV3Lm1vZGVsc1wiO1xuaW1wb3J0IHsgQXRlVGFibGVPZkNvbnRlbnRzQ29tcG9uZW50IH0gZnJvbSBcIi4vYXRlLXRhYmxlLW9mLWNvbnRlbnRzLmNvbXBvbmVudFwiO1xuXG4vKipcbiAqIEN1c3RvbSBBbmd1bGFyIE5vZGVWaWV3IHdyYXBwZXIgZm9yIGRpc3BsYXlpbmcgVGFibGUgb2YgQ29udGVudHMgZGlyZWN0bHkgaW5zaWRlIHRoZSBlZGl0b3IgY29udGVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImF0ZS10b2Mtbm9kZVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQXRlVGFibGVPZkNvbnRlbnRzQ29tcG9uZW50XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImF0ZS10b2Mtbm9kZS13cmFwcGVyXCI+XG4gICAgICA8YXRlLXRhYmxlLW9mLWNvbnRlbnRzXG4gICAgICAgIFtlZGl0b3JdPVwiZWRpdG9yKClcIlxuICAgICAgICBbZmxvYXRpbmddPVwiZmFsc2VcIlxuICAgICAgICBbdmFyaWFudF09XCJub2RlKCkuYXR0cnNbJ3ZhcmlhbnQnXSB8fCAnbWluaW1hbCdcIlxuICAgICAgICBbc2hvd1RpdGxlXT1cIm5vZGUoKS5hdHRyc1snc2hvd1RpdGxlJ10gIT09IGZhbHNlXCJcbiAgICAgICAgW21heERlcHRoXT1cIm5vZGUoKS5hdHRyc1snbWF4RGVwdGgnXSB8fCA2XCIgLz5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLmF0ZS10b2Mtbm9kZS13cmFwcGVyIHtcbiAgICAgICAgbWFyZ2luOiAxcmVtIDA7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEF0ZVRvY05vZGVDb21wb25lbnQgZXh0ZW5kcyBBdGVBbmd1bGFyTm9kZVZpZXcge31cblxuLyoqXG4gKiBSZWdpc3RyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFRhYmxlIG9mIENvbnRlbnRzIEFuZ3VsYXIgTm9kZVZpZXdcbiAqL1xuZXhwb3J0IGNvbnN0IEF0ZVRvY05vZGVPcHRpb25zOiBSZWdpc3RlckFuZ3VsYXJDb21wb25lbnRPcHRpb25zPEF0ZVRvY05vZGVDb21wb25lbnQ+ID0ge1xuICBjb21wb25lbnQ6IEF0ZVRvY05vZGVDb21wb25lbnQsXG4gIG5hbWU6IFwidGFibGVPZkNvbnRlbnRzXCIsXG4gIGdyb3VwOiBcImJsb2NrXCIsXG4gIGRyYWdnYWJsZTogdHJ1ZSxcbiAgYXR0cmlidXRlczoge1xuICAgIHZhcmlhbnQ6IHtcbiAgICAgIGRlZmF1bHQ6IFwibWluaW1hbFwiLFxuICAgIH0sXG4gICAgc2hvd1RpdGxlOiB7XG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgIH0sXG4gICAgbWF4RGVwdGg6IHtcbiAgICAgIGRlZmF1bHQ6IDYsXG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgVGFibGUgb2YgQ29udGVudHMgVGlwVGFwIE5vZGUgRXh0ZW5zaW9uIGluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXRlVG9jTm9kZUV4dGVuc2lvbihpbmplY3Rvcj86IEluamVjdG9yKSB7XG4gIGlmIChpbmplY3Rvcikge1xuICAgIHJldHVybiByZWdpc3RlckFuZ3VsYXJDb21wb25lbnQoaW5qZWN0b3IsIEF0ZVRvY05vZGVPcHRpb25zKTtcbiAgfVxuICByZXR1cm4gcmVnaXN0ZXJBbmd1bGFyQ29tcG9uZW50KEF0ZVRvY05vZGVPcHRpb25zKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default Table of Contents configuration
|
|
3
|
+
*/
|
|
4
|
+
export const ATE_DEFAULT_TOC_CONFIG = {
|
|
5
|
+
enabled: true,
|
|
6
|
+
floating: true,
|
|
7
|
+
position: "right",
|
|
8
|
+
variant: "minimal",
|
|
9
|
+
hoverExpand: true,
|
|
10
|
+
showTitle: true,
|
|
11
|
+
maxDepth: 6,
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXRvYy5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRpcHRhcC1lZGl0b3Ivc3JjL2xpYi9jb25maWcvYXRlLXRvYy5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBMkI7SUFDNUQsT0FBTyxFQUFFLElBQUk7SUFDYixRQUFRLEVBQUUsSUFBSTtJQUNkLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLFNBQVMsRUFBRSxJQUFJO0lBQ2YsUUFBUSxFQUFFLENBQUM7Q0FDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXRlVG9jQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9hdGUtdG9jLm1vZGVsXCI7XG5cbi8qKlxuICogRGVmYXVsdCBUYWJsZSBvZiBDb250ZW50cyBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBBVEVfREVGQVVMVF9UT0NfQ09ORklHOiBSZXF1aXJlZDxBdGVUb2NDb25maWc+ID0ge1xuICBlbmFibGVkOiB0cnVlLFxuICBmbG9hdGluZzogdHJ1ZSxcbiAgcG9zaXRpb246IFwicmlnaHRcIixcbiAgdmFyaWFudDogXCJtaW5pbWFsXCIsXG4gIGhvdmVyRXhwYW5kOiB0cnVlLFxuICBzaG93VGl0bGU6IHRydWUsXG4gIG1heERlcHRoOiA2LFxufTtcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWVkaXRvci1jb25maWcubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRpcHRhcC1lZGl0b3Ivc3JjL2xpYi9tb2RlbHMvYXRlLWVkaXRvci1jb25maWcubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQXRlVG9vbGJhckNvbmZpZyB9IGZyb20gXCIuL2F0ZS10b29sYmFyLm1vZGVsXCI7XG5pbXBvcnQgeyBSZWdpc3RlckFuZ3VsYXJDb21wb25lbnRPcHRpb25zIH0gZnJvbSBcIi4uL25vZGUtdmlldy9hdGUtbm9kZS12aWV3Lm1vZGVsc1wiO1xuaW1wb3J0IHtcbiAgQXRlQnViYmxlTWVudUNvbmZpZyxcbiAgQXRlSW1hZ2VCdWJibGVNZW51Q29uZmlnLFxuICBBdGVUYWJsZUJ1YmJsZU1lbnVDb25maWcsXG4gIEF0ZUNlbGxCdWJibGVNZW51Q29uZmlnLFxufSBmcm9tIFwiLi9hdGUtYnViYmxlLW1lbnUubW9kZWxcIjtcbmltcG9ydCB7IEF0ZVNsYXNoQ29tbWFuZHNDb25maWcgfSBmcm9tIFwiLi4vY29uZmlnL2F0ZS1zbGFzaC1jb21tYW5kcy5jb25maWdcIjtcbmltcG9ydCB7IEF0ZUltYWdlVXBsb2FkQ29uZmlnIH0gZnJvbSBcIi4vYXRlLWltYWdlLm1vZGVsXCI7XG5pbXBvcnQgeyBBdGVUb2NDb25maWcgfSBmcm9tIFwiLi9hdGUtdG9jLm1vZGVsXCI7XG5pbXBvcnQgeyBFeHRlbnNpb24sIE5vZGUsIE1hcmssIEVkaXRvck9wdGlvbnMgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5pbXBvcnQgeyBBdGVTdGF0ZUNhbGN1bGF0b3IgfSBmcm9tIFwiLi9hdGUtZWRpdG9yLXN0YXRlLm1vZGVsXCI7XG5pbXBvcnQgeyBBdGVDdXN0b21TbGFzaENvbW1hbmRzIH0gZnJvbSBcIi4vYXRlLXNsYXNoLWNvbW1hbmQubW9kZWxcIjtcblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyBhbiBBbmd1bGFyIGNvbXBvbmVudCB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGFzIGFuIGVkaXRvciBub2RlLlxuICogQ2FuIGJlIGEgZGlyZWN0IENvbXBvbmVudCBjbGFzcyBvciBhIGZ1bGwgcmVnaXN0cmF0aW9uIG9wdGlvbnMgb2JqZWN0LlxuICovXG5leHBvcnQgdHlwZSBBdGVBbmd1bGFyTm9kZSA9IFR5cGU8dW5rbm93bj4gfCBSZWdpc3RlckFuZ3VsYXJDb21wb25lbnRPcHRpb25zPHVua25vd24+O1xuXG4vKiogUG9zc2libGUgZGlzcGxheSBtb2RlcyBmb3IgYmxvY2sgbGV2ZWwgY29udHJvbHMgKi9cbmV4cG9ydCB0eXBlIEF0ZUJsb2NrQ29udHJvbHNNb2RlID0gXCJpbnNpZGVcIiB8IFwib3V0c2lkZVwiIHwgXCJub25lXCI7XG5cbi8qKiBQb3NzaWJsZSB2YWx1ZXMgZm9yIGVkaXRvciBhdXRvZm9jdXMgKi9cbmV4cG9ydCB0eXBlIEF0ZUF1dG9mb2N1c01vZGUgPSBcInN0YXJ0XCIgfCBcImVuZFwiIHwgXCJhbGxcIiB8IGJvb2xlYW4gfCBudW1iZXI7XG5cbi8qKlxuICogR2xvYmFsIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGZvciBBbmd1bGFyIFRpcHRhcCBFZGl0b3IuXG4gKiBVc2VzIGEgZmxhdCBzdHJ1Y3R1cmUgZm9yIGNvbW1vbiBzZXR0aW5ncyBhbmQgb2JqZWN0cyBmb3IgY29tcGxleCBjb25maWd1cmF0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdGVFZGl0b3JDb25maWcge1xuICAvLyAtLS0gMS4gQ29yZSBTZXR0aW5ncyAoRmlyc3QtY2xhc3MgY2l0aXplbnMpIC0tLVxuXG4gIC8qKiBFZGl0b3IgdGhlbWU6IGxpZ2h0LCBkYXJrLCBvciBzeXN0ZW0gYXV0by1kZXRlY3Rpb24gKi9cbiAgdGhlbWU/OiBcImxpZ2h0XCIgfCBcImRhcmtcIiB8IFwiYXV0b1wiO1xuICAvKiogRGlzcGxheSBtb2RlOiBjbGFzc2ljIG9yIHNlYW1sZXNzIChubyBib3JkZXJzL2JhY2tncm91bmQpICovXG4gIG1vZGU/OiBcImNsYXNzaWNcIiB8IFwic2VhbWxlc3NcIjtcbiAgLyoqIEVkaXRvciBoZWlnaHQgKGUuZy4sICczMDBweCcsIDMwMCwgJ2F1dG8nKSAqL1xuICBoZWlnaHQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIC8qKiBGb2N1cyBwb3NpdGlvbiBvbiBpbml0aWFsaXphdGlvbiAqL1xuICBhdXRvZm9jdXM/OiBBdGVBdXRvZm9jdXNNb2RlO1xuICAvKiogUGxhY2Vob2xkZXIgdGV4dCBkaXNwbGF5ZWQgd2hlbiB0aGUgZWRpdG9yIGlzIGVtcHR5ICovXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAvKiogSW5pdGlhbCBlZGl0aW5nIHN0YXRlIChpZiBmYWxzZSwgdGhlIGVkaXRvciBpcyByZWFkLW9ubHkpICovXG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcbiAgLyoqIE1pbmltdW0gZWRpdG9yIGhlaWdodCAoZS5nLiwgJzIwMHB4JywgMjAwKSAqL1xuICBtaW5IZWlnaHQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIGVkaXRvciBoZWlnaHQgKGUuZy4sICc1MDBweCcsIDUwMCkgKi9cbiAgbWF4SGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAvKiogSWYgdHJ1ZSwgdGhlIGVkaXRvciB0YWtlcyAxMDAlIG9mIHRoZSBwYXJlbnQgY29udGFpbmVyJ3MgaGVpZ2h0ICovXG4gIGZpbGxDb250YWluZXI/OiBib29sZWFuO1xuICAvKiogRGlzYWJsZWQgc3RhdGUgKG9mdGVuIHVzZWQgd2l0aCBmb3JtcykgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKiogRWRpdG9yIGxvY2FsZSAob3ZlcnJpZGVzIHRoZSBnbG9iYWwgaTE4biBzZXJ2aWNlKSAqL1xuICBsb2NhbGU/OiBzdHJpbmc7XG4gIC8qKiBFbmFibGUgYnJvd3NlciBzcGVsbGNoZWNrICovXG4gIHNwZWxsY2hlY2s/OiBib29sZWFuO1xuICAvKiogRW5hYmxlIHNtYXJ0IGNsZWFudXAgd2hlbiBwYXN0aW5nIGZyb20gT2ZmaWNlL1dvcmQgKi9cbiAgZW5hYmxlT2ZmaWNlUGFzdGU/OiBib29sZWFuO1xuXG4gIC8vIC0tLSAyLiBEaXNwbGF5IE9wdGlvbnMgKFNpbXBsZSBib29sZWFucykgLS0tXG5cbiAgLyoqIFNob3cgb3IgaGlkZSB0aGUgdG9vbGJhciAqL1xuICBzaG93VG9vbGJhcj86IGJvb2xlYW47XG4gIC8qKiBTaG93IG9yIGhpZGUgdGhlIGZvb3RlciAoY291bnRlcnMgYXJlYSkgKi9cbiAgc2hvd0Zvb3Rlcj86IGJvb2xlYW47XG4gIC8qKiBTaG93IG9yIGhpZGUgdGhlIGNoYXJhY3RlciBjb3VudCAqL1xuICBzaG93Q2hhcmFjdGVyQ291bnQ/OiBib29sZWFuO1xuICAvKiogU2hvdyBvciBoaWRlIHRoZSB3b3JkIGNvdW50ICovXG4gIHNob3dXb3JkQ291bnQ/OiBib29sZWFuO1xuICAvKiogU2hvdyBvciBoaWRlIHRoZSByZWFkLW9ubHkvZWRpdCB0b2dnbGUgYnV0dG9uICovXG4gIHNob3dFZGl0VG9nZ2xlPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgb3IgaGlkZSB0aGUgdGV4dCBjb250ZXh0IG1lbnUgKi9cbiAgc2hvd0J1YmJsZU1lbnU/OiBib29sZWFuO1xuICAvKiogU2hvdyBvciBoaWRlIHRoZSBpbWFnZSBjb250ZXh0IG1lbnUgKi9cbiAgc2hvd0ltYWdlQnViYmxlTWVudT86IGJvb2xlYW47XG4gIC8qKiBTaG93IG9yIGhpZGUgdGhlIHRhYmxlIG1lbnUgKi9cbiAgc2hvd1RhYmxlTWVudT86IGJvb2xlYW47XG4gIC8qKiBTaG93IG9yIGhpZGUgdGhlIGNlbGwgbWVudSAqL1xuICBzaG93Q2VsbE1lbnU/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0byBhbGxvdyBpbWFnZSBkb3dubG9hZGluZyBmcm9tIGJ1YmJsZSBtZW51ICovXG4gIGRvd25sb2FkSW1hZ2U/OiBib29sZWFuO1xuICAvKiogRW5hYmxlIG9yIGRpc2FibGUgc2xhc2ggY29tbWFuZHMgKC8pICovXG4gIGVuYWJsZVNsYXNoQ29tbWFuZHM/OiBib29sZWFuO1xuICAvKiogTWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBhbGxvd2VkICovXG4gIG1heENoYXJhY3RlcnM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBCbG9jayBsZXZlbCBjb250cm9scyAocGx1cyBidXR0b24gYW5kIGRyYWcgaGFuZGxlKSBkaXNwbGF5IG1vZGUuXG4gICAqIC0gJ2luc2lkZSc6IEVsZW1lbnRzIGFyZSBwbGFjZWQgaW5zaWRlIHRoZSBlZGl0b3IgKHJlc2VydmVzIHNwYWNlIHZpYSBwYWRkaW5nKS5cbiAgICogLSAnb3V0c2lkZSc6IEVsZW1lbnRzIGZsb2F0IG91dHNpZGUgdGhlIGVkaXRvciBib3VuZGFyeSAobm8gbGF5b3V0IHNoaWZ0KS5cbiAgICogLSAnbm9uZSc6IERpc2FibGVkIChub3QgZGlzcGxheWVkKS5cbiAgICovXG4gIGJsb2NrQ29udHJvbHM/OiBBdGVCbG9ja0NvbnRyb2xzTW9kZTtcblxuICAvLyAtLS0gMy4gQ29tcGxleCBDb25maWd1cmF0aW9ucyAoQ29uZmlnIE9iamVjdHMpIC0tLVxuXG4gIC8qKiBEZXRhaWxlZCB0b29sYmFyIGNvbmZpZ3VyYXRpb24gKGl0ZW1zLCBncm91cHMpICovXG4gIHRvb2xiYXI/OiBBdGVUb29sYmFyQ29uZmlnO1xuICAvKiogVGV4dCBjb250ZXh0IG1lbnUgY29uZmlndXJhdGlvbiAqL1xuICBidWJibGVNZW51PzogQXRlQnViYmxlTWVudUNvbmZpZztcbiAgLyoqIEltYWdlIGNvbnRleHQgbWVudSBjb25maWd1cmF0aW9uICovXG4gIGltYWdlQnViYmxlTWVudT86IEF0ZUltYWdlQnViYmxlTWVudUNvbmZpZztcbiAgLyoqIFRhYmxlIGNvbnRleHQgbWVudSBjb25maWd1cmF0aW9uICovXG4gIHRhYmxlQnViYmxlTWVudT86IEF0ZVRhYmxlQnViYmxlTWVudUNvbmZpZztcbiAgLyoqIENlbGwgY29udGV4dCBtZW51IGNvbmZpZ3VyYXRpb24gKi9cbiAgY2VsbEJ1YmJsZU1lbnU/OiBBdGVDZWxsQnViYmxlTWVudUNvbmZpZztcbiAgLyoqIFNsYXNoIGNvbW1hbmRzIGNvbmZpZ3VyYXRpb24gKC8pICovXG4gIHNsYXNoQ29tbWFuZHM/OiBBdGVTbGFzaENvbW1hbmRzQ29uZmlnO1xuICAvKiogVGFibGUgb2YgQ29udGVudHMgY29uZmlndXJhdGlvbiAqL1xuICB0YWJsZU9mQ29udGVudHM/OiBBdGVUb2NDb25maWc7XG4gIC8qKiBJZiB0cnVlLCBzaG93cyB0aGUgZmxvYXRpbmcgdG9vbGJhciBvbiBmb2N1cyAqL1xuICBmbG9hdGluZ1Rvb2xiYXI/OiBib29sZWFuO1xuXG4gIC8vIC0tLSA0LiBFeHRlcm5hbCBNb2R1bGVzIC0tLVxuXG4gIC8qKiBUZWNobmljYWwgY29uZmlndXJhdGlvbiBmb3IgaW1hZ2UgdXBsb2FkcyAqL1xuICBpbWFnZVVwbG9hZD86IEF0ZUltYWdlVXBsb2FkQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIEFuZ3VsYXIgY29tcG9uZW50cyB0byBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyIGFzIGludGVyYWN0aXZlIGVkaXRvciBub2Rlcy5cbiAgICogVGhpcyBpcyB0aGUgcHJlZmVycmVkIHdheSB0byBleHRlbmQgdGhlIGVkaXRvciB3aXRoIGN1c3RvbSBBbmd1bGFyIGxvZ2ljLlxuICAgKi9cbiAgYW5ndWxhck5vZGVzPzogQXRlQW5ndWxhck5vZGVbXTtcblxuICAvLyAtLS0gNS4gTG93LWxldmVsICYgUmVhY3RpdmUgRXh0ZW5zaW9ucyAtLS1cblxuICAvKiogU3RhbmRhcmQgVGlwVGFwIGV4dGVuc2lvbnMgKE5vZGVzLCBNYXJrcywgb3IgUGx1Z2lucykgKi9cbiAgdGlwdGFwRXh0ZW5zaW9ucz86IChFeHRlbnNpb24gfCBOb2RlIHwgTWFyaylbXTtcbiAgLyoqIFJhdyBUaXBUYXAgZWRpdG9yIG9wdGlvbnMgKGUuZy4sIGVuYWJsZUlucHV0UnVsZXMsIGluamVjdENTUywgZXRjLikgKi9cbiAgdGlwdGFwT3B0aW9ucz86IFBhcnRpYWw8RWRpdG9yT3B0aW9ucz47XG4gIC8qKiBSZWFjdGl2ZSBzdGF0ZSBjYWxjdWxhdG9ycyB0byBleHRlbmQgdGhlIGVkaXRvcidzIGxpdmUgc3RhdGUgKi9cbiAgc3RhdGVDYWxjdWxhdG9ycz86IEF0ZVN0YXRlQ2FsY3VsYXRvcltdO1xuICAvKipcbiAgICogRnVsbHkgY3VzdG9tIHNsYXNoIGNvbW1hbmRzIGNvbmZpZ3VyYXRpb24uXG4gICAqIFdoZW4gcHJvdmlkZWQsIGl0IHJlcGxhY2VzIHRoZSBkZWZhdWx0IGdyb3VwcyBiYXNlZCBvbiB0b29sYmFyIHRvZ2dsZXMuXG4gICAqL1xuICBjdXN0b21TbGFzaENvbW1hbmRzPzogQXRlQ3VzdG9tU2xhc2hDb21tYW5kcztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXRvYy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL21vZGVscy9hdGUtdG9jLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZpc3VhbCB2YXJpYW50cyBmb3IgVGFibGUgb2YgQ29udGVudHNcbiAqL1xuZXhwb3J0IHR5cGUgQXRlVG9jVmFyaWFudCA9IFwiY2FyZFwiIHwgXCJ0cmFuc3BhcmVudFwiIHwgXCJtaW5pbWFsXCI7XG5cbi8qKlxuICogSXRlbSBzdHJ1Y3R1cmUgZXh0cmFjdGVkIGJ5IFRhYmxlIG9mIENvbnRlbnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRlVG9jSXRlbSB7XG4gIHRleHQ6IHN0cmluZztcbiAgbGV2ZWw6IG51bWJlcjtcbiAgcG9zOiBudW1iZXI7XG4gIGlkOiBzdHJpbmc7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFRhYmxlIG9mIENvbnRlbnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRlVG9jQ29uZmlnIHtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIGZsb2F0aW5nPzogYm9vbGVhbjtcbiAgcG9zaXRpb24/OiBcImxlZnRcIiB8IFwicmlnaHRcIjtcbiAgdmFyaWFudD86IEF0ZVRvY1ZhcmlhbnQ7XG4gIGhvdmVyRXhwYW5kPzogYm9vbGVhbjtcbiAgc2hvd1RpdGxlPzogYm9vbGVhbjtcbiAgbWF4RGVwdGg/OiBudW1iZXI7XG59XG4iXX0=
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -32,9 +32,11 @@ export * from "./lib/models/ate-image.model";
|
|
|
32
32
|
export * from "./lib/models/ate-bubble-menu.model";
|
|
33
33
|
export * from "./lib/models/ate-editor-config.model";
|
|
34
34
|
export * from "./lib/models/ate-slash-command.model";
|
|
35
|
+
export * from "./lib/models/ate-toc.model";
|
|
35
36
|
// Default configurations
|
|
36
37
|
export * from "./lib/config/ate-editor.config";
|
|
37
38
|
export * from "./lib/config/ate-global-config.token";
|
|
39
|
+
export * from "./lib/config/ate-toc.config";
|
|
38
40
|
// Utility functions for slash commands
|
|
39
41
|
export * from "./lib/config/ate-slash-commands.config";
|
|
40
42
|
// Angular NodeView Integration
|
|
@@ -42,4 +44,4 @@ export { AteAngularNodeView } from "./lib/node-view/ate-angular-node-view";
|
|
|
42
44
|
export { AteNodeViewRenderer } from "./lib/node-view/ate-node-view.renderer";
|
|
43
45
|
export { createAngularComponentExtension } from "./lib/node-view/ate-node-view.factory";
|
|
44
46
|
export { registerAngularComponent } from "./lib/node-view/ate-register-angular-component";
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILDRCQUE0QjtBQUM1QixjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzNJLGNBQWMsMkJBQTJCLENBQUM7QUFFMUMsYUFBYTtBQUNiLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyx3Q0FBd0MsQ0FBQztBQUV2RCxXQUFXO0FBQ1gsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDZCQUE2QixDQUFDO0FBRTVDLHFEQUFxRDtBQUNyRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLG1EQUFtRCxDQUFDO0FBRWxFLHlDQUF5QztBQUN6QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyx5QkFBeUI7QUFDekIsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsNkJBQTZCLENBQUM7QUFFNUMsdUNBQXVDO0FBQ3ZDLGNBQWMsd0NBQXdDLENBQUM7QUFLdkQsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB0aXB0YXAtZWRpdG9yXG4gKi9cblxuLy8gTWFpbiBjb21wb25lbnQgJiBQcm92aWRlclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvZWRpdG9yL2FuZ3VsYXItdGlwdGFwLWVkaXRvci5jb21wb25lbnRcIjtcbmV4cG9ydCB7IEF0ZVRhYmxlT2ZDb250ZW50c0NvbXBvbmVudCB9IGZyb20gXCIuL2xpYi9jb21wb25lbnRzL3RhYmxlLW9mLWNvbnRlbnRzL2F0ZS10YWJsZS1vZi1jb250ZW50cy5jb21wb25lbnRcIjtcbmV4cG9ydCB7IEF0ZVRvY05vZGVDb21wb25lbnQsIEF0ZVRvY05vZGVPcHRpb25zLCBnZXRBdGVUb2NOb2RlRXh0ZW5zaW9uIH0gZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvdGFibGUtb2YtY29udGVudHMvYXRlLXRvYy1ub2RlLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2F0ZS1lZGl0b3IucHJvdmlkZXJcIjtcblxuLy8gRGlyZWN0aXZlc1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2RpcmVjdGl2ZXMvYXRlLW5vb3AtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvZGlyZWN0aXZlcy9hdGUtdG9vbHRpcC5kaXJlY3RpdmVcIjtcblxuLy8gU2VydmljZXNcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9zZXJ2aWNlcy9hdGUtaTE4bi5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2VydmljZXMvYXRlLWVkaXRvci1jb21tYW5kcy5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2VydmljZXMvYXRlLWltYWdlLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9zZXJ2aWNlcy9hdGUtY29sb3ItcGlja2VyLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9zZXJ2aWNlcy9hdGUtbGluay5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2VydmljZXMvYXRlLWV4cG9ydC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2VydmljZXMvYXRlLWVkaXRvci1yZWdpc3RyeS5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvbW9kZWxzL2F0ZS1lZGl0b3ItcmVmXCI7XG5cbi8vIFN0YXRlICYgQ2FsY3VsYXRvcnMgKEVzc2VudGlhbCBmb3IgY3VzdG9tIHBsdWdpbnMpXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvbW9kZWxzL2F0ZS1lZGl0b3Itc3RhdGUubW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9leHRlbnNpb25zL2NhbGN1bGF0b3JzL2F0ZS1kaXNjb3ZlcnkuY2FsY3VsYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2V4dGVuc2lvbnMvY2FsY3VsYXRvcnMvYXRlLWltYWdlLmNhbGN1bGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9leHRlbnNpb25zL2NhbGN1bGF0b3JzL2F0ZS1tYXJrcy5jYWxjdWxhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvZXh0ZW5zaW9ucy9jYWxjdWxhdG9ycy9hdGUtc2VsZWN0aW9uLmNhbGN1bGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9leHRlbnNpb25zL2NhbGN1bGF0b3JzL2F0ZS1zdHJ1Y3R1cmUuY2FsY3VsYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2V4dGVuc2lvbnMvY2FsY3VsYXRvcnMvYXRlLXRhYmxlLmNhbGN1bGF0b3JcIjtcblxuLy8gVHlwZXMgYW5kIGludGVyZmFjZXMgZm9yIGNvbmZpZ3VyYXRpb25cbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9tb2RlbHMvYXRlLXRvb2xiYXIubW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9tb2RlbHMvYXRlLWltYWdlLm1vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvbW9kZWxzL2F0ZS1idWJibGUtbWVudS5tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL21vZGVscy9hdGUtZWRpdG9yLWNvbmZpZy5tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL21vZGVscy9hdGUtc2xhc2gtY29tbWFuZC5tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL21vZGVscy9hdGUtdG9jLm1vZGVsXCI7XG5cbi8vIERlZmF1bHQgY29uZmlndXJhdGlvbnNcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb25maWcvYXRlLWVkaXRvci5jb25maWdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb25maWcvYXRlLWdsb2JhbC1jb25maWcudG9rZW5cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb25maWcvYXRlLXRvYy5jb25maWdcIjtcblxuLy8gVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHNsYXNoIGNvbW1hbmRzXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29uZmlnL2F0ZS1zbGFzaC1jb21tYW5kcy5jb25maWdcIjtcblxuLy8gVHJhbnNsYXRpb25zXG5leHBvcnQgdHlwZSB7IFN1cHBvcnRlZExvY2FsZSB9IGZyb20gXCIuL2xpYi9pMThuL2F0ZVRyYW5zbGF0aW9uc01vZGVsXCI7XG5cbi8vIEFuZ3VsYXIgTm9kZVZpZXcgSW50ZWdyYXRpb25cbmV4cG9ydCB7IEF0ZUFuZ3VsYXJOb2RlVmlldyB9IGZyb20gXCIuL2xpYi9ub2RlLXZpZXcvYXRlLWFuZ3VsYXItbm9kZS12aWV3XCI7XG5leHBvcnQgeyBBdGVOb2RlVmlld1JlbmRlcmVyIH0gZnJvbSBcIi4vbGliL25vZGUtdmlldy9hdGUtbm9kZS12aWV3LnJlbmRlcmVyXCI7XG5leHBvcnQgeyBjcmVhdGVBbmd1bGFyQ29tcG9uZW50RXh0ZW5zaW9uIH0gZnJvbSBcIi4vbGliL25vZGUtdmlldy9hdGUtbm9kZS12aWV3LmZhY3RvcnlcIjtcbmV4cG9ydCB7IHJlZ2lzdGVyQW5ndWxhckNvbXBvbmVudCB9IGZyb20gXCIuL2xpYi9ub2RlLXZpZXcvYXRlLXJlZ2lzdGVyLWFuZ3VsYXItY29tcG9uZW50XCI7XG5cbi8vIE5vZGUgVmlldyBUeXBlcyAtIEF0ZUFuZ3VsYXJOb2RlIGlzIHRoZSBwcmltYXJ5IHB1YmxpYyB0eXBlXG5leHBvcnQgdHlwZSB7IEF0ZUFuZ3VsYXJOb2RlIH0gZnJvbSBcIi4vbGliL21vZGVscy9hdGUtZWRpdG9yLWNvbmZpZy5tb2RlbFwiO1xuLy8gQWR2YW5jZWQ6IExvdy1sZXZlbCBvcHRpb25zIGZvciBmdWxsIGNvbnRyb2wgb3ZlciBub2RlIHJlZ2lzdHJhdGlvblxuZXhwb3J0IHR5cGUge1xuICBSZWdpc3RlckFuZ3VsYXJDb21wb25lbnRPcHRpb25zLFxuICBBdGVDb21wb25lbnRSZW5kZXJPcHRpb25zLFxufSBmcm9tIFwiLi9saWIvbm9kZS12aWV3L2F0ZS1ub2RlLXZpZXcubW9kZWxzXCI7XG4iXX0=
|
|
@@ -2071,6 +2071,16 @@ class AteTableOfContentsComponent {
|
|
|
2071
2071
|
this.variant = input("minimal");
|
|
2072
2072
|
// Notion-style hover expansion (collapses text into dashes until hovered)
|
|
2073
2073
|
this.hoverExpand = input(true);
|
|
2074
|
+
// Maximum heading level depth to include (1-6, default: 6)
|
|
2075
|
+
this.maxDepth = input(6, {
|
|
2076
|
+
transform: (v) => {
|
|
2077
|
+
const parsed = typeof v === "string" ? parseInt(v, 10) : v;
|
|
2078
|
+
if (isNaN(parsed)) {
|
|
2079
|
+
return 6;
|
|
2080
|
+
}
|
|
2081
|
+
return Math.min(Math.max(1, parsed), 6);
|
|
2082
|
+
},
|
|
2083
|
+
});
|
|
2074
2084
|
this.registry = inject(AteEditorRegistry);
|
|
2075
2085
|
this.i18n = inject(AteI18nService);
|
|
2076
2086
|
// Computed header title with fallback to i18n
|
|
@@ -2184,7 +2194,8 @@ class AteTableOfContentsComponent {
|
|
|
2184
2194
|
if (node.type.name === "heading") {
|
|
2185
2195
|
const text = node.textContent.trim();
|
|
2186
2196
|
const level = node.attrs["level"] || 1;
|
|
2187
|
-
|
|
2197
|
+
const maxDepthLevel = this.maxDepth();
|
|
2198
|
+
if (text && level <= maxDepthLevel) {
|
|
2188
2199
|
nextItems.push({
|
|
2189
2200
|
text,
|
|
2190
2201
|
level,
|
|
@@ -2258,7 +2269,7 @@ class AteTableOfContentsComponent {
|
|
|
2258
2269
|
});
|
|
2259
2270
|
}
|
|
2260
2271
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteTableOfContentsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2261
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AteTableOfContentsComponent, isStandalone: true, selector: "ate-table-of-contents", inputs: { editor: { classPropertyName: "editor", publicName: "editor", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, showTitle: { classPropertyName: "showTitle", publicName: "showTitle", isSignal: true, isRequired: false, transformFunction: null }, floating: { classPropertyName: "floating", publicName: "floating", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, hoverExpand: { classPropertyName: "hoverExpand", publicName: "hoverExpand", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:scroll": "onScroll()", "window:resize": "onScroll()" } }, ngImport: i0, template: `
|
|
2272
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AteTableOfContentsComponent, isStandalone: true, selector: "ate-table-of-contents", inputs: { editor: { classPropertyName: "editor", publicName: "editor", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, showTitle: { classPropertyName: "showTitle", publicName: "showTitle", isSignal: true, isRequired: false, transformFunction: null }, floating: { classPropertyName: "floating", publicName: "floating", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, hoverExpand: { classPropertyName: "hoverExpand", publicName: "hoverExpand", isSignal: true, isRequired: false, transformFunction: null }, maxDepth: { classPropertyName: "maxDepth", publicName: "maxDepth", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:scroll": "onScroll()", "window:resize": "onScroll()" } }, ngImport: i0, template: `
|
|
2262
2273
|
<div
|
|
2263
2274
|
class="ate-toc-wrapper"
|
|
2264
2275
|
[class.ate-toc-floating]="floating()"
|
|
@@ -2402,9 +2413,10 @@ class AteTocNodeComponent extends AteAngularNodeView {
|
|
|
2402
2413
|
[editor]="editor()"
|
|
2403
2414
|
[floating]="false"
|
|
2404
2415
|
[variant]="node().attrs['variant'] || 'minimal'"
|
|
2405
|
-
[showTitle]="node().attrs['showTitle'] !== false"
|
|
2416
|
+
[showTitle]="node().attrs['showTitle'] !== false"
|
|
2417
|
+
[maxDepth]="node().attrs['maxDepth'] || 6" />
|
|
2406
2418
|
</div>
|
|
2407
|
-
`, isInline: true, styles: [".ate-toc-node-wrapper{margin:1rem 0;-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "component", type: AteTableOfContentsComponent, selector: "ate-table-of-contents", inputs: ["editor", "title", "showTitle", "floating", "position", "variant", "hoverExpand"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2419
|
+
`, isInline: true, styles: [".ate-toc-node-wrapper{margin:1rem 0;-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "component", type: AteTableOfContentsComponent, selector: "ate-table-of-contents", inputs: ["editor", "title", "showTitle", "floating", "position", "variant", "hoverExpand", "maxDepth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2408
2420
|
}
|
|
2409
2421
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteTocNodeComponent, decorators: [{
|
|
2410
2422
|
type: Component,
|
|
@@ -2414,7 +2426,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
2414
2426
|
[editor]="editor()"
|
|
2415
2427
|
[floating]="false"
|
|
2416
2428
|
[variant]="node().attrs['variant'] || 'minimal'"
|
|
2417
|
-
[showTitle]="node().attrs['showTitle'] !== false"
|
|
2429
|
+
[showTitle]="node().attrs['showTitle'] !== false"
|
|
2430
|
+
[maxDepth]="node().attrs['maxDepth'] || 6" />
|
|
2418
2431
|
</div>
|
|
2419
2432
|
`, styles: [".ate-toc-node-wrapper{margin:1rem 0;-webkit-user-select:none;user-select:none}\n"] }]
|
|
2420
2433
|
}] });
|
|
@@ -2433,6 +2446,9 @@ const AteTocNodeOptions = {
|
|
|
2433
2446
|
showTitle: {
|
|
2434
2447
|
default: true,
|
|
2435
2448
|
},
|
|
2449
|
+
maxDepth: {
|
|
2450
|
+
default: 6,
|
|
2451
|
+
},
|
|
2436
2452
|
},
|
|
2437
2453
|
};
|
|
2438
2454
|
/**
|
|
@@ -9436,6 +9452,19 @@ const ATE_TOOLBAR_KEYS = [
|
|
|
9436
9452
|
"separator",
|
|
9437
9453
|
];
|
|
9438
9454
|
|
|
9455
|
+
/**
|
|
9456
|
+
* Default Table of Contents configuration
|
|
9457
|
+
*/
|
|
9458
|
+
const ATE_DEFAULT_TOC_CONFIG = {
|
|
9459
|
+
enabled: true,
|
|
9460
|
+
floating: true,
|
|
9461
|
+
position: "right",
|
|
9462
|
+
variant: "minimal",
|
|
9463
|
+
hoverExpand: true,
|
|
9464
|
+
showTitle: true,
|
|
9465
|
+
maxDepth: 6,
|
|
9466
|
+
};
|
|
9467
|
+
|
|
9439
9468
|
/*
|
|
9440
9469
|
* Public API Surface of tiptap-editor
|
|
9441
9470
|
*/
|
|
@@ -9445,5 +9474,5 @@ const ATE_TOOLBAR_KEYS = [
|
|
|
9445
9474
|
* Generated bundle index. Do not edit.
|
|
9446
9475
|
*/
|
|
9447
9476
|
|
|
9448
|
-
export { ATE_BUBBLE_MENU_KEYS, ATE_CELL_BUBBLE_MENU_KEYS, ATE_DEFAULT_BUBBLE_MENU_CONFIG, ATE_DEFAULT_CELL_MENU_CONFIG, ATE_DEFAULT_CONFIG, ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG, ATE_DEFAULT_IMAGE_UPLOAD_CONFIG, ATE_DEFAULT_SLASH_COMMANDS_CONFIG, ATE_DEFAULT_TABLE_MENU_CONFIG, ATE_DEFAULT_TOOLBAR_CONFIG, ATE_GLOBAL_CONFIG, ATE_IMAGE_BUBBLE_MENU_KEYS, ATE_INITIAL_EDITOR_STATE, ATE_SLASH_COMMAND_KEYS, ATE_TABLE_BUBBLE_MENU_KEYS, ATE_TOOLBAR_KEYS, AngularTiptapEditorComponent, AteAngularNodeView, AteColorPickerService, AteDiscoveryCalculator, AteEditorCommandsService, AteEditorRef, AteEditorRegistry, AteExportService, AteI18nService, AteImageCalculator, AteImageService, AteLinkService, AteMarksCalculator, AteNodeViewRenderer, AteNoopValueAccessorDirective, AteSelectionCalculator, AteStructureCalculator, AteTableCalculator, AteTableOfContentsComponent, AteTocNodeComponent, AteTocNodeOptions, AteTooltipDirective, createAngularComponentExtension, createDefaultSlashCommands, filterSlashCommands, getAteTocNodeExtension, provideAteEditor, registerAngularComponent };
|
|
9477
|
+
export { ATE_BUBBLE_MENU_KEYS, ATE_CELL_BUBBLE_MENU_KEYS, ATE_DEFAULT_BUBBLE_MENU_CONFIG, ATE_DEFAULT_CELL_MENU_CONFIG, ATE_DEFAULT_CONFIG, ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG, ATE_DEFAULT_IMAGE_UPLOAD_CONFIG, ATE_DEFAULT_SLASH_COMMANDS_CONFIG, ATE_DEFAULT_TABLE_MENU_CONFIG, ATE_DEFAULT_TOC_CONFIG, ATE_DEFAULT_TOOLBAR_CONFIG, ATE_GLOBAL_CONFIG, ATE_IMAGE_BUBBLE_MENU_KEYS, ATE_INITIAL_EDITOR_STATE, ATE_SLASH_COMMAND_KEYS, ATE_TABLE_BUBBLE_MENU_KEYS, ATE_TOOLBAR_KEYS, AngularTiptapEditorComponent, AteAngularNodeView, AteColorPickerService, AteDiscoveryCalculator, AteEditorCommandsService, AteEditorRef, AteEditorRegistry, AteExportService, AteI18nService, AteImageCalculator, AteImageService, AteLinkService, AteMarksCalculator, AteNodeViewRenderer, AteNoopValueAccessorDirective, AteSelectionCalculator, AteStructureCalculator, AteTableCalculator, AteTableOfContentsComponent, AteTocNodeComponent, AteTocNodeOptions, AteTooltipDirective, createAngularComponentExtension, createDefaultSlashCommands, filterSlashCommands, getAteTocNodeExtension, provideAteEditor, registerAngularComponent };
|
|
9449
9478
|
//# sourceMappingURL=flogeez-angular-tiptap-editor.mjs.map
|