@lowcodeunit/applications-flow-common 1.33.119-lets-get-social-ish → 1.33.121-projectSetupTooltip

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.
Files changed (141) hide show
  1. package/bundles/lowcodeunit-applications-flow-common.umd.js +520 -2547
  2. package/bundles/lowcodeunit-applications-flow-common.umd.js.map +1 -1
  3. package/bundles/lowcodeunit-applications-flow-common.umd.min.js +2 -2
  4. package/bundles/lowcodeunit-applications-flow-common.umd.min.js.map +1 -1
  5. package/esm2015/lcu.api.js +1 -3
  6. package/esm2015/lib/applications-flow.module.js +6 -87
  7. package/esm2015/lib/elements/base-form/base-form.component.js +5 -5
  8. package/esm2015/lib/elements/dynamic-tabs/dynamic-tabs.component.js +1 -1
  9. package/esm2015/lib/elements/form-card/form-card.component.js +1 -1
  10. package/esm2015/lib/elements/projects/controls/builds/builds.component.js +10 -5
  11. package/esm2015/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.js +7 -7
  12. package/esm2015/lib/elements/projects/controls/forms/source-control/source-control.component.js +7 -4
  13. package/esm2015/lib/elements/projects/controls/git-auth/git-auth.component.js +1 -1
  14. package/esm2015/lib/elements/projects/controls/header/header.component.js +9 -9
  15. package/esm2015/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.js +2 -2
  16. package/esm2015/lib/elements/projects/controls/project-items/project-items.component.js +8 -8
  17. package/esm2015/lib/elements/projects/controls/project-tabs/project-tabs.component.js +1 -1
  18. package/esm2015/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.js +11 -9
  19. package/esm2015/lib/elements/projects/controls/tabs/apps-flow/npm-package-select/npm-package-select.component.js +1 -1
  20. package/esm2015/lib/elements/projects/controls/tabs/devops/devops.component.js +8 -8
  21. package/esm2015/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.js +8 -8
  22. package/esm2015/lib/elements/projects/controls/tabs/domains/domains.component.js +7 -7
  23. package/esm2015/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.js +6 -6
  24. package/esm2015/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.js +7 -7
  25. package/esm2015/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.js +7 -7
  26. package/esm2015/lib/elements/projects/controls/tabs/general/general.component.js +1 -1
  27. package/esm2015/lib/elements/projects/projects.component.js +144 -18
  28. package/esm2015/lib/services/applications-flow-events.service.js +83 -0
  29. package/esm2015/lib/services/applications-flow.service.js +1 -9
  30. package/esm2015/lib/services/project.service.js +9 -9
  31. package/esm2015/lowcodeunit-applications-flow-common.js +17 -34
  32. package/fesm2015/lowcodeunit-applications-flow-common.js +297 -1962
  33. package/fesm2015/lowcodeunit-applications-flow-common.js.map +1 -1
  34. package/lcu.api.d.ts +0 -2
  35. package/lcu.api.d.ts.map +1 -1
  36. package/lib/applications-flow.module.d.ts.map +1 -1
  37. package/lib/elements/base-form/base-form.component.d.ts +3 -3
  38. package/lib/elements/base-form/base-form.component.d.ts.map +1 -1
  39. package/lib/elements/projects/controls/builds/builds.component.d.ts +3 -1
  40. package/lib/elements/projects/controls/builds/builds.component.d.ts.map +1 -1
  41. package/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.d.ts +3 -3
  42. package/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.d.ts.map +1 -1
  43. package/lib/elements/projects/controls/forms/source-control/source-control.component.d.ts +3 -1
  44. package/lib/elements/projects/controls/forms/source-control/source-control.component.d.ts.map +1 -1
  45. package/lib/elements/projects/controls/header/header.component.d.ts +3 -3
  46. package/lib/elements/projects/controls/header/header.component.d.ts.map +1 -1
  47. package/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.d.ts.map +1 -1
  48. package/lib/elements/projects/controls/project-items/project-items.component.d.ts +3 -3
  49. package/lib/elements/projects/controls/project-items/project-items.component.d.ts.map +1 -1
  50. package/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.d.ts +3 -3
  51. package/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.d.ts.map +1 -1
  52. package/lib/elements/projects/controls/tabs/devops/devops.component.d.ts +3 -3
  53. package/lib/elements/projects/controls/tabs/devops/devops.component.d.ts.map +1 -1
  54. package/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.d.ts +3 -3
  55. package/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.d.ts.map +1 -1
  56. package/lib/elements/projects/controls/tabs/domains/domains.component.d.ts +3 -3
  57. package/lib/elements/projects/controls/tabs/domains/domains.component.d.ts.map +1 -1
  58. package/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.d.ts +3 -3
  59. package/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.d.ts.map +1 -1
  60. package/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.d.ts +3 -3
  61. package/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.d.ts.map +1 -1
  62. package/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.d.ts +3 -3
  63. package/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.d.ts.map +1 -1
  64. package/lib/elements/projects/projects.component.d.ts +11 -4
  65. package/lib/elements/projects/projects.component.d.ts.map +1 -1
  66. package/lib/services/applications-flow-events.service.d.ts +58 -0
  67. package/lib/services/applications-flow-events.service.d.ts.map +1 -0
  68. package/lib/services/applications-flow.service.d.ts +0 -2
  69. package/lib/services/applications-flow.service.d.ts.map +1 -1
  70. package/lib/services/project.service.d.ts +1 -1
  71. package/lib/services/project.service.d.ts.map +1 -1
  72. package/lowcodeunit-applications-flow-common.d.ts +16 -33
  73. package/lowcodeunit-applications-flow-common.d.ts.map +1 -1
  74. package/lowcodeunit-applications-flow-common.metadata.json +1 -1
  75. package/package.json +1 -1
  76. package/esm2015/lib/controls/build-pipeline-form/build-pipeline-form.component.js +0 -213
  77. package/esm2015/lib/controls/devops-source-control-form/devops-source-control-form.component.js +0 -412
  78. package/esm2015/lib/controls/edit-application-form/edit-application-form.component.js +0 -60
  79. package/esm2015/lib/controls/processor-details-form/processor-details-form.component.js +0 -321
  80. package/esm2015/lib/controls/security-toggle/security-toggle.component.js +0 -50
  81. package/esm2015/lib/controls/source-control-form/source-control-form.component.js +0 -61
  82. package/esm2015/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.js +0 -25
  83. package/esm2015/lib/dialogs/source-control-dialog/source-control-dialog.component.js +0 -25
  84. package/esm2015/lib/elements/analytics-card/analytics-card.component.js +0 -21
  85. package/esm2015/lib/elements/breadcrumb/breadcrumb.component.js +0 -115
  86. package/esm2015/lib/elements/card-carousel/card-carousel.component.js +0 -67
  87. package/esm2015/lib/elements/column-info-card/column-info-card.component.js +0 -31
  88. package/esm2015/lib/elements/feed-card-sm/feed-card-sm.component.js +0 -31
  89. package/esm2015/lib/elements/gh-control/gh-control.component.js +0 -72
  90. package/esm2015/lib/elements/main-feed-card/main-feed-card.component.js +0 -24
  91. package/esm2015/lib/elements/project-info-card/project-info-card.component.js +0 -32
  92. package/esm2015/lib/elements/slotted-card/slotted-card.component.js +0 -29
  93. package/esm2015/lib/elements/three-column/three-column.component.js +0 -32
  94. package/esm2015/lib/elements/two-column-header/two-column-header.component.js +0 -15
  95. package/esm2015/lib/models/card-slot.model.js +0 -3
  96. package/esm2015/lib/models/slot-action.model.js +0 -3
  97. package/esm2015/lib/services/eac.service.js +0 -218
  98. package/lib/controls/build-pipeline-form/build-pipeline-form.component.d.ts +0 -43
  99. package/lib/controls/build-pipeline-form/build-pipeline-form.component.d.ts.map +0 -1
  100. package/lib/controls/devops-source-control-form/devops-source-control-form.component.d.ts +0 -81
  101. package/lib/controls/devops-source-control-form/devops-source-control-form.component.d.ts.map +0 -1
  102. package/lib/controls/edit-application-form/edit-application-form.component.d.ts +0 -17
  103. package/lib/controls/edit-application-form/edit-application-form.component.d.ts.map +0 -1
  104. package/lib/controls/processor-details-form/processor-details-form.component.d.ts +0 -65
  105. package/lib/controls/processor-details-form/processor-details-form.component.d.ts.map +0 -1
  106. package/lib/controls/security-toggle/security-toggle.component.d.ts +0 -18
  107. package/lib/controls/security-toggle/security-toggle.component.d.ts.map +0 -1
  108. package/lib/controls/source-control-form/source-control-form.component.d.ts +0 -25
  109. package/lib/controls/source-control-form/source-control-form.component.d.ts.map +0 -1
  110. package/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.d.ts +0 -16
  111. package/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.d.ts.map +0 -1
  112. package/lib/dialogs/source-control-dialog/source-control-dialog.component.d.ts +0 -16
  113. package/lib/dialogs/source-control-dialog/source-control-dialog.component.d.ts.map +0 -1
  114. package/lib/elements/analytics-card/analytics-card.component.d.ts +0 -9
  115. package/lib/elements/analytics-card/analytics-card.component.d.ts.map +0 -1
  116. package/lib/elements/breadcrumb/breadcrumb.component.d.ts +0 -33
  117. package/lib/elements/breadcrumb/breadcrumb.component.d.ts.map +0 -1
  118. package/lib/elements/card-carousel/card-carousel.component.d.ts +0 -14
  119. package/lib/elements/card-carousel/card-carousel.component.d.ts.map +0 -1
  120. package/lib/elements/column-info-card/column-info-card.component.d.ts +0 -18
  121. package/lib/elements/column-info-card/column-info-card.component.d.ts.map +0 -1
  122. package/lib/elements/feed-card-sm/feed-card-sm.component.d.ts +0 -12
  123. package/lib/elements/feed-card-sm/feed-card-sm.component.d.ts.map +0 -1
  124. package/lib/elements/gh-control/gh-control.component.d.ts +0 -17
  125. package/lib/elements/gh-control/gh-control.component.d.ts.map +0 -1
  126. package/lib/elements/main-feed-card/main-feed-card.component.d.ts +0 -11
  127. package/lib/elements/main-feed-card/main-feed-card.component.d.ts.map +0 -1
  128. package/lib/elements/project-info-card/project-info-card.component.d.ts +0 -14
  129. package/lib/elements/project-info-card/project-info-card.component.d.ts.map +0 -1
  130. package/lib/elements/slotted-card/slotted-card.component.d.ts +0 -14
  131. package/lib/elements/slotted-card/slotted-card.component.d.ts.map +0 -1
  132. package/lib/elements/three-column/three-column.component.d.ts +0 -9
  133. package/lib/elements/three-column/three-column.component.d.ts.map +0 -1
  134. package/lib/elements/two-column-header/two-column-header.component.d.ts +0 -6
  135. package/lib/elements/two-column-header/two-column-header.component.d.ts.map +0 -1
  136. package/lib/models/card-slot.model.d.ts +0 -8
  137. package/lib/models/card-slot.model.d.ts.map +0 -1
  138. package/lib/models/slot-action.model.d.ts +0 -9
  139. package/lib/models/slot-action.model.d.ts.map +0 -1
  140. package/lib/services/eac.service.d.ts +0 -54
  141. package/lib/services/eac.service.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lowcodeunit/applications-flow-common",
3
- "version": "1.33.119-lets-get-social-ish",
3
+ "version": "1.33.121-projectSetupTooltip",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^10.2.4",
6
6
  "@angular/core": "^10.2.4"
@@ -1,213 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { FormBuilder, Validators } from '@angular/forms';
3
- import { Guid } from '@lcu/common';
4
- import { ApplicationsFlowService } from '../../services/applications-flow.service';
5
- import { EaCService } from '../../services/eac.service';
6
- import { ProjectHostingDetails } from '../../state/applications-flow.state';
7
- export class BuildPipelineFormComponent {
8
- constructor(eacSvc, formBuilder, appsFlowSvc) {
9
- this.eacSvc = eacSvc;
10
- this.formBuilder = formBuilder;
11
- this.appsFlowSvc = appsFlowSvc;
12
- this.HostingDetails = new ProjectHostingDetails();
13
- }
14
- get Artifact() {
15
- var _a, _b;
16
- // console.log("ARTIFACT: ", this.Environment?.Artifacts[this.ArtifactLookup]);
17
- return ((_a = this.Environment) === null || _a === void 0 ? void 0 : _a.Artifacts) && this.ArtifactLookup
18
- ? ((_b = this.Environment) === null || _b === void 0 ? void 0 : _b.Artifacts[this.ArtifactLookup]) || {}
19
- : {};
20
- }
21
- get ArtifactLookup() {
22
- var _a, _b;
23
- const artLookup = ((_a = this.DevOpsAction) === null || _a === void 0 ? void 0 : _a.ArtifactLookups) ? (_b = this.DevOpsAction) === null || _b === void 0 ? void 0 : _b.ArtifactLookups[0] : null;
24
- return artLookup;
25
- }
26
- get BuildPipelineFormControl() {
27
- var _a;
28
- return (_a = this.BuildPipelineFormGroup) === null || _a === void 0 ? void 0 : _a.get('buildPipeline');
29
- }
30
- get DevOpsAction() {
31
- return this.Environment.DevOpsActions && this.DevOpsActionLookup
32
- ? this.Environment.DevOpsActions[this.DevOpsActionLookup] || {}
33
- : {};
34
- }
35
- get DevOpsActions() {
36
- return this.Environment.DevOpsActions || {};
37
- }
38
- get DevOpsActionNameFormControl() {
39
- return this.BuildPipelineFormGroup.get('devOpsActionName');
40
- }
41
- get NPMTokenFormControl() {
42
- return this.BuildPipelineFormGroup.get('npmToken');
43
- }
44
- // (ho) => ho.Lookup === this.BuildPipeline
45
- get SelectedHostingOption() {
46
- var _a, _b;
47
- return (_b = (_a = this.HostingDetails) === null || _a === void 0 ? void 0 : _a.HostingOptions) === null || _b === void 0 ? void 0 : _b.find((ho) => ho.Lookup === this.BuildPipeline);
48
- }
49
- get SelectedHostingOptionInputControlValues() {
50
- var _a, _b;
51
- return (_b = (_a = this.SelectedHostingOption) === null || _a === void 0 ? void 0 : _a.Inputs) === null || _b === void 0 ? void 0 : _b.reduce((prev, cur) => {
52
- const res = Object.assign({}, prev);
53
- res[cur.Lookup] = this.BuildPipelineFormGroup.controls[cur.Lookup].value;
54
- return res;
55
- }, {});
56
- }
57
- get SourceControlLookups() {
58
- return Object.keys(this.SourceControls || {});
59
- }
60
- get SourceControls() {
61
- return this.Environment.Sources || {};
62
- }
63
- ngOnInit() {
64
- // console.log('BuildPipeline = ', this.BuildPipeline)
65
- // this.BuildPipelineFormGroup = this.formBuilder.group({});
66
- // if (this.BuildPipelineFormGroup != null) {
67
- // this.BuildPipelineFormGroup.removeControl('hostingDetails');
68
- // }
69
- // this.BuildPipelineFormGroup.addControl(
70
- // 'hostingDetails',
71
- this.BuildPipelineFormGroup = this.formBuilder.group({
72
- buildPipeline: [this.BuildPipeline, [Validators.required]],
73
- });
74
- // );
75
- this.loadProjectHostingDetails();
76
- // this.setupControlsForForm();
77
- }
78
- //API METHODS
79
- BuildPipelineChanged() {
80
- var _a;
81
- //for some reason this value is coming back undefined
82
- // console.log("build pipeline value: ", this.BuildPipelineFormControl?.value)
83
- this.BuildPipeline = (_a = this.BuildPipelineFormControl) === null || _a === void 0 ? void 0 : _a.value;
84
- this.setupControlsForForm();
85
- }
86
- SubmitBuildPipeline() {
87
- // console.log("submitting build pipeline: ", this.BuildPipelineFormGroup.value);
88
- this.SaveEnvironment();
89
- }
90
- SaveEnvironment() {
91
- var _a;
92
- const saveEnvReq = {
93
- Environment: Object.assign(Object.assign({}, this.Environment), { Artifacts: this.Environment.Artifacts || {}, DevOpsActions: this.Environment.DevOpsActions || {}, Secrets: this.Environment.Secrets || {}, Sources: this.Environment.Sources || {} }),
94
- EnvironmentLookup: this.EnvironmentLookup,
95
- EnterpriseDataTokens: {},
96
- };
97
- let artifactLookup;
98
- let artifact = Object.assign(Object.assign({}, this.Artifact), this.SelectedHostingOptionInputControlValues);
99
- if (!this.ArtifactLookup) {
100
- artifactLookup = Guid.CreateRaw();
101
- artifact = Object.assign(Object.assign({}, artifact), { Type: this.SelectedHostingOption
102
- .ArtifactType, Name: this.SelectedHostingOption.Name, NPMRegistry: 'https://registry.npmjs.org/' });
103
- }
104
- else {
105
- artifactLookup = this.ArtifactLookup;
106
- }
107
- saveEnvReq.Environment.Artifacts[artifactLookup] = artifact;
108
- let devOpsActionLookup;
109
- if (!this.DevOpsActionLookup) {
110
- devOpsActionLookup = Guid.CreateRaw();
111
- const doa = Object.assign(Object.assign({}, this.DevOpsAction), { ArtifactLookups: [artifactLookup], Name: this.DevOpsActionNameFormControl.value, Path: this.SelectedHostingOption.Path, Templates: this.SelectedHostingOption.Templates });
112
- if ((_a = this.NPMTokenFormControl) === null || _a === void 0 ? void 0 : _a.value) {
113
- const secretLookup = 'npm-access-token';
114
- doa.SecretLookups = [secretLookup];
115
- saveEnvReq.Environment.Secrets[secretLookup] = {
116
- Name: 'NPM Access Token',
117
- DataTokenLookup: secretLookup,
118
- KnownAs: 'NPM_TOKEN',
119
- };
120
- saveEnvReq.EnterpriseDataTokens[secretLookup] = {
121
- Name: saveEnvReq.Environment.Secrets[secretLookup].Name,
122
- Description: saveEnvReq.Environment.Secrets[secretLookup].Name,
123
- Value: this.NPMTokenFormControl.value,
124
- };
125
- }
126
- saveEnvReq.Environment.DevOpsActions[devOpsActionLookup] = doa;
127
- }
128
- else {
129
- devOpsActionLookup = this.DevOpsActionLookup;
130
- const doa = Object.assign(Object.assign({}, this.DevOpsAction), { Name: this.DevOpsActionNameFormControl.value });
131
- saveEnvReq.Environment.DevOpsActions[devOpsActionLookup] = doa;
132
- }
133
- this.eacSvc.SaveEnvironmentAsCode(saveEnvReq);
134
- }
135
- // Helpers
136
- setupControlsForForm() {
137
- // this.BuildPipeline =
138
- // this.BuildPipeline || this.HostingDetails?.HostingOptions
139
- // ? this.HostingDetails?.HostingOptions[0]?.Lookup
140
- // : '';
141
- var _a, _b, _c, _d, _e, _f;
142
- // console.log("hosting details: ", this.HostingDetails)
143
- for (const ctrlName in this.BuildPipelineFormGroup.controls) {
144
- //devOpsAction doesn't exist
145
- //removes hosting details
146
- if (ctrlName !== 'buildPipeline' && ctrlName !== 'devOpsAction') {
147
- // console.log("removing control: ", ctrlName)
148
- this.BuildPipelineFormGroup.removeControl(ctrlName);
149
- }
150
- }
151
- this.BuildPipelineFormGroup.addControl('devOpsActionName', this.formBuilder.control(((_a = this.DevOpsAction) === null || _a === void 0 ? void 0 : _a.Name) || ((_b = this.SelectedHostingOption) === null || _b === void 0 ? void 0 : _b.Name) || '', [Validators.required]));
152
- // console.log("selected hosting options: ", this.SelectedHostingOption.Inputs);
153
- (_d = (_c = this.SelectedHostingOption) === null || _c === void 0 ? void 0 : _c.Inputs) === null || _d === void 0 ? void 0 : _d.forEach((input) => {
154
- const validators = input.Required ? [Validators.required] : [];
155
- this.BuildPipelineFormGroup.addControl(input.Lookup, this.formBuilder.control(this.Artifact[input.Lookup] || input.DefaultValue || '', validators));
156
- // if (this.Disabled) {
157
- // this.FormGroup.controls[input.Lookup].disable();
158
- // }
159
- });
160
- if (((_e = this.BuildPipelineFormControl) === null || _e === void 0 ? void 0 : _e.value) === 'npm-release') {
161
- if (!this.BuildPipelineFormGroup.controls.npmToken) {
162
- this.BuildPipelineFormGroup.addControl('npmToken', this.formBuilder.control('', this.Disabled ? [] : [Validators.required]));
163
- if (this.Disabled) {
164
- this.BuildPipelineFormGroup.controls.npmToken.disable();
165
- }
166
- }
167
- }
168
- else if (((_f = this.BuildPipelineFormControl) === null || _f === void 0 ? void 0 : _f.value) === 'github-artifacts-release') {
169
- if (this.BuildPipelineFormGroup.controls.npmToken) {
170
- this.BuildPipelineFormGroup.removeControl('npmToken');
171
- }
172
- }
173
- }
174
- loadProjectHostingDetails() {
175
- this.HostingDetails.Loading = true;
176
- this.appsFlowSvc
177
- .NewLoadProjectHostingDetails()
178
- .subscribe((response) => {
179
- var _a, _b;
180
- this.HostingDetails = response.Model;
181
- // console.log("response: ", response);
182
- this.HostingDetails.Loading = false;
183
- const hostOption = (_b = (_a = this.HostingDetails) === null || _a === void 0 ? void 0 : _a.HostingOptions) === null || _b === void 0 ? void 0 : _b.find((ho) => ho.Path === this.DevOpsAction.Path);
184
- this.BuildPipeline = hostOption.Lookup;
185
- // console.log("Build Pipeline HERE= ", this.BuildPipeline);
186
- this.setupControlsForForm();
187
- }, (err) => {
188
- console.log("ERR: ", err);
189
- this.HostingDetails.Loading = false;
190
- });
191
- console.log("HOSTING DETAILS: ", this.HostingDetails);
192
- }
193
- }
194
- BuildPipelineFormComponent.decorators = [
195
- { type: Component, args: [{
196
- selector: 'lcu-build-pipeline-form',
197
- template: "<form class=\"form-card\" [formGroup]=\"BuildPipelineFormGroup\" (ngSubmit)=\"SubmitBuildPipeline()\">\n <mat-card\n class=\"spread\" \n >\n <mat-card-header>\n <mat-card-title> Build Pipeline </mat-card-title>\n\n <mat-hint>\n Changes made here are reflected for all sources using this\n DevOpsAction\n </mat-hint>\n </mat-card-header>\n\n <mat-card-content>\n\n\n <div *ngIf=\"!HostingDetails?.Loading\">\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n formControlName=\"buildPipeline\"\n placeholder=\"Build Pipeline\"\n [disabled]=\"Disabled\"\n (selectionChange)=\"BuildPipelineChanged()\"\n required\n >\n <ng-container\n *ngFor=\"let hostOption of HostingDetails?.HostingOptions; let i = index\"\n >\n <mat-option [value]=\"hostOption.Lookup\">\n {{ hostOption.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n \n <mat-hint>\n <ng-container *ngFor=\"let hostOption of HostingDetails?.HostingOptions\">\n <span *ngIf=\"BuildPipeline == hostOption?.Lookup\">\n {{ hostOption.Description }}\n </span>\n </ng-container>\n </mat-hint>\n </mat-form-field>\n \n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"devOpsActionName\"\n placeholder=\"Name of DevOps Action\"\n required=\"true\"\n />\n </mat-form-field>\n \n <ng-container *ngFor=\"let input of SelectedHostingOption?.Inputs\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n [formControlName]=\"input.Lookup\"\n [placeholder]=\"input.Placeholder\"\n [required]=\"input.Required\"\n />\n \n <mat-hint>{{ input.Hint }}</mat-hint>\n </mat-form-field>\n </ng-container>\n \n <div *ngIf=\"BuildPipeline == 'npm-release'\">\n <mat-form-field class=\"mat-full-width with-hint padding-bottom-4\">\n <mat-icon matPrefix>security</mat-icon>\n \n <input\n id=\"npm-token\"\n matInput\n type=\"text\"\n formControlName=\"npmToken\"\n placeholder=\"NPM token\"\n [required]=\"!Disabled\"\n style=\"-webkit-text-security: disc;\"\n />\n <mat-hint>\n Securely publish to NPM, provide an NPM Personal Access Token (PAT) with publish access to the organization used for your NPM packages. \n Learn how to create and view access tokens \n <a\n href=\"https://docs.npmjs.com/creating-and-viewing-access-tokens\"\n target=\"_blank\"\n >\n here.\n </a>\n </mat-hint>\n </mat-form-field>\n </div>\n </div>\n \n <div *ngIf=\"HostingDetails?.Loading\">\n <div class=\"spread\">\n <lcu-loader style=\"margin: auto\" [loading]=\"true\"></lcu-loader>\n \n <div class=\"margin-3\">\n <h4 class=\"mat-title\">Loading hosting details</h4>\n </div>\n </div>\n </div>\n </mat-card-content>\n <mat-card-actions fxLayoutAlign=\"center center\">\n\n <button \n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!BuildPipelineFormGroup.valid || !BuildPipelineFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save Build Pipeline\n </button>\n \n </mat-card-actions>\n </mat-card>\n</form>\n",
198
- styles: [""]
199
- },] }
200
- ];
201
- BuildPipelineFormComponent.ctorParameters = () => [
202
- { type: EaCService },
203
- { type: FormBuilder },
204
- { type: ApplicationsFlowService }
205
- ];
206
- BuildPipelineFormComponent.propDecorators = {
207
- DevOpsActionLookup: [{ type: Input, args: ['devops-action-lookup',] }],
208
- Disabled: [{ type: Input, args: ['disabled',] }],
209
- Environment: [{ type: Input, args: ['environment',] }],
210
- EnvironmentLookup: [{ type: Input, args: ['environment-lookup',] }],
211
- HostingDetails: [{ type: Input, args: ['hosting-details',] }]
212
- };
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtcGlwZWxpbmUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvYXBwbGljYXRpb25zLWZsb3cvYXBwbGljYXRpb25zLWZsb3cvcHJvamVjdHMvY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb250cm9scy9idWlsZC1waXBlbGluZS1mb3JtL2J1aWxkLXBpcGVsaW5lLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBbUIsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFBdUIsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxVQUFVLEVBQXFDLE1BQU0sNEJBQTRCLENBQUM7QUFDM0YsT0FBTyxFQUFFLHFCQUFxQixFQUF3QixNQUFNLHFDQUFxQyxDQUFDO0FBT2xHLE1BQU0sT0FBTywwQkFBMEI7SUFxR3JDLFlBQXNCLE1BQWtCLEVBQzVCLFdBQXdCLEVBQ3hCLFdBQW9DO1FBRjFCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQzlDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFqRkQsSUFBVyxRQUFROztRQUNqQiwrRUFBK0U7UUFDL0UsT0FBTyxPQUFBLElBQUksQ0FBQyxXQUFXLDBDQUFFLFNBQVMsS0FBSSxJQUFJLENBQUMsY0FBYztZQUN2RCxDQUFDLENBQUMsT0FBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsTUFBSyxFQUFFO1lBQ3hELENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDVCxDQUFDO0lBRUQsSUFBVyxjQUFjOztRQUN2QixNQUFNLFNBQVMsR0FBRyxPQUFBLElBQUksQ0FBQyxZQUFZLDBDQUFFLGVBQWUsRUFDbEQsQ0FBQyxPQUFDLElBQUksQ0FBQyxZQUFZLDBDQUFFLGVBQWUsQ0FBQyxDQUFDLEVBQ3RDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFVCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBSUQsSUFBVyx3QkFBd0I7O1FBRWpDLGFBQU8sSUFBSSxDQUFDLHNCQUFzQiwwQ0FBRSxHQUFHLENBQUMsZUFBZSxFQUFFO0lBQzNELENBQUM7SUFHRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsa0JBQWtCO1lBQzlELENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFO1lBQy9ELENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDVCxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFXLDJCQUEyQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBS0QsSUFBVyxtQkFBbUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsSUFBVyxxQkFBcUI7O1FBQzlCLG1CQUFPLElBQUksQ0FBQyxjQUFjLDBDQUFFLGNBQWMsMENBQUUsSUFBSSxDQUM5QyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsYUFBYSxFQUN4QztJQUNKLENBQUM7SUFHRCxJQUFXLHVDQUF1Qzs7UUFHaEQsbUJBQU8sSUFBSSxDQUFDLHFCQUFxQiwwQ0FBRSxNQUFNLDBDQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUM5RCxNQUFNLEdBQUcscUJBQ0osSUFBSSxDQUNSLENBQUM7WUFFRixHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUV6RSxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDVCxDQUFDO0lBRUQsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBV00sUUFBUTtRQUlYLHNEQUFzRDtRQUd4RCw0REFBNEQ7UUFFNUQsNkNBQTZDO1FBQzdDLGlFQUFpRTtRQUNqRSxJQUFJO1FBR0osMENBQTBDO1FBQzFDLHNCQUFzQjtRQUN0QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDakQsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzRCxDQUFDLENBQUE7UUFDSixLQUFLO1FBRUwsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakMsK0JBQStCO0lBRWpDLENBQUM7SUFFRCxhQUFhO0lBRU4sb0JBQW9COztRQUN6QixxREFBcUQ7UUFDckQsOEVBQThFO1FBQzlFLElBQUksQ0FBQyxhQUFhLFNBQUcsSUFBSSxDQUFDLHdCQUF3QiwwQ0FBRSxLQUFLLENBQUM7UUFFMUQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLG1CQUFtQjtRQUN4QixpRkFBaUY7UUFDakYsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxlQUFlOztRQUNwQixNQUFNLFVBQVUsR0FBc0M7WUFDcEQsV0FBVyxrQ0FDTixJQUFJLENBQUMsV0FBVyxLQUNuQixTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLElBQUksRUFBRSxFQUMzQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLElBQUksRUFBRSxFQUNuRCxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksRUFBRSxFQUN2QyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksRUFBRSxHQUN4QztZQUNELGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7WUFDekMsb0JBQW9CLEVBQUUsRUFBRTtTQUN6QixDQUFDO1FBRUYsSUFBSSxjQUFzQixDQUFDO1FBRTNCLElBQUksUUFBUSxtQ0FDUCxJQUFJLENBQUMsUUFBUSxHQUNiLElBQUksQ0FBQyx1Q0FBdUMsQ0FDaEQsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFbEMsUUFBUSxtQ0FDSCxRQUFRLEtBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxxQkFBcUI7cUJBQzdCLFlBQVksRUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFDckMsV0FBVyxFQUFFLDZCQUE2QixHQUMzQyxDQUFDO1NBQ0g7YUFBTTtZQUNMLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQ3RDO1FBRUQsVUFBVSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBRTVELElBQUksa0JBQTBCLENBQUM7UUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM1QixrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFdEMsTUFBTSxHQUFHLG1DQUNKLElBQUksQ0FBQyxZQUFZLEtBQ3BCLGVBQWUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUNqQyxJQUFJLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssRUFDNUMsSUFBSSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQ3JDLFNBQVMsRUFDUCxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxHQUN2QyxDQUFDO1lBRUYsVUFBSSxJQUFJLENBQUMsbUJBQW1CLDBDQUFFLEtBQUssRUFBRTtnQkFDbkMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7Z0JBRXhDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFFbkMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUc7b0JBQzdDLElBQUksRUFBRSxrQkFBa0I7b0JBQ3hCLGVBQWUsRUFBRSxZQUFZO29CQUM3QixPQUFPLEVBQUUsV0FBVztpQkFDckIsQ0FBQztnQkFFRixVQUFVLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLEdBQUc7b0JBQzlDLElBQUksRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJO29CQUN2RCxXQUFXLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSTtvQkFDOUQsS0FBSyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLO2lCQUN0QyxDQUFDO2FBQ0g7WUFFRCxVQUFVLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUNoRTthQUFNO1lBQ0wsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBRTdDLE1BQU0sR0FBRyxtQ0FDSixJQUFJLENBQUMsWUFBWSxLQUNwQixJQUFJLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssR0FDN0MsQ0FBQztZQUVGLFVBQVUsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQ2hFO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsV0FBVztJQUNELG9CQUFvQjtRQUU1Qix1QkFBdUI7UUFDdkIsb0VBQW9FO1FBQ3BFLDZEQUE2RDtRQUM3RCxrQkFBa0I7O1FBRWxCLHdEQUF3RDtRQUV4RCxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUU7WUFDM0QsNEJBQTRCO1lBQzVCLHlCQUF5QjtZQUN6QixJQUFJLFFBQVEsS0FBSyxlQUFlLElBQUksUUFBUSxLQUFLLGNBQWMsRUFBRTtnQkFDL0QsOENBQThDO2dCQUM5QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3JEO1NBQ0Y7UUFFRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUNwQyxrQkFBa0IsRUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQ3RCLE9BQUEsSUFBSSxDQUFDLFlBQVksMENBQUUsSUFBSSxZQUFJLElBQUksQ0FBQyxxQkFBcUIsMENBQUUsSUFBSSxDQUFBLElBQUksRUFBRSxFQUNqRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FDdEIsQ0FDRixDQUFDO1FBRUYsZ0ZBQWdGO1FBRWhGLFlBQUEsSUFBSSxDQUFDLHFCQUFxQiwwQ0FBRSxNQUFNLDBDQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFFL0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FDcEMsS0FBSyxDQUFDLE1BQU0sRUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQ3ZELFVBQVUsQ0FDWCxDQUNGLENBQUM7WUFFRix1QkFBdUI7WUFDdkIscURBQXFEO1lBQ3JELElBQUk7UUFDTixDQUFDLEVBQUU7UUFFSCxJQUFJLE9BQUEsSUFBSSxDQUFDLHdCQUF3QiwwQ0FBRSxLQUFLLE1BQUssYUFBYSxFQUFFO1lBRTFELElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtnQkFDbEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FDcEMsVUFBVSxFQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUN0QixFQUFFLEVBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FDM0MsQ0FDRixDQUFDO2dCQUVGLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDakIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQ3pEO2FBQ0Y7U0FDRjthQUFNLElBQ0wsT0FBQSxJQUFJLENBQUMsd0JBQXdCLDBDQUFFLEtBQUssTUFBSywwQkFBMEIsRUFDbkU7WUFDQSxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO2dCQUNqRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3ZEO1NBQ0Y7SUFDSCxDQUFDO0lBSVMseUJBQXlCO1FBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVzthQUNiLDRCQUE0QixFQUFFO2FBQzlCLFNBQVMsQ0FDUixDQUFDLFFBQW9ELEVBQUUsRUFBRTs7WUFDdkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ3JDLHVDQUF1QztZQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFFcEMsTUFBTSxVQUFVLGVBQUcsSUFBSSxDQUFDLGNBQWMsMENBQUUsY0FBYywwQ0FBRSxJQUFJLENBQzFELENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUMzQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBSSxVQUFVLENBQUMsTUFBTSxDQUFDO1lBRXhDLDREQUE0RDtZQUU1RCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUU5QixDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUVOLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUV0QyxDQUFDLENBQ0YsQ0FBQztRQUNKLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRXhELENBQUM7OztZQWhWRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsc2pJQUFtRDs7YUFFcEQ7OztZQVBRLFVBQVU7WUFKTyxXQUFXO1lBRzVCLHVCQUF1Qjs7O2lDQWlCN0IsS0FBSyxTQUFDLHNCQUFzQjt1QkFHNUIsS0FBSyxTQUFDLFVBQVU7MEJBR2hCLEtBQUssU0FBQyxhQUFhO2dDQUduQixLQUFLLFNBQUMsb0JBQW9COzZCQUcxQixLQUFLLFNBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlTW9kZWxlZFJlc3BvbnNlLCBHdWlkIH0gZnJvbSAnQGxjdS9jb21tb24nO1xuaW1wb3J0IHsgRWFDQXJ0aWZhY3QsIEVhQ0Rldk9wc0FjdGlvbiwgRWFDRW52aXJvbm1lbnRBc0NvZGUsIEVhQ1NvdXJjZUNvbnRyb2wgfSBmcm9tICdAc2VtYW50aWNqcy9jb21tb24nO1xuaW1wb3J0IHsgQXBwbGljYXRpb25zRmxvd1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHBsaWNhdGlvbnMtZmxvdy5zZXJ2aWNlJztcbmltcG9ydCB7IEVhQ1NlcnZpY2UsIFNhdmVFbnZpcm9ubWVudEFzQ29kZUV2ZW50UmVxdWVzdCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VhYy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2plY3RIb3N0aW5nRGV0YWlscywgUHJvamVjdEhvc3RpbmdPcHRpb24gfSBmcm9tICcuLi8uLi9zdGF0ZS9hcHBsaWNhdGlvbnMtZmxvdy5zdGF0ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xjdS1idWlsZC1waXBlbGluZS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1aWxkLXBpcGVsaW5lLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9idWlsZC1waXBlbGluZS1mb3JtLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQnVpbGRQaXBlbGluZUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG5cbiAgLy9QUk9QRVJUSUVTXG5cbiAgLy8gQElucHV0KCdidWlsZC1waXBlbGluZScpXG4gIHB1YmxpYyBCdWlsZFBpcGVsaW5lOiBzdHJpbmc7XG5cbiAgQElucHV0KCdkZXZvcHMtYWN0aW9uLWxvb2t1cCcpXG4gIHB1YmxpYyBEZXZPcHNBY3Rpb25Mb29rdXA6IHN0cmluZztcblxuICBASW5wdXQoJ2Rpc2FibGVkJylcbiAgcHVibGljIERpc2FibGVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgnZW52aXJvbm1lbnQnKVxuICBwdWJsaWMgRW52aXJvbm1lbnQ6IEVhQ0Vudmlyb25tZW50QXNDb2RlO1xuXG4gIEBJbnB1dCgnZW52aXJvbm1lbnQtbG9va3VwJylcbiAgcHVibGljIEVudmlyb25tZW50TG9va3VwOiBzdHJpbmc7XG5cbiAgQElucHV0KCdob3N0aW5nLWRldGFpbHMnKVxuICBwdWJsaWMgSG9zdGluZ0RldGFpbHM6IFByb2plY3RIb3N0aW5nRGV0YWlscztcblxuXG4gIHB1YmxpYyBnZXQgQXJ0aWZhY3QoKTogRWFDQXJ0aWZhY3Qge1xuICAgIC8vIGNvbnNvbGUubG9nKFwiQVJUSUZBQ1Q6IFwiLCB0aGlzLkVudmlyb25tZW50Py5BcnRpZmFjdHNbdGhpcy5BcnRpZmFjdExvb2t1cF0pO1xuICAgIHJldHVybiB0aGlzLkVudmlyb25tZW50Py5BcnRpZmFjdHMgJiYgdGhpcy5BcnRpZmFjdExvb2t1cFxuICAgICAgPyB0aGlzLkVudmlyb25tZW50Py5BcnRpZmFjdHNbdGhpcy5BcnRpZmFjdExvb2t1cF0gfHwge31cbiAgICAgIDoge307XG4gIH1cblxuICBwdWJsaWMgZ2V0IEFydGlmYWN0TG9va3VwKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYXJ0TG9va3VwID0gdGhpcy5EZXZPcHNBY3Rpb24/LkFydGlmYWN0TG9va3Vwc1xuICAgICAgPyB0aGlzLkRldk9wc0FjdGlvbj8uQXJ0aWZhY3RMb29rdXBzWzBdXG4gICAgICA6IG51bGw7XG5cbiAgICByZXR1cm4gYXJ0TG9va3VwO1xuICB9XG5cbiAgXG5cbiAgcHVibGljIGdldCBCdWlsZFBpcGVsaW5lRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcblxuICAgIHJldHVybiB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXA/LmdldCgnYnVpbGRQaXBlbGluZScpO1xuICB9XG5cblxuICBwdWJsaWMgZ2V0IERldk9wc0FjdGlvbigpOiBFYUNEZXZPcHNBY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLkVudmlyb25tZW50LkRldk9wc0FjdGlvbnMgJiYgdGhpcy5EZXZPcHNBY3Rpb25Mb29rdXBcbiAgICAgID8gdGhpcy5FbnZpcm9ubWVudC5EZXZPcHNBY3Rpb25zW3RoaXMuRGV2T3BzQWN0aW9uTG9va3VwXSB8fCB7fVxuICAgICAgOiB7fTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgRGV2T3BzQWN0aW9ucygpOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0Rldk9wc0FjdGlvbiB9IHtcbiAgICByZXR1cm4gdGhpcy5FbnZpcm9ubWVudC5EZXZPcHNBY3Rpb25zIHx8IHt9O1xuICB9XG5cbiAgcHVibGljIGdldCBEZXZPcHNBY3Rpb25OYW1lRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmdldCgnZGV2T3BzQWN0aW9uTmFtZScpO1xuICB9XG5cbiAgXG5cblxuICBwdWJsaWMgZ2V0IE5QTVRva2VuRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmdldCgnbnBtVG9rZW4nKTtcbiAgfVxuXG4gIC8vIChobykgPT4gaG8uTG9va3VwID09PSB0aGlzLkJ1aWxkUGlwZWxpbmVcbiAgcHVibGljIGdldCBTZWxlY3RlZEhvc3RpbmdPcHRpb24oKTogUHJvamVjdEhvc3RpbmdPcHRpb24ge1xuICAgIHJldHVybiB0aGlzLkhvc3RpbmdEZXRhaWxzPy5Ib3N0aW5nT3B0aW9ucz8uZmluZChcbiAgICAgIChobykgPT4gaG8uTG9va3VwID09PSB0aGlzLkJ1aWxkUGlwZWxpbmVcbiAgICApO1xuICB9XG5cblxuICBwdWJsaWMgZ2V0IFNlbGVjdGVkSG9zdGluZ09wdGlvbklucHV0Q29udHJvbFZhbHVlcygpOiB7XG4gICAgW2xvb2t1cDogc3RyaW5nXTogYW55O1xuICB9IHtcbiAgICByZXR1cm4gdGhpcy5TZWxlY3RlZEhvc3RpbmdPcHRpb24/LklucHV0cz8ucmVkdWNlKChwcmV2LCBjdXIpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgIH07XG5cbiAgICAgIHJlc1tjdXIuTG9va3VwXSA9IHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5jb250cm9sc1tjdXIuTG9va3VwXS52YWx1ZTtcblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCB7fSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFNvdXJjZUNvbnRyb2xMb29rdXBzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLlNvdXJjZUNvbnRyb2xzIHx8IHt9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgU291cmNlQ29udHJvbHMoKTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNTb3VyY2VDb250cm9sIH0ge1xuICAgIHJldHVybiB0aGlzLkVudmlyb25tZW50LlNvdXJjZXMgfHwge307XG4gIH1cblxuICBwdWJsaWMgQnVpbGRQaXBlbGluZUZvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVhY1N2YzogRWFDU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByb3RlY3RlZCBhcHBzRmxvd1N2YzogQXBwbGljYXRpb25zRmxvd1NlcnZpY2UpIHtcbiAgICB0aGlzLkhvc3RpbmdEZXRhaWxzID0gbmV3IFByb2plY3RIb3N0aW5nRGV0YWlscygpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gICAgICBcblxuICAgICAgLy8gY29uc29sZS5sb2coJ0J1aWxkUGlwZWxpbmUgPSAnLCB0aGlzLkJ1aWxkUGlwZWxpbmUpXG5cbiAgICBcbiAgICAvLyB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHt9KTtcblxuICAgIC8vIGlmICh0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAgIT0gbnVsbCkge1xuICAgIC8vICAgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ2hvc3RpbmdEZXRhaWxzJyk7XG4gICAgLy8gfVxuXG4gICAgXG4gICAgLy8gdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgLy8gICAnaG9zdGluZ0RldGFpbHMnLFxuICAgIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBidWlsZFBpcGVsaW5lOiBbdGhpcy5CdWlsZFBpcGVsaW5lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgfSlcbiAgICAvLyApO1xuXG4gICAgdGhpcy5sb2FkUHJvamVjdEhvc3RpbmdEZXRhaWxzKCk7XG4gICAgLy8gdGhpcy5zZXR1cENvbnRyb2xzRm9yRm9ybSgpO1xuXG4gIH1cblxuICAvL0FQSSBNRVRIT0RTXG5cbiAgcHVibGljIEJ1aWxkUGlwZWxpbmVDaGFuZ2VkKCk6IHZvaWQge1xuICAgIC8vZm9yIHNvbWUgcmVhc29uIHRoaXMgdmFsdWUgaXMgY29taW5nIGJhY2sgdW5kZWZpbmVkXG4gICAgLy8gY29uc29sZS5sb2coXCJidWlsZCBwaXBlbGluZSB2YWx1ZTogXCIsIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Db250cm9sPy52YWx1ZSlcbiAgICB0aGlzLkJ1aWxkUGlwZWxpbmUgPSB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtQ29udHJvbD8udmFsdWU7XG5cbiAgICB0aGlzLnNldHVwQ29udHJvbHNGb3JGb3JtKCk7XG4gIH1cblxuICBwdWJsaWMgU3VibWl0QnVpbGRQaXBlbGluZSgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhcInN1Ym1pdHRpbmcgYnVpbGQgcGlwZWxpbmU6IFwiLCB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAudmFsdWUpO1xuICAgIHRoaXMuU2F2ZUVudmlyb25tZW50KCk7XG4gIH1cblxuICBwdWJsaWMgU2F2ZUVudmlyb25tZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHNhdmVFbnZSZXE6IFNhdmVFbnZpcm9ubWVudEFzQ29kZUV2ZW50UmVxdWVzdCA9IHtcbiAgICAgIEVudmlyb25tZW50OiB7XG4gICAgICAgIC4uLnRoaXMuRW52aXJvbm1lbnQsXG4gICAgICAgIEFydGlmYWN0czogdGhpcy5FbnZpcm9ubWVudC5BcnRpZmFjdHMgfHwge30sXG4gICAgICAgIERldk9wc0FjdGlvbnM6IHRoaXMuRW52aXJvbm1lbnQuRGV2T3BzQWN0aW9ucyB8fCB7fSxcbiAgICAgICAgU2VjcmV0czogdGhpcy5FbnZpcm9ubWVudC5TZWNyZXRzIHx8IHt9LFxuICAgICAgICBTb3VyY2VzOiB0aGlzLkVudmlyb25tZW50LlNvdXJjZXMgfHwge30sXG4gICAgICB9LFxuICAgICAgRW52aXJvbm1lbnRMb29rdXA6IHRoaXMuRW52aXJvbm1lbnRMb29rdXAsXG4gICAgICBFbnRlcnByaXNlRGF0YVRva2Vuczoge30sXG4gICAgfTtcblxuICAgIGxldCBhcnRpZmFjdExvb2t1cDogc3RyaW5nO1xuXG4gICAgbGV0IGFydGlmYWN0OiBFYUNBcnRpZmFjdCA9IHtcbiAgICAgIC4uLnRoaXMuQXJ0aWZhY3QsXG4gICAgICAuLi50aGlzLlNlbGVjdGVkSG9zdGluZ09wdGlvbklucHV0Q29udHJvbFZhbHVlcyxcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLkFydGlmYWN0TG9va3VwKSB7XG4gICAgICBhcnRpZmFjdExvb2t1cCA9IEd1aWQuQ3JlYXRlUmF3KCk7XG5cbiAgICAgIGFydGlmYWN0ID0ge1xuICAgICAgICAuLi5hcnRpZmFjdCxcbiAgICAgICAgVHlwZTogdGhpcy5TZWxlY3RlZEhvc3RpbmdPcHRpb25cbiAgICAgICAgICAuQXJ0aWZhY3RUeXBlLFxuICAgICAgICBOYW1lOiB0aGlzLlNlbGVjdGVkSG9zdGluZ09wdGlvbi5OYW1lLFxuICAgICAgICBOUE1SZWdpc3RyeTogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLycsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBhcnRpZmFjdExvb2t1cCA9IHRoaXMuQXJ0aWZhY3RMb29rdXA7XG4gICAgfVxuXG4gICAgc2F2ZUVudlJlcS5FbnZpcm9ubWVudC5BcnRpZmFjdHNbYXJ0aWZhY3RMb29rdXBdID0gYXJ0aWZhY3Q7XG5cbiAgICBsZXQgZGV2T3BzQWN0aW9uTG9va3VwOiBzdHJpbmc7XG5cbiAgICBpZiAoIXRoaXMuRGV2T3BzQWN0aW9uTG9va3VwKSB7XG4gICAgICBkZXZPcHNBY3Rpb25Mb29rdXAgPSBHdWlkLkNyZWF0ZVJhdygpO1xuXG4gICAgICBjb25zdCBkb2E6IEVhQ0Rldk9wc0FjdGlvbiA9IHtcbiAgICAgICAgLi4udGhpcy5EZXZPcHNBY3Rpb24sXG4gICAgICAgIEFydGlmYWN0TG9va3VwczogW2FydGlmYWN0TG9va3VwXSxcbiAgICAgICAgTmFtZTogdGhpcy5EZXZPcHNBY3Rpb25OYW1lRm9ybUNvbnRyb2wudmFsdWUsXG4gICAgICAgIFBhdGg6IHRoaXMuU2VsZWN0ZWRIb3N0aW5nT3B0aW9uLlBhdGgsXG4gICAgICAgIFRlbXBsYXRlczpcbiAgICAgICAgICB0aGlzLlNlbGVjdGVkSG9zdGluZ09wdGlvbi5UZW1wbGF0ZXMsXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5OUE1Ub2tlbkZvcm1Db250cm9sPy52YWx1ZSkge1xuICAgICAgICBjb25zdCBzZWNyZXRMb29rdXAgPSAnbnBtLWFjY2Vzcy10b2tlbic7XG5cbiAgICAgICAgZG9hLlNlY3JldExvb2t1cHMgPSBbc2VjcmV0TG9va3VwXTtcblxuICAgICAgICBzYXZlRW52UmVxLkVudmlyb25tZW50LlNlY3JldHNbc2VjcmV0TG9va3VwXSA9IHtcbiAgICAgICAgICBOYW1lOiAnTlBNIEFjY2VzcyBUb2tlbicsXG4gICAgICAgICAgRGF0YVRva2VuTG9va3VwOiBzZWNyZXRMb29rdXAsXG4gICAgICAgICAgS25vd25BczogJ05QTV9UT0tFTicsXG4gICAgICAgIH07XG5cbiAgICAgICAgc2F2ZUVudlJlcS5FbnRlcnByaXNlRGF0YVRva2Vuc1tzZWNyZXRMb29rdXBdID0ge1xuICAgICAgICAgIE5hbWU6IHNhdmVFbnZSZXEuRW52aXJvbm1lbnQuU2VjcmV0c1tzZWNyZXRMb29rdXBdLk5hbWUsXG4gICAgICAgICAgRGVzY3JpcHRpb246IHNhdmVFbnZSZXEuRW52aXJvbm1lbnQuU2VjcmV0c1tzZWNyZXRMb29rdXBdLk5hbWUsXG4gICAgICAgICAgVmFsdWU6IHRoaXMuTlBNVG9rZW5Gb3JtQ29udHJvbC52YWx1ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgc2F2ZUVudlJlcS5FbnZpcm9ubWVudC5EZXZPcHNBY3Rpb25zW2Rldk9wc0FjdGlvbkxvb2t1cF0gPSBkb2E7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRldk9wc0FjdGlvbkxvb2t1cCA9IHRoaXMuRGV2T3BzQWN0aW9uTG9va3VwO1xuXG4gICAgICBjb25zdCBkb2E6IEVhQ0Rldk9wc0FjdGlvbiA9IHtcbiAgICAgICAgLi4udGhpcy5EZXZPcHNBY3Rpb24sXG4gICAgICAgIE5hbWU6IHRoaXMuRGV2T3BzQWN0aW9uTmFtZUZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgfTtcblxuICAgICAgc2F2ZUVudlJlcS5FbnZpcm9ubWVudC5EZXZPcHNBY3Rpb25zW2Rldk9wc0FjdGlvbkxvb2t1cF0gPSBkb2E7XG4gICAgfVxuXG4gICAgdGhpcy5lYWNTdmMuU2F2ZUVudmlyb25tZW50QXNDb2RlKHNhdmVFbnZSZXEpO1xuICB9XG5cbiAgLy8gIEhlbHBlcnNcbiAgcHJvdGVjdGVkIHNldHVwQ29udHJvbHNGb3JGb3JtKCk6IHZvaWQge1xuXG4gICAgLy8gdGhpcy5CdWlsZFBpcGVsaW5lID1cbiAgICAvLyAgICAgICAgIHRoaXMuQnVpbGRQaXBlbGluZSB8fCB0aGlzLkhvc3RpbmdEZXRhaWxzPy5Ib3N0aW5nT3B0aW9uc1xuICAgIC8vICAgICAgICAgICA/IHRoaXMuSG9zdGluZ0RldGFpbHM/Lkhvc3RpbmdPcHRpb25zWzBdPy5Mb29rdXBcbiAgICAvLyAgICAgICAgICAgOiAnJztcblxuICAgIC8vIGNvbnNvbGUubG9nKFwiaG9zdGluZyBkZXRhaWxzOiBcIiwgdGhpcy5Ib3N0aW5nRGV0YWlscylcblxuICAgIGZvciAoY29uc3QgY3RybE5hbWUgaW4gdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmNvbnRyb2xzKSB7XG4gICAgICAvL2Rldk9wc0FjdGlvbiBkb2Vzbid0IGV4aXN0XG4gICAgICAvL3JlbW92ZXMgaG9zdGluZyBkZXRhaWxzXG4gICAgICBpZiAoY3RybE5hbWUgIT09ICdidWlsZFBpcGVsaW5lJyAmJiBjdHJsTmFtZSAhPT0gJ2Rldk9wc0FjdGlvbicpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJyZW1vdmluZyBjb250cm9sOiBcIiwgY3RybE5hbWUpXG4gICAgICAgIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5yZW1vdmVDb250cm9sKGN0cmxOYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdkZXZPcHNBY3Rpb25OYW1lJyxcbiAgICAgIHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChcbiAgICAgICAgdGhpcy5EZXZPcHNBY3Rpb24/Lk5hbWUgfHwgdGhpcy5TZWxlY3RlZEhvc3RpbmdPcHRpb24/Lk5hbWUgfHwgJycsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBjb25zb2xlLmxvZyhcInNlbGVjdGVkIGhvc3Rpbmcgb3B0aW9uczogXCIsIHRoaXMuU2VsZWN0ZWRIb3N0aW5nT3B0aW9uLklucHV0cyk7XG5cbiAgICB0aGlzLlNlbGVjdGVkSG9zdGluZ09wdGlvbj8uSW5wdXRzPy5mb3JFYWNoKChpbnB1dCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IGlucHV0LlJlcXVpcmVkID8gW1ZhbGlkYXRvcnMucmVxdWlyZWRdIDogW107XG5cbiAgICAgIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICBpbnB1dC5Mb29rdXAsXG4gICAgICAgIHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChcbiAgICAgICAgICB0aGlzLkFydGlmYWN0W2lucHV0Lkxvb2t1cF0gfHwgaW5wdXQuRGVmYXVsdFZhbHVlIHx8ICcnLFxuICAgICAgICAgIHZhbGlkYXRvcnNcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgICAgLy8gaWYgKHRoaXMuRGlzYWJsZWQpIHtcbiAgICAgIC8vICAgdGhpcy5Gb3JtR3JvdXAuY29udHJvbHNbaW5wdXQuTG9va3VwXS5kaXNhYmxlKCk7XG4gICAgICAvLyB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5CdWlsZFBpcGVsaW5lRm9ybUNvbnRyb2w/LnZhbHVlID09PSAnbnBtLXJlbGVhc2UnKSB7XG5cbiAgICAgIGlmICghdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmNvbnRyb2xzLm5wbVRva2VuKSB7XG4gICAgICAgIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICAgICducG1Ub2tlbicsXG4gICAgICAgICAgdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKFxuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICB0aGlzLkRpc2FibGVkID8gW10gOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuRGlzYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAuY29udHJvbHMubnBtVG9rZW4uZGlzYWJsZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Db250cm9sPy52YWx1ZSA9PT0gJ2dpdGh1Yi1hcnRpZmFjdHMtcmVsZWFzZSdcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAuY29udHJvbHMubnBtVG9rZW4pIHtcbiAgICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ25wbVRva2VuJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgXG5cbiAgcHJvdGVjdGVkIGxvYWRQcm9qZWN0SG9zdGluZ0RldGFpbHMoKTogdm9pZCB7XG4gICAgdGhpcy5Ib3N0aW5nRGV0YWlscy5Mb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmFwcHNGbG93U3ZjXG4gICAgICAuTmV3TG9hZFByb2plY3RIb3N0aW5nRGV0YWlscygpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAocmVzcG9uc2U6IEJhc2VNb2RlbGVkUmVzcG9uc2U8UHJvamVjdEhvc3RpbmdEZXRhaWxzPikgPT4ge1xuICAgICAgICAgIHRoaXMuSG9zdGluZ0RldGFpbHMgPSByZXNwb25zZS5Nb2RlbDtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInJlc3BvbnNlOiBcIiwgcmVzcG9uc2UpO1xuICAgICAgICAgIHRoaXMuSG9zdGluZ0RldGFpbHMuTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgY29uc3QgaG9zdE9wdGlvbiA9IHRoaXMuSG9zdGluZ0RldGFpbHM/Lkhvc3RpbmdPcHRpb25zPy5maW5kKFxuICAgICAgICAgICAgKGhvKSA9PiBoby5QYXRoID09PSB0aGlzLkRldk9wc0FjdGlvbi5QYXRoXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLkJ1aWxkUGlwZWxpbmUgPSAgaG9zdE9wdGlvbi5Mb29rdXA7XG5cbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkJ1aWxkIFBpcGVsaW5lIEhFUkU9IFwiLCB0aGlzLkJ1aWxkUGlwZWxpbmUpO1xuXG4gICAgICAgICAgdGhpcy5zZXR1cENvbnRyb2xzRm9yRm9ybSgpO1xuXG4gICAgICAgIH0sXG4gICAgICAgIChlcnIpID0+IHtcblxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiRVJSOiBcIiwgZXJyKTtcbiAgICAgICAgICB0aGlzLkhvc3RpbmdEZXRhaWxzLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICB9XG4gICAgICApO1xuICAgIGNvbnNvbGUubG9nKFwiSE9TVElORyBERVRBSUxTOiBcIiwgdGhpcy5Ib3N0aW5nRGV0YWlscyk7XG5cbiAgfVxuXG59XG4iXX0=