@cdktn/provider-newrelic 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/.jsii +198156 -0
  2. package/LICENSE +355 -0
  3. package/README.md +94 -0
  4. package/lib/account-management/index.d.ts +122 -0
  5. package/lib/account-management/index.js +293 -0
  6. package/lib/alert-channel/index.d.ts +351 -0
  7. package/lib/alert-channel/index.js +769 -0
  8. package/lib/alert-compound-condition/index.d.ts +233 -0
  9. package/lib/alert-compound-condition/index.js +506 -0
  10. package/lib/alert-condition/index.d.ts +271 -0
  11. package/lib/alert-condition/index.js +558 -0
  12. package/lib/alert-muting-rule/index.d.ts +309 -0
  13. package/lib/alert-muting-rule/index.js +714 -0
  14. package/lib/alert-policy/index.d.ts +91 -0
  15. package/lib/alert-policy/index.js +174 -0
  16. package/lib/alert-policy-channel/index.d.ts +114 -0
  17. package/lib/alert-policy-channel/index.js +258 -0
  18. package/lib/api-access-key/index.d.ts +102 -0
  19. package/lib/api-access-key/index.js +220 -0
  20. package/lib/application-settings/index.d.ts +414 -0
  21. package/lib/application-settings/index.js +944 -0
  22. package/lib/browser-application/index.d.ts +149 -0
  23. package/lib/browser-application/index.js +341 -0
  24. package/lib/cloud-aws-eu-sovereign-integrations/index.d.ts +199 -0
  25. package/lib/cloud-aws-eu-sovereign-integrations/index.js +481 -0
  26. package/lib/cloud-aws-eu-sovereign-link-account/index.d.ts +90 -0
  27. package/lib/cloud-aws-eu-sovereign-link-account/index.js +171 -0
  28. package/lib/cloud-aws-govcloud-integrations/index.d.ts +1523 -0
  29. package/lib/cloud-aws-govcloud-integrations/index.js +3776 -0
  30. package/lib/cloud-aws-govcloud-link-account/index.d.ts +90 -0
  31. package/lib/cloud-aws-govcloud-link-account/index.js +171 -0
  32. package/lib/cloud-aws-integrations/index.d.ts +3345 -0
  33. package/lib/cloud-aws-integrations/index.js +8599 -0
  34. package/lib/cloud-aws-link-account/index.d.ts +90 -0
  35. package/lib/cloud-aws-link-account/index.js +171 -0
  36. package/lib/cloud-azure-integrations/index.d.ts +1666 -0
  37. package/lib/cloud-azure-integrations/index.js +4361 -0
  38. package/lib/cloud-azure-link-account/index.d.ts +109 -0
  39. package/lib/cloud-azure-link-account/index.js +204 -0
  40. package/lib/cloud-gcp-integrations/index.d.ts +1049 -0
  41. package/lib/cloud-gcp-integrations/index.js +2810 -0
  42. package/lib/cloud-gcp-link-account/index.d.ts +79 -0
  43. package/lib/cloud-gcp-link-account/index.js +150 -0
  44. package/lib/cloud-oci-link-account/index.d.ts +195 -0
  45. package/lib/cloud-oci-link-account/index.js +366 -0
  46. package/lib/data-newrelic-account/index.d.ts +82 -0
  47. package/lib/data-newrelic-account/index.js +160 -0
  48. package/lib/data-newrelic-alert-channel/index.d.ts +126 -0
  49. package/lib/data-newrelic-alert-channel/index.js +298 -0
  50. package/lib/data-newrelic-alert-policy/index.d.ts +82 -0
  51. package/lib/data-newrelic-alert-policy/index.js +161 -0
  52. package/lib/data-newrelic-application/index.d.ts +60 -0
  53. package/lib/data-newrelic-application/index.js +122 -0
  54. package/lib/data-newrelic-authentication-domain/index.d.ts +47 -0
  55. package/lib/data-newrelic-authentication-domain/index.js +97 -0
  56. package/lib/data-newrelic-cloud-account/index.d.ts +79 -0
  57. package/lib/data-newrelic-cloud-account/index.js +150 -0
  58. package/lib/data-newrelic-entity/index.d.ts +189 -0
  59. package/lib/data-newrelic-entity/index.js +401 -0
  60. package/lib/data-newrelic-group/index.d.ts +58 -0
  61. package/lib/data-newrelic-group/index.js +116 -0
  62. package/lib/data-newrelic-key-transaction/index.d.ts +82 -0
  63. package/lib/data-newrelic-key-transaction/index.js +161 -0
  64. package/lib/data-newrelic-notification-destination/index.d.ts +165 -0
  65. package/lib/data-newrelic-notification-destination/index.js +372 -0
  66. package/lib/data-newrelic-obfuscation-expression/index.d.ts +69 -0
  67. package/lib/data-newrelic-obfuscation-expression/index.js +132 -0
  68. package/lib/data-newrelic-service-level-alert-helper/index.d.ts +111 -0
  69. package/lib/data-newrelic-service-level-alert-helper/index.js +244 -0
  70. package/lib/data-newrelic-synthetics-private-location/index.d.ts +80 -0
  71. package/lib/data-newrelic-synthetics-private-location/index.js +153 -0
  72. package/lib/data-newrelic-synthetics-secure-credential/index.d.ts +71 -0
  73. package/lib/data-newrelic-synthetics-secure-credential/index.js +140 -0
  74. package/lib/data-newrelic-test-grok-pattern/index.d.ts +149 -0
  75. package/lib/data-newrelic-test-grok-pattern/index.js +318 -0
  76. package/lib/data-newrelic-user/index.d.ts +69 -0
  77. package/lib/data-newrelic-user/index.js +136 -0
  78. package/lib/data-partition-rule/index.d.ts +146 -0
  79. package/lib/data-partition-rule/index.js +319 -0
  80. package/lib/entity-tags/index.d.ts +156 -0
  81. package/lib/entity-tags/index.js +368 -0
  82. package/lib/events-to-metrics-rule/index.d.ts +102 -0
  83. package/lib/events-to-metrics-rule/index.js +196 -0
  84. package/lib/group/index.d.ts +79 -0
  85. package/lib/group/index.js +150 -0
  86. package/lib/index.d.ts +74 -0
  87. package/lib/index.js +80 -0
  88. package/lib/infra-alert-condition/index.d.ts +293 -0
  89. package/lib/infra-alert-condition/index.js +665 -0
  90. package/lib/insights-event/index.d.ts +186 -0
  91. package/lib/insights-event/index.js +425 -0
  92. package/lib/key-transaction/index.d.ts +100 -0
  93. package/lib/key-transaction/index.js +191 -0
  94. package/lib/lazy-index.d.ts +4 -0
  95. package/lib/lazy-index.js +77 -0
  96. package/lib/log-parsing-rule/index.d.ts +132 -0
  97. package/lib/log-parsing-rule/index.js +250 -0
  98. package/lib/monitor-downtime/index.d.ts +259 -0
  99. package/lib/monitor-downtime/index.js +594 -0
  100. package/lib/notification-channel/index.d.ts +240 -0
  101. package/lib/notification-channel/index.js +546 -0
  102. package/lib/notification-destination/index.d.ts +406 -0
  103. package/lib/notification-destination/index.js +1030 -0
  104. package/lib/nrql-alert-condition/index.d.ts +976 -0
  105. package/lib/nrql-alert-condition/index.js +2320 -0
  106. package/lib/nrql-drop-rule/index.d.ts +127 -0
  107. package/lib/nrql-drop-rule/index.js +287 -0
  108. package/lib/obfuscation-expression/index.d.ts +90 -0
  109. package/lib/obfuscation-expression/index.js +171 -0
  110. package/lib/obfuscation-rule/index.d.ts +173 -0
  111. package/lib/obfuscation-rule/index.js +361 -0
  112. package/lib/one-dashboard/index-structs/index.d.ts +6 -0
  113. package/lib/one-dashboard/index-structs/index.js +23 -0
  114. package/lib/one-dashboard/index-structs/structs0.d.ts +7000 -0
  115. package/lib/one-dashboard/index-structs/structs0.js +17966 -0
  116. package/lib/one-dashboard/index-structs/structs400.d.ts +3703 -0
  117. package/lib/one-dashboard/index-structs/structs400.js +9484 -0
  118. package/lib/one-dashboard/index.d.ts +116 -0
  119. package/lib/one-dashboard/index.js +246 -0
  120. package/lib/one-dashboard-json/index.d.ts +116 -0
  121. package/lib/one-dashboard-json/index.js +278 -0
  122. package/lib/one-dashboard-raw/index.d.ts +278 -0
  123. package/lib/one-dashboard-raw/index.js +646 -0
  124. package/lib/pipeline-cloud-rule/index.d.ts +90 -0
  125. package/lib/pipeline-cloud-rule/index.js +171 -0
  126. package/lib/provider/index.d.ts +164 -0
  127. package/lib/provider/index.js +354 -0
  128. package/lib/service-level/index.d.ts +505 -0
  129. package/lib/service-level/index.js +1429 -0
  130. package/lib/synthetics-alert-condition/index.d.ts +101 -0
  131. package/lib/synthetics-alert-condition/index.js +193 -0
  132. package/lib/synthetics-broken-links-monitor/index.d.ts +221 -0
  133. package/lib/synthetics-broken-links-monitor/index.js +455 -0
  134. package/lib/synthetics-cert-check-monitor/index.d.ts +226 -0
  135. package/lib/synthetics-cert-check-monitor/index.js +469 -0
  136. package/lib/synthetics-monitor/index.d.ts +408 -0
  137. package/lib/synthetics-monitor/index.js +843 -0
  138. package/lib/synthetics-multilocation-alert-condition/index.d.ts +181 -0
  139. package/lib/synthetics-multilocation-alert-condition/index.js +403 -0
  140. package/lib/synthetics-private-location/index.d.ts +94 -0
  141. package/lib/synthetics-private-location/index.js +187 -0
  142. package/lib/synthetics-script-monitor/index.d.ts +352 -0
  143. package/lib/synthetics-script-monitor/index.js +736 -0
  144. package/lib/synthetics-secure-credential/index.d.ts +136 -0
  145. package/lib/synthetics-secure-credential/index.js +300 -0
  146. package/lib/synthetics-step-monitor/index.d.ts +372 -0
  147. package/lib/synthetics-step-monitor/index.js +809 -0
  148. package/lib/user/index.d.ts +89 -0
  149. package/lib/user/index.js +168 -0
  150. package/lib/workflow/index.d.ts +445 -0
  151. package/lib/workflow/index.js +1058 -0
  152. package/lib/workload/index.d.ts +518 -0
  153. package/lib/workload/index.js +1279 -0
  154. package/package.json +155 -0
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.LogParsingRule = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const cdktn = require("cdktn");
7
+ /**
8
+ * Represents a {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/log_parsing_rule newrelic_log_parsing_rule}
9
+ */
10
+ class LogParsingRule extends cdktn.TerraformResource {
11
+ // ==============
12
+ // STATIC Methods
13
+ // ==============
14
+ /**
15
+ * Generates CDKTN code for importing a LogParsingRule resource upon running "cdktn plan <stack-name>"
16
+ * @param scope The scope in which to define this construct
17
+ * @param importToId The construct id used in the generated config for the LogParsingRule to import
18
+ * @param importFromId The id of the existing LogParsingRule that should be imported. Refer to the {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/log_parsing_rule#import import section} in the documentation of this resource for the id to use
19
+ * @param provider? Optional instance of the provider where the LogParsingRule to import is found
20
+ */
21
+ static generateConfigForImport(scope, importToId, importFromId, provider) {
22
+ return new cdktn.ImportableResource(scope, importToId, { terraformResourceType: "newrelic_log_parsing_rule", importId: importFromId, provider });
23
+ }
24
+ // ===========
25
+ // INITIALIZER
26
+ // ===========
27
+ /**
28
+ * Create a new {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/log_parsing_rule newrelic_log_parsing_rule} Resource
29
+ *
30
+ * @param scope The scope in which to define this construct
31
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
32
+ * @param options LogParsingRuleConfig
33
+ */
34
+ constructor(scope, id, config) {
35
+ super(scope, id, {
36
+ terraformResourceType: 'newrelic_log_parsing_rule',
37
+ terraformGeneratorMetadata: {
38
+ providerName: 'newrelic',
39
+ providerVersion: '3.80.2',
40
+ providerVersionConstraint: '~> 3.7'
41
+ },
42
+ provider: config.provider,
43
+ dependsOn: config.dependsOn,
44
+ count: config.count,
45
+ lifecycle: config.lifecycle,
46
+ provisioners: config.provisioners,
47
+ connection: config.connection,
48
+ forEach: config.forEach
49
+ });
50
+ this._accountId = config.accountId;
51
+ this._attribute = config.attribute;
52
+ this._enabled = config.enabled;
53
+ this._grok = config.grok;
54
+ this._id = config.id;
55
+ this._lucene = config.lucene;
56
+ this._matched = config.matched;
57
+ this._name = config.name;
58
+ this._nrql = config.nrql;
59
+ }
60
+ get accountId() {
61
+ return this.getNumberAttribute('account_id');
62
+ }
63
+ set accountId(value) {
64
+ this._accountId = value;
65
+ }
66
+ resetAccountId() {
67
+ this._accountId = undefined;
68
+ }
69
+ // Temporarily expose input value. Use with caution.
70
+ get accountIdInput() {
71
+ return this._accountId;
72
+ }
73
+ get attribute() {
74
+ return this.getStringAttribute('attribute');
75
+ }
76
+ set attribute(value) {
77
+ this._attribute = value;
78
+ }
79
+ resetAttribute() {
80
+ this._attribute = undefined;
81
+ }
82
+ // Temporarily expose input value. Use with caution.
83
+ get attributeInput() {
84
+ return this._attribute;
85
+ }
86
+ // deleted - computed: true, optional: false, required: false
87
+ get deleted() {
88
+ return this.getBooleanAttribute('deleted');
89
+ }
90
+ get enabled() {
91
+ return this.getBooleanAttribute('enabled');
92
+ }
93
+ set enabled(value) {
94
+ this._enabled = value;
95
+ }
96
+ // Temporarily expose input value. Use with caution.
97
+ get enabledInput() {
98
+ return this._enabled;
99
+ }
100
+ get grok() {
101
+ return this.getStringAttribute('grok');
102
+ }
103
+ set grok(value) {
104
+ this._grok = value;
105
+ }
106
+ // Temporarily expose input value. Use with caution.
107
+ get grokInput() {
108
+ return this._grok;
109
+ }
110
+ get id() {
111
+ return this.getStringAttribute('id');
112
+ }
113
+ set id(value) {
114
+ this._id = value;
115
+ }
116
+ resetId() {
117
+ this._id = undefined;
118
+ }
119
+ // Temporarily expose input value. Use with caution.
120
+ get idInput() {
121
+ return this._id;
122
+ }
123
+ get lucene() {
124
+ return this.getStringAttribute('lucene');
125
+ }
126
+ set lucene(value) {
127
+ this._lucene = value;
128
+ }
129
+ // Temporarily expose input value. Use with caution.
130
+ get luceneInput() {
131
+ return this._lucene;
132
+ }
133
+ get matched() {
134
+ return this.getBooleanAttribute('matched');
135
+ }
136
+ set matched(value) {
137
+ this._matched = value;
138
+ }
139
+ resetMatched() {
140
+ this._matched = undefined;
141
+ }
142
+ // Temporarily expose input value. Use with caution.
143
+ get matchedInput() {
144
+ return this._matched;
145
+ }
146
+ get name() {
147
+ return this.getStringAttribute('name');
148
+ }
149
+ set name(value) {
150
+ this._name = value;
151
+ }
152
+ // Temporarily expose input value. Use with caution.
153
+ get nameInput() {
154
+ return this._name;
155
+ }
156
+ get nrql() {
157
+ return this.getStringAttribute('nrql');
158
+ }
159
+ set nrql(value) {
160
+ this._nrql = value;
161
+ }
162
+ // Temporarily expose input value. Use with caution.
163
+ get nrqlInput() {
164
+ return this._nrql;
165
+ }
166
+ // =========
167
+ // SYNTHESIS
168
+ // =========
169
+ synthesizeAttributes() {
170
+ return {
171
+ account_id: cdktn.numberToTerraform(this._accountId),
172
+ attribute: cdktn.stringToTerraform(this._attribute),
173
+ enabled: cdktn.booleanToTerraform(this._enabled),
174
+ grok: cdktn.stringToTerraform(this._grok),
175
+ id: cdktn.stringToTerraform(this._id),
176
+ lucene: cdktn.stringToTerraform(this._lucene),
177
+ matched: cdktn.booleanToTerraform(this._matched),
178
+ name: cdktn.stringToTerraform(this._name),
179
+ nrql: cdktn.stringToTerraform(this._nrql),
180
+ };
181
+ }
182
+ synthesizeHclAttributes() {
183
+ const attrs = {
184
+ account_id: {
185
+ value: cdktn.numberToHclTerraform(this._accountId),
186
+ isBlock: false,
187
+ type: "simple",
188
+ storageClassType: "number",
189
+ },
190
+ attribute: {
191
+ value: cdktn.stringToHclTerraform(this._attribute),
192
+ isBlock: false,
193
+ type: "simple",
194
+ storageClassType: "string",
195
+ },
196
+ enabled: {
197
+ value: cdktn.booleanToHclTerraform(this._enabled),
198
+ isBlock: false,
199
+ type: "simple",
200
+ storageClassType: "boolean",
201
+ },
202
+ grok: {
203
+ value: cdktn.stringToHclTerraform(this._grok),
204
+ isBlock: false,
205
+ type: "simple",
206
+ storageClassType: "string",
207
+ },
208
+ id: {
209
+ value: cdktn.stringToHclTerraform(this._id),
210
+ isBlock: false,
211
+ type: "simple",
212
+ storageClassType: "string",
213
+ },
214
+ lucene: {
215
+ value: cdktn.stringToHclTerraform(this._lucene),
216
+ isBlock: false,
217
+ type: "simple",
218
+ storageClassType: "string",
219
+ },
220
+ matched: {
221
+ value: cdktn.booleanToHclTerraform(this._matched),
222
+ isBlock: false,
223
+ type: "simple",
224
+ storageClassType: "boolean",
225
+ },
226
+ name: {
227
+ value: cdktn.stringToHclTerraform(this._name),
228
+ isBlock: false,
229
+ type: "simple",
230
+ storageClassType: "string",
231
+ },
232
+ nrql: {
233
+ value: cdktn.stringToHclTerraform(this._nrql),
234
+ isBlock: false,
235
+ type: "simple",
236
+ storageClassType: "string",
237
+ },
238
+ };
239
+ // remove undefined attributes
240
+ return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
241
+ }
242
+ }
243
+ exports.LogParsingRule = LogParsingRule;
244
+ _a = JSII_RTTI_SYMBOL_1;
245
+ LogParsingRule[_a] = { fqn: "@cdktn/provider-newrelic.logParsingRule.LogParsingRule", version: "14.0.0" };
246
+ // =================
247
+ // STATIC PROPERTIES
248
+ // =================
249
+ LogParsingRule.tfResourceType = "newrelic_log_parsing_rule";
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9nLXBhcnNpbmctcnVsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVNBLCtCQUErQjtBQThEL0I7O0VBRUU7QUFDRixNQUFhLGNBQWUsU0FBUSxLQUFLLENBQUMsaUJBQWlCO0lBT3pELGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCOzs7Ozs7TUFNRTtJQUNLLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxLQUFnQixFQUFFLFVBQWtCLEVBQUUsWUFBb0IsRUFBRSxRQUFrQztRQUM5SCxPQUFPLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSwyQkFBMkIsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbkosQ0FBQztJQUVMLGNBQWM7SUFDZCxjQUFjO0lBQ2QsY0FBYztJQUVkOzs7Ozs7TUFNRTtJQUNGLFlBQW1CLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE1BQTRCO1FBQzNFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YscUJBQXFCLEVBQUUsMkJBQTJCO1lBQ2xELDBCQUEwQixFQUFFO2dCQUMxQixZQUFZLEVBQUUsVUFBVTtnQkFDeEIsZUFBZSxFQUFFLFFBQVE7Z0JBQ3pCLHlCQUF5QixFQUFFLFFBQVE7YUFDcEM7WUFDRCxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQzNCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztZQUNuQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7WUFDM0IsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO1lBQ2pDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtZQUM3QixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87U0FD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LEtBQUssRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDN0MsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsZ0JBQWdCLEVBQUUsUUFBUTthQUMzQjtTQUNGLENBQUM7UUFFRiw4QkFBOEI7UUFDOUIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUUsQ0FBQyxDQUFBO0lBQzVILENBQUM7O0FBblJILHdDQW9SQzs7O0FBbFJDLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ0csNkJBQWMsR0FBRywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDIxLCAyMDI2XG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbi8vIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9uZXdyZWxpYy9uZXdyZWxpYy8zLjgwLjIvZG9jcy9yZXNvdXJjZXMvbG9nX3BhcnNpbmdfcnVsZVxuLy8gZ2VuZXJhdGVkIGZyb20gdGVycmFmb3JtIHJlc291cmNlIHNjaGVtYVxuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGNka3RuIGZyb20gJ2Nka3RuJztcblxuLy8gQ29uZmlndXJhdGlvblxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ1BhcnNpbmdSdWxlQ29uZmlnIGV4dGVuZHMgY2RrdG4uVGVycmFmb3JtTWV0YUFyZ3VtZW50cyB7XG4gIC8qKlxuICAqIFRoZSBhY2NvdW50IGlkIGFzc29jaWF0ZWQgd2l0aCB0aGUgb2JmdXNjYXRpb24gZXhwcmVzc2lvbi5cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL25ld3JlbGljL25ld3JlbGljLzMuODAuMi9kb2NzL3Jlc291cmNlcy9sb2dfcGFyc2luZ19ydWxlI2FjY291bnRfaWQgTG9nUGFyc2luZ1J1bGUjYWNjb3VudF9pZH1cbiAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudElkPzogbnVtYmVyO1xuICAvKipcbiAgKiBUaGUgcGFyc2luZyBydWxlIHdpbGwgYXBwbHkgdG8gdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUuIElmIGZpZWxkIGlzIG5vdCBwcm92aWRlZCwgdmFsdWUgd2lsbCBkZWZhdWx0IHRvIG1lc3NhZ2UuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9uZXdyZWxpYy9uZXdyZWxpYy8zLjgwLjIvZG9jcy9yZXNvdXJjZXMvbG9nX3BhcnNpbmdfcnVsZSNhdHRyaWJ1dGUgTG9nUGFyc2luZ1J1bGUjYXR0cmlidXRlfVxuICAqL1xuICByZWFkb25seSBhdHRyaWJ1dGU/OiBzdHJpbmc7XG4gIC8qKlxuICAqIFdoZXRoZXIgb3Igbm90IHRoaXMgcnVsZSBpcyBlbmFibGVkLlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvbmV3cmVsaWMvbmV3cmVsaWMvMy44MC4yL2RvY3MvcmVzb3VyY2VzL2xvZ19wYXJzaW5nX3J1bGUjZW5hYmxlZCBMb2dQYXJzaW5nUnVsZSNlbmFibGVkfVxuICAqL1xuICByZWFkb25seSBlbmFibGVkOiBib29sZWFuIHwgY2RrdG4uSVJlc29sdmFibGU7XG4gIC8qKlxuICAqIFRoZSBHcm9rIG9mIHdoYXQgdG8gcGFyc2UuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9uZXdyZWxpYy9uZXdyZWxpYy8zLjgwLjIvZG9jcy9yZXNvdXJjZXMvbG9nX3BhcnNpbmdfcnVsZSNncm9rIExvZ1BhcnNpbmdSdWxlI2dyb2t9XG4gICovXG4gIHJlYWRvbmx5IGdyb2s6IHN0cmluZztcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvbmV3cmVsaWMvbmV3cmVsaWMvMy44MC4yL2RvY3MvcmVzb3VyY2VzL2xvZ19wYXJzaW5nX3J1bGUjaWQgTG9nUGFyc2luZ1J1bGUjaWR9XG4gICpcbiAgKiBQbGVhc2UgYmUgYXdhcmUgdGhhdCB0aGUgaWQgZmllbGQgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byBhbGwgcmVzb3VyY2VzIGluIFRlcnJhZm9ybSBwcm92aWRlcnMgdXNpbmcgYSBUZXJyYWZvcm0gcHJvdmlkZXIgU0RLIHZlcnNpb24gYmVsb3cgMi5cbiAgKiBJZiB5b3UgZXhwZXJpZW5jZSBwcm9ibGVtcyBzZXR0aW5nIHRoaXMgdmFsdWUgaXQgbWlnaHQgbm90IGJlIHNldHRhYmxlLiBQbGVhc2UgdGFrZSBhIGxvb2sgYXQgdGhlIHByb3ZpZGVyIGRvY3VtZW50YXRpb24gdG8gZW5zdXJlIGl0IHNob3VsZCBiZSBzZXR0YWJsZS5cbiAgKi9cbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAqIFRoZSBMdWNlbmUgdG8gbWF0Y2ggZXZlbnRzIHRvIHRoZSBwYXJzaW5nIHJ1bGUuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9uZXdyZWxpYy9uZXdyZWxpYy8zLjgwLjIvZG9jcy9yZXNvdXJjZXMvbG9nX3BhcnNpbmdfcnVsZSNsdWNlbmUgTG9nUGFyc2luZ1J1bGUjbHVjZW5lfVxuICAqL1xuICByZWFkb25seSBsdWNlbmU6IHN0cmluZztcbiAgLyoqXG4gICogV2hldGhlciB0aGUgR3JvayBwYXR0ZXJuIG1hdGNoZWQuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9uZXdyZWxpYy9uZXdyZWxpYy8zLjgwLjIvZG9jcy9yZXNvdXJjZXMvbG9nX3BhcnNpbmdfcnVsZSNtYXRjaGVkIExvZ1BhcnNpbmdSdWxlI21hdGNoZWR9XG4gICovXG4gIHJlYWRvbmx5IG1hdGNoZWQ/OiBib29sZWFuIHwgY2RrdG4uSVJlc29sdmFibGU7XG4gIC8qKlxuICAqIEEgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIHBhcnNpbmcgcnVsZSByZXByZXNlbnRzLlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvbmV3cmVsaWMvbmV3cmVsaWMvMy44MC4yL2RvY3MvcmVzb3VyY2VzL2xvZ19wYXJzaW5nX3J1bGUjbmFtZSBMb2dQYXJzaW5nUnVsZSNuYW1lfVxuICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAqIFRoZSBOUlFMIHRvIG1hdGNoIGV2ZW50cyB0byB0aGUgcGFyc2luZyBydWxlLlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvbmV3cmVsaWMvbmV3cmVsaWMvMy44MC4yL2RvY3MvcmVzb3VyY2VzL2xvZ19wYXJzaW5nX3J1bGUjbnJxbCBMb2dQYXJzaW5nUnVsZSNucnFsfVxuICAqL1xuICByZWFkb25seSBucnFsOiBzdHJpbmc7XG59XG5cbi8qKlxuKiBSZXByZXNlbnRzIGEge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9uZXdyZWxpYy9uZXdyZWxpYy8zLjgwLjIvZG9jcy9yZXNvdXJjZXMvbG9nX3BhcnNpbmdfcnVsZSBuZXdyZWxpY19sb2dfcGFyc2luZ19ydWxlfVxuKi9cbmV4cG9ydCBjbGFzcyBMb2dQYXJzaW5nUnVsZSBleHRlbmRzIGNka3RuLlRlcnJhZm9ybVJlc291cmNlIHtcblxuICAvLyA9PT09PT09PT09PT09PT09PVxuICAvLyBTVEFUSUMgUFJPUEVSVElFU1xuICAvLyA9PT09PT09PT09PT09PT09PVxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHRmUmVzb3VyY2VUeXBlID0gXCJuZXdyZWxpY19sb2dfcGFyc2luZ19ydWxlXCI7XG5cbiAgLy8gPT09PT09PT09PT09PT1cbiAgLy8gU1RBVElDIE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT1cbiAgLyoqXG4gICogR2VuZXJhdGVzIENES1ROIGNvZGUgZm9yIGltcG9ydGluZyBhIExvZ1BhcnNpbmdSdWxlIHJlc291cmNlIHVwb24gcnVubmluZyBcImNka3RuIHBsYW4gPHN0YWNrLW5hbWU+XCJcbiAgKiBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAqIEBwYXJhbSBpbXBvcnRUb0lkIFRoZSBjb25zdHJ1Y3QgaWQgdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIGNvbmZpZyBmb3IgdGhlIExvZ1BhcnNpbmdSdWxlIHRvIGltcG9ydFxuICAqIEBwYXJhbSBpbXBvcnRGcm9tSWQgVGhlIGlkIG9mIHRoZSBleGlzdGluZyBMb2dQYXJzaW5nUnVsZSB0aGF0IHNob3VsZCBiZSBpbXBvcnRlZC4gUmVmZXIgdG8gdGhlIHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvbmV3cmVsaWMvbmV3cmVsaWMvMy44MC4yL2RvY3MvcmVzb3VyY2VzL2xvZ19wYXJzaW5nX3J1bGUjaW1wb3J0IGltcG9ydCBzZWN0aW9ufSBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIHJlc291cmNlIGZvciB0aGUgaWQgdG8gdXNlXG4gICogQHBhcmFtIHByb3ZpZGVyPyBPcHRpb25hbCBpbnN0YW5jZSBvZiB0aGUgcHJvdmlkZXIgd2hlcmUgdGhlIExvZ1BhcnNpbmdSdWxlIHRvIGltcG9ydCBpcyBmb3VuZFxuICAqL1xuICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlQ29uZmlnRm9ySW1wb3J0KHNjb3BlOiBDb25zdHJ1Y3QsIGltcG9ydFRvSWQ6IHN0cmluZywgaW1wb3J0RnJvbUlkOiBzdHJpbmcsIHByb3ZpZGVyPzogY2RrdG4uVGVycmFmb3JtUHJvdmlkZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBjZGt0bi5JbXBvcnRhYmxlUmVzb3VyY2Uoc2NvcGUsIGltcG9ydFRvSWQsIHsgdGVycmFmb3JtUmVzb3VyY2VUeXBlOiBcIm5ld3JlbGljX2xvZ19wYXJzaW5nX3J1bGVcIiwgaW1wb3J0SWQ6IGltcG9ydEZyb21JZCwgcHJvdmlkZXIgfSk7XG4gICAgICB9XG5cbiAgLy8gPT09PT09PT09PT1cbiAgLy8gSU5JVElBTElaRVJcbiAgLy8gPT09PT09PT09PT1cblxuICAvKipcbiAgKiBDcmVhdGUgYSBuZXcge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9uZXdyZWxpYy9uZXdyZWxpYy8zLjgwLjIvZG9jcy9yZXNvdXJjZXMvbG9nX3BhcnNpbmdfcnVsZSBuZXdyZWxpY19sb2dfcGFyc2luZ19ydWxlfSBSZXNvdXJjZVxuICAqXG4gICogQHBhcmFtIHNjb3BlIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgKiBAcGFyYW0gaWQgVGhlIHNjb3BlZCBjb25zdHJ1Y3QgSUQuIE11c3QgYmUgdW5pcXVlIGFtb25nc3Qgc2libGluZ3MgaW4gdGhlIHNhbWUgc2NvcGVcbiAgKiBAcGFyYW0gb3B0aW9ucyBMb2dQYXJzaW5nUnVsZUNvbmZpZ1xuICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgY29uZmlnOiBMb2dQYXJzaW5nUnVsZUNvbmZpZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgdGVycmFmb3JtUmVzb3VyY2VUeXBlOiAnbmV3cmVsaWNfbG9nX3BhcnNpbmdfcnVsZScsXG4gICAgICB0ZXJyYWZvcm1HZW5lcmF0b3JNZXRhZGF0YToge1xuICAgICAgICBwcm92aWRlck5hbWU6ICduZXdyZWxpYycsXG4gICAgICAgIHByb3ZpZGVyVmVyc2lvbjogJzMuODAuMicsXG4gICAgICAgIHByb3ZpZGVyVmVyc2lvbkNvbnN0cmFpbnQ6ICd+PiAzLjcnXG4gICAgICB9LFxuICAgICAgcHJvdmlkZXI6IGNvbmZpZy5wcm92aWRlcixcbiAgICAgIGRlcGVuZHNPbjogY29uZmlnLmRlcGVuZHNPbixcbiAgICAgIGNvdW50OiBjb25maWcuY291bnQsXG4gICAgICBsaWZlY3ljbGU6IGNvbmZpZy5saWZlY3ljbGUsXG4gICAgICBwcm92aXNpb25lcnM6IGNvbmZpZy5wcm92aXNpb25lcnMsXG4gICAgICBjb25uZWN0aW9uOiBjb25maWcuY29ubmVjdGlvbixcbiAgICAgIGZvckVhY2g6IGNvbmZpZy5mb3JFYWNoXG4gICAgfSk7XG4gICAgdGhpcy5fYWNjb3VudElkID0gY29uZmlnLmFjY291bnRJZDtcbiAgICB0aGlzLl9hdHRyaWJ1dGUgPSBjb25maWcuYXR0cmlidXRlO1xuICAgIHRoaXMuX2VuYWJsZWQgPSBjb25maWcuZW5hYmxlZDtcbiAgICB0aGlzLl9ncm9rID0gY29uZmlnLmdyb2s7XG4gICAgdGhpcy5faWQgPSBjb25maWcuaWQ7XG4gICAgdGhpcy5fbHVjZW5lID0gY29uZmlnLmx1Y2VuZTtcbiAgICB0aGlzLl9tYXRjaGVkID0gY29uZmlnLm1hdGNoZWQ7XG4gICAgdGhpcy5fbmFtZSA9IGNvbmZpZy5uYW1lO1xuICAgIHRoaXMuX25ycWwgPSBjb25maWcubnJxbDtcbiAgfVxuXG4gIC8vID09PT09PT09PT1cbiAgLy8gQVRUUklCVVRFU1xuICAvLyA9PT09PT09PT09XG5cbiAgLy8gYWNjb3VudF9pZCAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2FjY291bnRJZD86IG51bWJlcjsgXG4gIHB1YmxpYyBnZXQgYWNjb3VudElkKCkge1xuICAgIHJldHVybiB0aGlzLmdldE51bWJlckF0dHJpYnV0ZSgnYWNjb3VudF9pZCcpO1xuICB9XG4gIHB1YmxpYyBzZXQgYWNjb3VudElkKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9hY2NvdW50SWQgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRBY2NvdW50SWQoKSB7XG4gICAgdGhpcy5fYWNjb3VudElkID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBhY2NvdW50SWRJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWNjb3VudElkO1xuICB9XG5cbiAgLy8gYXR0cmlidXRlIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2F0dHJpYnV0ZT86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgYXR0cmlidXRlKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnYXR0cmlidXRlJyk7XG4gIH1cbiAgcHVibGljIHNldCBhdHRyaWJ1dGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2F0dHJpYnV0ZSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldEF0dHJpYnV0ZSgpIHtcbiAgICB0aGlzLl9hdHRyaWJ1dGUgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGF0dHJpYnV0ZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9hdHRyaWJ1dGU7XG4gIH1cblxuICAvLyBkZWxldGVkIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHB1YmxpYyBnZXQgZGVsZXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRCb29sZWFuQXR0cmlidXRlKCdkZWxldGVkJyk7XG4gIH1cblxuICAvLyBlbmFibGVkIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiB0cnVlXG4gIHByaXZhdGUgX2VuYWJsZWQ/OiBib29sZWFuIHwgY2RrdG4uSVJlc29sdmFibGU7IFxuICBwdWJsaWMgZ2V0IGVuYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Qm9vbGVhbkF0dHJpYnV0ZSgnZW5hYmxlZCcpO1xuICB9XG4gIHB1YmxpYyBzZXQgZW5hYmxlZCh2YWx1ZTogYm9vbGVhbiB8IGNka3RuLklSZXNvbHZhYmxlKSB7XG4gICAgdGhpcy5fZW5hYmxlZCA9IHZhbHVlO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBlbmFibGVkSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7XG4gIH1cblxuICAvLyBncm9rIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiB0cnVlXG4gIHByaXZhdGUgX2dyb2s/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGdyb2soKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdncm9rJyk7XG4gIH1cbiAgcHVibGljIHNldCBncm9rKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9ncm9rID0gdmFsdWU7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGdyb2tJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZ3JvaztcbiAgfVxuXG4gIC8vIGlkIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfaWQ/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnaWQnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldElkKCkge1xuICAgIHRoaXMuX2lkID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBpZElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuXG4gIC8vIGx1Y2VuZSAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF9sdWNlbmU/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGx1Y2VuZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2x1Y2VuZScpO1xuICB9XG4gIHB1YmxpYyBzZXQgbHVjZW5lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9sdWNlbmUgPSB2YWx1ZTtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgbHVjZW5lSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2x1Y2VuZTtcbiAgfVxuXG4gIC8vIG1hdGNoZWQgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9tYXRjaGVkPzogYm9vbGVhbiB8IGNka3RuLklSZXNvbHZhYmxlOyBcbiAgcHVibGljIGdldCBtYXRjaGVkKCkge1xuICAgIHJldHVybiB0aGlzLmdldEJvb2xlYW5BdHRyaWJ1dGUoJ21hdGNoZWQnKTtcbiAgfVxuICBwdWJsaWMgc2V0IG1hdGNoZWQodmFsdWU6IGJvb2xlYW4gfCBjZGt0bi5JUmVzb2x2YWJsZSkge1xuICAgIHRoaXMuX21hdGNoZWQgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRNYXRjaGVkKCkge1xuICAgIHRoaXMuX21hdGNoZWQgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IG1hdGNoZWRJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWF0Y2hlZDtcbiAgfVxuXG4gIC8vIG5hbWUgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IHRydWVcbiAgcHJpdmF0ZSBfbmFtZT86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ25hbWUnKTtcbiAgfVxuICBwdWJsaWMgc2V0IG5hbWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX25hbWUgPSB2YWx1ZTtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgbmFtZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG5cbiAgLy8gbnJxbCAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF9ucnFsPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBucnFsKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnbnJxbCcpO1xuICB9XG4gIHB1YmxpYyBzZXQgbnJxbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbnJxbCA9IHZhbHVlO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBucnFsSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25ycWw7XG4gIH1cblxuICAvLyA9PT09PT09PT1cbiAgLy8gU1lOVEhFU0lTXG4gIC8vID09PT09PT09PVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplQXR0cmlidXRlcygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY291bnRfaWQ6IGNka3RuLm51bWJlclRvVGVycmFmb3JtKHRoaXMuX2FjY291bnRJZCksXG4gICAgICBhdHRyaWJ1dGU6IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX2F0dHJpYnV0ZSksXG4gICAgICBlbmFibGVkOiBjZGt0bi5ib29sZWFuVG9UZXJyYWZvcm0odGhpcy5fZW5hYmxlZCksXG4gICAgICBncm9rOiBjZGt0bi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9ncm9rKSxcbiAgICAgIGlkOiBjZGt0bi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9pZCksXG4gICAgICBsdWNlbmU6IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX2x1Y2VuZSksXG4gICAgICBtYXRjaGVkOiBjZGt0bi5ib29sZWFuVG9UZXJyYWZvcm0odGhpcy5fbWF0Y2hlZCksXG4gICAgICBuYW1lOiBjZGt0bi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9uYW1lKSxcbiAgICAgIG5ycWw6IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX25ycWwpLFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUhjbEF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIGNvbnN0IGF0dHJzID0ge1xuICAgICAgYWNjb3VudF9pZDoge1xuICAgICAgICB2YWx1ZTogY2RrdG4ubnVtYmVyVG9IY2xUZXJyYWZvcm0odGhpcy5fYWNjb3VudElkKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwibnVtYmVyXCIsXG4gICAgICB9LFxuICAgICAgYXR0cmlidXRlOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl9hdHRyaWJ1dGUpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgICBlbmFibGVkOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0bi5ib29sZWFuVG9IY2xUZXJyYWZvcm0odGhpcy5fZW5hYmxlZCksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcImJvb2xlYW5cIixcbiAgICAgIH0sXG4gICAgICBncm9rOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl9ncm9rKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgaWQ6IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX2lkKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgbHVjZW5lOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl9sdWNlbmUpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgICBtYXRjaGVkOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0bi5ib29sZWFuVG9IY2xUZXJyYWZvcm0odGhpcy5fbWF0Y2hlZCksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcImJvb2xlYW5cIixcbiAgICAgIH0sXG4gICAgICBuYW1lOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl9uYW1lKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgbnJxbDoge1xuICAgICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0odGhpcy5fbnJxbCksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgLy8gcmVtb3ZlIHVuZGVmaW5lZCBhdHRyaWJ1dGVzXG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhhdHRycykuZmlsdGVyKChbXywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgKSlcbiAgfVxufVxuIl19
@@ -0,0 +1,259 @@
1
+ /**
2
+ * Copyright IBM Corp. 2021, 2026
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import { Construct } from 'constructs';
6
+ import * as cdktn from 'cdktn';
7
+ export interface MonitorDowntimeConfig extends cdktn.TerraformMetaArguments {
8
+ /**
9
+ * The ID of the New Relic account in which the Monitor Downtime shall be created. Defaults to the `account_id` in the provider{} configuration if not specified.
10
+ *
11
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#account_id MonitorDowntime#account_id}
12
+ */
13
+ readonly accountId?: number;
14
+ /**
15
+ * A datetime stamp signifying the end of the Monitor Downtime.
16
+ *
17
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#end_time MonitorDowntime#end_time}
18
+ */
19
+ readonly endTime: string;
20
+ /**
21
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#id MonitorDowntime#id}
22
+ *
23
+ * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
24
+ * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
25
+ */
26
+ readonly id?: string;
27
+ /**
28
+ * A list of maintenance days to be included with the created weekly Monitor Downtime.
29
+ *
30
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#maintenance_days MonitorDowntime#maintenance_days}
31
+ */
32
+ readonly maintenanceDays?: string[];
33
+ /**
34
+ * An identifier of the type of Monitor Downtime to be created.
35
+ *
36
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#mode MonitorDowntime#mode}
37
+ */
38
+ readonly mode: string;
39
+ /**
40
+ * A list of GUIDs of monitors, to which the created Monitor Downtime shall be applied.
41
+ *
42
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#monitor_guids MonitorDowntime#monitor_guids}
43
+ */
44
+ readonly monitorGuids?: string[];
45
+ /**
46
+ * A name to identify the Monitor Downtime to be created.
47
+ *
48
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#name MonitorDowntime#name}
49
+ */
50
+ readonly name: string;
51
+ /**
52
+ * A datetime stamp signifying the start of the Monitor Downtime.
53
+ *
54
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#start_time MonitorDowntime#start_time}
55
+ */
56
+ readonly startTime: string;
57
+ /**
58
+ * The timezone that applies to the Monitor Downtime schedule.
59
+ *
60
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#time_zone MonitorDowntime#time_zone}
61
+ */
62
+ readonly timeZone: string;
63
+ /**
64
+ * end_repeat block
65
+ *
66
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#end_repeat MonitorDowntime#end_repeat}
67
+ */
68
+ readonly endRepeat?: MonitorDowntimeEndRepeat;
69
+ /**
70
+ * frequency block
71
+ *
72
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#frequency MonitorDowntime#frequency}
73
+ */
74
+ readonly frequency?: MonitorDowntimeFrequency;
75
+ }
76
+ export interface MonitorDowntimeEndRepeat {
77
+ /**
78
+ * A date, on which the Monitor Downtime's repeat cycle is expected to end.
79
+ *
80
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#on_date MonitorDowntime#on_date}
81
+ */
82
+ readonly onDate?: string;
83
+ /**
84
+ * Number of repetitions after which the Monitor Downtime's repeat cycle is expected to end.
85
+ *
86
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#on_repeat MonitorDowntime#on_repeat}
87
+ */
88
+ readonly onRepeat?: number;
89
+ }
90
+ export declare function monitorDowntimeEndRepeatToTerraform(struct?: MonitorDowntimeEndRepeatOutputReference | MonitorDowntimeEndRepeat): any;
91
+ export declare function monitorDowntimeEndRepeatToHclTerraform(struct?: MonitorDowntimeEndRepeatOutputReference | MonitorDowntimeEndRepeat): any;
92
+ export declare class MonitorDowntimeEndRepeatOutputReference extends cdktn.ComplexObject {
93
+ private isEmptyObject;
94
+ /**
95
+ * @param terraformResource The parent resource
96
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
97
+ */
98
+ constructor(terraformResource: cdktn.IInterpolatingParent, terraformAttribute: string);
99
+ get internalValue(): MonitorDowntimeEndRepeat | undefined;
100
+ set internalValue(value: MonitorDowntimeEndRepeat | undefined);
101
+ private _onDate?;
102
+ get onDate(): string;
103
+ set onDate(value: string);
104
+ resetOnDate(): void;
105
+ get onDateInput(): string | undefined;
106
+ private _onRepeat?;
107
+ get onRepeat(): number;
108
+ set onRepeat(value: number);
109
+ resetOnRepeat(): void;
110
+ get onRepeatInput(): number | undefined;
111
+ }
112
+ export interface MonitorDowntimeFrequencyDaysOfWeek {
113
+ /**
114
+ * An occurrence of the day selected within the month.
115
+ *
116
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#ordinal_day_of_month MonitorDowntime#ordinal_day_of_month}
117
+ */
118
+ readonly ordinalDayOfMonth: string;
119
+ /**
120
+ * The day of the week on which the Monitor Downtime would run.
121
+ *
122
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#week_day MonitorDowntime#week_day}
123
+ */
124
+ readonly weekDay: string;
125
+ }
126
+ export declare function monitorDowntimeFrequencyDaysOfWeekToTerraform(struct?: MonitorDowntimeFrequencyDaysOfWeekOutputReference | MonitorDowntimeFrequencyDaysOfWeek): any;
127
+ export declare function monitorDowntimeFrequencyDaysOfWeekToHclTerraform(struct?: MonitorDowntimeFrequencyDaysOfWeekOutputReference | MonitorDowntimeFrequencyDaysOfWeek): any;
128
+ export declare class MonitorDowntimeFrequencyDaysOfWeekOutputReference extends cdktn.ComplexObject {
129
+ private isEmptyObject;
130
+ /**
131
+ * @param terraformResource The parent resource
132
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
133
+ */
134
+ constructor(terraformResource: cdktn.IInterpolatingParent, terraformAttribute: string);
135
+ get internalValue(): MonitorDowntimeFrequencyDaysOfWeek | undefined;
136
+ set internalValue(value: MonitorDowntimeFrequencyDaysOfWeek | undefined);
137
+ private _ordinalDayOfMonth?;
138
+ get ordinalDayOfMonth(): string;
139
+ set ordinalDayOfMonth(value: string);
140
+ get ordinalDayOfMonthInput(): string | undefined;
141
+ private _weekDay?;
142
+ get weekDay(): string;
143
+ set weekDay(value: string);
144
+ get weekDayInput(): string | undefined;
145
+ }
146
+ export interface MonitorDowntimeFrequency {
147
+ /**
148
+ * A numerical list of days of a month on which the Monitor Downtime is scheduled to run.
149
+ *
150
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#days_of_month MonitorDowntime#days_of_month}
151
+ */
152
+ readonly daysOfMonth?: number[];
153
+ /**
154
+ * days_of_week block
155
+ *
156
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#days_of_week MonitorDowntime#days_of_week}
157
+ */
158
+ readonly daysOfWeek?: MonitorDowntimeFrequencyDaysOfWeek;
159
+ }
160
+ export declare function monitorDowntimeFrequencyToTerraform(struct?: MonitorDowntimeFrequencyOutputReference | MonitorDowntimeFrequency): any;
161
+ export declare function monitorDowntimeFrequencyToHclTerraform(struct?: MonitorDowntimeFrequencyOutputReference | MonitorDowntimeFrequency): any;
162
+ export declare class MonitorDowntimeFrequencyOutputReference extends cdktn.ComplexObject {
163
+ private isEmptyObject;
164
+ /**
165
+ * @param terraformResource The parent resource
166
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
167
+ */
168
+ constructor(terraformResource: cdktn.IInterpolatingParent, terraformAttribute: string);
169
+ get internalValue(): MonitorDowntimeFrequency | undefined;
170
+ set internalValue(value: MonitorDowntimeFrequency | undefined);
171
+ private _daysOfMonth?;
172
+ get daysOfMonth(): number[];
173
+ set daysOfMonth(value: number[]);
174
+ resetDaysOfMonth(): void;
175
+ get daysOfMonthInput(): number[] | undefined;
176
+ private _daysOfWeek;
177
+ get daysOfWeek(): MonitorDowntimeFrequencyDaysOfWeekOutputReference;
178
+ putDaysOfWeek(value: MonitorDowntimeFrequencyDaysOfWeek): void;
179
+ resetDaysOfWeek(): void;
180
+ get daysOfWeekInput(): MonitorDowntimeFrequencyDaysOfWeek | undefined;
181
+ }
182
+ /**
183
+ * Represents a {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime newrelic_monitor_downtime}
184
+ */
185
+ export declare class MonitorDowntime extends cdktn.TerraformResource {
186
+ static readonly tfResourceType = "newrelic_monitor_downtime";
187
+ /**
188
+ * Generates CDKTN code for importing a MonitorDowntime resource upon running "cdktn plan <stack-name>"
189
+ * @param scope The scope in which to define this construct
190
+ * @param importToId The construct id used in the generated config for the MonitorDowntime to import
191
+ * @param importFromId The id of the existing MonitorDowntime that should be imported. Refer to the {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime#import import section} in the documentation of this resource for the id to use
192
+ * @param provider? Optional instance of the provider where the MonitorDowntime to import is found
193
+ */
194
+ static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktn.TerraformProvider): cdktn.ImportableResource;
195
+ /**
196
+ * Create a new {@link https://registry.terraform.io/providers/newrelic/newrelic/3.80.2/docs/resources/monitor_downtime newrelic_monitor_downtime} Resource
197
+ *
198
+ * @param scope The scope in which to define this construct
199
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
200
+ * @param options MonitorDowntimeConfig
201
+ */
202
+ constructor(scope: Construct, id: string, config: MonitorDowntimeConfig);
203
+ private _accountId?;
204
+ get accountId(): number;
205
+ set accountId(value: number);
206
+ resetAccountId(): void;
207
+ get accountIdInput(): number | undefined;
208
+ private _endTime?;
209
+ get endTime(): string;
210
+ set endTime(value: string);
211
+ get endTimeInput(): string | undefined;
212
+ private _id?;
213
+ get id(): string;
214
+ set id(value: string);
215
+ resetId(): void;
216
+ get idInput(): string | undefined;
217
+ private _maintenanceDays?;
218
+ get maintenanceDays(): string[];
219
+ set maintenanceDays(value: string[]);
220
+ resetMaintenanceDays(): void;
221
+ get maintenanceDaysInput(): string[] | undefined;
222
+ private _mode?;
223
+ get mode(): string;
224
+ set mode(value: string);
225
+ get modeInput(): string | undefined;
226
+ private _monitorGuids?;
227
+ get monitorGuids(): string[];
228
+ set monitorGuids(value: string[]);
229
+ resetMonitorGuids(): void;
230
+ get monitorGuidsInput(): string[] | undefined;
231
+ private _name?;
232
+ get name(): string;
233
+ set name(value: string);
234
+ get nameInput(): string | undefined;
235
+ private _startTime?;
236
+ get startTime(): string;
237
+ set startTime(value: string);
238
+ get startTimeInput(): string | undefined;
239
+ private _timeZone?;
240
+ get timeZone(): string;
241
+ set timeZone(value: string);
242
+ get timeZoneInput(): string | undefined;
243
+ private _endRepeat;
244
+ get endRepeat(): MonitorDowntimeEndRepeatOutputReference;
245
+ putEndRepeat(value: MonitorDowntimeEndRepeat): void;
246
+ resetEndRepeat(): void;
247
+ get endRepeatInput(): MonitorDowntimeEndRepeat | undefined;
248
+ private _frequency;
249
+ get frequency(): MonitorDowntimeFrequencyOutputReference;
250
+ putFrequency(value: MonitorDowntimeFrequency): void;
251
+ resetFrequency(): void;
252
+ get frequencyInput(): MonitorDowntimeFrequency | undefined;
253
+ protected synthesizeAttributes(): {
254
+ [name: string]: any;
255
+ };
256
+ protected synthesizeHclAttributes(): {
257
+ [name: string]: any;
258
+ };
259
+ }