@hmcts/ccd-case-ui-toolkit 7.1.34-date-label-fix-v6 → 7.1.34-ungrey-back-button
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/form/date-input/date-input.component.mjs +5 -35
- package/esm2022/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +110 -33
- package/esm2022/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +70 -43
- package/esm2022/lib/shared/components/case-editor/case-editor.module.mjs +7 -4
- package/esm2022/lib/shared/components/case-editor/services/case-flag-state.service.mjs +3 -1
- package/esm2022/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +14 -4
- package/esm2022/lib/shared/components/palette/base-field/abstract-field-write-journey.component.mjs +96 -0
- package/esm2022/lib/shared/components/palette/base-field/abstract-journey.component.mjs +82 -0
- package/esm2022/lib/shared/components/palette/base-field/index.mjs +3 -1
- package/esm2022/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +21 -21
- package/esm2022/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +3 -3
- package/esm2022/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.mjs +25 -22
- package/esm2022/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +82 -35
- package/esm2022/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +32 -29
- package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +33 -28
- package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +174 -71
- package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.mjs +28 -28
- package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +124 -105
- package/esm2022/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +31 -4
- package/esm2022/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +139 -33
- package/esm2022/lib/shared/components/palette/date/write-date-field.component.mjs +5 -5
- package/esm2022/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +39 -22
- package/esm2022/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.mjs +19 -7
- package/esm2022/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +73 -45
- package/esm2022/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +13 -9
- package/esm2022/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +81 -44
- package/esm2022/lib/shared/components/palette/linked-cases/services/linked-cases.service.mjs +22 -2
- package/esm2022/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +109 -30
- package/esm2022/lib/shared/components/palette/palette.module.mjs +2 -2
- package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +12 -10
- package/esm2022/lib/shared/domain/index.mjs +2 -1
- package/esm2022/lib/shared/domain/journey/index.mjs +3 -0
- package/esm2022/lib/shared/domain/journey/journey-instigator.model.mjs +2 -0
- package/esm2022/lib/shared/domain/journey/journey.model.mjs +2 -0
- package/esm2022/lib/shared/pipes/complex/ccd-page-fields.pipe.mjs +2 -2
- package/esm2022/lib/shared/services/index.mjs +2 -1
- package/esm2022/lib/shared/services/journey/index.mjs +2 -0
- package/esm2022/lib/shared/services/journey/multipage-component-state.service.mjs +117 -0
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +1656 -813
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/lib/components/form/date-input/date-input.component.d.ts +1 -2
- package/lib/components/form/date-input/date-input.component.d.ts.map +1 -1
- package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +17 -3
- package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
- package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +10 -2
- package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
- package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
- package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts +1 -0
- package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts.map +1 -1
- package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +2 -1
- package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
- package/lib/shared/components/palette/base-field/abstract-field-write-journey.component.d.ts +30 -0
- package/lib/shared/components/palette/base-field/abstract-field-write-journey.component.d.ts.map +1 -0
- package/lib/shared/components/palette/base-field/abstract-journey.component.d.ts +27 -0
- package/lib/shared/components/palette/base-field/abstract-journey.component.d.ts.map +1 -0
- package/lib/shared/components/palette/base-field/index.d.ts +2 -0
- package/lib/shared/components/palette/base-field/index.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts +4 -2
- package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts +4 -2
- package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts +13 -4
- package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts +6 -3
- package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts +5 -2
- package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts +21 -6
- package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.d.ts +4 -2
- package/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts +7 -3
- package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts +1 -0
- package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts +16 -6
- package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.d.ts +6 -4
- package/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.d.ts.map +1 -1
- package/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.d.ts +6 -2
- package/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.d.ts.map +1 -1
- package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts +7 -3
- package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts.map +1 -1
- package/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.d.ts +5 -2
- package/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.d.ts.map +1 -1
- package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts +9 -3
- package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts.map +1 -1
- package/lib/shared/components/palette/linked-cases/services/linked-cases.service.d.ts +7 -0
- package/lib/shared/components/palette/linked-cases/services/linked-cases.service.d.ts.map +1 -1
- package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts +10 -3
- package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.d.ts.map +1 -1
- package/lib/shared/domain/index.d.ts +1 -0
- package/lib/shared/domain/index.d.ts.map +1 -1
- package/lib/shared/domain/journey/index.d.ts +3 -0
- package/lib/shared/domain/journey/index.d.ts.map +1 -0
- package/lib/shared/domain/journey/journey-instigator.model.d.ts +5 -0
- package/lib/shared/domain/journey/journey-instigator.model.d.ts.map +1 -0
- package/lib/shared/domain/journey/journey.model.d.ts +19 -0
- package/lib/shared/domain/journey/journey.model.d.ts.map +1 -0
- package/lib/shared/services/index.d.ts +1 -0
- package/lib/shared/services/index.d.ts.map +1 -1
- package/lib/shared/services/journey/index.d.ts +2 -0
- package/lib/shared/services/journey/index.d.ts.map +1 -0
- package/lib/shared/services/journey/multipage-component-state.service.d.ts +26 -0
- package/lib/shared/services/journey/multipage-component-state.service.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -60,7 +60,6 @@ function DateInputComponent_div_21_Template(rf, ctx) { if (rf & 1) {
|
|
|
60
60
|
} }
|
|
61
61
|
export class DateInputComponent {
|
|
62
62
|
id;
|
|
63
|
-
labelPrefix;
|
|
64
63
|
mandatory;
|
|
65
64
|
isDateTime;
|
|
66
65
|
formControl;
|
|
@@ -193,40 +192,13 @@ export class DateInputComponent {
|
|
|
193
192
|
}
|
|
194
193
|
}
|
|
195
194
|
dayId() {
|
|
196
|
-
|
|
197
|
-
const labelPrefix = `${this.labelPrefix}`;
|
|
198
|
-
const labelString = labelPrefix.replace(/\s+/g, '');
|
|
199
|
-
const label = String(labelString).charAt(0).toLowerCase() + String(labelString).slice(1);
|
|
200
|
-
if (idString.includes("Date")) {
|
|
201
|
-
return `${label + this.id}-day`;
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
return `${label + this.id}Date-day`;
|
|
205
|
-
}
|
|
195
|
+
return `${this.id}-day`;
|
|
206
196
|
}
|
|
207
197
|
monthId() {
|
|
208
|
-
|
|
209
|
-
const labelPrefix = `${this.labelPrefix}`;
|
|
210
|
-
const labelString = labelPrefix.replace(/\s+/g, '');
|
|
211
|
-
const label = String(labelString).charAt(0).toLowerCase() + String(labelString).slice(1);
|
|
212
|
-
if (idString.includes("Date")) {
|
|
213
|
-
return `${label + this.id}-month`;
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
return `${label + this.id}Date-month`;
|
|
217
|
-
}
|
|
198
|
+
return `${this.id}-month`;
|
|
218
199
|
}
|
|
219
200
|
yearId() {
|
|
220
|
-
|
|
221
|
-
const labelPrefix = `${this.labelPrefix}`;
|
|
222
|
-
const labelString = labelPrefix.replace(/\s+/g, '');
|
|
223
|
-
const label = String(labelString).charAt(0).toLowerCase() + String(labelString).slice(1);
|
|
224
|
-
if (idString.includes("Date")) {
|
|
225
|
-
return `${label + this.id}-year`;
|
|
226
|
-
}
|
|
227
|
-
else {
|
|
228
|
-
return `${label + this.id}Date-year`;
|
|
229
|
-
}
|
|
201
|
+
return `${this.id}-year`;
|
|
230
202
|
}
|
|
231
203
|
hourId() {
|
|
232
204
|
return `${this.id}-hour`;
|
|
@@ -277,7 +249,7 @@ export class DateInputComponent {
|
|
|
277
249
|
return dateTime.replace(/\..*/, '');
|
|
278
250
|
}
|
|
279
251
|
static ɵfac = function DateInputComponent_Factory(t) { return new (t || DateInputComponent)(); };
|
|
280
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DateInputComponent, selectors: [["cut-date-input"]], inputs: { id: "id",
|
|
252
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DateInputComponent, selectors: [["cut-date-input"]], inputs: { id: "id", mandatory: "mandatory", isDateTime: "isDateTime", formControl: "formControl", isInvalid: "isInvalid" }, features: [i0.ɵɵProvidersFeature([
|
|
281
253
|
{
|
|
282
254
|
provide: NG_VALUE_ACCESSOR,
|
|
283
255
|
useExisting: forwardRef(() => DateInputComponent),
|
|
@@ -356,8 +328,6 @@ export class DateInputComponent {
|
|
|
356
328
|
], template: "<div class=\"form-date\">\n <div class=\"form-group form-group-day\">\n <label class=\"form-label\" [for]=\"dayId()\">{{'Day' | rpxTranslate}}</label>\n <input #dayInput\n class=\"form-control\"\n [id]=\"dayId()\"\n [name]=\"dayId()\"\n type=\"text\"\n pattern=\"[0-9]*\"\n inputmode=\"numeric\"\n [value]=\"displayDay\"\n (change)=\"dayChange(dayInput.value)\"\n (keyup)=\"dayChange(dayInput.value)\"\n (focus)=\"inputFocus()\"\n [ngClass]=\"{'govuk-input--error': isInvalid}\">\n </div>\n\n <div class=\"form-group form-group-month\">\n <label class=\"form-label\" [for]=\"monthId()\">{{'Month' | rpxTranslate}}</label>\n <input #monthInput\n class=\"form-control\"\n [id]=\"monthId()\"\n [name]=\"monthId()\"\n type=\"text\"\n pattern=\"[0-9]*\"\n inputmode=\"numeric\"\n [value]=\"displayMonth\"\n (change)=\"monthChange(monthInput.value)\"\n (keyup)=\"monthChange(monthInput.value)\"\n (focus)=\"inputFocus()\"\n [ngClass]=\"{'govuk-input--error': isInvalid}\">\n </div>\n\n <div class=\"form-group form-group-year\">\n <label class=\"form-label\" [for]=\"yearId()\">{{'Year' | rpxTranslate}}</label>\n <input #yearInput\n class=\"form-control\"\n [id]=\"yearId()\"\n [name]=\"yearId()\"\n type=\"text\"\n pattern=\"[0-9]*\"\n inputmode=\"numeric\"\n [value]=\"displayYear\"\n (change)=\"yearChange(yearInput.value)\"\n (keyup)=\"yearChange(yearInput.value)\"\n (focus)=\"inputFocus()\"\n [ngClass]=\"{'govuk-input--error': isInvalid}\">\n </div>\n\n <div class=\"form-group form-group-hour\" *ngIf=\"isDateTime\">\n <label class=\"form-label\" [for]=\"hourId()\">{{'Hour' | rpxTranslate}}</label>\n <input #hourInput\n class=\"form-control\"\n [id]=\"hourId()\"\n [name]=\"hourId()\"\n type=\"number\"\n [value]=\"displayHour\"\n (input)=\"hourChange(hourInput.value)\"\n (keyup)=\"hourChange(hourInput.value)\"\n (focus)=\"inputFocus()\"\n [ngClass]=\"{'govuk-input--error': isInvalid}\">\n </div>\n\n <div class=\"form-group form-group-minute\" *ngIf=\"isDateTime\">\n <label class=\"form-label\" [for]=\"minuteId()\">{{'Minute' | rpxTranslate}}</label>\n <input #minuteInput\n class=\"form-control\"\n [id]=\"minuteId()\"\n [name]=\"minuteId()\"\n type=\"number\"\n [value]=\"displayMinute\"\n (input)=\"minuteChange(minuteInput.value)\"\n (keyup)=\"minuteChange(minuteInput.value)\"\n (focus)=\"inputFocus()\"\n [ngClass]=\"{'govuk-input--error': isInvalid}\">\n </div>\n\n <div class=\"form-group form-group-second\" *ngIf=\"isDateTime\">\n <label class=\"form-label\" [for]=\"secondId()\">{{'Second' | rpxTranslate}}</label>\n <input #secondInput\n class=\"form-control\"\n [id]=\"secondId()\"\n [name]=\"secondId()\"\n type=\"number\"\n [value]=\"displaySecond\"\n (input)=\"secondChange(secondInput.value)\"\n (keyup)=\"secondChange(secondInput.value)\"\n (focus)=\"inputFocus()\"\n [ngClass]=\"{'govuk-input--error': isInvalid}\">\n </div>\n</div>\n" }]
|
|
357
329
|
}], null, { id: [{
|
|
358
330
|
type: Input
|
|
359
|
-
}], labelPrefix: [{
|
|
360
|
-
type: Input
|
|
361
331
|
}], mandatory: [{
|
|
362
332
|
type: Input
|
|
363
333
|
}], isDateTime: [{
|
|
@@ -368,4 +338,4 @@ export class DateInputComponent {
|
|
|
368
338
|
type: Input
|
|
369
339
|
}] }); })();
|
|
370
340
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DateInputComponent, { className: "DateInputComponent", filePath: "lib/components/form/date-input/date-input.component.ts", lineNumber: 20 }); })();
|
|
371
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUF5QyxXQUFXLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUErQixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0lDaUQvSSxBQURGLCtCQUEyRCxlQUNkO0lBQUEsWUFBeUI7O0lBQUEsaUJBQVE7SUFDNUUsb0NBU3FEO0lBRDlDLEFBREEsQUFEQSxzTkFBUyxxQ0FBMkIsS0FBQyx5TUFDNUIscUNBQTJCLEtBQUMsaUtBQzVCLG1CQUFZLEtBQUM7SUFFL0IsQUFWRSxpQkFTcUQsRUFDakQ7OztJQVhzQixjQUFnQjtJQUFoQixxQ0FBZ0I7SUFBQyxjQUF5QjtJQUF6QixrREFBeUI7SUFHN0QsZUFBZTtJQU9mLEFBSkEsQUFGQSxBQURBLG9DQUFlLHlCQUNFLDZCQUVJLHlEQUl3Qjs7OztJQUlwRCxBQURGLCtCQUE2RCxlQUNkO0lBQUEsWUFBMkI7O0lBQUEsaUJBQVE7SUFDaEYsb0NBU3FEO0lBRDlDLEFBREEsQUFEQSx3TkFBUyx5Q0FBK0IsS0FBQywyTUFDaEMseUNBQStCLEtBQUMsaUtBQ2hDLG1CQUFZLEtBQUM7SUFFL0IsQUFWRSxpQkFTcUQsRUFDakQ7OztJQVhzQixjQUFrQjtJQUFsQix1Q0FBa0I7SUFBQyxjQUEy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SyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2N1dC1kYXRlLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtaW5wdXQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZUlucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZUlucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIFxuICBwdWJsaWMgbGFiZWxQcmVmaXg6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWFuZGF0b3J5OiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc0RhdGVUaW1lOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlzSW52YWxpZDogYm9vbGVhbjtcblxuICBwdWJsaWMgaXNUb3VjaGVkID0gZmFsc2U7XG4gIHB1YmxpYyBkaXNwbGF5RGF5OiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgZGlzcGxheU1vbnRoOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgZGlzcGxheVllYXI6IHN0cmluZyA9IG51bGw7XG5cbiAgcHVibGljIGRpc3BsYXlIb3VyOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgZGlzcGxheU1pbnV0ZTogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGRpc3BsYXlTZWNvbmQ6IHN0cmluZyA9IG51bGw7XG4gIC8vIFdvcmtzIHdpdGhcbiAgLy8gMjAxOC0wNC0wOVQwODowMjoyNy41NDJcbiAgLy8gMjAxOC0wNC0wOVQwODowMjoyNy41NDJaXG4gIC8vIDIwMTgtMDQtMDlUMDg6MDI6MjcuNTQyKzAxOjAwXG4gIHByaXZhdGUgcmVhZG9ubHkgREFURV9GT1JNQVQgPVxuICAgIC9eKDE5fDIwKVxcZHsyfS0/KFxcZFxcZCktPyhcXGRcXGQpKD86VChcXGRcXGQpKD86Oj8oXFxkXFxkKSg/Ojo/KFxcZFxcZCkoPzpcXC4oXFxkKykpPyk/KT8oWnwoWystXSkoXFxkXFxkKTo/KFxcZFxcZCkpP3xaKT8kLztcbiAgLy8gICAgeWVhciAtIG1vbnRoIC0gIGRheSAgICAgVCAgIEhIICAgICA6ICAgTU0gICAgICA6ICBTUyAgICAgICAuMDAwICAgICAgICBaIG9yICsgICAgIDAxIDogICAwMFxuICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZTogKF86IGFueSkgPT4ge307XG4gIHByaXZhdGUgcmF3VmFsdWUgPSAnJztcbiAgcHJpdmF0ZSBkYXk6IHN0cmluZztcbiAgcHJpdmF0ZSBtb250aDogc3RyaW5nO1xuICBwcml2YXRlIHllYXI6IHN0cmluZztcbiAgcHJpdmF0ZSBob3VyOiBzdHJpbmc7XG4gIHByaXZhdGUgbWludXRlOiBzdHJpbmc7XG4gIHByaXZhdGUgc2Vjb25kOiBzdHJpbmc7XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLm1hbmRhdG9yeSAmJiB0aGlzLmlzRGF0ZVRpbWUpIHtcbiAgICAgIHRoaXMuZGlzcGxheUhvdXIgPSAnMDAnO1xuICAgICAgdGhpcy5kaXNwbGF5TWludXRlID0gJzAwJztcbiAgICAgIHRoaXMuZGlzcGxheVNlY29uZCA9ICcwMCc7XG4gICAgICB0aGlzLmhvdXIgPSAnMDAnO1xuICAgICAgdGhpcy5taW51dGUgPSAnMDAnO1xuICAgICAgdGhpcy5zZWNvbmQgPSAnMDAnO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKG9iajogc3RyaW5nKTogdm9pZCB7IC8vIDIwMTgtMDQtMDlUMDg6MDI6MjcuNTQyXG4gICAgaWYgKG9iaikge1xuICAgICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMucmVtb3ZlTWlsbGlzZWNvbmRzKG9iaik7XG4gICAgICAvLyBuZWVkcyB0byBoYW5kbGUgYWxzbyBwYXJ0aWFsIGRhdGVzLCBlLmcuIC0wNS0yMDE2IChtaXNzaW5nIGRheSlcbiAgICAgIGNvbnN0IFtkYXRlUGFydCwgdGltZVBhcnRdID0gdGhpcy5yYXdWYWx1ZS5zcGxpdCgnVCcpO1xuICAgICAgY29uc3QgZGF0ZVZhbHVlcyA9IGRhdGVQYXJ0LnNwbGl0KCctJyk7XG4gICAgICB0aGlzLnllYXIgPSB0aGlzLmRpc3BsYXlZZWFyID0gZGF0ZVZhbHVlc1swXSB8fCAnJztcbiAgICAgIHRoaXMubW9udGggPSB0aGlzLmRpc3BsYXlNb250aCA9IGRhdGVWYWx1ZXNbMV0gfHwgJyc7XG4gICAgICB0aGlzLmRheSA9IHRoaXMuZGlzcGxheURheSA9IGRhdGVWYWx1ZXNbMl0gfHwgJyc7XG4gICAgICBpZiAodGltZVBhcnQpIHtcbiAgICAgICAgY29uc3QgdGltZVBhcnRzID0gdGltZVBhcnQuc3BsaXQoJzonKTtcbiAgICAgICAgdGhpcy5ob3VyID0gdGhpcy5kaXNwbGF5SG91ciA9IHRpbWVQYXJ0c1swXSB8fCAnJztcbiAgICAgICAgdGhpcy5taW51dGUgPSB0aGlzLmRpc3BsYXlNaW51dGUgPSB0aW1lUGFydHNbMV0gfHwgJyc7XG4gICAgICAgIHRoaXMuc2Vjb25kID0gdGhpcy5kaXNwbGF5U2Vjb25kID0gdGltZVBhcnRzWzJdIHx8ICcnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBpZiAodGhpcy5tYW5kYXRvcnkgJiYgIXRoaXMudmlld1ZhbHVlKCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlcXVpcmVkOiAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCdcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChjb250cm9sLnZhbHVlICYmICF0aGlzLmlzRGF0ZUZvcm1hdCh0aGlzLmdldFZhbHVlRm9yVmFsaWRhdGlvbihjb250cm9sKSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhdHRlcm46ICdEYXRlIGlzIG5vdCB2YWxpZCdcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgLy8gRG8gbm90aGluZy5cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnZhbGlkYXRlID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgPT4ge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGRheUNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgLy8gZ2V0IHZhbHVlIGZyb20gaW5wdXRcbiAgICB0aGlzLmRheSA9IHZhbHVlO1xuXG4gICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMudmlld1ZhbHVlKCk7XG5cbiAgICAvLyB1cGRhdGUgdGhlIGZvcm1cbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnJhd1ZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBtb250aENoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgLy8gZ2V0IHZhbHVlIGZyb20gaW5wdXRcbiAgICB0aGlzLm1vbnRoID0gdmFsdWU7XG5cbiAgICB0aGlzLnJhd1ZhbHVlID0gdGhpcy52aWV3VmFsdWUoKTtcblxuICAgIC8vIHVwZGF0ZSB0aGUgZm9ybVxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMucmF3VmFsdWUpO1xuXG4gIH1cblxuICBwdWJsaWMgeWVhckNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgLy8gZ2V0IHZhbHVlIGZyb20gaW5wdXRcbiAgICB0aGlzLnllYXIgPSB2YWx1ZTtcblxuICAgIHRoaXMucmF3VmFsdWUgPSB0aGlzLnZpZXdWYWx1ZSgpO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBmb3JtXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5yYXdWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgaG91ckNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgLy8gZ2V0IHZhbHVlIGZyb20gaW5wdXRcbiAgICB0aGlzLmhvdXIgPSB2YWx1ZTtcblxuICAgIHRoaXMucmF3VmFsdWUgPSB0aGlzLnZpZXdWYWx1ZSgpO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBmb3JtXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5yYXdWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgbWludXRlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBnZXQgdmFsdWUgZnJvbSBpbnB1dFxuICAgIHRoaXMubWludXRlID0gdmFsdWU7XG5cbiAgICB0aGlzLnJhd1ZhbHVlID0gdGhpcy52aWV3VmFsdWUoKTtcblxuICAgIC8vIHVwZGF0ZSB0aGUgZm9ybVxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMucmF3VmFsdWUpO1xuXG4gIH1cblxuICBwdWJsaWMgc2Vjb25kQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBnZXQgdmFsdWUgZnJvbSBpbnB1dFxuICAgIHRoaXMuc2Vjb25kID0gdmFsdWU7XG5cbiAgICB0aGlzLnJhd1ZhbHVlID0gdGhpcy52aWV3VmFsdWUoKTtcblxuICAgIC8vIHVwZGF0ZSB0aGUgZm9ybVxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMucmF3VmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGlucHV0Rm9jdXMoKSB7XG4gICAgdGhpcy5pc1RvdWNoZWQgPSBmYWxzZTtcbiAgICB0aGlzLnRvdWNoKCk7XG4gIH1cblxuICBwdWJsaWMgdG91Y2goKSB7XG4gICAgaWYgKHRoaXMuaXNUb3VjaGVkKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMucmF3VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkYXlJZCgpIHtcbiAgICBjb25zdCBpZFN0cmluZyA9IGAke3RoaXMuaWR9YDtcbiAgICBjb25zdCBsYWJlbFByZWZpeCA9IGAke3RoaXMubGFiZWxQcmVmaXh9YDtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsUHJlZml4LnJlcGxhY2UoL1xccysvZywgJycpOyBcbiAgICBjb25zdCBsYWJlbCA9IFN0cmluZyhsYWJlbFN0cmluZykuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBTdHJpbmcobGFiZWxTdHJpbmcpLnNsaWNlKDEpO1xuICAgIGlmIChpZFN0cmluZy5pbmNsdWRlcyhcIkRhdGVcIikpIHtcbiAgICAgIHJldHVybiBgJHtsYWJlbCArIHRoaXMuaWR9LWRheWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHtsYWJlbCArIHRoaXMuaWR9RGF0ZS1kYXlgO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBtb250aElkKCkge1xuICAgIGNvbnN0IGlkU3RyaW5nID0gYCR7dGhpcy5pZH1gO1xuICAgIGNvbnN0IGxhYmVsUHJlZml4ID0gYCR7dGhpcy5sYWJlbFByZWZpeH1gO1xuICAgIGNvbnN0IGxhYmVsU3RyaW5nID0gbGFiZWxQcmVmaXgucmVwbGFjZSgvXFxzKy9nLCAnJyk7IFxuICAgIGNvbnN0IGxhYmVsID0gU3RyaW5nKGxhYmVsU3RyaW5nKS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIFN0cmluZyhsYWJlbFN0cmluZykuc2xpY2UoMSk7XG4gICAgaWYgKGlkU3RyaW5nLmluY2x1ZGVzKFwiRGF0ZVwiKSkge1xuICAgICAgcmV0dXJuIGAke2xhYmVsICsgdGhpcy5pZH0tbW9udGhgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYCR7bGFiZWwgKyB0aGlzLmlkfURhdGUtbW9udGhgO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB5ZWFySWQoKSB7XG4gICAgY29uc3QgaWRTdHJpbmcgPSBgJHt0aGlzLmlkfWA7XG4gICAgY29uc3QgbGFiZWxQcmVmaXggPSBgJHt0aGlzLmxhYmVsUHJlZml4fWA7XG4gICAgY29uc3QgbGFiZWxTdHJpbmcgPSBsYWJlbFByZWZpeC5yZXBsYWNlKC9cXHMrL2csICcnKTsgXG4gICAgY29uc3QgbGFiZWwgPSBTdHJpbmcobGFiZWxTdHJpbmcpLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgU3RyaW5nKGxhYmVsU3RyaW5nKS5zbGljZSgxKTtcbiAgICBpZiAoaWRTdHJpbmcuaW5jbHVkZXMoXCJEYXRlXCIpKSB7XG4gICAgICByZXR1cm4gYCR7bGFiZWwgKyB0aGlzLmlkfS15ZWFyYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke2xhYmVsICsgdGhpcy5pZH1EYXRlLXllYXJgO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBob3VySWQoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuaWR9LWhvdXJgO1xuICB9XG5cbiAgcHVibGljIG1pbnV0ZUlkKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmlkfS1taW51dGVgO1xuICB9XG5cbiAgcHVibGljIHNlY29uZElkKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmlkfS1zZWNvbmRgO1xuICB9XG5cbiAgcHJpdmF0ZSB2aWV3VmFsdWUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5kYXkgfHwgdGhpcy5tb250aCB8fCB0aGlzLnllYXIgfHwgdGhpcy5ob3VyIHx8IHRoaXMubWludXRlIHx8IHRoaXMuc2Vjb25kKSB7XG4gICAgICBjb25zdCBkYXRlID0gW1xuICAgICAgICB0aGlzLnllYXIgPyB0aGlzLnllYXIgOiAnJyxcbiAgICAgICAgdGhpcy5tb250aCA/IHRoaXMucGFkKHRoaXMubW9udGgpIDogJycsXG4gICAgICAgIHRoaXMuZGF5ID8gdGhpcy5wYWQodGhpcy5kYXkpIDogJydcbiAgICAgIF0uam9pbignLScpO1xuICAgICAgaWYgKHRoaXMuaXNEYXRlVGltZSkge1xuICAgICAgICBjb25zdCB0aW1lID0gW1xuICAgICAgICAgIHRoaXMuaG91ciA/IHRoaXMucGFkKHRoaXMuaG91cikgOiAnJyxcbiAgICAgICAgICB0aGlzLm1pbnV0ZSA/IHRoaXMucGFkKHRoaXMubWludXRlKSA6ICcnLFxuICAgICAgICAgIHRoaXMuc2Vjb25kID8gdGhpcy5wYWQodGhpcy5zZWNvbmQpIDogJydcbiAgICAgICAgXS5qb2luKCc6Jyk7XG4gICAgICAgIHJldHVybiBgJHtkYXRlfVQke3RpbWV9LjAwMGA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGlzRGF0ZUZvcm1hdCh2YWw6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLkRBVEVfRk9STUFULnRlc3QodmFsKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFkKG51bTogYW55LCBwYWROdW0gPSAyKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWwgPSBudW0gIT09IHVuZGVmaW5lZCA/IG51bS50b1N0cmluZygpIDogJyc7XG4gICAgcmV0dXJuIHZhbC5sZW5ndGggPj0gcGFkTnVtID8gdmFsIDogbmV3IEFycmF5KHBhZE51bSAtIHZhbC5sZW5ndGggKyAxKS5qb2luKCcwJykgKyB2YWw7XG4gIH1cblxuICBwcml2YXRlIGdldFZhbHVlRm9yVmFsaWRhdGlvbihjb250cm9sOiBhbnkpIHtcbiAgICBpZiAodGhpcy5pc0RhdGVUaW1lKSB7XG4gICAgICByZXR1cm4gY29udHJvbC52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnRyb2wudmFsdWUucmVwbGFjZSgvWi4qLywgJ1QwMDowMDowMFonKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU1pbGxpc2Vjb25kcyhkYXRlVGltZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF0ZVRpbWUucmVwbGFjZSgvXFwuLiovLCAnJyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWRhdGVcIj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1kYXlcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgW2Zvcl09XCJkYXlJZCgpXCI+e3snRGF5JyB8IHJweFRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICA8aW5wdXQgI2RheUlucHV0XG4gICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgW2lkXT1cImRheUlkKClcIlxuICAgICAgICAgICBbbmFtZV09XCJkYXlJZCgpXCJcbiAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgIFt2YWx1ZV09XCJkaXNwbGF5RGF5XCJcbiAgICAgICAgICAgKGNoYW5nZSk9XCJkYXlDaGFuZ2UoZGF5SW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGtleXVwKT1cImRheUNoYW5nZShkYXlJbnB1dC52YWx1ZSlcIlxuICAgICAgICAgICAoZm9jdXMpPVwiaW5wdXRGb2N1cygpXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieydnb3Z1ay1pbnB1dC0tZXJyb3InOiBpc0ludmFsaWR9XCI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtbW9udGhcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgW2Zvcl09XCJtb250aElkKClcIj57eydNb250aCcgfCBycHhUcmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgPGlucHV0ICNtb250aElucHV0XG4gICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgW2lkXT1cIm1vbnRoSWQoKVwiXG4gICAgICAgICAgIFtuYW1lXT1cIm1vbnRoSWQoKVwiXG4gICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgcGF0dGVybj1cIlswLTldKlwiXG4gICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICBbdmFsdWVdPVwiZGlzcGxheU1vbnRoXCJcbiAgICAgICAgICAgKGNoYW5nZSk9XCJtb250aENoYW5nZShtb250aElucHV0LnZhbHVlKVwiXG4gICAgICAgICAgIChrZXl1cCk9XCJtb250aENoYW5nZShtb250aElucHV0LnZhbHVlKVwiXG4gICAgICAgICAgIChmb2N1cyk9XCJpbnB1dEZvY3VzKClcIlxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J2dvdnVrLWlucHV0LS1lcnJvcic6IGlzSW52YWxpZH1cIj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC15ZWFyXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFtmb3JdPVwieWVhcklkKClcIj57eydZZWFyJyB8IHJweFRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICA8aW5wdXQgI3llYXJJbnB1dFxuICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgIFtpZF09XCJ5ZWFySWQoKVwiXG4gICAgICAgICAgIFtuYW1lXT1cInllYXJJZCgpXCJcbiAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgIFt2YWx1ZV09XCJkaXNwbGF5WWVhclwiXG4gICAgICAgICAgIChjaGFuZ2UpPVwieWVhckNoYW5nZSh5ZWFySW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGtleXVwKT1cInllYXJDaGFuZ2UoeWVhcklucHV0LnZhbHVlKVwiXG4gICAgICAgICAgIChmb2N1cyk9XCJpbnB1dEZvY3VzKClcIlxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J2dvdnVrLWlucHV0LS1lcnJvcic6IGlzSW52YWxpZH1cIj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1ob3VyXCIgKm5nSWY9XCJpc0RhdGVUaW1lXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFtmb3JdPVwiaG91cklkKClcIj57eydIb3VyJyB8IHJweFRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICA8aW5wdXQgI2hvdXJJbnB1dFxuICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgIFtpZF09XCJob3VySWQoKVwiXG4gICAgICAgICAgIFtuYW1lXT1cImhvdXJJZCgpXCJcbiAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgIFt2YWx1ZV09XCJkaXNwbGF5SG91clwiXG4gICAgICAgICAgIChpbnB1dCk9XCJob3VyQ2hhbmdlKGhvdXJJbnB1dC52YWx1ZSlcIlxuICAgICAgICAgICAoa2V5dXApPVwiaG91ckNoYW5nZShob3VySW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGZvY3VzKT1cImlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogaXNJbnZhbGlkfVwiPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmb3JtLWdyb3VwLW1pbnV0ZVwiICpuZ0lmPVwiaXNEYXRlVGltZVwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBbZm9yXT1cIm1pbnV0ZUlkKClcIj57eydNaW51dGUnIHwgcnB4VHJhbnNsYXRlfX08L2xhYmVsPlxuICAgIDxpbnB1dCAjbWludXRlSW5wdXRcbiAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICBbaWRdPVwibWludXRlSWQoKVwiXG4gICAgICAgICAgIFtuYW1lXT1cIm1pbnV0ZUlkKClcIlxuICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgW3ZhbHVlXT1cImRpc3BsYXlNaW51dGVcIlxuICAgICAgICAgICAoaW5wdXQpPVwibWludXRlQ2hhbmdlKG1pbnV0ZUlucHV0LnZhbHVlKVwiXG4gICAgICAgICAgIChrZXl1cCk9XCJtaW51dGVDaGFuZ2UobWludXRlSW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGZvY3VzKT1cImlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogaXNJbnZhbGlkfVwiPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmb3JtLWdyb3VwLXNlY29uZFwiICpuZ0lmPVwiaXNEYXRlVGltZVwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBbZm9yXT1cInNlY29uZElkKClcIj57eydTZWNvbmQnIHwgcnB4VHJhbnNsYXRlfX08L2xhYmVsPlxuICAgIDxpbnB1dCAjc2Vjb25kSW5wdXRcbiAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICBbaWRdPVwic2Vjb25kSWQoKVwiXG4gICAgICAgICAgIFtuYW1lXT1cInNlY29uZElkKClcIlxuICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgW3ZhbHVlXT1cImRpc3BsYXlTZWNvbmRcIlxuICAgICAgICAgICAoaW5wdXQpPVwic2Vjb25kQ2hhbmdlKHNlY29uZElucHV0LnZhbHVlKVwiXG4gICAgICAgICAgIChrZXl1cCk9XCJzZWNvbmRDaGFuZ2Uoc2Vjb25kSW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGZvY3VzKT1cImlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogaXNJbnZhbGlkfVwiPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
341
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUF5QyxXQUFXLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUErQixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0lDaUQvSSxBQURGLCtCQUEyRCxlQUNkO0lBQUEsWUFBeUI7O0lBQUEsaUJBQVE7SUFDNUUsb0NBU3FEO0lBRDlDLEFBREEsQUFEQSxzTkFBUyxxQ0FBMkIsS0FBQyx5TUFDNUIscUNBQTJCLEtBQUMsaUtBQzVCLG1CQUFZLEtBQUM7SUFFL0IsQUFWRSxpQkFTcUQsRUFDakQ7OztJQVhzQixjQUFnQjtJQUFoQixxQ0FBZ0I7SUFBQyxjQUF5QjtJQUF6QixrREFBeUI7SUFHN0QsZUFBZTtJQU9mLEFBSkEsQUFGQSxBQURBLG9DQUFlLHlCQUNFLDZCQUVJLHlEQUl3Qjs7OztJQUlwRCxBQURGLCtCQUE2RCxlQUNkO0lBQUEsWUFBMkI7O0lBQUEsaUJBQVE7SUFDaEYsb0NBU3FEO0lBRDlDLEFBREEsQUFEQSx3TkFBUyx5Q0FBK0IsS0FBQywyTUFDaEMseUNBQStCLEtBQUMsaUtBQ2hDLG1CQUFZLEtBQUM7SUFFL0IsQUFWRSxpQkFTcUQsRUFDakQ7OztJQVhzQixjQUFrQjtJQUFsQix1Q0FBa0I7SUFBQyxjQUEy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QUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQWE7UUFDOUIsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpDLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV0QyxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQWE7UUFDN0IsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBRWxCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpDLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQWE7UUFDN0IsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBRWxCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpDLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQWE7UUFDL0IsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXBCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpDLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV0QyxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQWE7UUFDL0IsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcs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Y2QsY0FBZ0I7WUFBaEIscUNBQWdCO1lBY2hCLGNBQWdCO1lBQWhCLHFDQUFnQjs7O2lGRDFEaEQsa0JBQWtCO2NBaEI5QixTQUFTOzJCQUNFLGdCQUFnQixhQUVmO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDO3dCQUNqRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtvQkFDRDt3QkFDRSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7d0JBQ2pELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO2dCQUlNLEVBQUU7a0JBRFIsS0FBSztZQUlDLFNBQVM7a0JBRGYsS0FBSztZQUlDLFVBQVU7a0JBRGhCLEtBQUs7WUFJQyxXQUFXO2tCQURqQixLQUFLO1lBSUMsU0FBUztrQkFEZixLQUFLOztrRkFiSyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2N1dC1kYXRlLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtaW5wdXQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZUlucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZUlucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYW5kYXRvcnk6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlzRGF0ZVRpbWU6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgcHVibGljIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNJbnZhbGlkOiBib29sZWFuO1xuXG4gIHB1YmxpYyBpc1RvdWNoZWQgPSBmYWxzZTtcbiAgcHVibGljIGRpc3BsYXlEYXk6IHN0cmluZyA9IG51bGw7XG4gIHB1YmxpYyBkaXNwbGF5TW9udGg6IHN0cmluZyA9IG51bGw7XG4gIHB1YmxpYyBkaXNwbGF5WWVhcjogc3RyaW5nID0gbnVsbDtcblxuICBwdWJsaWMgZGlzcGxheUhvdXI6IHN0cmluZyA9IG51bGw7XG4gIHB1YmxpYyBkaXNwbGF5TWludXRlOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgZGlzcGxheVNlY29uZDogc3RyaW5nID0gbnVsbDtcbiAgLy8gV29ya3Mgd2l0aFxuICAvLyAyMDE4LTA0LTA5VDA4OjAyOjI3LjU0MlxuICAvLyAyMDE4LTA0LTA5VDA4OjAyOjI3LjU0MlpcbiAgLy8gMjAxOC0wNC0wOVQwODowMjoyNy41NDIrMDE6MDBcbiAgcHJpdmF0ZSByZWFkb25seSBEQVRFX0ZPUk1BVCA9XG4gICAgL14oMTl8MjApXFxkezJ9LT8oXFxkXFxkKS0/KFxcZFxcZCkoPzpUKFxcZFxcZCkoPzo6PyhcXGRcXGQpKD86Oj8oXFxkXFxkKSg/OlxcLihcXGQrKSk/KT8pPyhafChbKy1dKShcXGRcXGQpOj8oXFxkXFxkKSk/fFopPyQvO1xuICAvLyAgICB5ZWFyIC0gbW9udGggLSAgZGF5ICAgICBUICAgSEggICAgIDogICBNTSAgICAgIDogIFNTICAgICAgIC4wMDAgICAgICAgIFogb3IgKyAgICAgMDEgOiAgIDAwXG4gIHByaXZhdGUgcHJvcGFnYXRlQ2hhbmdlOiAoXzogYW55KSA9PiB7fTtcbiAgcHJpdmF0ZSByYXdWYWx1ZSA9ICcnO1xuICBwcml2YXRlIGRheTogc3RyaW5nO1xuICBwcml2YXRlIG1vbnRoOiBzdHJpbmc7XG4gIHByaXZhdGUgeWVhcjogc3RyaW5nO1xuICBwcml2YXRlIGhvdXI6IHN0cmluZztcbiAgcHJpdmF0ZSBtaW51dGU6IHN0cmluZztcbiAgcHJpdmF0ZSBzZWNvbmQ6IHN0cmluZztcblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMubWFuZGF0b3J5ICYmIHRoaXMuaXNEYXRlVGltZSkge1xuICAgICAgdGhpcy5kaXNwbGF5SG91ciA9ICcwMCc7XG4gICAgICB0aGlzLmRpc3BsYXlNaW51dGUgPSAnMDAnO1xuICAgICAgdGhpcy5kaXNwbGF5U2Vjb25kID0gJzAwJztcbiAgICAgIHRoaXMuaG91ciA9ICcwMCc7XG4gICAgICB0aGlzLm1pbnV0ZSA9ICcwMCc7XG4gICAgICB0aGlzLnNlY29uZCA9ICcwMCc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUob2JqOiBzdHJpbmcpOiB2b2lkIHsgLy8gMjAxOC0wNC0wOVQwODowMjoyNy41NDJcbiAgICBpZiAob2JqKSB7XG4gICAgICB0aGlzLnJhd1ZhbHVlID0gdGhpcy5yZW1vdmVNaWxsaXNlY29uZHMob2JqKTtcbiAgICAgIC8vIG5lZWRzIHRvIGhhbmRsZSBhbHNvIHBhcnRpYWwgZGF0ZXMsIGUuZy4gLTA1LTIwMTYgKG1pc3NpbmcgZGF5KVxuICAgICAgY29uc3QgW2RhdGVQYXJ0LCB0aW1lUGFydF0gPSB0aGlzLnJhd1ZhbHVlLnNwbGl0KCdUJyk7XG4gICAgICBjb25zdCBkYXRlVmFsdWVzID0gZGF0ZVBhcnQuc3BsaXQoJy0nKTtcbiAgICAgIHRoaXMueWVhciA9IHRoaXMuZGlzcGxheVllYXIgPSBkYXRlVmFsdWVzWzBdIHx8ICcnO1xuICAgICAgdGhpcy5tb250aCA9IHRoaXMuZGlzcGxheU1vbnRoID0gZGF0ZVZhbHVlc1sxXSB8fCAnJztcbiAgICAgIHRoaXMuZGF5ID0gdGhpcy5kaXNwbGF5RGF5ID0gZGF0ZVZhbHVlc1syXSB8fCAnJztcbiAgICAgIGlmICh0aW1lUGFydCkge1xuICAgICAgICBjb25zdCB0aW1lUGFydHMgPSB0aW1lUGFydC5zcGxpdCgnOicpO1xuICAgICAgICB0aGlzLmhvdXIgPSB0aGlzLmRpc3BsYXlIb3VyID0gdGltZVBhcnRzWzBdIHx8ICcnO1xuICAgICAgICB0aGlzLm1pbnV0ZSA9IHRoaXMuZGlzcGxheU1pbnV0ZSA9IHRpbWVQYXJ0c1sxXSB8fCAnJztcbiAgICAgICAgdGhpcy5zZWNvbmQgPSB0aGlzLmRpc3BsYXlTZWNvbmQgPSB0aW1lUGFydHNbMl0gfHwgJyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGlmICh0aGlzLm1hbmRhdG9yeSAmJiAhdGhpcy52aWV3VmFsdWUoKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVxdWlyZWQ6ICdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkJ1xuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgIXRoaXMuaXNEYXRlRm9ybWF0KHRoaXMuZ2V0VmFsdWVGb3JWYWxpZGF0aW9uKGNvbnRyb2wpKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0dGVybjogJ0RhdGUgaXMgbm90IHZhbGlkJ1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBEbyBub3RoaW5nLlxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudmFsaWRhdGUgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyA9PiB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZGF5Q2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBnZXQgdmFsdWUgZnJvbSBpbnB1dFxuICAgIHRoaXMuZGF5ID0gdmFsdWU7XG5cbiAgICB0aGlzLnJhd1ZhbHVlID0gdGhpcy52aWV3VmFsdWUoKTtcblxuICAgIC8vIHVwZGF0ZSB0aGUgZm9ybVxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMucmF3VmFsdWUpO1xuICB9XG5cbiAgcHVibGljIG1vbnRoQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBnZXQgdmFsdWUgZnJvbSBpbnB1dFxuICAgIHRoaXMubW9udGggPSB2YWx1ZTtcblxuICAgIHRoaXMucmF3VmFsdWUgPSB0aGlzLnZpZXdWYWx1ZSgpO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBmb3JtXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5yYXdWYWx1ZSk7XG5cbiAgfVxuXG4gIHB1YmxpYyB5ZWFyQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBnZXQgdmFsdWUgZnJvbSBpbnB1dFxuICAgIHRoaXMueWVhciA9IHZhbHVlO1xuXG4gICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMudmlld1ZhbHVlKCk7XG5cbiAgICAvLyB1cGRhdGUgdGhlIGZvcm1cbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnJhd1ZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBob3VyQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBnZXQgdmFsdWUgZnJvbSBpbnB1dFxuICAgIHRoaXMuaG91ciA9IHZhbHVlO1xuXG4gICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMudmlld1ZhbHVlKCk7XG5cbiAgICAvLyB1cGRhdGUgdGhlIGZvcm1cbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnJhd1ZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBtaW51dGVDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIC8vIGdldCB2YWx1ZSBmcm9tIGlucHV0XG4gICAgdGhpcy5taW51dGUgPSB2YWx1ZTtcblxuICAgIHRoaXMucmF3VmFsdWUgPSB0aGlzLnZpZXdWYWx1ZSgpO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBmb3JtXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5yYXdWYWx1ZSk7XG5cbiAgfVxuXG4gIHB1YmxpYyBzZWNvbmRDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIC8vIGdldCB2YWx1ZSBmcm9tIGlucHV0XG4gICAgdGhpcy5zZWNvbmQgPSB2YWx1ZTtcblxuICAgIHRoaXMucmF3VmFsdWUgPSB0aGlzLnZpZXdWYWx1ZSgpO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBmb3JtXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5yYXdWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgaW5wdXRGb2N1cygpIHtcbiAgICB0aGlzLmlzVG91Y2hlZCA9IGZhbHNlO1xuICAgIHRoaXMudG91Y2goKTtcbiAgfVxuXG4gIHB1YmxpYyB0b3VjaCgpIHtcbiAgICBpZiAodGhpcy5pc1RvdWNoZWQpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5yYXdWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVW50b3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRheUlkKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmlkfS1kYXlgO1xuICB9XG5cbiAgcHVibGljIG1vbnRoSWQoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuaWR9LW1vbnRoYDtcbiAgfVxuXG4gIHB1YmxpYyB5ZWFySWQoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuaWR9LXllYXJgO1xuICB9XG5cbiAgcHVibGljIGhvdXJJZCgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5pZH0taG91cmA7XG4gIH1cblxuICBwdWJsaWMgbWludXRlSWQoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuaWR9LW1pbnV0ZWA7XG4gIH1cblxuICBwdWJsaWMgc2Vjb25kSWQoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuaWR9LXNlY29uZGA7XG4gIH1cblxuICBwcml2YXRlIHZpZXdWYWx1ZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmRheSB8fCB0aGlzLm1vbnRoIHx8IHRoaXMueWVhciB8fCB0aGlzLmhvdXIgfHwgdGhpcy5taW51dGUgfHwgdGhpcy5zZWNvbmQpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBbXG4gICAgICAgIHRoaXMueWVhciA/IHRoaXMueWVhciA6ICcnLFxuICAgICAgICB0aGlzLm1vbnRoID8gdGhpcy5wYWQodGhpcy5tb250aCkgOiAnJyxcbiAgICAgICAgdGhpcy5kYXkgPyB0aGlzLnBhZCh0aGlzLmRheSkgOiAnJ1xuICAgICAgXS5qb2luKCctJyk7XG4gICAgICBpZiAodGhpcy5pc0RhdGVUaW1lKSB7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBbXG4gICAgICAgICAgdGhpcy5ob3VyID8gdGhpcy5wYWQodGhpcy5ob3VyKSA6ICcnLFxuICAgICAgICAgIHRoaXMubWludXRlID8gdGhpcy5wYWQodGhpcy5taW51dGUpIDogJycsXG4gICAgICAgICAgdGhpcy5zZWNvbmQgPyB0aGlzLnBhZCh0aGlzLnNlY29uZCkgOiAnJ1xuICAgICAgICBdLmpvaW4oJzonKTtcbiAgICAgICAgcmV0dXJuIGAke2RhdGV9VCR7dGltZX0uMDAwYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaXNEYXRlRm9ybWF0KHZhbDogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuREFURV9GT1JNQVQudGVzdCh2YWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYWQobnVtOiBhbnksIHBhZE51bSA9IDIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbCA9IG51bSAhPT0gdW5kZWZpbmVkID8gbnVtLnRvU3RyaW5nKCkgOiAnJztcbiAgICByZXR1cm4gdmFsLmxlbmd0aCA+PSBwYWROdW0gPyB2YWwgOiBuZXcgQXJyYXkocGFkTnVtIC0gdmFsLmxlbmd0aCArIDEpLmpvaW4oJzAnKSArIHZhbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFsdWVGb3JWYWxpZGF0aW9uKGNvbnRyb2w6IGFueSkge1xuICAgIGlmICh0aGlzLmlzRGF0ZVRpbWUpIHtcbiAgICAgIHJldHVybiBjb250cm9sLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY29udHJvbC52YWx1ZS5yZXBsYWNlKC9aLiovLCAnVDAwOjAwOjAwWicpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTWlsbGlzZWNvbmRzKGRhdGVUaW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlVGltZS5yZXBsYWNlKC9cXC4uKi8sICcnKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZGF0ZVwiPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmb3JtLWdyb3VwLWRheVwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBbZm9yXT1cImRheUlkKClcIj57eydEYXknIHwgcnB4VHJhbnNsYXRlfX08L2xhYmVsPlxuICAgIDxpbnB1dCAjZGF5SW5wdXRcbiAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICBbaWRdPVwiZGF5SWQoKVwiXG4gICAgICAgICAgIFtuYW1lXT1cImRheUlkKClcIlxuICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgIHBhdHRlcm49XCJbMC05XSpcIlxuICAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICAgW3ZhbHVlXT1cImRpc3BsYXlEYXlcIlxuICAgICAgICAgICAoY2hhbmdlKT1cImRheUNoYW5nZShkYXlJbnB1dC52YWx1ZSlcIlxuICAgICAgICAgICAoa2V5dXApPVwiZGF5Q2hhbmdlKGRheUlucHV0LnZhbHVlKVwiXG4gICAgICAgICAgIChmb2N1cyk9XCJpbnB1dEZvY3VzKClcIlxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J2dvdnVrLWlucHV0LS1lcnJvcic6IGlzSW52YWxpZH1cIj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1tb250aFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBbZm9yXT1cIm1vbnRoSWQoKVwiPnt7J01vbnRoJyB8IHJweFRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICA8aW5wdXQgI21vbnRoSW5wdXRcbiAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICBbaWRdPVwibW9udGhJZCgpXCJcbiAgICAgICAgICAgW25hbWVdPVwibW9udGhJZCgpXCJcbiAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgIFt2YWx1ZV09XCJkaXNwbGF5TW9udGhcIlxuICAgICAgICAgICAoY2hhbmdlKT1cIm1vbnRoQ2hhbmdlKG1vbnRoSW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGtleXVwKT1cIm1vbnRoQ2hhbmdlKG1vbnRoSW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGZvY3VzKT1cImlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogaXNJbnZhbGlkfVwiPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmb3JtLWdyb3VwLXllYXJcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgW2Zvcl09XCJ5ZWFySWQoKVwiPnt7J1llYXInIHwgcnB4VHJhbnNsYXRlfX08L2xhYmVsPlxuICAgIDxpbnB1dCAjeWVhcklucHV0XG4gICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgW2lkXT1cInllYXJJZCgpXCJcbiAgICAgICAgICAgW25hbWVdPVwieWVhcklkKClcIlxuICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgIHBhdHRlcm49XCJbMC05XSpcIlxuICAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICAgW3ZhbHVlXT1cImRpc3BsYXlZZWFyXCJcbiAgICAgICAgICAgKGNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKHllYXJJbnB1dC52YWx1ZSlcIlxuICAgICAgICAgICAoa2V5dXApPVwieWVhckNoYW5nZSh5ZWFySW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGZvY3VzKT1cImlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogaXNJbnZhbGlkfVwiPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmb3JtLWdyb3VwLWhvdXJcIiAqbmdJZj1cImlzRGF0ZVRpbWVcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgW2Zvcl09XCJob3VySWQoKVwiPnt7J0hvdXInIHwgcnB4VHJhbnNsYXRlfX08L2xhYmVsPlxuICAgIDxpbnB1dCAjaG91cklucHV0XG4gICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgW2lkXT1cImhvdXJJZCgpXCJcbiAgICAgICAgICAgW25hbWVdPVwiaG91cklkKClcIlxuICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgW3ZhbHVlXT1cImRpc3BsYXlIb3VyXCJcbiAgICAgICAgICAgKGlucHV0KT1cImhvdXJDaGFuZ2UoaG91cklucHV0LnZhbHVlKVwiXG4gICAgICAgICAgIChrZXl1cCk9XCJob3VyQ2hhbmdlKGhvdXJJbnB1dC52YWx1ZSlcIlxuICAgICAgICAgICAoZm9jdXMpPVwiaW5wdXRGb2N1cygpXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieydnb3Z1ay1pbnB1dC0tZXJyb3InOiBpc0ludmFsaWR9XCI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtbWludXRlXCIgKm5nSWY9XCJpc0RhdGVUaW1lXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFtmb3JdPVwibWludXRlSWQoKVwiPnt7J01pbnV0ZScgfCBycHhUcmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgPGlucHV0ICNtaW51dGVJbnB1dFxuICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgIFtpZF09XCJtaW51dGVJZCgpXCJcbiAgICAgICAgICAgW25hbWVdPVwibWludXRlSWQoKVwiXG4gICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICBbdmFsdWVdPVwiZGlzcGxheU1pbnV0ZVwiXG4gICAgICAgICAgIChpbnB1dCk9XCJtaW51dGVDaGFuZ2UobWludXRlSW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGtleXVwKT1cIm1pbnV0ZUNoYW5nZShtaW51dGVJbnB1dC52YWx1ZSlcIlxuICAgICAgICAgICAoZm9jdXMpPVwiaW5wdXRGb2N1cygpXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieydnb3Z1ay1pbnB1dC0tZXJyb3InOiBpc0ludmFsaWR9XCI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtc2Vjb25kXCIgKm5nSWY9XCJpc0RhdGVUaW1lXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFtmb3JdPVwic2Vjb25kSWQoKVwiPnt7J1NlY29uZCcgfCBycHhUcmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgPGlucHV0ICNzZWNvbmRJbnB1dFxuICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgIFtpZF09XCJzZWNvbmRJZCgpXCJcbiAgICAgICAgICAgW25hbWVdPVwic2Vjb25kSWQoKVwiXG4gICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICBbdmFsdWVdPVwiZGlzcGxheVNlY29uZFwiXG4gICAgICAgICAgIChpbnB1dCk9XCJzZWNvbmRDaGFuZ2Uoc2Vjb25kSW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGtleXVwKT1cInNlY29uZENoYW5nZShzZWNvbmRJbnB1dC52YWx1ZSlcIlxuICAgICAgICAgICAoZm9jdXMpPVwiaW5wdXRGb2N1cygpXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieydnb3Z1ay1pbnB1dC0tZXJyb3InOiBpc0ludmFsaWR9XCI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|