@sbb-esta/lyne-elements 1.14.1 → 1.15.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.
- package/autocomplete/autocomplete.d.ts +1 -1
- package/autocomplete/autocomplete.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +1 -1
- package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid.js +6 -6
- package/autocomplete.js +20 -19
- package/calendar/calendar.d.ts +1 -1
- package/calendar/calendar.d.ts.map +1 -1
- package/calendar.js +25 -27
- package/checkbox/checkbox-panel/checkbox-panel.d.ts +1 -1
- package/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
- package/checkbox/checkbox-panel.js +5 -5
- package/checkbox/common.js +1 -1
- package/clock/clock.d.ts +1 -1
- package/clock/clock.d.ts.map +1 -1
- package/clock.js +2 -2
- package/container/sticky-bar/sticky-bar.d.ts +29 -2
- package/container/sticky-bar/sticky-bar.d.ts.map +1 -1
- package/container/sticky-bar.js +69 -31
- package/core/controllers/media-matchers-controller.d.ts +32 -0
- package/core/controllers/media-matchers-controller.d.ts.map +1 -0
- package/core/controllers.d.ts +1 -0
- package/core/controllers.d.ts.map +1 -1
- package/core/controllers.js +75 -33
- package/core/dom/breakpoint.d.ts +2 -1
- package/core/dom/breakpoint.d.ts.map +1 -1
- package/core/dom.js +7 -7
- package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
- package/core/mixins.js +8 -1
- package/core/styles/core/mediaqueries.scss +1 -2
- package/core/styles/mixins/buttons.scss +5 -5
- package/core/testing/event-spy.d.ts +6 -4
- package/core/testing/event-spy.d.ts.map +1 -1
- package/core/testing.js +82 -55
- package/custom-elements.json +609 -62
- package/datepicker/datepicker/datepicker.d.ts.map +1 -1
- package/development/autocomplete/autocomplete.d.ts +1 -1
- package/development/autocomplete/autocomplete.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +1 -1
- package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid.js +4 -3
- package/development/autocomplete.js +4 -3
- package/development/calendar/calendar.d.ts +1 -1
- package/development/calendar/calendar.d.ts.map +1 -1
- package/development/calendar.js +8 -11
- package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +1 -1
- package/development/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
- package/development/checkbox/checkbox-panel.js +2 -2
- package/development/checkbox/common.js +2 -2
- package/development/clock/clock.d.ts +1 -1
- package/development/clock/clock.d.ts.map +1 -1
- package/development/clock.js +3 -3
- package/development/container/sticky-bar/sticky-bar.d.ts +29 -2
- package/development/container/sticky-bar/sticky-bar.d.ts.map +1 -1
- package/development/container/sticky-bar.js +149 -36
- package/development/core/controllers/media-matchers-controller.d.ts +32 -0
- package/development/core/controllers/media-matchers-controller.d.ts.map +1 -0
- package/development/core/controllers.d.ts +1 -0
- package/development/core/controllers.d.ts.map +1 -1
- package/development/core/controllers.js +65 -1
- package/development/core/dom/breakpoint.d.ts +2 -1
- package/development/core/dom/breakpoint.d.ts.map +1 -1
- package/development/core/dom.js +2 -2
- package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
- package/development/core/mixins.js +9 -2
- package/development/core/testing/event-spy.d.ts +6 -4
- package/development/core/testing/event-spy.d.ts.map +1 -1
- package/development/core/testing.js +35 -1
- package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
- package/development/datepicker/datepicker.js +1 -1
- package/development/dialog/dialog.js +2 -2
- package/development/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +2 -0
- package/development/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts.map +1 -1
- package/development/expansion-panel/expansion-panel-header.js +7 -3
- package/development/file-selector/file-selector.d.ts +5 -0
- package/development/file-selector/file-selector.d.ts.map +1 -1
- package/development/file-selector.js +8 -1
- package/development/flip-card/flip-card/flip-card.d.ts +4 -0
- package/development/flip-card/flip-card/flip-card.d.ts.map +1 -1
- package/development/flip-card/flip-card-details.js +4 -6
- package/development/flip-card/flip-card-summary/flip-card-summary.d.ts +1 -1
- package/development/flip-card/flip-card-summary/flip-card-summary.d.ts.map +1 -1
- package/development/flip-card/flip-card-summary.js +9 -10
- package/development/flip-card/flip-card.js +26 -2
- package/development/form-field/form-field.js +5 -3
- package/development/icon/icon.d.ts +1 -1
- package/development/icon.js +1 -1
- package/development/image/image.d.ts.map +1 -1
- package/development/image.js +3 -19
- package/development/map-container.js +3 -2
- package/development/menu/menu/menu.d.ts +1 -0
- package/development/menu/menu/menu.d.ts.map +1 -1
- package/development/menu/menu.js +15 -11
- package/development/navigation/navigation-section.js +4 -14
- package/development/navigation/navigation.js +2 -7
- package/development/notification.js +3 -2
- package/development/paginator/paginator/paginator.d.ts +1 -5
- package/development/paginator/paginator/paginator.d.ts.map +1 -1
- package/development/paginator/paginator.js +19 -27
- package/development/popover/popover/popover.d.ts.map +1 -1
- package/development/popover/popover.js +9 -16
- package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +1 -1
- package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
- package/development/radio-button/radio-button-panel.js +2 -2
- package/development/sbb-tokens-BdGhUJjM.js +33 -0
- package/development/select/select.d.ts +6 -5
- package/development/select/select.d.ts.map +1 -1
- package/development/select.js +23 -14
- package/development/slider/slider.d.ts +5 -0
- package/development/slider/slider.d.ts.map +1 -1
- package/development/slider.js +8 -1
- package/development/table/table-wrapper/table-wrapper.d.ts +1 -1
- package/development/table/table-wrapper/table-wrapper.d.ts.map +1 -1
- package/development/table/table-wrapper.js +1 -1
- package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +2 -1
- package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts.map +1 -1
- package/development/timetable-occupancy-icon.js +11 -9
- package/development/toggle-check/toggle-check.d.ts +1 -1
- package/development/toggle-check/toggle-check.d.ts.map +1 -1
- package/development/toggle-check.js +2 -2
- package/dialog/dialog.js +1 -1
- package/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +2 -0
- package/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts.map +1 -1
- package/expansion-panel/expansion-panel-header.js +25 -23
- package/file-selector/file-selector.d.ts +5 -0
- package/file-selector/file-selector.d.ts.map +1 -1
- package/file-selector.js +7 -0
- package/flip-card/flip-card/flip-card.d.ts +4 -0
- package/flip-card/flip-card/flip-card.d.ts.map +1 -1
- package/flip-card/flip-card-details.js +6 -6
- package/flip-card/flip-card-summary/flip-card-summary.d.ts +1 -1
- package/flip-card/flip-card-summary/flip-card-summary.d.ts.map +1 -1
- package/flip-card/flip-card-summary.js +8 -8
- package/flip-card/flip-card.js +56 -42
- package/icon/icon.d.ts +1 -1
- package/image/image.d.ts.map +1 -1
- package/image.js +46 -45
- package/map-container.js +7 -7
- package/menu/menu/menu.d.ts +1 -0
- package/menu/menu/menu.d.ts.map +1 -1
- package/menu/menu.js +45 -41
- package/navigation/navigation-section.js +7 -7
- package/navigation/navigation.js +8 -8
- package/package.json +1 -1
- package/paginator/paginator/paginator.d.ts +1 -5
- package/paginator/paginator/paginator.d.ts.map +1 -1
- package/paginator/paginator.js +50 -52
- package/popover/popover/popover.d.ts.map +1 -1
- package/popover/popover.js +42 -46
- package/radio-button/radio-button-panel/radio-button-panel.d.ts +1 -1
- package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
- package/radio-button/radio-button-panel.js +7 -7
- package/sbb-tokens-Dx20OtVg.js +18 -0
- package/select/select.d.ts +6 -5
- package/select/select.d.ts.map +1 -1
- package/select.js +55 -53
- package/slider/slider.d.ts +5 -0
- package/slider/slider.d.ts.map +1 -1
- package/slider.js +12 -5
- package/table/table-wrapper/table-wrapper.d.ts +1 -1
- package/table/table-wrapper/table-wrapper.d.ts.map +1 -1
- package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +2 -1
- package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts.map +1 -1
- package/timetable-occupancy-icon.js +45 -44
- package/toggle-check/toggle-check.d.ts +1 -1
- package/toggle-check/toggle-check.d.ts.map +1 -1
- package/toggle-check.js +1 -1
|
@@ -272,7 +272,7 @@ const SbbRequiredMixin = (superClass) => {
|
|
|
272
272
|
get required() {
|
|
273
273
|
return this._required || this.isRequiredExternally();
|
|
274
274
|
}
|
|
275
|
-
|
|
275
|
+
willUpdate(changedProperties) {
|
|
276
276
|
super.willUpdate(changedProperties);
|
|
277
277
|
if (changedProperties.has("required")) {
|
|
278
278
|
this.internals.ariaRequired = `${this.required}`;
|
|
@@ -324,6 +324,13 @@ const SbbFormAssociatedCheckboxMixin = (superClass) => {
|
|
|
324
324
|
get checked() {
|
|
325
325
|
return this._checked;
|
|
326
326
|
}
|
|
327
|
+
/**
|
|
328
|
+
* Form type of element.
|
|
329
|
+
* @default 'checkbox'
|
|
330
|
+
*/
|
|
331
|
+
get type() {
|
|
332
|
+
return "checkbox";
|
|
333
|
+
}
|
|
327
334
|
constructor() {
|
|
328
335
|
super();
|
|
329
336
|
this._attributeMutationBlocked = (__runInitializers(this, _instanceExtraInitializers), false);
|
|
@@ -835,4 +842,4 @@ export {
|
|
|
835
842
|
SbbUpdateSchedulerMixin,
|
|
836
843
|
panelCommon as panelCommonStyle
|
|
837
844
|
};
|
|
838
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW5zLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvZGlzYWJsZWQtbWl4aW4udHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvZm9ybS1hc3NvY2lhdGVkLW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL3JlcXVpcmVkLW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL2Zvcm0tYXNzb2NpYXRlZC1jaGVja2JveC1taXhpbi50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL21peGlucy9oeWRyYXRpb24tbWl4aW4udHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvbmFtZWQtc2xvdC1saXN0LW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL25lZ2F0aXZlLW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL3BhbmVsLW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL3VwZGF0ZS1zY2hlZHVsZXItbWl4aW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50LCBQcm9wZXJ0eVZhbHVlcyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZm9yY2VUeXBlLCBnZXRPdmVycmlkZSB9IGZyb20gJy4uL2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yLmpzJztcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiRGlzYWJsZWRNaXhpblR5cGUge1xuICBwdWJsaWMgYWNjZXNzb3IgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBpc0Rpc2FibGVkRXh0ZXJuYWxseSgpOiBib29sZWFuO1xufVxuXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW5UeXBlIHtcbiAgcHVibGljIGFjY2Vzc29yIGRpc2FibGVkSW50ZXJhY3RpdmU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogRW5oYW5jZSB5b3VyIGNvbXBvbmVudCB3aXRoIGEgZGlzYWJsZWQgcHJvcGVydHkuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJEaXNhYmxlZE1peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRGlzYWJsZWRNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkRpc2FibGVkRWxlbWVudCBleHRlbmRzIHN1cGVyQ2xhc3MgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkRpc2FibGVkTWl4aW5UeXBlPiB7XG4gICAgLyoqIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC4gKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gICAgQGdldE92ZXJyaWRlKChlLCB2KSA9PiB2IHx8IGUuaXNEaXNhYmxlZEV4dGVybmFsbHkoKSlcbiAgICBwdWJsaWMgYWNjZXNzb3IgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdpbGwgYmUgdXNlZCBhcyAnb3InIGNoZWNrIHRvIHRoZSBjdXJyZW50IGRpc2FibGVkIHN0YXRlLlxuICAgICAqIENhbiBlLmcuIGJlIHVzZWQgdG8gcmVhZCBkaXNhYmxlZCBzdGF0ZSBvZiBhIGdyb3VwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpc0Rpc2FibGVkRXh0ZXJuYWxseSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gU2JiRGlzYWJsZWRFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJEaXNhYmxlZE1peGluVHlwZT4gJiBUO1xufTtcblxuLyoqXG4gKiBFbmhhbmNlIHlvdXIgY29tcG9uZW50IHdpdGggYSBkaXNhYmxlZCBpbnRlcmFjdGl2ZSBwcm9wZXJ0eS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpbiA9IDxcbiAgVCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudCAmIFNiYkRpc2FibGVkTWl4aW5UeXBlPixcbj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVFbGVtZW50XG4gICAgZXh0ZW5kcyBzdXBlckNsYXNzXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpblR5cGU+XG4gIHtcbiAgICAvKiogV2hldGhlciBkaXNhYmxlZCBidXR0b25zIHNob3VsZCBiZSBpbnRlcmFjdGl2ZS4gKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdkaXNhYmxlZC1pbnRlcmFjdGl2ZScsIHR5cGU6IEJvb2xlYW4gfSlcbiAgICBwdWJsaWMgYWNjZXNzb3IgZGlzYWJsZWRJbnRlcmFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW5UeXBlPiAmXG4gICAgVDtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJEaXNhYmxlZFRhYkluZGV4QWN0aW9uTWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJEaXNhYmxlZE1peGluVHlwZSAmIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkRpc2FibGVkVGFiSW5kZXhBY3Rpb25cbiAgICBleHRlbmRzIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpbihTYmJEaXNhYmxlZE1peGluKHN1cGVyQ2xhc3MpKVxuICAgIGltcGxlbWVudHMgU2JiRGlzYWJsZWRNaXhpblR5cGUsIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpblR5cGVcbiAge1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpICYmICFjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Rpc2FibGVkSW50ZXJhY3RpdmUnKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkSW50ZXJhY3RpdmUpIHtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gU2JiRGlzYWJsZWRUYWJJbmRleEFjdGlvbiBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFxuICAgIFNiYkRpc2FibGVkTWl4aW5UeXBlICYgU2JiRGlzYWJsZWRJbnRlcmFjdGl2ZU1peGluVHlwZVxuICA+ICZcbiAgICBUO1xufTtcblxuLyoqXG4gKiBFeHRlbmRzIGBTYmJEaXNhYmxlZE1peGluYCB3aXRoIHRoZSBgYXJpYS1kaXNhYmxlZGAgYXR0cmlidXRlLlxuICogRm9yIGExMXkgcHVycG9zZXMsIGtlZXBzIHRoZSBlbGVtZW50IGZvY3VzYWJsZSBldmVuIHdoZW4gZGlzYWJsZWQuXG4gKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgd2l0aCBuZXh0IG1ham9yIHZlcnNpb25cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYkZvY3VzYWJsZURpc2FibGVkQWN0aW9uTWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJEaXNhYmxlZE1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiRm9jdXNhYmxlRGlzYWJsZWRBY3Rpb25cbiAgICBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oc3VwZXJDbGFzcylcbiAgICBpbXBsZW1lbnRzIFNiYkRpc2FibGVkTWl4aW5UeXBlXG4gIHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGlzYWJsZWQnKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJywgJ3RydWUnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBTYmJGb2N1c2FibGVEaXNhYmxlZEFjdGlvbiBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkRpc2FibGVkTWl4aW5UeXBlPiAmIFQ7XG59O1xuIiwiaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5cbmV4cG9ydCBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW5UeXBlPFYgPSBzdHJpbmc+IHtcbiAgcHVibGljIGdldCBmb3JtKCk6IEhUTUxGb3JtRWxlbWVudCB8IG51bGw7XG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmc7XG4gIHB1YmxpYyBzZXQgbmFtZSh2YWx1ZTogc3RyaW5nKTtcbiAgcHVibGljIGdldCB0eXBlKCk6IHN0cmluZztcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBWIHwgbnVsbDtcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogViB8IG51bGwpO1xuXG4gIHB1YmxpYyBnZXQgdmFsaWRpdHkoKTogVmFsaWRpdHlTdGF0ZTtcbiAgcHVibGljIGdldCB2YWxpZGF0aW9uTWVzc2FnZSgpOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgd2lsbFZhbGlkYXRlKCk6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIGZvcm1EaXNhYmxlZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGludGVybmFsczogRWxlbWVudEludGVybmFscztcblxuICBwdWJsaWMgY2hlY2tWYWxpZGl0eSgpOiBib29sZWFuO1xuICBwdWJsaWMgcmVwb3J0VmFsaWRpdHkoKTogYm9vbGVhbjtcblxuICBwdWJsaWMgZm9ybUFzc29jaWF0ZWRDYWxsYmFjaz8oZm9ybTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbCk6IHZvaWQ7XG4gIHB1YmxpYyBmb3JtRGlzYWJsZWRDYWxsYmFjayhkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQ7XG4gIHB1YmxpYyBhYnN0cmFjdCBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkO1xuICBwdWJsaWMgYWJzdHJhY3QgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgIHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCxcbiAgICByZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICApOiB2b2lkO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCB1cGRhdGVGb3JtVmFsdWUoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgRm9ybUFzc29jaWF0ZWRNaXhpbiBlbmFibGVzIG5hdGl2ZSBmb3JtIHN1cHBvcnQgZm9yIGN1c3RvbSBjb250cm9scy5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4sIFYgPSBzdHJpbmc+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJGb3JtQXNzb2NpYXRlZE1peGluVHlwZTxWPj4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiRm9ybUFzc29jaWF0ZWRFbGVtZW50XG4gICAgZXh0ZW5kcyBzdXBlckNsYXNzXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW5UeXBlPFY+PlxuICB7XG4gICAgcHVibGljIHN0YXRpYyBmb3JtQXNzb2NpYXRlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBmb3JtIG93bmVyIG9mIHRoZSBpbnRlcm5hbHMgb2YgdGhlIHRhcmdldCBlbGVtZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZm9ybSgpOiBIVE1MRm9ybUVsZW1lbnQgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFscy5mb3JtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGZvcm0gZWxlbWVudC4gV2lsbCBiZSByZWFkIGZyb20gbmFtZSBhdHRyaWJ1dGUuXG4gICAgICpcbiAgICAgKiBAZGVzY3JpcHRpb24gRGV2ZWxvcGVyIG5vdGU6IEluIHRoaXMgY2FzZSB1cGRhdGluZyB0aGUgYXR0cmlidXRlIG11c3QgYmUgc3luY2hyb25vdXMuXG4gICAgICogRHVlIHRvIHRoaXMgaXQgaXMgaW1wbGVtZW50ZWQgYXMgYSBnZXR0ZXIvc2V0dGVyIGFuZCB0aGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKCkgaGFuZGxlcyB0aGUgZGlmZiBjaGVjay5cbiAgICAgKi9cbiAgICBAcHJvcGVydHkoKVxuICAgIHB1YmxpYyBzZXQgbmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCduYW1lJywgYCR7bmFtZX1gKTtcblxuICAgICAgLy8gRm9yIGBGb3JtRGF0YWAgdmFsdWVzLCB3ZSBoYXZlIHRvIG1hbnVhbGx5IHVwZGF0ZSB0aGUgZmllbGROYW1lIGtleVxuICAgICAgdGhpcy51cGRhdGVGb3JtVmFsdWUoKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoJ25hbWUnKSA/PyAnJztcbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgcHVibGljIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5sb2NhbE5hbWU7XG4gICAgfVxuXG4gICAgLyoqIFZhbHVlIG9mIHRoZSBmb3JtIGVsZW1lbnQuICovXG4gICAgQHByb3BlcnR5KClcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBWIHwgbnVsbCkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlKCk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogViB8IG51bGwge1xuICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cbiAgICBwcml2YXRlIF92YWx1ZTogViB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgVmFsaWRpdHlTdGF0ZSBvYmplY3QgZm9yIGludGVybmFscyB0YXJnZXQgZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsaWRpdHkoKTogVmFsaWRpdHlTdGF0ZSB7XG4gICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbHMudmFsaWRpdHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZXJyb3IgbWVzc2FnZSB0aGF0IHdvdWxkIGJlIHNob3duIHRvIHRoZSB1c2VyXG4gICAgICogaWYgaW50ZXJuYWxzIHRhcmdldCBlbGVtZW50IHdhcyB0byBiZSBjaGVja2VkIGZvciB2YWxpZGl0eS5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsaWRhdGlvbk1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFscy52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgaW50ZXJuYWxzIHRhcmdldCBlbGVtZW50IHdpbGwgYmUgdmFsaWRhdGVkXG4gICAgICogd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQ7IGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgd2lsbFZhbGlkYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxzLndpbGxWYWxpZGF0ZTtcbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGludGVybmFsczogRWxlbWVudEludGVybmFscyA9IHRoaXMuYXR0YWNoSW50ZXJuYWxzKCk7XG5cbiAgICAvKiogV2hlbmV2ZXIgYSBzdXJyb3VuZGluZyBmb3JtIG9yIGZpZWxkc2V0IGlzIGNoYW5naW5nIGl0cyBkaXNhYmxlZCBzdGF0ZS4gKi9cbiAgICBAc3RhdGUoKSBwcm90ZWN0ZWQgYWNjZXNzb3IgZm9ybURpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKFxuICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgb2xkOiBzdHJpbmcgfCBudWxsLFxuICAgICAgdmFsdWU6IHN0cmluZyB8IG51bGwsXG4gICAgKTogdm9pZCB7XG4gICAgICBpZiAobmFtZSAhPT0gJ25hbWUnIHx8IG9sZCAhPT0gdmFsdWUpIHtcbiAgICAgICAgc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKG5hbWUsIG9sZCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiBpbnRlcm5hbHMgdGFyZ2V0IGVsZW1lbnQgaGFzIG5vIHZhbGlkaXR5IHByb2JsZW1zOyBmYWxzZSBvdGhlcndpc2UuXG4gICAgICogRmlyZXMgYW4gaW52YWxpZCBldmVudCBhdCB0aGUgZWxlbWVudCBpbiB0aGUgbGF0dGVyIGNhc2UuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgY2hlY2tWYWxpZGl0eSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFscy5jaGVja1ZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIGludGVybmFscyB0YXJnZXQgZWxlbWVudCBoYXMgbm8gdmFsaWRpdHkgcHJvYmxlbXM7IG90aGVyd2lzZSxcbiAgICAgKiByZXR1cm5zIGZhbHNlLCBmaXJlcyBhbiBpbnZhbGlkIGV2ZW50IGF0IHRoZSBlbGVtZW50LFxuICAgICAqIGFuZCAoaWYgdGhlIGV2ZW50IGlzbid0IGNhbmNlbGVkKSByZXBvcnRzIHRoZSBwcm9ibGVtIHRvIHRoZSB1c2VyLlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIHJlcG9ydFZhbGlkaXR5KCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxzLnJlcG9ydFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgZm9ybSBlbGVtZW50IGNoYW5nZXMuXG4gICAgICogRWxlbWVudEludGVybmFscy5mb3JtIHJldHVybnMgdGhlIGFzc29jaWF0ZWQgZnJvbSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGZvcm1Bc3NvY2lhdGVkQ2FsbGJhY2s/KGZvcm06IEhUTUxGb3JtRWxlbWVudCB8IG51bGwpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIGEgc3Vycm91bmRpbmcgZm9ybSAvIGZpZWxkc2V0IGNoYW5nZXMgZGlzYWJsZWQgc3RhdGUuXG4gICAgICogQHBhcmFtIGRpc2FibGVkXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZm9ybURpc2FibGVkQ2FsbGJhY2soZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgIC8vIFRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIGlmIHRoZSBkaXNhYmxlZCBwcm9wZXJ0eSBjaGFuZ2VzIG9yIHRoZSBkaXNhYmxlZCBhdHRyaWJ1dGUgb2YgYSBmaWVsZHNldCBvciBmb3JtIGNoYW5nZXMuXG4gICAgICAvLyBXZSBuZWVkIHRvIHBvc3Rwb25lIHRoZSBhc3NpZ25tZW50LCBvdGhlcndpc2UgaXQgaW50ZXJmZXJlcyB3aXRoIGRpc2FibGVkIHN0YXR1cyBzZXR0aW5nXG4gICAgICAvLyBhbmQgbGVhZHMgdG8gYSB3cm9uZyBzdGF0ZSAoZS5nLiBlbWJlZGRlZCBzYmItdmlzdWFsLWNoZWNrYm94KS5cbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1EaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBmb3JtIGlzIGJlaW5nIHJlc2V0LlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiAgQ2FsbGVkIHdoZW4gdGhlIGJyb3dzZXIgaXMgdHJ5aW5nIHRvIHJlc3RvcmUgZWxlbWVudOKAmXMgc3RhdGUgdG8gc3RhdGUgaW4gd2hpY2ggY2FzZVxuICAgICAqICByZWFzb24gaXMg4oCccmVzdG9yZeKAnSwgb3Igd2hlbiB0aGUgYnJvd3NlciBpcyB0cnlpbmcgdG8gZnVsZmlsbCBhdXRvZmlsbCBvbiBiZWhhbGYgb2ZcbiAgICAgKiAgdXNlciBpbiB3aGljaCBjYXNlIHJlYXNvbiBpcyDigJxhdXRvY29tcGxldGXigJ0uXG4gICAgICogIEluIHRoZSBjYXNlIG9mIOKAnHJlc3RvcmXigJ0sIHN0YXRlIGlzIGEgc3RyaW5nLCBGaWxlLCBvciBGb3JtRGF0YSBvYmplY3RcbiAgICAgKiAgcHJldmlvdXNseSBzZXQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBzZXRGb3JtVmFsdWUuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgICAgc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLFxuICAgICAgcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbixcbiAgICApOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogU2hvdWxkIGJlIGNhbGxlZCB3aGVuIGZvcm0gdmFsdWUgaXMgY2hhbmdlZC5cbiAgICAgKiBBZGFwdHMgYW5kIHNldHMgdGhlIGZvcm1WYWx1ZSBpbiB0aGUgc3VwcG9ydGVkIGZvcm1hdCAoc3RyaW5nIHwgRm9ybURhdGEgfCBGaWxlIHwgbnVsbClcbiAgICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudEludGVybmFscy9zZXRGb3JtVmFsdWVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgdXBkYXRlRm9ybVZhbHVlKCk6IHZvaWQ7XG4gIH1cbiAgcmV0dXJuIFNiYkZvcm1Bc3NvY2lhdGVkRWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRm9ybUFzc29jaWF0ZWRNaXhpblR5cGU8Vj4+ICZcbiAgICBUO1xufTtcblxuLyoqXG4gKiBBIHZhbHVlIHRvIGJlIHJlc3RvcmVkIGZvciBhIGNvbXBvbmVudCdzIGZvcm0gdmFsdWUuIElmIGEgY29tcG9uZW50J3MgZm9ybVxuICogc3RhdGUgaXMgYSBgRm9ybURhdGFgIG9iamVjdCwgaXRzIGVudHJ5IGxpc3Qgb2YgbmFtZSBhbmQgdmFsdWVzIHdpbGwgYmVcbiAqIHByb3ZpZGVkLlxuICovXG5leHBvcnQgdHlwZSBGb3JtUmVzdG9yZVN0YXRlID0gRmlsZSB8IHN0cmluZyB8IFtzdHJpbmcsIEZvcm1EYXRhRW50cnlWYWx1ZV1bXTtcblxuLyoqXG4gKiBUaGUgcmVhc29uIGEgZm9ybSBjb21wb25lbnQgaXMgYmVpbmcgcmVzdG9yZWQgZm9yLCBlaXRoZXIgYCdyZXN0b3JlJ2AgZm9yXG4gKiBicm93c2VyIHJlc3RvcmF0aW9uIG9yIGAnYXV0b2NvbXBsZXRlJ2AgZm9yIHJlc3RvcmluZyB1c2VyIHZhbHVlcy5cbiAqL1xuZXhwb3J0IHR5cGUgRm9ybVJlc3RvcmVSZWFzb24gPSAncmVzdG9yZScgfCAnYXV0b2NvbXBsZXRlJztcbiIsImltcG9ydCB0eXBlIHsgTGl0RWxlbWVudCwgUHJvcGVydHlWYWx1ZXMgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4vY29uc3RydWN0b3IuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJGb3JtQXNzb2NpYXRlZE1peGluVHlwZSB9IGZyb20gJy4vZm9ybS1hc3NvY2lhdGVkLW1peGluLmpzJztcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiUmVxdWlyZWRNaXhpblR5cGUge1xuICBwdWJsaWMgYWNjZXNzb3IgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBpc1JlcXVpcmVkRXh0ZXJuYWxseSgpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVuaGFuY2UgeW91ciBjb21wb25lbnQgd2l0aCBhIHJlcXVpcmVkIHByb3BlcnR5LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiUmVxdWlyZWRNaXhpbiA9IDxcbiAgVCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudCAmIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW5UeXBlPFY+PixcbiAgVixcbj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYlJlcXVpcmVkTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJSZXF1aXJlZEVsZW1lbnQgZXh0ZW5kcyBzdXBlckNsYXNzIGltcGxlbWVudHMgUGFydGlhbDxTYmJSZXF1aXJlZE1peGluVHlwZT4ge1xuICAgIC8qKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgcmVxdWlyZWQuICovXG4gICAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICAgIHB1YmxpYyBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgIC8vIFRvIHByb3ZpZGUgdGhlIHNhbWUgYmVoYXZpb3IgYXMgdGhlIG5hdGl2ZSByZXF1aXJlZCBzdGF0ZSxcbiAgICAgIC8vIGFueSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gYSBib29sZWFuLlxuICAgICAgdGhpcy5fcmVxdWlyZWQgPSBCb29sZWFuKHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZCB8fCB0aGlzLmlzUmVxdWlyZWRFeHRlcm5hbGx5KCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgIC8vIEZpcmVmb3ggbmVlZHMgZXhwbGljaXRseSBzZXQgYXJpYS1yZXF1aXJlZCB2YWx1ZS5cbiAgICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYVJlcXVpcmVkID0gYCR7dGhpcy5yZXF1aXJlZH1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdpbGwgYmUgdXNlZCBhcyAnb3InIGNoZWNrIHRvIHRoZSBjdXJyZW50IHJlcXVpcmVkIHN0YXRlLlxuICAgICAqIENhbiBlLmcuIGJlIHVzZWQgdG8gcmVhZCByZXF1aXJlZCBzdGF0ZSBvZiBhIGdyb3VwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpc1JlcXVpcmVkRXh0ZXJuYWxseSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gU2JiUmVxdWlyZWRFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJSZXF1aXJlZE1peGluVHlwZT4gJiBUO1xufTtcbiIsImltcG9ydCB7IGRlZmF1bHRDb252ZXJ0ZXIsIHR5cGUgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHByZXZlbnRTY3JvbGxPblNwYWNlYmFyUHJlc3MgfSBmcm9tICcuLi9ldmVudGluZy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yLmpzJztcbmltcG9ydCB7IFNiYkRpc2FibGVkTWl4aW4sIHR5cGUgU2JiRGlzYWJsZWRNaXhpblR5cGUgfSBmcm9tICcuL2Rpc2FibGVkLW1peGluLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgRm9ybVJlc3RvcmVSZWFzb24sXG4gIHR5cGUgRm9ybVJlc3RvcmVTdGF0ZSxcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbixcbiAgdHlwZSBTYmJGb3JtQXNzb2NpYXRlZE1peGluVHlwZSxcbn0gZnJvbSAnLi9mb3JtLWFzc29jaWF0ZWQtbWl4aW4uanMnO1xuaW1wb3J0IHsgU2JiUmVxdWlyZWRNaXhpbiwgdHlwZSBTYmJSZXF1aXJlZE1peGluVHlwZSB9IGZyb20gJy4vcmVxdWlyZWQtbWl4aW4uanMnO1xuXG50eXBlIENoZWNrZWRTZXR0ZXJWYWx1ZSA9IHsgdmFsdWU6IGJvb2xlYW47IGF0dHJpYnV0ZTogYm9vbGVhbiB9O1xuXG5leHBvcnQgZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBTYmJGb3JtQXNzb2NpYXRlZENoZWNrYm94TWl4aW5UeXBlXG4gIGV4dGVuZHMgU2JiRm9ybUFzc29jaWF0ZWRNaXhpblR5cGVcbiAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkRpc2FibGVkTWl4aW5UeXBlPiwgUGFydGlhbDxTYmJSZXF1aXJlZE1peGluVHlwZT5cbntcbiAgcHVibGljIGdldCBjaGVja2VkKCk6IGJvb2xlYW47XG4gIHB1YmxpYyBzZXQgY2hlY2tlZCh2YWx1ZTogYm9vbGVhbik7XG5cbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbik7XG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbjtcblxuICBwdWJsaWMgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKTtcbiAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuO1xuXG4gIHB1YmxpYyBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkO1xuICBwdWJsaWMgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCwgcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbik6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWRFeHRlcm5hbGx5KCk6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBpc1JlcXVpcmVkRXh0ZXJuYWxseSgpOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgd2l0aFVzZXJJbnRlcmFjdGlvbj8oKTogdm9pZDtcbiAgcHJvdGVjdGVkIHVwZGF0ZUZvcm1WYWx1ZSgpOiB2b2lkO1xufVxuXG4vKipcbiAqIFRoZSBGb3JtQXNzb2NpYXRlZENoZWNrYm94TWl4aW4gZW5hYmxlcyBuYXRpdmUgZm9ybSBzdXBwb3J0IGZvciBjaGVja2JveCBjb250cm9scy5cbiAqXG4gKiBJbmhlcml0ZWQgY2xhc3NlcyBNVVNUIGltcGxlbWVudCB0aGUgYXJpYUNoZWNrZWQgc3RhdGUgKEVsZW1lbnRJbnRlcm5hbHMpIHRoZW1zZWx2ZXMuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJGb3JtQXNzb2NpYXRlZENoZWNrYm94TWl4aW4gPSA8VCBleHRlbmRzIENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IENvbnN0cnVjdG9yPFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hNaXhpblR5cGU+ICYgVCA9PiB7XG4gIEBob3N0QXR0cmlidXRlcyh7XG4gICAgdGFiaW5kZXg6ICcwJyxcbiAgfSlcbiAgYWJzdHJhY3QgY2xhc3MgU2JiRm9ybUFzc29jaWF0ZWRDaGVja2JveEVsZW1lbnRcbiAgICBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oU2JiUmVxdWlyZWRNaXhpbihTYmJGb3JtQXNzb2NpYXRlZE1peGluKHN1cGVyQ2xhc3MpKSlcbiAgICBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiRm9ybUFzc29jaWF0ZWRDaGVja2JveE1peGluVHlwZT5cbiAge1xuICAgIHByaXZhdGUgX2F0dHJpYnV0ZU11dGF0aW9uQmxvY2tlZCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGNoZWNrZWQuICovXG4gICAgQHByb3BlcnR5KHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBjb252ZXJ0ZXI6IHtcbiAgICAgICAgLi4uZGVmYXVsdENvbnZlcnRlcixcbiAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluZm9ybWF0aW9uIHRvIHRoZSBzZXR0ZXIgc28gdGhhdCB3ZSBrbm93IGl0IHdhcyBjYWxsZWQgYnkgYXR0cmlidXRlIGNoYW5nZS5cbiAgICAgICAgZnJvbUF0dHJpYnV0ZTogKHZhbHVlOiBzdHJpbmcgfCBudWxsLCB0eXBlPzogdW5rbm93bik6IENoZWNrZWRTZXR0ZXJWYWx1ZSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmYXVsdENvbnZlcnRlci5mcm9tQXR0cmlidXRlPy4odmFsdWUsIHR5cGUpO1xuICAgICAgICAgIHJldHVybiB7IHZhbHVlOiByZXN1bHQsIGF0dHJpYnV0ZTogdHJ1ZSB9IGFzIENoZWNrZWRTZXR0ZXJWYWx1ZTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSlcbiAgICBwdWJsaWMgc2V0IGNoZWNrZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZVNldHRlciA9XG4gICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyAodmFsdWUgYXMgdW5rbm93biBhcyBDaGVja2VkU2V0dGVyVmFsdWUpLmF0dHJpYnV0ZSA6IGZhbHNlO1xuICAgICAgaWYgKGF0dHJpYnV0ZVNldHRlcikge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSBhcyB1bmtub3duIGFzIENoZWNrZWRTZXR0ZXJWYWx1ZSkudmFsdWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEFzIHNvb24gYXMgbXV0YXRpb24gd2FzIGRvbmUgbm90IGJ5IHNldHRpbmcgYXR0cmlidXRlLFxuICAgICAgLy8gd2UgbmVlZCB0byBibG9jayBzeW5jaW5nIGF0dHJpYnV0ZS5cbiAgICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQgJiYgIWF0dHJpYnV0ZVNldHRlcikge1xuICAgICAgICB0aGlzLl9hdHRyaWJ1dGVNdXRhdGlvbkJsb2NrZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgdGhpcy5fY2hlY2tlZCA9IEJvb2xlYW4odmFsdWUpO1xuICAgICAgdGhpcy51cGRhdGVGb3JtVmFsdWUoKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBjaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrZWQ7XG4gICAgfVxuICAgIHByaXZhdGUgX2NoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICAgIHN1cGVyKCk7XG4gICAgICAvKiogQGludGVybmFsICovXG4gICAgICB0aGlzLmludGVybmFscy5yb2xlID0gJ2NoZWNrYm94JztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5faGFuZGxlVXNlckludGVyYWN0aW9uKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHByZXZlbnRTY3JvbGxPblNwYWNlYmFyUHJlc3MpO1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuX2hhbmRsZUtleWJvYXJkSW50ZXJhY3Rpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9oYW5kbGVVc2VySW50ZXJhY3Rpb24pO1xuICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgcHJldmVudFNjcm9sbE9uU3BhY2ViYXJQcmVzcyk7XG4gICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5faGFuZGxlS2V5Ym9hcmRJbnRlcmFjdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhcbiAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgIG9sZDogc3RyaW5nIHwgbnVsbCxcbiAgICAgIHZhbHVlOiBzdHJpbmcgfCBudWxsLFxuICAgICk6IHZvaWQge1xuICAgICAgLy8gQXR0cmlidXRlIHNob3VsZCBub3QgYmUgaW50ZXJwcmV0ZWQgYWZ0ZXIgcHJvZ3JhbW1hdGljIG9yIG1hbnVhbCBzdGF0ZSBjaGFuZ2UuXG4gICAgICBpZiAobmFtZSAhPT0gJ2NoZWNrZWQnIHx8ICF0aGlzLl9hdHRyaWJ1dGVNdXRhdGlvbkJsb2NrZWQpIHtcbiAgICAgICAgc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKG5hbWUsIG9sZCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElzIGNhbGxlZCB3aGVuZXZlciB0aGUgZm9ybSBpcyBiZWluZyByZXNldC5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMuaGFzQXR0cmlidXRlKCdjaGVja2VkJyk7XG4gICAgICB0aGlzLl9hdHRyaWJ1dGVNdXRhdGlvbkJsb2NrZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQ2FsbGVkIHdoZW4gdGhlIGJyb3dzZXIgaXMgdHJ5aW5nIHRvIHJlc3RvcmUgZWxlbWVudOKAmXMgc3RhdGUgdG8gc3RhdGUgaW4gd2hpY2ggY2FzZVxuICAgICAqICByZWFzb24gaXMg4oCccmVzdG9yZeKAnSwgb3Igd2hlbiB0aGUgYnJvd3NlciBpcyB0cnlpbmcgdG8gZnVsZmlsbCBhdXRvZmlsbCBvbiBiZWhhbGYgb2ZcbiAgICAgKiAgdXNlciBpbiB3aGljaCBjYXNlIHJlYXNvbiBpcyDigJxhdXRvY29tcGxldGXigJ0uXG4gICAgICogIEluIHRoZSBjYXNlIG9mIOKAnHJlc3RvcmXigJ0sIHN0YXRlIGlzIGEgc3RyaW5nLCBGaWxlLCBvciBGb3JtRGF0YSBvYmplY3RcbiAgICAgKiAgcHJldmlvdXNseSBzZXQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBzZXRGb3JtVmFsdWUuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgICAgc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLFxuICAgICAgX3JlYXNvbjogRm9ybVJlc3RvcmVSZWFzb24sXG4gICAgKTogdm9pZCB7XG4gICAgICBpZiAoc3RhdGUpIHtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gc3RhdGUgPT09ICd0cnVlJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRpdGlvbmFsIGxvZ2ljIHdoaWNoIGlzIGJlaW5nIGV4ZWN1dGVkIHdoZW4gdXNlclxuICAgICAqIGludGVyYWN0aW9uIGhhcHBlbnMgYW5kIHN0YXRlIGlzIG5vdCBkaXNhYmxlZC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgd2l0aFVzZXJJbnRlcmFjdGlvbj8oKTogdm9pZDtcblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVGb3JtVmFsdWUoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5jaGVja2VkKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLnNldEZvcm1WYWx1ZSh0aGlzLnZhbHVlLCBgJHt0aGlzLmNoZWNrZWR9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludGVybmFscy5zZXRGb3JtVmFsdWUobnVsbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0cmlnZ2VyZWQgb24ga2V5Ym9hcmQgdXNlciBpbnRlcmFjdGlvbiB3aXRoIGNoZWNrYm94LiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZUtleWJvYXJkSW50ZXJhY3Rpb24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgICAgICB0aGlzLl9oYW5kbGVVc2VySW50ZXJhY3Rpb24oKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqIE1ldGhvZCB0cmlnZ2VyZWQgb24gdXNlciBpbnRlcmFjdGlvbiB3aXRoIGNoZWNrYm94LiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVVzZXJJbnRlcmFjdGlvbiA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMud2l0aFVzZXJJbnRlcmFjdGlvbj8uKCk7XG4gICAgICB0aGlzLmNoZWNrZWQgPSAhdGhpcy5jaGVja2VkO1xuICAgICAgdGhpcy5fYXR0cmlidXRlTXV0YXRpb25CbG9ja2VkID0gdHJ1ZTtcblxuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2RpZENoYW5nZScsIHsgYnViYmxlczogdHJ1ZSB9KSk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBTYmJGb3JtQXNzb2NpYXRlZENoZWNrYm94RWxlbWVudCBhcyB1bmtub3duIGFzIENvbnN0cnVjdG9yPFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hNaXhpblR5cGU+ICZcbiAgICBUO1xufTtcbiIsImltcG9ydCB0eXBlIHsgTGl0RWxlbWVudCwgUHJvcGVydHlWYWx1ZXMgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yLmpzJztcblxuLy8gRGVmaW5lIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBtaXhpblxuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgU2JiSHlkcmF0aW9uTWl4aW5UeXBlIHtcbiAgLyoqXG4gICAqIFJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZWxlbWVudCBoYXMgY29tcGxldGVkIGh5ZHJhdGlvbi5cbiAgICogVGhlIFByb21pc2UgdmFsdWUgaXMgYSBib29sZWFuIHRoYXQgaXMgYHRydWVgIGlmIHRoZSBlbGVtZW50IHJlcXVpcmVkIGh5ZHJhdGlvblxuICAgKiBhbmQgYGZhbHNlYCBpZiBub3QuXG4gICAqXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIG9mIGEgYm9vbGVhbiB0aGF0IHJlc29sdmVzIHRvIHRydWUgb25jZSB0aGUgaHlkcmF0aW9uIGNvbXBsZXRlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgaHlkcmF0aW9uQ29tcGxldGUoKTogUHJvbWlzZTxib29sZWFuPjtcblxuICAvKiogUmV0dXJucyB3aGV0aGVyIGh5ZHJhdGlvbiBpcyByZXF1aXJlZCBhbmQgbm90IGNvbXBsZXRlZC4gKi9cbiAgcHJvdGVjdGVkIGdldCBoeWRyYXRpb25SZXF1aXJlZCgpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoaXMgbWl4aW4gZXh0ZW5kcyBhIGJhc2UgY2xhc3Mgd2l0aCBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIGlmIGh5ZHJhdGlvbiBpcyBjb21wbGV0ZWQuXG4gKiBJdCBhbHNvIGRlbGF5cyBzbG90Y2hhbmdlIGV2ZW50cyB1bnRpbCBoeWRyYXRpb24gaXMgY29tcGxldGUuXG4gKlxuICogQHBhcmFtIGJhc2UgVGhlIGNsYXNzIHRvIGV4dGVuZC5cbiAqIEByZXR1cm5zIEEgY2xhc3MgZXh0ZW5kZWQgd2l0aCB0aGUgaHlkcmF0aW9uIGNoZWNrIGZ1bmN0aW9uYWxpdHkuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJIeWRyYXRpb25NaXhpbiA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxMaXRFbGVtZW50Pj4oXG4gIGJhc2U6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkh5ZHJhdGlvbk1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiSHlkcmF0aW9uTWl4aW5DbGFzcyBleHRlbmRzIGJhc2UgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkh5ZHJhdGlvbk1peGluVHlwZT4ge1xuICAgIHByaXZhdGUgX2h5ZHJhdGlvblJlcXVpcmVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2h5ZHJhdGlvbkNvbXBsZXRlID0gbmV3IFByb21pc2U8Ym9vbGVhbj4oXG4gICAgICAocmVzb2x2ZSkgPT4gKHRoaXMuX3Jlc29sdmVIeWRyYXRpb24gPSByZXNvbHZlKSxcbiAgICApO1xuICAgIHByaXZhdGUgX3Jlc29sdmVIeWRyYXRpb24hOiAoaHlkcmF0aW9uUmVxdWlyZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGVsZW1lbnQgaGFzIGNvbXBsZXRlZCBoeWRyYXRpb24uXG4gICAgICogVGhlIFByb21pc2UgdmFsdWUgaXMgYSBib29sZWFuIHRoYXQgaXMgYHRydWVgIGlmIHRoZSBlbGVtZW50IHJlcXVpcmVkIGh5ZHJhdGlvblxuICAgICAqIGFuZCBgZmFsc2VgIGlmIG5vdC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4gQSBwcm9taXNlIG9mIGEgYm9vbGVhbiB0aGF0IHJlc29sdmVzIHRvIHRydWUgb25jZSB0aGUgaHlkcmF0aW9uIGNvbXBsZXRlZC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGh5ZHJhdGlvbkNvbXBsZXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2h5ZHJhdGlvbkNvbXBsZXRlO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIHdoZXRoZXIgaHlkcmF0aW9uIGlzIHJlcXVpcmVkIGFuZCBub3QgY29tcGxldGVkLiAqL1xuICAgIHByb3RlY3RlZCBnZXQgaHlkcmF0aW9uUmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5faHlkcmF0aW9uUmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBzdXBlciguLi5hcmdzKTtcbiAgICAgIC8vIENoZWNrIHdoZXRoZXIgaHlkcmF0aW9uIGlzIG5lZWRlZCBieSBjaGVja2luZyB3aGV0aGVyIHRoZSBzaGFkb3cgcm9vdFxuICAgICAgLy8gaXMgYXZhaWxhYmxlIGR1cmluZyBjb25zdHJ1Y3Rpb24vdXBncmFkZSBwaGFzZS5cbiAgICAgIHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkID0gISF0aGlzLnNoYWRvd1Jvb3Q7XG4gICAgICBpZiAoIXRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuX3Jlc29sdmVIeWRyYXRpb24oZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRHVyaW5nIGh5ZHJhdGlvbiBwaGFzZSwgd2Ugd2FudCB0byBzdXBwcmVzcyBzbG90Y2hhbmdlIGV2ZW50cyBhcyB0aGV5XG4gICAgICAgIC8vIGNhbiBjYXVzZSByZW5kZXIgZGlmZmVyZW5jZXMsIHdoaWNoIHdvdWxkIGJyZWFrIGh5ZHJhdGlvbi4gQWZ0ZXJcbiAgICAgICAgLy8gaHlkcmF0aW9uIGlzIGNvbXBsZXRlLCB3ZSBkaXNwYXRjaCBhIG1hbnVhbCBzbG90Y2hhbmdlIGV2ZW50LCBpZiB0aGVyZVxuICAgICAgICAvLyBhcmUgZWxlbWVudHMgYXNzaWduZWQgdG8gYSBzbG90LlxuICAgICAgICBjb25zdCBzdXBwcmVzc1Nsb3RjaGFuZ2VFdmVudCA9IChldmVudDogRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5faHlkcmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZXZlbnRPcHRpb25zOiBFdmVudExpc3RlbmVyT3B0aW9ucyA9IHsgY2FwdHVyZTogdHJ1ZSB9O1xuICAgICAgICBjb25zdCBzbG90cyA9IHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvckFsbCgnc2xvdCcpO1xuICAgICAgICBpZiAoc2xvdHM/Lmxlbmd0aCkge1xuICAgICAgICAgIHNsb3RzLmZvckVhY2goKHNsb3QpID0+XG4gICAgICAgICAgICBzbG90LmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCBzdXBwcmVzc1Nsb3RjaGFuZ2VFdmVudCwgZXZlbnRPcHRpb25zKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuaHlkcmF0aW9uQ29tcGxldGUudGhlbigoKSA9PlxuICAgICAgICAgICAgc2xvdHMuZm9yRWFjaCgoc2xvdCkgPT4ge1xuICAgICAgICAgICAgICBzbG90LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCBzdXBwcmVzc1Nsb3RjaGFuZ2VFdmVudCwgZXZlbnRPcHRpb25zKTtcbiAgICAgICAgICAgICAgaWYgKHNsb3QuYXNzaWduZWROb2RlcygpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHNsb3QuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ3Nsb3RjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICAgIC8vIFdoZW4gaHlkcmF0aW9uIGlzIG5lZWRlZCwgd2Ugd2FpdCB0aGUgaHlkcmF0aW9uIHByb2Nlc3MgdG8gZmluaXNoLCB3aGljaCBpcyBwYXRjaGVkXG4gICAgICAvLyBpbnRvIHRoZSB1cGRhdGUgbWV0aG9kIG9mIHRoZSBMaXRFbGVtZW50IGJhc2UgY2xhc3MuXG4gICAgICBzdXBlci51cGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgICBpZiAodGhpcy5faHlkcmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgICAgdGhpcy5faHlkcmF0aW9uUmVxdWlyZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fcmVzb2x2ZUh5ZHJhdGlvbih0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkh5ZHJhdGlvbk1peGluQ2xhc3MgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkh5ZHJhdGlvbk1peGluVHlwZT4gJiBUO1xufTtcbiIsImltcG9ydCB7IGh0bWwsIHR5cGUgTGl0RWxlbWVudCwgbm90aGluZywgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5pbXBvcnQgeyBTYmJIeWRyYXRpb25NaXhpbiwgdHlwZSBTYmJIeWRyYXRpb25NaXhpblR5cGUgfSBmcm9tICcuL2h5ZHJhdGlvbi1taXhpbi5qcyc7XG5cbmltcG9ydCAnLi4vLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxuY29uc3QgU1NSX0NISUxEX0NPVU5UX0FUVFJJQlVURSA9ICdkYXRhLXNzci1jaGlsZC1jb3VudCc7XG5jb25zdCBTTE9UTkFNRV9QUkVGSVggPSAnbGknO1xuXG5leHBvcnQgdHlwZSBTYmJOYW1lZFNsb3RQcm9wZXJ0aWVzID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFyaWFIaWRkZW46IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEhlbHBlciB0eXBlIGZvciB3aWxsVXBkYXRlIG9yIHNpbWlsYXIgY2hlY2tzLlxuICogQWxsb3dzIHRoZSB1c2FnZSBvZiB0aGUgc3RyaW5nIGxpdGVyYWwgJ2xpc3RDaGlsZHJlbicuXG4gKlxuICogQGV4YW1wbGVcbiAqIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczxXaXRoTGlzdENoaWxkcmVuPHRoaXM+Pik6IHZvaWQge1xuICogICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsaXN0Q2hpbGRyZW4nKSkge1xuICogICAgIC4uLlxuICogICB9XG4gKiB9XG4gKi9cbmV4cG9ydCB0eXBlIFdpdGhMaXN0Q2hpbGRyZW48XG4gIFQgZXh0ZW5kcyBTYmJOYW1lZFNsb3RMaXN0TWl4aW5UeXBlPEM+LFxuICBDIGV4dGVuZHMgSFRNTEVsZW1lbnQgPSBIVE1MRWxlbWVudCxcbj4gPSBUICYgeyBsaXN0Q2hpbGRyZW46IENbXSB9O1xuXG5leHBvcnQgZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBTYmJOYW1lZFNsb3RMaXN0TWl4aW5UeXBlPFxuICBDIGV4dGVuZHMgSFRNTEVsZW1lbnQsXG4+IGV4dGVuZHMgU2JiSHlkcmF0aW9uTWl4aW5UeXBlIHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IGxpc3RDaGlsZExvY2FsTmFtZXM6IHN0cmluZ1tdO1xuICBwcm90ZWN0ZWQgYWNjZXNzb3IgbGlzdENoaWxkcmVuOiBDW107XG4gIHByb3RlY3RlZCByZW5kZXJMaXN0KFxuICAgIGF0dHJpYnV0ZXM/OiB7XG4gICAgICBjbGFzcz86IHN0cmluZztcbiAgICAgIGFyaWFMYWJlbD86IHN0cmluZztcbiAgICAgIGFyaWFMYWJlbGxlZGJ5Pzogc3RyaW5nO1xuICAgIH0sXG4gICAgbGlzdEl0ZW1BdHRyaWJ1dGVzPzoge1xuICAgICAgbG9jYWxOYW1lVmlzdWFsT25seT86IHN0cmluZ1tdO1xuICAgIH0sXG4gICk6IFRlbXBsYXRlUmVzdWx0O1xuICBwcm90ZWN0ZWQgbGlzdFNsb3RFbnRyaWVzKCk6IFNiYk5hbWVkU2xvdFByb3BlcnRpZXNbXTtcbiAgcHJvdGVjdGVkIHJlbmRlckhpZGRlblNsb3QoKTogVGVtcGxhdGVSZXN1bHQ7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJOYW1lZFNsb3RMaXN0TWl4aW4gPSA8XG4gIEMgZXh0ZW5kcyBIVE1MRWxlbWVudCxcbiAgVCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4sXG4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJOYW1lZFNsb3RMaXN0TWl4aW5UeXBlPEM+PiAmIFQgPT4ge1xuICAvKipcbiAgICogVGhpcyBiYXNlIGNsYXNzIHByb3ZpZGVzIG5hbWVkIHNsb3QgbGlzdCBvYnNlcnZlciBmdW5jdGlvbmFsaXR5LlxuICAgKiBUaGlzIGFsbG93cyB1c2luZyB0aGUgcGF0dGVybiBvZiByZW5kZXJpbmcgYSBuYW1lZCBzbG90IGZvciBlYWNoIGNoaWxkLCB3aGljaCBhbGxvd3NcbiAgICogd3JhcHBpbmcgY2hpbGRyZW4gaW4gYW4gdWwvbGkgbGlzdC5cbiAgICovXG4gIGFic3RyYWN0IGNsYXNzIE5hbWVkU2xvdExpc3RFbGVtZW50PEMgZXh0ZW5kcyBIVE1MRWxlbWVudCA9IEhUTUxFbGVtZW50PlxuICAgIGV4dGVuZHMgU2JiSHlkcmF0aW9uTWl4aW4oc3VwZXJDbGFzcylcbiAgICBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiTmFtZWRTbG90TGlzdE1peGluVHlwZTxDPj5cbiAge1xuICAgIC8qKiBBIGxpc3Qgb2YgbG93ZXItY2FzZWQgdGFnIG5hbWVzIHRvIG1hdGNoIGFnYWluc3QuIChlLmcuIGBzYmItbGlua2ApICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IGxpc3RDaGlsZExvY2FsTmFtZXM6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogQSBsaXN0IG9mIGNoaWxkcmVuIHdpdGggdGhlIGRlZmluZWQgdGFnIG5hbWVzLlxuICAgICAqIFRoaXMgYXJyYXkgaXMgb25seSB1cGRhdGVkIGlmIHRoZXJlIGlzIGFuIGFjdHVhbCBjaGFuZ2VcbiAgICAgKiB0byB0aGUgY2hpbGQgZWxlbWVudHMuXG4gICAgICovXG4gICAgQHN0YXRlKCkgcHJvdGVjdGVkIGFjY2Vzc29yIGxpc3RDaGlsZHJlbjogQ1tdID0gW107XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgICAgdGhpcy5zaGFkb3dSb290Py5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgdGhpcy5faGFuZGxlU2xvdGNoYW5nZSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgICB0aGlzLnNoYWRvd1Jvb3Q/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCB0aGlzLl9oYW5kbGVTbG90Y2hhbmdlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9oYW5kbGVTbG90Y2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgbGlzdENoaWxkcmVuID0gQXJyYXkuZnJvbSh0aGlzLmNoaWxkcmVuID8/IFtdKS5maWx0ZXIoKGUpOiBlIGlzIEMgPT5cbiAgICAgICAgdGhpcy5saXN0Q2hpbGRMb2NhbE5hbWVzLmluY2x1ZGVzKGUubG9jYWxOYW1lKSxcbiAgICAgICk7XG4gICAgICAvLyBJZiB0aGUgc2xvdHRlZCBjaGlsZCBpbnN0YW5jZXMgaGF2ZSBub3QgY2hhbmdlZCwgd2UgY2FuIHNraXAgc3luY2luZyBhbmQgdXBkYXRpbmdcbiAgICAgIC8vIHRoZSBsaW5rIHJlZmVyZW5jZSBsaXN0LlxuICAgICAgaWYgKFxuICAgICAgICBsaXN0Q2hpbGRyZW4ubGVuZ3RoID09PSB0aGlzLmxpc3RDaGlsZHJlbi5sZW5ndGggJiZcbiAgICAgICAgdGhpcy5saXN0Q2hpbGRyZW4uZXZlcnkoKGUsIGkpID0+IGxpc3RDaGlsZHJlbltpXSA9PT0gZSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGlzdENoaWxkcmVuXG4gICAgICAgIC5maWx0ZXIoKGMpID0+ICFsaXN0Q2hpbGRyZW4uaW5jbHVkZXMoYykpXG4gICAgICAgIC5mb3JFYWNoKChjKSA9PiBjLnJlbW92ZUF0dHJpYnV0ZSgnc2xvdCcpKTtcbiAgICAgIHRoaXMubGlzdENoaWxkcmVuID0gbGlzdENoaWxkcmVuO1xuICAgICAgdGhpcy5saXN0Q2hpbGRyZW4uZm9yRWFjaCgoYywgaW5kZXgpID0+XG4gICAgICAgIGMuc2V0QXR0cmlidXRlKCdzbG90JywgYCR7U0xPVE5BTUVfUFJFRklYfS0ke2luZGV4fWApLFxuICAgICAgKTtcblxuICAgICAgLy8gUmVtb3ZlIHRoZSBzc3IgYXR0cmlidXRlLCBvbmNlIHdlIGhhdmUgYWN0dWFsbHkgaW5pdGlhbGl6ZWQgdGhlIGNoaWxkcmVuIGVsZW1lbnRzLlxuICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoU1NSX0NISUxEX0NPVU5UX0FUVFJJQlVURSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJlbmRlcnMgbGlzdCBhbmQgbGlzdCBzbG90cyBmb3Igc2xvdHRlZCBjaGlsZHJlbiBvciBhIG51bWJlciBvZiBsaXN0IHNsb3RzXG4gICAgICogY29ycmVzcG9uZGluZyB0byB0aGUgYGRhdGEtc3NyLWNoaWxkLWNvdW50YCBhdHRyaWJ1dGUgdmFsdWUuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIGEgcG9zc2libGUgb3B0aW1pemF0aW9uIGZvciBTU1IsIGFzIGluIGFuIFNTUiBMaXQgZW52aXJvbm1lbnRcbiAgICAgKiBvdGhlciBlbGVtZW50cyBhcmUgbm90IGF2YWlsYWJsZSwgYnV0IG1pZ2h0IGJlIGF2YWlsYWJsZSBpbiB0aGUgbWV0YVxuICAgICAqIGZyYW1ld29yayB3cmFwcGVyIChsaWtlIGUuZy4gUmVhY3QpLiBUaGlzIGFsbG93cyB0byBwcm92aWRlIHRoZSBudW1iZXIgb2ZcbiAgICAgKiBjaGlsZHJlbiB0byBiZSBwYXNzZWQgdmlhIHRoZSBgZGF0YS1zc3ItY2hpbGQtY291bnRgIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVuZGVyTGlzdChcbiAgICAgIGF0dHJpYnV0ZXM6IHsgY2xhc3M/OiBzdHJpbmc7IGFyaWFMYWJlbD86IHN0cmluZzsgYXJpYUxhYmVsbGVkYnk/OiBzdHJpbmcgfSA9IHt9LFxuICAgICAgbGlzdEl0ZW1BdHRyaWJ1dGVzOiB7IGxvY2FsTmFtZVZpc3VhbE9ubHk/OiBzdHJpbmdbXSB9ID0ge30sXG4gICAgKTogVGVtcGxhdGVSZXN1bHQge1xuICAgICAgY29uc3QgbGlzdFNsb3ROYW1lczogU2JiTmFtZWRTbG90UHJvcGVydGllc1tdID0gdGhpcy5saXN0U2xvdEVudHJpZXMobGlzdEl0ZW1BdHRyaWJ1dGVzKTtcblxuICAgICAgaWYgKGxpc3RTbG90TmFtZXMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgICAgPHVsXG4gICAgICAgICAgICBjbGFzcz0ke2F0dHJpYnV0ZXMuY2xhc3MgfHwgdGhpcy5sb2NhbE5hbWV9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPSR7YXR0cmlidXRlcy5hcmlhTGFiZWwgfHwgbm90aGluZ31cbiAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT0ke2F0dHJpYnV0ZXMuYXJpYUxhYmVsbGVkYnkgfHwgbm90aGluZ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICAke2xpc3RTbG90TmFtZXMubWFwKFxuICAgICAgICAgICAgICAoc2xvdCkgPT4gaHRtbGBcbiAgICAgICAgICAgICAgICA8bGkgYXJpYS1oaWRkZW49JHtzbG90LmFyaWFIaWRkZW4gfHwgbm90aGluZ30+XG4gICAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPSR7c2xvdC5uYW1lfT48L3Nsb3Q+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgYCxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgICAke3RoaXMucmVuZGVySGlkZGVuU2xvdCgpfVxuICAgICAgICBgO1xuICAgICAgfSBlbHNlIGlmIChsaXN0U2xvdE5hbWVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gaHRtbGA8c2JiLXNjcmVlbi1yZWFkZXItb25seT4ke2F0dHJpYnV0ZXMuYXJpYUxhYmVsfTwvc2JiLXNjcmVlbi1yZWFkZXItb25seT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz0ke2F0dHJpYnV0ZXMuY2xhc3MgfHwgdGhpcy5sb2NhbE5hbWV9PlxuICAgICAgICAgICAgPHNwYW4+PHNsb3QgbmFtZT0ke2xpc3RTbG90TmFtZXNbMF0ubmFtZX0+PC9zbG90Pjwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgJHt0aGlzLnJlbmRlckhpZGRlblNsb3QoKX0gYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbmRlckhpZGRlblNsb3QoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIFNiYk5hbWVkU2xvdFByb3BlcnRpZXMsIHdoaWNoIGhvbGRzIHRoZSBsaXN0IHNsb3QgbmFtZXMgYW5kIHRoZSBoaWRkZW4gcHJvcGVydHk7XG4gICAgICogaXRzIGxlbmd0aCBjb3JyZXNwb25kcyB0byB0aGUgbnVtYmVyIG9mIG1hdGNoZWQgY2hpbGRyZW4gb3IgdGhlIGBkYXRhLXNzci1jaGlsZC1jb3VudGAgYXR0cmlidXRlIHZhbHVlLlxuICAgICAqXG4gICAgICogVGhpcyBpcyBhIHBvc3NpYmxlIG9wdGltaXphdGlvbiBmb3IgU1NSLCBhcyBpbiBhbiBTU1IgTGl0IGVudmlyb25tZW50XG4gICAgICogb3RoZXIgZWxlbWVudHMgYXJlIG5vdCBhdmFpbGFibGUsIGJ1dCBtaWdodCBiZSBhdmFpbGFibGUgaW4gdGhlIG1ldGFcbiAgICAgKiBmcmFtZXdvcmsgd3JhcHBlciAobGlrZSBlLmcuIFJlYWN0KS4gVGhpcyBhbGxvd3MgdG8gcHJvdmlkZSB0aGUgbnVtYmVyIG9mXG4gICAgICogY2hpbGRyZW4gdG8gYmUgcGFzc2VkIHZpYSB0aGUgYGRhdGEtc3NyLWNoaWxkLWNvdW50YCBhdHRyaWJ1dGUgdmFsdWUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGxpc3RTbG90RW50cmllcyhsaXN0SXRlbUF0dHJpYnV0ZXM6IHtcbiAgICAgIGxvY2FsTmFtZVZpc3VhbE9ubHk/OiBzdHJpbmdbXTtcbiAgICB9KTogU2JiTmFtZWRTbG90UHJvcGVydGllc1tdIHtcbiAgICAgIGNvbnN0IGxpc3RDaGlsZHJlbiA9IHRoaXMubGlzdENoaWxkcmVuLmxlbmd0aFxuICAgICAgICA/IHRoaXMubGlzdENoaWxkcmVuXG4gICAgICAgIDogQXJyYXkuZnJvbSh7IGxlbmd0aDogKyh0aGlzLmdldEF0dHJpYnV0ZShTU1JfQ0hJTERfQ09VTlRfQVRUUklCVVRFKSA/PyAwKSB9KTtcbiAgICAgIHJldHVybiBsaXN0Q2hpbGRyZW4ubWFwKChlLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogYCR7U0xPVE5BTUVfUFJFRklYfS0ke2l9YCxcbiAgICAgICAgICBhcmlhSGlkZGVuOlxuICAgICAgICAgICAgbGlzdEl0ZW1BdHRyaWJ1dGVzPy5sb2NhbE5hbWVWaXN1YWxPbmx5Py5pbmNsdWRlcygoZSBhcyBIVE1MRWxlbWVudCkubG9jYWxOYW1lKSA/P1xuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgaGlkZGVuIHNsb3QsIHdoaWNoIGlzIGludGVuZGVkIGFzIHRoZSBjaGlsZHJlbiBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgICAqIFdoZW4gYW4gZWxlbWVudCB3aXRob3V0IGEgc2xvdCBhdHRyaWJ1dGUgaXMgc2xvdHRlZCB0byB0aGUgZWxlbWVudCwgaXQgdHJpZ2dlcnNcbiAgICAgKiB0aGUgc2xvdGNoYW5nZSBldmVudCwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gYXNzaWduIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSBuYW1lZCBzbG90LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZW5kZXJIaWRkZW5TbG90KCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAgIHJldHVybiBodG1sYDxzcGFuIGhpZGRlbj48c2xvdD48L3Nsb3Q+PC9zcGFuPmA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE5hbWVkU2xvdExpc3RFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJOYW1lZFNsb3RMaXN0TWl4aW5UeXBlPEM+PiAmIFQ7XG59O1xuIiwiaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYk5lZ2F0aXZlTWl4aW5UeXBlIHtcbiAgcHVibGljIGFjY2Vzc29yIG5lZ2F0aXZlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVuaGFuY2UgeW91ciBjb21wb25lbnQgd2l0aCBhIG5lZ2F0aXZlIHByb3BlcnR5LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiTmVnYXRpdmVNaXhpbiA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxMaXRFbGVtZW50Pj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYk5lZ2F0aXZlTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJOZWdhdGl2ZUVsZW1lbnQgZXh0ZW5kcyBzdXBlckNsYXNzIGltcGxlbWVudHMgU2JiTmVnYXRpdmVNaXhpblR5cGUge1xuICAgIC8qKiBOZWdhdGl2ZSBjb2xvcmluZyB2YXJpYW50IGZsYWcuICovXG4gICAgQGZvcmNlVHlwZSgpXG4gICAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICAgIHB1YmxpYyBhY2Nlc3NvciBuZWdhdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIFNiYk5lZ2F0aXZlRWxlbWVudCBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYk5lZ2F0aXZlTWl4aW5UeXBlPiAmIFQ7XG59O1xuIiwiaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJy4uL2V2ZW50aW5nLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYlBhbmVsTWl4aW5UeXBlIHtcbiAgcHVibGljIGFjY2Vzc29yIGNvbG9yOiAnd2hpdGUnIHwgJ21pbGsnO1xuICBwdWJsaWMgYWNjZXNzb3IgYm9yZGVybGVzczogYm9vbGVhbjtcbiAgcHVibGljIGFjY2Vzc29yIGV4cGFuc2lvblN0YXRlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFNiYlBhbmVsU2l6ZSA9ICdzJyB8ICdtJztcblxuLyoqXG4gKiBNaXhpbiBmb3IgY29tbW9uIHBhbmVsIGJlaGF2aW9yc1xuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiUGFuZWxNaXhpbiA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxMaXRFbGVtZW50Pj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYlBhbmVsTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJQYW5lbEVsZW1lbnQgZXh0ZW5kcyBzdXBlckNsYXNzIGltcGxlbWVudHMgU2JiUGFuZWxNaXhpblR5cGUge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgICAgcGFuZWxDb25uZWN0ZWQ6ICdwYW5lbENvbm5lY3RlZCcsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIC8qKiBUaGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgcGFuZWwuICovXG4gICAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIGNvbG9yOiAnd2hpdGUnIHwgJ21pbGsnID0gJ3doaXRlJztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB1bnNlbGVjdGVkIHBhbmVsIGhhcyBhIGJvcmRlci4gKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gICAgcHVibGljIGFjY2Vzc29yIGJvcmRlcmxlc3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBAaW50ZXJuYWwgdXNlZCBmb3IgYWNjZXNzaWJpbGl0eSBsYWJlbCB3aGVuIGluIGV4cGFuc2lvbiBwYW5lbCAqL1xuICAgIEBmb3JjZVR5cGUoKVxuICAgIEBwcm9wZXJ0eSgpXG4gICAgcHVibGljIGFjY2Vzc29yIGV4cGFuc2lvblN0YXRlOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIEludGVybmFsIGV2ZW50IHRoYXQgZW1pdHMgd2hlbiB0aGUgY2hlY2tib3ggaXMgbG9hZGVkLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3BhbmVsQ29ubmVjdGVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgICAgdGhpcyxcbiAgICAgIFNiYlBhbmVsRWxlbWVudC5ldmVudHMucGFuZWxDb25uZWN0ZWQsXG4gICAgICB7IGJ1YmJsZXM6IHRydWUgfSxcbiAgICApO1xuXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcblxuICAgICAgdGhpcy5fcGFuZWxDb25uZWN0ZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBTYmJQYW5lbEVsZW1lbnQgYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJQYW5lbE1peGluVHlwZT4gJiBUO1xufTtcbiIsImltcG9ydCB0eXBlIHsgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4vY29uc3RydWN0b3IuanMnO1xuXG4vLyBEZWZpbmUgdGhlIGludGVyZmFjZSBmb3IgdGhlIG1peGluXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBTYmJVcGRhdGVTY2hlZHVsZXJNaXhpblR5cGUge1xuICBwcm90ZWN0ZWQgc3RhcnRVcGRhdGUoKTogdm9pZDtcbiAgcHJvdGVjdGVkIGNvbXBsZXRlVXBkYXRlKCk6IHZvaWQ7XG59XG5cbi8qKlxuICogVGhpcyBtaXhpbiBhbGxvd3Mgc2NoZWR1bGluZyBtYW51YWwgdXBkYXRlcywgd2hpY2ggYWZmZWN0IHVwZGF0ZUNvbXBsZXRlLlxuICogQHBhcmFtIGJhc2UgVGhlIGNsYXNzIHRvIGV4dGVuZC5cbiAqIEByZXR1cm5zIEEgY2xhc3MgZXh0ZW5kZWQgd2l0aCB0aGUgc2xvdCBjaGlsZCBvYnNlcnZlciBmdW5jdGlvbmFsaXR5LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiVXBkYXRlU2NoZWR1bGVyTWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4+KFxuICBiYXNlOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJVcGRhdGVTY2hlZHVsZXJNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYlVwZGF0ZVNjaGVkdWxlckVsZW1lbnRcbiAgICBleHRlbmRzIGJhc2VcbiAgICBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiVXBkYXRlU2NoZWR1bGVyTWl4aW5UeXBlPlxuICB7XG4gICAgcHJpdmF0ZSBfdXBkYXRlUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIHByaXZhdGUgX3VwZGF0ZVJlc29sdmUgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIHByb3RlY3RlZCBzdGFydFVwZGF0ZSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocikgPT4gKHRoaXMuX3VwZGF0ZVJlc29sdmUgPSByKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbXBsZXRlVXBkYXRlKCk6IHZvaWQge1xuICAgICAgdGhpcy5fdXBkYXRlUmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBnZXRVcGRhdGVDb21wbGV0ZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN1cGVyLmdldFVwZGF0ZUNvbXBsZXRlKCk7XG4gICAgICBhd2FpdCB0aGlzLl91cGRhdGVQcm9taXNlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYlVwZGF0ZVNjaGVkdWxlckVsZW1lbnQgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYlVwZGF0ZVNjaGVkdWxlck1peGluVHlwZT4gJlxuICAgIFQ7XG59O1xuIl0sIm5hbWVzIjpbIl9hIiwic3RhdGUiLCJTYmJQYW5lbEVsZW1lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFvQmEsTUFBQSxtQkFBbUIsQ0FDOUIsZUFDaUQ7TUFDbEMsc0JBQWtCLE1BQUE7O3NCQUFTOzs7O0FBQTNCLFdBQUEsbUJBQTJCLFlBQVU7QUFBQTs7QUFLbEQsdURBQUEsa0JBQUEsTUFBQSx3QkFBb0MsS0FBSzs7OztNQUF6QyxJQUFnQixXQUEwQjtBQUFBLGVBQUEsbUJBQUE7QUFBQSxNQUFBO0FBQUEsTUFBMUMsSUFBZ0IsU0FBMEIsT0FBQTtBQUFBLDJCQUFBLDRCQUFBO0FBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFNaEMsdUJBQW9CO0FBQ3JCLGVBQUE7QUFBQSxNQUFBO0FBQUEsT0FQVDs7QUFIQyw2QkFBQSxDQUFBLGFBQ0EsU0FBUyxFQUFFLFNBQVMsTUFBTSxNQUFNLFFBQVMsQ0FBQSxHQUN6QyxZQUFZLENBQUMsR0FBRyxNQUFNLEtBQUssRUFBRSxxQkFBQSxDQUFzQixDQUFDO0FBQ3JDLG1CQUFBLElBQUEsTUFBQSxzQkFB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
|
|
845
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW5zLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvZGlzYWJsZWQtbWl4aW4udHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvZm9ybS1hc3NvY2lhdGVkLW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL3JlcXVpcmVkLW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL2Zvcm0tYXNzb2NpYXRlZC1jaGVja2JveC1taXhpbi50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL21peGlucy9oeWRyYXRpb24tbWl4aW4udHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvbmFtZWQtc2xvdC1saXN0LW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL25lZ2F0aXZlLW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL3BhbmVsLW1peGluLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL3VwZGF0ZS1zY2hlZHVsZXItbWl4aW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50LCBQcm9wZXJ0eVZhbHVlcyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZm9yY2VUeXBlLCBnZXRPdmVycmlkZSB9IGZyb20gJy4uL2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yLmpzJztcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiRGlzYWJsZWRNaXhpblR5cGUge1xuICBwdWJsaWMgYWNjZXNzb3IgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBpc0Rpc2FibGVkRXh0ZXJuYWxseSgpOiBib29sZWFuO1xufVxuXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW5UeXBlIHtcbiAgcHVibGljIGFjY2Vzc29yIGRpc2FibGVkSW50ZXJhY3RpdmU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogRW5oYW5jZSB5b3VyIGNvbXBvbmVudCB3aXRoIGEgZGlzYWJsZWQgcHJvcGVydHkuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJEaXNhYmxlZE1peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRGlzYWJsZWRNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkRpc2FibGVkRWxlbWVudCBleHRlbmRzIHN1cGVyQ2xhc3MgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkRpc2FibGVkTWl4aW5UeXBlPiB7XG4gICAgLyoqIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC4gKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gICAgQGdldE92ZXJyaWRlKChlLCB2KSA9PiB2IHx8IGUuaXNEaXNhYmxlZEV4dGVybmFsbHkoKSlcbiAgICBwdWJsaWMgYWNjZXNzb3IgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdpbGwgYmUgdXNlZCBhcyAnb3InIGNoZWNrIHRvIHRoZSBjdXJyZW50IGRpc2FibGVkIHN0YXRlLlxuICAgICAqIENhbiBlLmcuIGJlIHVzZWQgdG8gcmVhZCBkaXNhYmxlZCBzdGF0ZSBvZiBhIGdyb3VwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpc0Rpc2FibGVkRXh0ZXJuYWxseSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gU2JiRGlzYWJsZWRFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJEaXNhYmxlZE1peGluVHlwZT4gJiBUO1xufTtcblxuLyoqXG4gKiBFbmhhbmNlIHlvdXIgY29tcG9uZW50IHdpdGggYSBkaXNhYmxlZCBpbnRlcmFjdGl2ZSBwcm9wZXJ0eS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpbiA9IDxcbiAgVCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudCAmIFNiYkRpc2FibGVkTWl4aW5UeXBlPixcbj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVFbGVtZW50XG4gICAgZXh0ZW5kcyBzdXBlckNsYXNzXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpblR5cGU+XG4gIHtcbiAgICAvKiogV2hldGhlciBkaXNhYmxlZCBidXR0b25zIHNob3VsZCBiZSBpbnRlcmFjdGl2ZS4gKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdkaXNhYmxlZC1pbnRlcmFjdGl2ZScsIHR5cGU6IEJvb2xlYW4gfSlcbiAgICBwdWJsaWMgYWNjZXNzb3IgZGlzYWJsZWRJbnRlcmFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW5UeXBlPiAmXG4gICAgVDtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJEaXNhYmxlZFRhYkluZGV4QWN0aW9uTWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJEaXNhYmxlZE1peGluVHlwZSAmIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkRpc2FibGVkVGFiSW5kZXhBY3Rpb25cbiAgICBleHRlbmRzIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpbihTYmJEaXNhYmxlZE1peGluKHN1cGVyQ2xhc3MpKVxuICAgIGltcGxlbWVudHMgU2JiRGlzYWJsZWRNaXhpblR5cGUsIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpblR5cGVcbiAge1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpICYmICFjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Rpc2FibGVkSW50ZXJhY3RpdmUnKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkSW50ZXJhY3RpdmUpIHtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gU2JiRGlzYWJsZWRUYWJJbmRleEFjdGlvbiBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFxuICAgIFNiYkRpc2FibGVkTWl4aW5UeXBlICYgU2JiRGlzYWJsZWRJbnRlcmFjdGl2ZU1peGluVHlwZVxuICA+ICZcbiAgICBUO1xufTtcblxuLyoqXG4gKiBFeHRlbmRzIGBTYmJEaXNhYmxlZE1peGluYCB3aXRoIHRoZSBgYXJpYS1kaXNhYmxlZGAgYXR0cmlidXRlLlxuICogRm9yIGExMXkgcHVycG9zZXMsIGtlZXBzIHRoZSBlbGVtZW50IGZvY3VzYWJsZSBldmVuIHdoZW4gZGlzYWJsZWQuXG4gKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgd2l0aCBuZXh0IG1ham9yIHZlcnNpb25cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYkZvY3VzYWJsZURpc2FibGVkQWN0aW9uTWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJEaXNhYmxlZE1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiRm9jdXNhYmxlRGlzYWJsZWRBY3Rpb25cbiAgICBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oc3VwZXJDbGFzcylcbiAgICBpbXBsZW1lbnRzIFNiYkRpc2FibGVkTWl4aW5UeXBlXG4gIHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGlzYWJsZWQnKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJywgJ3RydWUnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBTYmJGb2N1c2FibGVEaXNhYmxlZEFjdGlvbiBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkRpc2FibGVkTWl4aW5UeXBlPiAmIFQ7XG59O1xuIiwiaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5cbmV4cG9ydCBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW5UeXBlPFYgPSBzdHJpbmc+IHtcbiAgcHVibGljIGdldCBmb3JtKCk6IEhUTUxGb3JtRWxlbWVudCB8IG51bGw7XG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmc7XG4gIHB1YmxpYyBzZXQgbmFtZSh2YWx1ZTogc3RyaW5nKTtcbiAgcHVibGljIGdldCB0eXBlKCk6IHN0cmluZztcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBWIHwgbnVsbDtcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogViB8IG51bGwpO1xuXG4gIHB1YmxpYyBnZXQgdmFsaWRpdHkoKTogVmFsaWRpdHlTdGF0ZTtcbiAgcHVibGljIGdldCB2YWxpZGF0aW9uTWVzc2FnZSgpOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgd2lsbFZhbGlkYXRlKCk6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIGZvcm1EaXNhYmxlZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGludGVybmFsczogRWxlbWVudEludGVybmFscztcblxuICBwdWJsaWMgY2hlY2tWYWxpZGl0eSgpOiBib29sZWFuO1xuICBwdWJsaWMgcmVwb3J0VmFsaWRpdHkoKTogYm9vbGVhbjtcblxuICBwdWJsaWMgZm9ybUFzc29jaWF0ZWRDYWxsYmFjaz8oZm9ybTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbCk6IHZvaWQ7XG4gIHB1YmxpYyBmb3JtRGlzYWJsZWRDYWxsYmFjayhkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQ7XG4gIHB1YmxpYyBhYnN0cmFjdCBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkO1xuICBwdWJsaWMgYWJzdHJhY3QgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgIHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCxcbiAgICByZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICApOiB2b2lkO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCB1cGRhdGVGb3JtVmFsdWUoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgRm9ybUFzc29jaWF0ZWRNaXhpbiBlbmFibGVzIG5hdGl2ZSBmb3JtIHN1cHBvcnQgZm9yIGN1c3RvbSBjb250cm9scy5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4sIFYgPSBzdHJpbmc+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJGb3JtQXNzb2NpYXRlZE1peGluVHlwZTxWPj4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiRm9ybUFzc29jaWF0ZWRFbGVtZW50XG4gICAgZXh0ZW5kcyBzdXBlckNsYXNzXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW5UeXBlPFY+PlxuICB7XG4gICAgcHVibGljIHN0YXRpYyBmb3JtQXNzb2NpYXRlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBmb3JtIG93bmVyIG9mIHRoZSBpbnRlcm5hbHMgb2YgdGhlIHRhcmdldCBlbGVtZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZm9ybSgpOiBIVE1MRm9ybUVsZW1lbnQgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFscy5mb3JtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGZvcm0gZWxlbWVudC4gV2lsbCBiZSByZWFkIGZyb20gbmFtZSBhdHRyaWJ1dGUuXG4gICAgICpcbiAgICAgKiBAZGVzY3JpcHRpb24gRGV2ZWxvcGVyIG5vdGU6IEluIHRoaXMgY2FzZSB1cGRhdGluZyB0aGUgYXR0cmlidXRlIG11c3QgYmUgc3luY2hyb25vdXMuXG4gICAgICogRHVlIHRvIHRoaXMgaXQgaXMgaW1wbGVtZW50ZWQgYXMgYSBnZXR0ZXIvc2V0dGVyIGFuZCB0aGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKCkgaGFuZGxlcyB0aGUgZGlmZiBjaGVjay5cbiAgICAgKi9cbiAgICBAcHJvcGVydHkoKVxuICAgIHB1YmxpYyBzZXQgbmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCduYW1lJywgYCR7bmFtZX1gKTtcblxuICAgICAgLy8gRm9yIGBGb3JtRGF0YWAgdmFsdWVzLCB3ZSBoYXZlIHRvIG1hbnVhbGx5IHVwZGF0ZSB0aGUgZmllbGROYW1lIGtleVxuICAgICAgdGhpcy51cGRhdGVGb3JtVmFsdWUoKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoJ25hbWUnKSA/PyAnJztcbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgcHVibGljIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5sb2NhbE5hbWU7XG4gICAgfVxuXG4gICAgLyoqIFZhbHVlIG9mIHRoZSBmb3JtIGVsZW1lbnQuICovXG4gICAgQHByb3BlcnR5KClcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBWIHwgbnVsbCkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlKCk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogViB8IG51bGwge1xuICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cbiAgICBwcml2YXRlIF92YWx1ZTogViB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgVmFsaWRpdHlTdGF0ZSBvYmplY3QgZm9yIGludGVybmFscyB0YXJnZXQgZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsaWRpdHkoKTogVmFsaWRpdHlTdGF0ZSB7XG4gICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbHMudmFsaWRpdHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZXJyb3IgbWVzc2FnZSB0aGF0IHdvdWxkIGJlIHNob3duIHRvIHRoZSB1c2VyXG4gICAgICogaWYgaW50ZXJuYWxzIHRhcmdldCBlbGVtZW50IHdhcyB0byBiZSBjaGVja2VkIGZvciB2YWxpZGl0eS5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsaWRhdGlvbk1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFscy52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgaW50ZXJuYWxzIHRhcmdldCBlbGVtZW50IHdpbGwgYmUgdmFsaWRhdGVkXG4gICAgICogd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQ7IGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgd2lsbFZhbGlkYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxzLndpbGxWYWxpZGF0ZTtcbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGludGVybmFsczogRWxlbWVudEludGVybmFscyA9IHRoaXMuYXR0YWNoSW50ZXJuYWxzKCk7XG5cbiAgICAvKiogV2hlbmV2ZXIgYSBzdXJyb3VuZGluZyBmb3JtIG9yIGZpZWxkc2V0IGlzIGNoYW5naW5nIGl0cyBkaXNhYmxlZCBzdGF0ZS4gKi9cbiAgICBAc3RhdGUoKSBwcm90ZWN0ZWQgYWNjZXNzb3IgZm9ybURpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKFxuICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgb2xkOiBzdHJpbmcgfCBudWxsLFxuICAgICAgdmFsdWU6IHN0cmluZyB8IG51bGwsXG4gICAgKTogdm9pZCB7XG4gICAgICBpZiAobmFtZSAhPT0gJ25hbWUnIHx8IG9sZCAhPT0gdmFsdWUpIHtcbiAgICAgICAgc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKG5hbWUsIG9sZCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiBpbnRlcm5hbHMgdGFyZ2V0IGVsZW1lbnQgaGFzIG5vIHZhbGlkaXR5IHByb2JsZW1zOyBmYWxzZSBvdGhlcndpc2UuXG4gICAgICogRmlyZXMgYW4gaW52YWxpZCBldmVudCBhdCB0aGUgZWxlbWVudCBpbiB0aGUgbGF0dGVyIGNhc2UuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgY2hlY2tWYWxpZGl0eSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFscy5jaGVja1ZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIGludGVybmFscyB0YXJnZXQgZWxlbWVudCBoYXMgbm8gdmFsaWRpdHkgcHJvYmxlbXM7IG90aGVyd2lzZSxcbiAgICAgKiByZXR1cm5zIGZhbHNlLCBmaXJlcyBhbiBpbnZhbGlkIGV2ZW50IGF0IHRoZSBlbGVtZW50LFxuICAgICAqIGFuZCAoaWYgdGhlIGV2ZW50IGlzbid0IGNhbmNlbGVkKSByZXBvcnRzIHRoZSBwcm9ibGVtIHRvIHRoZSB1c2VyLlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIHJlcG9ydFZhbGlkaXR5KCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxzLnJlcG9ydFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgZm9ybSBlbGVtZW50IGNoYW5nZXMuXG4gICAgICogRWxlbWVudEludGVybmFscy5mb3JtIHJldHVybnMgdGhlIGFzc29jaWF0ZWQgZnJvbSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGZvcm1Bc3NvY2lhdGVkQ2FsbGJhY2s/KGZvcm06IEhUTUxGb3JtRWxlbWVudCB8IG51bGwpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIGEgc3Vycm91bmRpbmcgZm9ybSAvIGZpZWxkc2V0IGNoYW5nZXMgZGlzYWJsZWQgc3RhdGUuXG4gICAgICogQHBhcmFtIGRpc2FibGVkXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZm9ybURpc2FibGVkQ2FsbGJhY2soZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgIC8vIFRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIGlmIHRoZSBkaXNhYmxlZCBwcm9wZXJ0eSBjaGFuZ2VzIG9yIHRoZSBkaXNhYmxlZCBhdHRyaWJ1dGUgb2YgYSBmaWVsZHNldCBvciBmb3JtIGNoYW5nZXMuXG4gICAgICAvLyBXZSBuZWVkIHRvIHBvc3Rwb25lIHRoZSBhc3NpZ25tZW50LCBvdGhlcndpc2UgaXQgaW50ZXJmZXJlcyB3aXRoIGRpc2FibGVkIHN0YXR1cyBzZXR0aW5nXG4gICAgICAvLyBhbmQgbGVhZHMgdG8gYSB3cm9uZyBzdGF0ZSAoZS5nLiBlbWJlZGRlZCBzYmItdmlzdWFsLWNoZWNrYm94KS5cbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1EaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBmb3JtIGlzIGJlaW5nIHJlc2V0LlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiAgQ2FsbGVkIHdoZW4gdGhlIGJyb3dzZXIgaXMgdHJ5aW5nIHRvIHJlc3RvcmUgZWxlbWVudOKAmXMgc3RhdGUgdG8gc3RhdGUgaW4gd2hpY2ggY2FzZVxuICAgICAqICByZWFzb24gaXMg4oCccmVzdG9yZeKAnSwgb3Igd2hlbiB0aGUgYnJvd3NlciBpcyB0cnlpbmcgdG8gZnVsZmlsbCBhdXRvZmlsbCBvbiBiZWhhbGYgb2ZcbiAgICAgKiAgdXNlciBpbiB3aGljaCBjYXNlIHJlYXNvbiBpcyDigJxhdXRvY29tcGxldGXigJ0uXG4gICAgICogIEluIHRoZSBjYXNlIG9mIOKAnHJlc3RvcmXigJ0sIHN0YXRlIGlzIGEgc3RyaW5nLCBGaWxlLCBvciBGb3JtRGF0YSBvYmplY3RcbiAgICAgKiAgcHJldmlvdXNseSBzZXQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBzZXRGb3JtVmFsdWUuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgICAgc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLFxuICAgICAgcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbixcbiAgICApOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogU2hvdWxkIGJlIGNhbGxlZCB3aGVuIGZvcm0gdmFsdWUgaXMgY2hhbmdlZC5cbiAgICAgKiBBZGFwdHMgYW5kIHNldHMgdGhlIGZvcm1WYWx1ZSBpbiB0aGUgc3VwcG9ydGVkIGZvcm1hdCAoc3RyaW5nIHwgRm9ybURhdGEgfCBGaWxlIHwgbnVsbClcbiAgICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudEludGVybmFscy9zZXRGb3JtVmFsdWVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgdXBkYXRlRm9ybVZhbHVlKCk6IHZvaWQ7XG4gIH1cbiAgcmV0dXJuIFNiYkZvcm1Bc3NvY2lhdGVkRWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRm9ybUFzc29jaWF0ZWRNaXhpblR5cGU8Vj4+ICZcbiAgICBUO1xufTtcblxuLyoqXG4gKiBBIHZhbHVlIHRvIGJlIHJlc3RvcmVkIGZvciBhIGNvbXBvbmVudCdzIGZvcm0gdmFsdWUuIElmIGEgY29tcG9uZW50J3MgZm9ybVxuICogc3RhdGUgaXMgYSBgRm9ybURhdGFgIG9iamVjdCwgaXRzIGVudHJ5IGxpc3Qgb2YgbmFtZSBhbmQgdmFsdWVzIHdpbGwgYmVcbiAqIHByb3ZpZGVkLlxuICovXG5leHBvcnQgdHlwZSBGb3JtUmVzdG9yZVN0YXRlID0gRmlsZSB8IHN0cmluZyB8IFtzdHJpbmcsIEZvcm1EYXRhRW50cnlWYWx1ZV1bXTtcblxuLyoqXG4gKiBUaGUgcmVhc29uIGEgZm9ybSBjb21wb25lbnQgaXMgYmVpbmcgcmVzdG9yZWQgZm9yLCBlaXRoZXIgYCdyZXN0b3JlJ2AgZm9yXG4gKiBicm93c2VyIHJlc3RvcmF0aW9uIG9yIGAnYXV0b2NvbXBsZXRlJ2AgZm9yIHJlc3RvcmluZyB1c2VyIHZhbHVlcy5cbiAqL1xuZXhwb3J0IHR5cGUgRm9ybVJlc3RvcmVSZWFzb24gPSAncmVzdG9yZScgfCAnYXV0b2NvbXBsZXRlJztcbiIsImltcG9ydCB0eXBlIHsgTGl0RWxlbWVudCwgUHJvcGVydHlWYWx1ZXMgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4vY29uc3RydWN0b3IuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJGb3JtQXNzb2NpYXRlZE1peGluVHlwZSB9IGZyb20gJy4vZm9ybS1hc3NvY2lhdGVkLW1peGluLmpzJztcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiUmVxdWlyZWRNaXhpblR5cGUge1xuICBwdWJsaWMgYWNjZXNzb3IgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBpc1JlcXVpcmVkRXh0ZXJuYWxseSgpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVuaGFuY2UgeW91ciBjb21wb25lbnQgd2l0aCBhIHJlcXVpcmVkIHByb3BlcnR5LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiUmVxdWlyZWRNaXhpbiA9IDxcbiAgVCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudCAmIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW5UeXBlPFY+PixcbiAgVixcbj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYlJlcXVpcmVkTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJSZXF1aXJlZEVsZW1lbnQgZXh0ZW5kcyBzdXBlckNsYXNzIGltcGxlbWVudHMgUGFydGlhbDxTYmJSZXF1aXJlZE1peGluVHlwZT4ge1xuICAgIC8qKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgcmVxdWlyZWQuICovXG4gICAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICAgIHB1YmxpYyBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgIC8vIFRvIHByb3ZpZGUgdGhlIHNhbWUgYmVoYXZpb3IgYXMgdGhlIG5hdGl2ZSByZXF1aXJlZCBzdGF0ZSxcbiAgICAgIC8vIGFueSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gYSBib29sZWFuLlxuICAgICAgdGhpcy5fcmVxdWlyZWQgPSBCb29sZWFuKHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZCB8fCB0aGlzLmlzUmVxdWlyZWRFeHRlcm5hbGx5KCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgIC8vIEZpcmVmb3ggbmVlZHMgZXhwbGljaXRseSBzZXQgYXJpYS1yZXF1aXJlZCB2YWx1ZS5cbiAgICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYVJlcXVpcmVkID0gYCR7dGhpcy5yZXF1aXJlZH1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdpbGwgYmUgdXNlZCBhcyAnb3InIGNoZWNrIHRvIHRoZSBjdXJyZW50IHJlcXVpcmVkIHN0YXRlLlxuICAgICAqIENhbiBlLmcuIGJlIHVzZWQgdG8gcmVhZCByZXF1aXJlZCBzdGF0ZSBvZiBhIGdyb3VwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpc1JlcXVpcmVkRXh0ZXJuYWxseSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gU2JiUmVxdWlyZWRFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJSZXF1aXJlZE1peGluVHlwZT4gJiBUO1xufTtcbiIsImltcG9ydCB7IGRlZmF1bHRDb252ZXJ0ZXIsIHR5cGUgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHByZXZlbnRTY3JvbGxPblNwYWNlYmFyUHJlc3MgfSBmcm9tICcuLi9ldmVudGluZy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yLmpzJztcbmltcG9ydCB7IFNiYkRpc2FibGVkTWl4aW4sIHR5cGUgU2JiRGlzYWJsZWRNaXhpblR5cGUgfSBmcm9tICcuL2Rpc2FibGVkLW1peGluLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgRm9ybVJlc3RvcmVSZWFzb24sXG4gIHR5cGUgRm9ybVJlc3RvcmVTdGF0ZSxcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbixcbiAgdHlwZSBTYmJGb3JtQXNzb2NpYXRlZE1peGluVHlwZSxcbn0gZnJvbSAnLi9mb3JtLWFzc29jaWF0ZWQtbWl4aW4uanMnO1xuaW1wb3J0IHsgU2JiUmVxdWlyZWRNaXhpbiwgdHlwZSBTYmJSZXF1aXJlZE1peGluVHlwZSB9IGZyb20gJy4vcmVxdWlyZWQtbWl4aW4uanMnO1xuXG50eXBlIENoZWNrZWRTZXR0ZXJWYWx1ZSA9IHsgdmFsdWU6IGJvb2xlYW47IGF0dHJpYnV0ZTogYm9vbGVhbiB9O1xuXG5leHBvcnQgZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBTYmJGb3JtQXNzb2NpYXRlZENoZWNrYm94TWl4aW5UeXBlXG4gIGV4dGVuZHMgU2JiRm9ybUFzc29jaWF0ZWRNaXhpblR5cGVcbiAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkRpc2FibGVkTWl4aW5UeXBlPiwgUGFydGlhbDxTYmJSZXF1aXJlZE1peGluVHlwZT5cbntcbiAgcHVibGljIGdldCBjaGVja2VkKCk6IGJvb2xlYW47XG4gIHB1YmxpYyBzZXQgY2hlY2tlZCh2YWx1ZTogYm9vbGVhbik7XG5cbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbik7XG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbjtcblxuICBwdWJsaWMgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKTtcbiAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuO1xuXG4gIHB1YmxpYyBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkO1xuICBwdWJsaWMgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCwgcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbik6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWRFeHRlcm5hbGx5KCk6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBpc1JlcXVpcmVkRXh0ZXJuYWxseSgpOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgd2l0aFVzZXJJbnRlcmFjdGlvbj8oKTogdm9pZDtcbiAgcHJvdGVjdGVkIHVwZGF0ZUZvcm1WYWx1ZSgpOiB2b2lkO1xufVxuXG4vKipcbiAqIFRoZSBGb3JtQXNzb2NpYXRlZENoZWNrYm94TWl4aW4gZW5hYmxlcyBuYXRpdmUgZm9ybSBzdXBwb3J0IGZvciBjaGVja2JveCBjb250cm9scy5cbiAqXG4gKiBJbmhlcml0ZWQgY2xhc3NlcyBNVVNUIGltcGxlbWVudCB0aGUgYXJpYUNoZWNrZWQgc3RhdGUgKEVsZW1lbnRJbnRlcm5hbHMpIHRoZW1zZWx2ZXMuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJGb3JtQXNzb2NpYXRlZENoZWNrYm94TWl4aW4gPSA8VCBleHRlbmRzIENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IENvbnN0cnVjdG9yPFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hNaXhpblR5cGU+ICYgVCA9PiB7XG4gIEBob3N0QXR0cmlidXRlcyh7XG4gICAgdGFiaW5kZXg6ICcwJyxcbiAgfSlcbiAgYWJzdHJhY3QgY2xhc3MgU2JiRm9ybUFzc29jaWF0ZWRDaGVja2JveEVsZW1lbnRcbiAgICBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oU2JiUmVxdWlyZWRNaXhpbihTYmJGb3JtQXNzb2NpYXRlZE1peGluKHN1cGVyQ2xhc3MpKSlcbiAgICBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiRm9ybUFzc29jaWF0ZWRDaGVja2JveE1peGluVHlwZT5cbiAge1xuICAgIHByaXZhdGUgX2F0dHJpYnV0ZU11dGF0aW9uQmxvY2tlZCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGNoZWNrZWQuICovXG4gICAgQHByb3BlcnR5KHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBjb252ZXJ0ZXI6IHtcbiAgICAgICAgLi4uZGVmYXVsdENvbnZlcnRlcixcbiAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluZm9ybWF0aW9uIHRvIHRoZSBzZXR0ZXIgc28gdGhhdCB3ZSBrbm93IGl0IHdhcyBjYWxsZWQgYnkgYXR0cmlidXRlIGNoYW5nZS5cbiAgICAgICAgZnJvbUF0dHJpYnV0ZTogKHZhbHVlOiBzdHJpbmcgfCBudWxsLCB0eXBlPzogdW5rbm93bik6IENoZWNrZWRTZXR0ZXJWYWx1ZSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmYXVsdENvbnZlcnRlci5mcm9tQXR0cmlidXRlPy4odmFsdWUsIHR5cGUpO1xuICAgICAgICAgIHJldHVybiB7IHZhbHVlOiByZXN1bHQsIGF0dHJpYnV0ZTogdHJ1ZSB9IGFzIENoZWNrZWRTZXR0ZXJWYWx1ZTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSlcbiAgICBwdWJsaWMgc2V0IGNoZWNrZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZVNldHRlciA9XG4gICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyAodmFsdWUgYXMgdW5rbm93biBhcyBDaGVja2VkU2V0dGVyVmFsdWUpLmF0dHJpYnV0ZSA6IGZhbHNlO1xuICAgICAgaWYgKGF0dHJpYnV0ZVNldHRlcikge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSBhcyB1bmtub3duIGFzIENoZWNrZWRTZXR0ZXJWYWx1ZSkudmFsdWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEFzIHNvb24gYXMgbXV0YXRpb24gd2FzIGRvbmUgbm90IGJ5IHNldHRpbmcgYXR0cmlidXRlLFxuICAgICAgLy8gd2UgbmVlZCB0byBibG9jayBzeW5jaW5nIGF0dHJpYnV0ZS5cbiAgICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQgJiYgIWF0dHJpYnV0ZVNldHRlcikge1xuICAgICAgICB0aGlzLl9hdHRyaWJ1dGVNdXRhdGlvbkJsb2NrZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgdGhpcy5fY2hlY2tlZCA9IEJvb2xlYW4odmFsdWUpO1xuICAgICAgdGhpcy51cGRhdGVGb3JtVmFsdWUoKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBjaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrZWQ7XG4gICAgfVxuICAgIHByaXZhdGUgX2NoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEZvcm0gdHlwZSBvZiBlbGVtZW50LlxuICAgICAqIEBkZWZhdWx0ICdjaGVja2JveCdcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiAnY2hlY2tib3gnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICAgIHN1cGVyKCk7XG4gICAgICAvKiogQGludGVybmFsICovXG4gICAgICB0aGlzLmludGVybmFscy5yb2xlID0gJ2NoZWNrYm94JztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5faGFuZGxlVXNlckludGVyYWN0aW9uKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHByZXZlbnRTY3JvbGxPblNwYWNlYmFyUHJlc3MpO1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuX2hhbmRsZUtleWJvYXJkSW50ZXJhY3Rpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9oYW5kbGVVc2VySW50ZXJhY3Rpb24pO1xuICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgcHJldmVudFNjcm9sbE9uU3BhY2ViYXJQcmVzcyk7XG4gICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5faGFuZGxlS2V5Ym9hcmRJbnRlcmFjdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhcbiAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgIG9sZDogc3RyaW5nIHwgbnVsbCxcbiAgICAgIHZhbHVlOiBzdHJpbmcgfCBudWxsLFxuICAgICk6IHZvaWQge1xuICAgICAgLy8gQXR0cmlidXRlIHNob3VsZCBub3QgYmUgaW50ZXJwcmV0ZWQgYWZ0ZXIgcHJvZ3JhbW1hdGljIG9yIG1hbnVhbCBzdGF0ZSBjaGFuZ2UuXG4gICAgICBpZiAobmFtZSAhPT0gJ2NoZWNrZWQnIHx8ICF0aGlzLl9hdHRyaWJ1dGVNdXRhdGlvbkJsb2NrZWQpIHtcbiAgICAgICAgc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKG5hbWUsIG9sZCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElzIGNhbGxlZCB3aGVuZXZlciB0aGUgZm9ybSBpcyBiZWluZyByZXNldC5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMuaGFzQXR0cmlidXRlKCdjaGVja2VkJyk7XG4gICAgICB0aGlzLl9hdHRyaWJ1dGVNdXRhdGlvbkJsb2NrZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQ2FsbGVkIHdoZW4gdGhlIGJyb3dzZXIgaXMgdHJ5aW5nIHRvIHJlc3RvcmUgZWxlbWVudOKAmXMgc3RhdGUgdG8gc3RhdGUgaW4gd2hpY2ggY2FzZVxuICAgICAqICByZWFzb24gaXMg4oCccmVzdG9yZeKAnSwgb3Igd2hlbiB0aGUgYnJvd3NlciBpcyB0cnlpbmcgdG8gZnVsZmlsbCBhdXRvZmlsbCBvbiBiZWhhbGYgb2ZcbiAgICAgKiAgdXNlciBpbiB3aGljaCBjYXNlIHJlYXNvbiBpcyDigJxhdXRvY29tcGxldGXigJ0uXG4gICAgICogIEluIHRoZSBjYXNlIG9mIOKAnHJlc3RvcmXigJ0sIHN0YXRlIGlzIGEgc3RyaW5nLCBGaWxlLCBvciBGb3JtRGF0YSBvYmplY3RcbiAgICAgKiAgcHJldmlvdXNseSBzZXQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBzZXRGb3JtVmFsdWUuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgICAgc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLFxuICAgICAgX3JlYXNvbjogRm9ybVJlc3RvcmVSZWFzb24sXG4gICAgKTogdm9pZCB7XG4gICAgICBpZiAoc3RhdGUpIHtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gc3RhdGUgPT09ICd0cnVlJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRpdGlvbmFsIGxvZ2ljIHdoaWNoIGlzIGJlaW5nIGV4ZWN1dGVkIHdoZW4gdXNlclxuICAgICAqIGludGVyYWN0aW9uIGhhcHBlbnMgYW5kIHN0YXRlIGlzIG5vdCBkaXNhYmxlZC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgd2l0aFVzZXJJbnRlcmFjdGlvbj8oKTogdm9pZDtcblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVGb3JtVmFsdWUoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5jaGVja2VkKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLnNldEZvcm1WYWx1ZSh0aGlzLnZhbHVlLCBgJHt0aGlzLmNoZWNrZWR9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludGVybmFscy5zZXRGb3JtVmFsdWUobnVsbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0cmlnZ2VyZWQgb24ga2V5Ym9hcmQgdXNlciBpbnRlcmFjdGlvbiB3aXRoIGNoZWNrYm94LiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZUtleWJvYXJkSW50ZXJhY3Rpb24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgICAgICB0aGlzLl9oYW5kbGVVc2VySW50ZXJhY3Rpb24oKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqIE1ldGhvZCB0cmlnZ2VyZWQgb24gdXNlciBpbnRlcmFjdGlvbiB3aXRoIGNoZWNrYm94LiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVVzZXJJbnRlcmFjdGlvbiA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMud2l0aFVzZXJJbnRlcmFjdGlvbj8uKCk7XG4gICAgICB0aGlzLmNoZWNrZWQgPSAhdGhpcy5jaGVja2VkO1xuICAgICAgdGhpcy5fYXR0cmlidXRlTXV0YXRpb25CbG9ja2VkID0gdHJ1ZTtcblxuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2RpZENoYW5nZScsIHsgYnViYmxlczogdHJ1ZSB9KSk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBTYmJGb3JtQXNzb2NpYXRlZENoZWNrYm94RWxlbWVudCBhcyB1bmtub3duIGFzIENvbnN0cnVjdG9yPFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hNaXhpblR5cGU+ICZcbiAgICBUO1xufTtcbiIsImltcG9ydCB0eXBlIHsgTGl0RWxlbWVudCwgUHJvcGVydHlWYWx1ZXMgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yLmpzJztcblxuLy8gRGVmaW5lIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBtaXhpblxuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgU2JiSHlkcmF0aW9uTWl4aW5UeXBlIHtcbiAgLyoqXG4gICAqIFJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZWxlbWVudCBoYXMgY29tcGxldGVkIGh5ZHJhdGlvbi5cbiAgICogVGhlIFByb21pc2UgdmFsdWUgaXMgYSBib29sZWFuIHRoYXQgaXMgYHRydWVgIGlmIHRoZSBlbGVtZW50IHJlcXVpcmVkIGh5ZHJhdGlvblxuICAgKiBhbmQgYGZhbHNlYCBpZiBub3QuXG4gICAqXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIG9mIGEgYm9vbGVhbiB0aGF0IHJlc29sdmVzIHRvIHRydWUgb25jZSB0aGUgaHlkcmF0aW9uIGNvbXBsZXRlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgaHlkcmF0aW9uQ29tcGxldGUoKTogUHJvbWlzZTxib29sZWFuPjtcblxuICAvKiogUmV0dXJucyB3aGV0aGVyIGh5ZHJhdGlvbiBpcyByZXF1aXJlZCBhbmQgbm90IGNvbXBsZXRlZC4gKi9cbiAgcHJvdGVjdGVkIGdldCBoeWRyYXRpb25SZXF1aXJlZCgpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoaXMgbWl4aW4gZXh0ZW5kcyBhIGJhc2UgY2xhc3Mgd2l0aCBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIGlmIGh5ZHJhdGlvbiBpcyBjb21wbGV0ZWQuXG4gKiBJdCBhbHNvIGRlbGF5cyBzbG90Y2hhbmdlIGV2ZW50cyB1bnRpbCBoeWRyYXRpb24gaXMgY29tcGxldGUuXG4gKlxuICogQHBhcmFtIGJhc2UgVGhlIGNsYXNzIHRvIGV4dGVuZC5cbiAqIEByZXR1cm5zIEEgY2xhc3MgZXh0ZW5kZWQgd2l0aCB0aGUgaHlkcmF0aW9uIGNoZWNrIGZ1bmN0aW9uYWxpdHkuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJIeWRyYXRpb25NaXhpbiA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxMaXRFbGVtZW50Pj4oXG4gIGJhc2U6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkh5ZHJhdGlvbk1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiSHlkcmF0aW9uTWl4aW5DbGFzcyBleHRlbmRzIGJhc2UgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkh5ZHJhdGlvbk1peGluVHlwZT4ge1xuICAgIHByaXZhdGUgX2h5ZHJhdGlvblJlcXVpcmVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2h5ZHJhdGlvbkNvbXBsZXRlID0gbmV3IFByb21pc2U8Ym9vbGVhbj4oXG4gICAgICAocmVzb2x2ZSkgPT4gKHRoaXMuX3Jlc29sdmVIeWRyYXRpb24gPSByZXNvbHZlKSxcbiAgICApO1xuICAgIHByaXZhdGUgX3Jlc29sdmVIeWRyYXRpb24hOiAoaHlkcmF0aW9uUmVxdWlyZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGVsZW1lbnQgaGFzIGNvbXBsZXRlZCBoeWRyYXRpb24uXG4gICAgICogVGhlIFByb21pc2UgdmFsdWUgaXMgYSBib29sZWFuIHRoYXQgaXMgYHRydWVgIGlmIHRoZSBlbGVtZW50IHJlcXVpcmVkIGh5ZHJhdGlvblxuICAgICAqIGFuZCBgZmFsc2VgIGlmIG5vdC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4gQSBwcm9taXNlIG9mIGEgYm9vbGVhbiB0aGF0IHJlc29sdmVzIHRvIHRydWUgb25jZSB0aGUgaHlkcmF0aW9uIGNvbXBsZXRlZC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGh5ZHJhdGlvbkNvbXBsZXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2h5ZHJhdGlvbkNvbXBsZXRlO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIHdoZXRoZXIgaHlkcmF0aW9uIGlzIHJlcXVpcmVkIGFuZCBub3QgY29tcGxldGVkLiAqL1xuICAgIHByb3RlY3RlZCBnZXQgaHlkcmF0aW9uUmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5faHlkcmF0aW9uUmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBzdXBlciguLi5hcmdzKTtcbiAgICAgIC8vIENoZWNrIHdoZXRoZXIgaHlkcmF0aW9uIGlzIG5lZWRlZCBieSBjaGVja2luZyB3aGV0aGVyIHRoZSBzaGFkb3cgcm9vdFxuICAgICAgLy8gaXMgYXZhaWxhYmxlIGR1cmluZyBjb25zdHJ1Y3Rpb24vdXBncmFkZSBwaGFzZS5cbiAgICAgIHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkID0gISF0aGlzLnNoYWRvd1Jvb3Q7XG4gICAgICBpZiAoIXRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuX3Jlc29sdmVIeWRyYXRpb24oZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRHVyaW5nIGh5ZHJhdGlvbiBwaGFzZSwgd2Ugd2FudCB0byBzdXBwcmVzcyBzbG90Y2hhbmdlIGV2ZW50cyBhcyB0aGV5XG4gICAgICAgIC8vIGNhbiBjYXVzZSByZW5kZXIgZGlmZmVyZW5jZXMsIHdoaWNoIHdvdWxkIGJyZWFrIGh5ZHJhdGlvbi4gQWZ0ZXJcbiAgICAgICAgLy8gaHlkcmF0aW9uIGlzIGNvbXBsZXRlLCB3ZSBkaXNwYXRjaCBhIG1hbnVhbCBzbG90Y2hhbmdlIGV2ZW50LCBpZiB0aGVyZVxuICAgICAgICAvLyBhcmUgZWxlbWVudHMgYXNzaWduZWQgdG8gYSBzbG90LlxuICAgICAgICBjb25zdCBzdXBwcmVzc1Nsb3RjaGFuZ2VFdmVudCA9IChldmVudDogRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5faHlkcmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZXZlbnRPcHRpb25zOiBFdmVudExpc3RlbmVyT3B0aW9ucyA9IHsgY2FwdHVyZTogdHJ1ZSB9O1xuICAgICAgICBjb25zdCBzbG90cyA9IHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvckFsbCgnc2xvdCcpO1xuICAgICAgICBpZiAoc2xvdHM/Lmxlbmd0aCkge1xuICAgICAgICAgIHNsb3RzLmZvckVhY2goKHNsb3QpID0+XG4gICAgICAgICAgICBzbG90LmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCBzdXBwcmVzc1Nsb3RjaGFuZ2VFdmVudCwgZXZlbnRPcHRpb25zKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuaHlkcmF0aW9uQ29tcGxldGUudGhlbigoKSA9PlxuICAgICAgICAgICAgc2xvdHMuZm9yRWFjaCgoc2xvdCkgPT4ge1xuICAgICAgICAgICAgICBzbG90LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCBzdXBwcmVzc1Nsb3RjaGFuZ2VFdmVudCwgZXZlbnRPcHRpb25zKTtcbiAgICAgICAgICAgICAgaWYgKHNsb3QuYXNzaWduZWROb2RlcygpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHNsb3QuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ3Nsb3RjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICAgIC8vIFdoZW4gaHlkcmF0aW9uIGlzIG5lZWRlZCwgd2Ugd2FpdCB0aGUgaHlkcmF0aW9uIHByb2Nlc3MgdG8gZmluaXNoLCB3aGljaCBpcyBwYXRjaGVkXG4gICAgICAvLyBpbnRvIHRoZSB1cGRhdGUgbWV0aG9kIG9mIHRoZSBMaXRFbGVtZW50IGJhc2UgY2xhc3MuXG4gICAgICBzdXBlci51cGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgICBpZiAodGhpcy5faHlkcmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgICAgdGhpcy5faHlkcmF0aW9uUmVxdWlyZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fcmVzb2x2ZUh5ZHJhdGlvbih0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkh5ZHJhdGlvbk1peGluQ2xhc3MgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkh5ZHJhdGlvbk1peGluVHlwZT4gJiBUO1xufTtcbiIsImltcG9ydCB7IGh0bWwsIHR5cGUgTGl0RWxlbWVudCwgbm90aGluZywgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5pbXBvcnQgeyBTYmJIeWRyYXRpb25NaXhpbiwgdHlwZSBTYmJIeWRyYXRpb25NaXhpblR5cGUgfSBmcm9tICcuL2h5ZHJhdGlvbi1taXhpbi5qcyc7XG5cbmltcG9ydCAnLi4vLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxuY29uc3QgU1NSX0NISUxEX0NPVU5UX0FUVFJJQlVURSA9ICdkYXRhLXNzci1jaGlsZC1jb3VudCc7XG5jb25zdCBTTE9UTkFNRV9QUkVGSVggPSAnbGknO1xuXG5leHBvcnQgdHlwZSBTYmJOYW1lZFNsb3RQcm9wZXJ0aWVzID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFyaWFIaWRkZW46IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEhlbHBlciB0eXBlIGZvciB3aWxsVXBkYXRlIG9yIHNpbWlsYXIgY2hlY2tzLlxuICogQWxsb3dzIHRoZSB1c2FnZSBvZiB0aGUgc3RyaW5nIGxpdGVyYWwgJ2xpc3RDaGlsZHJlbicuXG4gKlxuICogQGV4YW1wbGVcbiAqIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczxXaXRoTGlzdENoaWxkcmVuPHRoaXM+Pik6IHZvaWQge1xuICogICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsaXN0Q2hpbGRyZW4nKSkge1xuICogICAgIC4uLlxuICogICB9XG4gKiB9XG4gKi9cbmV4cG9ydCB0eXBlIFdpdGhMaXN0Q2hpbGRyZW48XG4gIFQgZXh0ZW5kcyBTYmJOYW1lZFNsb3RMaXN0TWl4aW5UeXBlPEM+LFxuICBDIGV4dGVuZHMgSFRNTEVsZW1lbnQgPSBIVE1MRWxlbWVudCxcbj4gPSBUICYgeyBsaXN0Q2hpbGRyZW46IENbXSB9O1xuXG5leHBvcnQgZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBTYmJOYW1lZFNsb3RMaXN0TWl4aW5UeXBlPFxuICBDIGV4dGVuZHMgSFRNTEVsZW1lbnQsXG4+IGV4dGVuZHMgU2JiSHlkcmF0aW9uTWl4aW5UeXBlIHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IGxpc3RDaGlsZExvY2FsTmFtZXM6IHN0cmluZ1tdO1xuICBwcm90ZWN0ZWQgYWNjZXNzb3IgbGlzdENoaWxkcmVuOiBDW107XG4gIHByb3RlY3RlZCByZW5kZXJMaXN0KFxuICAgIGF0dHJpYnV0ZXM/OiB7XG4gICAgICBjbGFzcz86IHN0cmluZztcbiAgICAgIGFyaWFMYWJlbD86IHN0cmluZztcbiAgICAgIGFyaWFMYWJlbGxlZGJ5Pzogc3RyaW5nO1xuICAgIH0sXG4gICAgbGlzdEl0ZW1BdHRyaWJ1dGVzPzoge1xuICAgICAgbG9jYWxOYW1lVmlzdWFsT25seT86IHN0cmluZ1tdO1xuICAgIH0sXG4gICk6IFRlbXBsYXRlUmVzdWx0O1xuICBwcm90ZWN0ZWQgbGlzdFNsb3RFbnRyaWVzKCk6IFNiYk5hbWVkU2xvdFByb3BlcnRpZXNbXTtcbiAgcHJvdGVjdGVkIHJlbmRlckhpZGRlblNsb3QoKTogVGVtcGxhdGVSZXN1bHQ7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJOYW1lZFNsb3RMaXN0TWl4aW4gPSA8XG4gIEMgZXh0ZW5kcyBIVE1MRWxlbWVudCxcbiAgVCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4sXG4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJOYW1lZFNsb3RMaXN0TWl4aW5UeXBlPEM+PiAmIFQgPT4ge1xuICAvKipcbiAgICogVGhpcyBiYXNlIGNsYXNzIHByb3ZpZGVzIG5hbWVkIHNsb3QgbGlzdCBvYnNlcnZlciBmdW5jdGlvbmFsaXR5LlxuICAgKiBUaGlzIGFsbG93cyB1c2luZyB0aGUgcGF0dGVybiBvZiByZW5kZXJpbmcgYSBuYW1lZCBzbG90IGZvciBlYWNoIGNoaWxkLCB3aGljaCBhbGxvd3NcbiAgICogd3JhcHBpbmcgY2hpbGRyZW4gaW4gYW4gdWwvbGkgbGlzdC5cbiAgICovXG4gIGFic3RyYWN0IGNsYXNzIE5hbWVkU2xvdExpc3RFbGVtZW50PEMgZXh0ZW5kcyBIVE1MRWxlbWVudCA9IEhUTUxFbGVtZW50PlxuICAgIGV4dGVuZHMgU2JiSHlkcmF0aW9uTWl4aW4oc3VwZXJDbGFzcylcbiAgICBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiTmFtZWRTbG90TGlzdE1peGluVHlwZTxDPj5cbiAge1xuICAgIC8qKiBBIGxpc3Qgb2YgbG93ZXItY2FzZWQgdGFnIG5hbWVzIHRvIG1hdGNoIGFnYWluc3QuIChlLmcuIGBzYmItbGlua2ApICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IGxpc3RDaGlsZExvY2FsTmFtZXM6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogQSBsaXN0IG9mIGNoaWxkcmVuIHdpdGggdGhlIGRlZmluZWQgdGFnIG5hbWVzLlxuICAgICAqIFRoaXMgYXJyYXkgaXMgb25seSB1cGRhdGVkIGlmIHRoZXJlIGlzIGFuIGFjdHVhbCBjaGFuZ2VcbiAgICAgKiB0byB0aGUgY2hpbGQgZWxlbWVudHMuXG4gICAgICovXG4gICAgQHN0YXRlKCkgcHJvdGVjdGVkIGFjY2Vzc29yIGxpc3RDaGlsZHJlbjogQ1tdID0gW107XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgICAgdGhpcy5zaGFkb3dSb290Py5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgdGhpcy5faGFuZGxlU2xvdGNoYW5nZSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgICB0aGlzLnNoYWRvd1Jvb3Q/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCB0aGlzLl9oYW5kbGVTbG90Y2hhbmdlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9oYW5kbGVTbG90Y2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgbGlzdENoaWxkcmVuID0gQXJyYXkuZnJvbSh0aGlzLmNoaWxkcmVuID8/IFtdKS5maWx0ZXIoKGUpOiBlIGlzIEMgPT5cbiAgICAgICAgdGhpcy5saXN0Q2hpbGRMb2NhbE5hbWVzLmluY2x1ZGVzKGUubG9jYWxOYW1lKSxcbiAgICAgICk7XG4gICAgICAvLyBJZiB0aGUgc2xvdHRlZCBjaGlsZCBpbnN0YW5jZXMgaGF2ZSBub3QgY2hhbmdlZCwgd2UgY2FuIHNraXAgc3luY2luZyBhbmQgdXBkYXRpbmdcbiAgICAgIC8vIHRoZSBsaW5rIHJlZmVyZW5jZSBsaXN0LlxuICAgICAgaWYgKFxuICAgICAgICBsaXN0Q2hpbGRyZW4ubGVuZ3RoID09PSB0aGlzLmxpc3RDaGlsZHJlbi5sZW5ndGggJiZcbiAgICAgICAgdGhpcy5saXN0Q2hpbGRyZW4uZXZlcnkoKGUsIGkpID0+IGxpc3RDaGlsZHJlbltpXSA9PT0gZSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGlzdENoaWxkcmVuXG4gICAgICAgIC5maWx0ZXIoKGMpID0+ICFsaXN0Q2hpbGRyZW4uaW5jbHVkZXMoYykpXG4gICAgICAgIC5mb3JFYWNoKChjKSA9PiBjLnJlbW92ZUF0dHJpYnV0ZSgnc2xvdCcpKTtcbiAgICAgIHRoaXMubGlzdENoaWxkcmVuID0gbGlzdENoaWxkcmVuO1xuICAgICAgdGhpcy5saXN0Q2hpbGRyZW4uZm9yRWFjaCgoYywgaW5kZXgpID0+XG4gICAgICAgIGMuc2V0QXR0cmlidXRlKCdzbG90JywgYCR7U0xPVE5BTUVfUFJFRklYfS0ke2luZGV4fWApLFxuICAgICAgKTtcblxuICAgICAgLy8gUmVtb3ZlIHRoZSBzc3IgYXR0cmlidXRlLCBvbmNlIHdlIGhhdmUgYWN0dWFsbHkgaW5pdGlhbGl6ZWQgdGhlIGNoaWxkcmVuIGVsZW1lbnRzLlxuICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoU1NSX0NISUxEX0NPVU5UX0FUVFJJQlVURSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJlbmRlcnMgbGlzdCBhbmQgbGlzdCBzbG90cyBmb3Igc2xvdHRlZCBjaGlsZHJlbiBvciBhIG51bWJlciBvZiBsaXN0IHNsb3RzXG4gICAgICogY29ycmVzcG9uZGluZyB0byB0aGUgYGRhdGEtc3NyLWNoaWxkLWNvdW50YCBhdHRyaWJ1dGUgdmFsdWUuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIGEgcG9zc2libGUgb3B0aW1pemF0aW9uIGZvciBTU1IsIGFzIGluIGFuIFNTUiBMaXQgZW52aXJvbm1lbnRcbiAgICAgKiBvdGhlciBlbGVtZW50cyBhcmUgbm90IGF2YWlsYWJsZSwgYnV0IG1pZ2h0IGJlIGF2YWlsYWJsZSBpbiB0aGUgbWV0YVxuICAgICAqIGZyYW1ld29yayB3cmFwcGVyIChsaWtlIGUuZy4gUmVhY3QpLiBUaGlzIGFsbG93cyB0byBwcm92aWRlIHRoZSBudW1iZXIgb2ZcbiAgICAgKiBjaGlsZHJlbiB0byBiZSBwYXNzZWQgdmlhIHRoZSBgZGF0YS1zc3ItY2hpbGQtY291bnRgIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVuZGVyTGlzdChcbiAgICAgIGF0dHJpYnV0ZXM6IHsgY2xhc3M/OiBzdHJpbmc7IGFyaWFMYWJlbD86IHN0cmluZzsgYXJpYUxhYmVsbGVkYnk/OiBzdHJpbmcgfSA9IHt9LFxuICAgICAgbGlzdEl0ZW1BdHRyaWJ1dGVzOiB7IGxvY2FsTmFtZVZpc3VhbE9ubHk/OiBzdHJpbmdbXSB9ID0ge30sXG4gICAgKTogVGVtcGxhdGVSZXN1bHQge1xuICAgICAgY29uc3QgbGlzdFNsb3ROYW1lczogU2JiTmFtZWRTbG90UHJvcGVydGllc1tdID0gdGhpcy5saXN0U2xvdEVudHJpZXMobGlzdEl0ZW1BdHRyaWJ1dGVzKTtcblxuICAgICAgaWYgKGxpc3RTbG90TmFtZXMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgICAgPHVsXG4gICAgICAgICAgICBjbGFzcz0ke2F0dHJpYnV0ZXMuY2xhc3MgfHwgdGhpcy5sb2NhbE5hbWV9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPSR7YXR0cmlidXRlcy5hcmlhTGFiZWwgfHwgbm90aGluZ31cbiAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT0ke2F0dHJpYnV0ZXMuYXJpYUxhYmVsbGVkYnkgfHwgbm90aGluZ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICAke2xpc3RTbG90TmFtZXMubWFwKFxuICAgICAgICAgICAgICAoc2xvdCkgPT4gaHRtbGBcbiAgICAgICAgICAgICAgICA8bGkgYXJpYS1oaWRkZW49JHtzbG90LmFyaWFIaWRkZW4gfHwgbm90aGluZ30+XG4gICAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPSR7c2xvdC5uYW1lfT48L3Nsb3Q+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgYCxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgICAke3RoaXMucmVuZGVySGlkZGVuU2xvdCgpfVxuICAgICAgICBgO1xuICAgICAgfSBlbHNlIGlmIChsaXN0U2xvdE5hbWVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gaHRtbGA8c2JiLXNjcmVlbi1yZWFkZXItb25seT4ke2F0dHJpYnV0ZXMuYXJpYUxhYmVsfTwvc2JiLXNjcmVlbi1yZWFkZXItb25seT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz0ke2F0dHJpYnV0ZXMuY2xhc3MgfHwgdGhpcy5sb2NhbE5hbWV9PlxuICAgICAgICAgICAgPHNwYW4+PHNsb3QgbmFtZT0ke2xpc3RTbG90TmFtZXNbMF0ubmFtZX0+PC9zbG90Pjwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgJHt0aGlzLnJlbmRlckhpZGRlblNsb3QoKX0gYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbmRlckhpZGRlblNsb3QoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIFNiYk5hbWVkU2xvdFByb3BlcnRpZXMsIHdoaWNoIGhvbGRzIHRoZSBsaXN0IHNsb3QgbmFtZXMgYW5kIHRoZSBoaWRkZW4gcHJvcGVydHk7XG4gICAgICogaXRzIGxlbmd0aCBjb3JyZXNwb25kcyB0byB0aGUgbnVtYmVyIG9mIG1hdGNoZWQgY2hpbGRyZW4gb3IgdGhlIGBkYXRhLXNzci1jaGlsZC1jb3VudGAgYXR0cmlidXRlIHZhbHVlLlxuICAgICAqXG4gICAgICogVGhpcyBpcyBhIHBvc3NpYmxlIG9wdGltaXphdGlvbiBmb3IgU1NSLCBhcyBpbiBhbiBTU1IgTGl0IGVudmlyb25tZW50XG4gICAgICogb3RoZXIgZWxlbWVudHMgYXJlIG5vdCBhdmFpbGFibGUsIGJ1dCBtaWdodCBiZSBhdmFpbGFibGUgaW4gdGhlIG1ldGFcbiAgICAgKiBmcmFtZXdvcmsgd3JhcHBlciAobGlrZSBlLmcuIFJlYWN0KS4gVGhpcyBhbGxvd3MgdG8gcHJvdmlkZSB0aGUgbnVtYmVyIG9mXG4gICAgICogY2hpbGRyZW4gdG8gYmUgcGFzc2VkIHZpYSB0aGUgYGRhdGEtc3NyLWNoaWxkLWNvdW50YCBhdHRyaWJ1dGUgdmFsdWUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGxpc3RTbG90RW50cmllcyhsaXN0SXRlbUF0dHJpYnV0ZXM6IHtcbiAgICAgIGxvY2FsTmFtZVZpc3VhbE9ubHk/OiBzdHJpbmdbXTtcbiAgICB9KTogU2JiTmFtZWRTbG90UHJvcGVydGllc1tdIHtcbiAgICAgIGNvbnN0IGxpc3RDaGlsZHJlbiA9IHRoaXMubGlzdENoaWxkcmVuLmxlbmd0aFxuICAgICAgICA/IHRoaXMubGlzdENoaWxkcmVuXG4gICAgICAgIDogQXJyYXkuZnJvbSh7IGxlbmd0aDogKyh0aGlzLmdldEF0dHJpYnV0ZShTU1JfQ0hJTERfQ09VTlRfQVRUUklCVVRFKSA/PyAwKSB9KTtcbiAgICAgIHJldHVybiBsaXN0Q2hpbGRyZW4ubWFwKChlLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogYCR7U0xPVE5BTUVfUFJFRklYfS0ke2l9YCxcbiAgICAgICAgICBhcmlhSGlkZGVuOlxuICAgICAgICAgICAgbGlzdEl0ZW1BdHRyaWJ1dGVzPy5sb2NhbE5hbWVWaXN1YWxPbmx5Py5pbmNsdWRlcygoZSBhcyBIVE1MRWxlbWVudCkubG9jYWxOYW1lKSA/P1xuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgaGlkZGVuIHNsb3QsIHdoaWNoIGlzIGludGVuZGVkIGFzIHRoZSBjaGlsZHJlbiBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgICAqIFdoZW4gYW4gZWxlbWVudCB3aXRob3V0IGEgc2xvdCBhdHRyaWJ1dGUgaXMgc2xvdHRlZCB0byB0aGUgZWxlbWVudCwgaXQgdHJpZ2dlcnNcbiAgICAgKiB0aGUgc2xvdGNoYW5nZSBldmVudCwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gYXNzaWduIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSBuYW1lZCBzbG90LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZW5kZXJIaWRkZW5TbG90KCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAgIHJldHVybiBodG1sYDxzcGFuIGhpZGRlbj48c2xvdD48L3Nsb3Q+PC9zcGFuPmA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE5hbWVkU2xvdExpc3RFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJOYW1lZFNsb3RMaXN0TWl4aW5UeXBlPEM+PiAmIFQ7XG59O1xuIiwiaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYk5lZ2F0aXZlTWl4aW5UeXBlIHtcbiAgcHVibGljIGFjY2Vzc29yIG5lZ2F0aXZlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVuaGFuY2UgeW91ciBjb21wb25lbnQgd2l0aCBhIG5lZ2F0aXZlIHByb3BlcnR5LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiTmVnYXRpdmVNaXhpbiA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxMaXRFbGVtZW50Pj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYk5lZ2F0aXZlTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJOZWdhdGl2ZUVsZW1lbnQgZXh0ZW5kcyBzdXBlckNsYXNzIGltcGxlbWVudHMgU2JiTmVnYXRpdmVNaXhpblR5cGUge1xuICAgIC8qKiBOZWdhdGl2ZSBjb2xvcmluZyB2YXJpYW50IGZsYWcuICovXG4gICAgQGZvcmNlVHlwZSgpXG4gICAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICAgIHB1YmxpYyBhY2Nlc3NvciBuZWdhdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIFNiYk5lZ2F0aXZlRWxlbWVudCBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYk5lZ2F0aXZlTWl4aW5UeXBlPiAmIFQ7XG59O1xuIiwiaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJy4uL2V2ZW50aW5nLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYlBhbmVsTWl4aW5UeXBlIHtcbiAgcHVibGljIGFjY2Vzc29yIGNvbG9yOiAnd2hpdGUnIHwgJ21pbGsnO1xuICBwdWJsaWMgYWNjZXNzb3IgYm9yZGVybGVzczogYm9vbGVhbjtcbiAgcHVibGljIGFjY2Vzc29yIGV4cGFuc2lvblN0YXRlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFNiYlBhbmVsU2l6ZSA9ICdzJyB8ICdtJztcblxuLyoqXG4gKiBNaXhpbiBmb3IgY29tbW9uIHBhbmVsIGJlaGF2aW9yc1xuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiUGFuZWxNaXhpbiA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxMaXRFbGVtZW50Pj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYlBhbmVsTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJQYW5lbEVsZW1lbnQgZXh0ZW5kcyBzdXBlckNsYXNzIGltcGxlbWVudHMgU2JiUGFuZWxNaXhpblR5cGUge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgICAgcGFuZWxDb25uZWN0ZWQ6ICdwYW5lbENvbm5lY3RlZCcsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIC8qKiBUaGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgcGFuZWwuICovXG4gICAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIGNvbG9yOiAnd2hpdGUnIHwgJ21pbGsnID0gJ3doaXRlJztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB1bnNlbGVjdGVkIHBhbmVsIGhhcyBhIGJvcmRlci4gKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gICAgcHVibGljIGFjY2Vzc29yIGJvcmRlcmxlc3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBAaW50ZXJuYWwgdXNlZCBmb3IgYWNjZXNzaWJpbGl0eSBsYWJlbCB3aGVuIGluIGV4cGFuc2lvbiBwYW5lbCAqL1xuICAgIEBmb3JjZVR5cGUoKVxuICAgIEBwcm9wZXJ0eSgpXG4gICAgcHVibGljIGFjY2Vzc29yIGV4cGFuc2lvblN0YXRlOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIEludGVybmFsIGV2ZW50IHRoYXQgZW1pdHMgd2hlbiB0aGUgY2hlY2tib3ggaXMgbG9hZGVkLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3BhbmVsQ29ubmVjdGVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgICAgdGhpcyxcbiAgICAgIFNiYlBhbmVsRWxlbWVudC5ldmVudHMucGFuZWxDb25uZWN0ZWQsXG4gICAgICB7IGJ1YmJsZXM6IHRydWUgfSxcbiAgICApO1xuXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcblxuICAgICAgdGhpcy5fcGFuZWxDb25uZWN0ZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBTYmJQYW5lbEVsZW1lbnQgYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJQYW5lbE1peGluVHlwZT4gJiBUO1xufTtcbiIsImltcG9ydCB0eXBlIHsgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4vY29uc3RydWN0b3IuanMnO1xuXG4vLyBEZWZpbmUgdGhlIGludGVyZmFjZSBmb3IgdGhlIG1peGluXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBTYmJVcGRhdGVTY2hlZHVsZXJNaXhpblR5cGUge1xuICBwcm90ZWN0ZWQgc3RhcnRVcGRhdGUoKTogdm9pZDtcbiAgcHJvdGVjdGVkIGNvbXBsZXRlVXBkYXRlKCk6IHZvaWQ7XG59XG5cbi8qKlxuICogVGhpcyBtaXhpbiBhbGxvd3Mgc2NoZWR1bGluZyBtYW51YWwgdXBkYXRlcywgd2hpY2ggYWZmZWN0IHVwZGF0ZUNvbXBsZXRlLlxuICogQHBhcmFtIGJhc2UgVGhlIGNsYXNzIHRvIGV4dGVuZC5cbiAqIEByZXR1cm5zIEEgY2xhc3MgZXh0ZW5kZWQgd2l0aCB0aGUgc2xvdCBjaGlsZCBvYnNlcnZlciBmdW5jdGlvbmFsaXR5LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiVXBkYXRlU2NoZWR1bGVyTWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4+KFxuICBiYXNlOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJVcGRhdGVTY2hlZHVsZXJNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYlVwZGF0ZVNjaGVkdWxlckVsZW1lbnRcbiAgICBleHRlbmRzIGJhc2VcbiAgICBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiVXBkYXRlU2NoZWR1bGVyTWl4aW5UeXBlPlxuICB7XG4gICAgcHJpdmF0ZSBfdXBkYXRlUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIHByaXZhdGUgX3VwZGF0ZVJlc29sdmUgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIHByb3RlY3RlZCBzdGFydFVwZGF0ZSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocikgPT4gKHRoaXMuX3VwZGF0ZVJlc29sdmUgPSByKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbXBsZXRlVXBkYXRlKCk6IHZvaWQge1xuICAgICAgdGhpcy5fdXBkYXRlUmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBnZXRVcGRhdGVDb21wbGV0ZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN1cGVyLmdldFVwZGF0ZUNvbXBsZXRlKCk7XG4gICAgICBhd2FpdCB0aGlzLl91cGRhdGVQcm9taXNlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYlVwZGF0ZVNjaGVkdWxlckVsZW1lbnQgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYlVwZGF0ZVNjaGVkdWxlck1peGluVHlwZT4gJlxuICAgIFQ7XG59O1xuIl0sIm5hbWVzIjpbIl9hIiwic3RhdGUiLCJTYmJQYW5lbEVsZW1lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFvQmEsTUFBQSxtQkFBbUIsQ0FDOUIsZUFDaUQ7TUFDbEMsc0JBQWtCLE1BQUE7O3NCQUFTOzs7O0FBQTNCLFdBQUEsbUJBQTJCLFlBQVU7QUFBQTs7QUFLbEQsdURBQUEsa0JBQUEsTUFBQSx3QkFBb0MsS0FBSzs7OztNQUF6QyxJQUFnQixXQUEwQjtBQUFBLGVBQUEsbUJBQUE7QUFBQSxNQUFBO0FBQUEsTUFBMUMsSUFBZ0IsU0FBMEIsT0FBQTtBQUFBLDJCQUFBLDRCQUFBO0FBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFNaEMsdUJBQW9CO0FBQ3JCLGVBQUE7QUFBQSxNQUFBO0FBQUEsT0FQ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
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* This class exists to facilitate the test migration from stencil to lit.
|
|
3
3
|
* It mimics the API that stencil provided to test events.
|
|
4
|
-
*
|
|
5
|
-
* TODO: Document me
|
|
6
4
|
*/
|
|
7
5
|
export declare class EventSpy<T extends Event> {
|
|
8
6
|
private _event;
|
|
9
7
|
private readonly _target;
|
|
10
|
-
private _count;
|
|
11
8
|
get count(): number;
|
|
12
|
-
private
|
|
9
|
+
private _count;
|
|
13
10
|
get events(): T[];
|
|
11
|
+
private _events;
|
|
14
12
|
get firstEvent(): T | null;
|
|
15
13
|
get lastEvent(): T | null;
|
|
14
|
+
private _promiseEventMap;
|
|
16
15
|
constructor(_event: string, _target?: Node | null);
|
|
16
|
+
calledOnce(timeout?: number): Promise<T>;
|
|
17
|
+
calledTimes(count: number, timeout?: number): Promise<T>;
|
|
18
|
+
private _wrapPromiseWithTimeout;
|
|
17
19
|
private _listenForEvent;
|
|
18
20
|
}
|
|
19
21
|
//# sourceMappingURL=event-spy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-spy.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/testing/event-spy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event-spy.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/testing/event-spy.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,qBAAa,QAAQ,CAAC,CAAC,SAAS,KAAK;IAsBjC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,OAAO;IAtB1B,IAAW,KAAK,IAAI,MAAM,CAEzB;IACD,OAAO,CAAC,MAAM,CAAa;IAE3B,IAAW,MAAM,IAAI,CAAC,EAAE,CAEvB;IACD,OAAO,CAAC,OAAO,CAAW;IAE1B,IAAW,UAAU,IAAI,CAAC,GAAG,IAAI,CAEhC;IAED,IAAW,SAAS,IAAI,CAAC,GAAG,IAAI,CAE/B;IAED,OAAO,CAAC,gBAAgB,CAA6C;gBAG3D,MAAM,EAAE,MAAM,EACL,OAAO,GAAE,IAAI,GAAG,IAAW;IASvC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAIxC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,SAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IA6B7D,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,eAAe;CAOxB"}
|
|
@@ -17,16 +17,50 @@ class EventSpy {
|
|
|
17
17
|
this._target = _target;
|
|
18
18
|
this._count = 0;
|
|
19
19
|
this._events = [];
|
|
20
|
+
this._promiseEventMap = /* @__PURE__ */ new Map();
|
|
20
21
|
if (!this._target) {
|
|
21
22
|
this._target = document;
|
|
22
23
|
}
|
|
23
24
|
this._listenForEvent();
|
|
24
25
|
}
|
|
26
|
+
calledOnce(timeout) {
|
|
27
|
+
return this.calledTimes(1, timeout);
|
|
28
|
+
}
|
|
29
|
+
calledTimes(count, timeout = 2e3) {
|
|
30
|
+
if (this.count > count) {
|
|
31
|
+
return Promise.reject(`Event has been emitted more than expected (expected ${count}, actual ${this.count}`);
|
|
32
|
+
} else if (this.count === count) {
|
|
33
|
+
return Promise.resolve(this.events[count - 1]);
|
|
34
|
+
} else if (this._promiseEventMap.has(count)) {
|
|
35
|
+
return this._promiseEventMap.get(count).promise;
|
|
36
|
+
} else {
|
|
37
|
+
let resolve;
|
|
38
|
+
let reject;
|
|
39
|
+
const promise = new Promise((resolveFunction, rejectFunction) => {
|
|
40
|
+
resolve = resolveFunction;
|
|
41
|
+
reject = rejectFunction;
|
|
42
|
+
});
|
|
43
|
+
const promiseWithExecutor = {
|
|
44
|
+
promise,
|
|
45
|
+
resolve,
|
|
46
|
+
reject
|
|
47
|
+
};
|
|
48
|
+
this._promiseEventMap.set(count, promiseWithExecutor);
|
|
49
|
+
return this._wrapPromiseWithTimeout(promiseWithExecutor, count, timeout);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
_wrapPromiseWithTimeout(promiseWithExecutor, count, timeout) {
|
|
53
|
+
const clearTimeoutId = setTimeout(() => promiseWithExecutor.reject(`awaiting calledTimes(${count}) results in timeout`), timeout);
|
|
54
|
+
promiseWithExecutor.promise.then(() => clearTimeout(clearTimeoutId));
|
|
55
|
+
return promiseWithExecutor.promise;
|
|
56
|
+
}
|
|
25
57
|
_listenForEvent() {
|
|
26
58
|
var _a;
|
|
27
59
|
(_a = this._target) == null ? void 0 : _a.addEventListener(this._event, (ev) => {
|
|
60
|
+
var _a2;
|
|
28
61
|
this._events.push(ev);
|
|
29
62
|
this._count++;
|
|
63
|
+
(_a2 = this._promiseEventMap.get(this.count)) == null ? void 0 : _a2.resolve(ev);
|
|
30
64
|
});
|
|
31
65
|
}
|
|
32
66
|
}
|
|
@@ -125,4 +159,4 @@ export {
|
|
|
125
159
|
waitForImageReady,
|
|
126
160
|
waitForLitRender
|
|
127
161
|
};
|
|
128
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvdGVzdGluZy9ldmVudC1zcHkudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS90ZXN0aW5nL21vY2hhLWV4dGVuc2lvbnMudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS90ZXN0aW5nL3Njcm9sbC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL3Rlc3Rpbmcvd2FpdC1mb3ItY29uZGl0aW9uLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvdGVzdGluZy93YWl0LWZvci1ldmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL3Rlc3Rpbmcvd2FpdC1mb3ItaW1hZ2UtcmVhZHkudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS90ZXN0aW5nL3dhaXQtZm9yLXJlbmRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgY2xhc3MgZXhpc3RzIHRvIGZhY2lsaXRhdGUgdGhlIHRlc3QgbWlncmF0aW9uIGZyb20gc3RlbmNpbCB0byBsaXQuXG4gKiBJdCBtaW1pY3MgdGhlIEFQSSB0aGF0IHN0ZW5jaWwgcHJvdmlkZWQgdG8gdGVzdCBldmVudHMuXG4gKlxuICogVE9ETzogRG9jdW1lbnQgbWVcbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50U3B5PFQgZXh0ZW5kcyBFdmVudD4ge1xuICBwcml2YXRlIF9jb3VudDogbnVtYmVyID0gMDtcbiAgcHVibGljIGdldCBjb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jb3VudDtcbiAgfVxuXG4gIHByaXZhdGUgX2V2ZW50czogVFtdID0gW107XG4gIHB1YmxpYyBnZXQgZXZlbnRzKCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlyc3RFdmVudCgpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLmxlbmd0aCA/IHRoaXMuZXZlbnRzWzBdIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFzdEV2ZW50KCk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudHMubGVuZ3RoID8gdGhpcy5ldmVudHNbdGhpcy5ldmVudHMubGVuZ3RoIC0gMV0gOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2V2ZW50OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFyZ2V0OiBOb2RlIHwgbnVsbCA9IG51bGwsXG4gICkge1xuICAgIGlmICghdGhpcy5fdGFyZ2V0KSB7XG4gICAgICB0aGlzLl90YXJnZXQgPSBkb2N1bWVudDtcbiAgICB9XG4gICAgdGhpcy5fbGlzdGVuRm9yRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbkZvckV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuX3RhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcih0aGlzLl9ldmVudCwgKGV2KSA9PiB7XG4gICAgICB0aGlzLl9ldmVudHMucHVzaChldiBhcyBUKTtcbiAgICAgIHRoaXMuX2NvdW50Kys7XG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgRnVuYywgU3VpdGUsIFRlc3QgfSBmcm9tICdtb2NoYSc7XG5cbi8qKlxuICogU2tpcCB0aGUgYGRlc2NyaWJlYCBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXRcbiAqL1xuZXhwb3J0IGNvbnN0IGRlc2NyaWJlSWYgPSAoXG4gIGNvbmRpdGlvbjogYm9vbGVhbixcbiAgdGl0bGU6IHN0cmluZyxcbiAgZm46ICh0aGlzOiBTdWl0ZSkgPT4gdm9pZCxcbik6IFN1aXRlIHwgdm9pZCA9PiB7XG4gIGlmIChjb25kaXRpb24pIHtcbiAgICByZXR1cm4gTW9jaGEuZGVzY3JpYmUodGl0bGUsIGZuKTtcbiAgfVxufTtcblxuLyoqXG4gKiBTa2lwIHRoZSBgdGVzdGAgaWYgdGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0XG4gKi9cbmV4cG9ydCBjb25zdCB0ZXN0SWYgPSAoY29uZGl0aW9uOiBib29sZWFuLCB0aXRsZTogc3RyaW5nLCBmbj86IEZ1bmMpOiBUZXN0IHwgdm9pZCA9PiB7XG4gIGlmIChjb25kaXRpb24pIHtcbiAgICByZXR1cm4gTW9jaGEudGVzdCh0aXRsZSwgZm4pO1xuICB9XG59O1xuIiwiLyoqXG4gKiBDYW4gYmUgdXNlZCBpbiB0ZXN0cyB3aGVyZSBzY3JvbGwgZXZlbnRzIGFyZSBub3QgdHJpZ2dlcmVkIGJ5IGRlZmF1bHQuXG4gKiBAcGFyYW0gb3B0aW9ucyBTY3JvbGxUb09wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vY2tTY3JvbGxUbyhvcHRpb25zOiBTY3JvbGxUb09wdGlvbnMpOiB2b2lkIHtcbiAgd2luZG93LnNjcm9sbFRvKG9wdGlvbnMpO1xuXG4gIC8vIFdlIG5lZWQgdG8gbWFudWFsbHkgZGlzcGF0Y2hpbmcgdGhlIHNjcm9sbCBhcyB0aGUgc2Nyb2xsVG9cbiAgLy8gZG9lcyBub3QgZmlyZSBhIHNjcm9sbCBldmVudCBpbiB0ZXN0IGVudi5cbiAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ3Njcm9sbCcpKTtcbn1cbiIsImV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yQ29uZGl0aW9uKFxuICBjb25kaXRpb246ICgpID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+LFxuICBpbnRlcnZhbCA9IDMwLFxuICB0aW1lb3V0SW5NaWxsaXNlY29uZHMgPSAyICogMTAwMCxcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7XG4gIGxldCBjb3VudGVyID0gMDtcbiAgZnVuY3Rpb24gY2hlY2tDb25kaXRpb24oKTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvdW50ZXIrKztcbiAgICByZXR1cm4gY29uZGl0aW9uKCk7XG4gIH1cbiAgd2hpbGUgKFxuICAgICEoYXdhaXQgY2hlY2tDb25kaXRpb24oKSkgJiZcbiAgICBzdGFydC5nZXRUaW1lKCkgKyB0aW1lb3V0SW5NaWxsaXNlY29uZHMgPj0gbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgKSB7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgaW50ZXJ2YWwpKTtcbiAgfVxuICBpZiAoc3RhcnQuZ2V0VGltZSgpICsgdGltZW91dEluTWlsbGlzZWNvbmRzIDwgbmV3IERhdGUoKS5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICBgd2FpdEZvckNvbmRpdGlvbiB0aW1lb3V0OiAke2NvbmRpdGlvbi50b1N0cmluZygpfSwgYXR0ZW1wdHM6ICR7Y291bnRlcn0sIHN0YXJ0OiAke3N0YXJ0LmdldFRpbWUoKX0sIGVuZDogJHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiB3YWl0Rm9yRXZlbnQoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBldmVudE5hbWU6IHN0cmluZyxcbiAgdGltZW91dCA9IDEwMDAsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzaWduYWwgPSBBYm9ydFNpZ25hbC50aW1lb3V0KHRpbWVvdXQpO1xuICAgIGNvbnN0IHRpbWVvdXRSZWFjaGVkID0gKCk6IHZvaWQgPT4gcmVqZWN0KGBUaW1lb3V0IG9mICR7dGltZW91dH0gcmVhY2hlZGApO1xuICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIHRpbWVvdXRSZWFjaGVkKTtcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBldmVudE5hbWUsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIHRpbWVvdXRSZWFjaGVkKTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSxcbiAgICAgIHsgcGFzc2l2ZTogdHJ1ZSwgc2lnbmFsIH0sXG4gICAgKTtcbiAgfSk7XG59XG4iLCJpbXBvcnQgdHlwZSB7IFNiYkltYWdlRWxlbWVudCB9IGZyb20gJy4uLy4uL2ltYWdlLmpzJztcbmltcG9ydCB7IGlzU2FmYXJpIH0gZnJvbSAnLi4vZG9tLmpzJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JJbWFnZVJlYWR5KFxuICBlbGVtZW50OiBIVE1MSW1hZ2VFbGVtZW50IHwgU2JiSW1hZ2VFbGVtZW50LFxuICB0aW1lb3V0SW5NaWxsaXNlY29uZHMgPSAyICogMTAwMCxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBpbWdFbGVtZW50ID1cbiAgICBlbGVtZW50LmxvY2FsTmFtZSA9PT0gJ3NiYi1pbWFnZSdcbiAgICAgID8gKGVsZW1lbnQuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcjxIVE1MSW1hZ2VFbGVtZW50PignLnNiYi1pbWFnZV9faW1nJykgPz8gbnVsbClcbiAgICAgIDogKGVsZW1lbnQgYXMgSFRNTEltYWdlRWxlbWVudCk7XG5cbiAgaWYgKCFpbWdFbGVtZW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbWcgdGFnIG5vdCBmb3VuZCcpO1xuICB9XG5cbiAgaWYgKCFlbGVtZW50LmNvbXBsZXRlKSB7XG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCdpbWFnZSBsb2FkaW5nIHRpbWVvdXQnKSwgdGltZW91dEluTWlsbGlzZWNvbmRzKTtcbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuXG4gICAgICAgIGltZ0VsZW1lbnQuZGVjb2RlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgaWYgKGlzU2FmYXJpICYmIGVsZW1lbnQubG9jYWxOYW1lID09PSAnc2JiLWltYWdlJykge1xuICAgICAgICAgICAgLy8gT24gYSB0ZXN0IHBhZ2UgdGhpcyBpcyBvbmx5IGhhcHBlbmluZyBvbmNlIChmaXJzdCB0aW1lIGFuIGltYWdlIGlzIGxvYWRlZCkuIFRoZXJlZm9yZSwgdGhlIGltcGFjdCBpcyB2ZXJ5IHNtYWxsLlxuICAgICAgICAgICAgc2V0VGltZW91dChyZXNvbHZlLCAxMDApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIHJlamVjdCgnaW1hZ2UgZXJyb3InKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGF3YWl0IGltZ0VsZW1lbnQuZGVjb2RlKCk7XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgUmVhY3RpdmVFbGVtZW50IH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHR5cGUgeyBTYmJIeWRyYXRpb25NaXhpblR5cGUgfSBmcm9tICcuLi9taXhpbnMuanMnO1xuXG4vKipcbiAqIFRlc3RzIGlmIGFuIGVsZW1lbnQgaXMgYSBMaXQgYFJlYWN0aXZlRWxlbWVudGAuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnQgdG8gdGVzdC5cbiAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZWxlbWVudCBpcyBhIGBSZWFjdGl2ZUVsZW1lbnRgLlxuICovXG5leHBvcnQgY29uc3QgaXNSZWFjdGl2ZUVsZW1lbnQgPSAoXG4gIGVsZW1lbnQ6IEVsZW1lbnQsXG4pOiBlbGVtZW50IGlzIFJlYWN0aXZlRWxlbWVudCAmIFBhcnRpYWw8U2JiSHlkcmF0aW9uTWl4aW5UeXBlPiA9PiB7XG4gIHJldHVybiBCb29sZWFuKChlbGVtZW50IGFzIFJlYWN0aXZlRWxlbWVudCkudXBkYXRlQ29tcGxldGUpO1xufTtcblxuY29uc3QgcHJvbWlzZUNvbXBsZXRlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbi8qKlxuICogV2FpdHMgZm9yIGFsbCBMaXQgYFJlYWN0aXZlRWxlbWVudGAgY2hpbGRyZW4gb2YgdGhlIGdpdmVuIHBhcmVudCBub2RlIHRvXG4gKiBmaW5pc2ggcmVuZGVyaW5nLlxuICpcbiAqIEBwYXJhbSByb290IGEgcGFyZW50IG5vZGUgdG8gd2FpdCBmb3IgcmVuZGVyaW5nIG9uLlxuICovXG5leHBvcnQgY29uc3Qgd2FpdEZvckxpdFJlbmRlciA9IGFzeW5jIDxcbiAgVCBleHRlbmRzIEhUTUxFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCA9IEhUTUxFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCxcbj4oXG4gIG5vZGU6IFQgfCBQcm9taXNlPFQ+LFxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHJvb3QgPSBhd2FpdCBub2RlO1xuICAocm9vdC5wYXJlbnRFbGVtZW50ID8/IHJvb3QpXG4gICAgLnF1ZXJ5U2VsZWN0b3JBbGw/LignW2RlZmVyLWh5ZHJhdGlvbl0nKVxuICAgIC5mb3JFYWNoKChlKSA9PiBlLnJlbW92ZUF0dHJpYnV0ZSgnZGVmZXItaHlkcmF0aW9uJykpO1xuICBjb25zdCBjb21wbGV0YWJsZXMgPSBbcm9vdCBhcyBFbGVtZW50LCAuLi5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoJyonKV1cbiAgICAuZmlsdGVyKGlzUmVhY3RpdmVFbGVtZW50KVxuICAgIC5tYXAoKGUpID0+IFtcbiAgICAgIGUudXBkYXRlQ29tcGxldGUsXG4gICAgICBlLmh5ZHJhdGlvbkNvbXBsZXRlID8/IHByb21pc2VDb21wbGV0ZSxcbiAgICAgIHdhaXRGb3JMaXRSZW5kZXIoZS5yZW5kZXJSb290KSxcbiAgICBdKVxuICAgIC5mbGF0KEluZmluaXR5KTtcbiAgYXdhaXQgUHJvbWlzZS5hbGwoY29tcGxldGFibGVzKTtcbiAgcmV0dXJuIHJvb3Q7XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7TUFNYSxTQUFRO0FBQUEsRUFFbkIsSUFBVyxRQUFLO0FBQ2QsV0FBTyxLQUFLO0FBQUEsRUFBQTtBQUFBLEVBSWQsSUFBVyxTQUFNO0FBQ2YsV0FBTyxLQUFLO0FBQUEsRUFBQTtBQUFBLEVBR2QsSUFBVyxhQUFVO0FBQ25CLFdBQU8sS0FBSyxPQUFPLFNBQVMsS0FBSyxPQUFPLENBQUMsSUFBSTtBQUFBLEVBQUE7QUFBQSxFQUcvQyxJQUFXLFlBQVM7QUFDWCxXQUFBLEtBQUssT0FBTyxTQUFTLEtBQUssT0FBTyxLQUFLLE9BQU8sU0FBUyxDQUFDLElBQUk7QUFBQSxFQUFBO0FBQUEsRUFHcEUsWUFDVSxRQUNTLFVBQXVCLE1BQUk7QUFEcEMsU0FBTSxTQUFOO0FBQ1MsU0FBTyxVQUFQO0FBcEJYLFNBQU0sU0FBVztBQUtqQixTQUFPLFVBQVE7QUFpQmpCLFFBQUEsQ0FBQyxLQUFLLFNBQVM7QUFDakIsV0FBSyxVQUFVO0FBQUEsSUFBQTtBQUVqQixTQUFLLGdCQUFlO0FBQUEsRUFBQTtBQUFBLEVBR2Qsa0JBQWU7O0FBQ3JCLGVBQUssWUFBTCxtQkFBYyxpQkFBaUIsS0FBSyxRQUFRLENBQUMsT0FBTTtBQUM1QyxXQUFBLFFBQVEsS0FBSyxFQUFPO0FBQ3BCLFdBQUE7QUFBQSxJQUFBO0FBQUEsRUFDTjtBQUVKO0FDcENNLE1BQU0sYUFBYSxDQUN4QixXQUNBLE9BQ0EsT0FDZ0I7QUFDaEIsTUFBSSxXQUFXO0FBQ04sV0FBQSxNQUFNLFNBQVMsT0FBTyxFQUFFO0FBQUEsRUFBQTtBQUVuQztBQUtPLE1BQU0sU0FBUyxDQUFDLFdBQW9CLE9BQWUsT0FBMEI7QUFDbEYsTUFBSSxXQUFXO0FBQ04sV0FBQSxNQUFNLEtBQUssT0FBTyxFQUFFO0FBQUEsRUFBQTtBQUUvQjtB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
|
|
162
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvdGVzdGluZy9ldmVudC1zcHkudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS90ZXN0aW5nL21vY2hhLWV4dGVuc2lvbnMudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS90ZXN0aW5nL3Njcm9sbC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL3Rlc3Rpbmcvd2FpdC1mb3ItY29uZGl0aW9uLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvdGVzdGluZy93YWl0LWZvci1ldmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL3Rlc3Rpbmcvd2FpdC1mb3ItaW1hZ2UtcmVhZHkudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS90ZXN0aW5nL3dhaXQtZm9yLXJlbmRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIFByb21pc2VXaXRoRXhlY3V0b3I8VCBleHRlbmRzIEV2ZW50PiA9IHtcbiAgcHJvbWlzZTogUHJvbWlzZTxUPjtcbiAgcmVzb2x2ZTogKHZhbHVlOiBUKSA9PiB2b2lkO1xuICByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG59O1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgZXhpc3RzIHRvIGZhY2lsaXRhdGUgdGhlIHRlc3QgbWlncmF0aW9uIGZyb20gc3RlbmNpbCB0byBsaXQuXG4gKiBJdCBtaW1pY3MgdGhlIEFQSSB0aGF0IHN0ZW5jaWwgcHJvdmlkZWQgdG8gdGVzdCBldmVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudFNweTxUIGV4dGVuZHMgRXZlbnQ+IHtcbiAgcHVibGljIGdldCBjb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jb3VudDtcbiAgfVxuICBwcml2YXRlIF9jb3VudDogbnVtYmVyID0gMDtcblxuICBwdWJsaWMgZ2V0IGV2ZW50cygpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLl9ldmVudHM7XG4gIH1cbiAgcHJpdmF0ZSBfZXZlbnRzOiBUW10gPSBbXTtcblxuICBwdWJsaWMgZ2V0IGZpcnN0RXZlbnQoKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmV2ZW50cy5sZW5ndGggPyB0aGlzLmV2ZW50c1swXSA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhc3RFdmVudCgpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLmxlbmd0aCA/IHRoaXMuZXZlbnRzW3RoaXMuZXZlbnRzLmxlbmd0aCAtIDFdIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX3Byb21pc2VFdmVudE1hcCA9IG5ldyBNYXA8bnVtYmVyLCBQcm9taXNlV2l0aEV4ZWN1dG9yPFQ+PigpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9ldmVudDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhcmdldDogTm9kZSB8IG51bGwgPSBudWxsLFxuICApIHtcbiAgICBpZiAoIXRoaXMuX3RhcmdldCkge1xuICAgICAgdGhpcy5fdGFyZ2V0ID0gZG9jdW1lbnQ7XG4gICAgfVxuXG4gICAgdGhpcy5fbGlzdGVuRm9yRXZlbnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxsZWRPbmNlKHRpbWVvdXQ/OiBudW1iZXIpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsZWRUaW1lcygxLCB0aW1lb3V0KTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxsZWRUaW1lcyhjb3VudDogbnVtYmVyLCB0aW1lb3V0ID0gMjAwMCk6IFByb21pc2U8VD4ge1xuICAgIGlmICh0aGlzLmNvdW50ID4gY291bnQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgYEV2ZW50IGhhcyBiZWVuIGVtaXR0ZWQgbW9yZSB0aGFuIGV4cGVjdGVkIChleHBlY3RlZCAke2NvdW50fSwgYWN0dWFsICR7dGhpcy5jb3VudH1gLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY291bnQgPT09IGNvdW50KSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuZXZlbnRzW2NvdW50IC0gMV0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fcHJvbWlzZUV2ZW50TWFwLmhhcyhjb3VudCkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcm9taXNlRXZlbnRNYXAuZ2V0KGNvdW50KSEucHJvbWlzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHJlc29sdmU6ICh2YWx1ZTogVCkgPT4gdm9pZDtcbiAgICAgIGxldCByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG4gICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8VD4oKHJlc29sdmVGdW5jdGlvbiwgcmVqZWN0RnVuY3Rpb24pID0+IHtcbiAgICAgICAgcmVzb2x2ZSA9IHJlc29sdmVGdW5jdGlvbjtcbiAgICAgICAgcmVqZWN0ID0gcmVqZWN0RnVuY3Rpb247XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcHJvbWlzZVdpdGhFeGVjdXRvciA9IHtcbiAgICAgICAgcHJvbWlzZSxcbiAgICAgICAgcmVzb2x2ZTogcmVzb2x2ZSEsXG4gICAgICAgIHJlamVjdDogcmVqZWN0ISxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuX3Byb21pc2VFdmVudE1hcC5zZXQoY291bnQsIHByb21pc2VXaXRoRXhlY3V0b3IpO1xuXG4gICAgICByZXR1cm4gdGhpcy5fd3JhcFByb21pc2VXaXRoVGltZW91dChwcm9taXNlV2l0aEV4ZWN1dG9yLCBjb3VudCwgdGltZW91dCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfd3JhcFByb21pc2VXaXRoVGltZW91dChcbiAgICBwcm9taXNlV2l0aEV4ZWN1dG9yOiBQcm9taXNlV2l0aEV4ZWN1dG9yPFQ+LFxuICAgIGNvdW50OiBudW1iZXIsXG4gICAgdGltZW91dDogbnVtYmVyLFxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBjbGVhclRpbWVvdXRJZCA9IHNldFRpbWVvdXQoXG4gICAgICAoKSA9PiBwcm9taXNlV2l0aEV4ZWN1dG9yLnJlamVjdChgYXdhaXRpbmcgY2FsbGVkVGltZXMoJHtjb3VudH0pIHJlc3VsdHMgaW4gdGltZW91dGApLFxuICAgICAgdGltZW91dCxcbiAgICApO1xuICAgIHByb21pc2VXaXRoRXhlY3V0b3IucHJvbWlzZS50aGVuKCgpID0+IGNsZWFyVGltZW91dChjbGVhclRpbWVvdXRJZCkpO1xuICAgIHJldHVybiBwcm9taXNlV2l0aEV4ZWN1dG9yLnByb21pc2U7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5Gb3JFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLl90YXJnZXQ/LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fZXZlbnQsIChldikgPT4ge1xuICAgICAgdGhpcy5fZXZlbnRzLnB1c2goZXYgYXMgVCk7XG4gICAgICB0aGlzLl9jb3VudCsrO1xuICAgICAgdGhpcy5fcHJvbWlzZUV2ZW50TWFwLmdldCh0aGlzLmNvdW50KT8ucmVzb2x2ZShldiBhcyBUKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBGdW5jLCBTdWl0ZSwgVGVzdCB9IGZyb20gJ21vY2hhJztcblxuLyoqXG4gKiBTa2lwIHRoZSBgZGVzY3JpYmVgIGlmIHRoZSBjb25kaXRpb24gaXMgbm90IG1ldFxuICovXG5leHBvcnQgY29uc3QgZGVzY3JpYmVJZiA9IChcbiAgY29uZGl0aW9uOiBib29sZWFuLFxuICB0aXRsZTogc3RyaW5nLFxuICBmbjogKHRoaXM6IFN1aXRlKSA9PiB2b2lkLFxuKTogU3VpdGUgfCB2b2lkID0+IHtcbiAgaWYgKGNvbmRpdGlvbikge1xuICAgIHJldHVybiBNb2NoYS5kZXNjcmliZSh0aXRsZSwgZm4pO1xuICB9XG59O1xuXG4vKipcbiAqIFNraXAgdGhlIGB0ZXN0YCBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXRcbiAqL1xuZXhwb3J0IGNvbnN0IHRlc3RJZiA9IChjb25kaXRpb246IGJvb2xlYW4sIHRpdGxlOiBzdHJpbmcsIGZuPzogRnVuYyk6IFRlc3QgfCB2b2lkID0+IHtcbiAgaWYgKGNvbmRpdGlvbikge1xuICAgIHJldHVybiBNb2NoYS50ZXN0KHRpdGxlLCBmbik7XG4gIH1cbn07XG4iLCIvKipcbiAqIENhbiBiZSB1c2VkIGluIHRlc3RzIHdoZXJlIHNjcm9sbCBldmVudHMgYXJlIG5vdCB0cmlnZ2VyZWQgYnkgZGVmYXVsdC5cbiAqIEBwYXJhbSBvcHRpb25zIFNjcm9sbFRvT3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbW9ja1Njcm9sbFRvKG9wdGlvbnM6IFNjcm9sbFRvT3B0aW9ucyk6IHZvaWQge1xuICB3aW5kb3cuc2Nyb2xsVG8ob3B0aW9ucyk7XG5cbiAgLy8gV2UgbmVlZCB0byBtYW51YWxseSBkaXNwYXRjaGluZyB0aGUgc2Nyb2xsIGFzIHRoZSBzY3JvbGxUb1xuICAvLyBkb2VzIG5vdCBmaXJlIGEgc2Nyb2xsIGV2ZW50IGluIHRlc3QgZW52LlxuICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnc2Nyb2xsJykpO1xufVxuIiwiZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JDb25kaXRpb24oXG4gIGNvbmRpdGlvbjogKCkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4sXG4gIGludGVydmFsID0gMzAsXG4gIHRpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IDIgKiAxMDAwLFxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTtcbiAgbGV0IGNvdW50ZXIgPSAwO1xuICBmdW5jdGlvbiBjaGVja0NvbmRpdGlvbigpOiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY291bnRlcisrO1xuICAgIHJldHVybiBjb25kaXRpb24oKTtcbiAgfVxuICB3aGlsZSAoXG4gICAgIShhd2FpdCBjaGVja0NvbmRpdGlvbigpKSAmJlxuICAgIHN0YXJ0LmdldFRpbWUoKSArIHRpbWVvdXRJbk1pbGxpc2Vjb25kcyA+PSBuZXcgRGF0ZSgpLmdldFRpbWUoKVxuICApIHtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBpbnRlcnZhbCkpO1xuICB9XG4gIGlmIChzdGFydC5nZXRUaW1lKCkgKyB0aW1lb3V0SW5NaWxsaXNlY29uZHMgPCBuZXcgRGF0ZSgpLmdldFRpbWUoKSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgIGB3YWl0Rm9yQ29uZGl0aW9uIHRpbWVvdXQ6ICR7Y29uZGl0aW9uLnRvU3RyaW5nKCl9LCBhdHRlbXB0czogJHtjb3VudGVyfSwgc3RhcnQ6ICR7c3RhcnQuZ2V0VGltZSgpfSwgZW5kOiAke25ldyBEYXRlKCkuZ2V0VGltZSgpfWAsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIHdhaXRGb3JFdmVudChcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGV2ZW50TmFtZTogc3RyaW5nLFxuICB0aW1lb3V0ID0gMTAwMCxcbik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHNpZ25hbCA9IEFib3J0U2lnbmFsLnRpbWVvdXQodGltZW91dCk7XG4gICAgY29uc3QgdGltZW91dFJlYWNoZWQgPSAoKTogdm9pZCA9PiByZWplY3QoYFRpbWVvdXQgb2YgJHt0aW1lb3V0fSByZWFjaGVkYCk7XG4gICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgdGltZW91dFJlYWNoZWQpO1xuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgIGV2ZW50TmFtZSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgdGltZW91dFJlYWNoZWQpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9LFxuICAgICAgeyBwYXNzaXZlOiB0cnVlLCBzaWduYWwgfSxcbiAgICApO1xuICB9KTtcbn1cbiIsImltcG9ydCB0eXBlIHsgU2JiSW1hZ2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW1hZ2UuanMnO1xuaW1wb3J0IHsgaXNTYWZhcmkgfSBmcm9tICcuLi9kb20uanMnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2FpdEZvckltYWdlUmVhZHkoXG4gIGVsZW1lbnQ6IEhUTUxJbWFnZUVsZW1lbnQgfCBTYmJJbWFnZUVsZW1lbnQsXG4gIHRpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IDIgKiAxMDAwLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGltZ0VsZW1lbnQgPVxuICAgIGVsZW1lbnQubG9jYWxOYW1lID09PSAnc2JiLWltYWdlJ1xuICAgICAgPyAoZWxlbWVudC5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPEhUTUxJbWFnZUVsZW1lbnQ+KCcuc2JiLWltYWdlX19pbWcnKSA/PyBudWxsKVxuICAgICAgOiAoZWxlbWVudCBhcyBIVE1MSW1hZ2VFbGVtZW50KTtcblxuICBpZiAoIWltZ0VsZW1lbnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ltZyB0YWcgbm90IGZvdW5kJyk7XG4gIH1cblxuICBpZiAoIWVsZW1lbnQuY29tcGxldGUpIHtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiByZWplY3QoJ2ltYWdlIGxvYWRpbmcgdGltZW91dCcpLCB0aW1lb3V0SW5NaWxsaXNlY29uZHMpO1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG5cbiAgICAgICAgaW1nRWxlbWVudC5kZWNvZGUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICBpZiAoaXNTYWZhcmkgJiYgZWxlbWVudC5sb2NhbE5hbWUgPT09ICdzYmItaW1hZ2UnKSB7XG4gICAgICAgICAgICAvLyBPbiBhIHRlc3QgcGFnZSB0aGlzIGlzIG9ubHkgaGFwcGVuaW5nIG9uY2UgKGZpcnN0IHRpbWUgYW4gaW1hZ2UgaXMgbG9hZGVkKS4gVGhlcmVmb3JlLCB0aGUgaW1wYWN0IGlzIHZlcnkgc21hbGwuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCAoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgcmVqZWN0KCdpbWFnZSBlcnJvcicpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgaW1nRWxlbWVudC5kZWNvZGUoKTtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUVsZW1lbnQgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkh5ZHJhdGlvbk1peGluVHlwZSB9IGZyb20gJy4uL21peGlucy5qcyc7XG5cbi8qKlxuICogVGVzdHMgaWYgYW4gZWxlbWVudCBpcyBhIExpdCBgUmVhY3RpdmVFbGVtZW50YC5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCB0aGUgZWxlbWVudCB0byB0ZXN0LlxuICogQHJldHVybiB0cnVlIGlmIHRoZSBlbGVtZW50IGlzIGEgYFJlYWN0aXZlRWxlbWVudGAuXG4gKi9cbmV4cG9ydCBjb25zdCBpc1JlYWN0aXZlRWxlbWVudCA9IChcbiAgZWxlbWVudDogRWxlbWVudCxcbik6IGVsZW1lbnQgaXMgUmVhY3RpdmVFbGVtZW50ICYgUGFydGlhbDxTYmJIeWRyYXRpb25NaXhpblR5cGU+ID0+IHtcbiAgcmV0dXJuIEJvb2xlYW4oKGVsZW1lbnQgYXMgUmVhY3RpdmVFbGVtZW50KS51cGRhdGVDb21wbGV0ZSk7XG59O1xuXG5jb25zdCBwcm9taXNlQ29tcGxldGUgPSBQcm9taXNlLnJlc29sdmUoKTtcblxuLyoqXG4gKiBXYWl0cyBmb3IgYWxsIExpdCBgUmVhY3RpdmVFbGVtZW50YCBjaGlsZHJlbiBvZiB0aGUgZ2l2ZW4gcGFyZW50IG5vZGUgdG9cbiAqIGZpbmlzaCByZW5kZXJpbmcuXG4gKlxuICogQHBhcmFtIHJvb3QgYSBwYXJlbnQgbm9kZSB0byB3YWl0IGZvciByZW5kZXJpbmcgb24uXG4gKi9cbmV4cG9ydCBjb25zdCB3YWl0Rm9yTGl0UmVuZGVyID0gYXN5bmMgPFxuICBUIGV4dGVuZHMgSFRNTEVsZW1lbnQgfCBEb2N1bWVudEZyYWdtZW50ID0gSFRNTEVsZW1lbnQgfCBEb2N1bWVudEZyYWdtZW50LFxuPihcbiAgbm9kZTogVCB8IFByb21pc2U8VD4sXG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3Qgcm9vdCA9IGF3YWl0IG5vZGU7XG4gIChyb290LnBhcmVudEVsZW1lbnQgPz8gcm9vdClcbiAgICAucXVlcnlTZWxlY3RvckFsbD8uKCdbZGVmZXItaHlkcmF0aW9uXScpXG4gICAgLmZvckVhY2goKGUpID0+IGUucmVtb3ZlQXR0cmlidXRlKCdkZWZlci1oeWRyYXRpb24nKSk7XG4gIGNvbnN0IGNvbXBsZXRhYmxlcyA9IFtyb290IGFzIEVsZW1lbnQsIC4uLnJvb3QucXVlcnlTZWxlY3RvckFsbCgnKicpXVxuICAgIC5maWx0ZXIoaXNSZWFjdGl2ZUVsZW1lbnQpXG4gICAgLm1hcCgoZSkgPT4gW1xuICAgICAgZS51cGRhdGVDb21wbGV0ZSxcbiAgICAgIGUuaHlkcmF0aW9uQ29tcGxldGUgPz8gcHJvbWlzZUNvbXBsZXRlLFxuICAgICAgd2FpdEZvckxpdFJlbmRlcihlLnJlbmRlclJvb3QpLFxuICAgIF0pXG4gICAgLmZsYXQoSW5maW5pdHkpO1xuICBhd2FpdCBQcm9taXNlLmFsbChjb21wbGV0YWJsZXMpO1xuICByZXR1cm4gcm9vdDtcbn07XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7TUFVYSxTQUFRO0FBQUEsRUFDbkIsSUFBVyxRQUFLO0FBQ2QsV0FBTyxLQUFLO0FBQUEsRUFBQTtBQUFBLEVBSWQsSUFBVyxTQUFNO0FBQ2YsV0FBTyxLQUFLO0FBQUEsRUFBQTtBQUFBLEVBSWQsSUFBVyxhQUFVO0FBQ25CLFdBQU8sS0FBSyxPQUFPLFNBQVMsS0FBSyxPQUFPLENBQUMsSUFBSTtBQUFBLEVBQUE7QUFBQSxFQUcvQyxJQUFXLFlBQVM7QUFDWCxXQUFBLEtBQUssT0FBTyxTQUFTLEtBQUssT0FBTyxLQUFLLE9BQU8sU0FBUyxDQUFDLElBQUk7QUFBQSxFQUFBO0FBQUEsRUFLcEUsWUFDVSxRQUNTLFVBQXVCLE1BQUk7QUFEcEMsU0FBTSxTQUFOO0FBQ1MsU0FBTyxVQUFQO0FBbkJYLFNBQU0sU0FBVztBQUtqQixTQUFPLFVBQVE7QUFVZixTQUFBLHVDQUF1QixJQUFHO0FBTTVCLFFBQUEsQ0FBQyxLQUFLLFNBQVM7QUFDakIsV0FBSyxVQUFVO0FBQUEsSUFBQTtBQUdqQixTQUFLLGdCQUFlO0FBQUEsRUFBQTtBQUFBLEVBR2YsV0FBVyxTQUFnQjtBQUN6QixXQUFBLEtBQUssWUFBWSxHQUFHLE9BQU87QUFBQSxFQUFBO0FBQUEsRUFHN0IsWUFBWSxPQUFlLFVBQVUsS0FBSTtBQUMxQyxRQUFBLEtBQUssUUFBUSxPQUFPO0FBQ3RCLGFBQU8sUUFBUSxPQUNiLHVEQUF1RCxLQUFLLFlBQVksS0FBSyxLQUFLLEVBQUU7QUFBQSxJQUFBLFdBRTdFLEtBQUssVUFBVSxPQUFPO0FBQy9CLGFBQU8sUUFBUSxRQUFRLEtBQUssT0FBTyxRQUFRLENBQUMsQ0FBQztBQUFBLElBQ3BDLFdBQUEsS0FBSyxpQkFBaUIsSUFBSSxLQUFLLEdBQUc7QUFDM0MsYUFBTyxLQUFLLGlCQUFpQixJQUFJLEtBQUssRUFBRztBQUFBLElBQUEs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datepicker.d.ts","sourceRoot":"","sources":["../../../../../src/elements/datepicker/datepicker/datepicker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAKb,OAAO,EAAE,KAAK,WAAW,EAAsB,MAAM,wBAAwB,CAAC;AAK9E,OAAO,KAAK,EAAE,WAAW,EAA4B,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAI1E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAKD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,GAAG,IAAI,EACpC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,0BAA0B,CAAC,CAAC,CAAC,EAC/D,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,GAC7B,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAQ5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,IAAI,EACvC,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,IAAI,EACzC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAC1B,CAAC,CAUH;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,GAAG,IAAI,EAChD,IAAI,EAAE,CAAC,EACP,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,IAAI,EACzC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,EAC3B,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAC1B,CAAC,CAWH;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,GAAG,IAAI,EAC5C,IAAI,EAAE,CAAC,EACP,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,IAAI,EACzC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,EAC3B,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAC1B,CAAC,CAWH;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,GAAG,IAAI,EACtC,IAAI,EAAE,CAAC,EACP,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,IAAI,EACzC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GACtC,OAAO,
|
|
1
|
+
{"version":3,"file":"datepicker.d.ts","sourceRoot":"","sources":["../../../../../src/elements/datepicker/datepicker/datepicker.ts"],"names":[],"mappings":"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"}
|