@vendasta/billing 11.0.0 → 11.2.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 (75) hide show
  1. package/esm2020/lib/_generated/host.service.mjs +3 -3
  2. package/esm2020/lib/_internal/bank-reconciliation.api.service.mjs +3 -3
  3. package/esm2020/lib/_internal/billing.api.service.mjs +9 -4
  4. package/esm2020/lib/_internal/bundle.api.service.mjs +3 -3
  5. package/esm2020/lib/_internal/contract-document.api.service.mjs +3 -3
  6. package/esm2020/lib/_internal/contract.api.service.mjs +3 -3
  7. package/esm2020/lib/_internal/credit.api.service.mjs +3 -3
  8. package/esm2020/lib/_internal/discount.api.service.mjs +3 -3
  9. package/esm2020/lib/_internal/interfaces/contract.interface.mjs +1 -1
  10. package/esm2020/lib/_internal/invoice-template.api.service.mjs +3 -3
  11. package/esm2020/lib/_internal/invoice.api.service.mjs +3 -3
  12. package/esm2020/lib/_internal/merchant.api.service.mjs +3 -3
  13. package/esm2020/lib/_internal/objects/annotations.mjs +6 -6
  14. package/esm2020/lib/_internal/objects/api.mjs +174 -174
  15. package/esm2020/lib/_internal/objects/applied-bundle.mjs +13 -13
  16. package/esm2020/lib/_internal/objects/applied-discount.mjs +7 -7
  17. package/esm2020/lib/_internal/objects/applied-tax-rate.mjs +7 -7
  18. package/esm2020/lib/_internal/objects/balance.mjs +19 -19
  19. package/esm2020/lib/_internal/objects/billable-item.mjs +120 -120
  20. package/esm2020/lib/_internal/objects/bundle.mjs +71 -71
  21. package/esm2020/lib/_internal/objects/commitment.mjs +7 -7
  22. package/esm2020/lib/_internal/objects/common.mjs +12 -12
  23. package/esm2020/lib/_internal/objects/contract-document.mjs +29 -29
  24. package/esm2020/lib/_internal/objects/contract.mjs +90 -87
  25. package/esm2020/lib/_internal/objects/credit.mjs +24 -24
  26. package/esm2020/lib/_internal/objects/customer-summary.mjs +19 -19
  27. package/esm2020/lib/_internal/objects/date-range.mjs +7 -7
  28. package/esm2020/lib/_internal/objects/discount.mjs +42 -42
  29. package/esm2020/lib/_internal/objects/external-account.mjs +32 -32
  30. package/esm2020/lib/_internal/objects/fee.mjs +13 -13
  31. package/esm2020/lib/_internal/objects/field-mask.mjs +6 -6
  32. package/esm2020/lib/_internal/objects/invoice-template.mjs +126 -126
  33. package/esm2020/lib/_internal/objects/invoice.mjs +206 -206
  34. package/esm2020/lib/_internal/objects/merchant-report.mjs +19 -19
  35. package/esm2020/lib/_internal/objects/merchant.mjs +201 -201
  36. package/esm2020/lib/_internal/objects/metered-component.mjs +18 -18
  37. package/esm2020/lib/_internal/objects/payment-card.mjs +38 -38
  38. package/esm2020/lib/_internal/objects/payment.mjs +273 -273
  39. package/esm2020/lib/_internal/objects/payout.mjs +41 -41
  40. package/esm2020/lib/_internal/objects/pricing-plan-product.mjs +92 -92
  41. package/esm2020/lib/_internal/objects/pricing-plan.mjs +53 -53
  42. package/esm2020/lib/_internal/objects/product-pricing.mjs +19 -19
  43. package/esm2020/lib/_internal/objects/product-summary.mjs +85 -85
  44. package/esm2020/lib/_internal/objects/product.mjs +59 -59
  45. package/esm2020/lib/_internal/objects/purchase.mjs +71 -71
  46. package/esm2020/lib/_internal/objects/recurring-invoice.mjs +59 -59
  47. package/esm2020/lib/_internal/objects/refund.mjs +25 -25
  48. package/esm2020/lib/_internal/objects/report-run.mjs +18 -18
  49. package/esm2020/lib/_internal/objects/retail-customer-configuration.mjs +24 -24
  50. package/esm2020/lib/_internal/objects/sales-credit-note.mjs +31 -31
  51. package/esm2020/lib/_internal/objects/sales-invoice.mjs +51 -51
  52. package/esm2020/lib/_internal/objects/subscribe-validation.mjs +7 -7
  53. package/esm2020/lib/_internal/objects/subscription.mjs +88 -88
  54. package/esm2020/lib/_internal/objects/tax-rate.mjs +62 -62
  55. package/esm2020/lib/_internal/payment-method.api.service.mjs +3 -3
  56. package/esm2020/lib/_internal/payment.api.service.mjs +3 -3
  57. package/esm2020/lib/_internal/pricing.api.service.mjs +3 -3
  58. package/esm2020/lib/_internal/product-summary.api.service.mjs +3 -3
  59. package/esm2020/lib/_internal/product.api.service.mjs +3 -3
  60. package/esm2020/lib/_internal/purchase.api.service.mjs +3 -3
  61. package/esm2020/lib/_internal/recurring-invoice.api.service.mjs +3 -3
  62. package/esm2020/lib/_internal/refund.api.service.mjs +3 -3
  63. package/esm2020/lib/_internal/retail-customer-configuration.api.service.mjs +3 -3
  64. package/esm2020/lib/_internal/sales-credit-note.api.service.mjs +3 -3
  65. package/esm2020/lib/_internal/sales-invoice.api.service.mjs +3 -3
  66. package/esm2020/lib/_internal/tax.api.service.mjs +3 -3
  67. package/esm2020/lib/_internal/vendor.api.service.mjs +3 -3
  68. package/fesm2015/vendasta-billing.mjs +2422 -2414
  69. package/fesm2015/vendasta-billing.mjs.map +1 -1
  70. package/fesm2020/vendasta-billing.mjs +2422 -2414
  71. package/fesm2020/vendasta-billing.mjs.map +1 -1
  72. package/lib/_internal/billing.api.service.d.ts +1 -0
  73. package/lib/_internal/interfaces/contract.interface.d.ts +1 -0
  74. package/lib/_internal/objects/contract.d.ts +1 -0
  75. package/package.json +3 -3
@@ -7,12 +7,6 @@ export function enumStringToValue(enumRef, value) {
7
7
  return enumRef[value];
8
8
  }
9
9
  export class Bundle {
10
- constructor(kwargs) {
11
- if (!kwargs) {
12
- return;
13
- }
14
- Object.assign(this, kwargs);
15
- }
16
10
  static fromProto(proto) {
17
11
  let m = new Bundle();
18
12
  m = Object.assign(m, proto);
@@ -27,6 +21,12 @@ export class Bundle {
27
21
  }
28
22
  return m;
29
23
  }
24
+ constructor(kwargs) {
25
+ if (!kwargs) {
26
+ return;
27
+ }
28
+ Object.assign(this, kwargs);
29
+ }
30
30
  toApiJson() {
31
31
  const toReturn = {};
32
32
  if (typeof this.merchantId !== 'undefined') {
@@ -54,12 +54,6 @@ export class Bundle {
54
54
  }
55
55
  }
56
56
  export class BundleItem {
57
- constructor(kwargs) {
58
- if (!kwargs) {
59
- return;
60
- }
61
- Object.assign(this, kwargs);
62
- }
63
57
  static fromProto(proto) {
64
58
  let m = new BundleItem();
65
59
  m = Object.assign(m, proto);
@@ -77,6 +71,12 @@ export class BundleItem {
77
71
  }
78
72
  return m;
79
73
  }
74
+ constructor(kwargs) {
75
+ if (!kwargs) {
76
+ return;
77
+ }
78
+ Object.assign(this, kwargs);
79
+ }
80
80
  toApiJson() {
81
81
  const toReturn = {};
82
82
  if (typeof this.productId !== 'undefined') {
@@ -101,12 +101,6 @@ export class BundleItem {
101
101
  }
102
102
  }
103
103
  export class BundlePricing {
104
- constructor(kwargs) {
105
- if (!kwargs) {
106
- return;
107
- }
108
- Object.assign(this, kwargs);
109
- }
110
104
  static fromProto(proto) {
111
105
  let m = new BundlePricing();
112
106
  m = Object.assign(m, proto);
@@ -115,6 +109,12 @@ export class BundlePricing {
115
109
  }
116
110
  return m;
117
111
  }
112
+ constructor(kwargs) {
113
+ if (!kwargs) {
114
+ return;
115
+ }
116
+ Object.assign(this, kwargs);
117
+ }
118
118
  toApiJson() {
119
119
  const toReturn = {};
120
120
  if (typeof this.bundleId !== 'undefined') {
@@ -130,12 +130,6 @@ export class BundlePricing {
130
130
  }
131
131
  }
132
132
  export class GetMultiBundleResponseBundlesEntry {
133
- constructor(kwargs) {
134
- if (!kwargs) {
135
- return;
136
- }
137
- Object.assign(this, kwargs);
138
- }
139
133
  static fromProto(proto) {
140
134
  let m = new GetMultiBundleResponseBundlesEntry();
141
135
  m = Object.assign(m, proto);
@@ -144,6 +138,12 @@ export class GetMultiBundleResponseBundlesEntry {
144
138
  }
145
139
  return m;
146
140
  }
141
+ constructor(kwargs) {
142
+ if (!kwargs) {
143
+ return;
144
+ }
145
+ Object.assign(this, kwargs);
146
+ }
147
147
  toApiJson() {
148
148
  const toReturn = {};
149
149
  if (typeof this.key !== 'undefined') {
@@ -156,17 +156,17 @@ export class GetMultiBundleResponseBundlesEntry {
156
156
  }
157
157
  }
158
158
  export class ListBundlesRequestFilters {
159
+ static fromProto(proto) {
160
+ let m = new ListBundlesRequestFilters();
161
+ m = Object.assign(m, proto);
162
+ return m;
163
+ }
159
164
  constructor(kwargs) {
160
165
  if (!kwargs) {
161
166
  return;
162
167
  }
163
168
  Object.assign(this, kwargs);
164
169
  }
165
- static fromProto(proto) {
166
- let m = new ListBundlesRequestFilters();
167
- m = Object.assign(m, proto);
168
- return m;
169
- }
170
170
  toApiJson() {
171
171
  const toReturn = {};
172
172
  if (typeof this.merchantId !== 'undefined') {
@@ -176,17 +176,17 @@ export class ListBundlesRequestFilters {
176
176
  }
177
177
  }
178
178
  export class GetMultiBundleRequest {
179
+ static fromProto(proto) {
180
+ let m = new GetMultiBundleRequest();
181
+ m = Object.assign(m, proto);
182
+ return m;
183
+ }
179
184
  constructor(kwargs) {
180
185
  if (!kwargs) {
181
186
  return;
182
187
  }
183
188
  Object.assign(this, kwargs);
184
189
  }
185
- static fromProto(proto) {
186
- let m = new GetMultiBundleRequest();
187
- m = Object.assign(m, proto);
188
- return m;
189
- }
190
190
  toApiJson() {
191
191
  const toReturn = {};
192
192
  if (typeof this.merchantId !== 'undefined') {
@@ -199,12 +199,6 @@ export class GetMultiBundleRequest {
199
199
  }
200
200
  }
201
201
  export class GetMultiBundleResponse {
202
- constructor(kwargs) {
203
- if (!kwargs) {
204
- return;
205
- }
206
- Object.assign(this, kwargs);
207
- }
208
202
  static fromProto(proto) {
209
203
  let m = new GetMultiBundleResponse();
210
204
  m = Object.assign(m, proto);
@@ -213,6 +207,12 @@ export class GetMultiBundleResponse {
213
207
  }
214
208
  return m;
215
209
  }
210
+ constructor(kwargs) {
211
+ if (!kwargs) {
212
+ return;
213
+ }
214
+ Object.assign(this, kwargs);
215
+ }
216
216
  toApiJson() {
217
217
  const toReturn = {};
218
218
  if (typeof this.bundles !== 'undefined' && this.bundles !== null) {
@@ -222,12 +222,6 @@ export class GetMultiBundleResponse {
222
222
  }
223
223
  }
224
224
  export class ListBundlesRequest {
225
- constructor(kwargs) {
226
- if (!kwargs) {
227
- return;
228
- }
229
- Object.assign(this, kwargs);
230
- }
231
225
  static fromProto(proto) {
232
226
  let m = new ListBundlesRequest();
233
227
  m = Object.assign(m, proto);
@@ -239,6 +233,12 @@ export class ListBundlesRequest {
239
233
  }
240
234
  return m;
241
235
  }
236
+ constructor(kwargs) {
237
+ if (!kwargs) {
238
+ return;
239
+ }
240
+ Object.assign(this, kwargs);
241
+ }
242
242
  toApiJson() {
243
243
  const toReturn = {};
244
244
  if (typeof this.filters !== 'undefined' && this.filters !== null) {
@@ -254,12 +254,6 @@ export class ListBundlesRequest {
254
254
  }
255
255
  }
256
256
  export class ListBundlesResponse {
257
- constructor(kwargs) {
258
- if (!kwargs) {
259
- return;
260
- }
261
- Object.assign(this, kwargs);
262
- }
263
257
  static fromProto(proto) {
264
258
  let m = new ListBundlesResponse();
265
259
  m = Object.assign(m, proto);
@@ -271,6 +265,12 @@ export class ListBundlesResponse {
271
265
  }
272
266
  return m;
273
267
  }
268
+ constructor(kwargs) {
269
+ if (!kwargs) {
270
+ return;
271
+ }
272
+ Object.assign(this, kwargs);
273
+ }
274
274
  toApiJson() {
275
275
  const toReturn = {};
276
276
  if (typeof this.bundles !== 'undefined' && this.bundles !== null) {
@@ -283,12 +283,6 @@ export class ListBundlesResponse {
283
283
  }
284
284
  }
285
285
  export class BundleItemPrice {
286
- constructor(kwargs) {
287
- if (!kwargs) {
288
- return;
289
- }
290
- Object.assign(this, kwargs);
291
- }
292
286
  static fromProto(proto) {
293
287
  let m = new BundleItemPrice();
294
288
  m = Object.assign(m, proto);
@@ -300,6 +294,12 @@ export class BundleItemPrice {
300
294
  }
301
295
  return m;
302
296
  }
297
+ constructor(kwargs) {
298
+ if (!kwargs) {
299
+ return;
300
+ }
301
+ Object.assign(this, kwargs);
302
+ }
303
303
  toApiJson() {
304
304
  const toReturn = {};
305
305
  if (typeof this.amount !== 'undefined') {
@@ -312,12 +312,6 @@ export class BundleItemPrice {
312
312
  }
313
313
  }
314
314
  export class BundlePricingPriceAndFrequency {
315
- constructor(kwargs) {
316
- if (!kwargs) {
317
- return;
318
- }
319
- Object.assign(this, kwargs);
320
- }
321
315
  static fromProto(proto) {
322
316
  let m = new BundlePricingPriceAndFrequency();
323
317
  m = Object.assign(m, proto);
@@ -335,6 +329,12 @@ export class BundlePricingPriceAndFrequency {
335
329
  }
336
330
  return m;
337
331
  }
332
+ constructor(kwargs) {
333
+ if (!kwargs) {
334
+ return;
335
+ }
336
+ Object.assign(this, kwargs);
337
+ }
338
338
  toApiJson() {
339
339
  const toReturn = {};
340
340
  if (typeof this.frequency !== 'undefined') {
@@ -353,12 +353,6 @@ export class BundlePricingPriceAndFrequency {
353
353
  }
354
354
  }
355
355
  export class UpsertBundleRequest {
356
- constructor(kwargs) {
357
- if (!kwargs) {
358
- return;
359
- }
360
- Object.assign(this, kwargs);
361
- }
362
356
  static fromProto(proto) {
363
357
  let m = new UpsertBundleRequest();
364
358
  m = Object.assign(m, proto);
@@ -367,6 +361,12 @@ export class UpsertBundleRequest {
367
361
  }
368
362
  return m;
369
363
  }
364
+ constructor(kwargs) {
365
+ if (!kwargs) {
366
+ return;
367
+ }
368
+ Object.assign(this, kwargs);
369
+ }
370
370
  toApiJson() {
371
371
  const toReturn = {};
372
372
  if (typeof this.merchantId !== 'undefined') {
@@ -387,4 +387,4 @@ export class UpsertBundleRequest {
387
387
  return toReturn;
388
388
  }
389
389
  }
390
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vYmlsbGluZ19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9idW5kbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RFLE9BQU8sS0FBSyxDQUFDLE1BQU0sVUFBVSxDQUFDO0FBRTlCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxPQUFZLEVBQUUsS0FBYTtJQUM5RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVELE1BQU0sT0FBTyxNQUFNO0lBa0JmLFlBQVksTUFBMEI7UUFDbEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFkRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNyQixDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7U0FBQztRQUNuRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFBQyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUFDO1FBQ3pELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQUM7UUFDekQsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBU0QsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQUM7UUFDdkYsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7U0FBQztRQUNqRixJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUFDO1FBQ3JFLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLEtBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUFDO1FBQzdKLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLE9BQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUFDO1FBQ3pLLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLE9BQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUFDO1FBQ3pLLElBQUksT0FBTyxJQUFJLENBQUMsaUJBQWlCLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1NBQUM7UUFDNUcsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFVBQVU7SUFrQm5CLFlBQVksTUFBOEI7UUFDdEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFmRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUN6QixDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxpQkFBaUIsQ0FBaUIsQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7U0FBQztRQUNqSCxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUU7WUFBQyxDQUFDLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQUM7UUFDbEYsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUFDO1FBQ2hFLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtZQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FBQztRQUNwRSxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFTRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FBQztRQUNwRixJQUFJLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUFDO1FBQzdGLElBQUksT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7U0FBQztRQUNuRyxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUFDO1FBQ2pGLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQUM7UUFDdkYsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsS0FBYSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQUM7UUFDN0osT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLGFBQWE7SUFZdEIsWUFBWSxNQUFpQztRQUN6QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQVpELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzVCLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFBQyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQUM7UUFDMUYsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBU0QsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQUM7UUFDakYsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7U0FBQztRQUNqRixJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxNQUFjLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7U0FBQztRQUNuSyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sa0NBQWtDO0lBVzNDLFlBQVksTUFBc0Q7UUFDOUQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFaRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxrQ0FBa0MsRUFBRSxDQUFDO1FBQ2pELENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFBQyxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQUM7UUFDM0QsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBU0QsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQUM7UUFDbEUsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsS0FBYSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQUM7UUFDN0osT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLHlCQUF5QjtJQVNsQyxZQUFZLE1BQTZDO1FBQ3JELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBWEQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUkseUJBQXlCLEVBQUUsQ0FBQztRQUN4QyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBU0QsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQUM7UUFDdkYsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLHFCQUFxQjtJQVU5QixZQUFZLE1BQXlDO1FBQ2pELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBWEQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUNwQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBU0QsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQUM7UUFDdkYsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FBQztRQUNwRixPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sc0JBQXNCO0lBVS9CLFlBQVksTUFBMEM7UUFDbEQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFaRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBQ3JDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFBQyxDQUFDLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQUM7UUFDdEosT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBU0QsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLE9BQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUFDO1FBQ3pLLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7SUFhM0IsWUFBWSxNQUFzQztRQUM5QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQWJELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDakMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcseUJBQXlCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUFDO1FBQ3BGLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUFDO1FBQ2hHLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQVNELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxPQUFlLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FBQztRQUN6SyxJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUFDO1FBQ3ZGLElBQUksT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLGFBQXFCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7U0FBQztRQUM3TSxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0lBWTVCLFlBQVksTUFBdUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFiRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ2xDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFBQyxDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUFDO1FBQ3JFLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtZQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUcscUJBQXFCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUFDO1FBQ3JHLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQVNELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxPQUFlLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FBQztRQUN6SyxJQUFJLE9BQU8sSUFBSSxDQUFDLGNBQWMsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJLEVBQUU7WUFBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLGNBQXNCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7U0FBQztRQUNuTixPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQVl4QixZQUFZLE1BQW1DO1FBQzNDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBYkQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDOUIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FBQztRQUMxRCxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFBQyxDQUFDLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQUM7UUFDaEUsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBU0QsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQUM7UUFDM0UsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7U0FBQztRQUNqRixPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sOEJBQThCO0lBZ0J2QyxZQUFZLE1BQWtEO1FBQzFELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBZkQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksOEJBQThCLEVBQUUsQ0FBQztRQUM3QyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO1lBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBYyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUFDO1FBQ2xHLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtZQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FBQztRQUNsRixJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUU7WUFBQyxDQUFDLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQUM7UUFDNUUsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUFDO1FBQ2hFLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQVNELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUFDO1FBQ3BGLElBQUksT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7U0FBQztRQUNuRyxJQUFJLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUFDO1FBQzdGLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQUM7UUFDakYsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLG1CQUFtQjtJQWM1QixZQUFZLE1BQXVDO1FBQy9DLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBWkQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUNsQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7U0FBQztRQUNuRSxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFTRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7U0FBQztRQUN2RixJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUFDO1FBQ2pGLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQUM7UUFDckUsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsS0FBYSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQUM7UUFDN0osSUFBSSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7U0FBQztRQUM1RyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQYWdlZFJlcXVlc3RPcHRpb25zLCBQYWdlZFJlc3BvbnNlTWV0YWRhdGEgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgKiBhcyBlIGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudW1TdHJpbmdUb1ZhbHVlPEU+KGVudW1SZWY6IGFueSwgdmFsdWU6IHN0cmluZyk6IEUge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZW51bVJlZlt2YWx1ZV07XG59XG5cbmV4cG9ydCBjbGFzcyBCdW5kbGUgaW1wbGVtZW50cyBpLkJ1bmRsZUludGVyZmFjZSB7XG4gICAgbWVyY2hhbnRJZDogc3RyaW5nO1xuICAgIGJ1bmRsZUlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGl0ZW1zOiBCdW5kbGVJdGVtW107XG4gICAgY3JlYXRlZDogRGF0ZTtcbiAgICB1cGRhdGVkOiBEYXRlO1xuICAgIGhpZGVCdW5kbGVEZXRhaWxzOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQnVuZGxlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQnVuZGxlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLml0ZW1zKSB7bS5pdGVtcyA9IHByb3RvLml0ZW1zLm1hcChCdW5kbGVJdGVtLmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8uY3JlYXRlZCkge20uY3JlYXRlZCA9IG5ldyBEYXRlKHByb3RvLmNyZWF0ZWQpO31cbiAgICAgICAgaWYgKHByb3RvLnVwZGF0ZWQpIHttLnVwZGF0ZWQgPSBuZXcgRGF0ZShwcm90by51cGRhdGVkKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQnVuZGxlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVyY2hhbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVyY2hhbnRJZCddID0gdGhpcy5tZXJjaGFudElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1bmRsZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydidW5kbGVJZCddID0gdGhpcy5idW5kbGVJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lJ10gPSB0aGlzLm5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaXRlbXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuaXRlbXMgIT09IG51bGwpIHt0b1JldHVyblsnaXRlbXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuaXRlbXMgPyAodGhpcy5pdGVtcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5pdGVtczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jcmVhdGVkICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNyZWF0ZWQgIT09IG51bGwpIHt0b1JldHVyblsnY3JlYXRlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jcmVhdGVkID8gKHRoaXMuY3JlYXRlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jcmVhdGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVwZGF0ZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudXBkYXRlZCAhPT0gbnVsbCkge3RvUmV0dXJuWyd1cGRhdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnVwZGF0ZWQgPyAodGhpcy51cGRhdGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnVwZGF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaGlkZUJ1bmRsZURldGFpbHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hpZGVCdW5kbGVEZXRhaWxzJ10gPSB0aGlzLmhpZGVCdW5kbGVEZXRhaWxzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1bmRsZUl0ZW0gaW1wbGVtZW50cyBpLkJ1bmRsZUl0ZW1JbnRlcmZhY2Uge1xuICAgIHByb2R1Y3RJZDogc3RyaW5nO1xuICAgIGRpc2NvdW50VHlwZTogZS5EaXNjb3VudFR5cGU7XG4gICAgZGlzY291bnRBbW91bnQ6IG51bWJlcjtcbiAgICBxdWFudGl0eTogbnVtYmVyO1xuICAgIGRlZmF1bHRTa3U6IHN0cmluZztcbiAgICBwcmljZTogQnVuZGxlSXRlbVByaWNlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQnVuZGxlSXRlbSB7XG4gICAgICAgIGxldCBtID0gbmV3IEJ1bmRsZUl0ZW0oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZGlzY291bnRUeXBlKSB7bS5kaXNjb3VudFR5cGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLkRpc2NvdW50VHlwZT4oZS5EaXNjb3VudFR5cGUsIHByb3RvLmRpc2NvdW50VHlwZSk7fVxuICAgICAgICBpZiAocHJvdG8uZGlzY291bnRBbW91bnQpIHttLmRpc2NvdW50QW1vdW50ID0gcGFyc2VJbnQocHJvdG8uZGlzY291bnRBbW91bnQsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5xdWFudGl0eSkge20ucXVhbnRpdHkgPSBwYXJzZUludChwcm90by5xdWFudGl0eSwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnByaWNlKSB7bS5wcmljZSA9IEJ1bmRsZUl0ZW1QcmljZS5mcm9tUHJvdG8ocHJvdG8ucHJpY2UpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5CdW5kbGVJdGVtSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvZHVjdElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwcm9kdWN0SWQnXSA9IHRoaXMucHJvZHVjdElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRpc2NvdW50VHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGlzY291bnRUeXBlJ10gPSB0aGlzLmRpc2NvdW50VHlwZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kaXNjb3VudEFtb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGlzY291bnRBbW91bnQnXSA9IHRoaXMuZGlzY291bnRBbW91bnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucXVhbnRpdHkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3F1YW50aXR5J10gPSB0aGlzLnF1YW50aXR5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlZmF1bHRTa3UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2RlZmF1bHRTa3UnXSA9IHRoaXMuZGVmYXVsdFNrdTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcmljZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wcmljZSAhPT0gbnVsbCkge3RvUmV0dXJuWydwcmljZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wcmljZSA/ICh0aGlzLnByaWNlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnByaWNlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1bmRsZVByaWNpbmcgaW1wbGVtZW50cyBpLkJ1bmRsZVByaWNpbmdJbnRlcmZhY2Uge1xuICAgIGJ1bmRsZUlkOiBzdHJpbmc7XG4gICAgY3VycmVuY3k6IHN0cmluZztcbiAgICBwcmljZXM6IEJ1bmRsZVByaWNpbmdQcmljZUFuZEZyZXF1ZW5jeVtdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQnVuZGxlUHJpY2luZyB7XG4gICAgICAgIGxldCBtID0gbmV3IEJ1bmRsZVByaWNpbmcoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ucHJpY2VzKSB7bS5wcmljZXMgPSBwcm90by5wcmljZXMubWFwKEJ1bmRsZVByaWNpbmdQcmljZUFuZEZyZXF1ZW5jeS5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5CdW5kbGVQcmljaW5nSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVuZGxlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2J1bmRsZUlkJ10gPSB0aGlzLmJ1bmRsZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1cnJlbmN5ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXJyZW5jeSddID0gdGhpcy5jdXJyZW5jeTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcmljZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucHJpY2VzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3ByaWNlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wcmljZXMgPyAodGhpcy5wcmljZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucHJpY2VzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldE11bHRpQnVuZGxlUmVzcG9uc2VCdW5kbGVzRW50cnkgaW1wbGVtZW50cyBpLkdldE11bHRpQnVuZGxlUmVzcG9uc2VCdW5kbGVzRW50cnlJbnRlcmZhY2Uge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiBCdW5kbGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRNdWx0aUJ1bmRsZVJlc3BvbnNlQnVuZGxlc0VudHJ5IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0TXVsdGlCdW5kbGVSZXNwb25zZUJ1bmRsZXNFbnRyeSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by52YWx1ZSkge20udmFsdWUgPSBCdW5kbGUuZnJvbVByb3RvKHByb3RvLnZhbHVlKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0TXVsdGlCdW5kbGVSZXNwb25zZUJ1bmRsZXNFbnRyeUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmtleSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsna2V5J10gPSB0aGlzLmtleTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy52YWx1ZSAhPT0gbnVsbCkge3RvUmV0dXJuWyd2YWx1ZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy52YWx1ZSA/ICh0aGlzLnZhbHVlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnZhbHVlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RCdW5kbGVzUmVxdWVzdEZpbHRlcnMgaW1wbGVtZW50cyBpLkxpc3RCdW5kbGVzUmVxdWVzdEZpbHRlcnNJbnRlcmZhY2Uge1xuICAgIG1lcmNoYW50SWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RCdW5kbGVzUmVxdWVzdEZpbHRlcnMge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0QnVuZGxlc1JlcXVlc3RGaWx0ZXJzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0QnVuZGxlc1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVyY2hhbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVyY2hhbnRJZCddID0gdGhpcy5tZXJjaGFudElkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldE11bHRpQnVuZGxlUmVxdWVzdCBpbXBsZW1lbnRzIGkuR2V0TXVsdGlCdW5kbGVSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkOiBzdHJpbmc7XG4gICAgYnVuZGxlSWRzOiBzdHJpbmdbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldE11bHRpQnVuZGxlUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldE11bHRpQnVuZGxlUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0TXVsdGlCdW5kbGVSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVyY2hhbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVyY2hhbnRJZCddID0gdGhpcy5tZXJjaGFudElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1bmRsZUlkcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYnVuZGxlSWRzJ10gPSB0aGlzLmJ1bmRsZUlkczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRNdWx0aUJ1bmRsZVJlc3BvbnNlIGltcGxlbWVudHMgaS5HZXRNdWx0aUJ1bmRsZVJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBidW5kbGVzOiB7W2tleTogc3RyaW5nXTogQnVuZGxlfTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldE11bHRpQnVuZGxlUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRNdWx0aUJ1bmRsZVJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmJ1bmRsZXMpIHttLmJ1bmRsZXMgPSBPYmplY3Qua2V5cyhwcm90by5idW5kbGVzKS5yZWR1Y2U8YW55Pigob2JqLCBrKSA9PiB7IG9ialtrXSA9IEJ1bmRsZS5mcm9tUHJvdG8ocHJvdG8uYnVuZGxlc1trXSk7IHJldHVybiBvYmo7IH0sIHt9KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0TXVsdGlCdW5kbGVSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1bmRsZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYnVuZGxlcyAhPT0gbnVsbCkge3RvUmV0dXJuWydidW5kbGVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmJ1bmRsZXMgPyAodGhpcy5idW5kbGVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmJ1bmRsZXM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdEJ1bmRsZXNSZXF1ZXN0IGltcGxlbWVudHMgaS5MaXN0QnVuZGxlc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGZpbHRlcnM6IExpc3RCdW5kbGVzUmVxdWVzdEZpbHRlcnM7XG4gICAgc2VhcmNoVGVybTogc3RyaW5nO1xuICAgIHBhZ2luZ09wdGlvbnM6IFBhZ2VkUmVxdWVzdE9wdGlvbnM7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0QnVuZGxlc1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0QnVuZGxlc1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZmlsdGVycykge20uZmlsdGVycyA9IExpc3RCdW5kbGVzUmVxdWVzdEZpbHRlcnMuZnJvbVByb3RvKHByb3RvLmZpbHRlcnMpO31cbiAgICAgICAgaWYgKHByb3RvLnBhZ2luZ09wdGlvbnMpIHttLnBhZ2luZ09wdGlvbnMgPSBQYWdlZFJlcXVlc3RPcHRpb25zLmZyb21Qcm90byhwcm90by5wYWdpbmdPcHRpb25zKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdEJ1bmRsZXNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZmlsdGVycyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5maWx0ZXJzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2ZpbHRlcnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZmlsdGVycyA/ICh0aGlzLmZpbHRlcnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZmlsdGVyczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zZWFyY2hUZXJtICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzZWFyY2hUZXJtJ10gPSB0aGlzLnNlYXJjaFRlcm07fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnaW5nT3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wYWdpbmdPcHRpb25zICE9PSBudWxsKSB7dG9SZXR1cm5bJ3BhZ2luZ09wdGlvbnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGFnaW5nT3B0aW9ucyA/ICh0aGlzLnBhZ2luZ09wdGlvbnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucGFnaW5nT3B0aW9uczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0QnVuZGxlc1Jlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0QnVuZGxlc1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBidW5kbGVzOiBCdW5kbGVbXTtcbiAgICBwYWdpbmdNZXRhZGF0YTogUGFnZWRSZXNwb25zZU1ldGFkYXRhO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdEJ1bmRsZXNSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RCdW5kbGVzUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYnVuZGxlcykge20uYnVuZGxlcyA9IHByb3RvLmJ1bmRsZXMubWFwKEJ1bmRsZS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnBhZ2luZ01ldGFkYXRhKSB7bS5wYWdpbmdNZXRhZGF0YSA9IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YS5mcm9tUHJvdG8ocHJvdG8ucGFnaW5nTWV0YWRhdGEpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0QnVuZGxlc1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVuZGxlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5idW5kbGVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2J1bmRsZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYnVuZGxlcyA/ICh0aGlzLmJ1bmRsZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYnVuZGxlczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWdpbmdNZXRhZGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wYWdpbmdNZXRhZGF0YSAhPT0gbnVsbCkge3RvUmV0dXJuWydwYWdpbmdNZXRhZGF0YSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wYWdpbmdNZXRhZGF0YSA/ICh0aGlzLnBhZ2luZ01ldGFkYXRhIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBhZ2luZ01ldGFkYXRhO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1bmRsZUl0ZW1QcmljZSBpbXBsZW1lbnRzIGkuQnVuZGxlSXRlbVByaWNlSW50ZXJmYWNlIHtcbiAgICBhbW91bnQ6IG51bWJlcjtcbiAgICBzZXR1cEZlZTogbnVtYmVyO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQnVuZGxlSXRlbVByaWNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQnVuZGxlSXRlbVByaWNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmFtb3VudCkge20uYW1vdW50ID0gcGFyc2VJbnQocHJvdG8uYW1vdW50LCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uc2V0dXBGZWUpIHttLnNldHVwRmVlID0gcGFyc2VJbnQocHJvdG8uc2V0dXBGZWUsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQnVuZGxlSXRlbVByaWNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYW1vdW50ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhbW91bnQnXSA9IHRoaXMuYW1vdW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNldHVwRmVlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzZXR1cEZlZSddID0gdGhpcy5zZXR1cEZlZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCdW5kbGVQcmljaW5nUHJpY2VBbmRGcmVxdWVuY3kgaW1wbGVtZW50cyBpLkJ1bmRsZVByaWNpbmdQcmljZUFuZEZyZXF1ZW5jeUludGVyZmFjZSB7XG4gICAgZnJlcXVlbmN5OiBlLkZyZXF1ZW5jeTtcbiAgICBlZmZlY3RpdmVQcmljZTogbnVtYmVyO1xuICAgIGluaXRpYWxQcmljZTogbnVtYmVyO1xuICAgIHNldHVwRmVlOiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBCdW5kbGVQcmljaW5nUHJpY2VBbmRGcmVxdWVuY3kge1xuICAgICAgICBsZXQgbSA9IG5ldyBCdW5kbGVQcmljaW5nUHJpY2VBbmRGcmVxdWVuY3koKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZnJlcXVlbmN5KSB7bS5mcmVxdWVuY3kgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLkZyZXF1ZW5jeT4oZS5GcmVxdWVuY3ksIHByb3RvLmZyZXF1ZW5jeSk7fVxuICAgICAgICBpZiAocHJvdG8uZWZmZWN0aXZlUHJpY2UpIHttLmVmZmVjdGl2ZVByaWNlID0gcGFyc2VJbnQocHJvdG8uZWZmZWN0aXZlUHJpY2UsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5pbml0aWFsUHJpY2UpIHttLmluaXRpYWxQcmljZSA9IHBhcnNlSW50KHByb3RvLmluaXRpYWxQcmljZSwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnNldHVwRmVlKSB7bS5zZXR1cEZlZSA9IHBhcnNlSW50KHByb3RvLnNldHVwRmVlLCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkJ1bmRsZVByaWNpbmdQcmljZUFuZEZyZXF1ZW5jeUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZyZXF1ZW5jeSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZnJlcXVlbmN5J10gPSB0aGlzLmZyZXF1ZW5jeTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lZmZlY3RpdmVQcmljZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZWZmZWN0aXZlUHJpY2UnXSA9IHRoaXMuZWZmZWN0aXZlUHJpY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW5pdGlhbFByaWNlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpbml0aWFsUHJpY2UnXSA9IHRoaXMuaW5pdGlhbFByaWNlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNldHVwRmVlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzZXR1cEZlZSddID0gdGhpcy5zZXR1cEZlZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcHNlcnRCdW5kbGVSZXF1ZXN0IGltcGxlbWVudHMgaS5VcHNlcnRCdW5kbGVSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkOiBzdHJpbmc7XG4gICAgYnVuZGxlSWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgaXRlbXM6IEJ1bmRsZUl0ZW1bXTtcbiAgICBoaWRlQnVuZGxlRGV0YWlsczogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFVwc2VydEJ1bmRsZVJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBVcHNlcnRCdW5kbGVSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLml0ZW1zKSB7bS5pdGVtcyA9IHByb3RvLml0ZW1zLm1hcChCdW5kbGVJdGVtLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlVwc2VydEJ1bmRsZVJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXJjaGFudElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZXJjaGFudElkJ10gPSB0aGlzLm1lcmNoYW50SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVuZGxlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2J1bmRsZUlkJ10gPSB0aGlzLmJ1bmRsZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWUnXSA9IHRoaXMubmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pdGVtcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5pdGVtcyAhPT0gbnVsbCkge3RvUmV0dXJuWydpdGVtcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5pdGVtcyA/ICh0aGlzLml0ZW1zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLml0ZW1zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhpZGVCdW5kbGVEZXRhaWxzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydoaWRlQnVuZGxlRGV0YWlscyddID0gdGhpcy5oaWRlQnVuZGxlRGV0YWlsczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
390
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vYmlsbGluZ19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9idW5kbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RFLE9BQU8sS0FBSyxDQUFDLE1BQU0sVUFBVSxDQUFDO0FBRTlCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxPQUFZLEVBQUUsS0FBYTtJQUM5RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVELE1BQU0sT0FBTyxNQUFNO0lBU2YsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFDckIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtZQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQUM7UUFDbkUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FBQztRQUN6RCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFBQyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUFDO1FBQ3pELE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlB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RyxJQUFJLENBQUMsaUJBQWlCLENBQUM7U0FBQztRQUM1RyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQYWdlZFJlcXVlc3RPcHRpb25zLCBQYWdlZFJlc3BvbnNlTWV0YWRhdGEgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgKiBhcyBlIGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudW1TdHJpbmdUb1ZhbHVlPEU+KGVudW1SZWY6IGFueSwgdmFsdWU6IHN0cmluZyk6IEUge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZW51bVJlZlt2YWx1ZV07XG59XG5cbmV4cG9ydCBjbGFzcyBCdW5kbGUgaW1wbGVtZW50cyBpLkJ1bmRsZUludGVyZmFjZSB7XG4gICAgbWVyY2hhbnRJZDogc3RyaW5nO1xuICAgIGJ1bmRsZUlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGl0ZW1zOiBCdW5kbGVJdGVtW107XG4gICAgY3JlYXRlZDogRGF0ZTtcbiAgICB1cGRhdGVkOiBEYXRlO1xuICAgIGhpZGVCdW5kbGVEZXRhaWxzOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQnVuZGxlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQnVuZGxlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLml0ZW1zKSB7bS5pdGVtcyA9IHByb3RvLml0ZW1zLm1hcChCdW5kbGVJdGVtLmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8uY3JlYXRlZCkge20uY3JlYXRlZCA9IG5ldyBEYXRlKHByb3RvLmNyZWF0ZWQpO31cbiAgICAgICAgaWYgKHByb3RvLnVwZGF0ZWQpIHttLnVwZGF0ZWQgPSBuZXcgRGF0ZShwcm90by51cGRhdGVkKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQnVuZGxlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVyY2hhbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVyY2hhbnRJZCddID0gdGhpcy5tZXJjaGFudElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1bmRsZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydidW5kbGVJZCddID0gdGhpcy5idW5kbGVJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lJ10gPSB0aGlzLm5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaXRlbXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuaXRlbXMgIT09IG51bGwpIHt0b1JldHVyblsnaXRlbXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuaXRlbXMgPyAodGhpcy5pdGVtcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5pdGVtczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jcmVhdGVkICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNyZWF0ZWQgIT09IG51bGwpIHt0b1JldHVyblsnY3JlYXRlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jcmVhdGVkID8gKHRoaXMuY3JlYXRlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jcmVhdGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVwZGF0ZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudXBkYXRlZCAhPT0gbnVsbCkge3RvUmV0dXJuWyd1cGRhdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnVwZGF0ZWQgPyAodGhpcy51cGRhdGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnVwZGF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaGlkZUJ1bmRsZURldGFpbHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hpZGVCdW5kbGVEZXRhaWxzJ10gPSB0aGlzLmhpZGVCdW5kbGVEZXRhaWxzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1bmRsZUl0ZW0gaW1wbGVtZW50cyBpLkJ1bmRsZUl0ZW1JbnRlcmZhY2Uge1xuICAgIHByb2R1Y3RJZDogc3RyaW5nO1xuICAgIGRpc2NvdW50VHlwZTogZS5EaXNjb3VudFR5cGU7XG4gICAgZGlzY291bnRBbW91bnQ6IG51bWJlcjtcbiAgICBxdWFudGl0eTogbnVtYmVyO1xuICAgIGRlZmF1bHRTa3U6IHN0cmluZztcbiAgICBwcmljZTogQnVuZGxlSXRlbVByaWNlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQnVuZGxlSXRlbSB7XG4gICAgICAgIGxldCBtID0gbmV3IEJ1bmRsZUl0ZW0oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZGlzY291bnRUeXBlKSB7bS5kaXNjb3VudFR5cGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLkRpc2NvdW50VHlwZT4oZS5EaXNjb3VudFR5cGUsIHByb3RvLmRpc2NvdW50VHlwZSk7fVxuICAgICAgICBpZiAocHJvdG8uZGlzY291bnRBbW91bnQpIHttLmRpc2NvdW50QW1vdW50ID0gcGFyc2VJbnQocHJvdG8uZGlzY291bnRBbW91bnQsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5xdWFudGl0eSkge20ucXVhbnRpdHkgPSBwYXJzZUludChwcm90by5xdWFudGl0eSwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnByaWNlKSB7bS5wcmljZSA9IEJ1bmRsZUl0ZW1QcmljZS5mcm9tUHJvdG8ocHJvdG8ucHJpY2UpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5CdW5kbGVJdGVtSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvZHVjdElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwcm9kdWN0SWQnXSA9IHRoaXMucHJvZHVjdElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRpc2NvdW50VHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGlzY291bnRUeXBlJ10gPSB0aGlzLmRpc2NvdW50VHlwZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kaXNjb3VudEFtb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGlzY291bnRBbW91bnQnXSA9IHRoaXMuZGlzY291bnRBbW91bnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucXVhbnRpdHkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3F1YW50aXR5J10gPSB0aGlzLnF1YW50aXR5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlZmF1bHRTa3UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2RlZmF1bHRTa3UnXSA9IHRoaXMuZGVmYXVsdFNrdTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcmljZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wcmljZSAhPT0gbnVsbCkge3RvUmV0dXJuWydwcmljZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wcmljZSA/ICh0aGlzLnByaWNlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnByaWNlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1bmRsZVByaWNpbmcgaW1wbGVtZW50cyBpLkJ1bmRsZVByaWNpbmdJbnRlcmZhY2Uge1xuICAgIGJ1bmRsZUlkOiBzdHJpbmc7XG4gICAgY3VycmVuY3k6IHN0cmluZztcbiAgICBwcmljZXM6IEJ1bmRsZVByaWNpbmdQcmljZUFuZEZyZXF1ZW5jeVtdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQnVuZGxlUHJpY2luZyB7XG4gICAgICAgIGxldCBtID0gbmV3IEJ1bmRsZVByaWNpbmcoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ucHJpY2VzKSB7bS5wcmljZXMgPSBwcm90by5wcmljZXMubWFwKEJ1bmRsZVByaWNpbmdQcmljZUFuZEZyZXF1ZW5jeS5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5CdW5kbGVQcmljaW5nSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVuZGxlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2J1bmRsZUlkJ10gPSB0aGlzLmJ1bmRsZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1cnJlbmN5ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXJyZW5jeSddID0gdGhpcy5jdXJyZW5jeTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcmljZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucHJpY2VzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3ByaWNlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wcmljZXMgPyAodGhpcy5wcmljZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucHJpY2VzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldE11bHRpQnVuZGxlUmVzcG9uc2VCdW5kbGVzRW50cnkgaW1wbGVtZW50cyBpLkdldE11bHRpQnVuZGxlUmVzcG9uc2VCdW5kbGVzRW50cnlJbnRlcmZhY2Uge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiBCdW5kbGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRNdWx0aUJ1bmRsZVJlc3BvbnNlQnVuZGxlc0VudHJ5IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0TXVsdGlCdW5kbGVSZXNwb25zZUJ1bmRsZXNFbnRyeSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by52YWx1ZSkge20udmFsdWUgPSBCdW5kbGUuZnJvbVByb3RvKHByb3RvLnZhbHVlKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0TXVsdGlCdW5kbGVSZXNwb25zZUJ1bmRsZXNFbnRyeUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmtleSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsna2V5J10gPSB0aGlzLmtleTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy52YWx1ZSAhPT0gbnVsbCkge3RvUmV0dXJuWyd2YWx1ZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy52YWx1ZSA/ICh0aGlzLnZhbHVlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnZhbHVlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RCdW5kbGVzUmVxdWVzdEZpbHRlcnMgaW1wbGVtZW50cyBpLkxpc3RCdW5kbGVzUmVxdWVzdEZpbHRlcnNJbnRlcmZhY2Uge1xuICAgIG1lcmNoYW50SWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RCdW5kbGVzUmVxdWVzdEZpbHRlcnMge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0QnVuZGxlc1JlcXVlc3RGaWx0ZXJzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0QnVuZGxlc1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVyY2hhbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVyY2hhbnRJZCddID0gdGhpcy5tZXJjaGFudElkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldE11bHRpQnVuZGxlUmVxdWVzdCBpbXBsZW1lbnRzIGkuR2V0TXVsdGlCdW5kbGVSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkOiBzdHJpbmc7XG4gICAgYnVuZGxlSWRzOiBzdHJpbmdbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldE11bHRpQnVuZGxlUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldE11bHRpQnVuZGxlUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0TXVsdGlCdW5kbGVSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVyY2hhbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVyY2hhbnRJZCddID0gdGhpcy5tZXJjaGFudElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1bmRsZUlkcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYnVuZGxlSWRzJ10gPSB0aGlzLmJ1bmRsZUlkczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRNdWx0aUJ1bmRsZVJlc3BvbnNlIGltcGxlbWVudHMgaS5HZXRNdWx0aUJ1bmRsZVJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBidW5kbGVzOiB7W2tleTogc3RyaW5nXTogQnVuZGxlfTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldE11bHRpQnVuZGxlUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRNdWx0aUJ1bmRsZVJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmJ1bmRsZXMpIHttLmJ1bmRsZXMgPSBPYmplY3Qua2V5cyhwcm90by5idW5kbGVzKS5yZWR1Y2U8YW55Pigob2JqLCBrKSA9PiB7IG9ialtrXSA9IEJ1bmRsZS5mcm9tUHJvdG8ocHJvdG8uYnVuZGxlc1trXSk7IHJldHVybiBvYmo7IH0sIHt9KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0TXVsdGlCdW5kbGVSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1bmRsZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYnVuZGxlcyAhPT0gbnVsbCkge3RvUmV0dXJuWydidW5kbGVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmJ1bmRsZXMgPyAodGhpcy5idW5kbGVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmJ1bmRsZXM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdEJ1bmRsZXNSZXF1ZXN0IGltcGxlbWVudHMgaS5MaXN0QnVuZGxlc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGZpbHRlcnM6IExpc3RCdW5kbGVzUmVxdWVzdEZpbHRlcnM7XG4gICAgc2VhcmNoVGVybTogc3RyaW5nO1xuICAgIHBhZ2luZ09wdGlvbnM6IFBhZ2VkUmVxdWVzdE9wdGlvbnM7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0QnVuZGxlc1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0QnVuZGxlc1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZmlsdGVycykge20uZmlsdGVycyA9IExpc3RCdW5kbGVzUmVxdWVzdEZpbHRlcnMuZnJvbVByb3RvKHByb3RvLmZpbHRlcnMpO31cbiAgICAgICAgaWYgKHByb3RvLnBhZ2luZ09wdGlvbnMpIHttLnBhZ2luZ09wdGlvbnMgPSBQYWdlZFJlcXVlc3RPcHRpb25zLmZyb21Qcm90byhwcm90by5wYWdpbmdPcHRpb25zKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdEJ1bmRsZXNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZmlsdGVycyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5maWx0ZXJzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2ZpbHRlcnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZmlsdGVycyA/ICh0aGlzLmZpbHRlcnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZmlsdGVyczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zZWFyY2hUZXJtICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzZWFyY2hUZXJtJ10gPSB0aGlzLnNlYXJjaFRlcm07fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnaW5nT3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wYWdpbmdPcHRpb25zICE9PSBudWxsKSB7dG9SZXR1cm5bJ3BhZ2luZ09wdGlvbnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGFnaW5nT3B0aW9ucyA/ICh0aGlzLnBhZ2luZ09wdGlvbnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucGFnaW5nT3B0aW9uczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0QnVuZGxlc1Jlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0QnVuZGxlc1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBidW5kbGVzOiBCdW5kbGVbXTtcbiAgICBwYWdpbmdNZXRhZGF0YTogUGFnZWRSZXNwb25zZU1ldGFkYXRhO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdEJ1bmRsZXNSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RCdW5kbGVzUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYnVuZGxlcykge20uYnVuZGxlcyA9IHByb3RvLmJ1bmRsZXMubWFwKEJ1bmRsZS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnBhZ2luZ01ldGFkYXRhKSB7bS5wYWdpbmdNZXRhZGF0YSA9IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YS5mcm9tUHJvdG8ocHJvdG8ucGFnaW5nTWV0YWRhdGEpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0QnVuZGxlc1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVuZGxlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5idW5kbGVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2J1bmRsZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYnVuZGxlcyA/ICh0aGlzLmJ1bmRsZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYnVuZGxlczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWdpbmdNZXRhZGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wYWdpbmdNZXRhZGF0YSAhPT0gbnVsbCkge3RvUmV0dXJuWydwYWdpbmdNZXRhZGF0YSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wYWdpbmdNZXRhZGF0YSA/ICh0aGlzLnBhZ2luZ01ldGFkYXRhIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBhZ2luZ01ldGFkYXRhO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1bmRsZUl0ZW1QcmljZSBpbXBsZW1lbnRzIGkuQnVuZGxlSXRlbVByaWNlSW50ZXJmYWNlIHtcbiAgICBhbW91bnQ6IG51bWJlcjtcbiAgICBzZXR1cEZlZTogbnVtYmVyO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQnVuZGxlSXRlbVByaWNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQnVuZGxlSXRlbVByaWNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmFtb3VudCkge20uYW1vdW50ID0gcGFyc2VJbnQocHJvdG8uYW1vdW50LCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uc2V0dXBGZWUpIHttLnNldHVwRmVlID0gcGFyc2VJbnQocHJvdG8uc2V0dXBGZWUsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQnVuZGxlSXRlbVByaWNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYW1vdW50ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhbW91bnQnXSA9IHRoaXMuYW1vdW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNldHVwRmVlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzZXR1cEZlZSddID0gdGhpcy5zZXR1cEZlZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCdW5kbGVQcmljaW5nUHJpY2VBbmRGcmVxdWVuY3kgaW1wbGVtZW50cyBpLkJ1bmRsZVByaWNpbmdQcmljZUFuZEZyZXF1ZW5jeUludGVyZmFjZSB7XG4gICAgZnJlcXVlbmN5OiBlLkZyZXF1ZW5jeTtcbiAgICBlZmZlY3RpdmVQcmljZTogbnVtYmVyO1xuICAgIGluaXRpYWxQcmljZTogbnVtYmVyO1xuICAgIHNldHVwRmVlOiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBCdW5kbGVQcmljaW5nUHJpY2VBbmRGcmVxdWVuY3kge1xuICAgICAgICBsZXQgbSA9IG5ldyBCdW5kbGVQcmljaW5nUHJpY2VBbmRGcmVxdWVuY3koKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZnJlcXVlbmN5KSB7bS5mcmVxdWVuY3kgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLkZyZXF1ZW5jeT4oZS5GcmVxdWVuY3ksIHByb3RvLmZyZXF1ZW5jeSk7fVxuICAgICAgICBpZiAocHJvdG8uZWZmZWN0aXZlUHJpY2UpIHttLmVmZmVjdGl2ZVByaWNlID0gcGFyc2VJbnQocHJvdG8uZWZmZWN0aXZlUHJpY2UsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5pbml0aWFsUHJpY2UpIHttLmluaXRpYWxQcmljZSA9IHBhcnNlSW50KHByb3RvLmluaXRpYWxQcmljZSwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnNldHVwRmVlKSB7bS5zZXR1cEZlZSA9IHBhcnNlSW50KHByb3RvLnNldHVwRmVlLCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkJ1bmRsZVByaWNpbmdQcmljZUFuZEZyZXF1ZW5jeUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZyZXF1ZW5jeSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZnJlcXVlbmN5J10gPSB0aGlzLmZyZXF1ZW5jeTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lZmZlY3RpdmVQcmljZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZWZmZWN0aXZlUHJpY2UnXSA9IHRoaXMuZWZmZWN0aXZlUHJpY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW5pdGlhbFByaWNlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpbml0aWFsUHJpY2UnXSA9IHRoaXMuaW5pdGlhbFByaWNlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNldHVwRmVlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzZXR1cEZlZSddID0gdGhpcy5zZXR1cEZlZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcHNlcnRCdW5kbGVSZXF1ZXN0IGltcGxlbWVudHMgaS5VcHNlcnRCdW5kbGVSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkOiBzdHJpbmc7XG4gICAgYnVuZGxlSWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgaXRlbXM6IEJ1bmRsZUl0ZW1bXTtcbiAgICBoaWRlQnVuZGxlRGV0YWlsczogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFVwc2VydEJ1bmRsZVJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBVcHNlcnRCdW5kbGVSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLml0ZW1zKSB7bS5pdGVtcyA9IHByb3RvLml0ZW1zLm1hcChCdW5kbGVJdGVtLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlVwc2VydEJ1bmRsZVJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXJjaGFudElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZXJjaGFudElkJ10gPSB0aGlzLm1lcmNoYW50SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVuZGxlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2J1bmRsZUlkJ10gPSB0aGlzLmJ1bmRsZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWUnXSA9IHRoaXMubmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pdGVtcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5pdGVtcyAhPT0gbnVsbCkge3RvUmV0dXJuWydpdGVtcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5pdGVtcyA/ICh0aGlzLml0ZW1zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLml0ZW1zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhpZGVCdW5kbGVEZXRhaWxzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydoaWRlQnVuZGxlRGV0YWlscyddID0gdGhpcy5oaWRlQnVuZGxlRGV0YWlsczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
@@ -5,12 +5,6 @@ export function enumStringToValue(enumRef, value) {
5
5
  return enumRef[value];
6
6
  }
7
7
  export class Commitment {
8
- constructor(kwargs) {
9
- if (!kwargs) {
10
- return;
11
- }
12
- Object.assign(this, kwargs);
13
- }
14
8
  static fromProto(proto) {
15
9
  let m = new Commitment();
16
10
  m = Object.assign(m, proto);
@@ -22,6 +16,12 @@ export class Commitment {
22
16
  }
23
17
  return m;
24
18
  }
19
+ constructor(kwargs) {
20
+ if (!kwargs) {
21
+ return;
22
+ }
23
+ Object.assign(this, kwargs);
24
+ }
25
25
  toApiJson() {
26
26
  const toReturn = {};
27
27
  if (typeof this.initial !== 'undefined') {
@@ -33,4 +33,4 @@ export class Commitment {
33
33
  return toReturn;
34
34
  }
35
35
  }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2JpbGxpbmdfc2RrL3NyYy9saWIvX2ludGVybmFsL29iamVjdHMvY29tbWl0bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLFVBQVUsaUJBQWlCLENBQUksT0FBWSxFQUFFLEtBQWE7SUFDOUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8sVUFBVTtJQVluQixZQUFZLE1BQThCO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBYkQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDekIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FBQztRQUM3RCxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFBQyxDQUFDLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQUM7UUFDbkUsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBU0QsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQUM7UUFDOUUsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FBQztRQUNwRixPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIENvbW1pdG1lbnQgaW1wbGVtZW50cyBpLkNvbW1pdG1lbnRJbnRlcmZhY2Uge1xuICAgIGluaXRpYWw6IG51bWJlcjtcbiAgICByZWN1cnJpbmc6IG51bWJlcjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IENvbW1pdG1lbnQge1xuICAgICAgICBsZXQgbSA9IG5ldyBDb21taXRtZW50KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmluaXRpYWwpIHttLmluaXRpYWwgPSBwYXJzZUludChwcm90by5pbml0aWFsLCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8ucmVjdXJyaW5nKSB7bS5yZWN1cnJpbmcgPSBwYXJzZUludChwcm90by5yZWN1cnJpbmcsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQ29tbWl0bWVudEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmluaXRpYWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2luaXRpYWwnXSA9IHRoaXMuaW5pdGlhbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZWN1cnJpbmcgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlY3VycmluZyddID0gdGhpcy5yZWN1cnJpbmc7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iXX0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2JpbGxpbmdfc2RrL3NyYy9saWIvX2ludGVybmFsL29iamVjdHMvY29tbWl0bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLFVBQVUsaUJBQWlCLENBQUksT0FBWSxFQUFFLEtBQWE7SUFDOUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8sVUFBVTtJQUluQixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUN6QixDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztTQUFDO1FBQzdELElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FBQztRQUNuRSxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQThCO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQUM7UUFDOUUsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FBQztRQUNwRixPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIENvbW1pdG1lbnQgaW1wbGVtZW50cyBpLkNvbW1pdG1lbnRJbnRlcmZhY2Uge1xuICAgIGluaXRpYWw6IG51bWJlcjtcbiAgICByZWN1cnJpbmc6IG51bWJlcjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IENvbW1pdG1lbnQge1xuICAgICAgICBsZXQgbSA9IG5ldyBDb21taXRtZW50KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmluaXRpYWwpIHttLmluaXRpYWwgPSBwYXJzZUludChwcm90by5pbml0aWFsLCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8ucmVjdXJyaW5nKSB7bS5yZWN1cnJpbmcgPSBwYXJzZUludChwcm90by5yZWN1cnJpbmcsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQ29tbWl0bWVudEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmluaXRpYWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2luaXRpYWwnXSA9IHRoaXMuaW5pdGlhbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZWN1cnJpbmcgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlY3VycmluZyddID0gdGhpcy5yZWN1cnJpbmc7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iXX0=
@@ -5,12 +5,6 @@ export function enumStringToValue(enumRef, value) {
5
5
  return enumRef[value];
6
6
  }
7
7
  export class PagedRequestOptions {
8
- constructor(kwargs) {
9
- if (!kwargs) {
10
- return;
11
- }
12
- Object.assign(this, kwargs);
13
- }
14
8
  static fromProto(proto) {
15
9
  let m = new PagedRequestOptions();
16
10
  m = Object.assign(m, proto);
@@ -19,6 +13,12 @@ export class PagedRequestOptions {
19
13
  }
20
14
  return m;
21
15
  }
16
+ constructor(kwargs) {
17
+ if (!kwargs) {
18
+ return;
19
+ }
20
+ Object.assign(this, kwargs);
21
+ }
22
22
  toApiJson() {
23
23
  const toReturn = {};
24
24
  if (typeof this.cursor !== 'undefined') {
@@ -31,17 +31,17 @@ export class PagedRequestOptions {
31
31
  }
32
32
  }
33
33
  export class PagedResponseMetadata {
34
+ static fromProto(proto) {
35
+ let m = new PagedResponseMetadata();
36
+ m = Object.assign(m, proto);
37
+ return m;
38
+ }
34
39
  constructor(kwargs) {
35
40
  if (!kwargs) {
36
41
  return;
37
42
  }
38
43
  Object.assign(this, kwargs);
39
44
  }
40
- static fromProto(proto) {
41
- let m = new PagedResponseMetadata();
42
- m = Object.assign(m, proto);
43
- return m;
44
- }
45
45
  toApiJson() {
46
46
  const toReturn = {};
47
47
  if (typeof this.nextCursor !== 'undefined') {
@@ -53,4 +53,4 @@ export class PagedResponseMetadata {
53
53
  return toReturn;
54
54
  }
55
55
  }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vYmlsbGluZ19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLG1CQUFtQjtJQVc1QixZQUFZLE1BQXVDO1FBQy9DLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBWkQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUNsQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUFDO1FBQ2hFLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQVNELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUFDO1FBQzNFLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQUM7UUFDakYsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLHFCQUFxQjtJQVU5QixZQUFZLE1BQXlDO1FBQ2pELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBWEQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUNwQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBU0QsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQUM7UUFDdkYsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FBQztRQUM5RSxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhZ2VkUmVxdWVzdE9wdGlvbnMgaW1wbGVtZW50cyBpLlBhZ2VkUmVxdWVzdE9wdGlvbnNJbnRlcmZhY2Uge1xuICAgIGN1cnNvcjogc3RyaW5nO1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQYWdlZFJlcXVlc3RPcHRpb25zIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUGFnZWRSZXF1ZXN0T3B0aW9ucygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5wYWdlU2l6ZSkge20ucGFnZVNpemUgPSBwYXJzZUludChwcm90by5wYWdlU2l6ZSwgMTApO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5QYWdlZFJlcXVlc3RPcHRpb25zSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3Vyc29yICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXJzb3InXSA9IHRoaXMuY3Vyc29yO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhZ2VTaXplICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYWdlU2l6ZSddID0gdGhpcy5wYWdlU2l6ZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQYWdlZFJlc3BvbnNlTWV0YWRhdGEgaW1wbGVtZW50cyBpLlBhZ2VkUmVzcG9uc2VNZXRhZGF0YUludGVyZmFjZSB7XG4gICAgbmV4dEN1cnNvcjogc3RyaW5nO1xuICAgIGhhc01vcmU6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQYWdlZFJlc3BvbnNlTWV0YWRhdGEge1xuICAgICAgICBsZXQgbSA9IG5ldyBQYWdlZFJlc3BvbnNlTWV0YWRhdGEoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlBhZ2VkUmVzcG9uc2VNZXRhZGF0YUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5leHRDdXJzb3IgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25leHRDdXJzb3InXSA9IHRoaXMubmV4dEN1cnNvcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5oYXNNb3JlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydoYXNNb3JlJ10gPSB0aGlzLmhhc01vcmU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iXX0=
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vYmlsbGluZ19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLG1CQUFtQjtJQUk1QixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ2xDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFBQyxDQUFDLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQUM7UUFDaEUsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxNQUF1QztRQUMvQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUFDO1FBQzNFLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQUM7UUFDakYsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLHFCQUFxQjtJQUk5QixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQ3BDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQXlDO1FBQ2pELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQUM7UUFDdkYsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FBQztRQUM5RSxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhZ2VkUmVxdWVzdE9wdGlvbnMgaW1wbGVtZW50cyBpLlBhZ2VkUmVxdWVzdE9wdGlvbnNJbnRlcmZhY2Uge1xuICAgIGN1cnNvcjogc3RyaW5nO1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQYWdlZFJlcXVlc3RPcHRpb25zIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUGFnZWRSZXF1ZXN0T3B0aW9ucygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5wYWdlU2l6ZSkge20ucGFnZVNpemUgPSBwYXJzZUludChwcm90by5wYWdlU2l6ZSwgMTApO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5QYWdlZFJlcXVlc3RPcHRpb25zSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3Vyc29yICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXJzb3InXSA9IHRoaXMuY3Vyc29yO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhZ2VTaXplICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYWdlU2l6ZSddID0gdGhpcy5wYWdlU2l6ZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQYWdlZFJlc3BvbnNlTWV0YWRhdGEgaW1wbGVtZW50cyBpLlBhZ2VkUmVzcG9uc2VNZXRhZGF0YUludGVyZmFjZSB7XG4gICAgbmV4dEN1cnNvcjogc3RyaW5nO1xuICAgIGhhc01vcmU6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQYWdlZFJlc3BvbnNlTWV0YWRhdGEge1xuICAgICAgICBsZXQgbSA9IG5ldyBQYWdlZFJlc3BvbnNlTWV0YWRhdGEoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlBhZ2VkUmVzcG9uc2VNZXRhZGF0YUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5leHRDdXJzb3IgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25leHRDdXJzb3InXSA9IHRoaXMubmV4dEN1cnNvcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5oYXNNb3JlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydoYXNNb3JlJ10gPSB0aGlzLmhhc01vcmU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iXX0=