@covalent/flavored-markdown 9.1.2 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,58 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@angular/material/list";
5
- import * as i3 from "@angular/material/divider";
6
- function TdFlavoredListComponent_ng_template_1_p_3_Template(rf, ctx) { if (rf & 1) {
7
- i0.ɵɵelementStart(0, "p", 4);
8
- i0.ɵɵtext(1);
9
- i0.ɵɵelementEnd();
10
- } if (rf & 2) {
11
- const subline_r1 = ctx.$implicit;
12
- i0.ɵɵadvance();
13
- i0.ɵɵtextInterpolate1(" ", subline_r1, " ");
14
- } }
15
- function TdFlavoredListComponent_ng_template_1_mat_divider_4_Template(rf, ctx) { if (rf & 1) {
16
- i0.ɵɵelement(0, "mat-divider");
17
- } }
18
- function TdFlavoredListComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
19
- i0.ɵɵelementStart(0, "mat-list-item")(1, "h4", 1);
20
- i0.ɵɵtext(2);
21
- i0.ɵɵelementEnd();
22
- i0.ɵɵtemplate(3, TdFlavoredListComponent_ng_template_1_p_3_Template, 2, 1, "p", 2);
23
- i0.ɵɵelementEnd();
24
- i0.ɵɵtemplate(4, TdFlavoredListComponent_ng_template_1_mat_divider_4_Template, 1, 0, "mat-divider", 3);
25
- } if (rf & 2) {
26
- const line_r2 = ctx.$implicit;
27
- const last_r3 = ctx.last;
28
- i0.ɵɵadvance(2);
29
- i0.ɵɵtextInterpolate1(" ", line_r2.line, " ");
30
- i0.ɵɵadvance();
31
- i0.ɵɵproperty("ngForOf", line_r2.sublines);
32
- i0.ɵɵadvance();
33
- i0.ɵɵproperty("ngIf", !last_r3);
34
- } }
35
- export class TdFlavoredListComponent {
36
- lines;
37
- dense = false;
38
- static ɵfac = function TdFlavoredListComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TdFlavoredListComponent)(); };
39
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TdFlavoredListComponent, selectors: [["td-cfm-list"]], inputs: { lines: "lines", dense: "dense" }, decls: 2, vars: 2, consts: [["ngFor", "", 3, "ngForOf"], ["matListItemTitle", ""], ["matListItemLine", "", 4, "ngFor", "ngForOf"], [4, "ngIf"], ["matListItemLine", ""]], template: function TdFlavoredListComponent_Template(rf, ctx) { if (rf & 1) {
40
- i0.ɵɵelementStart(0, "mat-list");
41
- i0.ɵɵtemplate(1, TdFlavoredListComponent_ng_template_1_Template, 5, 3, "ng-template", 0);
42
- i0.ɵɵelementEnd();
43
- } if (rf & 2) {
44
- i0.ɵɵattribute("dense", ctx.dense ? true : null);
45
- i0.ɵɵadvance();
46
- i0.ɵɵproperty("ngForOf", ctx.lines);
47
- } }, dependencies: [i1.NgForOf, i1.NgIf, i2.MatList, i2.MatListItem, i3.MatDivider, i2.MatListItemLine, i2.MatListItemTitle] });
48
- }
49
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TdFlavoredListComponent, [{
50
- type: Component,
51
- args: [{ selector: 'td-cfm-list', template: "<mat-list [attr.dense]=\"dense ? true : null\">\n <ng-template let-line let-last=\"last\" ngFor [ngForOf]=\"lines\">\n <mat-list-item>\n <h4 matListItemTitle>\n {{ line.line }}\n </h4>\n <p *ngFor=\"let subline of line.sublines\" matListItemLine>\n {{ subline }}\n </p>\n </mat-list-item>\n <mat-divider *ngIf=\"!last\"></mat-divider>\n </ng-template>\n</mat-list>\n" }]
52
- }], null, { lines: [{
53
- type: Input
54
- }], dense: [{
55
- type: Input
56
- }] }); })();
57
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TdFlavoredListComponent, { className: "TdFlavoredListComponent", filePath: "lib/cfm-list/cfm-list.component.ts", lineNumber: 13 }); })();
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZtLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tYXJrZG93bi1mbGF2b3JlZC9zcmMvbGliL2NmbS1saXN0L2NmbS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWFya2Rvd24tZmxhdm9yZWQvc3JjL2xpYi9jZm0tbGlzdC9jZm0tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0lDTTNDLDRCQUF5RDtJQUN2RCxZQUNGO0lBQUEsaUJBQUk7OztJQURGLGNBQ0Y7SUFERSwyQ0FDRjs7O0lBRUYsOEJBQXlDOzs7SUFQdkMsQUFERixxQ0FBZSxZQUNRO0lBQ25CLFlBQ0Y7SUFBQSxpQkFBSztJQUNMLGtGQUF5RDtJQUczRCxpQkFBZ0I7SUFDaEIsc0dBQTJCOzs7O0lBTnZCLGVBQ0Y7SUFERSw2Q0FDRjtJQUN1QixjQUFnQjtJQUFoQiwwQ0FBZ0I7SUFJM0IsY0FBVztJQUFYLCtCQUFXOztBREU3QixNQUFNLE9BQU8sdUJBQXVCO0lBQ3pCLEtBQUssQ0FBdUI7SUFDNUIsS0FBSyxHQUFHLEtBQUssQ0FBQztpSEFGWix1QkFBdUI7NkRBQXZCLHVCQUF1QjtZQ1pwQyxnQ0FBNkM7WUFDM0Msd0ZBQThEO1lBV2hFLGlCQUFXOzs7WUFYbUMsY0FBaUI7WUFBakIsbUNBQWlCOzs7aUZEV2xELHVCQUF1QjtjQUxuQyxTQUFTOzJCQUNFLGFBQWE7Z0JBS2QsS0FBSztrQkFBYixLQUFLO1lBQ0csS0FBSztrQkFBYixLQUFLOztrRkFGSyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZsYXZvcmVkTGlzdEl0ZW0ge1xuICBsaW5lOiBzdHJpbmc7XG4gIHN1YmxpbmVzPzogc3RyaW5nW107XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RkLWNmbS1saXN0JyxcbiAgc3R5bGVVcmxzOiBbJy4vY2ZtLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NmbS1saXN0LmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgVGRGbGF2b3JlZExpc3RDb21wb25lbnQge1xuICBASW5wdXQoKSBsaW5lcyE6IElGbGF2b3JlZExpc3RJdGVtW107XG4gIEBJbnB1dCgpIGRlbnNlID0gZmFsc2U7XG59XG4iLCI8bWF0LWxpc3QgW2F0dHIuZGVuc2VdPVwiZGVuc2UgPyB0cnVlIDogbnVsbFwiPlxuICA8bmctdGVtcGxhdGUgbGV0LWxpbmUgbGV0LWxhc3Q9XCJsYXN0XCIgbmdGb3IgW25nRm9yT2ZdPVwibGluZXNcIj5cbiAgICA8bWF0LWxpc3QtaXRlbT5cbiAgICAgIDxoNCBtYXRMaXN0SXRlbVRpdGxlPlxuICAgICAgICB7eyBsaW5lLmxpbmUgfX1cbiAgICAgIDwvaDQ+XG4gICAgICA8cCAqbmdGb3I9XCJsZXQgc3VibGluZSBvZiBsaW5lLnN1YmxpbmVzXCIgbWF0TGlzdEl0ZW1MaW5lPlxuICAgICAgICB7eyBzdWJsaW5lIH19XG4gICAgICA8L3A+XG4gICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cIiFsYXN0XCI+PC9tYXQtZGl2aWRlcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbWF0LWxpc3Q+XG4iXX0=
@@ -1,129 +0,0 @@
1
- import { Component, Input, ChangeDetectorRef, Output, EventEmitter, ChangeDetectionStrategy, } from '@angular/core';
2
- import { TdMarkdownLoaderService } from '@covalent/markdown';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@covalent/markdown";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "@angular/material/progress-bar";
7
- import * as i4 from "../flavored-markdown.component";
8
- function TdFlavoredMarkdownLoaderComponent_mat_progress_bar_0_Template(rf, ctx) { if (rf & 1) {
9
- i0.ɵɵelement(0, "mat-progress-bar", 2);
10
- } if (rf & 2) {
11
- i0.ɵɵproperty("ngClass", "delay");
12
- } }
13
- function TdFlavoredMarkdownLoaderComponent_td_flavored_markdown_1_Template(rf, ctx) { if (rf & 1) {
14
- const _r1 = i0.ɵɵgetCurrentView();
15
- i0.ɵɵelementStart(0, "td-flavored-markdown", 3);
16
- i0.ɵɵlistener("contentReady", function TdFlavoredMarkdownLoaderComponent_td_flavored_markdown_1_Template_td_flavored_markdown_contentReady_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.contentReady.emit()); })("buttonClicked", function TdFlavoredMarkdownLoaderComponent_td_flavored_markdown_1_Template_td_flavored_markdown_buttonClicked_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.buttonClicked.emit($event)); });
17
- i0.ɵɵelementEnd();
18
- } if (rf & 2) {
19
- let tmp_2_0;
20
- let tmp_3_0;
21
- const ctx_r1 = i0.ɵɵnextContext();
22
- i0.ɵɵproperty("content", ctx_r1.content)("hostedUrl", (tmp_2_0 = ctx_r1.url) !== null && tmp_2_0 !== undefined ? tmp_2_0 : "")("anchor", (tmp_3_0 = ctx_r1.anchor) !== null && tmp_3_0 !== undefined ? tmp_3_0 : "")("copyCodeToClipboard", ctx_r1.copyCodeToClipboard)("copyCodeTooltips", ctx_r1.copyCodeTooltips)("useCfmList", ctx_r1.useCfmList);
23
- } }
24
- // TODO: make a td-markdown-loader component
25
- export class TdFlavoredMarkdownLoaderComponent {
26
- _changeDetectorRef;
27
- _markdownUrlLoaderService;
28
- /**
29
- * url: string
30
- * The url of the markdown file.
31
- */
32
- url;
33
- /**
34
- * httpOptions: object
35
- * HTTP options that can be part of the request.
36
- */
37
- httpOptions;
38
- /**
39
- * anchor: string
40
- * Anchor to jump to.
41
- */
42
- anchor;
43
- /**
44
- * copyCodeToClipboard?: boolean
45
- *
46
- * Display copy button on code snippets to copy code to clipboard.
47
- *
48
- */
49
- copyCodeToClipboard = false;
50
- /**
51
- * copyCodeTooltips?: ICopyCodeTooltips
52
- *
53
- * Tooltips for copy button to copy and upon copying.
54
- */
55
- copyCodeTooltips = {};
56
- /**
57
- * useCfmList?: boolean = false;
58
- * Use CFM list component instead of vanilla markdown list. Used in covalent documentation app.
59
- */
60
- useCfmList = false;
61
- /**
62
- * contentReady: void
63
- * Emitted when markdown rendering is finished.
64
- */
65
- contentReady = new EventEmitter();
66
- /**
67
- * loadFailed: Error
68
- * Emitted when loading of markdown file fails.
69
- */
70
- loadFailed = new EventEmitter();
71
- buttonClicked = new EventEmitter();
72
- content;
73
- loading = true;
74
- constructor(_changeDetectorRef, _markdownUrlLoaderService) {
75
- this._changeDetectorRef = _changeDetectorRef;
76
- this._markdownUrlLoaderService = _markdownUrlLoaderService;
77
- }
78
- ngOnChanges(changes) {
79
- if (changes['url'] || changes['httpOptions']) {
80
- this.loadMarkdown();
81
- }
82
- }
83
- async loadMarkdown() {
84
- this.loading = true;
85
- this._changeDetectorRef.markForCheck();
86
- try {
87
- this.content = await this._markdownUrlLoaderService.load(this.url ?? '', this.httpOptions);
88
- }
89
- catch (error) {
90
- this.loadFailed.emit(error);
91
- }
92
- finally {
93
- this.loading = false;
94
- this._changeDetectorRef.markForCheck();
95
- }
96
- }
97
- static ɵfac = function TdFlavoredMarkdownLoaderComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TdFlavoredMarkdownLoaderComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.TdMarkdownLoaderService)); };
98
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TdFlavoredMarkdownLoaderComponent, selectors: [["td-flavored-markdown-loader"]], inputs: { url: "url", httpOptions: "httpOptions", anchor: "anchor", copyCodeToClipboard: "copyCodeToClipboard", copyCodeTooltips: "copyCodeTooltips", useCfmList: "useCfmList" }, outputs: { contentReady: "contentReady", loadFailed: "loadFailed", buttonClicked: "buttonClicked" }, features: [i0.ɵɵNgOnChangesFeature], decls: 2, vars: 2, consts: [["mode", "indeterminate", "color", "accent", "class", "sticky", 3, "ngClass", 4, "ngIf"], [3, "content", "hostedUrl", "anchor", "copyCodeToClipboard", "copyCodeTooltips", "useCfmList", "contentReady", "buttonClicked", 4, "ngIf"], ["mode", "indeterminate", "color", "accent", 1, "sticky", 3, "ngClass"], [3, "contentReady", "buttonClicked", "content", "hostedUrl", "anchor", "copyCodeToClipboard", "copyCodeTooltips", "useCfmList"]], template: function TdFlavoredMarkdownLoaderComponent_Template(rf, ctx) { if (rf & 1) {
99
- i0.ɵɵtemplate(0, TdFlavoredMarkdownLoaderComponent_mat_progress_bar_0_Template, 1, 1, "mat-progress-bar", 0)(1, TdFlavoredMarkdownLoaderComponent_td_flavored_markdown_1_Template, 1, 6, "td-flavored-markdown", 1);
100
- } if (rf & 2) {
101
- i0.ɵɵproperty("ngIf", ctx.loading);
102
- i0.ɵɵadvance();
103
- i0.ɵɵproperty("ngIf", !ctx.loading);
104
- } }, dependencies: [i2.NgClass, i2.NgIf, i3.MatProgressBar, i4.TdFlavoredMarkdownComponent], styles: ["[_nghost-%COMP%]{display:block}.sticky[_ngcontent-%COMP%]{position:absolute;top:0}.delay[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_delay-animation;animation-duration:.6s}@keyframes _ngcontent-%COMP%_delay-animation{0%{opacity:0}99%{opacity:0}to{opacity:1}}"], changeDetection: 0 });
105
- }
106
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TdFlavoredMarkdownLoaderComponent, [{
107
- type: Component,
108
- args: [{ selector: 'td-flavored-markdown-loader', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-progress-bar\n [ngClass]=\"'delay'\"\n *ngIf=\"loading\"\n mode=\"indeterminate\"\n color=\"accent\"\n class=\"sticky\"\n></mat-progress-bar>\n<td-flavored-markdown\n *ngIf=\"!loading\"\n [content]=\"content\"\n [hostedUrl]=\"url ?? ''\"\n [anchor]=\"anchor ?? ''\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n [useCfmList]=\"useCfmList\"\n (contentReady)=\"contentReady.emit()\"\n (buttonClicked)=\"buttonClicked.emit($event)\"\n></td-flavored-markdown>\n", styles: [":host{display:block}.sticky{position:absolute;top:0}.delay{animation:delay-animation;animation-duration:.6s}@keyframes delay-animation{0%{opacity:0}99%{opacity:0}to{opacity:1}}\n"] }]
109
- }], () => [{ type: i0.ChangeDetectorRef }, { type: i1.TdMarkdownLoaderService }], { url: [{
110
- type: Input
111
- }], httpOptions: [{
112
- type: Input
113
- }], anchor: [{
114
- type: Input
115
- }], copyCodeToClipboard: [{
116
- type: Input
117
- }], copyCodeTooltips: [{
118
- type: Input
119
- }], useCfmList: [{
120
- type: Input
121
- }], contentReady: [{
122
- type: Output
123
- }], loadFailed: [{
124
- type: Output
125
- }], buttonClicked: [{
126
- type: Output
127
- }] }); })();
128
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TdFlavoredMarkdownLoaderComponent, { className: "TdFlavoredMarkdownLoaderComponent", filePath: "lib/flavored-markdown-loader/flavored-markdown-loader.component.ts", lineNumber: 23 }); })();
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdm9yZWQtbWFya2Rvd24tbG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWFya2Rvd24tZmxhdm9yZWQvc3JjL2xpYi9mbGF2b3JlZC1tYXJrZG93bi1sb2FkZXIvZmxhdm9yZWQtbWFya2Rvd24tbG9hZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWFya2Rvd24tZmxhdm9yZWQvc3JjL2xpYi9mbGF2b3JlZC1tYXJrZG93bi1sb2FkZXIvZmxhdm9yZWQtbWFya2Rvd24tbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLGlCQUFpQixFQUdqQixNQUFNLEVBQ04sWUFBWSxFQUNaLHVCQUF1QixHQUN4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7OztJQ1Y3RCxzQ0FNb0I7O0lBTGxCLGlDQUFtQjs7OztJQU1yQiwrQ0FVQztJQURDLEFBREEsME9BQWdCLDBCQUFtQixLQUFDLHFPQUNuQixpQ0FBMEIsS0FBQztJQUM3QyxpQkFBdUI7Ozs7O0lBSHRCLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSx3Q0FBbUIsc0ZBQ0ksc0ZBQ0EsbURBQ29CLDZDQUNOLGlDQUNaOztBREEzQiw0Q0FBNEM7QUFRNUMsTUFBTSxPQUFPLGlDQUFpQztJQTJEbEM7SUFDQTtJQTNEVjs7O09BR0c7SUFDTSxHQUFHLENBQVU7SUFFdEI7OztPQUdHO0lBQ00sV0FBVyxDQUFVO0lBRTlCOzs7T0FHRztJQUNNLE1BQU0sQ0FBVTtJQUV6Qjs7Ozs7T0FLRztJQUNNLG1CQUFtQixHQUFJLEtBQUssQ0FBQztJQUV0Qzs7OztPQUlHO0lBQ00sZ0JBQWdCLEdBQXVCLEVBQUUsQ0FBQztJQUVuRDs7O09BR0c7SUFDTSxVQUFVLEdBQUksS0FBSyxDQUFDO0lBRTdCOzs7T0FHRztJQUNPLFlBQVksR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVoRTs7O09BR0c7SUFDTyxVQUFVLEdBQXdCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFckQsYUFBYSxHQUNyQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRXJCLE9BQU8sQ0FBVTtJQUNqQixPQUFPLEdBQUcsSUFBSSxDQUFDO0lBRWYsWUFDVSxrQkFBcUMsRUFDckMseUJBQWtEO1FBRGxELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUF5QjtJQUN6RCxDQUFDO0lBRUosV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FDdEQsSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FDakIsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBYyxDQUFDLENBQUM7UUFDdkMsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDOzJIQW5GVSxpQ0FBaUM7NkRBQWpDLGlDQUFpQztZQ2Y5QyxBQVBBLDRHQU1DLHVHQVdBOztZQWZFLGtDQUFhO1lBTWIsY0FBYztZQUFkLG1DQUFjOzs7aUZEY0osaUNBQWlDO2NBTjdDLFNBQVM7MkJBQ0UsNkJBQTZCLG1CQUd0Qix1QkFBdUIsQ0FBQyxNQUFNO3dGQU90QyxHQUFHO2tCQUFYLEtBQUs7WUFNRyxXQUFXO2tCQUFuQixLQUFLO1lBTUcsTUFBTTtrQkFBZCxLQUFLO1lBUUcsbUJBQW1CO2tCQUEzQixLQUFLO1lBT0csZ0JBQWdCO2tCQUF4QixLQUFLO1lBTUcsVUFBVTtrQkFBbEIsS0FBSztZQU1JLFlBQVk7a0JBQXJCLE1BQU07WUFNRyxVQUFVO2tCQUFuQixNQUFNO1lBRUcsYUFBYTtrQkFBdEIsTUFBTTs7a0ZBcERJLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZE1hcmtkb3duTG9hZGVyU2VydmljZSB9IGZyb20gJ0Bjb3ZhbGVudC9tYXJrZG93bic7XG5pbXBvcnQgeyBJVGRGbGF2b3JlZE1hcmtkb3duQnV0dG9uQ2xpY2tFdmVudCB9IGZyb20gJy4uL2ZsYXZvcmVkLW1hcmtkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJQ29weUNvZGVUb29sdGlwcyB9IGZyb20gJ0Bjb3ZhbGVudC9oaWdobGlnaHQnO1xuXG4vLyBUT0RPOiBtYWtlIGEgdGQtbWFya2Rvd24tbG9hZGVyIGNvbXBvbmVudFxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZC1mbGF2b3JlZC1tYXJrZG93bi1sb2FkZXInLFxuICBzdHlsZVVybHM6IFsnLi9mbGF2b3JlZC1tYXJrZG93bi1sb2FkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZsYXZvcmVkLW1hcmtkb3duLWxvYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUZEZsYXZvcmVkTWFya2Rvd25Mb2FkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKipcbiAgICogdXJsOiBzdHJpbmdcbiAgICogVGhlIHVybCBvZiB0aGUgbWFya2Rvd24gZmlsZS5cbiAgICovXG4gIEBJbnB1dCgpIHVybD86IHN0cmluZztcblxuICAvKipcbiAgICogaHR0cE9wdGlvbnM6IG9iamVjdFxuICAgKiBIVFRQIG9wdGlvbnMgdGhhdCBjYW4gYmUgcGFydCBvZiB0aGUgcmVxdWVzdC5cbiAgICovXG4gIEBJbnB1dCgpIGh0dHBPcHRpb25zPzogb2JqZWN0O1xuXG4gIC8qKlxuICAgKiBhbmNob3I6IHN0cmluZ1xuICAgKiBBbmNob3IgdG8ganVtcCB0by5cbiAgICovXG4gIEBJbnB1dCgpIGFuY2hvcj86IHN0cmluZztcblxuICAvKipcbiAgICogY29weUNvZGVUb0NsaXBib2FyZD86IGJvb2xlYW5cbiAgICpcbiAgICogRGlzcGxheSBjb3B5IGJ1dHRvbiBvbiBjb2RlIHNuaXBwZXRzIHRvIGNvcHkgY29kZSB0byBjbGlwYm9hcmQuXG4gICAqXG4gICAqL1xuICBASW5wdXQoKSBjb3B5Q29kZVRvQ2xpcGJvYXJkPyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBjb3B5Q29kZVRvb2x0aXBzPzogSUNvcHlDb2RlVG9vbHRpcHNcbiAgICpcbiAgICogVG9vbHRpcHMgZm9yIGNvcHkgYnV0dG9uIHRvIGNvcHkgYW5kIHVwb24gY29weWluZy5cbiAgICovXG4gIEBJbnB1dCgpIGNvcHlDb2RlVG9vbHRpcHM/OiBJQ29weUNvZGVUb29sdGlwcyA9IHt9O1xuXG4gIC8qKlxuICAgKiB1c2VDZm1MaXN0PzogYm9vbGVhbiA9IGZhbHNlO1xuICAgKiBVc2UgQ0ZNIGxpc3QgY29tcG9uZW50IGluc3RlYWQgb2YgdmFuaWxsYSBtYXJrZG93biBsaXN0LiBVc2VkIGluIGNvdmFsZW50IGRvY3VtZW50YXRpb24gYXBwLlxuICAgKi9cbiAgQElucHV0KCkgdXNlQ2ZtTGlzdD8gPSBmYWxzZTtcblxuICAvKipcbiAgICogY29udGVudFJlYWR5OiB2b2lkXG4gICAqIEVtaXR0ZWQgd2hlbiBtYXJrZG93biByZW5kZXJpbmcgaXMgZmluaXNoZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgY29udGVudFJlYWR5OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIGxvYWRGYWlsZWQ6IEVycm9yXG4gICAqIEVtaXR0ZWQgd2hlbiBsb2FkaW5nIG9mIG1hcmtkb3duIGZpbGUgZmFpbHMuXG4gICAqL1xuICBAT3V0cHV0KCkgbG9hZEZhaWxlZDogRXZlbnRFbWl0dGVyPEVycm9yPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPElUZEZsYXZvcmVkTWFya2Rvd25CdXR0b25DbGlja0V2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnRlbnQhOiBzdHJpbmc7XG4gIGxvYWRpbmcgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9tYXJrZG93blVybExvYWRlclNlcnZpY2U6IFRkTWFya2Rvd25Mb2FkZXJTZXJ2aWNlXG4gICkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3VybCddIHx8IGNoYW5nZXNbJ2h0dHBPcHRpb25zJ10pIHtcbiAgICAgIHRoaXMubG9hZE1hcmtkb3duKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZE1hcmtkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuY29udGVudCA9IGF3YWl0IHRoaXMuX21hcmtkb3duVXJsTG9hZGVyU2VydmljZS5sb2FkKFxuICAgICAgICB0aGlzLnVybCA/PyAnJyxcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5sb2FkRmFpbGVkLmVtaXQoZXJyb3IgYXMgRXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxufVxuIiwiPG1hdC1wcm9ncmVzcy1iYXJcbiAgW25nQ2xhc3NdPVwiJ2RlbGF5J1wiXG4gICpuZ0lmPVwibG9hZGluZ1wiXG4gIG1vZGU9XCJpbmRldGVybWluYXRlXCJcbiAgY29sb3I9XCJhY2NlbnRcIlxuICBjbGFzcz1cInN0aWNreVwiXG4+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuPHRkLWZsYXZvcmVkLW1hcmtkb3duXG4gICpuZ0lmPVwiIWxvYWRpbmdcIlxuICBbY29udGVudF09XCJjb250ZW50XCJcbiAgW2hvc3RlZFVybF09XCJ1cmwgPz8gJydcIlxuICBbYW5jaG9yXT1cImFuY2hvciA/PyAnJ1wiXG4gIFtjb3B5Q29kZVRvQ2xpcGJvYXJkXT1cImNvcHlDb2RlVG9DbGlwYm9hcmRcIlxuICBbY29weUNvZGVUb29sdGlwc109XCJjb3B5Q29kZVRvb2x0aXBzXCJcbiAgW3VzZUNmbUxpc3RdPVwidXNlQ2ZtTGlzdFwiXG4gIChjb250ZW50UmVhZHkpPVwiY29udGVudFJlYWR5LmVtaXQoKVwiXG4gIChidXR0b25DbGlja2VkKT1cImJ1dHRvbkNsaWNrZWQuZW1pdCgkZXZlbnQpXCJcbj48L3RkLWZsYXZvcmVkLW1hcmtkb3duPlxuIl19