@myrmidon/cadmus-part-codicology-decorations 0.0.2 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -50
- package/esm2020/lib/cadmus-part-codicology-decorations.module.mjs +5 -5
- package/esm2020/lib/cod-decoration/cod-decoration.component.mjs +5 -5
- package/esm2020/lib/cod-decoration-artist/cod-decoration-artist.component.mjs +5 -5
- package/esm2020/lib/cod-decoration-artist-style/cod-decoration-artist-style.component.mjs +5 -5
- package/esm2020/lib/cod-decoration-element/cod-decoration-element.component.mjs +51 -37
- package/esm2020/lib/cod-decorations-part/cod-decorations-part.component.mjs +5 -5
- package/esm2020/lib/cod-decorations-part-feature/cod-decorations-part-feature.component.mjs +5 -5
- package/esm2020/lib/cod-decorations-part-feature/edit-cod-decorations-part.query.mjs +3 -3
- package/esm2020/lib/cod-decorations-part-feature/edit-cod-decorations-part.service.mjs +3 -3
- package/esm2020/lib/cod-decorations-part-feature/edit-cod-decorations-part.store.mjs +3 -3
- package/esm2020/lib/text-or-entry-selector/text-or-entry-selector.component.mjs +5 -5
- package/esm2020/public-api.mjs +1 -1
- package/fesm2015/myrmidon-cadmus-part-codicology-decorations.mjs +88 -76
- package/fesm2015/myrmidon-cadmus-part-codicology-decorations.mjs.map +1 -1
- package/fesm2020/myrmidon-cadmus-part-codicology-decorations.mjs +88 -75
- package/fesm2020/myrmidon-cadmus-part-codicology-decorations.mjs.map +1 -1
- package/lib/cod-decoration-element/cod-decoration-element.component.d.ts +2 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
# CadmusPartCodicologyDecorations
|
|
2
|
-
|
|
3
|
-
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
|
|
4
|
-
|
|
5
|
-
Decoration was derived from Itinera decorations with these changes in the model:
|
|
6
|
-
|
|
7
|
-
- `CodDecorationArtist`: completely changed.
|
|
8
|
-
- `CodDecorationElement`:
|
|
9
|
-
- (+) `instanceCount`
|
|
10
|
-
- (/) `gildings`: string[] instead of gilding: string
|
|
11
|
-
- (/) `techniques`: string[] instead of technique: string
|
|
12
|
-
- (/) `tools`: string[] instead of tool: string
|
|
13
|
-
- (/) `positions`: string[] instead of position: string
|
|
14
|
-
- (X) `imageId` replaced with:
|
|
15
|
-
- (+) `images`: CodImage[]
|
|
16
|
-
- `CodDecoration`:
|
|
17
|
-
- (=) `id` renamed into `eid` and made optional
|
|
18
|
-
- (X) `date` and (X) `place` replaced with:
|
|
19
|
-
- (+) `chronotopes`
|
|
20
|
-
- (X) `artist` replaced with:
|
|
21
|
-
- (+) `artists`
|
|
22
|
-
|
|
23
|
-
This part editor has an adaptive UI, which changes according to parameters provided in its thesauri. The thesaurus with ID `cod-decoration-element-types` defines all the types of decoration elements (e.g. illustration, ornamentation, initials, etc.). The UI adapts to the selected element type.
|
|
24
|
-
|
|
25
|
-
This adaptation has different types:
|
|
26
|
-
|
|
27
|
-
- some thesauri lists get filtered according to the selected type. Filtering happens by virtue of a convention: all the IDs in the list starting with a prefix equal to the element type ID plus a dot are targeted to that specific type. So, if a type ID is `ill` for illustration, one of the dependent thesauri reporting the element's typologies has entries whose ID start with `ill.` and thus target only the illustration type. When a user selects the illustration type, the dependent thesaurus entries get filtered to show only those relevant for it. The dependent thesauri are:
|
|
28
|
-
- `cod-decoration-element-flags`
|
|
29
|
-
- `cod-decoration-element-colors`
|
|
30
|
-
- `cod-decoration-element-gildings`
|
|
31
|
-
- `cod-decoration-element-techniques`
|
|
32
|
-
- `cod-decoration-element-positions`
|
|
33
|
-
- `cod-decoration-element-tools`
|
|
34
|
-
- `cod-decoration-element-typologies`
|
|
35
|
-
|
|
36
|
-
- some controls get completely hidden. Which controls are to be hidden for which element type is defined in thesaurus `cod-decoration-type-hidden`, having an entry for each element type with the same ID; its value is a space-delimited list of control identifiers:
|
|
37
|
-
- `colors`
|
|
38
|
-
- `gildings`
|
|
39
|
-
- `lineHeight`
|
|
40
|
-
- `positions`
|
|
41
|
-
- `subject`
|
|
42
|
-
- `techniques`
|
|
43
|
-
- `textRelation`
|
|
44
|
-
- `tools`
|
|
45
|
-
|
|
46
|
-
- some lists may allow for user-defined (unbound) entries. A list allowing this contains a special entry with ID equal to the element type ID + `.-` and an empty value. This may happen for:
|
|
47
|
-
- gildings
|
|
48
|
-
- techniques
|
|
49
|
-
- positions
|
|
50
|
-
- tools
|
|
1
|
+
# CadmusPartCodicologyDecorations
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
|
|
4
|
+
|
|
5
|
+
Decoration was derived from Itinera decorations with these changes in the model:
|
|
6
|
+
|
|
7
|
+
- `CodDecorationArtist`: completely changed.
|
|
8
|
+
- `CodDecorationElement`:
|
|
9
|
+
- (+) `instanceCount`
|
|
10
|
+
- (/) `gildings`: string[] instead of gilding: string
|
|
11
|
+
- (/) `techniques`: string[] instead of technique: string
|
|
12
|
+
- (/) `tools`: string[] instead of tool: string
|
|
13
|
+
- (/) `positions`: string[] instead of position: string
|
|
14
|
+
- (X) `imageId` replaced with:
|
|
15
|
+
- (+) `images`: CodImage[]
|
|
16
|
+
- `CodDecoration`:
|
|
17
|
+
- (=) `id` renamed into `eid` and made optional
|
|
18
|
+
- (X) `date` and (X) `place` replaced with:
|
|
19
|
+
- (+) `chronotopes`
|
|
20
|
+
- (X) `artist` replaced with:
|
|
21
|
+
- (+) `artists`
|
|
22
|
+
|
|
23
|
+
This part editor has an adaptive UI, which changes according to parameters provided in its thesauri. The thesaurus with ID `cod-decoration-element-types` defines all the types of decoration elements (e.g. illustration, ornamentation, initials, etc.). The UI adapts to the selected element type.
|
|
24
|
+
|
|
25
|
+
This adaptation has different types:
|
|
26
|
+
|
|
27
|
+
- some thesauri lists get filtered according to the selected type. Filtering happens by virtue of a convention: all the IDs in the list starting with a prefix equal to the element type ID plus a dot are targeted to that specific type. So, if a type ID is `ill` for illustration, one of the dependent thesauri reporting the element's typologies has entries whose ID start with `ill.` and thus target only the illustration type. When a user selects the illustration type, the dependent thesaurus entries get filtered to show only those relevant for it. The dependent thesauri are:
|
|
28
|
+
- `cod-decoration-element-flags`
|
|
29
|
+
- `cod-decoration-element-colors`
|
|
30
|
+
- `cod-decoration-element-gildings`
|
|
31
|
+
- `cod-decoration-element-techniques`
|
|
32
|
+
- `cod-decoration-element-positions`
|
|
33
|
+
- `cod-decoration-element-tools`
|
|
34
|
+
- `cod-decoration-element-typologies`
|
|
35
|
+
|
|
36
|
+
- some controls get completely hidden. Which controls are to be hidden for which element type is defined in thesaurus `cod-decoration-type-hidden`, having an entry for each element type with the same ID; its value is a space-delimited list of control identifiers:
|
|
37
|
+
- `colors`
|
|
38
|
+
- `gildings`
|
|
39
|
+
- `lineHeight`
|
|
40
|
+
- `positions`
|
|
41
|
+
- `subject`
|
|
42
|
+
- `techniques`
|
|
43
|
+
- `textRelation`
|
|
44
|
+
- `tools`
|
|
45
|
+
|
|
46
|
+
- some lists may allow for user-defined (unbound) entries. A list allowing this contains a special entry with ID equal to the element type ID + `.-` and an empty value. This may happen for:
|
|
47
|
+
- gildings
|
|
48
|
+
- techniques
|
|
49
|
+
- positions
|
|
50
|
+
- tools
|
|
@@ -35,8 +35,8 @@ import { CodDecorationsPartFeatureComponent } from './cod-decorations-part-featu
|
|
|
35
35
|
import * as i0 from "@angular/core";
|
|
36
36
|
export class CadmusPartCodicologyDecorationsModule {
|
|
37
37
|
}
|
|
38
|
-
CadmusPartCodicologyDecorationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.
|
|
39
|
-
CadmusPartCodicologyDecorationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.
|
|
38
|
+
CadmusPartCodicologyDecorationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: CadmusPartCodicologyDecorationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
39
|
+
CadmusPartCodicologyDecorationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: CadmusPartCodicologyDecorationsModule, declarations: [CodDecorationElementComponent,
|
|
40
40
|
TextOrEntrySelectorComponent,
|
|
41
41
|
CodDecorationArtistStyleComponent,
|
|
42
42
|
CodDecorationArtistComponent,
|
|
@@ -79,7 +79,7 @@ CadmusPartCodicologyDecorationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVers
|
|
|
79
79
|
CodDecorationComponent,
|
|
80
80
|
CodDecorationsPartComponent,
|
|
81
81
|
CodDecorationsPartFeatureComponent] });
|
|
82
|
-
CadmusPartCodicologyDecorationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.
|
|
82
|
+
CadmusPartCodicologyDecorationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: CadmusPartCodicologyDecorationsModule, imports: [[
|
|
83
83
|
CommonModule,
|
|
84
84
|
FormsModule,
|
|
85
85
|
ReactiveFormsModule,
|
|
@@ -112,7 +112,7 @@ CadmusPartCodicologyDecorationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVers
|
|
|
112
112
|
CadmusCodLocationModule,
|
|
113
113
|
CadmusCodicologyUiModule,
|
|
114
114
|
]] });
|
|
115
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.
|
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: CadmusPartCodicologyDecorationsModule, decorators: [{
|
|
116
116
|
type: NgModule,
|
|
117
117
|
args: [{
|
|
118
118
|
declarations: [
|
|
@@ -168,4 +168,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
|
|
|
168
168
|
],
|
|
169
169
|
}]
|
|
170
170
|
}] });
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FkbXVzLXBhcnQtY29kaWNvbG9neS1kZWNvcmF0aW9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtcGFydC1jb2RpY29sb2d5LWRlY29yYXRpb25zL3NyYy9saWIvY2FkbXVzLXBhcnQtY29kaWNvbG9neS1kZWNvcmF0aW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0Is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QUM5Qix5QkFBeUI7WUFDekIsdUJBQXVCO1lBQ3ZCLHdCQUF3QjtTQUN6QjsyRkFXVSxxQ0FBcUM7a0JBckRqRCxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWiw2QkFBNkI7d0JBQzdCLDRCQUE0Qjt3QkFDNUIsaUNBQWlDO3dCQUNqQyw0QkFBNEI7d0JBQzVCLHNCQUFzQjt3QkFDdEIsMkJBQTJCO3dCQUMzQixrQ0FBa0M7cUJBQ25DO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLFNBQVM7d0JBQ1Qsa0JBQWtCO3dCQUNsQixVQUFVO3dCQUNWLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixTQUFTO3dCQUNULGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLDJCQUEyQjt3QkFDM0Isa0NBQWtDO3dCQUNsQyx5QkFBeUI7d0JBQ3pCLDZCQUE2Qjt3QkFDN0IsMkJBQTJCO3dCQUMzQiw4QkFBOEI7d0JBQzlCLHlCQUF5Qjt3QkFDekIsdUJBQXVCO3dCQUN2Qix3QkFBd0I7cUJBQ3pCO29CQUNELE9BQU8sRUFBRTt3QkFDUCw2QkFBNkI7d0JBQzdCLDRCQUE0Qjt3QkFDNUIsaUNBQWlDO3dCQUNqQyw0QkFBNEI7d0JBQzVCLHNCQUFzQjt3QkFDdEIsMkJBQTJCO3dCQUMzQixrQ0FBa0M7cUJBQ25DO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcblxuaW1wb3J0IHsgTW9uYWNvRWRpdG9yTW9kdWxlIH0gZnJvbSAnbmd4LW1vbmFjby1lZGl0b3InO1xuXG5pbXBvcnQgeyBOZ1Rvb2xzTW9kdWxlIH0gZnJvbSAnQG15cm1pZG9uL25nLXRvb2xzJztcbmltcG9ydCB7IE5nTWF0VG9vbHNNb2R1bGUgfSBmcm9tICdAbXlybWlkb24vbmctbWF0LXRvb2xzJztcbmltcG9ydCB7IENhZG11c0NvZGljb2xvZ3lVaU1vZHVsZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29kaWNvbG9neS11aSc7XG5pbXBvcnQgeyBDYWRtdXNNYXRQaHlzaWNhbFNpemVNb2R1bGUgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLW1hdC1waHlzaWNhbC1zaXplJztcbmltcG9ydCB7IENhZG11c1JlZnNBc3NlcnRpb25Nb2R1bGUgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXJlZnMtYXNzZXJ0aW9uJztcbmltcG9ydCB7IENhZG11c1JlZnNBc3NlcnRlZENocm9ub3RvcGVNb2R1bGUgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXJlZnMtYXNzZXJ0ZWQtY2hyb25vdG9wZSc7XG5pbXBvcnQgeyBDYWRtdXNSZWZzRG9jUmVmZXJlbmNlc01vZHVsZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtcmVmcy1kb2MtcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDYWRtdXNSZWZzRXh0ZXJuYWxJZHNNb2R1bGUgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXJlZnMtZXh0ZXJuYWwtaWRzJztcbmltcG9ydCB7IENhZG11c1JlZnNIaXN0b3JpY2FsRGF0ZU1vZHVsZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtcmVmcy1oaXN0b3JpY2FsLWRhdGUnO1xuaW1wb3J0IHsgQ2FkbXVzU3RhdGVNb2R1bGUgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXN0YXRlJztcbmltcG9ydCB7IENhZG11c1VpTW9kdWxlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy11aSc7XG5pbXBvcnQgeyBDYWRtdXNVaVBnTW9kdWxlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy11aS1wZyc7XG5pbXBvcnQgeyBDYWRtdXNDb2RMb2NhdGlvbk1vZHVsZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29kLWxvY2F0aW9uJztcbmltcG9ydCB7IENhZG11c1VpRmxhZ3NQaWNrZXJNb2R1bGUgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXVpLWZsYWdzLXBpY2tlcic7XG5cbmltcG9ydCB7IENvZERlY29yYXRpb25FbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi9jb2QtZGVjb3JhdGlvbi1lbGVtZW50L2NvZC1kZWNvcmF0aW9uLWVsZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRPckVudHJ5U2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL3RleHQtb3ItZW50cnktc2VsZWN0b3IvdGV4dC1vci1lbnRyeS1zZWxlY3Rvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29kRGVjb3JhdGlvbkFydGlzdFN0eWxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb2QtZGVjb3JhdGlvbi1hcnRpc3Qtc3R5bGUvY29kLWRlY29yYXRpb24tYXJ0aXN0LXN0eWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2REZWNvcmF0aW9uQXJ0aXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb2QtZGVjb3JhdGlvbi1hcnRpc3QvY29kLWRlY29yYXRpb24tYXJ0aXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2REZWNvcmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2QtZGVjb3JhdGlvbi9jb2QtZGVjb3JhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29kRGVjb3JhdGlvbnNQYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9jb2QtZGVjb3JhdGlvbnMtcGFydC9jb2QtZGVjb3JhdGlvbnMtcGFydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29kRGVjb3JhdGlvbnNQYXJ0RmVhdHVyZUNvbXBvbmVudCB9IGZyb20gJy4vY29kLWRlY29yYXRpb25zLXBhcnQtZmVhdHVyZS9jb2QtZGVjb3JhdGlvbnMtcGFydC1mZWF0dXJlLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIENvZERlY29yYXRpb25FbGVtZW50Q29tcG9uZW50LFxuICAgIFRleHRPckVudHJ5U2VsZWN0b3JDb21wb25lbnQsXG4gICAgQ29kRGVjb3JhdGlvbkFydGlzdFN0eWxlQ29tcG9uZW50LFxuICAgIENvZERlY29yYXRpb25BcnRpc3RDb21wb25lbnQsXG4gICAgQ29kRGVjb3JhdGlvbkNvbXBvbmVudCxcbiAgICBDb2REZWNvcmF0aW9uc1BhcnRDb21wb25lbnQsXG4gICAgQ29kRGVjb3JhdGlvbnNQYXJ0RmVhdHVyZUNvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIC8vIG1hdGVyaWFsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdENhcmRNb2R1bGUsXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgTWF0RXhwYW5zaW9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdFRhYnNNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICAvLyBtb25hY29cbiAgICBNb25hY29FZGl0b3JNb2R1bGUsXG4gICAgLy8gZ2VuZXJhbFxuICAgIE5nVG9vbHNNb2R1bGUsXG4gICAgTmdNYXRUb29sc01vZHVsZSxcbiAgICAvLyBjYWRtdXNcbiAgICBDYWRtdXNTdGF0ZU1vZHVsZSxcbiAgICBDYWRtdXNVaU1vZHVsZSxcbiAgICBDYWRtdXNVaVBnTW9kdWxlLFxuICAgIENhZG11c01hdFBoeXNpY2FsU2l6ZU1vZHVsZSxcbiAgICBDYWRtdXNSZWZzQXNzZXJ0ZWRDaHJvbm90b3BlTW9kdWxlLFxuICAgIENhZG11c1JlZnNBc3NlcnRpb25Nb2R1bGUsXG4gICAgQ2FkbXVzUmVmc0RvY1JlZmVyZW5jZXNNb2R1bGUsXG4gICAgQ2FkbXVzUmVmc0V4dGVybmFsSWRzTW9kdWxlLFxuICAgIENhZG11c1JlZnNIaXN0b3JpY2FsRGF0ZU1vZHVsZSxcbiAgICBDYWRtdXNVaUZsYWdzUGlja2VyTW9kdWxlLFxuICAgIENhZG11c0NvZExvY2F0aW9uTW9kdWxlLFxuICAgIENhZG11c0NvZGljb2xvZ3lVaU1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIENvZERlY29yYXRpb25FbGVtZW50Q29tcG9uZW50LFxuICAgIFRleHRPckVudHJ5U2VsZWN0b3JDb21wb25lbnQsXG4gICAgQ29kRGVjb3JhdGlvbkFydGlzdFN0eWxlQ29tcG9uZW50LFxuICAgIENvZERlY29yYXRpb25BcnRpc3RDb21wb25lbnQsXG4gICAgQ29kRGVjb3JhdGlvbkNvbXBvbmVudCxcbiAgICBDb2REZWNvcmF0aW9uc1BhcnRDb21wb25lbnQsXG4gICAgQ29kRGVjb3JhdGlvbnNQYXJ0RmVhdHVyZUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FkbXVzUGFydENvZGljb2xvZ3lEZWNvcmF0aW9uc01vZHVsZSB7fVxuIl19
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FkbXVzLXBhcnQtY29kaWNvbG9neS1kZWNvcmF0aW9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtcGFydC1jb2RpY29sb2d5LWRlY29yYXRpb25zL3NyYy9saWIvY2FkbXVzLXBhcnQtY29kaWNvbG9neS1kZWNvcmF0aW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFN0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDMUcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDekcsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDeEgsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdkcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUVBQXVFLENBQUM7O0FBdUQzSCxNQUFNLE9BQU8scUNBQXFDOztrSUFBckMscUNBQXFDO21JQUFyQyxxQ0FBcUMsaUJBbkQ5Qyw2QkFBNkI7UUFDN0IsNEJBQTRCO1FBQzVCLGlDQUFpQztRQUNqQyw0QkFBNEI7UUFDNUIsc0JBQXNCO1FBQ3RCLDJCQUEyQjtRQUMzQixrQ0FBa0MsYUFHbEMsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsV0FBVztRQUNYLGVBQWU7UUFDZixhQUFhO1FBQ2IsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixhQUFhO1FBQ2IsY0FBYztRQUNkLGVBQWU7UUFDZixhQUFhO1FBQ2IsZ0JBQWdCO1FBQ2hCLFNBQVM7UUFDVCxrQkFBa0I7UUFDbEIsVUFBVTtRQUNWLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsU0FBUztRQUNULGlCQUFpQjtRQUNqQixjQUFjO1FBQ2QsZ0JBQWdCO1FBQ2hCLDJCQUEyQjtRQUMzQixrQ0FBa0M7UUFDbEMseUJBQXlCO1FBQ3pCLDZCQUE2QjtRQUM3QiwyQkFBMkI7UUFDM0IsOEJBQThCO1FBQzlCLHlCQUF5QjtRQUN6Qix1QkFBdUI7UUFDdkIsd0JBQXdCLGFBR3hCLDZCQUE2QjtRQUM3Qiw0QkFBNEI7UUFDNUIsaUNBQWlDO1FBQ2pDLDRCQUE0QjtRQUM1QixzQkFBc0I7UUFDdEIsMkJBQTJCO1FBQzNCLGtDQUFrQzttSUFHekIscUNBQXFDLFlBM0N2QztZQUNQLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLFdBQVc7WUFDWCxlQUFlO1lBQ2YsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixrQkFBa0I7WUFDbEIsYUFBYTtZQUNiLGNBQWM7WUFDZCxlQUFlO1lBQ2YsYUFBYTtZQUNiLGdCQUFnQjtZQUNoQixTQUFTO1lBQ1Qsa0JBQWtCO1lBQ2xCLFVBQVU7WUFDVixhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLFNBQVM7WUFDVCxpQkFBaUI7WUFDakIsY0FBYztZQUNkLGdCQUFnQjtZQUNoQiwyQkFBMkI7WUFDM0Isa0NBQWtDO1lBQ2xDLHlCQUF5QjtZQUN6Qiw2QkFBNkI7WUFDN0IsMkJBQTJCO1lBQzNCLDhCQUE4QjtZQUM5Qix5QkFBeUI7WUFDekIsdUJBQXVCO1lBQ3ZCLHdCQUF3QjtTQUN6QjsyRkFXVSxxQ0FBcUM7a0JBckRqRCxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWiw2QkFBNkI7d0JBQzdCLDRCQUE0Qjt3QkFDNUIsaUNBQWlDO3dCQUNqQyw0QkFBNEI7d0JBQzVCLHNCQUFzQjt3QkFDdEIsMkJBQTJCO3dCQUMzQixrQ0FBa0M7cUJBQ25DO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLFNBQVM7d0JBQ1Qsa0JBQWtCO3dCQUNsQixVQUFVO3dCQUNWLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixTQUFTO3dCQUNULGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLDJCQUEyQjt3QkFDM0Isa0NBQWtDO3dCQUNsQyx5QkFBeUI7d0JBQ3pCLDZCQUE2Qjt3QkFDN0IsMkJBQTJCO3dCQUMzQiw4QkFBOEI7d0JBQzlCLHlCQUF5Qjt3QkFDekIsdUJBQXVCO3dCQUN2Qix3QkFBd0I7cUJBQ3pCO29CQUNELE9BQU8sRUFBRTt3QkFDUCw2QkFBNkI7d0JBQzdCLDRCQUE0Qjt3QkFDNUIsaUNBQWlDO3dCQUNqQyw0QkFBNEI7d0JBQzVCLHNCQUFzQjt3QkFDdEIsMkJBQTJCO3dCQUMzQixrQ0FBa0M7cUJBQ25DO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXRFeHBhbnNpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IE1vbmFjb0VkaXRvck1vZHVsZSB9IGZyb20gJ25neC1tb25hY28tZWRpdG9yJztcclxuXHJcbmltcG9ydCB7IE5nVG9vbHNNb2R1bGUgfSBmcm9tICdAbXlybWlkb24vbmctdG9vbHMnO1xyXG5pbXBvcnQgeyBOZ01hdFRvb2xzTW9kdWxlIH0gZnJvbSAnQG15cm1pZG9uL25nLW1hdC10b29scyc7XHJcbmltcG9ydCB7IENhZG11c0NvZGljb2xvZ3lVaU1vZHVsZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29kaWNvbG9neS11aSc7XHJcbmltcG9ydCB7IENhZG11c01hdFBoeXNpY2FsU2l6ZU1vZHVsZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtbWF0LXBoeXNpY2FsLXNpemUnO1xyXG5pbXBvcnQgeyBDYWRtdXNSZWZzQXNzZXJ0aW9uTW9kdWxlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1yZWZzLWFzc2VydGlvbic7XHJcbmltcG9ydCB7IENhZG11c1JlZnNBc3NlcnRlZENocm9ub3RvcGVNb2R1bGUgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXJlZnMtYXNzZXJ0ZWQtY2hyb25vdG9wZSc7XHJcbmltcG9ydCB7IENhZG11c1JlZnNEb2NSZWZlcmVuY2VzTW9kdWxlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1yZWZzLWRvYy1yZWZlcmVuY2VzJztcclxuaW1wb3J0IHsgQ2FkbXVzUmVmc0V4dGVybmFsSWRzTW9kdWxlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1yZWZzLWV4dGVybmFsLWlkcyc7XHJcbmltcG9ydCB7IENhZG11c1JlZnNIaXN0b3JpY2FsRGF0ZU1vZHVsZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtcmVmcy1oaXN0b3JpY2FsLWRhdGUnO1xyXG5pbXBvcnQgeyBDYWRtdXNTdGF0ZU1vZHVsZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtc3RhdGUnO1xyXG5pbXBvcnQgeyBDYWRtdXNVaU1vZHVsZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtdWknO1xyXG5pbXBvcnQgeyBDYWRtdXNVaVBnTW9kdWxlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy11aS1wZyc7XHJcbmltcG9ydCB7IENhZG11c0NvZExvY2F0aW9uTW9kdWxlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb2QtbG9jYXRpb24nO1xyXG5pbXBvcnQgeyBDYWRtdXNVaUZsYWdzUGlja2VyTW9kdWxlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy11aS1mbGFncy1waWNrZXInO1xyXG5cclxuaW1wb3J0IHsgQ29kRGVjb3JhdGlvbkVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuL2NvZC1kZWNvcmF0aW9uLWVsZW1lbnQvY29kLWRlY29yYXRpb24tZWxlbWVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0T3JFbnRyeVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi90ZXh0LW9yLWVudHJ5LXNlbGVjdG9yL3RleHQtb3ItZW50cnktc2VsZWN0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29kRGVjb3JhdGlvbkFydGlzdFN0eWxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb2QtZGVjb3JhdGlvbi1hcnRpc3Qtc3R5bGUvY29kLWRlY29yYXRpb24tYXJ0aXN0LXN0eWxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvZERlY29yYXRpb25BcnRpc3RDb21wb25lbnQgfSBmcm9tICcuL2NvZC1kZWNvcmF0aW9uLWFydGlzdC9jb2QtZGVjb3JhdGlvbi1hcnRpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29kRGVjb3JhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29kLWRlY29yYXRpb24vY29kLWRlY29yYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29kRGVjb3JhdGlvbnNQYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9jb2QtZGVjb3JhdGlvbnMtcGFydC9jb2QtZGVjb3JhdGlvbnMtcGFydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb2REZWNvcmF0aW9uc1BhcnRGZWF0dXJlQ29tcG9uZW50IH0gZnJvbSAnLi9jb2QtZGVjb3JhdGlvbnMtcGFydC1mZWF0dXJlL2NvZC1kZWNvcmF0aW9ucy1wYXJ0LWZlYXR1cmUuY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBDb2REZWNvcmF0aW9uRWxlbWVudENvbXBvbmVudCxcclxuICAgIFRleHRPckVudHJ5U2VsZWN0b3JDb21wb25lbnQsXHJcbiAgICBDb2REZWNvcmF0aW9uQXJ0aXN0U3R5bGVDb21wb25lbnQsXHJcbiAgICBDb2REZWNvcmF0aW9uQXJ0aXN0Q29tcG9uZW50LFxyXG4gICAgQ29kRGVjb3JhdGlvbkNvbXBvbmVudCxcclxuICAgIENvZERlY29yYXRpb25zUGFydENvbXBvbmVudCxcclxuICAgIENvZERlY29yYXRpb25zUGFydEZlYXR1cmVDb21wb25lbnQsXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICAvLyBtYXRlcmlhbFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0Q2FyZE1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0RXhwYW5zaW9uTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgTWF0VGFic01vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICAvLyBtb25hY29cclxuICAgIE1vbmFjb0VkaXRvck1vZHVsZSxcclxuICAgIC8vIGdlbmVyYWxcclxuICAgIE5nVG9vbHNNb2R1bGUsXHJcbiAgICBOZ01hdFRvb2xzTW9kdWxlLFxyXG4gICAgLy8gY2FkbXVzXHJcbiAgICBDYWRtdXNTdGF0ZU1vZHVsZSxcclxuICAgIENhZG11c1VpTW9kdWxlLFxyXG4gICAgQ2FkbXVzVWlQZ01vZHVsZSxcclxuICAgIENhZG11c01hdFBoeXNpY2FsU2l6ZU1vZHVsZSxcclxuICAgIENhZG11c1JlZnNBc3NlcnRlZENocm9ub3RvcGVNb2R1bGUsXHJcbiAgICBDYWRtdXNSZWZzQXNzZXJ0aW9uTW9kdWxlLFxyXG4gICAgQ2FkbXVzUmVmc0RvY1JlZmVyZW5jZXNNb2R1bGUsXHJcbiAgICBDYWRtdXNSZWZzRXh0ZXJuYWxJZHNNb2R1bGUsXHJcbiAgICBDYWRtdXNSZWZzSGlzdG9yaWNhbERhdGVNb2R1bGUsXHJcbiAgICBDYWRtdXNVaUZsYWdzUGlja2VyTW9kdWxlLFxyXG4gICAgQ2FkbXVzQ29kTG9jYXRpb25Nb2R1bGUsXHJcbiAgICBDYWRtdXNDb2RpY29sb2d5VWlNb2R1bGUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBDb2REZWNvcmF0aW9uRWxlbWVudENvbXBvbmVudCxcclxuICAgIFRleHRPckVudHJ5U2VsZWN0b3JDb21wb25lbnQsXHJcbiAgICBDb2REZWNvcmF0aW9uQXJ0aXN0U3R5bGVDb21wb25lbnQsXHJcbiAgICBDb2REZWNvcmF0aW9uQXJ0aXN0Q29tcG9uZW50LFxyXG4gICAgQ29kRGVjb3JhdGlvbkNvbXBvbmVudCxcclxuICAgIENvZERlY29yYXRpb25zUGFydENvbXBvbmVudCxcclxuICAgIENvZERlY29yYXRpb25zUGFydEZlYXR1cmVDb21wb25lbnQsXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENhZG11c1BhcnRDb2RpY29sb2d5RGVjb3JhdGlvbnNNb2R1bGUge31cclxuIl19
|
|
@@ -330,11 +330,11 @@ export class CodDecorationComponent {
|
|
|
330
330
|
this.decorationChange.emit(this.getDecoration());
|
|
331
331
|
}
|
|
332
332
|
}
|
|
333
|
-
CodDecorationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.
|
|
334
|
-
CodDecorationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: CodDecorationComponent, selector: "cadmus-cod-decoration", inputs: { decoration: "decoration", decElemFlagEntries: "decElemFlagEntries", decFlagEntries: "decFlagEntries", decElemTypeEntries: "decElemTypeEntries", decTypeHiddenEntries: "decTypeHiddenEntries", decElemColorEntries: "decElemColorEntries", decElemGildingEntries: "decElemGildingEntries", decElemTechEntries: "decElemTechEntries", decElemPosEntries: "decElemPosEntries", decElemToolEntries: "decElemToolEntries", decElemTypolEntries: "decElemTypolEntries", imgTypeEntries: "imgTypeEntries", artTypeEntries: "artTypeEntries", artStyleEntries: "artStyleEntries", ctTagEntries: "ctTagEntries", assTagEntries: "assTagEntries", refTypeEntries: "refTypeEntries", refTagEntries: "refTagEntries", idTagEntries: "idTagEntries", idScopeEntries: "idScopeEntries" }, outputs: { decorationChange: "decorationChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\n <!-- GENERAL -->\n <mat-tab label=\"general\">\n <div>\n <!-- id -->\n <mat-form-field>\n <input matInput [formControl]=\"eid\" placeholder=\"ID\" />\n <mat-error\n *ngIf=\"$any(eid).errors?.required && (eid.dirty || eid.touched)\"\n >EID required</mat-error\n >\n <mat-error\n *ngIf=\"$any(eid).errors?.maxLength && (eid.dirty || eid.touched)\"\n >EID too long</mat-error\n >\n </mat-form-field>\n \n <!-- name -->\n <mat-form-field>\n <input matInput [formControl]=\"name\" placeholder=\"name\" />\n <mat-error\n *ngIf=\"$any(name).errors?.required && (name.dirty || name.touched)\"\n >name required</mat-error\n >\n <mat-error\n *ngIf=\"$any(name).errors?.maxLength && (name.dirty || name.touched)\"\n >name too long</mat-error\n >\n </mat-form-field>\n </div>\n\n <!-- flags -->\n <fieldset>\n <legend>features</legend>\n <cadmus-ui-flags-picker\n [flags]=\"availFlags\"\n [selectedIds]=\"initialFlags\"\n (selectedIdsChange)=\"onSelectedIdsChange($event)\"\n ></cadmus-ui-flags-picker>\n </fieldset>\n\n <!-- note -->\n <mat-form-field class=\"long-text\">\n <textarea\n rows=\"3\"\n matInput\n [formControl]=\"note\"\n placeholder=\"note\"\n ></textarea>\n <mat-error\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\n >note too long</mat-error\n >\n </mat-form-field>\n\n <!-- chronotopes -->\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title\n ><mat-icon style=\"margin-right: 8px; color: #24a524\"\n >hourglass_empty</mat-icon\n >\n chronotopes</mat-panel-title\n >\n </mat-expansion-panel-header>\n <cadmus-asserted-chronotope-set\n [tagEntries]=\"ctTagEntries\"\n [assTagEntries]=\"assTagEntries\"\n [refTagEntries]=\"refTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [chronotopes]=\"initialChronotopes\"\n (chronotopesChange)=\"onChronotopesChange($event)\"\n ></cadmus-asserted-chronotope-set>\n </mat-expansion-panel>\n\n <!-- references -->\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title\n ><mat-icon style=\"margin-right: 8px; color: #bb3d6c\"\n >library_books</mat-icon\n >\n references</mat-panel-title\n >\n </mat-expansion-panel-header>\n <cadmus-refs-doc-references\n [tagEntries]=\"refTagEntries\"\n [typeEntries]=\"refTypeEntries\"\n [references]=\"initialReferences\"\n (referencesChange)=\"onReferencesChange($event)\"\n ></cadmus-refs-doc-references>\n </mat-expansion-panel>\n\n <!-- artists -->\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title\n ><mat-icon style=\"margin-right: 8px; color: #ddcd41\"\n >palette</mat-icon\n >\n artists</mat-panel-title\n >\n </mat-expansion-panel-header>\n <div>\n <button\n type=\"button\"\n mat-icon-button\n color=\"primary\"\n (click)=\"addArtist()\"\n >\n <mat-icon>add_circle</mat-icon> add artist\n </button>\n </div>\n <table *ngIf=\"artists?.value?.length\">\n <thead>\n <tr>\n <th></th>\n <th>type</th>\n <th>name</th>\n <th>EID</th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let artist of artists?.value;\n let i = index;\n let first = first;\n let last = last\n \"\n >\n <td>\n <button\n type=\"button\"\n mat-icon-button\n color=\"primary\"\n matTooltip=\"Edit this artist\"\n (click)=\"editArtist(i)\"\n >\n <mat-icon>edit</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this artist up\"\n [disabled]=\"first\"\n (click)=\"moveArtistUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this artist down\"\n [disabled]=\"last\"\n (click)=\"moveArtistDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n matTooltip=\"Delete this artist\"\n (click)=\"removeArtist(i)\"\n >\n <mat-icon>remove_circle</mat-icon>\n </button>\n </td>\n <td>\n {{ artist.type | flatLookup: artTypeEntries:\"id\":\"value\" }}\n </td>\n <td>{{ artist.name }}</td>\n <td>{{ artist.eid }}</td>\n </tr>\n </tbody>\n </table>\n <mat-expansion-panel\n [expanded]=\"editedArtist\"\n [disabled]=\"!editedArtist\"\n >\n <mat-expansion-panel-header>\n <mat-panel-title>artist {{ editedArtist?.name }}</mat-panel-title>\n </mat-expansion-panel-header>\n <cadmus-cod-decoration-artist\n [ctTagEntries]=\"ctTagEntries\"\n [assTagEntries]=\"assTagEntries\"\n [refTagEntries]=\"refTagEntries\"\n [artTypeEntries]=\"artTypeEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [artStyleEntries]=\"artStyleEntries\"\n [idTagEntries]=\"idTagEntries\"\n [idScopeEntries]=\"idScopeEntries\"\n [artist]=\"editedArtist\"\n (artistChange)=\"onArtistSave($event)\"\n (editorClose)=\"onArtistClose()\"\n ></cadmus-cod-decoration-artist>\n </mat-expansion-panel>\n </mat-expansion-panel>\n\n <!-- elements -->\n <h3>elements</h3>\n <div>\n <button\n type=\"button\"\n mat-icon-button\n color=\"primary\"\n (click)=\"addElement()\"\n >\n <mat-icon>add_circle</mat-icon> add element\n </button>\n </div>\n <table *ngIf=\"elements?.value?.length\">\n <thead>\n <tr>\n <th></th>\n <th>key</th>\n <th>parent</th>\n <th>type</th>\n <th>subject</th>\n <th>extent</th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let element of elements?.value;\n let i = index;\n let first = first;\n let last = last\n \"\n >\n <td>\n <button\n type=\"button\"\n mat-icon-button\n color=\"primary\"\n matTooltip=\"Edit this element\"\n (click)=\"editElement(i)\"\n >\n <mat-icon>edit</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this element up\"\n [disabled]=\"first\"\n (click)=\"moveElementUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this element down\"\n [disabled]=\"last\"\n (click)=\"moveElementDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n matTooltip=\"Delete this element\"\n (click)=\"removeElement(i)\"\n >\n <mat-icon>remove_circle</mat-icon>\n </button>\n </td>\n <td>{{ element.key }}</td>\n <td>{{ element.parentKey }}</td>\n <td>{{ element.type | flatLookup: decElemTypeEntries:\"id\":\"value\" }}</td>\n <td>{{ element.subject }}</td>\n <td>{{ element.ranges | codLocationRange }}</td>\n </tr>\n </tbody>\n </table>\n </mat-tab>\n\n <!-- ELEMENT -->\n <mat-tab label=\"element\" *ngIf=\"editedElement\">\n <cadmus-cod-decoration-element\n [imgTypeEntries]=\"imgTypeEntries\"\n [decElemPosEntries]=\"decElemPosEntries\"\n [decElemFlagEntries]=\"decElemFlagEntries\"\n [decElemTechEntries]=\"decElemTechEntries\"\n [decElemToolEntries]=\"decElemToolEntries\"\n [decElemTypeEntries]=\"decElemTypeEntries\"\n [decElemColorEntries]=\"decElemColorEntries\"\n [decElemTypolEntries]=\"decElemTypolEntries\"\n [decTypeHiddenEntries]=\"decTypeHiddenEntries\"\n [decElemGildingEntries]=\"decElemGildingEntries\"\n [element]=\"editedElement\"\n [parentKeys]=\"parentKeys\"\n (elementChange)=\"onElementSave($event)\"\n (editorClose)=\"onElementClose()\"\n ></cadmus-cod-decoration-element>\n </mat-tab>\n </mat-tab-group>\n\n <!-- buttons -->\n <hr />\n <div>\n <button\n type=\"button\"\n color=\"warn\"\n mat-icon-button\n matTooltip=\"Discard decoration changes\"\n (click)=\"cancel()\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n <button\n type=\"submit\"\n color=\"primary\"\n mat-icon-button\n matTooltip=\"Accept decoration changes\"\n [disabled]=\"form.invalid || form.pristine\"\n >\n <mat-icon>check_circle</mat-icon> decoration\n </button>\n </div>\n</form>\n", styles: ["th{text-align:left;font-weight:400;color:silver}.long-text{width:90%;max-width:800px}h3{margin-top:12px;background-color:#5db2fd;border-radius:6px;padding:0 6px;color:#fff}fieldset{border:1px solid silver;border-radius:6px;padding:6px 12px}\n"], components: [{ type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.FlagsPickerComponent, selector: "cadmus-ui-flags-picker", inputs: ["selectedIds", "flags", "numbering", "toolbar", "allowUserFlags"], outputs: ["selectedIdsChange", "flagsChange"] }, { type: i6.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i6.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8.AssertedChronotopeSetComponent, selector: "cadmus-asserted-chronotope-set", inputs: ["chronotopes", "tagEntries", "assTagEntries", "refTypeEntries", "refTagEntries"], outputs: ["chronotopesChange"] }, { type: i9.DocReferencesComponent, selector: "cadmus-refs-doc-references", inputs: ["references", "typeEntries", "tagEntries"], outputs: ["referencesChange"] }, { type: i10.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i11.CodDecorationArtistComponent, selector: "cadmus-cod-decoration-artist", inputs: ["artist", "artTypeEntries", "artStyleEntries", "ctTagEntries", "assTagEntries", "refTypeEntries", "refTagEntries", "idTagEntries", "idScopeEntries"], outputs: ["artistChange", "editorClose"] }, { type: i12.CodDecorationElementComponent, selector: "cadmus-cod-decoration-element", inputs: ["element", "parentKeys", "decElemTypeEntries", "decTypeHiddenEntries", "decElemFlagEntries", "decElemColorEntries", "decElemGildingEntries", "decElemTechEntries", "decElemPosEntries", "decElemToolEntries", "decElemTypolEntries", "imgTypeEntries"], outputs: ["elementChange", "editorClose"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i13.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatError, selector: "mat-error", inputs: ["id"] }, { type: i6.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i15.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], pipes: { "flatLookup": i16.FlatLookupPipe, "codLocationRange": i17.CodLocationRangePipe } });
|
|
335
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.
|
|
333
|
+
CodDecorationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: CodDecorationComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
334
|
+
CodDecorationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: CodDecorationComponent, selector: "cadmus-cod-decoration", inputs: { decoration: "decoration", decElemFlagEntries: "decElemFlagEntries", decFlagEntries: "decFlagEntries", decElemTypeEntries: "decElemTypeEntries", decTypeHiddenEntries: "decTypeHiddenEntries", decElemColorEntries: "decElemColorEntries", decElemGildingEntries: "decElemGildingEntries", decElemTechEntries: "decElemTechEntries", decElemPosEntries: "decElemPosEntries", decElemToolEntries: "decElemToolEntries", decElemTypolEntries: "decElemTypolEntries", imgTypeEntries: "imgTypeEntries", artTypeEntries: "artTypeEntries", artStyleEntries: "artStyleEntries", ctTagEntries: "ctTagEntries", assTagEntries: "assTagEntries", refTypeEntries: "refTypeEntries", refTagEntries: "refTagEntries", idTagEntries: "idTagEntries", idScopeEntries: "idScopeEntries" }, outputs: { decorationChange: "decorationChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\r\n <!-- GENERAL -->\r\n <mat-tab label=\"general\">\r\n <div>\r\n <!-- id -->\r\n <mat-form-field>\r\n <input matInput [formControl]=\"eid\" placeholder=\"ID\" />\r\n <mat-error\r\n *ngIf=\"$any(eid).errors?.required && (eid.dirty || eid.touched)\"\r\n >EID required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(eid).errors?.maxLength && (eid.dirty || eid.touched)\"\r\n >EID too long</mat-error\r\n >\r\n </mat-form-field>\r\n \r\n <!-- name -->\r\n <mat-form-field>\r\n <input matInput [formControl]=\"name\" placeholder=\"name\" />\r\n <mat-error\r\n *ngIf=\"$any(name).errors?.required && (name.dirty || name.touched)\"\r\n >name required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(name).errors?.maxLength && (name.dirty || name.touched)\"\r\n >name too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- flags -->\r\n <fieldset>\r\n <legend>features</legend>\r\n <cadmus-ui-flags-picker\r\n [flags]=\"availFlags\"\r\n [selectedIds]=\"initialFlags\"\r\n (selectedIdsChange)=\"onSelectedIdsChange($event)\"\r\n ></cadmus-ui-flags-picker>\r\n </fieldset>\r\n\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <textarea\r\n rows=\"3\"\r\n matInput\r\n [formControl]=\"note\"\r\n placeholder=\"note\"\r\n ></textarea>\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- chronotopes -->\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title\r\n ><mat-icon style=\"margin-right: 8px; color: #24a524\"\r\n >hourglass_empty</mat-icon\r\n >\r\n chronotopes</mat-panel-title\r\n >\r\n </mat-expansion-panel-header>\r\n <cadmus-asserted-chronotope-set\r\n [tagEntries]=\"ctTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [chronotopes]=\"initialChronotopes\"\r\n (chronotopesChange)=\"onChronotopesChange($event)\"\r\n ></cadmus-asserted-chronotope-set>\r\n </mat-expansion-panel>\r\n\r\n <!-- references -->\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title\r\n ><mat-icon style=\"margin-right: 8px; color: #bb3d6c\"\r\n >library_books</mat-icon\r\n >\r\n references</mat-panel-title\r\n >\r\n </mat-expansion-panel-header>\r\n <cadmus-refs-doc-references\r\n [tagEntries]=\"refTagEntries\"\r\n [typeEntries]=\"refTypeEntries\"\r\n [references]=\"initialReferences\"\r\n (referencesChange)=\"onReferencesChange($event)\"\r\n ></cadmus-refs-doc-references>\r\n </mat-expansion-panel>\r\n\r\n <!-- artists -->\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title\r\n ><mat-icon style=\"margin-right: 8px; color: #ddcd41\"\r\n >palette</mat-icon\r\n >\r\n artists</mat-panel-title\r\n >\r\n </mat-expansion-panel-header>\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n (click)=\"addArtist()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> add artist\r\n </button>\r\n </div>\r\n <table *ngIf=\"artists?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>type</th>\r\n <th>name</th>\r\n <th>EID</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let artist of artists?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this artist\"\r\n (click)=\"editArtist(i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this artist up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveArtistUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this artist down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveArtistDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this artist\"\r\n (click)=\"removeArtist(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>\r\n {{ artist.type | flatLookup: artTypeEntries:\"id\":\"value\" }}\r\n </td>\r\n <td>{{ artist.name }}</td>\r\n <td>{{ artist.eid }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <mat-expansion-panel\r\n [expanded]=\"editedArtist\"\r\n [disabled]=\"!editedArtist\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>artist {{ editedArtist?.name }}</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <cadmus-cod-decoration-artist\r\n [ctTagEntries]=\"ctTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [artTypeEntries]=\"artTypeEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [artStyleEntries]=\"artStyleEntries\"\r\n [idTagEntries]=\"idTagEntries\"\r\n [idScopeEntries]=\"idScopeEntries\"\r\n [artist]=\"editedArtist\"\r\n (artistChange)=\"onArtistSave($event)\"\r\n (editorClose)=\"onArtistClose()\"\r\n ></cadmus-cod-decoration-artist>\r\n </mat-expansion-panel>\r\n </mat-expansion-panel>\r\n\r\n <!-- elements -->\r\n <h3>elements</h3>\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n (click)=\"addElement()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> add element\r\n </button>\r\n </div>\r\n <table *ngIf=\"elements?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>key</th>\r\n <th>parent</th>\r\n <th>type</th>\r\n <th>subject</th>\r\n <th>extent</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let element of elements?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this element\"\r\n (click)=\"editElement(i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this element up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveElementUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this element down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveElementDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this element\"\r\n (click)=\"removeElement(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ element.key }}</td>\r\n <td>{{ element.parentKey }}</td>\r\n <td>{{ element.type | flatLookup: decElemTypeEntries:\"id\":\"value\" }}</td>\r\n <td>{{ element.subject }}</td>\r\n <td>{{ element.ranges | codLocationRange }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-tab>\r\n\r\n <!-- ELEMENT -->\r\n <mat-tab label=\"element\" *ngIf=\"editedElement\">\r\n <cadmus-cod-decoration-element\r\n [imgTypeEntries]=\"imgTypeEntries\"\r\n [decElemPosEntries]=\"decElemPosEntries\"\r\n [decElemFlagEntries]=\"decElemFlagEntries\"\r\n [decElemTechEntries]=\"decElemTechEntries\"\r\n [decElemToolEntries]=\"decElemToolEntries\"\r\n [decElemTypeEntries]=\"decElemTypeEntries\"\r\n [decElemColorEntries]=\"decElemColorEntries\"\r\n [decElemTypolEntries]=\"decElemTypolEntries\"\r\n [decTypeHiddenEntries]=\"decTypeHiddenEntries\"\r\n [decElemGildingEntries]=\"decElemGildingEntries\"\r\n [element]=\"editedElement\"\r\n [parentKeys]=\"parentKeys\"\r\n (elementChange)=\"onElementSave($event)\"\r\n (editorClose)=\"onElementClose()\"\r\n ></cadmus-cod-decoration-element>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <!-- buttons -->\r\n <hr />\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard decoration changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept decoration changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon> decoration\r\n </button>\r\n </div>\r\n</form>\r\n", styles: ["th{text-align:left;font-weight:400;color:silver}.long-text{width:90%;max-width:800px}h3{margin-top:12px;background-color:#5db2fd;border-radius:6px;padding:0 6px;color:#fff}fieldset{border:1px solid silver;border-radius:6px;padding:6px 12px}\n"], components: [{ type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.FlagsPickerComponent, selector: "cadmus-ui-flags-picker", inputs: ["selectedIds", "flags", "numbering", "toolbar", "allowUserFlags"], outputs: ["selectedIdsChange", "flagsChange"] }, { type: i6.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i6.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8.AssertedChronotopeSetComponent, selector: "cadmus-asserted-chronotope-set", inputs: ["chronotopes", "tagEntries", "assTagEntries", "refTypeEntries", "refTagEntries"], outputs: ["chronotopesChange"] }, { type: i9.DocReferencesComponent, selector: "cadmus-refs-doc-references", inputs: ["references", "typeEntries", "tagEntries"], outputs: ["referencesChange"] }, { type: i10.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i11.CodDecorationArtistComponent, selector: "cadmus-cod-decoration-artist", inputs: ["artist", "artTypeEntries", "artStyleEntries", "ctTagEntries", "assTagEntries", "refTypeEntries", "refTagEntries", "idTagEntries", "idScopeEntries"], outputs: ["artistChange", "editorClose"] }, { type: i12.CodDecorationElementComponent, selector: "cadmus-cod-decoration-element", inputs: ["element", "parentKeys", "decElemTypeEntries", "decTypeHiddenEntries", "decElemFlagEntries", "decElemColorEntries", "decElemGildingEntries", "decElemTechEntries", "decElemPosEntries", "decElemToolEntries", "decElemTypolEntries", "imgTypeEntries"], outputs: ["elementChange", "editorClose"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i13.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatError, selector: "mat-error", inputs: ["id"] }, { type: i6.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i15.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], pipes: { "flatLookup": i16.FlatLookupPipe, "codLocationRange": i17.CodLocationRangePipe } });
|
|
335
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: CodDecorationComponent, decorators: [{
|
|
336
336
|
type: Component,
|
|
337
|
-
args: [{ selector: 'cadmus-cod-decoration', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\n <!-- GENERAL -->\n <mat-tab label=\"general\">\n <div>\n <!-- id -->\n <mat-form-field>\n <input matInput [formControl]=\"eid\" placeholder=\"ID\" />\n <mat-error\n *ngIf=\"$any(eid).errors?.required && (eid.dirty || eid.touched)\"\n >EID required</mat-error\n >\n <mat-error\n *ngIf=\"$any(eid).errors?.maxLength && (eid.dirty || eid.touched)\"\n >EID too long</mat-error\n >\n </mat-form-field>\n \n <!-- name -->\n <mat-form-field>\n <input matInput [formControl]=\"name\" placeholder=\"name\" />\n <mat-error\n *ngIf=\"$any(name).errors?.required && (name.dirty || name.touched)\"\n >name required</mat-error\n >\n <mat-error\n *ngIf=\"$any(name).errors?.maxLength && (name.dirty || name.touched)\"\n >name too long</mat-error\n >\n </mat-form-field>\n </div>\n\n <!-- flags -->\n <fieldset>\n <legend>features</legend>\n <cadmus-ui-flags-picker\n [flags]=\"availFlags\"\n [selectedIds]=\"initialFlags\"\n (selectedIdsChange)=\"onSelectedIdsChange($event)\"\n ></cadmus-ui-flags-picker>\n </fieldset>\n\n <!-- note -->\n <mat-form-field class=\"long-text\">\n <textarea\n rows=\"3\"\n matInput\n [formControl]=\"note\"\n placeholder=\"note\"\n ></textarea>\n <mat-error\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\n >note too long</mat-error\n >\n </mat-form-field>\n\n <!-- chronotopes -->\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title\n ><mat-icon style=\"margin-right: 8px; color: #24a524\"\n >hourglass_empty</mat-icon\n >\n chronotopes</mat-panel-title\n >\n </mat-expansion-panel-header>\n <cadmus-asserted-chronotope-set\n [tagEntries]=\"ctTagEntries\"\n [assTagEntries]=\"assTagEntries\"\n [refTagEntries]=\"refTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [chronotopes]=\"initialChronotopes\"\n (chronotopesChange)=\"onChronotopesChange($event)\"\n ></cadmus-asserted-chronotope-set>\n </mat-expansion-panel>\n\n <!-- references -->\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title\n ><mat-icon style=\"margin-right: 8px; color: #bb3d6c\"\n >library_books</mat-icon\n >\n references</mat-panel-title\n >\n </mat-expansion-panel-header>\n <cadmus-refs-doc-references\n [tagEntries]=\"refTagEntries\"\n [typeEntries]=\"refTypeEntries\"\n [references]=\"initialReferences\"\n (referencesChange)=\"onReferencesChange($event)\"\n ></cadmus-refs-doc-references>\n </mat-expansion-panel>\n\n <!-- artists -->\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title\n ><mat-icon style=\"margin-right: 8px; color: #ddcd41\"\n >palette</mat-icon\n >\n artists</mat-panel-title\n >\n </mat-expansion-panel-header>\n <div>\n <button\n type=\"button\"\n mat-icon-button\n color=\"primary\"\n (click)=\"addArtist()\"\n >\n <mat-icon>add_circle</mat-icon> add artist\n </button>\n </div>\n <table *ngIf=\"artists?.value?.length\">\n <thead>\n <tr>\n <th></th>\n <th>type</th>\n <th>name</th>\n <th>EID</th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let artist of artists?.value;\n let i = index;\n let first = first;\n let last = last\n \"\n >\n <td>\n <button\n type=\"button\"\n mat-icon-button\n color=\"primary\"\n matTooltip=\"Edit this artist\"\n (click)=\"editArtist(i)\"\n >\n <mat-icon>edit</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this artist up\"\n [disabled]=\"first\"\n (click)=\"moveArtistUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this artist down\"\n [disabled]=\"last\"\n (click)=\"moveArtistDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n matTooltip=\"Delete this artist\"\n (click)=\"removeArtist(i)\"\n >\n <mat-icon>remove_circle</mat-icon>\n </button>\n </td>\n <td>\n {{ artist.type | flatLookup: artTypeEntries:\"id\":\"value\" }}\n </td>\n <td>{{ artist.name }}</td>\n <td>{{ artist.eid }}</td>\n </tr>\n </tbody>\n </table>\n <mat-expansion-panel\n [expanded]=\"editedArtist\"\n [disabled]=\"!editedArtist\"\n >\n <mat-expansion-panel-header>\n <mat-panel-title>artist {{ editedArtist?.name }}</mat-panel-title>\n </mat-expansion-panel-header>\n <cadmus-cod-decoration-artist\n [ctTagEntries]=\"ctTagEntries\"\n [assTagEntries]=\"assTagEntries\"\n [refTagEntries]=\"refTagEntries\"\n [artTypeEntries]=\"artTypeEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [artStyleEntries]=\"artStyleEntries\"\n [idTagEntries]=\"idTagEntries\"\n [idScopeEntries]=\"idScopeEntries\"\n [artist]=\"editedArtist\"\n (artistChange)=\"onArtistSave($event)\"\n (editorClose)=\"onArtistClose()\"\n ></cadmus-cod-decoration-artist>\n </mat-expansion-panel>\n </mat-expansion-panel>\n\n <!-- elements -->\n <h3>elements</h3>\n <div>\n <button\n type=\"button\"\n mat-icon-button\n color=\"primary\"\n (click)=\"addElement()\"\n >\n <mat-icon>add_circle</mat-icon> add element\n </button>\n </div>\n <table *ngIf=\"elements?.value?.length\">\n <thead>\n <tr>\n <th></th>\n <th>key</th>\n <th>parent</th>\n <th>type</th>\n <th>subject</th>\n <th>extent</th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let element of elements?.value;\n let i = index;\n let first = first;\n let last = last\n \"\n >\n <td>\n <button\n type=\"button\"\n mat-icon-button\n color=\"primary\"\n matTooltip=\"Edit this element\"\n (click)=\"editElement(i)\"\n >\n <mat-icon>edit</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this element up\"\n [disabled]=\"first\"\n (click)=\"moveElementUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this element down\"\n [disabled]=\"last\"\n (click)=\"moveElementDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n matTooltip=\"Delete this element\"\n (click)=\"removeElement(i)\"\n >\n <mat-icon>remove_circle</mat-icon>\n </button>\n </td>\n <td>{{ element.key }}</td>\n <td>{{ element.parentKey }}</td>\n <td>{{ element.type | flatLookup: decElemTypeEntries:\"id\":\"value\" }}</td>\n <td>{{ element.subject }}</td>\n <td>{{ element.ranges | codLocationRange }}</td>\n </tr>\n </tbody>\n </table>\n </mat-tab>\n\n <!-- ELEMENT -->\n <mat-tab label=\"element\" *ngIf=\"editedElement\">\n <cadmus-cod-decoration-element\n [imgTypeEntries]=\"imgTypeEntries\"\n [decElemPosEntries]=\"decElemPosEntries\"\n [decElemFlagEntries]=\"decElemFlagEntries\"\n [decElemTechEntries]=\"decElemTechEntries\"\n [decElemToolEntries]=\"decElemToolEntries\"\n [decElemTypeEntries]=\"decElemTypeEntries\"\n [decElemColorEntries]=\"decElemColorEntries\"\n [decElemTypolEntries]=\"decElemTypolEntries\"\n [decTypeHiddenEntries]=\"decTypeHiddenEntries\"\n [decElemGildingEntries]=\"decElemGildingEntries\"\n [element]=\"editedElement\"\n [parentKeys]=\"parentKeys\"\n (elementChange)=\"onElementSave($event)\"\n (editorClose)=\"onElementClose()\"\n ></cadmus-cod-decoration-element>\n </mat-tab>\n </mat-tab-group>\n\n <!-- buttons -->\n <hr />\n <div>\n <button\n type=\"button\"\n color=\"warn\"\n mat-icon-button\n matTooltip=\"Discard decoration changes\"\n (click)=\"cancel()\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n <button\n type=\"submit\"\n color=\"primary\"\n mat-icon-button\n matTooltip=\"Accept decoration changes\"\n [disabled]=\"form.invalid || form.pristine\"\n >\n <mat-icon>check_circle</mat-icon> decoration\n </button>\n </div>\n</form>\n", styles: ["th{text-align:left;font-weight:400;color:silver}.long-text{width:90%;max-width:800px}h3{margin-top:12px;background-color:#5db2fd;border-radius:6px;padding:0 6px;color:#fff}fieldset{border:1px solid silver;border-radius:6px;padding:6px 12px}\n"] }]
|
|
337
|
+
args: [{ selector: 'cadmus-cod-decoration', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-tab-group [(selectedIndex)]=\"tabIndex\">\r\n <!-- GENERAL -->\r\n <mat-tab label=\"general\">\r\n <div>\r\n <!-- id -->\r\n <mat-form-field>\r\n <input matInput [formControl]=\"eid\" placeholder=\"ID\" />\r\n <mat-error\r\n *ngIf=\"$any(eid).errors?.required && (eid.dirty || eid.touched)\"\r\n >EID required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(eid).errors?.maxLength && (eid.dirty || eid.touched)\"\r\n >EID too long</mat-error\r\n >\r\n </mat-form-field>\r\n \r\n <!-- name -->\r\n <mat-form-field>\r\n <input matInput [formControl]=\"name\" placeholder=\"name\" />\r\n <mat-error\r\n *ngIf=\"$any(name).errors?.required && (name.dirty || name.touched)\"\r\n >name required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(name).errors?.maxLength && (name.dirty || name.touched)\"\r\n >name too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- flags -->\r\n <fieldset>\r\n <legend>features</legend>\r\n <cadmus-ui-flags-picker\r\n [flags]=\"availFlags\"\r\n [selectedIds]=\"initialFlags\"\r\n (selectedIdsChange)=\"onSelectedIdsChange($event)\"\r\n ></cadmus-ui-flags-picker>\r\n </fieldset>\r\n\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <textarea\r\n rows=\"3\"\r\n matInput\r\n [formControl]=\"note\"\r\n placeholder=\"note\"\r\n ></textarea>\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- chronotopes -->\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title\r\n ><mat-icon style=\"margin-right: 8px; color: #24a524\"\r\n >hourglass_empty</mat-icon\r\n >\r\n chronotopes</mat-panel-title\r\n >\r\n </mat-expansion-panel-header>\r\n <cadmus-asserted-chronotope-set\r\n [tagEntries]=\"ctTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [chronotopes]=\"initialChronotopes\"\r\n (chronotopesChange)=\"onChronotopesChange($event)\"\r\n ></cadmus-asserted-chronotope-set>\r\n </mat-expansion-panel>\r\n\r\n <!-- references -->\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title\r\n ><mat-icon style=\"margin-right: 8px; color: #bb3d6c\"\r\n >library_books</mat-icon\r\n >\r\n references</mat-panel-title\r\n >\r\n </mat-expansion-panel-header>\r\n <cadmus-refs-doc-references\r\n [tagEntries]=\"refTagEntries\"\r\n [typeEntries]=\"refTypeEntries\"\r\n [references]=\"initialReferences\"\r\n (referencesChange)=\"onReferencesChange($event)\"\r\n ></cadmus-refs-doc-references>\r\n </mat-expansion-panel>\r\n\r\n <!-- artists -->\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title\r\n ><mat-icon style=\"margin-right: 8px; color: #ddcd41\"\r\n >palette</mat-icon\r\n >\r\n artists</mat-panel-title\r\n >\r\n </mat-expansion-panel-header>\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n (click)=\"addArtist()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> add artist\r\n </button>\r\n </div>\r\n <table *ngIf=\"artists?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>type</th>\r\n <th>name</th>\r\n <th>EID</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let artist of artists?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this artist\"\r\n (click)=\"editArtist(i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this artist up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveArtistUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this artist down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveArtistDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this artist\"\r\n (click)=\"removeArtist(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>\r\n {{ artist.type | flatLookup: artTypeEntries:\"id\":\"value\" }}\r\n </td>\r\n <td>{{ artist.name }}</td>\r\n <td>{{ artist.eid }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <mat-expansion-panel\r\n [expanded]=\"editedArtist\"\r\n [disabled]=\"!editedArtist\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>artist {{ editedArtist?.name }}</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <cadmus-cod-decoration-artist\r\n [ctTagEntries]=\"ctTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [artTypeEntries]=\"artTypeEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [artStyleEntries]=\"artStyleEntries\"\r\n [idTagEntries]=\"idTagEntries\"\r\n [idScopeEntries]=\"idScopeEntries\"\r\n [artist]=\"editedArtist\"\r\n (artistChange)=\"onArtistSave($event)\"\r\n (editorClose)=\"onArtistClose()\"\r\n ></cadmus-cod-decoration-artist>\r\n </mat-expansion-panel>\r\n </mat-expansion-panel>\r\n\r\n <!-- elements -->\r\n <h3>elements</h3>\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n (click)=\"addElement()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> add element\r\n </button>\r\n </div>\r\n <table *ngIf=\"elements?.value?.length\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>key</th>\r\n <th>parent</th>\r\n <th>type</th>\r\n <th>subject</th>\r\n <th>extent</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let element of elements?.value;\r\n let i = index;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this element\"\r\n (click)=\"editElement(i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this element up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveElementUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this element down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveElementDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this element\"\r\n (click)=\"removeElement(i)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ element.key }}</td>\r\n <td>{{ element.parentKey }}</td>\r\n <td>{{ element.type | flatLookup: decElemTypeEntries:\"id\":\"value\" }}</td>\r\n <td>{{ element.subject }}</td>\r\n <td>{{ element.ranges | codLocationRange }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-tab>\r\n\r\n <!-- ELEMENT -->\r\n <mat-tab label=\"element\" *ngIf=\"editedElement\">\r\n <cadmus-cod-decoration-element\r\n [imgTypeEntries]=\"imgTypeEntries\"\r\n [decElemPosEntries]=\"decElemPosEntries\"\r\n [decElemFlagEntries]=\"decElemFlagEntries\"\r\n [decElemTechEntries]=\"decElemTechEntries\"\r\n [decElemToolEntries]=\"decElemToolEntries\"\r\n [decElemTypeEntries]=\"decElemTypeEntries\"\r\n [decElemColorEntries]=\"decElemColorEntries\"\r\n [decElemTypolEntries]=\"decElemTypolEntries\"\r\n [decTypeHiddenEntries]=\"decTypeHiddenEntries\"\r\n [decElemGildingEntries]=\"decElemGildingEntries\"\r\n [element]=\"editedElement\"\r\n [parentKeys]=\"parentKeys\"\r\n (elementChange)=\"onElementSave($event)\"\r\n (editorClose)=\"onElementClose()\"\r\n ></cadmus-cod-decoration-element>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <!-- buttons -->\r\n <hr />\r\n <div>\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Discard decoration changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Accept decoration changes\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon>check_circle</mat-icon> decoration\r\n </button>\r\n </div>\r\n</form>\r\n", styles: ["th{text-align:left;font-weight:400;color:silver}.long-text{width:90%;max-width:800px}h3{margin-top:12px;background-color:#5db2fd;border-radius:6px;padding:0 6px;color:#fff}fieldset{border:1px solid silver;border-radius:6px;padding:6px 12px}\n"] }]
|
|
338
338
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.DialogService }]; }, propDecorators: { decoration: [{
|
|
339
339
|
type: Input
|
|
340
340
|
}], decElemFlagEntries: [{
|
|
@@ -380,4 +380,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
|
|
|
380
380
|
}], editorClose: [{
|
|
381
381
|
type: Output
|
|
382
382
|
}] } });
|
|
383
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWRlY29yYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXBhcnQtY29kaWNvbG9neS1kZWNvcmF0aW9ucy9zcmMvbGliL2NvZC1kZWNvcmF0aW9uL2NvZC1kZWNvcmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy1wYXJ0LWNvZGljb2xvZ3ktZGVjb3JhdGlvbnMvc3JjL2xpYi9jb2QtZGVjb3JhdGlvbi9jb2QtZGVjb3JhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFJTCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQU94QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUTVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBTUgsTUFBTSxPQUFPLHNCQUFzQjtJQTJIakMsWUFBWSxXQUF3QixFQUFVLGNBQTZCO1FBQTdCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBUnBFLGtCQUFhLEdBQUc7WUFDckIsS0FBSyxFQUFFLFVBQVU7WUFDakIsUUFBUSxFQUFFLFVBQVU7WUFDcEIsUUFBUSxFQUFFLElBQUk7WUFDZCwwREFBMEQ7WUFDMUQsZUFBZSxFQUFFLElBQUk7U0FDdEIsQ0FBQztRQUdBLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFB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QUF1Qjs4SEFTdEIsVUFBVTtzQkFEcEIsS0FBSztnQkFXQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBS0ssY0FBYztzQkFEeEIsS0FBSztnQkFrQkMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLG9CQUFvQjtzQkFEMUIsS0FBSztnQkFJQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBSUMscUJBQXFCO3NCQUQzQixLQUFLO2dCQUlDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFJQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLG1CQUFtQjtzQkFEekIsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBR0EsV0FBVztzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgVGhlc2F1cnVzRW50cnkgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLWNvcmUnO1xuaW1wb3J0IHsgQXNzZXJ0ZWRDaHJvbm90b3BlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1yZWZzLWFzc2VydGVkLWNocm9ub3RvcGUnO1xuaW1wb3J0IHsgRG9jUmVmZXJlbmNlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1yZWZzLWRvYy1yZWZlcmVuY2VzJztcbmltcG9ydCB7IEZsYWcgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXVpLWZsYWdzLXBpY2tlcic7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQG15cm1pZG9uL25nLW1hdC10b29scyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIENvZERlY29yYXRpb24sXG4gIENvZERlY29yYXRpb25BcnRpc3QsXG4gIENvZERlY29yYXRpb25FbGVtZW50LFxufSBmcm9tICcuLi9jb2QtZGVjb3JhdGlvbnMtcGFydCc7XG5cbi8qKlxuICogTWFudXNjcmlwdCdzIGRlY29yYXRpb24gZWRpdG9yLlxuICogVGhpcyBjb21wb25lbnQgcmVxdWlyZXMgdGhlIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtdHlwZXMgdGhlc2F1cnVzLlxuICogQWNjb3JkaW5nIHRvIHRoZSB0eXBlIHNlbGVjdGVkLCBpdCBjaGFuZ2VzIGl0cyBVSSBieTpcbiAqIC0gZmlsdGVyaW5nIHRoZSBjb250ZW50IG9mIGFsbCB0aGUgb3RoZXIgdGhlc2F1cmkgKGV4Y2VwdFxuICogY29kLWRlY29yYXRpb24tdHlwZS1oaWRkZW4sIHdoaWNoIGhhcyBhIHNwZWNpYWwgbWVhbmluZyksXG4gKiB3aGVuIHRoZXkgaGF2ZSBhIGhpZXJhcmNoeSAoaS5lLiB0aGVpciBJRHMgY29udGFpbiBhIGRvdCkuXG4gKiBTdWNoIHR5cGUtZGVwZW5kZW50IHRoZXNhdXJpIGhhdmUgdGhlaXIgZW50cmllcyBJRHMgcHJlZml4ZWRcbiAqIHdpdGggdGhlIHR5cGUgSUQgZm9sbG93ZWQgYnkgZG90LiBGb3IgaW5zdGFuY2UsIHR5cGUgXCJpbGxcIlxuICogaGFzIHNvbWUgY29ycmVzcG9uZGluZyBlbnRyaWVzIGluIGEgdHlwZS1kZXBlbmRlbnQgdGhlc2F1cnVzXG4gKiBsaWtlIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtdHlwZXMsIGxpa2UgXCJpbGwubWluaWF0dXJlXCIsXG4gKiBcImlsbC5kcmF3aW5nXCIsIGV0Yy5cbiAqIEFsc28sIGlmIHRoZSBmaWx0ZXJlZCBjb250ZW50IG9mIGEgdGhlc2F1cnVzIGhhcHBlbnMgdG8gaGF2ZVxuICogYW4gZW50cnkgSUQgZXF1YWwgdG8gXCItXCIgb25jZSB0aGUgdHlwZSBwcmVmaXggaGFzIGJlZW4gc3RyaXBwZWRcbiAqIG91dCwgdGhpcyBtZWFucyB0aGF0IGluIHRoaXMgY2FzZSB0aGUgY29ycmVzcG9uZGluZyBjb250cm9sXG4gKiBzaG91bGQgYmUgYSBmcmVlIHRleHQgYm94IHJhdGhlciB0aGFuIGEgc2VsZWN0b3IuXG4gKiBUaGlzIGFueXdheSBkb2VzIG5vdCBhcHBseSB0byB0aG9zZSBjb250cm9scyBhbGxvd2luZyBtdWx0aXBsZVxuICogc2VsZWN0aW9ucywgbGlrZSBmbGFncyBvciBjb2xvcnMuXG4gKiAtIGhpZGluZyBzb21lIGNvbnRyb2xzLiBXaGVuIGEgdHlwZSBpcyBzZWxlY3RlZCwgdGhlIHRoZXNhdXJ1c1xuICogY29kLWRlY29yYXRpb24tdHlwZS1oaWRkZW4gaXMgbG9va2VkIHVwIHRvIGZpbmQgYW4gZW50cnlcbiAqIHdpdGggSUQgZXF1YWwgdG8gdGhlIHNlbGVjdGVkIHR5cGUgSUQuIElmIGZvdW5kLCBpdCBpcyBhc3N1bWVkXG4gKiB0aGF0IGl0cyB2YWx1ZSBpcyBhIHNwYWNlLWRlbGltaXRlZCBsaXN0IG9mIG5hbWVzIG9mIHRob3NlXG4gKiBjb250cm9scyB3aGljaCBzaG91bGQgYmUgaGlkZGVuLlxuICogVGhpcyBsb2dpYyBpcyBlZmZlY3RpdmVseSBpbXBsZW1lbnRlZCBieVxuICogQ29kRGVjb3JhdGlvbkVsZW1lbnRDb21wb25lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NhZG11cy1jb2QtZGVjb3JhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2QtZGVjb3JhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvZC1kZWNvcmF0aW9uLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29kRGVjb3JhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgX2RlY29yYXRpb246IENvZERlY29yYXRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2RlY0ZsYWdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgZGVjb3JhdGlvbigpOiBDb2REZWNvcmF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZGVjb3JhdGlvbjtcbiAgfVxuICBwdWJsaWMgc2V0IGRlY29yYXRpb24odmFsdWU6IENvZERlY29yYXRpb24gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9kZWNvcmF0aW9uID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVGb3JtKHZhbHVlKTtcbiAgfVxuXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtZmxhZ3NcbiAgQElucHV0KClcbiAgcHVibGljIGRlY0VsZW1GbGFnRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcblxuICAvLyBjb2QtZGVjb3JhdGlvbi1mbGFnc1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGRlY0ZsYWdFbnRyaWVzKCk6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kZWNGbGFnRW50cmllcztcbiAgfVxuICBwdWJsaWMgc2V0IGRlY0ZsYWdFbnRyaWVzKHZhbHVlOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZGVjRmxhZ0VudHJpZXMgPSB2YWx1ZTtcbiAgICB0aGlzLmF2YWlsRmxhZ3MgPSB2YWx1ZT8ubGVuZ3RoXG4gICAgICA/IHZhbHVlLm1hcCgoZSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDogZS5pZCxcbiAgICAgICAgICAgIGxhYmVsOiBlLnZhbHVlLFxuICAgICAgICAgIH0gYXMgRmxhZztcbiAgICAgICAgfSlcbiAgICAgIDogW107XG4gIH1cblxuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LXR5cGVzIChyZXF1aXJlZClcbiAgQElucHV0KClcbiAgcHVibGljIGRlY0VsZW1UeXBlRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcbiAgLy8gY29kLWRlY29yYXRpb24tdHlwZS1oaWRkZW5cbiAgQElucHV0KClcbiAgcHVibGljIGRlY1R5cGVIaWRkZW5FbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LWNvbG9yc1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGVjRWxlbUNvbG9yRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcbiAgLy8gY29kLWRlY29yYXRpb24tZWxlbWVudC1naWxkaW5nc1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGVjRWxlbUdpbGRpbmdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LXRlY2huaXF1ZXNcbiAgQElucHV0KClcbiAgcHVibGljIGRlY0VsZW1UZWNoRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcbiAgLy8gY29kLWRlY29yYXRpb24tZWxlbWVudC1wb3NpdGlvbnNcbiAgQElucHV0KClcbiAgcHVibGljIGRlY0VsZW1Qb3NFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LXRvb2xzXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZWNFbGVtVG9vbEVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XG4gIC8vIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtdHlwb2xvZ2llc1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGVjRWxlbVR5cG9sRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcbiAgLy8gY29kLWltYWdlLXR5cGVzXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbWdUeXBlRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcbiAgLy8gY29kLWRlY29yYXRpb24tYXJ0aXN0LXR5cGVzXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcnRUeXBlRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcbiAgLy8gY29kLWRlY29yYXRpb24tYXJ0aXN0LXN0eWxlLW5hbWVzXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcnRTdHlsZUVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XG4gIC8vIGNocm9ub3RvcGUtdGFnc1xuICBASW5wdXQoKVxuICBwdWJsaWMgY3RUYWdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xuICAvLyBhc3NlcnRpb24tdGFnc1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXNzVGFnRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcbiAgLy8gZG9jLXJlZmVyZW5jZS10eXBlc1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmVmVHlwZUVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XG4gIC8vIGRvYy1yZWZlcmVuY2UtdGFnc1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmVmVGFnRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcbiAgLy8gZXh0ZXJuYWwtaWQtdGFnc1xuICBASW5wdXQoKVxuICBwdWJsaWMgaWRUYWdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xuICAvLyBleHRlcm5hbC1pZC1zY29wZXNcbiAgQElucHV0KClcbiAgcHVibGljIGlkU2NvcGVFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZGVjb3JhdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPENvZERlY29yYXRpb24+O1xuICBAT3V0cHV0KClcbiAgcHVibGljIGVkaXRvckNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICBwdWJsaWMgZWlkOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIG5hbWU6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgZmxhZ3M6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgY2hyb25vdG9wZXM6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgYXJ0aXN0czogRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBub3RlOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIHJlZmVyZW5jZXM6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgZWxlbWVudHM6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBpbml0aWFsQ2hyb25vdG9wZXM6IEFzc2VydGVkQ2hyb25vdG9wZVtdO1xuICBwdWJsaWMgaW5pdGlhbFJlZmVyZW5jZXM6IERvY1JlZmVyZW5jZVtdO1xuICBwdWJsaWMgaW5pdGlhbEZsYWdzOiBzdHJpbmdbXTtcbiAgcHVibGljIGF2YWlsRmxhZ3M6IEZsYWdbXTtcblxuICBwdWJsaWMgZWRpdGVkRWxlbWVudEluZGV4OiBudW1iZXI7XG4gIHB1YmxpYyBlZGl0ZWRFbGVtZW50OiBDb2REZWNvcmF0aW9uRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHBhcmVudEtleXM6IHN0cmluZ1tdO1xuXG4gIHB1YmxpYyBlZGl0ZWRBcnRpc3RJbmRleDogbnVtYmVyO1xuICBwdWJsaWMgZWRpdGVkQXJ0aXN0PzogQ29kRGVjb3JhdGlvbkFydGlzdDtcblxuICBwdWJsaWMgdGFiSW5kZXg6IG51bWJlcjtcblxuICBwdWJsaWMgZWRpdG9yT3B0aW9ucyA9IHtcbiAgICB0aGVtZTogJ3ZzLWxpZ2h0JyxcbiAgICBsYW5ndWFnZTogJ21hcmtkb3duJyxcbiAgICB3b3JkV3JhcDogJ29uJyxcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXR1bGFyZW4vbmd4LW1vbmFjby1lZGl0b3IvaXNzdWVzLzE5XG4gICAgYXV0b21hdGljTGF5b3V0OiB0cnVlLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSkge1xuICAgIHRoaXMuZWRpdGVkRWxlbWVudEluZGV4ID0gLTE7XG4gICAgdGhpcy5wYXJlbnRLZXlzID0gW107XG4gICAgdGhpcy5lZGl0ZWRBcnRpc3RJbmRleCA9IC0xO1xuICAgIHRoaXMudGFiSW5kZXggPSAwO1xuICAgIHRoaXMuZGVjb3JhdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29kRGVjb3JhdGlvbj4oKTtcbiAgICB0aGlzLmVkaXRvckNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgdGhpcy5pbml0aWFsQ2hyb25vdG9wZXMgPSBbXTtcbiAgICB0aGlzLmluaXRpYWxSZWZlcmVuY2VzID0gW107XG4gICAgdGhpcy5pbml0aWFsRmxhZ3MgPSBbXTtcbiAgICB0aGlzLmF2YWlsRmxhZ3MgPSBbXTtcbiAgICAvLyBmb3JtXG4gICAgdGhpcy5laWQgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCkpO1xuICAgIHRoaXMubmFtZSA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgW1xuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSxcbiAgICBdKTtcbiAgICB0aGlzLmZsYWdzID0gZm9ybUJ1aWxkZXIuY29udHJvbChbXSk7XG4gICAgdGhpcy5jaHJvbm90b3BlcyA9IGZvcm1CdWlsZGVyLmNvbnRyb2woW10pO1xuICAgIHRoaXMuYXJ0aXN0cyA9IGZvcm1CdWlsZGVyLmNvbnRyb2woW10pO1xuICAgIHRoaXMubm90ZSA9IGZvcm1CdWlsZGVyLmNvbnRyb2woVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwMCkpO1xuICAgIHRoaXMucmVmZXJlbmNlcyA9IGZvcm1CdWlsZGVyLmNvbnRyb2woW10pO1xuICAgIHRoaXMuZWxlbWVudHMgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdKTtcbiAgICB0aGlzLmZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBlaWQ6IHRoaXMuZWlkLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgZmxhZ3M6IHRoaXMuZmxhZ3MsXG4gICAgICBjaHJvbm90b3BlczogdGhpcy5jaHJvbm90b3BlcyxcbiAgICAgIGFydGlzdHM6IHRoaXMuYXJ0aXN0cyxcbiAgICAgIG5vdGU6IHRoaXMubm90ZSxcbiAgICAgIHJlZmVyZW5jZXM6IHRoaXMucmVmZXJlbmNlcyxcbiAgICAgIGVsZW1lbnRzOiB0aGlzLmVsZW1lbnRzLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2RlY29yYXRpb24pIHtcbiAgICAgIHRoaXMudXBkYXRlRm9ybSh0aGlzLl9kZWNvcmF0aW9uKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZvcm0oZGVjb3JhdGlvbjogQ29kRGVjb3JhdGlvbiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGlmICghZGVjb3JhdGlvbikge1xuICAgICAgdGhpcy5pbml0aWFsQ2hyb25vdG9wZXMgPSBbXTtcbiAgICAgIHRoaXMuaW5pdGlhbFJlZmVyZW5jZXMgPSBbXTtcbiAgICAgIHRoaXMuaW5pdGlhbEZsYWdzID0gW107XG4gICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmluaXRpYWxDaHJvbm90b3BlcyA9IGRlY29yYXRpb24uY2hyb25vdG9wZXMgfHwgW107XG4gICAgdGhpcy5pbml0aWFsUmVmZXJlbmNlcyA9IGRlY29yYXRpb24ucmVmZXJlbmNlcyB8fCBbXTtcbiAgICB0aGlzLmluaXRpYWxGbGFncyA9IGRlY29yYXRpb24uZmxhZ3MgfHwgW107XG5cbiAgICB0aGlzLmVpZC5zZXRWYWx1ZShkZWNvcmF0aW9uLmVpZCk7XG4gICAgdGhpcy5uYW1lLnNldFZhbHVlKGRlY29yYXRpb24ubmFtZSk7XG4gICAgdGhpcy5ub3RlLnNldFZhbHVlKGRlY29yYXRpb24ubm90ZSk7XG4gICAgdGhpcy5hcnRpc3RzLnNldFZhbHVlKGRlY29yYXRpb24uYXJ0aXN0cyB8fCBbXSk7XG4gICAgdGhpcy5lbGVtZW50cy5zZXRWYWx1ZShkZWNvcmF0aW9uLmVsZW1lbnRzIHx8IFtdKTtcblxuICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xuICB9XG5cbiAgcHVibGljIG9uQ2hyb25vdG9wZXNDaGFuZ2UoY2hyb25vdG9wZXM6IEFzc2VydGVkQ2hyb25vdG9wZVtdKTogdm9pZCB7XG4gICAgdGhpcy5jaHJvbm90b3Blcy5zZXRWYWx1ZShjaHJvbm90b3Blcyk7XG4gICAgdGhpcy5jaHJvbm90b3Blcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5jaHJvbm90b3Blcy5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgcHVibGljIG9uUmVmZXJlbmNlc0NoYW5nZShyZWZlcmVuY2VzOiBEb2NSZWZlcmVuY2VbXSk6IHZvaWQge1xuICAgIHRoaXMucmVmZXJlbmNlcy5zZXRWYWx1ZShyZWZlcmVuY2VzKTtcbiAgICB0aGlzLnJlZmVyZW5jZXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIHRoaXMucmVmZXJlbmNlcy5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0ZWRJZHNDaGFuZ2UoaWRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuZmxhZ3Muc2V0VmFsdWUoaWRzKTtcbiAgICB0aGlzLmZsYWdzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB0aGlzLmZsYWdzLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICBwcml2YXRlIGdldERlY29yYXRpb24oKTogQ29kRGVjb3JhdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVpZDogdGhpcy5laWQudmFsdWU/LnRyaW0oKSxcbiAgICAgIG5hbWU6IHRoaXMubmFtZS52YWx1ZT8udHJpbSgpLFxuICAgICAgZmxhZ3M6IHRoaXMuZmxhZ3MudmFsdWU/Lmxlbmd0aCA/IHRoaXMuZmxhZ3MudmFsdWUgOiB1bmRlZmluZWQsXG4gICAgICBjaHJvbm90b3BlczogdGhpcy5jaHJvbm90b3Blcy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgID8gdGhpcy5jaHJvbm90b3Blcy52YWx1ZVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHJlZmVyZW5jZXM6IHRoaXMucmVmZXJlbmNlcy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgID8gdGhpcy5yZWZlcmVuY2VzLnZhbHVlXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgYXJ0aXN0czogdGhpcy5hcnRpc3RzLnZhbHVlPy5sZW5ndGggPyB0aGlzLmFydGlzdHMudmFsdWUgOiB1bmRlZmluZWQsXG4gICAgICBub3RlOiB0aGlzLm5vdGUudmFsdWU/LnRyaW0oKSxcbiAgICAgIGVsZW1lbnRzOiB0aGlzLmVsZW1lbnRzLnZhbHVlPy5sZW5ndGggPyB0aGlzLmVsZW1lbnRzLnZhbHVlIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICAvLyNyZWdpb24gZWxlbWVudHNcbiAgcHVibGljIGFkZEVsZW1lbnQoKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudDogQ29kRGVjb3JhdGlvbkVsZW1lbnQgPSB7XG4gICAgICB0eXBlOiB0aGlzLmRlY0VsZW1UeXBlRW50cmllcz8ubGVuZ3RoXG4gICAgICAgID8gdGhpcy5kZWNFbGVtVHlwZUVudHJpZXNbMF0uaWRcbiAgICAgICAgOiAnJyxcbiAgICAgIGZsYWdzOiBbXSxcbiAgICAgIHJhbmdlczogW10sXG4gICAgfTtcbiAgICB0aGlzLmVsZW1lbnRzLnNldFZhbHVlKFsuLi50aGlzLmVsZW1lbnRzLnZhbHVlLCBlbGVtZW50XSk7XG4gICAgdGhpcy5lbGVtZW50cy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5lbGVtZW50cy5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuZWRpdEVsZW1lbnQodGhpcy5lbGVtZW50cy52YWx1ZS5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIHB1YmxpYyBlZGl0RWxlbWVudChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgdGhpcy5lZGl0ZWRFbGVtZW50SW5kZXggPSAtMTtcbiAgICAgIHRoaXMudGFiSW5kZXggPSAwO1xuICAgICAgdGhpcy5lZGl0ZWRFbGVtZW50ID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVkaXRlZEVsZW1lbnRJbmRleCA9IGluZGV4O1xuICAgICAgdGhpcy5lZGl0ZWRFbGVtZW50ID0gdGhpcy5lbGVtZW50cy52YWx1ZVtpbmRleF07XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy50YWJJbmRleCA9IDE7XG4gICAgICB9LCAzMDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUGFyZW50S2V5cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZWxlbWVudHMudmFsdWU/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5wYXJlbnRLZXlzID0gW107XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBrZXlzOiBzdHJpbmdbXSA9IHRoaXMuZWxlbWVudHMudmFsdWUubWFwKFxuICAgICAgKGU6IENvZERlY29yYXRpb25FbGVtZW50KSA9PiBlLmtleVxuICAgICk7XG4gICAgdGhpcy5wYXJlbnRLZXlzID0gWy4uLm5ldyBTZXQoa2V5cyldLnNvcnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVsZW1lbnRTYXZlKGl0ZW06IENvZERlY29yYXRpb25FbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5lbGVtZW50cy5zZXRWYWx1ZShcbiAgICAgIHRoaXMuZWxlbWVudHMudmFsdWUubWFwKCh4OiBDb2REZWNvcmF0aW9uRWxlbWVudCwgaTogbnVtYmVyKSA9PlxuICAgICAgICBpID09PSB0aGlzLmVkaXRlZEVsZW1lbnRJbmRleCA/IGl0ZW0gOiB4XG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLmVsZW1lbnRzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB0aGlzLmVsZW1lbnRzLm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy5lZGl0RWxlbWVudCgtMSk7XG4gICAgdGhpcy51cGRhdGVQYXJlbnRLZXlzKCk7XG4gIH1cblxuICBwdWJsaWMgb25FbGVtZW50Q2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0RWxlbWVudCgtMSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRWxlbWVudChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fZGlhbG9nU2VydmljZVxuICAgICAgLmNvbmZpcm0oJ0NvbmZpcm1hdGlvbicsICdEZWxldGUgZWxlbWVudD8nKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKHllcykgPT4ge1xuICAgICAgICBpZiAoeWVzKSB7XG4gICAgICAgICAgY29uc3QgaXRlbXMgPSBbLi4udGhpcy5lbGVtZW50cy52YWx1ZV07XG4gICAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB0aGlzLmVsZW1lbnRzLnNldFZhbHVlKGl0ZW1zKTtcbiAgICAgICAgICB0aGlzLmVsZW1lbnRzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICB0aGlzLmVsZW1lbnRzLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1vdmVFbGVtZW50VXAoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChpbmRleCA8IDEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZWxlbWVudHMudmFsdWVbaW5kZXhdO1xuICAgIGNvbnN0IGl0ZW1zID0gWy4uLnRoaXMuZWxlbWVudHMudmFsdWVdO1xuICAgIGl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgaXRlbXMuc3BsaWNlKGluZGV4IC0gMSwgMCwgaXRlbSk7XG4gICAgdGhpcy5lbGVtZW50cy5zZXRWYWx1ZShpdGVtcyk7XG4gICAgdGhpcy5lbGVtZW50cy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5lbGVtZW50cy5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgcHVibGljIG1vdmVFbGVtZW50RG93bihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGluZGV4ICsgMSA+PSB0aGlzLmVsZW1lbnRzLnZhbHVlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpdGVtID0gdGhpcy5lbGVtZW50cy52YWx1ZVtpbmRleF07XG4gICAgY29uc3QgaXRlbXMgPSBbLi4udGhpcy5lbGVtZW50cy52YWx1ZV07XG4gICAgaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBpdGVtcy5zcGxpY2UoaW5kZXggKyAxLCAwLCBpdGVtKTtcbiAgICB0aGlzLmVsZW1lbnRzLnNldFZhbHVlKGl0ZW1zKTtcbiAgICB0aGlzLmVsZW1lbnRzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB0aGlzLmVsZW1lbnRzLm1hcmtBc0RpcnR5KCk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIGFydGlzdHNcbiAgcHVibGljIGFkZEFydGlzdCgpOiB2b2lkIHtcbiAgICBjb25zdCBhcnRpc3Q6IENvZERlY29yYXRpb25BcnRpc3QgPSB7XG4gICAgICB0eXBlOiB0aGlzLmFydFR5cGVFbnRyaWVzPy5sZW5ndGggPyB0aGlzLmFydFR5cGVFbnRyaWVzWzBdLmlkIDogJycsXG4gICAgICBuYW1lOiAnJyxcbiAgICB9O1xuICAgIHRoaXMuYXJ0aXN0cy5zZXRWYWx1ZShbLi4udGhpcy5hcnRpc3RzLnZhbHVlLCBhcnRpc3RdKTtcbiAgICB0aGlzLmFydGlzdHMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIHRoaXMuYXJ0aXN0cy5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuZWRpdEFydGlzdCh0aGlzLmFydGlzdHMudmFsdWUubGVuZ3RoIC0gMSk7XG4gIH1cblxuICBwdWJsaWMgZWRpdEFydGlzdChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgdGhpcy5lZGl0ZWRBcnRpc3RJbmRleCA9IC0xO1xuICAgICAgdGhpcy5lZGl0ZWRBcnRpc3QgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZWRpdGVkQXJ0aXN0SW5kZXggPSBpbmRleDtcbiAgICAgIHRoaXMuZWRpdGVkQXJ0aXN0ID0gdGhpcy5hcnRpc3RzLnZhbHVlW2luZGV4XTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25BcnRpc3RTYXZlKGl0ZW06IENvZERlY29yYXRpb25BcnRpc3QpOiB2b2lkIHtcbiAgICB0aGlzLmFydGlzdHMuc2V0VmFsdWUoW1xuICAgICAgLi4udGhpcy5hcnRpc3RzLnZhbHVlLm1hcCgoeDogQ29kRGVjb3JhdGlvbkFydGlzdCwgaTogbnVtYmVyKSA9PlxuICAgICAgICBpID09PSB0aGlzLmVkaXRlZEFydGlzdEluZGV4ID8gaXRlbSA6IHhcbiAgICAgICksXG4gICAgXSk7XG4gICAgdGhpcy5hcnRpc3RzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB0aGlzLmFydGlzdHMubWFya0FzRGlydHkoKTtcbiAgICB0aGlzLmVkaXRBcnRpc3QoLTEpO1xuICB9XG5cbiAgcHVibGljIG9uQXJ0aXN0Q2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0QXJ0aXN0KC0xKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVBcnRpc3QoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2RpYWxvZ1NlcnZpY2VcbiAgICAgIC5jb25maXJtKCdDb25maXJtYXRpb24nLCAnRGVsZXRlIGFydGlzdD8nKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKHllcykgPT4ge1xuICAgICAgICBpZiAoeWVzKSB7XG4gICAgICAgICAgY29uc3QgaXRlbXMgPSBbLi4udGhpcy5hcnRpc3RzLnZhbHVlXTtcbiAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIHRoaXMuYXJ0aXN0cy5zZXRWYWx1ZShpdGVtcyk7XG4gICAgICAgICAgdGhpcy5hcnRpc3RzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICB0aGlzLmFydGlzdHMubWFya0FzRGlydHkoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbW92ZUFydGlzdFVwKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoaW5kZXggPCAxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmFydGlzdHMudmFsdWVbaW5kZXhdO1xuICAgIGNvbnN0IGl0ZW1zID0gWy4uLnRoaXMuYXJ0aXN0cy52YWx1ZV07XG4gICAgaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBpdGVtcy5zcGxpY2UoaW5kZXggLSAxLCAwLCBpdGVtKTtcbiAgICB0aGlzLmFydGlzdHMuc2V0VmFsdWUoaXRlbXMpO1xuICAgIHRoaXMuYXJ0aXN0cy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5hcnRpc3RzLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICBwdWJsaWMgbW92ZUFydGlzdERvd24oaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChpbmRleCArIDEgPj0gdGhpcy5hcnRpc3RzLnZhbHVlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpdGVtID0gdGhpcy5hcnRpc3RzLnZhbHVlW2luZGV4XTtcbiAgICBjb25zdCBpdGVtcyA9IFsuLi50aGlzLmFydGlzdHMudmFsdWVdO1xuICAgIGl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgaXRlbXMuc3BsaWNlKGluZGV4ICsgMSwgMCwgaXRlbSk7XG4gICAgdGhpcy5hcnRpc3RzLnNldFZhbHVlKGl0ZW1zKTtcbiAgICB0aGlzLmFydGlzdHMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIHRoaXMuYXJ0aXN0cy5tYXJrQXNEaXJ0eSgpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3JDbG9zZS5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kZWNvcmF0aW9uQ2hhbmdlLmVtaXQodGhpcy5nZXREZWNvcmF0aW9uKCkpO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cInNhdmUoKVwiPlxuICA8bWF0LXRhYi1ncm91cCBbKHNlbGVjdGVkSW5kZXgpXT1cInRhYkluZGV4XCI+XG4gICAgPCEtLSBHRU5FUkFMIC0tPlxuICAgIDxtYXQtdGFiIGxhYmVsPVwiZ2VuZXJhbFwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPCEtLSBpZCAtLT5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwiZWlkXCIgcGxhY2Vob2xkZXI9XCJJRFwiIC8+XG4gICAgICAgICAgPG1hdC1lcnJvclxuICAgICAgICAgICAgKm5nSWY9XCIkYW55KGVpZCkuZXJyb3JzPy5yZXF1aXJlZCAmJiAoZWlkLmRpcnR5IHx8IGVpZC50b3VjaGVkKVwiXG4gICAgICAgICAgICA+RUlEIHJlcXVpcmVkPC9tYXQtZXJyb3JcbiAgICAgICAgICA+XG4gICAgICAgICAgPG1hdC1lcnJvclxuICAgICAgICAgICAgKm5nSWY9XCIkYW55KGVpZCkuZXJyb3JzPy5tYXhMZW5ndGggJiYgKGVpZC5kaXJ0eSB8fCBlaWQudG91Y2hlZClcIlxuICAgICAgICAgICAgPkVJRCB0b28gbG9uZzwvbWF0LWVycm9yXG4gICAgICAgICAgPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAmbmJzcDtcbiAgICAgICAgPCEtLSBuYW1lIC0tPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJuYW1lXCIgcGxhY2Vob2xkZXI9XCJuYW1lXCIgLz5cbiAgICAgICAgICA8bWF0LWVycm9yXG4gICAgICAgICAgICAqbmdJZj1cIiRhbnkobmFtZSkuZXJyb3JzPy5yZXF1aXJlZCAmJiAobmFtZS5kaXJ0eSB8fCBuYW1lLnRvdWNoZWQpXCJcbiAgICAgICAgICAgID5uYW1lIHJlcXVpcmVkPC9tYXQtZXJyb3JcbiAgICAgICAgICA+XG4gICAgICAgICAgPG1hdC1lcnJvclxuICAgICAgICAgICAgKm5nSWY9XCIkYW55KG5hbWUpLmVycm9ycz8ubWF4TGVuZ3RoICYmIChuYW1lLmRpcnR5IHx8IG5hbWUudG91Y2hlZClcIlxuICAgICAgICAgICAgPm5hbWUgdG9vIGxvbmc8L21hdC1lcnJvclxuICAgICAgICAgID5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIGZsYWdzIC0tPlxuICAgICAgPGZpZWxkc2V0PlxuICAgICAgICA8bGVnZW5kPmZlYXR1cmVzPC9sZWdlbmQ+XG4gICAgICAgIDxjYWRtdXMtdWktZmxhZ3MtcGlja2VyXG4gICAgICAgICAgW2ZsYWdzXT1cImF2YWlsRmxhZ3NcIlxuICAgICAgICAgIFtzZWxlY3RlZElkc109XCJpbml0aWFsRmxhZ3NcIlxuICAgICAgICAgIChzZWxlY3RlZElkc0NoYW5nZSk9XCJvblNlbGVjdGVkSWRzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+PC9jYWRtdXMtdWktZmxhZ3MtcGlja2VyPlxuICAgICAgPC9maWVsZHNldD5cblxuICAgICAgPCEtLSBub3RlIC0tPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibG9uZy10ZXh0XCI+XG4gICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgIHJvd3M9XCIzXCJcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJub3RlXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIm5vdGVcIlxuICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgPG1hdC1lcnJvclxuICAgICAgICAgICpuZ0lmPVwiJGFueShub3RlKS5lcnJvcnM/Lm1heExlbmd0aCAmJiAobm90ZS5kaXJ0eSB8fCBub3RlLnRvdWNoZWQpXCJcbiAgICAgICAgICA+bm90ZSB0b28gbG9uZzwvbWF0LWVycm9yXG4gICAgICAgID5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDwhLS0gY2hyb25vdG9wZXMgLS0+XG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGVcbiAgICAgICAgICAgID48bWF0LWljb24gc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDhweDsgY29sb3I6ICMyNGE1MjRcIlxuICAgICAgICAgICAgICA+aG91cmdsYXNzX2VtcHR5PC9tYXQtaWNvblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgY2hyb25vdG9wZXM8L21hdC1wYW5lbC10aXRsZVxuICAgICAgICAgID5cbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgPGNhZG11cy1hc3NlcnRlZC1jaHJvbm90b3BlLXNldFxuICAgICAgICAgIFt0YWdFbnRyaWVzXT1cImN0VGFnRW50cmllc1wiXG4gICAgICAgICAgW2Fzc1RhZ0VudHJpZXNdPVwiYXNzVGFnRW50cmllc1wiXG4gICAgICAgICAgW3JlZlRhZ0VudHJpZXNdPVwicmVmVGFnRW50cmllc1wiXG4gICAgICAgICAgW3JlZlR5cGVFbnRyaWVzXT1cInJlZlR5cGVFbnRyaWVzXCJcbiAgICAgICAgICBbY2hyb25vdG9wZXNdPVwiaW5pdGlhbENocm9ub3RvcGVzXCJcbiAgICAgICAgICAoY2hyb25vdG9wZXNDaGFuZ2UpPVwib25DaHJvbm90b3Blc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvY2FkbXVzLWFzc2VydGVkLWNocm9ub3RvcGUtc2V0PlxuICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuXG4gICAgICA8IS0tIHJlZmVyZW5jZXMgLS0+XG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGVcbiAgICAgICAgICAgID48bWF0LWljb24gc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDhweDsgY29sb3I6ICNiYjNkNmNcIlxuICAgICAgICAgICAgICA+bGlicmFyeV9ib29rczwvbWF0LWljb25cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIHJlZmVyZW5jZXM8L21hdC1wYW5lbC10aXRsZVxuICAgICAgICAgID5cbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgPGNhZG11cy1yZWZzLWRvYy1yZWZlcmVuY2VzXG4gICAgICAgICAgW3RhZ0VudHJpZXNdPVwicmVmVGFnRW50cmllc1wiXG4gICAgICAgICAgW3R5cGVFbnRyaWVzXT1cInJlZlR5cGVFbnRyaWVzXCJcbiAgICAgICAgICBbcmVmZXJlbmNlc109XCJpbml0aWFsUmVmZXJlbmNlc1wiXG4gICAgICAgICAgKHJlZmVyZW5jZXNDaGFuZ2UpPVwib25SZWZlcmVuY2VzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+PC9jYWRtdXMtcmVmcy1kb2MtcmVmZXJlbmNlcz5cbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cblxuICAgICAgPCEtLSBhcnRpc3RzIC0tPlxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWw+XG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlXG4gICAgICAgICAgICA+PG1hdC1pY29uIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA4cHg7IGNvbG9yOiAjZGRjZDQxXCJcbiAgICAgICAgICAgICAgPnBhbGV0dGU8L21hdC1pY29uXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICBhcnRpc3RzPC9tYXQtcGFuZWwtdGl0bGVcbiAgICAgICAgICA+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWRkQXJ0aXN0KClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5hZGRfY2lyY2xlPC9tYXQtaWNvbj4gYWRkIGFydGlzdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHRhYmxlICpuZ0lmPVwiYXJ0aXN0cz8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgICAgIDx0aD50eXBlPC90aD5cbiAgICAgICAgICAgICAgPHRoPm5hbWU8L3RoPlxuICAgICAgICAgICAgICA8dGg+RUlEPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGFydGlzdCBvZiBhcnRpc3RzPy52YWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgICAgIGxldCBmaXJzdCA9IGZpcnN0O1xuICAgICAgICAgICAgICAgIGxldCBsYXN0ID0gbGFzdFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRWRpdCB0aGlzIGFydGlzdFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdEFydGlzdChpKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiTW92ZSB0aGlzIGFydGlzdCB1cFwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmlyc3RcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVBcnRpc3RVcChpKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X3Vwd2FyZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJNb3ZlIHRoaXMgYXJ0aXN0IGRvd25cIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxhc3RcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVBcnRpc3REb3duKGkpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfZG93bndhcmQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkRlbGV0ZSB0aGlzIGFydGlzdFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQXJ0aXN0KGkpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+cmVtb3ZlX2NpcmNsZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICB7eyBhcnRpc3QudHlwZSB8IGZsYXRMb29rdXA6IGFydFR5cGVFbnRyaWVzOlwiaWRcIjpcInZhbHVlXCIgfX1cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7IGFydGlzdC5uYW1lIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7IGFydGlzdC5laWQgfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbFxuICAgICAgICAgIFtleHBhbmRlZF09XCJlZGl0ZWRBcnRpc3RcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdGVkQXJ0aXN0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+YXJ0aXN0IHt7IGVkaXRlZEFydGlzdD8ubmFtZSB9fTwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgPGNhZG11cy1jb2QtZGVjb3JhdGlvbi1hcnRpc3RcbiAgICAgICAgICAgIFtjdFRhZ0VudHJpZXNdPVwiY3RUYWdFbnRyaWVzXCJcbiAgICAgICAgICAgIFthc3NUYWdFbnRyaWVzXT1cImFzc1RhZ0VudHJpZXNcIlxuICAgICAgICAgICAgW3JlZlRhZ0VudHJpZXNdPVwicmVmVGFnRW50cmllc1wiXG4gICAgICAgICAgICBbYXJ0VHlwZUVudHJpZXNdPVwiYXJ0VHlwZUVudHJpZXNcIlxuICAgICAgICAgICAgW3JlZlR5cGVFbnRyaWVzXT1cInJlZlR5cGVFbnRyaWVzXCJcbiAgICAgICAgICAgIFthcnRTdHlsZUVudHJpZXNdPVwiYXJ0U3R5bGVFbnRyaWVzXCJcbiAgICAgICAgICAgIFtpZFRhZ0VudHJpZXNdPVwiaWRUYWdFbnRyaWVzXCJcbiAgICAgICAgICAgIFtpZFNjb3BlRW50cmllc109XCJpZFNjb3BlRW50cmllc1wiXG4gICAgICAgICAgICBbYXJ0aXN0XT1cImVkaXRlZEFydGlzdFwiXG4gICAgICAgICAgICAoYXJ0aXN0Q2hhbmdlKT1cIm9uQXJ0aXN0U2F2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChlZGl0b3JDbG9zZSk9XCJvbkFydGlzdENsb3NlKClcIlxuICAgICAgICAgID48L2NhZG11cy1jb2QtZGVjb3JhdGlvbi1hcnRpc3Q+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cblxuICAgICAgPCEtLSBlbGVtZW50cyAtLT5cbiAgICAgIDxoMz5lbGVtZW50czwvaDM+XG4gICAgICA8ZGl2PlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAoY2xpY2spPVwiYWRkRWxlbWVudCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbj5hZGRfY2lyY2xlPC9tYXQtaWNvbj4gYWRkIGVsZW1lbnRcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDx0YWJsZSAqbmdJZj1cImVsZW1lbnRzPy52YWx1ZT8ubGVuZ3RoXCI+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICAgIDx0aD5rZXk8L3RoPlxuICAgICAgICAgICAgPHRoPnBhcmVudDwvdGg+XG4gICAgICAgICAgICA8dGg+dHlwZTwvdGg+XG4gICAgICAgICAgICA8dGg+c3ViamVjdDwvdGg+XG4gICAgICAgICAgICA8dGg+ZXh0ZW50PC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IGVsZW1lbnQgb2YgZWxlbWVudHM/LnZhbHVlO1xuICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgICBsZXQgZmlyc3QgPSBmaXJzdDtcbiAgICAgICAgICAgICAgbGV0IGxhc3QgPSBsYXN0XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkVkaXQgdGhpcyBlbGVtZW50XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdEVsZW1lbnQoaSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJNb3ZlIHRoaXMgZWxlbWVudCB1cFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpcnN0XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZUVsZW1lbnRVcChpKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfdXB3YXJkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiTW92ZSB0aGlzIGVsZW1lbnQgZG93blwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxhc3RcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlRWxlbWVudERvd24oaSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2Rvd253YXJkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEZWxldGUgdGhpcyBlbGVtZW50XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRWxlbWVudChpKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+cmVtb3ZlX2NpcmNsZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZD57eyBlbGVtZW50LmtleSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQ+e3sgZWxlbWVudC5wYXJlbnRLZXkgfX08L3RkPlxuICAgICAgICAgICAgPHRkPnt7IGVsZW1lbnQudHlwZSB8IGZsYXRMb29rdXA6IGRlY0VsZW1UeXBlRW50cmllczpcImlkXCI6XCJ2YWx1ZVwiIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZD57eyBlbGVtZW50LnN1YmplY3QgfX08L3RkPlxuICAgICAgICAgICAgPHRkPnt7IGVsZW1lbnQucmFuZ2VzIHwgY29kTG9jYXRpb25SYW5nZSB9fTwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9tYXQtdGFiPlxuXG4gICAgPCEtLSBFTEVNRU5UIC0tPlxuICAgIDxtYXQtdGFiIGxhYmVsPVwiZWxlbWVudFwiICpuZ0lmPVwiZWRpdGVkRWxlbWVudFwiPlxuICAgICAgPGNhZG11cy1jb2QtZGVjb3JhdGlvbi1lbGVtZW50XG4gICAgICAgIFtpbWdUeXBlRW50cmllc109XCJpbWdUeXBlRW50cmllc1wiXG4gICAgICAgIFtkZWNFbGVtUG9zRW50cmllc109XCJkZWNFbGVtUG9zRW50cmllc1wiXG4gICAgICAgIFtkZWNFbGVtRmxhZ0VudHJpZXNdPVwiZGVjRWxlbUZsYWdFbnRyaWVzXCJcbiAgICAgICAgW2RlY0VsZW1UZWNoRW50cmllc109XCJkZWNFbGVtVGVjaEVudHJpZXNcIlxuICAgICAgICBbZGVjRWxlbVRvb2xFbnRyaWVzXT1cImRlY0VsZW1Ub29sRW50cmllc1wiXG4gICAgICAgIFtkZWNFbGVtVHlwZUVudHJpZXNdPVwiZGVjRWxlbVR5cGVFbnRyaWVzXCJcbiAgICAgICAgW2RlY0VsZW1Db2xvckVudHJpZXNdPVwiZGVjRWxlbUNvbG9yRW50cmllc1wiXG4gICAgICAgIFtkZWNFbGVtVHlwb2xFbnRyaWVzXT1cImRlY0VsZW1UeXBvbEVudHJpZXNcIlxuICAgICAgICBbZGVjVHlwZUhpZGRlbkVudHJpZXNdPVwiZGVjVHlwZUhpZGRlbkVudHJpZXNcIlxuICAgICAgICBbZGVjRWxlbUdpbGRpbmdFbnRyaWVzXT1cImRlY0VsZW1HaWxkaW5nRW50cmllc1wiXG4gICAgICAgIFtlbGVtZW50XT1cImVkaXRlZEVsZW1lbnRcIlxuICAgICAgICBbcGFyZW50S2V5c109XCJwYXJlbnRLZXlzXCJcbiAgICAgICAgKGVsZW1lbnRDaGFuZ2UpPVwib25FbGVtZW50U2F2ZSgkZXZlbnQpXCJcbiAgICAgICAgKGVkaXRvckNsb3NlKT1cIm9uRWxlbWVudENsb3NlKClcIlxuICAgICAgPjwvY2FkbXVzLWNvZC1kZWNvcmF0aW9uLWVsZW1lbnQ+XG4gICAgPC9tYXQtdGFiPlxuICA8L21hdC10YWItZ3JvdXA+XG5cbiAgPCEtLSBidXR0b25zIC0tPlxuICA8aHIgLz5cbiAgPGRpdj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIG1hdFRvb2x0aXA9XCJEaXNjYXJkIGRlY29yYXRpb24gY2hhbmdlc1wiXG4gICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBtYXRUb29sdGlwPVwiQWNjZXB0IGRlY29yYXRpb24gY2hhbmdlc1wiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IGZvcm0ucHJpc3RpbmVcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5jaGVja19jaXJjbGU8L21hdC1pY29uPiBkZWNvcmF0aW9uXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
|
|
383
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWRlY29yYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXBhcnQtY29kaWNvbG9neS1kZWNvcmF0aW9ucy9zcmMvbGliL2NvZC1kZWNvcmF0aW9uL2NvZC1kZWNvcmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy1wYXJ0LWNvZGljb2xvZ3ktZGVjb3JhdGlvbnMvc3JjL2xpYi9jb2QtZGVjb3JhdGlvbi9jb2QtZGVjb3JhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFJTCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQU94QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUTVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBTUgsTUFBTSxPQUFPLHNCQUFzQjtJQTJIakMsWUFBWSxXQUF3QixFQUFVLGNBQTZCO1FBQTdCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBUnBFLGtCQUFhLEdBQUc7WUFDckIsS0FBSyxFQUFFLFVBQVU7WUFDakIsUUFBUSxFQUFFLFVBQVU7WUFDcEIsUUFBUSxFQUFFLElBQUk7WUFDZCwwREFBMEQ7WUFDMUQsZUFBZSxFQUFFLElBQUk7U0FDdEIsQ0FBQztRQUdBLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFB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QUF1Qjs4SEFTdEIsVUFBVTtzQkFEcEIsS0FBSztnQkFXQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBS0ssY0FBYztzQkFEeEIsS0FBSztnQkFrQkMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLG9CQUFvQjtzQkFEMUIsS0FBSztnQkFJQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBSUMscUJBQXFCO3NCQUQzQixLQUFLO2dCQUlDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFJQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLG1CQUFtQjtzQkFEekIsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBR0EsV0FBVztzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IFRoZXNhdXJ1c0VudHJ5IH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb3JlJztcclxuaW1wb3J0IHsgQXNzZXJ0ZWRDaHJvbm90b3BlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1yZWZzLWFzc2VydGVkLWNocm9ub3RvcGUnO1xyXG5pbXBvcnQgeyBEb2NSZWZlcmVuY2UgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXJlZnMtZG9jLXJlZmVyZW5jZXMnO1xyXG5pbXBvcnQgeyBGbGFnIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy11aS1mbGFncy1waWNrZXInO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQG15cm1pZG9uL25nLW1hdC10b29scyc7XHJcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29kRGVjb3JhdGlvbixcclxuICBDb2REZWNvcmF0aW9uQXJ0aXN0LFxyXG4gIENvZERlY29yYXRpb25FbGVtZW50LFxyXG59IGZyb20gJy4uL2NvZC1kZWNvcmF0aW9ucy1wYXJ0JztcclxuXHJcbi8qKlxyXG4gKiBNYW51c2NyaXB0J3MgZGVjb3JhdGlvbiBlZGl0b3IuXHJcbiAqIFRoaXMgY29tcG9uZW50IHJlcXVpcmVzIHRoZSBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LXR5cGVzIHRoZXNhdXJ1cy5cclxuICogQWNjb3JkaW5nIHRvIHRoZSB0eXBlIHNlbGVjdGVkLCBpdCBjaGFuZ2VzIGl0cyBVSSBieTpcclxuICogLSBmaWx0ZXJpbmcgdGhlIGNvbnRlbnQgb2YgYWxsIHRoZSBvdGhlciB0aGVzYXVyaSAoZXhjZXB0XHJcbiAqIGNvZC1kZWNvcmF0aW9uLXR5cGUtaGlkZGVuLCB3aGljaCBoYXMgYSBzcGVjaWFsIG1lYW5pbmcpLFxyXG4gKiB3aGVuIHRoZXkgaGF2ZSBhIGhpZXJhcmNoeSAoaS5lLiB0aGVpciBJRHMgY29udGFpbiBhIGRvdCkuXHJcbiAqIFN1Y2ggdHlwZS1kZXBlbmRlbnQgdGhlc2F1cmkgaGF2ZSB0aGVpciBlbnRyaWVzIElEcyBwcmVmaXhlZFxyXG4gKiB3aXRoIHRoZSB0eXBlIElEIGZvbGxvd2VkIGJ5IGRvdC4gRm9yIGluc3RhbmNlLCB0eXBlIFwiaWxsXCJcclxuICogaGFzIHNvbWUgY29ycmVzcG9uZGluZyBlbnRyaWVzIGluIGEgdHlwZS1kZXBlbmRlbnQgdGhlc2F1cnVzXHJcbiAqIGxpa2UgY29kLWRlY29yYXRpb24tZWxlbWVudC10eXBlcywgbGlrZSBcImlsbC5taW5pYXR1cmVcIixcclxuICogXCJpbGwuZHJhd2luZ1wiLCBldGMuXHJcbiAqIEFsc28sIGlmIHRoZSBmaWx0ZXJlZCBjb250ZW50IG9mIGEgdGhlc2F1cnVzIGhhcHBlbnMgdG8gaGF2ZVxyXG4gKiBhbiBlbnRyeSBJRCBlcXVhbCB0byBcIi1cIiBvbmNlIHRoZSB0eXBlIHByZWZpeCBoYXMgYmVlbiBzdHJpcHBlZFxyXG4gKiBvdXQsIHRoaXMgbWVhbnMgdGhhdCBpbiB0aGlzIGNhc2UgdGhlIGNvcnJlc3BvbmRpbmcgY29udHJvbFxyXG4gKiBzaG91bGQgYmUgYSBmcmVlIHRleHQgYm94IHJhdGhlciB0aGFuIGEgc2VsZWN0b3IuXHJcbiAqIFRoaXMgYW55d2F5IGRvZXMgbm90IGFwcGx5IHRvIHRob3NlIGNvbnRyb2xzIGFsbG93aW5nIG11bHRpcGxlXHJcbiAqIHNlbGVjdGlvbnMsIGxpa2UgZmxhZ3Mgb3IgY29sb3JzLlxyXG4gKiAtIGhpZGluZyBzb21lIGNvbnRyb2xzLiBXaGVuIGEgdHlwZSBpcyBzZWxlY3RlZCwgdGhlIHRoZXNhdXJ1c1xyXG4gKiBjb2QtZGVjb3JhdGlvbi10eXBlLWhpZGRlbiBpcyBsb29rZWQgdXAgdG8gZmluZCBhbiBlbnRyeVxyXG4gKiB3aXRoIElEIGVxdWFsIHRvIHRoZSBzZWxlY3RlZCB0eXBlIElELiBJZiBmb3VuZCwgaXQgaXMgYXNzdW1lZFxyXG4gKiB0aGF0IGl0cyB2YWx1ZSBpcyBhIHNwYWNlLWRlbGltaXRlZCBsaXN0IG9mIG5hbWVzIG9mIHRob3NlXHJcbiAqIGNvbnRyb2xzIHdoaWNoIHNob3VsZCBiZSBoaWRkZW4uXHJcbiAqIFRoaXMgbG9naWMgaXMgZWZmZWN0aXZlbHkgaW1wbGVtZW50ZWQgYnlcclxuICogQ29kRGVjb3JhdGlvbkVsZW1lbnRDb21wb25lbnQuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NhZG11cy1jb2QtZGVjb3JhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvZC1kZWNvcmF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb2QtZGVjb3JhdGlvbi5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2REZWNvcmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIF9kZWNvcmF0aW9uOiBDb2REZWNvcmF0aW9uIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX2RlY0ZsYWdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZGVjb3JhdGlvbigpOiBDb2REZWNvcmF0aW9uIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWNvcmF0aW9uO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGRlY29yYXRpb24odmFsdWU6IENvZERlY29yYXRpb24gfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2RlY29yYXRpb24gPSB2YWx1ZTtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LWZsYWdzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVjRWxlbUZsYWdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvLyBjb2QtZGVjb3JhdGlvbi1mbGFnc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBkZWNGbGFnRW50cmllcygpOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWNGbGFnRW50cmllcztcclxuICB9XHJcbiAgcHVibGljIHNldCBkZWNGbGFnRW50cmllcyh2YWx1ZTogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fZGVjRmxhZ0VudHJpZXMgPSB2YWx1ZTtcclxuICAgIHRoaXMuYXZhaWxGbGFncyA9IHZhbHVlPy5sZW5ndGhcclxuICAgICAgPyB2YWx1ZS5tYXAoKGUpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiBlLmlkLFxyXG4gICAgICAgICAgICBsYWJlbDogZS52YWx1ZSxcclxuICAgICAgICAgIH0gYXMgRmxhZztcclxuICAgICAgICB9KVxyXG4gICAgICA6IFtdO1xyXG4gIH1cclxuXHJcbiAgLy8gY29kLWRlY29yYXRpb24tZWxlbWVudC10eXBlcyAocmVxdWlyZWQpXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVjRWxlbVR5cGVFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLXR5cGUtaGlkZGVuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVjVHlwZUhpZGRlbkVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcbiAgLy8gY29kLWRlY29yYXRpb24tZWxlbWVudC1jb2xvcnNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWNFbGVtQ29sb3JFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtZ2lsZGluZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWNFbGVtR2lsZGluZ0VudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcbiAgLy8gY29kLWRlY29yYXRpb24tZWxlbWVudC10ZWNobmlxdWVzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVjRWxlbVRlY2hFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtcG9zaXRpb25zXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVjRWxlbVBvc0VudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcbiAgLy8gY29kLWRlY29yYXRpb24tZWxlbWVudC10b29sc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRlY0VsZW1Ub29sRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LXR5cG9sb2dpZXNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWNFbGVtVHlwb2xFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGNvZC1pbWFnZS10eXBlc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGltZ1R5cGVFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWFydGlzdC10eXBlc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFydFR5cGVFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWFydGlzdC1zdHlsZS1uYW1lc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFydFN0eWxlRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBjaHJvbm90b3BlLXRhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdFRhZ0VudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcbiAgLy8gYXNzZXJ0aW9uLXRhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhc3NUYWdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGRvYy1yZWZlcmVuY2UtdHlwZXNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZWZUeXBlRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBkb2MtcmVmZXJlbmNlLXRhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZWZUYWdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGV4dGVybmFsLWlkLXRhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpZFRhZ0VudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcbiAgLy8gZXh0ZXJuYWwtaWQtc2NvcGVzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaWRTY29wZUVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBkZWNvcmF0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q29kRGVjb3JhdGlvbj47XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGVkaXRvckNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PjtcclxuXHJcbiAgcHVibGljIGVpZDogRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIG5hbWU6IEZvcm1Db250cm9sO1xyXG4gIHB1YmxpYyBmbGFnczogRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIGNocm9ub3RvcGVzOiBGb3JtQ29udHJvbDtcclxuICBwdWJsaWMgYXJ0aXN0czogRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIG5vdGU6IEZvcm1Db250cm9sO1xyXG4gIHB1YmxpYyByZWZlcmVuY2VzOiBGb3JtQ29udHJvbDtcclxuICBwdWJsaWMgZWxlbWVudHM6IEZvcm1Db250cm9sO1xyXG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIHB1YmxpYyBpbml0aWFsQ2hyb25vdG9wZXM6IEFzc2VydGVkQ2hyb25vdG9wZVtdO1xyXG4gIHB1YmxpYyBpbml0aWFsUmVmZXJlbmNlczogRG9jUmVmZXJlbmNlW107XHJcbiAgcHVibGljIGluaXRpYWxGbGFnczogc3RyaW5nW107XHJcbiAgcHVibGljIGF2YWlsRmxhZ3M6IEZsYWdbXTtcclxuXHJcbiAgcHVibGljIGVkaXRlZEVsZW1lbnRJbmRleDogbnVtYmVyO1xyXG4gIHB1YmxpYyBlZGl0ZWRFbGVtZW50OiBDb2REZWNvcmF0aW9uRWxlbWVudCB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgcGFyZW50S2V5czogc3RyaW5nW107XHJcblxyXG4gIHB1YmxpYyBlZGl0ZWRBcnRpc3RJbmRleDogbnVtYmVyO1xyXG4gIHB1YmxpYyBlZGl0ZWRBcnRpc3Q/OiBDb2REZWNvcmF0aW9uQXJ0aXN0O1xyXG5cclxuICBwdWJsaWMgdGFiSW5kZXg6IG51bWJlcjtcclxuXHJcbiAgcHVibGljIGVkaXRvck9wdGlvbnMgPSB7XHJcbiAgICB0aGVtZTogJ3ZzLWxpZ2h0JyxcclxuICAgIGxhbmd1YWdlOiAnbWFya2Rvd24nLFxyXG4gICAgd29yZFdyYXA6ICdvbicsXHJcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXR1bGFyZW4vbmd4LW1vbmFjby1lZGl0b3IvaXNzdWVzLzE5XHJcbiAgICBhdXRvbWF0aWNMYXlvdXQ6IHRydWUsXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmVkaXRlZEVsZW1lbnRJbmRleCA9IC0xO1xyXG4gICAgdGhpcy5wYXJlbnRLZXlzID0gW107XHJcbiAgICB0aGlzLmVkaXRlZEFydGlzdEluZGV4ID0gLTE7XHJcbiAgICB0aGlzLnRhYkluZGV4ID0gMDtcclxuICAgIHRoaXMuZGVjb3JhdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29kRGVjb3JhdGlvbj4oKTtcclxuICAgIHRoaXMuZWRpdG9yQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIHRoaXMuaW5pdGlhbENocm9ub3RvcGVzID0gW107XHJcbiAgICB0aGlzLmluaXRpYWxSZWZlcmVuY2VzID0gW107XHJcbiAgICB0aGlzLmluaXRpYWxGbGFncyA9IFtdO1xyXG4gICAgdGhpcy5hdmFpbEZsYWdzID0gW107XHJcbiAgICAvLyBmb3JtXHJcbiAgICB0aGlzLmVpZCA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKSk7XHJcbiAgICB0aGlzLm5hbWUgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFtcclxuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApLFxyXG4gICAgXSk7XHJcbiAgICB0aGlzLmZsYWdzID0gZm9ybUJ1aWxkZXIuY29udHJvbChbXSk7XHJcbiAgICB0aGlzLmNocm9ub3RvcGVzID0gZm9ybUJ1aWxkZXIuY29udHJvbChbXSk7XHJcbiAgICB0aGlzLmFydGlzdHMgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdKTtcclxuICAgIHRoaXMubm90ZSA9IGZvcm1CdWlsZGVyLmNvbnRyb2woVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwMCkpO1xyXG4gICAgdGhpcy5yZWZlcmVuY2VzID0gZm9ybUJ1aWxkZXIuY29udHJvbChbXSk7XHJcbiAgICB0aGlzLmVsZW1lbnRzID0gZm9ybUJ1aWxkZXIuY29udHJvbChbXSk7XHJcbiAgICB0aGlzLmZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIGVpZDogdGhpcy5laWQsXHJcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcclxuICAgICAgZmxhZ3M6IHRoaXMuZmxhZ3MsXHJcbiAgICAgIGNocm9ub3RvcGVzOiB0aGlzLmNocm9ub3RvcGVzLFxyXG4gICAgICBhcnRpc3RzOiB0aGlzLmFydGlzdHMsXHJcbiAgICAgIG5vdGU6IHRoaXMubm90ZSxcclxuICAgICAgcmVmZXJlbmNlczogdGhpcy5yZWZlcmVuY2VzLFxyXG4gICAgICBlbGVtZW50czogdGhpcy5lbGVtZW50cyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fZGVjb3JhdGlvbikge1xyXG4gICAgICB0aGlzLnVwZGF0ZUZvcm0odGhpcy5fZGVjb3JhdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZvcm0oZGVjb3JhdGlvbjogQ29kRGVjb3JhdGlvbiB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgaWYgKCFkZWNvcmF0aW9uKSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbENocm9ub3RvcGVzID0gW107XHJcbiAgICAgIHRoaXMuaW5pdGlhbFJlZmVyZW5jZXMgPSBbXTtcclxuICAgICAgdGhpcy5pbml0aWFsRmxhZ3MgPSBbXTtcclxuICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRpYWxDaHJvbm90b3BlcyA9IGRlY29yYXRpb24uY2hyb25vdG9wZXMgfHwgW107XHJcbiAgICB0aGlzLmluaXRpYWxSZWZlcmVuY2VzID0gZGVjb3JhdGlvbi5yZWZlcmVuY2VzIHx8IFtdO1xyXG4gICAgdGhpcy5pbml0aWFsRmxhZ3MgPSBkZWNvcmF0aW9uLmZsYWdzIHx8IFtdO1xyXG5cclxuICAgIHRoaXMuZWlkLnNldFZhbHVlKGRlY29yYXRpb24uZWlkKTtcclxuICAgIHRoaXMubmFtZS5zZXRWYWx1ZShkZWNvcmF0aW9uLm5hbWUpO1xyXG4gICAgdGhpcy5ub3RlLnNldFZhbHVlKGRlY29yYXRpb24ubm90ZSk7XHJcbiAgICB0aGlzLmFydGlzdHMuc2V0VmFsdWUoZGVjb3JhdGlvbi5hcnRpc3RzIHx8IFtdKTtcclxuICAgIHRoaXMuZWxlbWVudHMuc2V0VmFsdWUoZGVjb3JhdGlvbi5lbGVtZW50cyB8fCBbXSk7XHJcblxyXG4gICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DaHJvbm90b3Blc0NoYW5nZShjaHJvbm90b3BlczogQXNzZXJ0ZWRDaHJvbm90b3BlW10pOiB2b2lkIHtcclxuICAgIHRoaXMuY2hyb25vdG9wZXMuc2V0VmFsdWUoY2hyb25vdG9wZXMpO1xyXG4gICAgdGhpcy5jaHJvbm90b3Blcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLmNocm9ub3RvcGVzLm1hcmtBc0RpcnR5KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25SZWZlcmVuY2VzQ2hhbmdlKHJlZmVyZW5jZXM6IERvY1JlZmVyZW5jZVtdKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlZmVyZW5jZXMuc2V0VmFsdWUocmVmZXJlbmNlcyk7XHJcbiAgICB0aGlzLnJlZmVyZW5jZXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5yZWZlcmVuY2VzLm1hcmtBc0RpcnR5KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25TZWxlY3RlZElkc0NoYW5nZShpZHM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLmZsYWdzLnNldFZhbHVlKGlkcyk7XHJcbiAgICB0aGlzLmZsYWdzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuZmxhZ3MubWFya0FzRGlydHkoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGVjb3JhdGlvbigpOiBDb2REZWNvcmF0aW9uIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGVpZDogdGhpcy5laWQudmFsdWU/LnRyaW0oKSxcclxuICAgICAgbmFtZTogdGhpcy5uYW1lLnZhbHVlPy50cmltKCksXHJcbiAgICAgIGZsYWdzOiB0aGlzLmZsYWdzLnZhbHVlPy5sZW5ndGggPyB0aGlzLmZsYWdzLnZhbHVlIDogdW5kZWZpbmVkLFxyXG4gICAgICBjaHJvbm90b3BlczogdGhpcy5jaHJvbm90b3Blcy52YWx1ZT8ubGVuZ3RoXHJcbiAgICAgICAgPyB0aGlzLmNocm9ub3RvcGVzLnZhbHVlXHJcbiAgICAgICAgOiB1bmRlZmluZWQsXHJcbiAgICAgIHJlZmVyZW5jZXM6IHRoaXMucmVmZXJlbmNlcy52YWx1ZT8ubGVuZ3RoXHJcbiAgICAgICAgPyB0aGlzLnJlZmVyZW5jZXMudmFsdWVcclxuICAgICAgICA6IHVuZGVmaW5lZCxcclxuICAgICAgYXJ0aXN0czogdGhpcy5hcnRpc3RzLnZhbHVlPy5sZW5ndGggPyB0aGlzLmFydGlzdHMudmFsdWUgOiB1bmRlZmluZWQsXHJcbiAgICAgIG5vdGU6IHRoaXMubm90ZS52YWx1ZT8udHJpbSgpLFxyXG4gICAgICBlbGVtZW50czogdGhpcy5lbGVtZW50cy52YWx1ZT8ubGVuZ3RoID8gdGhpcy5lbGVtZW50cy52YWx1ZSA6IHVuZGVmaW5lZCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gZWxlbWVudHNcclxuICBwdWJsaWMgYWRkRWxlbWVudCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVsZW1lbnQ6IENvZERlY29yYXRpb25FbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiB0aGlzLmRlY0VsZW1UeXBlRW50cmllcz8ubGVuZ3RoXHJcbiAgICAgICAgPyB0aGlzLmRlY0VsZW1UeXBlRW50cmllc1swXS5pZFxyXG4gICAgICAgIDogJycsXHJcbiAgICAgIGZsYWdzOiBbXSxcclxuICAgICAgcmFuZ2VzOiBbXSxcclxuICAgIH07XHJcbiAgICB0aGlzLmVsZW1lbnRzLnNldFZhbHVlKFsuLi50aGlzLmVsZW1lbnRzLnZhbHVlLCBlbGVtZW50XSk7XHJcbiAgICB0aGlzLmVsZW1lbnRzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuZWxlbWVudHMubWFya0FzRGlydHkoKTtcclxuICAgIHRoaXMuZWRpdEVsZW1lbnQodGhpcy5lbGVtZW50cy52YWx1ZS5sZW5ndGggLSAxKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlZGl0RWxlbWVudChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoaW5kZXggPCAwKSB7XHJcbiAgICAgIHRoaXMuZWRpdGVkRWxlbWVudEluZGV4ID0gLTE7XHJcbiAgICAgIHRoaXMudGFiSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLmVkaXRlZEVsZW1lbnQgPSB1bmRlZmluZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVkaXRlZEVsZW1lbnRJbmRleCA9IGluZGV4O1xyXG4gICAgICB0aGlzLmVkaXRlZEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRzLnZhbHVlW2luZGV4XTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50YWJJbmRleCA9IDE7XHJcbiAgICAgIH0sIDMwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVBhcmVudEtleXMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZWxlbWVudHMudmFsdWU/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnBhcmVudEtleXMgPSBbXTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGtleXM6IHN0cmluZ1tdID0gdGhpcy5lbGVtZW50cy52YWx1ZS5tYXAoXHJcbiAgICAgIChlOiBDb2REZWNvcmF0aW9uRWxlbWVudCkgPT4gZS5rZXlcclxuICAgICk7XHJcbiAgICB0aGlzLnBhcmVudEtleXMgPSBbLi4ubmV3IFNldChrZXlzKV0uc29ydCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRWxlbWVudFNhdmUoaXRlbTogQ29kRGVjb3JhdGlvbkVsZW1lbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZWxlbWVudHMuc2V0VmFsdWUoXHJcbiAgICAgIHRoaXMuZWxlbWVudHMudmFsdWUubWFwKCh4OiBDb2REZWNvcmF0aW9uRWxlbWVudCwgaTogbnVtYmVyKSA9PlxyXG4gICAgICAgIGkgPT09IHRoaXMuZWRpdGVkRWxlbWVudEluZGV4ID8gaXRlbSA6IHhcclxuICAgICAgKVxyXG4gICAgKTtcclxuICAgIHRoaXMuZWxlbWVudHMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5lbGVtZW50cy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy5lZGl0RWxlbWVudCgtMSk7XHJcbiAgICB0aGlzLnVwZGF0ZVBhcmVudEtleXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkVsZW1lbnRDbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdEVsZW1lbnQoLTEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZUVsZW1lbnQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nU2VydmljZVxyXG4gICAgICAuY29uZmlybSgnQ29uZmlybWF0aW9uJywgJ0RlbGV0ZSBlbGVtZW50PycpXHJcbiAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHllcykgPT4ge1xyXG4gICAgICAgIGlmICh5ZXMpIHtcclxuICAgICAgICAgIGNvbnN0IGl0ZW1zID0gWy4uLnRoaXMuZWxlbWVudHMudmFsdWVdO1xyXG4gICAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIHRoaXMuZWxlbWVudHMuc2V0VmFsdWUoaXRlbXMpO1xyXG4gICAgICAgICAgdGhpcy5lbGVtZW50cy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICB0aGlzLmVsZW1lbnRzLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBtb3ZlRWxlbWVudFVwKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChpbmRleCA8IDEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZWxlbWVudHMudmFsdWVbaW5kZXhdO1xyXG4gICAgY29uc3QgaXRlbXMgPSBbLi4udGhpcy5lbGVtZW50cy52YWx1ZV07XHJcbiAgICBpdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgaXRlbXMuc3BsaWNlKGluZGV4IC0gMSwgMCwgaXRlbSk7XHJcbiAgICB0aGlzLmVsZW1lbnRzLnNldFZhbHVlKGl0ZW1zKTtcclxuICAgIHRoaXMuZWxlbWVudHMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5lbGVtZW50cy5tYXJrQXNEaXJ0eSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1vdmVFbGVtZW50RG93bihpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoaW5kZXggKyAxID49IHRoaXMuZWxlbWVudHMudmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmVsZW1lbnRzLnZhbHVlW2luZGV4XTtcclxuICAgIGNvbnN0IGl0ZW1zID0gWy4uLnRoaXMuZWxlbWVudHMudmFsdWVdO1xyXG4gICAgaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGl0ZW1zLnNwbGljZShpbmRleCArIDEsIDAsIGl0ZW0pO1xyXG4gICAgdGhpcy5lbGVtZW50cy5zZXRWYWx1ZShpdGVtcyk7XHJcbiAgICB0aGlzLmVsZW1lbnRzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuZWxlbWVudHMubWFya0FzRGlydHkoKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBhcnRpc3RzXHJcbiAgcHVibGljIGFkZEFydGlzdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFydGlzdDogQ29kRGVjb3JhdGlvbkFydGlzdCA9IHtcclxuICAgICAgdHlwZTogdGhpcy5hcnRUeXBlRW50cmllcz8ubGVuZ3RoID8gdGhpcy5hcnRUeXBlRW50cmllc1swXS5pZCA6ICcnLFxyXG4gICAgICBuYW1lOiAnJyxcclxuICAgIH07XHJcbiAgICB0aGlzLmFydGlzdHMuc2V0VmFsdWUoWy4uLnRoaXMuYXJ0aXN0cy52YWx1ZSwgYXJ0aXN0XSk7XHJcbiAgICB0aGlzLmFydGlzdHMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5hcnRpc3RzLm1hcmtBc0RpcnR5KCk7XHJcbiAgICB0aGlzLmVkaXRBcnRpc3QodGhpcy5hcnRpc3RzLnZhbHVlLmxlbmd0aCAtIDEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVkaXRBcnRpc3QoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICB0aGlzLmVkaXRlZEFydGlzdEluZGV4ID0gLTE7XHJcbiAgICAgIHRoaXMuZWRpdGVkQXJ0aXN0ID0gdW5kZWZpbmVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0ZWRBcnRpc3RJbmRleCA9IGluZGV4O1xyXG4gICAgICB0aGlzLmVkaXRlZEFydGlzdCA9IHRoaXMuYXJ0aXN0cy52YWx1ZVtpbmRleF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25BcnRpc3RTYXZlKGl0ZW06IENvZERlY29yYXRpb25BcnRpc3QpOiB2b2lkIHtcclxuICAgIHRoaXMuYXJ0aXN0cy5zZXRWYWx1ZShbXHJcbiAgICAgIC4uLnRoaXMuYXJ0aXN0cy52YWx1ZS5tYXAoKHg6IENvZERlY29yYXRpb25BcnRpc3QsIGk6IG51bWJlcikgPT5cclxuICAgICAgICBpID09PSB0aGlzLmVkaXRlZEFydGlzdEluZGV4ID8gaXRlbSA6IHhcclxuICAgICAgKSxcclxuICAgIF0pO1xyXG4gICAgdGhpcy5hcnRpc3RzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuYXJ0aXN0cy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy5lZGl0QXJ0aXN0KC0xKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkFydGlzdENsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0QXJ0aXN0KC0xKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVBcnRpc3QoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nU2VydmljZVxyXG4gICAgICAuY29uZmlybSgnQ29uZmlybWF0aW9uJywgJ0RlbGV0ZSBhcnRpc3Q/JylcclxuICAgICAgLnBpcGUodGFrZSgxKSlcclxuICAgICAgLnN1YnNjcmliZSgoeWVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHllcykge1xyXG4gICAgICAgICAgY29uc3QgaXRlbXMgPSBbLi4udGhpcy5hcnRpc3RzLnZhbHVlXTtcclxuICAgICAgICAgIGl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB0aGlzLmFydGlzdHMuc2V0VmFsdWUoaXRlbXMpO1xyXG4gICAgICAgICAgdGhpcy5hcnRpc3RzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgIHRoaXMuYXJ0aXN0cy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbW92ZUFydGlzdFVwKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChpbmRleCA8IDEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuYXJ0aXN0cy52YWx1ZVtpbmRleF07XHJcbiAgICBjb25zdCBpdGVtcyA9IFsuLi50aGlzLmFydGlzdHMudmFsdWVdO1xyXG4gICAgaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGl0ZW1zLnNwbGljZShpbmRleCAtIDEsIDAsIGl0ZW0pO1xyXG4gICAgdGhpcy5hcnRpc3RzLnNldFZhbHVlKGl0ZW1zKTtcclxuICAgIHRoaXMuYXJ0aXN0cy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLmFydGlzdHMubWFya0FzRGlydHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBtb3ZlQXJ0aXN0RG93bihpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoaW5kZXggKyAxID49IHRoaXMuYXJ0aXN0cy52YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuYXJ0aXN0cy52YWx1ZVtpbmRleF07XHJcbiAgICBjb25zdCBpdGVtcyA9IFsuLi50aGlzLmFydGlzdHMudmFsdWVdO1xyXG4gICAgaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGl0ZW1zLnNwbGljZShpbmRleCArIDEsIDAsIGl0ZW0pO1xyXG4gICAgdGhpcy5hcnRpc3RzLnNldFZhbHVlKGl0ZW1zKTtcclxuICAgIHRoaXMuYXJ0aXN0cy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLmFydGlzdHMubWFya0FzRGlydHkoKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvckNsb3NlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZGVjb3JhdGlvbkNoYW5nZS5lbWl0KHRoaXMuZ2V0RGVjb3JhdGlvbigpKTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKHN1Ym1pdCk9XCJzYXZlKClcIj5cclxuICA8bWF0LXRhYi1ncm91cCBbKHNlbGVjdGVkSW5kZXgpXT1cInRhYkluZGV4XCI+XHJcbiAgICA8IS0tIEdFTkVSQUwgLS0+XHJcbiAgICA8bWF0LXRhYiBsYWJlbD1cImdlbmVyYWxcIj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8IS0tIGlkIC0tPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwiZWlkXCIgcGxhY2Vob2xkZXI9XCJJRFwiIC8+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICpuZ0lmPVwiJGFueShlaWQpLmVycm9ycz8ucmVxdWlyZWQgJiYgKGVpZC5kaXJ0eSB8fCBlaWQudG91Y2hlZClcIlxyXG4gICAgICAgICAgICA+RUlEIHJlcXVpcmVkPC9tYXQtZXJyb3JcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgKm5nSWY9XCIkYW55KGVpZCkuZXJyb3JzPy5tYXhMZW5ndGggJiYgKGVpZC5kaXJ0eSB8fCBlaWQudG91Y2hlZClcIlxyXG4gICAgICAgICAgICA+RUlEIHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgICAgID5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICZuYnNwO1xyXG4gICAgICAgIDwhLS0gbmFtZSAtLT5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cIm5hbWVcIiBwbGFjZWhvbGRlcj1cIm5hbWVcIiAvPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAqbmdJZj1cIiRhbnkobmFtZSkuZXJyb3JzPy5yZXF1aXJlZCAmJiAobmFtZS5kaXJ0eSB8fCBuYW1lLnRvdWNoZWQpXCJcclxuICAgICAgICAgICAgPm5hbWUgcmVxdWlyZWQ8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAqbmdJZj1cIiRhbnkobmFtZSkuZXJyb3JzPy5tYXhMZW5ndGggJiYgKG5hbWUuZGlydHkgfHwgbmFtZS50b3VjaGVkKVwiXHJcbiAgICAgICAgICAgID5uYW1lIHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgICAgID5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gZmxhZ3MgLS0+XHJcbiAgICAgIDxmaWVsZHNldD5cclxuICAgICAgICA8bGVnZW5kPmZlYXR1cmVzPC9sZWdlbmQ+XHJcbiAgICAgICAgPGNhZG11cy11aS1mbGFncy1waWNrZXJcclxuICAgICAgICAgIFtmbGFnc109XCJhdmFpbEZsYWdzXCJcclxuICAgICAgICAgIFtzZWxlY3RlZElkc109XCJpbml0aWFsRmxhZ3NcIlxyXG4gICAgICAgICAgKHNlbGVjdGVkSWRzQ2hhbmdlKT1cIm9uU2VsZWN0ZWRJZHNDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvY2FkbXVzLXVpLWZsYWdzLXBpY2tlcj5cclxuICAgICAgPC9maWVsZHNldD5cclxuXHJcbiAgICAgIDwhLS0gbm90ZSAtLT5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibG9uZy10ZXh0XCI+XHJcbiAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICByb3dzPVwiM1wiXHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cIm5vdGVcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJub3RlXCJcclxuICAgICAgICA+PC90ZXh0YXJlYT5cclxuICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAqbmdJZj1cIiRhbnkobm90ZSkuZXJyb3JzPy5tYXhMZW5ndGggJiYgKG5vdGUuZGlydHkgfHwgbm90ZS50b3VjaGVkKVwiXHJcbiAgICAgICAgICA+bm90ZSB0b28gbG9uZzwvbWF0LWVycm9yXHJcbiAgICAgICAgPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgPCEtLSBjaHJvbm90b3BlcyAtLT5cclxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgPG1hdC1wYW5lbC10aXRsZVxyXG4gICAgICAgICAgICA+PG1hdC1pY29uIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA4cHg7IGNvbG9yOiAjMjRhNTI0XCJcclxuICAgICAgICAgICAgICA+aG91cmdsYXNzX2VtcHR5PC9tYXQtaWNvblxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIGNocm9ub3RvcGVzPC9tYXQtcGFuZWwtdGl0bGVcclxuICAgICAgICAgID5cclxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgIDxjYWRtdXMtYXNzZXJ0ZWQtY2hyb25vdG9wZS1zZXRcclxuICAgICAgICAgIFt0YWdFbnRyaWVzXT1cImN0VGFnRW50cmllc1wiXHJcbiAgICAgICAgICBbYXNzVGFnRW50cmllc109XCJhc3NUYWdFbnRyaWVzXCJcclxuICAgICAgICAgIFtyZWZUYWdFbnRyaWVzXT1cInJlZlRhZ0VudHJpZXNcIlxyXG4gICAgICAgICAgW3JlZlR5cGVFbnRyaWVzXT1cInJlZlR5cGVFbnRyaWVzXCJcclxuICAgICAgICAgIFtjaHJvbm90b3Blc109XCJpbml0aWFsQ2hyb25vdG9wZXNcIlxyXG4gICAgICAgICAgKGNocm9ub3RvcGVzQ2hhbmdlKT1cIm9uQ2hyb25vdG9wZXNDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvY2FkbXVzLWFzc2VydGVkLWNocm9ub3RvcGUtc2V0PlxyXG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblxyXG4gICAgICA8IS0tIHJlZmVyZW5jZXMgLS0+XHJcbiAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGVcclxuICAgICAgICAgICAgPjxtYXQtaWNvbiBzdHlsZT1cIm1hcmdpbi1yaWdodDogOHB4OyBjb2xvcjogI2JiM2Q2Y1wiXHJcbiAgICAgICAgICAgICAgPmxpYnJhcnlfYm9va3M8L21hdC1pY29uXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgcmVmZXJlbmNlczwvbWF0LXBhbmVsLXRpdGxlXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICA8Y2FkbXVzLXJlZnMtZG9jLXJlZmVyZW5jZXNcclxuICAgICAgICAgIFt0YWdFbnRyaWVzXT1cInJlZlRhZ0VudHJpZXNcIlxyXG4gICAgICAgICAgW3R5cGVFbnRyaWVzXT1cInJlZlR5cGVFbnRyaWVzXCJcclxuICAgICAgICAgIFtyZWZlcmVuY2VzXT1cImluaXRpYWxSZWZlcmVuY2VzXCJcclxuICAgICAgICAgIChyZWZlcmVuY2VzQ2hhbmdlKT1cIm9uUmVmZXJlbmNlc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICA+PC9jYWRtdXMtcmVmcy1kb2MtcmVmZXJlbmNlcz5cclxuICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cclxuICAgICAgPCEtLSBhcnRpc3RzIC0tPlxyXG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlXHJcbiAgICAgICAgICAgID48bWF0LWljb24gc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDhweDsgY29sb3I6ICNkZGNkNDFcIlxyXG4gICAgICAgICAgICAgID5wYWxldHRlPC9tYXQtaWNvblxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIGFydGlzdHM8L21hdC1wYW5lbC10aXRsZVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWRkQXJ0aXN0KClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YWRkX2NpcmNsZTwvbWF0LWljb24+IGFkZCBhcnRpc3RcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDx0YWJsZSAqbmdJZj1cImFydGlzdHM/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgICAgICAgIDx0aD50eXBlPC90aD5cclxuICAgICAgICAgICAgICA8dGg+bmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoPkVJRDwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgIGxldCBhcnRpc3Qgb2YgYXJ0aXN0cz8udmFsdWU7XHJcbiAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgbGV0IGZpcnN0ID0gZmlyc3Q7XHJcbiAgICAgICAgICAgICAgICBsZXQgbGFzdCA9IGxhc3RcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJFZGl0IHRoaXMgYXJ0aXN0XCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRBcnRpc3QoaSlcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiTW92ZSB0aGlzIGFydGlzdCB1cFwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaXJzdFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlQXJ0aXN0VXAoaSlcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfdXB3YXJkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJNb3ZlIHRoaXMgYXJ0aXN0IGRvd25cIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlQXJ0aXN0RG93bihpKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19kb3dud2FyZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxyXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRGVsZXRlIHRoaXMgYXJ0aXN0XCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUFydGlzdChpKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5yZW1vdmVfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAge3sgYXJ0aXN0LnR5cGUgfCBmbGF0TG9va3VwOiBhcnRUeXBlRW50cmllczpcImlkXCI6XCJ2YWx1ZVwiIH19XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+e3sgYXJ0aXN0Lm5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57eyBhcnRpc3QuZWlkIH19PC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbFxyXG4gICAgICAgICAgW2V4cGFuZGVkXT1cImVkaXRlZEFydGlzdFwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRlZEFydGlzdFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPmFydGlzdCB7eyBlZGl0ZWRBcnRpc3Q/Lm5hbWUgfX08L21hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICA8Y2FkbXVzLWNvZC1kZWNvcmF0aW9uLWFydGlzdFxyXG4gICAgICAgICAgICBbY3RUYWdFbnRyaWVzXT1cImN0VGFnRW50cmllc1wiXHJcbiAgICAgICAgICAgIFthc3NUYWdFbnRyaWVzXT1cImFzc1RhZ0VudHJpZXNcIlxyXG4gICAgICAgICAgICBbcmVmVGFnRW50cmllc109XCJyZWZUYWdFbnRyaWVzXCJcclxuICAgICAgICAgICAgW2FydFR5cGVFbnRyaWVzXT1cImFydFR5cGVFbnRyaWVzXCJcclxuICAgICAgICAgICAgW3JlZlR5cGVFbnRyaWVzXT1cInJlZlR5cGVFbnRyaWVzXCJcclxuICAgICAgICAgICAgW2FydFN0eWxlRW50cmllc109XCJhcnRTdHlsZUVudHJpZXNcIlxyXG4gICAgICAgICAgICBbaWRUYWdFbnRyaWVzXT1cImlkVGFnRW50cmllc1wiXHJcbiAgICAgICAgICAgIFtpZFNjb3BlRW50cmllc109XCJpZFNjb3BlRW50cmllc1wiXHJcbiAgICAgICAgICAgIFthcnRpc3RdPVwiZWRpdGVkQXJ0aXN0XCJcclxuICAgICAgICAgICAgKGFydGlzdENoYW5nZSk9XCJvbkFydGlzdFNhdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChlZGl0b3JDbG9zZSk9XCJvbkFydGlzdENsb3NlKClcIlxyXG4gICAgICAgICAgPjwvY2FkbXVzLWNvZC1kZWNvcmF0aW9uLWFydGlzdD5cclxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuXHJcbiAgICAgIDwhLS0gZWxlbWVudHMgLS0+XHJcbiAgICAgIDxoMz5lbGVtZW50czwvaDM+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiYWRkRWxlbWVudCgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWljb24+YWRkX2NpcmNsZTwvbWF0LWljb24+IGFkZCBlbGVtZW50XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8dGFibGUgKm5nSWY9XCJlbGVtZW50cz8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgICAgIDx0aD5rZXk8L3RoPlxyXG4gICAgICAgICAgICA8dGg+cGFyZW50PC90aD5cclxuICAgICAgICAgICAgPHRoPnR5cGU8L3RoPlxyXG4gICAgICAgICAgICA8dGg+c3ViamVjdDwvdGg+XHJcbiAgICAgICAgICAgIDx0aD5leHRlbnQ8L3RoPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICBsZXQgZWxlbWVudCBvZiBlbGVtZW50cz8udmFsdWU7XHJcbiAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICBsZXQgZmlyc3QgPSBmaXJzdDtcclxuICAgICAgICAgICAgICBsZXQgbGFzdCA9IGxhc3RcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkVkaXQgdGhpcyBlbGVtZW50XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0RWxlbWVudChpKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiTW92ZSB0aGlzIGVsZW1lbnQgdXBcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpcnN0XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlRWxlbWVudFVwKGkpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfdXB3YXJkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk1vdmUgdGhpcyBlbGVtZW50IGRvd25cIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxhc3RcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVFbGVtZW50RG93bihpKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2Rvd253YXJkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEZWxldGUgdGhpcyBlbGVtZW50XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVFbGVtZW50KGkpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+cmVtb3ZlX2NpcmNsZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57eyBlbGVtZW50LmtleSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57eyBlbGVtZW50LnBhcmVudEtleSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57eyBlbGVtZW50LnR5cGUgfCBmbGF0TG9va3VwOiBkZWNFbGVtVHlwZUVudHJpZXM6XCJpZFwiOlwidmFsdWVcIiB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57eyBlbGVtZW50LnN1YmplY3QgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3sgZWxlbWVudC5yYW5nZXMgfCBjb2RMb2NhdGlvblJhbmdlIH19PC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvbWF0LXRhYj5cclxuXHJcbiAgICA8IS0tIEVMRU1FTlQgLS0+XHJcbiAgICA8bWF0LXRhYiBsYWJlbD1cImVsZW1lbnRcIiAqbmdJZj1cImVkaXRlZEVsZW1lbnRcIj5cclxuICAgICAgPGNhZG11cy1jb2QtZGVjb3JhdGlvbi1lbGVtZW50XHJcbiAgICAgICAgW2ltZ1R5cGVFbnRyaWVzXT1cImltZ1R5cGVFbnRyaWVzXCJcclxuICAgICAgICBbZGVjRWxlbVBvc0VudHJpZXNdPVwiZGVjRWxlbVBvc0VudHJpZXNcIlxyXG4gICAgICAgIFtkZWNFbGVtRmxhZ0VudHJpZXNdPVwiZGVjRWxlbUZsYWdFbnRyaWVzXCJcclxuICAgICAgICBbZGVjRWxlbVRlY2hFbnRyaWVzXT1cImRlY0VsZW1UZWNoRW50cmllc1wiXHJcbiAgICAgICAgW2RlY0VsZW1Ub29sRW50cmllc109XCJkZWNFbGVtVG9vbEVudHJpZXNcIlxyXG4gICAgICAgIFtkZWNFbGVtVHlwZUVudHJpZXNdPVwiZGVjRWxlbVR5cGVFbnRyaWVzXCJcclxuICAgICAgICBbZGVjRWxlbUNvbG9yRW50cmllc109XCJkZWNFbGVtQ29sb3JFbnRyaWVzXCJcclxuICAgICAgICBbZGVjRWxlbVR5cG9sRW50cmllc109XCJkZWNFbGVtVHlwb2xFbnRyaWVzXCJcclxuICAgICAgICBbZGVjVHlwZUhpZGRlbkVudHJpZXNdPVwiZGVjVHlwZUhpZGRlbkVudHJpZXNcIlxyXG4gICAgICAgIFtkZWNFbGVtR2lsZGluZ0VudHJpZXNdPVwiZGVjRWxlbUdpbGRpbmdFbnRyaWVzXCJcclxuICAgICAgICBbZWxlbWVudF09XCJlZGl0ZWRFbGVtZW50XCJcclxuICAgICAgICBbcGFyZW50S2V5c109XCJwYXJlbnRLZXlzXCJcclxuICAgICAgICAoZWxlbWVudENoYW5nZSk9XCJvbkVsZW1lbnRTYXZlKCRldmVudClcIlxyXG4gICAgICAgIChlZGl0b3JDbG9zZSk9XCJvbkVsZW1lbnRDbG9zZSgpXCJcclxuICAgICAgPjwvY2FkbXVzLWNvZC1kZWNvcmF0aW9uLWVsZW1lbnQ+XHJcbiAgICA8L21hdC10YWI+XHJcbiAgPC9tYXQtdGFiLWdyb3VwPlxyXG5cclxuICA8IS0tIGJ1dHRvbnMgLS0+XHJcbiAgPGhyIC8+XHJcbiAgPGRpdj5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNvbG9yPVwid2FyblwiXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBtYXRUb29sdGlwPVwiRGlzY2FyZCBkZWNvcmF0aW9uIGNoYW5nZXNcIlxyXG4gICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgbWF0VG9vbHRpcD1cIkFjY2VwdCBkZWNvcmF0aW9uIGNoYW5nZXNcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IGZvcm0ucHJpc3RpbmVcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj4gZGVjb3JhdGlvblxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT5cclxuIl19
|