@skyux/list-builder 7.4.2 → 7.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/documentation.json +49 -49
  2. package/esm2020/lib/modules/list/list-data-request.model.mjs +2 -2
  3. package/esm2020/lib/modules/list/list-paging.component.mjs +2 -2
  4. package/esm2020/lib/modules/list/list.component.mjs +3 -3
  5. package/esm2020/lib/modules/list/state/search/search.model.mjs +4 -4
  6. package/esm2020/lib/modules/list/state/sort/label.model.mjs +3 -3
  7. package/esm2020/lib/modules/list/state/sort/sort.model.mjs +4 -4
  8. package/esm2020/lib/modules/list-filters/filter.model.mjs +2 -2
  9. package/esm2020/lib/modules/list-filters/list-filter-inline-item.component.mjs +1 -1
  10. package/esm2020/lib/modules/list-paging/list-paging.component.mjs +4 -4
  11. package/esm2020/lib/modules/list-toolbar/list-multiselect-toolbar.component.mjs +4 -4
  12. package/esm2020/lib/modules/list-toolbar/list-toolbar-item.component.mjs +4 -4
  13. package/esm2020/lib/modules/list-toolbar/list-toolbar-sort.component.mjs +1 -1
  14. package/esm2020/lib/modules/list-toolbar/list-toolbar.component.mjs +2 -2
  15. package/esm2020/lib/modules/shared/sky-list-builder-resources.module.mjs +3 -3
  16. package/fesm2015/skyux-list-builder.mjs +25 -25
  17. package/fesm2015/skyux-list-builder.mjs.map +1 -1
  18. package/fesm2020/skyux-list-builder.mjs +25 -25
  19. package/fesm2020/skyux-list-builder.mjs.map +1 -1
  20. package/lib/modules/list/list-data-request.model.d.ts +6 -6
  21. package/lib/modules/list/list-paging.component.d.ts +1 -1
  22. package/lib/modules/list/list.component.d.ts +7 -7
  23. package/lib/modules/list/state/search/search.model.d.ts +3 -3
  24. package/lib/modules/list/state/sort/label.model.d.ts +5 -5
  25. package/lib/modules/list/state/sort/sort.model.d.ts +3 -3
  26. package/lib/modules/list-filters/filter.model.d.ts +6 -6
  27. package/lib/modules/list-filters/list-filter-inline-item.component.d.ts +5 -5
  28. package/lib/modules/list-paging/list-paging.component.d.ts +3 -3
  29. package/lib/modules/list-toolbar/list-toolbar-item.component.d.ts +3 -3
  30. package/lib/modules/list-toolbar/list-toolbar-sort.component.d.ts +4 -4
  31. package/lib/modules/list-toolbar/list-toolbar.component.d.ts +5 -5
  32. package/package.json +10 -10
@@ -72,7 +72,7 @@ export class SkyListToolbarComponent {
72
72
  });
73
73
  }
74
74
  /**
75
- * Indicates whether to use the in-memory search.
75
+ * Whether to use the in-memory search.
76
76
  * Setting this to `false` will allow consumers to run their own searches remotely,
77
77
  * and push new values to the list component by updating the `data` property.
78
78
  * @default true
@@ -357,4 +357,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImpo
357
357
  static: true,
358
358
  }]
359
359
  }] } });
360
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9saXN0LWJ1aWxkZXIvc3JjL2xpYi9tb2R1bGVzL2xpc3QtdG9vbGJhci9saXN0LXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3QtYnVpbGRlci9zcmMvbGliL21vZHVsZXMvbGlzdC10b29sYmFyL2xpc3QtdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxFQUlMLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBRUwsT0FBTyxFQUNQLGFBQWEsSUFBSSx1QkFBdUIsR0FDekMsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLEdBQUcsSUFBSSxhQUFhLEVBQ3BCLElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4QixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUM1RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUc5RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsb0JBQW9CLEVB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QVFNLG1CQUFtQjtzQkFEekIsS0FBSztnQkFVQyxXQUFXO3NCQURqQixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBNkNFLFlBQVk7c0JBRG5CLGVBQWU7dUJBQUMsMkJBQTJCO2dCQUlwQyxZQUFZO3NCQURuQixlQUFlO3VCQUFDLDJCQUEyQjtnQkFJcEMsYUFBYTtzQkFEcEIsZUFBZTt1QkFBQyw2QkFBNkI7Z0JBSXRDLFlBQVk7c0JBRG5CLGVBQWU7dUJBQUMsNEJBQTRCO2dCQUlyQyxXQUFXO3NCQURsQixlQUFlO3VCQUFDLGtDQUFrQztnQkFPM0MsY0FBYztzQkFKckIsU0FBUzt1QkFBQyxRQUFRLEVBQUU7d0JBQ25CLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTyxvQkFBb0I7c0JBSjNCLFNBQVM7dUJBQUMsY0FBYyxFQUFFO3dCQUN6QixJQUFJLEVBQUUsV0FBVzt3QkFDakIsTUFBTSxFQUFFLElBQUk7cUJBQ2I7Z0JBT08sMEJBQTBCO3NCQUpqQyxTQUFTO3VCQUFDLG9CQUFvQixFQUFFO3dCQUMvQixJQUFJLEVBQUUsV0FBVzt3QkFDakIsTUFBTSxFQUFFLElBQUk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgZ2V0VmFsdWUgfSBmcm9tICdAc2t5dXgvbGlzdC1idWlsZGVyLWNvbW1vbic7XG5pbXBvcnQgeyBMaXN0U29ydEZpZWxkU2VsZWN0b3JNb2RlbCB9IGZyb20gJ0Bza3l1eC9saXN0LWJ1aWxkZXItY29tbW9uJztcbmltcG9ydCB7IFNreVNlYXJjaENvbXBvbmVudCB9IGZyb20gJ0Bza3l1eC9sb29rdXAnO1xuXG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0IGFzIG9ic2VydmFibGVDb21iaW5lTGF0ZXN0LFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAgYXMgb2JzZXJ2YWJsZU1hcCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IExpc3RGaWx0ZXJNb2RlbCB9IGZyb20gJy4uL2xpc3QtZmlsdGVycy9maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHsgU2t5TGlzdEZpbHRlcklubGluZUNvbXBvbmVudCB9IGZyb20gJy4uL2xpc3QtZmlsdGVycy9saXN0LWZpbHRlci1pbmxpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUxpc3RGaWx0ZXJTdW1tYXJ5Q29tcG9uZW50IH0gZnJvbSAnLi4vbGlzdC1maWx0ZXJzL2xpc3QtZmlsdGVyLXN1bW1hcnkuY29tcG9uZW50JztcbmltcG9ydCB7IExpc3RTdGF0ZURpc3BhdGNoZXIgfSBmcm9tICcuLi9saXN0L3N0YXRlL2xpc3Qtc3RhdGUucnhzdGF0ZSc7XG5pbXBvcnQgeyBMaXN0U3RhdGUgfSBmcm9tICcuLi9saXN0L3N0YXRlL2xpc3Qtc3RhdGUuc3RhdGUtbm9kZSc7XG5pbXBvcnQgeyBMaXN0UGFnaW5nU2V0UGFnZU51bWJlckFjdGlvbiB9IGZyb20gJy4uL2xpc3Qvc3RhdGUvcGFnaW5nL3NldC1wYWdlLW51bWJlci5hY3Rpb24nO1xuaW1wb3J0IHsgTGlzdFNvcnRMYWJlbE1vZGVsIH0gZnJvbSAnLi4vbGlzdC9zdGF0ZS9zb3J0L2xhYmVsLm1vZGVsJztcbmltcG9ydCB7IExpc3RUb29sYmFyU2V0VHlwZUFjdGlvbiB9IGZyb20gJy4uL2xpc3Qvc3RhdGUvdG9vbGJhci9zZXQtdHlwZS5hY3Rpb24nO1xuaW1wb3J0IHsgTGlzdFRvb2xiYXJJdGVtTW9kZWwgfSBmcm9tICcuLi9saXN0L3N0YXRlL3Rvb2xiYXIvdG9vbGJhci1pdGVtLm1vZGVsJztcbmltcG9ydCB7IExpc3RUb29sYmFyTW9kZWwgfSBmcm9tICcuLi9saXN0L3N0YXRlL3Rvb2xiYXIvdG9vbGJhci5tb2RlbCc7XG5cbmltcG9ydCB7IFNreUxpc3RUb29sYmFySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbGlzdC10b29sYmFyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFNreUxpc3RUb29sYmFyU29ydENvbXBvbmVudCB9IGZyb20gJy4vbGlzdC10b29sYmFyLXNvcnQuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUxpc3RUb29sYmFyVmlld0FjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2xpc3QtdG9vbGJhci12aWV3LWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IExpc3RUb29sYmFyQ29uZmlnU2V0U2VhcmNoRW5hYmxlZEFjdGlvbiB9IGZyb20gJy4vc3RhdGUvY29uZmlnL3NldC1zZWFyY2gtZW5hYmxlZC5hY3Rpb24nO1xuaW1wb3J0IHsgTGlzdFRvb2xiYXJDb25maWdTZXRTb3J0U2VsZWN0b3JFbmFibGVkQWN0aW9uIH0gZnJvbSAnLi9zdGF0ZS9jb25maWcvc2V0LXNvcnQtc2VsZWN0b3ItZW5hYmxlZC5hY3Rpb24nO1xuaW1wb3J0IHsgTGlzdFRvb2xiYXJTdGF0ZU1vZGVsIH0gZnJvbSAnLi9zdGF0ZS90b29sYmFyLXN0YXRlLm1vZGVsJztcbmltcG9ydCB7IExpc3RUb29sYmFyU3RhdGVEaXNwYXRjaGVyIH0gZnJvbSAnLi9zdGF0ZS90b29sYmFyLXN0YXRlLnJ4c3RhdGUnO1xuaW1wb3J0IHsgTGlzdFRvb2xiYXJTdGF0ZSB9IGZyb20gJy4vc3RhdGUvdG9vbGJhci1zdGF0ZS5zdGF0ZS1ub2RlJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogRGlzcGxheXMgYSB0b29sYmFyIGZvciBhIFNLWSBVWC10aGVtZWQgbGlzdCBvZiBkYXRhLlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWxpc3QtdG9vbGJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXRvb2xiYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0LXRvb2xiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgTGlzdFRvb2xiYXJTdGF0ZSxcbiAgICBMaXN0VG9vbGJhclN0YXRlRGlzcGF0Y2hlcixcbiAgICBMaXN0VG9vbGJhclN0YXRlTW9kZWwsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lMaXN0VG9vbGJhckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byB1c2UgdGhlIGluLW1lbW9yeSBzZWFyY2guXG4gICAqIFNldHRpbmcgdGhpcyB0byBgZmFsc2VgIHdpbGwgYWxsb3cgY29uc3VtZXJzIHRvIHJ1biB0aGVpciBvd24gc2VhcmNoZXMgcmVtb3RlbHksXG4gICAqIGFuZCBwdXNoIG5ldyB2YWx1ZXMgdG8gdGhlIGxpc3QgY29tcG9uZW50IGJ5IHVwZGF0aW5nIHRoZSBgZGF0YWAgcHJvcGVydHkuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGluTWVtb3J5U2VhcmNoRW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2luTWVtb3J5U2VhcmNoRW5hYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBpbk1lbW9yeVNlYXJjaEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2luTWVtb3J5U2VhcmNoRW5hYmxlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2luTWVtb3J5U2VhcmNoRW5hYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgcGxhY2Vob2xkZXIgdGV4dCBmb3IgdGhlIHNlYXJjaCBiYXIgdGhhdCB0aGUgbGlzdCB0b29sYmFyIGNyZWF0ZXMgd2l0aFxuICAgKiBhIFtzZWFyY2ggY29tcG9uZW50XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvc2VhcmNoKS5cbiAgICogQGRlZmF1bHQgXCJGaW5kIGluIHRoaXMgbGlzdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZW5hYmxlIHRoZSBzZWFyY2ggYmFyLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VhcmNoRW5hYmxlZDogYm9vbGVhbiB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgQFZpZXdDaGlsZChTa3lTZWFyY2hDb21wb25lbnQsIHtcbiAgICByZWFkOiBTa3lTZWFyY2hDb21wb25lbnQsXG4gICAgc3RhdGljOiBmYWxzZSxcbiAgfSlcbiAgcHVibGljIHNlYXJjaENvbXBvbmVudDogU2t5U2VhcmNoQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBlbmFibGUgdGhlIHNvcnQgc2VsZWN0b3IuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc29ydFNlbGVjdG9yRW5hYmxlZDogYm9vbGVhbiB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIERpc3BsYXkgdGhlIHNlYXJjaCBiYXIgaW4gdGhlIHN0YW5kYXJkIHBvc2l0aW9uIG9yIGluIGEgc2VwYXJhdGUgc2VjdGlvbi5cbiAgICogVG8gaGlnaGxpZ2h0IHRoZSBzZWFyY2ggYmFyIGluIGEgc2VjdGlvbiBhYm92ZSBhbGwgb3RoZXIgdG9vbGJhciBpdGVtcyxcbiAgICogc2V0IHRoaXMgcHJvcGVydHkgdG8gYHNlYXJjaGAuXG4gICAqIEBkZWZhdWx0IFwic3RhbmRhcmRcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHRvb2xiYXJUeXBlID0gJ3N0YW5kYXJkJztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGEgdGV4dCBzdHJpbmcgdG8gc2VhcmNoIHdpdGguXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VhcmNoVGV4dDogc3RyaW5nIHwgT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIHB1YmxpYyBnZXQgaXNGaWx0ZXJCYXJEaXNwbGF5ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICF0aGlzLmlzVG9vbGJhckRpc2FibGVkICYmXG4gICAgICB0aGlzLmhhc0lubGluZUZpbHRlcnMgJiZcbiAgICAgIHRoaXMuaW5saW5lRmlsdGVyQmFyRXhwYW5kZWRcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJCdXR0b25BcmlhQ29udHJvbHMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckJhckRpc3BsYXllZCA/IHRoaXMubGlzdEZpbHRlcklubGluZUlkIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHNvcnRTZWxlY3RvcnM6IE9ic2VydmFibGU8QXJyYXk8YW55Pj47XG4gIHB1YmxpYyBzZWFyY2hUZXh0SW5wdXQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIHZpZXc6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIGxlZnRUZW1wbGF0ZXM6IExpc3RUb29sYmFySXRlbU1vZGVsW107XG4gIHB1YmxpYyBjZW50ZXJUZW1wbGF0ZXM6IExpc3RUb29sYmFySXRlbU1vZGVsW107XG4gIHB1YmxpYyByaWdodFRlbXBsYXRlczogTGlzdFRvb2xiYXJJdGVtTW9kZWxbXTtcbiAgcHVibGljIHR5cGU6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIGlzU2VhcmNoRW5hYmxlZDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzVG9vbGJhckRpc2FibGVkID0gZmFsc2U7XG4gIHB1YmxpYyBpc011bHRpc2VsZWN0RW5hYmxlZDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzU29ydFNlbGVjdG9yRW5hYmxlZDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGFwcGxpZWRGaWx0ZXJzOiBPYnNlcnZhYmxlPEFycmF5PExpc3RGaWx0ZXJNb2RlbD4+O1xuICBwdWJsaWMgaGFzQXBwbGllZEZpbHRlcnM6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBzaG93RmlsdGVyU3VtbWFyeTogYm9vbGVhbjtcbiAgcHVibGljIGhhc0lubGluZUZpbHRlcnM6IGJvb2xlYW47XG4gIHB1YmxpYyBpbmxpbmVGaWx0ZXJCYXJFeHBhbmRlZCA9IGZhbHNlO1xuICBwdWJsaWMgaGFzQWRkaXRpb25hbFRvb2xiYXJTZWN0aW9uID0gZmFsc2U7XG4gIHB1YmxpYyBoYXNWaWV3QWN0aW9ucyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBmaWx0ZXJCdXR0b25JZCA9IGBza3ktbGlzdC10b29sYmFyLWZpbHRlci1idXR0b24tJHsrK25leHRJZH1gO1xuICBwdWJsaWMgbGlzdEZpbHRlcklubGluZUlkID0gYHNreS1saXN0LXRvb2xiYXItZmlsdGVyLWlubGluZS0keysrbmV4dElkfWA7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc3VibWl0IGEgc2VhcmNoLlxuICAgKiBAaW50ZXJuYWxcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHB1YmxpYyBzZWFyY2hBcHBsaWVkOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lMaXN0VG9vbGJhckl0ZW1Db21wb25lbnQpXG4gIHByaXZhdGUgdG9vbGJhckl0ZW1zOiBRdWVyeUxpc3Q8U2t5TGlzdFRvb2xiYXJJdGVtQ29tcG9uZW50PjtcblxuICBAQ29udGVudENoaWxkcmVuKFNreUxpc3RUb29sYmFyU29ydENvbXBvbmVudClcbiAgcHJpdmF0ZSB0b29sYmFyU29ydHM6IFF1ZXJ5TGlzdDxTa3lMaXN0VG9vbGJhclNvcnRDb21wb25lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5TGlzdEZpbHRlclN1bW1hcnlDb21wb25lbnQpXG4gIHByaXZhdGUgZmlsdGVyU3VtbWFyeTogUXVlcnlMaXN0PFNreUxpc3RGaWx0ZXJTdW1tYXJ5Q29tcG9uZW50PjtcblxuICBAQ29udGVudENoaWxkcmVuKFNreUxpc3RGaWx0ZXJJbmxpbmVDb21wb25lbnQpXG4gIHByaXZhdGUgaW5saW5lRmlsdGVyOiBRdWVyeUxpc3Q8U2t5TGlzdEZpbHRlcklubGluZUNvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lMaXN0VG9vbGJhclZpZXdBY3Rpb25zQ29tcG9uZW50KVxuICBwcml2YXRlIHZpZXdBY3Rpb25zOiBRdWVyeUxpc3Q8U2t5TGlzdFRvb2xiYXJWaWV3QWN0aW9uc0NvbXBvbmVudD47XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSBzZWFyY2hUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQFZpZXdDaGlsZCgnc29ydFNlbGVjdG9yJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSBzb3J0U2VsZWN0b3JUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQFZpZXdDaGlsZCgnaW5saW5lRmlsdGVyQnV0dG9uJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSBpbmxpbmVGaWx0ZXJCdXR0b25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgcHJpdmF0ZSBjdXN0b21JdGVtSWRzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGhhc1NvcnRTZWxlY3RvcnMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpbmxpbmVGaWx0ZXJzSXRlbVRvb2xiYXJJbmRleCA9IDUwMDA7XG4gIHByaXZhdGUgc29ydFNlbGVjdG9ySXRlbVRvb2xiYXJJbmRleCA9IDYwMDA7XG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfaW5NZW1vcnlTZWFyY2hFbmFibGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgc3RhdGU6IExpc3RTdGF0ZSxcbiAgICBwcml2YXRlIGRpc3BhdGNoZXI6IExpc3RTdGF0ZURpc3BhdGNoZXIsXG4gICAgcHJpdmF0ZSB0b29sYmFyU3RhdGU6IExpc3RUb29sYmFyU3RhdGUsXG4gICAgcHVibGljIHRvb2xiYXJEaXNwYXRjaGVyOiBMaXN0VG9vbGJhclN0YXRlRGlzcGF0Y2hlcixcbiAgICBsb2dnZXI6IFNreUxvZ1NlcnZpY2VcbiAgKSB7XG4gICAgbG9nZ2VyLmRlcHJlY2F0ZWQoJ1NreUxpc3RUb29sYmFyQ29tcG9uZW50Jywge1xuICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDYsXG4gICAgICBtb3JlSW5mb1VybDpcbiAgICAgICAgJ2h0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9kYXRhLW1hbmFnZXInLFxuICAgICAgcmVwbGFjZW1lbnRSZWNvbW1lbmRhdGlvbjogJ1VzZSBkYXRhIG1hbmFnZXIgaW5zdGVhZC4nLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyRXhpc3RzKHRydWUpO1xuXG4gICAgZ2V0VmFsdWUodGhpcy5zZWFyY2hUZXh0LCAoc2VhcmNoVGV4dDogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVNlYXJjaFRleHQoc2VhcmNoVGV4dCk7XG4gICAgfSk7XG5cbiAgICBnZXRWYWx1ZSh0aGlzLnNlYXJjaEVuYWJsZWQsIChzZWFyY2hFbmFibGVkOiBib29sZWFuKSA9PiB7XG4gICAgICB0aGlzLnRvb2xiYXJEaXNwYXRjaGVyLm5leHQoXG4gICAgICAgIG5ldyBMaXN0VG9vbGJhckNvbmZpZ1NldFNlYXJjaEVuYWJsZWRBY3Rpb24oXG4gICAgICAgICAgc2VhcmNoRW5hYmxlZCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHNlYXJjaEVuYWJsZWRcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGdldFZhbHVlKHRoaXMudG9vbGJhclR5cGUsICh0eXBlOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hlci5uZXh0KG5ldyBMaXN0VG9vbGJhclNldFR5cGVBY3Rpb24odGhpcy50b29sYmFyVHlwZSkpO1xuICAgIH0pO1xuXG4gICAgZ2V0VmFsdWUodGhpcy5zb3J0U2VsZWN0b3JFbmFibGVkLCAoc29ydFNlbGVjdG9yRW5hYmxlZDogYW55KSA9PiB7XG4gICAgICB0aGlzLnRvb2xiYXJEaXNwYXRjaGVyLm5leHQoXG4gICAgICAgIG5ldyBMaXN0VG9vbGJhckNvbmZpZ1NldFNvcnRTZWxlY3RvckVuYWJsZWRBY3Rpb24oXG4gICAgICAgICAgc29ydFNlbGVjdG9yRW5hYmxlZCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHNvcnRTZWxlY3RvckVuYWJsZWRcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc29ydFNlbGVjdG9ycyA9IHRoaXMuZ2V0U29ydFNlbGVjdG9ycygpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgc29ydCB0b29sYmFyIGl0ZW0gaWYgbmVjZXNzYXJ5XG4gICAgdGhpcy5zb3J0U2VsZWN0b3JzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGN1cnJlbnRTb3J0KSA9PiB7XG4gICAgICAgIGlmIChjdXJyZW50U29ydC5sZW5ndGggPiAwICYmICF0aGlzLmhhc1NvcnRTZWxlY3RvcnMpIHtcbiAgICAgICAgICB0aGlzLmhhc1NvcnRTZWxlY3RvcnMgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyQWRkSXRlbXMoW1xuICAgICAgICAgICAgbmV3IExpc3RUb29sYmFySXRlbU1vZGVsKHtcbiAgICAgICAgICAgICAgaWQ6ICdzb3J0LXNlbGVjdG9yJyxcbiAgICAgICAgICAgICAgdGVtcGxhdGU6IHRoaXMuc29ydFNlbGVjdG9yVGVtcGxhdGUsXG4gICAgICAgICAgICAgIGxvY2F0aW9uOiAnbGVmdCcsXG4gICAgICAgICAgICAgIGluZGV4OiB0aGlzLnNvcnRTZWxlY3Rvckl0ZW1Ub29sYmFySW5kZXgsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50U29ydC5sZW5ndGggPCAxICYmIHRoaXMuaGFzU29ydFNlbGVjdG9ycykge1xuICAgICAgICAgIHRoaXMuaGFzU29ydFNlbGVjdG9ycyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyUmVtb3ZlSXRlbXMoWydzb3J0LXNlbGVjdG9yJ10pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuc2VhcmNoVGV4dElucHV0ID0gdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLnNlYXJjaC5zZWFyY2hUZXh0KSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuXG4gICAgdGhpcy52aWV3ID0gdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLnZpZXdzLmFjdGl2ZSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKTtcblxuICAgIHRoaXMud2F0Y2hUZW1wbGF0ZXMoKTtcblxuICAgIHRoaXMudHlwZSA9IHRoaXMuc3RhdGUucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgoc3RhdGUpID0+IHN0YXRlLnRvb2xiYXIudHlwZSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKTtcblxuICAgIHRoaXMudHlwZS5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHRvb2xiYXJUeXBlKSA9PiB7XG4gICAgICBpZiAodG9vbGJhclR5cGUgPT09ICdzZWFyY2gnKSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyUmVtb3ZlSXRlbXMoWydzZWFyY2gnXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhckFkZEl0ZW1zKFtcbiAgICAgICAgICBuZXcgTGlzdFRvb2xiYXJJdGVtTW9kZWwoe1xuICAgICAgICAgICAgaWQ6ICdzZWFyY2gnLFxuICAgICAgICAgICAgdGVtcGxhdGU6IHRoaXMuc2VhcmNoVGVtcGxhdGUsXG4gICAgICAgICAgICBsb2NhdGlvbjogJ3JpZ2h0JyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmlzU2VhcmNoRW5hYmxlZCA9IHRoaXMudG9vbGJhclN0YXRlLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMuY29uZmlnKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBvYnNlcnZhYmxlTWFwKChjKSA9PiBjLnNlYXJjaEVuYWJsZWQpXG4gICAgKTtcblxuICAgIHRoaXMuc3RhdGVcbiAgICAgIC5waXBlKFxuICAgICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLnRvb2xiYXIpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgb2JzZXJ2YWJsZU1hcCgoYykgPT4gYy5kaXNhYmxlZClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGlzRGlzYWJsZWQpID0+ICh0aGlzLmlzVG9vbGJhckRpc2FibGVkID0gaXNEaXNhYmxlZCkpO1xuXG4gICAgdGhpcy5pc1NvcnRTZWxlY3RvckVuYWJsZWQgPSB0aGlzLnRvb2xiYXJTdGF0ZS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLmNvbmZpZyksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgoYykgPT4gYy5zb3J0U2VsZWN0b3JFbmFibGVkKVxuICAgICk7XG5cbiAgICB0aGlzLmlzTXVsdGlzZWxlY3RFbmFibGVkID0gdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLnRvb2xiYXIpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIG9ic2VydmFibGVNYXAoKHQpID0+IHQuc2hvd011bHRpc2VsZWN0VG9vbGJhcilcbiAgICApO1xuXG4gICAgdGhpcy5oYXNBcHBsaWVkRmlsdGVycyA9IHRoaXMuc3RhdGUucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy5maWx0ZXJzKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBvYnNlcnZhYmxlTWFwKChmaWx0ZXJzKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUZpbHRlcnMgPSBmaWx0ZXJzLmZpbHRlcigoZikgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBmLnZhbHVlICE9PSAnJyAmJlxuICAgICAgICAgICAgZi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBmLnZhbHVlICE9PSBmYWxzZSAmJlxuICAgICAgICAgICAgZi52YWx1ZSAhPT0gZi5kZWZhdWx0VmFsdWVcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFjdGl2ZUZpbHRlcnMubGVuZ3RoID4gMDtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3RhdGUucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChjdXJyZW50OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuaGFzQWRkaXRpb25hbFRvb2xiYXJTZWN0aW9uID0gY3VycmVudC50b29sYmFyLml0ZW1zLmxlbmd0aCA+IDA7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgLy8gSW5qZWN0IGN1c3RvbSB0b29sYmFyIGl0ZW1zLlxuICAgIHRoaXMudG9vbGJhckl0ZW1zLmZvckVhY2goKHRvb2xiYXJJdGVtKSA9PiB7XG4gICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhckFkZEl0ZW1zKFtuZXcgTGlzdFRvb2xiYXJJdGVtTW9kZWwodG9vbGJhckl0ZW0pXSk7XG5cbiAgICAgIHRoaXMuY3VzdG9tSXRlbUlkcy5wdXNoKHRvb2xiYXJJdGVtLmlkKTtcbiAgICB9KTtcblxuICAgIHRoaXMudG9vbGJhckl0ZW1zLmNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobmV3SXRlbXM6IFF1ZXJ5TGlzdDxTa3lMaXN0VG9vbGJhckl0ZW1Db21wb25lbnQ+KSA9PiB7XG4gICAgICAgIG5ld0l0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jdXN0b21JdGVtSWRzLmluZGV4T2YoaXRlbS5pZCkgPCAwKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhckFkZEl0ZW1zKFtuZXcgTGlzdFRvb2xiYXJJdGVtTW9kZWwoaXRlbSldKTtcblxuICAgICAgICAgICAgdGhpcy5jdXN0b21JdGVtSWRzLnB1c2goaXRlbS5pZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpdGVtc1RvUmVtb3ZlOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIHRoaXMuY3VzdG9tSXRlbUlkcy5mb3JFYWNoKChpdGVtSWQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKCFuZXdJdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBpdGVtSWQpKSB7XG4gICAgICAgICAgICBpdGVtc1RvUmVtb3ZlLnB1c2goaXRlbUlkKTtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tSXRlbUlkcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5kaXNwYXRjaGVyLnRvb2xiYXJSZW1vdmVJdGVtcyhpdGVtc1RvUmVtb3ZlKTtcbiAgICAgIH0pO1xuXG4gICAgY29uc3Qgc29ydE1vZGVscyA9IHRoaXMudG9vbGJhclNvcnRzLm1hcChcbiAgICAgIChzb3J0KSA9PlxuICAgICAgICBuZXcgTGlzdFNvcnRMYWJlbE1vZGVsKHtcbiAgICAgICAgICB0ZXh0OiBzb3J0LmxhYmVsLFxuICAgICAgICAgIGZpZWxkU2VsZWN0b3I6IHNvcnQuZmllbGQsXG4gICAgICAgICAgZmllbGRUeXBlOiBzb3J0LnR5cGUsXG4gICAgICAgICAgZ2xvYmFsOiB0cnVlLFxuICAgICAgICAgIGRlc2NlbmRpbmc6IHNvcnQuZGVzY2VuZGluZyxcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5kaXNwYXRjaGVyLnNvcnRTZXRHbG9iYWwoc29ydE1vZGVscyk7XG5cbiAgICAvLyBBZGQgaW5saW5lIGZpbHRlcnMuXG4gICAgdGhpcy5zaG93RmlsdGVyU3VtbWFyeSA9IHRoaXMuZmlsdGVyU3VtbWFyeS5sZW5ndGggPiAwO1xuICAgIHRoaXMuaGFzSW5saW5lRmlsdGVycyA9IHRoaXMuaW5saW5lRmlsdGVyLmxlbmd0aCA+IDA7XG5cbiAgICBpZiAodGhpcy5oYXNJbmxpbmVGaWx0ZXJzKSB7XG4gICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhckFkZEl0ZW1zKFtcbiAgICAgICAgbmV3IExpc3RUb29sYmFySXRlbU1vZGVsKHtcbiAgICAgICAgICB0ZW1wbGF0ZTogdGhpcy5pbmxpbmVGaWx0ZXJCdXR0b25UZW1wbGF0ZSxcbiAgICAgICAgICBsb2NhdGlvbjogJ2xlZnQnLFxuICAgICAgICAgIGluZGV4OiB0aGlzLmlubGluZUZpbHRlcnNJdGVtVG9vbGJhckluZGV4LFxuICAgICAgICB9KSxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciB2aWV3IGFjdGlvbnNcbiAgICB0aGlzLmhhc1ZpZXdBY3Rpb25zID0gdGhpcy52aWV3QWN0aW9ucy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc2VhcmNoQXBwbGllZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0U29ydChzb3J0OiBMaXN0U29ydExhYmVsTW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChjdXJyZW50U3RhdGUpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgY3VycmVudFN0YXRlLnBhZ2luZy5wYWdlTnVtYmVyICYmXG4gICAgICAgIGN1cnJlbnRTdGF0ZS5wYWdpbmcucGFnZU51bWJlciAhPT0gMVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hlci5uZXh0KG5ldyBMaXN0UGFnaW5nU2V0UGFnZU51bWJlckFjdGlvbihOdW1iZXIoMSkpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kaXNwYXRjaGVyLnNvcnRTZXRGaWVsZFNlbGVjdG9ycyhbXG4gICAgICAgIHsgZmllbGRTZWxlY3Rvcjogc29ydC5maWVsZFNlbGVjdG9yLCBkZXNjZW5kaW5nOiBzb3J0LmRlc2NlbmRpbmcgfSxcbiAgICAgIF0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGlubGluZUZpbHRlckJ1dHRvbkNsaWNrKCkge1xuICAgIHRoaXMuaW5saW5lRmlsdGVyQmFyRXhwYW5kZWQgPSAhdGhpcy5pbmxpbmVGaWx0ZXJCYXJFeHBhbmRlZDtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTZWFyY2hUZXh0KHNlYXJjaFRleHQ6IHN0cmluZykge1xuICAgIHRoaXMuc2VhcmNoQXBwbGllZC5uZXh0KHNlYXJjaFRleHQpO1xuICAgIGlmICh0aGlzLmluTWVtb3J5U2VhcmNoRW5hYmxlZCkge1xuICAgICAgdGhpcy5zdGF0ZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoY3VycmVudFN0YXRlKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjdXJyZW50U3RhdGUucGFnaW5nLnBhZ2VOdW1iZXIgJiZcbiAgICAgICAgICBjdXJyZW50U3RhdGUucGFnaW5nLnBhZ2VOdW1iZXIgIT09IDFcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaGVyLm5leHQobmV3IExpc3RQYWdpbmdTZXRQYWdlTnVtYmVyQWN0aW9uKE51bWJlcigxKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kaXNwYXRjaGVyLnNlYXJjaFNldFRleHQoc2VhcmNoVGV4dCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGl0ZW1Jc0luVmlldyhpdGVtVmlldzogc3RyaW5nLCBhY3RpdmVWaWV3OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gaXRlbVZpZXcgPT09IHVuZGVmaW5lZCB8fCBpdGVtVmlldyA9PT0gYWN0aXZlVmlldztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U29ydFNlbGVjdG9ycygpIHtcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUNvbWJpbmVMYXRlc3QoXG4gICAgICB0aGlzLnN0YXRlLnBpcGUoXG4gICAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMuc29ydC5hdmFpbGFibGUpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICApLFxuICAgICAgdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLnNvcnQuZ2xvYmFsKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgKSxcbiAgICAgIHRoaXMuc3RhdGUucGlwZShcbiAgICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy5zb3J0LmZpZWxkU2VsZWN0b3JzKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgKSxcbiAgICAgIChcbiAgICAgICAgYXZhaWxhYmxlOiBBcnJheTxMaXN0U29ydExhYmVsTW9kZWw+LFxuICAgICAgICBnbG9iYWw6IEFycmF5PExpc3RTb3J0TGFiZWxNb2RlbD4sXG4gICAgICAgIGZpZWxkU2VsZWN0b3JzOiBBcnJheTxMaXN0U29ydEZpZWxkU2VsZWN0b3JNb2RlbD5cbiAgICAgICkgPT4ge1xuICAgICAgICAvLyBHZXQgc29ydHMgdGhhdCBhcmUgaW4gdGhlIGdsb2JhbCB0aGF0IGFyZSBub3QgaW4gdGhlIGF2YWlsYWJsZVxuICAgICAgICBjb25zdCBzb3J0cyA9IGdsb2JhbC5maWx0ZXIoXG4gICAgICAgICAgKGcpID0+XG4gICAgICAgICAgICBhdmFpbGFibGUuZmlsdGVyKChhKSA9PiBhLmZpZWxkU2VsZWN0b3IgPT09IGcuZmllbGRTZWxlY3RvcilcbiAgICAgICAgICAgICAgLmxlbmd0aCA9PT0gMFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdFNvcnRTZWxlY3RvcnMgPSBbLi4uc29ydHMsIC4uLmF2YWlsYWJsZV0ubWFwKFxuICAgICAgICAgIChzb3J0TGFiZWxzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmcyA9IGZpZWxkU2VsZWN0b3JzLmZpbHRlcigoZikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIGYuZmllbGRTZWxlY3RvciA9PT0gc29ydExhYmVscy5maWVsZFNlbGVjdG9yICYmXG4gICAgICAgICAgICAgICAgZi5kZXNjZW5kaW5nID09PSBzb3J0TGFiZWxzLmRlc2NlbmRpbmdcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoZnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBzZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHNvcnQ6IHNvcnRMYWJlbHMsXG4gICAgICAgICAgICAgIHNlbGVjdGVkOiBzZWxlY3RlZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiByZXN1bHRTb3J0U2VsZWN0b3JzO1xuICAgICAgfVxuICAgICkucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoVGVtcGxhdGVzKCkge1xuICAgIG9ic2VydmFibGVDb21iaW5lTGF0ZXN0KFxuICAgICAgdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLnRvb2xiYXIpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICApLFxuICAgICAgdGhpcy52aWV3LnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgICAodG9vbGJhcjogTGlzdFRvb2xiYXJNb2RlbCwgdmlldzogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdG9vbGJhci5pdGVtcy5maWx0ZXIoKGk6IExpc3RUb29sYmFySXRlbU1vZGVsKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbUlzSW5WaWV3KGkudmlldywgdmlldyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlczogYW55ID0ge307XG5cbiAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbTogTGlzdFRvb2xiYXJJdGVtTW9kZWwpID0+IHtcbiAgICAgICAgICB0ZW1wbGF0ZXNbaXRlbS5sb2NhdGlvbl0gPSB0ZW1wbGF0ZXNbaXRlbS5sb2NhdGlvbl0gfHwgW107XG4gICAgICAgICAgdGVtcGxhdGVzW2l0ZW0ubG9jYXRpb25dLnB1c2goaXRlbSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZXM7XG4gICAgICB9XG4gICAgKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLmxlZnRUZW1wbGF0ZXMgPSB2YWx1ZS5sZWZ0O1xuICAgICAgICB0aGlzLmNlbnRlclRlbXBsYXRlcyA9IHZhbHVlLmNlbnRlcjtcbiAgICAgICAgdGhpcy5yaWdodFRlbXBsYXRlcyA9IHZhbHVlLnJpZ2h0O1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktbGlzdC10b29sYmFyLWNvbnRhaW5lclwiPlxuICA8c2t5LXRvb2xiYXIgKm5nSWY9XCIodHlwZSB8IGFzeW5jKSAhPT0gJ3NlYXJjaCdcIj5cbiAgICA8c2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICAgIDxza3ktdG9vbGJhci1pdGVtICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxlZnRUZW1wbGF0ZXNcIj5cbiAgICAgICAgPHNreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlclxuICAgICAgICAgIFthdHRyLnNreS1jbXAtaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgW3RlbXBsYXRlXT1cIml0ZW0udGVtcGxhdGVcIlxuICAgICAgICA+XG4gICAgICAgIDwvc2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyPlxuICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuICAgICAgPHNreS10b29sYmFyLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgY2VudGVyVGVtcGxhdGVzXCI+XG4gICAgICAgIDxza3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXJcbiAgICAgICAgICBbYXR0ci5za3ktY21wLWlkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgIFt0ZW1wbGF0ZV09XCJpdGVtLnRlbXBsYXRlXCJcbiAgICAgICAgPlxuICAgICAgICA8L3NreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlcj5cbiAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgIDxza3ktdG9vbGJhci1pdGVtXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJpZ2h0VGVtcGxhdGVzXCJcbiAgICAgICAgW2F0dHIuc2t5LXRvb2xiYXItaWRdPVwiaXRlbS5pZFwiXG4gICAgICA+XG4gICAgICAgIDxza3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXJcbiAgICAgICAgICBbYXR0ci5za3ktY21wLWlkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgIFt0ZW1wbGF0ZV09XCJpdGVtLnRlbXBsYXRlXCJcbiAgICAgICAgPlxuICAgICAgICA8L3NreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlcj5cbiAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cblxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgICA8c2t5LXRvb2xiYXItdmlldy1hY3Rpb25zICpuZ0lmPVwiaGFzVmlld0FjdGlvbnNcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWxpc3QtdG9vbGJhci12aWV3LWFjdGlvbnNcIj4gPC9uZy1jb250ZW50PlxuICAgICAgPC9za3ktdG9vbGJhci12aWV3LWFjdGlvbnM+XG4gICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuXG4gICAgPHNreS10b29sYmFyLXNlY3Rpb25cbiAgICAgICpuZ0lmPVwic2hvd0ZpbHRlclN1bW1hcnkgJiYgKGhhc0FwcGxpZWRGaWx0ZXJzIHwgYXN5bmMpXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktbGlzdC1maWx0ZXItc3VtbWFyeVwiPiA8L25nLWNvbnRlbnQ+XG4gICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuICA8L3NreS10b29sYmFyPlxuXG4gIDxkaXZcbiAgICAqbmdJZj1cIlxuICAgICAgKHR5cGUgfCBhc3luYykgPT09ICdzZWFyY2gnICYmXG4gICAgICAoKGlzU2VhcmNoRW5hYmxlZCB8IGFzeW5jKSB8fCBoYXNBZGRpdGlvbmFsVG9vbGJhclNlY3Rpb24pXG4gICAgXCJcbiAgICBjbGFzcz1cInNreS1saXN0LXRvb2xiYXItc2VhcmNoXCJcbiAgPlxuICAgIDxza3ktdG9vbGJhcj5cbiAgICAgIDxza3ktdG9vbGJhci1zZWN0aW9uICpuZ0lmPVwiaXNTZWFyY2hFbmFibGVkIHwgYXN5bmNcIj5cbiAgICAgICAgPHNreS10b29sYmFyLWl0ZW0+XG4gICAgICAgICAgPHNreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlclxuICAgICAgICAgICAgc2t5LWNtcC1pZD1cInNlYXJjaFwiXG4gICAgICAgICAgICBbdGVtcGxhdGVdPVwic2VhcmNoXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9za3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXI+XG4gICAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgIDwvc2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICAgIDxza3ktdG9vbGJhci1zZWN0aW9uIFtoaWRkZW5dPVwiIWhhc0FkZGl0aW9uYWxUb29sYmFyU2VjdGlvblwiPlxuICAgICAgICA8c2t5LXRvb2xiYXItaXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsZWZ0VGVtcGxhdGVzXCI+XG4gICAgICAgICAgPHNreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlclxuICAgICAgICAgICAgW2F0dHIuc2t5LWNtcC1pZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJpdGVtLnRlbXBsYXRlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9za3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXI+XG4gICAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgPHNreS10b29sYmFyLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgY2VudGVyVGVtcGxhdGVzXCI+XG4gICAgICAgICAgPHNreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlclxuICAgICAgICAgICAgW2F0dHIuc2t5LWNtcC1pZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJpdGVtLnRlbXBsYXRlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9za3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXI+XG4gICAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgPHNreS10b29sYmFyLWl0ZW1cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiByaWdodFRlbXBsYXRlc1wiXG4gICAgICAgICAgW2F0dHIuc2t5LXRvb2xiYXItaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyXG4gICAgICAgICAgICAqbmdJZj1cIml0ZW0uaWQgIT09ICdzZWFyY2gnXCJcbiAgICAgICAgICAgIFthdHRyLnNreS1jbXAtaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICBbdGVtcGxhdGVdPVwiaXRlbS50ZW1wbGF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvc2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyPlxuICAgICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgICAgICA8c2t5LXRvb2xiYXItdmlldy1hY3Rpb25zICpuZ0lmPVwiaGFzVmlld0FjdGlvbnNcIj5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktbGlzdC10b29sYmFyLXZpZXctYWN0aW9uc1wiPiA8L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvc2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuICAgIDwvc2t5LXRvb2xiYXI+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJpc0ZpbHRlckJhckRpc3BsYXllZFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImZpbHRlckJ1dHRvbklkXCJcbiAgICBbaWRdPVwibGlzdEZpbHRlcklubGluZUlkXCJcbiAgPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1saXN0LWZpbHRlci1pbmxpbmVcIj4gPC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPHNreS1saXN0LW11bHRpc2VsZWN0LXRvb2xiYXIgKm5nSWY9XCJpc011bHRpc2VsZWN0RW5hYmxlZCB8IGFzeW5jXCI+XG4gIDwvc2t5LWxpc3QtbXVsdGlzZWxlY3QtdG9vbGJhcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaD5cbiAgPGRpdiAqbmdJZj1cImlzU2VhcmNoRW5hYmxlZCB8IGFzeW5jXCIgY2xhc3M9XCJza3ktbGlzdC10b29sYmFyLXNlYXJjaC13cmFwcGVyXCI+XG4gICAgPHNreS1zZWFyY2hcbiAgICAgIFtkaXNhYmxlZF09XCJpc1Rvb2xiYXJEaXNhYmxlZFwiXG4gICAgICBbZXhwYW5kTW9kZV09XCIodHlwZSB8IGFzeW5jKSA9PT0gJ3NlYXJjaCcgPyAnZml0JyA6ICdyZXNwb25zaXZlJ1wiXG4gICAgICBbcGxhY2Vob2xkZXJUZXh0XT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaFRleHRJbnB1dCB8IGFzeW5jXCJcbiAgICAgIChzZWFyY2hBcHBseSk9XCJ1cGRhdGVTZWFyY2hUZXh0KCRldmVudClcIlxuICAgID5cbiAgICA8L3NreS1zZWFyY2g+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWxpc3QtdG9vbGJhci1zZWFyY2gtYWN0aW9uc1wiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NvcnRTZWxlY3Rvcj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiXG4gICAgICAoaXNTb3J0U2VsZWN0b3JFbmFibGVkIHwgYXN5bmMpICYmIChzb3J0U2VsZWN0b3JzIHwgYXN5bmMpLmxlbmd0aCA+IDBcbiAgICBcIlxuICAgIGNsYXNzPVwic2t5LXRvb2xiYXItaXRlbS1zb3J0LWNvbnRhaW5lclwiXG4gID5cbiAgICA8c2t5LXNvcnQgW3Nob3dCdXR0b25UZXh0XT1cInRydWVcIj5cbiAgICAgIDxza3ktc29ydC1pdGVtXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNvcnRTZWxlY3RvcnMgfCBhc3luY1wiXG4gICAgICAgIFthY3RpdmVdPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgIChpdGVtU2VsZWN0KT1cInNldFNvcnQoaXRlbS5zb3J0KVwiXG4gICAgICA+XG4gICAgICAgIHt7IGl0ZW0uc29ydC50ZXh0IH19XG4gICAgICA8L3NreS1zb3J0LWl0ZW0+XG4gICAgPC9za3ktc29ydD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lubGluZUZpbHRlckJ1dHRvbj5cbiAgPHNreS1maWx0ZXItYnV0dG9uXG4gICAgW2FjdGl2ZV09XCJoYXNBcHBsaWVkRmlsdGVycyB8IGFzeW5jXCJcbiAgICBbYXJpYUNvbnRyb2xzXT1cImZpbHRlckJ1dHRvbkFyaWFDb250cm9sc1wiXG4gICAgW2FyaWFFeHBhbmRlZF09XCJpbmxpbmVGaWx0ZXJCYXJFeHBhbmRlZFwiXG4gICAgW2Rpc2FibGVkXT1cImlzVG9vbGJhckRpc2FibGVkXCJcbiAgICBbZmlsdGVyQnV0dG9uSWRdPVwiZmlsdGVyQnV0dG9uSWRcIlxuICAgIFtzaG93QnV0dG9uVGV4dF09XCJ0cnVlXCJcbiAgICAoZmlsdGVyQnV0dG9uQ2xpY2spPVwiaW5saW5lRmlsdGVyQnV0dG9uQ2xpY2soKVwiXG4gID5cbiAgPC9za3ktZmlsdGVyLWJ1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
360
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9saXN0LWJ1aWxkZXIvc3JjL2xpYi9tb2R1bGVzL2xpc3QtdG9vbGJhci9saXN0LXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3QtYnVpbGRlci9zcmMvbGliL21vZHVsZXMvbGlzdC10b29sYmFyL2xpc3QtdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxFQUlMLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBRUwsT0FBTyxFQUNQLGFBQWEsSUFBSSx1QkFBdUIsR0FDekMsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLEdBQUcsSUFBSSxhQUFhLEVBQ3BCLElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4QixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUM1RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUc5RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsb0JBQW9CLEVB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QVFNLG1CQUFtQjtzQkFEekIsS0FBSztnQkFVQyxXQUFXO3NCQURqQixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBNkNFLFlBQVk7c0JBRG5CLGVBQWU7dUJBQUMsMkJBQTJCO2dCQUlwQyxZQUFZO3NCQURuQixlQUFlO3VCQUFDLDJCQUEyQjtnQkFJcEMsYUFBYTtzQkFEcEIsZUFBZTt1QkFBQyw2QkFBNkI7Z0JBSXRDLFlBQVk7c0JBRG5CLGVBQWU7dUJBQUMsNEJBQTRCO2dCQUlyQyxXQUFXO3NCQURsQixlQUFlO3VCQUFDLGtDQUFrQztnQkFPM0MsY0FBYztzQkFKckIsU0FBUzt1QkFBQyxRQUFRLEVBQUU7d0JBQ25CLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTyxvQkFBb0I7c0JBSjNCLFNBQVM7dUJBQUMsY0FBYyxFQUFFO3dCQUN6QixJQUFJLEVBQUUsV0FBVzt3QkFDakIsTUFBTSxFQUFFLElBQUk7cUJBQ2I7Z0JBT08sMEJBQTBCO3NCQUpqQyxTQUFTO3VCQUFDLG9CQUFvQixFQUFFO3dCQUMvQixJQUFJLEVBQUUsV0FBVzt3QkFDakIsTUFBTSxFQUFFLElBQUk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgZ2V0VmFsdWUgfSBmcm9tICdAc2t5dXgvbGlzdC1idWlsZGVyLWNvbW1vbic7XG5pbXBvcnQgeyBMaXN0U29ydEZpZWxkU2VsZWN0b3JNb2RlbCB9IGZyb20gJ0Bza3l1eC9saXN0LWJ1aWxkZXItY29tbW9uJztcbmltcG9ydCB7IFNreVNlYXJjaENvbXBvbmVudCB9IGZyb20gJ0Bza3l1eC9sb29rdXAnO1xuXG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0IGFzIG9ic2VydmFibGVDb21iaW5lTGF0ZXN0LFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAgYXMgb2JzZXJ2YWJsZU1hcCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IExpc3RGaWx0ZXJNb2RlbCB9IGZyb20gJy4uL2xpc3QtZmlsdGVycy9maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHsgU2t5TGlzdEZpbHRlcklubGluZUNvbXBvbmVudCB9IGZyb20gJy4uL2xpc3QtZmlsdGVycy9saXN0LWZpbHRlci1pbmxpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUxpc3RGaWx0ZXJTdW1tYXJ5Q29tcG9uZW50IH0gZnJvbSAnLi4vbGlzdC1maWx0ZXJzL2xpc3QtZmlsdGVyLXN1bW1hcnkuY29tcG9uZW50JztcbmltcG9ydCB7IExpc3RTdGF0ZURpc3BhdGNoZXIgfSBmcm9tICcuLi9saXN0L3N0YXRlL2xpc3Qtc3RhdGUucnhzdGF0ZSc7XG5pbXBvcnQgeyBMaXN0U3RhdGUgfSBmcm9tICcuLi9saXN0L3N0YXRlL2xpc3Qtc3RhdGUuc3RhdGUtbm9kZSc7XG5pbXBvcnQgeyBMaXN0UGFnaW5nU2V0UGFnZU51bWJlckFjdGlvbiB9IGZyb20gJy4uL2xpc3Qvc3RhdGUvcGFnaW5nL3NldC1wYWdlLW51bWJlci5hY3Rpb24nO1xuaW1wb3J0IHsgTGlzdFNvcnRMYWJlbE1vZGVsIH0gZnJvbSAnLi4vbGlzdC9zdGF0ZS9zb3J0L2xhYmVsLm1vZGVsJztcbmltcG9ydCB7IExpc3RUb29sYmFyU2V0VHlwZUFjdGlvbiB9IGZyb20gJy4uL2xpc3Qvc3RhdGUvdG9vbGJhci9zZXQtdHlwZS5hY3Rpb24nO1xuaW1wb3J0IHsgTGlzdFRvb2xiYXJJdGVtTW9kZWwgfSBmcm9tICcuLi9saXN0L3N0YXRlL3Rvb2xiYXIvdG9vbGJhci1pdGVtLm1vZGVsJztcbmltcG9ydCB7IExpc3RUb29sYmFyTW9kZWwgfSBmcm9tICcuLi9saXN0L3N0YXRlL3Rvb2xiYXIvdG9vbGJhci5tb2RlbCc7XG5cbmltcG9ydCB7IFNreUxpc3RUb29sYmFySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbGlzdC10b29sYmFyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFNreUxpc3RUb29sYmFyU29ydENvbXBvbmVudCB9IGZyb20gJy4vbGlzdC10b29sYmFyLXNvcnQuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUxpc3RUb29sYmFyVmlld0FjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2xpc3QtdG9vbGJhci12aWV3LWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IExpc3RUb29sYmFyQ29uZmlnU2V0U2VhcmNoRW5hYmxlZEFjdGlvbiB9IGZyb20gJy4vc3RhdGUvY29uZmlnL3NldC1zZWFyY2gtZW5hYmxlZC5hY3Rpb24nO1xuaW1wb3J0IHsgTGlzdFRvb2xiYXJDb25maWdTZXRTb3J0U2VsZWN0b3JFbmFibGVkQWN0aW9uIH0gZnJvbSAnLi9zdGF0ZS9jb25maWcvc2V0LXNvcnQtc2VsZWN0b3ItZW5hYmxlZC5hY3Rpb24nO1xuaW1wb3J0IHsgTGlzdFRvb2xiYXJTdGF0ZU1vZGVsIH0gZnJvbSAnLi9zdGF0ZS90b29sYmFyLXN0YXRlLm1vZGVsJztcbmltcG9ydCB7IExpc3RUb29sYmFyU3RhdGVEaXNwYXRjaGVyIH0gZnJvbSAnLi9zdGF0ZS90b29sYmFyLXN0YXRlLnJ4c3RhdGUnO1xuaW1wb3J0IHsgTGlzdFRvb2xiYXJTdGF0ZSB9IGZyb20gJy4vc3RhdGUvdG9vbGJhci1zdGF0ZS5zdGF0ZS1ub2RlJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogRGlzcGxheXMgYSB0b29sYmFyIGZvciBhIFNLWSBVWC10aGVtZWQgbGlzdCBvZiBkYXRhLlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWxpc3QtdG9vbGJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXRvb2xiYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0LXRvb2xiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgTGlzdFRvb2xiYXJTdGF0ZSxcbiAgICBMaXN0VG9vbGJhclN0YXRlRGlzcGF0Y2hlcixcbiAgICBMaXN0VG9vbGJhclN0YXRlTW9kZWwsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lMaXN0VG9vbGJhckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVzZSB0aGUgaW4tbWVtb3J5IHNlYXJjaC5cbiAgICogU2V0dGluZyB0aGlzIHRvIGBmYWxzZWAgd2lsbCBhbGxvdyBjb25zdW1lcnMgdG8gcnVuIHRoZWlyIG93biBzZWFyY2hlcyByZW1vdGVseSxcbiAgICogYW5kIHB1c2ggbmV3IHZhbHVlcyB0byB0aGUgbGlzdCBjb21wb25lbnQgYnkgdXBkYXRpbmcgdGhlIGBkYXRhYCBwcm9wZXJ0eS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaW5NZW1vcnlTZWFyY2hFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW5NZW1vcnlTZWFyY2hFbmFibGVkID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluTWVtb3J5U2VhcmNoRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5faW5NZW1vcnlTZWFyY2hFbmFibGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5faW5NZW1vcnlTZWFyY2hFbmFibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIHRleHQgZm9yIHRoZSBzZWFyY2ggYmFyIHRoYXQgdGhlIGxpc3QgdG9vbGJhciBjcmVhdGVzIHdpdGhcbiAgICogYSBbc2VhcmNoIGNvbXBvbmVudF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3NlYXJjaCkuXG4gICAqIEBkZWZhdWx0IFwiRmluZCBpbiB0aGlzIGxpc3RcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBzZWFyY2ggYmFyLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VhcmNoRW5hYmxlZDogYm9vbGVhbiB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgQFZpZXdDaGlsZChTa3lTZWFyY2hDb21wb25lbnQsIHtcbiAgICByZWFkOiBTa3lTZWFyY2hDb21wb25lbnQsXG4gICAgc3RhdGljOiBmYWxzZSxcbiAgfSlcbiAgcHVibGljIHNlYXJjaENvbXBvbmVudDogU2t5U2VhcmNoQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgc29ydCBzZWxlY3Rvci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzb3J0U2VsZWN0b3JFbmFibGVkOiBib29sZWFuIHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAvKipcbiAgICogRGlzcGxheSB0aGUgc2VhcmNoIGJhciBpbiB0aGUgc3RhbmRhcmQgcG9zaXRpb24gb3IgaW4gYSBzZXBhcmF0ZSBzZWN0aW9uLlxuICAgKiBUbyBoaWdobGlnaHQgdGhlIHNlYXJjaCBiYXIgaW4gYSBzZWN0aW9uIGFib3ZlIGFsbCBvdGhlciB0b29sYmFyIGl0ZW1zLFxuICAgKiBzZXQgdGhpcyBwcm9wZXJ0eSB0byBgc2VhcmNoYC5cbiAgICogQGRlZmF1bHQgXCJzdGFuZGFyZFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdG9vbGJhclR5cGUgPSAnc3RhbmRhcmQnO1xuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCBzdHJpbmcgdG8gc2VhcmNoIHdpdGguXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VhcmNoVGV4dDogc3RyaW5nIHwgT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIHB1YmxpYyBnZXQgaXNGaWx0ZXJCYXJEaXNwbGF5ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICF0aGlzLmlzVG9vbGJhckRpc2FibGVkICYmXG4gICAgICB0aGlzLmhhc0lubGluZUZpbHRlcnMgJiZcbiAgICAgIHRoaXMuaW5saW5lRmlsdGVyQmFyRXhwYW5kZWRcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJCdXR0b25BcmlhQ29udHJvbHMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckJhckRpc3BsYXllZCA/IHRoaXMubGlzdEZpbHRlcklubGluZUlkIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHNvcnRTZWxlY3RvcnM6IE9ic2VydmFibGU8QXJyYXk8YW55Pj47XG4gIHB1YmxpYyBzZWFyY2hUZXh0SW5wdXQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIHZpZXc6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIGxlZnRUZW1wbGF0ZXM6IExpc3RUb29sYmFySXRlbU1vZGVsW107XG4gIHB1YmxpYyBjZW50ZXJUZW1wbGF0ZXM6IExpc3RUb29sYmFySXRlbU1vZGVsW107XG4gIHB1YmxpYyByaWdodFRlbXBsYXRlczogTGlzdFRvb2xiYXJJdGVtTW9kZWxbXTtcbiAgcHVibGljIHR5cGU6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIGlzU2VhcmNoRW5hYmxlZDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzVG9vbGJhckRpc2FibGVkID0gZmFsc2U7XG4gIHB1YmxpYyBpc011bHRpc2VsZWN0RW5hYmxlZDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzU29ydFNlbGVjdG9yRW5hYmxlZDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGFwcGxpZWRGaWx0ZXJzOiBPYnNlcnZhYmxlPEFycmF5PExpc3RGaWx0ZXJNb2RlbD4+O1xuICBwdWJsaWMgaGFzQXBwbGllZEZpbHRlcnM6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBzaG93RmlsdGVyU3VtbWFyeTogYm9vbGVhbjtcbiAgcHVibGljIGhhc0lubGluZUZpbHRlcnM6IGJvb2xlYW47XG4gIHB1YmxpYyBpbmxpbmVGaWx0ZXJCYXJFeHBhbmRlZCA9IGZhbHNlO1xuICBwdWJsaWMgaGFzQWRkaXRpb25hbFRvb2xiYXJTZWN0aW9uID0gZmFsc2U7XG4gIHB1YmxpYyBoYXNWaWV3QWN0aW9ucyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBmaWx0ZXJCdXR0b25JZCA9IGBza3ktbGlzdC10b29sYmFyLWZpbHRlci1idXR0b24tJHsrK25leHRJZH1gO1xuICBwdWJsaWMgbGlzdEZpbHRlcklubGluZUlkID0gYHNreS1saXN0LXRvb2xiYXItZmlsdGVyLWlubGluZS0keysrbmV4dElkfWA7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc3VibWl0IGEgc2VhcmNoLlxuICAgKiBAaW50ZXJuYWxcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHB1YmxpYyBzZWFyY2hBcHBsaWVkOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lMaXN0VG9vbGJhckl0ZW1Db21wb25lbnQpXG4gIHByaXZhdGUgdG9vbGJhckl0ZW1zOiBRdWVyeUxpc3Q8U2t5TGlzdFRvb2xiYXJJdGVtQ29tcG9uZW50PjtcblxuICBAQ29udGVudENoaWxkcmVuKFNreUxpc3RUb29sYmFyU29ydENvbXBvbmVudClcbiAgcHJpdmF0ZSB0b29sYmFyU29ydHM6IFF1ZXJ5TGlzdDxTa3lMaXN0VG9vbGJhclNvcnRDb21wb25lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5TGlzdEZpbHRlclN1bW1hcnlDb21wb25lbnQpXG4gIHByaXZhdGUgZmlsdGVyU3VtbWFyeTogUXVlcnlMaXN0PFNreUxpc3RGaWx0ZXJTdW1tYXJ5Q29tcG9uZW50PjtcblxuICBAQ29udGVudENoaWxkcmVuKFNreUxpc3RGaWx0ZXJJbmxpbmVDb21wb25lbnQpXG4gIHByaXZhdGUgaW5saW5lRmlsdGVyOiBRdWVyeUxpc3Q8U2t5TGlzdEZpbHRlcklubGluZUNvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lMaXN0VG9vbGJhclZpZXdBY3Rpb25zQ29tcG9uZW50KVxuICBwcml2YXRlIHZpZXdBY3Rpb25zOiBRdWVyeUxpc3Q8U2t5TGlzdFRvb2xiYXJWaWV3QWN0aW9uc0NvbXBvbmVudD47XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSBzZWFyY2hUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQFZpZXdDaGlsZCgnc29ydFNlbGVjdG9yJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSBzb3J0U2VsZWN0b3JUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQFZpZXdDaGlsZCgnaW5saW5lRmlsdGVyQnV0dG9uJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSBpbmxpbmVGaWx0ZXJCdXR0b25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgcHJpdmF0ZSBjdXN0b21JdGVtSWRzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGhhc1NvcnRTZWxlY3RvcnMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpbmxpbmVGaWx0ZXJzSXRlbVRvb2xiYXJJbmRleCA9IDUwMDA7XG4gIHByaXZhdGUgc29ydFNlbGVjdG9ySXRlbVRvb2xiYXJJbmRleCA9IDYwMDA7XG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfaW5NZW1vcnlTZWFyY2hFbmFibGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgc3RhdGU6IExpc3RTdGF0ZSxcbiAgICBwcml2YXRlIGRpc3BhdGNoZXI6IExpc3RTdGF0ZURpc3BhdGNoZXIsXG4gICAgcHJpdmF0ZSB0b29sYmFyU3RhdGU6IExpc3RUb29sYmFyU3RhdGUsXG4gICAgcHVibGljIHRvb2xiYXJEaXNwYXRjaGVyOiBMaXN0VG9vbGJhclN0YXRlRGlzcGF0Y2hlcixcbiAgICBsb2dnZXI6IFNreUxvZ1NlcnZpY2VcbiAgKSB7XG4gICAgbG9nZ2VyLmRlcHJlY2F0ZWQoJ1NreUxpc3RUb29sYmFyQ29tcG9uZW50Jywge1xuICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDYsXG4gICAgICBtb3JlSW5mb1VybDpcbiAgICAgICAgJ2h0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9kYXRhLW1hbmFnZXInLFxuICAgICAgcmVwbGFjZW1lbnRSZWNvbW1lbmRhdGlvbjogJ1VzZSBkYXRhIG1hbmFnZXIgaW5zdGVhZC4nLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyRXhpc3RzKHRydWUpO1xuXG4gICAgZ2V0VmFsdWUodGhpcy5zZWFyY2hUZXh0LCAoc2VhcmNoVGV4dDogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVNlYXJjaFRleHQoc2VhcmNoVGV4dCk7XG4gICAgfSk7XG5cbiAgICBnZXRWYWx1ZSh0aGlzLnNlYXJjaEVuYWJsZWQsIChzZWFyY2hFbmFibGVkOiBib29sZWFuKSA9PiB7XG4gICAgICB0aGlzLnRvb2xiYXJEaXNwYXRjaGVyLm5leHQoXG4gICAgICAgIG5ldyBMaXN0VG9vbGJhckNvbmZpZ1NldFNlYXJjaEVuYWJsZWRBY3Rpb24oXG4gICAgICAgICAgc2VhcmNoRW5hYmxlZCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHNlYXJjaEVuYWJsZWRcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGdldFZhbHVlKHRoaXMudG9vbGJhclR5cGUsICh0eXBlOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hlci5uZXh0KG5ldyBMaXN0VG9vbGJhclNldFR5cGVBY3Rpb24odGhpcy50b29sYmFyVHlwZSkpO1xuICAgIH0pO1xuXG4gICAgZ2V0VmFsdWUodGhpcy5zb3J0U2VsZWN0b3JFbmFibGVkLCAoc29ydFNlbGVjdG9yRW5hYmxlZDogYW55KSA9PiB7XG4gICAgICB0aGlzLnRvb2xiYXJEaXNwYXRjaGVyLm5leHQoXG4gICAgICAgIG5ldyBMaXN0VG9vbGJhckNvbmZpZ1NldFNvcnRTZWxlY3RvckVuYWJsZWRBY3Rpb24oXG4gICAgICAgICAgc29ydFNlbGVjdG9yRW5hYmxlZCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHNvcnRTZWxlY3RvckVuYWJsZWRcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc29ydFNlbGVjdG9ycyA9IHRoaXMuZ2V0U29ydFNlbGVjdG9ycygpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgc29ydCB0b29sYmFyIGl0ZW0gaWYgbmVjZXNzYXJ5XG4gICAgdGhpcy5zb3J0U2VsZWN0b3JzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGN1cnJlbnRTb3J0KSA9PiB7XG4gICAgICAgIGlmIChjdXJyZW50U29ydC5sZW5ndGggPiAwICYmICF0aGlzLmhhc1NvcnRTZWxlY3RvcnMpIHtcbiAgICAgICAgICB0aGlzLmhhc1NvcnRTZWxlY3RvcnMgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyQWRkSXRlbXMoW1xuICAgICAgICAgICAgbmV3IExpc3RUb29sYmFySXRlbU1vZGVsKHtcbiAgICAgICAgICAgICAgaWQ6ICdzb3J0LXNlbGVjdG9yJyxcbiAgICAgICAgICAgICAgdGVtcGxhdGU6IHRoaXMuc29ydFNlbGVjdG9yVGVtcGxhdGUsXG4gICAgICAgICAgICAgIGxvY2F0aW9uOiAnbGVmdCcsXG4gICAgICAgICAgICAgIGluZGV4OiB0aGlzLnNvcnRTZWxlY3Rvckl0ZW1Ub29sYmFySW5kZXgsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50U29ydC5sZW5ndGggPCAxICYmIHRoaXMuaGFzU29ydFNlbGVjdG9ycykge1xuICAgICAgICAgIHRoaXMuaGFzU29ydFNlbGVjdG9ycyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyUmVtb3ZlSXRlbXMoWydzb3J0LXNlbGVjdG9yJ10pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuc2VhcmNoVGV4dElucHV0ID0gdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLnNlYXJjaC5zZWFyY2hUZXh0KSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuXG4gICAgdGhpcy52aWV3ID0gdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLnZpZXdzLmFjdGl2ZSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKTtcblxuICAgIHRoaXMud2F0Y2hUZW1wbGF0ZXMoKTtcblxuICAgIHRoaXMudHlwZSA9IHRoaXMuc3RhdGUucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgoc3RhdGUpID0+IHN0YXRlLnRvb2xiYXIudHlwZSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKTtcblxuICAgIHRoaXMudHlwZS5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHRvb2xiYXJUeXBlKSA9PiB7XG4gICAgICBpZiAodG9vbGJhclR5cGUgPT09ICdzZWFyY2gnKSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyUmVtb3ZlSXRlbXMoWydzZWFyY2gnXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhckFkZEl0ZW1zKFtcbiAgICAgICAgICBuZXcgTGlzdFRvb2xiYXJJdGVtTW9kZWwoe1xuICAgICAgICAgICAgaWQ6ICdzZWFyY2gnLFxuICAgICAgICAgICAgdGVtcGxhdGU6IHRoaXMuc2VhcmNoVGVtcGxhdGUsXG4gICAgICAgICAgICBsb2NhdGlvbjogJ3JpZ2h0JyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmlzU2VhcmNoRW5hYmxlZCA9IHRoaXMudG9vbGJhclN0YXRlLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMuY29uZmlnKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBvYnNlcnZhYmxlTWFwKChjKSA9PiBjLnNlYXJjaEVuYWJsZWQpXG4gICAgKTtcblxuICAgIHRoaXMuc3RhdGVcbiAgICAgIC5waXBlKFxuICAgICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLnRvb2xiYXIpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgb2JzZXJ2YWJsZU1hcCgoYykgPT4gYy5kaXNhYmxlZClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGlzRGlzYWJsZWQpID0+ICh0aGlzLmlzVG9vbGJhckRpc2FibGVkID0gaXNEaXNhYmxlZCkpO1xuXG4gICAgdGhpcy5pc1NvcnRTZWxlY3RvckVuYWJsZWQgPSB0aGlzLnRvb2xiYXJTdGF0ZS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLmNvbmZpZyksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgoYykgPT4gYy5zb3J0U2VsZWN0b3JFbmFibGVkKVxuICAgICk7XG5cbiAgICB0aGlzLmlzTXVsdGlzZWxlY3RFbmFibGVkID0gdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLnRvb2xiYXIpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIG9ic2VydmFibGVNYXAoKHQpID0+IHQuc2hvd011bHRpc2VsZWN0VG9vbGJhcilcbiAgICApO1xuXG4gICAgdGhpcy5oYXNBcHBsaWVkRmlsdGVycyA9IHRoaXMuc3RhdGUucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy5maWx0ZXJzKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBvYnNlcnZhYmxlTWFwKChmaWx0ZXJzKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUZpbHRlcnMgPSBmaWx0ZXJzLmZpbHRlcigoZikgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBmLnZhbHVlICE9PSAnJyAmJlxuICAgICAgICAgICAgZi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBmLnZhbHVlICE9PSBmYWxzZSAmJlxuICAgICAgICAgICAgZi52YWx1ZSAhPT0gZi5kZWZhdWx0VmFsdWVcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFjdGl2ZUZpbHRlcnMubGVuZ3RoID4gMDtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3RhdGUucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChjdXJyZW50OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuaGFzQWRkaXRpb25hbFRvb2xiYXJTZWN0aW9uID0gY3VycmVudC50b29sYmFyLml0ZW1zLmxlbmd0aCA+IDA7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgLy8gSW5qZWN0IGN1c3RvbSB0b29sYmFyIGl0ZW1zLlxuICAgIHRoaXMudG9vbGJhckl0ZW1zLmZvckVhY2goKHRvb2xiYXJJdGVtKSA9PiB7XG4gICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhckFkZEl0ZW1zKFtuZXcgTGlzdFRvb2xiYXJJdGVtTW9kZWwodG9vbGJhckl0ZW0pXSk7XG5cbiAgICAgIHRoaXMuY3VzdG9tSXRlbUlkcy5wdXNoKHRvb2xiYXJJdGVtLmlkKTtcbiAgICB9KTtcblxuICAgIHRoaXMudG9vbGJhckl0ZW1zLmNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobmV3SXRlbXM6IFF1ZXJ5TGlzdDxTa3lMaXN0VG9vbGJhckl0ZW1Db21wb25lbnQ+KSA9PiB7XG4gICAgICAgIG5ld0l0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jdXN0b21JdGVtSWRzLmluZGV4T2YoaXRlbS5pZCkgPCAwKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhckFkZEl0ZW1zKFtuZXcgTGlzdFRvb2xiYXJJdGVtTW9kZWwoaXRlbSldKTtcblxuICAgICAgICAgICAgdGhpcy5jdXN0b21JdGVtSWRzLnB1c2goaXRlbS5pZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpdGVtc1RvUmVtb3ZlOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIHRoaXMuY3VzdG9tSXRlbUlkcy5mb3JFYWNoKChpdGVtSWQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKCFuZXdJdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBpdGVtSWQpKSB7XG4gICAgICAgICAgICBpdGVtc1RvUmVtb3ZlLnB1c2goaXRlbUlkKTtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tSXRlbUlkcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5kaXNwYXRjaGVyLnRvb2xiYXJSZW1vdmVJdGVtcyhpdGVtc1RvUmVtb3ZlKTtcbiAgICAgIH0pO1xuXG4gICAgY29uc3Qgc29ydE1vZGVscyA9IHRoaXMudG9vbGJhclNvcnRzLm1hcChcbiAgICAgIChzb3J0KSA9PlxuICAgICAgICBuZXcgTGlzdFNvcnRMYWJlbE1vZGVsKHtcbiAgICAgICAgICB0ZXh0OiBzb3J0LmxhYmVsLFxuICAgICAgICAgIGZpZWxkU2VsZWN0b3I6IHNvcnQuZmllbGQsXG4gICAgICAgICAgZmllbGRUeXBlOiBzb3J0LnR5cGUsXG4gICAgICAgICAgZ2xvYmFsOiB0cnVlLFxuICAgICAgICAgIGRlc2NlbmRpbmc6IHNvcnQuZGVzY2VuZGluZyxcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5kaXNwYXRjaGVyLnNvcnRTZXRHbG9iYWwoc29ydE1vZGVscyk7XG5cbiAgICAvLyBBZGQgaW5saW5lIGZpbHRlcnMuXG4gICAgdGhpcy5zaG93RmlsdGVyU3VtbWFyeSA9IHRoaXMuZmlsdGVyU3VtbWFyeS5sZW5ndGggPiAwO1xuICAgIHRoaXMuaGFzSW5saW5lRmlsdGVycyA9IHRoaXMuaW5saW5lRmlsdGVyLmxlbmd0aCA+IDA7XG5cbiAgICBpZiAodGhpcy5oYXNJbmxpbmVGaWx0ZXJzKSB7XG4gICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhckFkZEl0ZW1zKFtcbiAgICAgICAgbmV3IExpc3RUb29sYmFySXRlbU1vZGVsKHtcbiAgICAgICAgICB0ZW1wbGF0ZTogdGhpcy5pbmxpbmVGaWx0ZXJCdXR0b25UZW1wbGF0ZSxcbiAgICAgICAgICBsb2NhdGlvbjogJ2xlZnQnLFxuICAgICAgICAgIGluZGV4OiB0aGlzLmlubGluZUZpbHRlcnNJdGVtVG9vbGJhckluZGV4LFxuICAgICAgICB9KSxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciB2aWV3IGFjdGlvbnNcbiAgICB0aGlzLmhhc1ZpZXdBY3Rpb25zID0gdGhpcy52aWV3QWN0aW9ucy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc2VhcmNoQXBwbGllZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0U29ydChzb3J0OiBMaXN0U29ydExhYmVsTW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChjdXJyZW50U3RhdGUpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgY3VycmVudFN0YXRlLnBhZ2luZy5wYWdlTnVtYmVyICYmXG4gICAgICAgIGN1cnJlbnRTdGF0ZS5wYWdpbmcucGFnZU51bWJlciAhPT0gMVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hlci5uZXh0KG5ldyBMaXN0UGFnaW5nU2V0UGFnZU51bWJlckFjdGlvbihOdW1iZXIoMSkpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kaXNwYXRjaGVyLnNvcnRTZXRGaWVsZFNlbGVjdG9ycyhbXG4gICAgICAgIHsgZmllbGRTZWxlY3Rvcjogc29ydC5maWVsZFNlbGVjdG9yLCBkZXNjZW5kaW5nOiBzb3J0LmRlc2NlbmRpbmcgfSxcbiAgICAgIF0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGlubGluZUZpbHRlckJ1dHRvbkNsaWNrKCkge1xuICAgIHRoaXMuaW5saW5lRmlsdGVyQmFyRXhwYW5kZWQgPSAhdGhpcy5pbmxpbmVGaWx0ZXJCYXJFeHBhbmRlZDtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTZWFyY2hUZXh0KHNlYXJjaFRleHQ6IHN0cmluZykge1xuICAgIHRoaXMuc2VhcmNoQXBwbGllZC5uZXh0KHNlYXJjaFRleHQpO1xuICAgIGlmICh0aGlzLmluTWVtb3J5U2VhcmNoRW5hYmxlZCkge1xuICAgICAgdGhpcy5zdGF0ZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoY3VycmVudFN0YXRlKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjdXJyZW50U3RhdGUucGFnaW5nLnBhZ2VOdW1iZXIgJiZcbiAgICAgICAgICBjdXJyZW50U3RhdGUucGFnaW5nLnBhZ2VOdW1iZXIgIT09IDFcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaGVyLm5leHQobmV3IExpc3RQYWdpbmdTZXRQYWdlTnVtYmVyQWN0aW9uKE51bWJlcigxKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kaXNwYXRjaGVyLnNlYXJjaFNldFRleHQoc2VhcmNoVGV4dCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGl0ZW1Jc0luVmlldyhpdGVtVmlldzogc3RyaW5nLCBhY3RpdmVWaWV3OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gaXRlbVZpZXcgPT09IHVuZGVmaW5lZCB8fCBpdGVtVmlldyA9PT0gYWN0aXZlVmlldztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U29ydFNlbGVjdG9ycygpIHtcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUNvbWJpbmVMYXRlc3QoXG4gICAgICB0aGlzLnN0YXRlLnBpcGUoXG4gICAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMuc29ydC5hdmFpbGFibGUpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICApLFxuICAgICAgdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLnNvcnQuZ2xvYmFsKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgKSxcbiAgICAgIHRoaXMuc3RhdGUucGlwZShcbiAgICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy5zb3J0LmZpZWxkU2VsZWN0b3JzKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgKSxcbiAgICAgIChcbiAgICAgICAgYXZhaWxhYmxlOiBBcnJheTxMaXN0U29ydExhYmVsTW9kZWw+LFxuICAgICAgICBnbG9iYWw6IEFycmF5PExpc3RTb3J0TGFiZWxNb2RlbD4sXG4gICAgICAgIGZpZWxkU2VsZWN0b3JzOiBBcnJheTxMaXN0U29ydEZpZWxkU2VsZWN0b3JNb2RlbD5cbiAgICAgICkgPT4ge1xuICAgICAgICAvLyBHZXQgc29ydHMgdGhhdCBhcmUgaW4gdGhlIGdsb2JhbCB0aGF0IGFyZSBub3QgaW4gdGhlIGF2YWlsYWJsZVxuICAgICAgICBjb25zdCBzb3J0cyA9IGdsb2JhbC5maWx0ZXIoXG4gICAgICAgICAgKGcpID0+XG4gICAgICAgICAgICBhdmFpbGFibGUuZmlsdGVyKChhKSA9PiBhLmZpZWxkU2VsZWN0b3IgPT09IGcuZmllbGRTZWxlY3RvcilcbiAgICAgICAgICAgICAgLmxlbmd0aCA9PT0gMFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdFNvcnRTZWxlY3RvcnMgPSBbLi4uc29ydHMsIC4uLmF2YWlsYWJsZV0ubWFwKFxuICAgICAgICAgIChzb3J0TGFiZWxzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmcyA9IGZpZWxkU2VsZWN0b3JzLmZpbHRlcigoZikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIGYuZmllbGRTZWxlY3RvciA9PT0gc29ydExhYmVscy5maWVsZFNlbGVjdG9yICYmXG4gICAgICAgICAgICAgICAgZi5kZXNjZW5kaW5nID09PSBzb3J0TGFiZWxzLmRlc2NlbmRpbmdcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoZnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBzZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHNvcnQ6IHNvcnRMYWJlbHMsXG4gICAgICAgICAgICAgIHNlbGVjdGVkOiBzZWxlY3RlZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiByZXN1bHRTb3J0U2VsZWN0b3JzO1xuICAgICAgfVxuICAgICkucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoVGVtcGxhdGVzKCkge1xuICAgIG9ic2VydmFibGVDb21iaW5lTGF0ZXN0KFxuICAgICAgdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLnRvb2xiYXIpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICApLFxuICAgICAgdGhpcy52aWV3LnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgICAodG9vbGJhcjogTGlzdFRvb2xiYXJNb2RlbCwgdmlldzogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdG9vbGJhci5pdGVtcy5maWx0ZXIoKGk6IExpc3RUb29sYmFySXRlbU1vZGVsKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbUlzSW5WaWV3KGkudmlldywgdmlldyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlczogYW55ID0ge307XG5cbiAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbTogTGlzdFRvb2xiYXJJdGVtTW9kZWwpID0+IHtcbiAgICAgICAgICB0ZW1wbGF0ZXNbaXRlbS5sb2NhdGlvbl0gPSB0ZW1wbGF0ZXNbaXRlbS5sb2NhdGlvbl0gfHwgW107XG4gICAgICAgICAgdGVtcGxhdGVzW2l0ZW0ubG9jYXRpb25dLnB1c2goaXRlbSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZXM7XG4gICAgICB9XG4gICAgKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLmxlZnRUZW1wbGF0ZXMgPSB2YWx1ZS5sZWZ0O1xuICAgICAgICB0aGlzLmNlbnRlclRlbXBsYXRlcyA9IHZhbHVlLmNlbnRlcjtcbiAgICAgICAgdGhpcy5yaWdodFRlbXBsYXRlcyA9IHZhbHVlLnJpZ2h0O1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktbGlzdC10b29sYmFyLWNvbnRhaW5lclwiPlxuICA8c2t5LXRvb2xiYXIgKm5nSWY9XCIodHlwZSB8IGFzeW5jKSAhPT0gJ3NlYXJjaCdcIj5cbiAgICA8c2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICAgIDxza3ktdG9vbGJhci1pdGVtICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxlZnRUZW1wbGF0ZXNcIj5cbiAgICAgICAgPHNreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlclxuICAgICAgICAgIFthdHRyLnNreS1jbXAtaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgW3RlbXBsYXRlXT1cIml0ZW0udGVtcGxhdGVcIlxuICAgICAgICA+XG4gICAgICAgIDwvc2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyPlxuICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuICAgICAgPHNreS10b29sYmFyLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgY2VudGVyVGVtcGxhdGVzXCI+XG4gICAgICAgIDxza3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXJcbiAgICAgICAgICBbYXR0ci5za3ktY21wLWlkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgIFt0ZW1wbGF0ZV09XCJpdGVtLnRlbXBsYXRlXCJcbiAgICAgICAgPlxuICAgICAgICA8L3NreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlcj5cbiAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgIDxza3ktdG9vbGJhci1pdGVtXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJpZ2h0VGVtcGxhdGVzXCJcbiAgICAgICAgW2F0dHIuc2t5LXRvb2xiYXItaWRdPVwiaXRlbS5pZFwiXG4gICAgICA+XG4gICAgICAgIDxza3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXJcbiAgICAgICAgICBbYXR0ci5za3ktY21wLWlkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgIFt0ZW1wbGF0ZV09XCJpdGVtLnRlbXBsYXRlXCJcbiAgICAgICAgPlxuICAgICAgICA8L3NreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlcj5cbiAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cblxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgICA8c2t5LXRvb2xiYXItdmlldy1hY3Rpb25zICpuZ0lmPVwiaGFzVmlld0FjdGlvbnNcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWxpc3QtdG9vbGJhci12aWV3LWFjdGlvbnNcIj4gPC9uZy1jb250ZW50PlxuICAgICAgPC9za3ktdG9vbGJhci12aWV3LWFjdGlvbnM+XG4gICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuXG4gICAgPHNreS10b29sYmFyLXNlY3Rpb25cbiAgICAgICpuZ0lmPVwic2hvd0ZpbHRlclN1bW1hcnkgJiYgKGhhc0FwcGxpZWRGaWx0ZXJzIHwgYXN5bmMpXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktbGlzdC1maWx0ZXItc3VtbWFyeVwiPiA8L25nLWNvbnRlbnQ+XG4gICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuICA8L3NreS10b29sYmFyPlxuXG4gIDxkaXZcbiAgICAqbmdJZj1cIlxuICAgICAgKHR5cGUgfCBhc3luYykgPT09ICdzZWFyY2gnICYmXG4gICAgICAoKGlzU2VhcmNoRW5hYmxlZCB8IGFzeW5jKSB8fCBoYXNBZGRpdGlvbmFsVG9vbGJhclNlY3Rpb24pXG4gICAgXCJcbiAgICBjbGFzcz1cInNreS1saXN0LXRvb2xiYXItc2VhcmNoXCJcbiAgPlxuICAgIDxza3ktdG9vbGJhcj5cbiAgICAgIDxza3ktdG9vbGJhci1zZWN0aW9uICpuZ0lmPVwiaXNTZWFyY2hFbmFibGVkIHwgYXN5bmNcIj5cbiAgICAgICAgPHNreS10b29sYmFyLWl0ZW0+XG4gICAgICAgICAgPHNreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlclxuICAgICAgICAgICAgc2t5LWNtcC1pZD1cInNlYXJjaFwiXG4gICAgICAgICAgICBbdGVtcGxhdGVdPVwic2VhcmNoXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9za3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXI+XG4gICAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgIDwvc2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICAgIDxza3ktdG9vbGJhci1zZWN0aW9uIFtoaWRkZW5dPVwiIWhhc0FkZGl0aW9uYWxUb29sYmFyU2VjdGlvblwiPlxuICAgICAgICA8c2t5LXRvb2xiYXItaXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsZWZ0VGVtcGxhdGVzXCI+XG4gICAgICAgICAgPHNreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlclxuICAgICAgICAgICAgW2F0dHIuc2t5LWNtcC1pZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJpdGVtLnRlbXBsYXRlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9za3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXI+XG4gICAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgPHNreS10b29sYmFyLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgY2VudGVyVGVtcGxhdGVzXCI+XG4gICAgICAgICAgPHNreS1saXN0LXRvb2xiYXItaXRlbS1yZW5kZXJlclxuICAgICAgICAgICAgW2F0dHIuc2t5LWNtcC1pZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJpdGVtLnRlbXBsYXRlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9za3ktbGlzdC10b29sYmFyLWl0ZW0tcmVuZGVyZXI+XG4gICAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgPHNreS10b29sYmFyLWl0ZW1cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiByaWdodFRlbXBsYXRlc1wiXG4gICAgICAgICAgW2F0dHIuc2t5LXRvb2xiYXItaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyXG4gICAgICAgICAgICAqbmdJZj1cIml0ZW0uaWQgIT09ICdzZWFyY2gnXCJcbiAgICAgICAgICAgIFthdHRyLnNreS1jbXAtaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICBbdGVtcGxhdGVdPVwiaXRlbS50ZW1wbGF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvc2t5LWxpc3QtdG9vbGJhci1pdGVtLXJlbmRlcmVyPlxuICAgICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgICAgICA8c2t5LXRvb2xiYXItdmlldy1hY3Rpb25zICpuZ0lmPVwiaGFzVmlld0FjdGlvbnNcIj5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktbGlzdC10b29sYmFyLXZpZXctYWN0aW9uc1wiPiA8L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvc2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuICAgIDwvc2t5LXRvb2xiYXI+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJpc0ZpbHRlckJhckRpc3BsYXllZFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImZpbHRlckJ1dHRvbklkXCJcbiAgICBbaWRdPVwibGlzdEZpbHRlcklubGluZUlkXCJcbiAgPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1saXN0LWZpbHRlci1pbmxpbmVcIj4gPC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPHNreS1saXN0LW11bHRpc2VsZWN0LXRvb2xiYXIgKm5nSWY9XCJpc011bHRpc2VsZWN0RW5hYmxlZCB8IGFzeW5jXCI+XG4gIDwvc2t5LWxpc3QtbXVsdGlzZWxlY3QtdG9vbGJhcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaD5cbiAgPGRpdiAqbmdJZj1cImlzU2VhcmNoRW5hYmxlZCB8IGFzeW5jXCIgY2xhc3M9XCJza3ktbGlzdC10b29sYmFyLXNlYXJjaC13cmFwcGVyXCI+XG4gICAgPHNreS1zZWFyY2hcbiAgICAgIFtkaXNhYmxlZF09XCJpc1Rvb2xiYXJEaXNhYmxlZFwiXG4gICAgICBbZXhwYW5kTW9kZV09XCIodHlwZSB8IGFzeW5jKSA9PT0gJ3NlYXJjaCcgPyAnZml0JyA6ICdyZXNwb25zaXZlJ1wiXG4gICAgICBbcGxhY2Vob2xkZXJUZXh0XT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaFRleHRJbnB1dCB8IGFzeW5jXCJcbiAgICAgIChzZWFyY2hBcHBseSk9XCJ1cGRhdGVTZWFyY2hUZXh0KCRldmVudClcIlxuICAgID5cbiAgICA8L3NreS1zZWFyY2g+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWxpc3QtdG9vbGJhci1zZWFyY2gtYWN0aW9uc1wiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NvcnRTZWxlY3Rvcj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiXG4gICAgICAoaXNTb3J0U2VsZWN0b3JFbmFibGVkIHwgYXN5bmMpICYmIChzb3J0U2VsZWN0b3JzIHwgYXN5bmMpLmxlbmd0aCA+IDBcbiAgICBcIlxuICAgIGNsYXNzPVwic2t5LXRvb2xiYXItaXRlbS1zb3J0LWNvbnRhaW5lclwiXG4gID5cbiAgICA8c2t5LXNvcnQgW3Nob3dCdXR0b25UZXh0XT1cInRydWVcIj5cbiAgICAgIDxza3ktc29ydC1pdGVtXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNvcnRTZWxlY3RvcnMgfCBhc3luY1wiXG4gICAgICAgIFthY3RpdmVdPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgIChpdGVtU2VsZWN0KT1cInNldFNvcnQoaXRlbS5zb3J0KVwiXG4gICAgICA+XG4gICAgICAgIHt7IGl0ZW0uc29ydC50ZXh0IH19XG4gICAgICA8L3NreS1zb3J0LWl0ZW0+XG4gICAgPC9za3ktc29ydD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lubGluZUZpbHRlckJ1dHRvbj5cbiAgPHNreS1maWx0ZXItYnV0dG9uXG4gICAgW2FjdGl2ZV09XCJoYXNBcHBsaWVkRmlsdGVycyB8IGFzeW5jXCJcbiAgICBbYXJpYUNvbnRyb2xzXT1cImZpbHRlckJ1dHRvbkFyaWFDb250cm9sc1wiXG4gICAgW2FyaWFFeHBhbmRlZF09XCJpbmxpbmVGaWx0ZXJCYXJFeHBhbmRlZFwiXG4gICAgW2Rpc2FibGVkXT1cImlzVG9vbGJhckRpc2FibGVkXCJcbiAgICBbZmlsdGVyQnV0dG9uSWRdPVwiZmlsdGVyQnV0dG9uSWRcIlxuICAgIFtzaG93QnV0dG9uVGV4dF09XCJ0cnVlXCJcbiAgICAoZmlsdGVyQnV0dG9uQ2xpY2spPVwiaW5saW5lRmlsdGVyQnV0dG9uQ2xpY2soKVwiXG4gID5cbiAgPC9za3ktZmlsdGVyLWJ1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -11,8 +11,8 @@ const RESOURCES = {
11
11
  'EN-US': {
12
12
  skyux_list_show_secondary_actions_button: { message: 'More' },
13
13
  skyux_list_multiselect_clear_all: { message: 'Clear all' },
14
- skyux_list_mutliselect_select_all: { message: 'Select all' },
15
- skyux_list_mutliselect_show_selected: {
14
+ skyux_list_multiselect_select_all: { message: 'Select all' },
15
+ skyux_list_multiselect_show_selected: {
16
16
  message: 'Only show selected items',
17
17
  },
18
18
  skyux_list_view_switcher_dropdown_title: { message: 'Select view' },
@@ -50,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImpo
50
50
  ],
51
51
  }]
52
52
  }] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWxpc3QtYnVpbGRlci1yZXNvdXJjZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3QtYnVpbGRlci9zcmMvbGliL21vZHVsZXMvc2hhcmVkL3NreS1saXN0LWJ1aWxkZXItcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLDJCQUEyQixFQUUzQixhQUFhLEVBR2IscUJBQXFCLEdBQ3RCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBMEM7SUFDdkQsT0FBTyxFQUFFO1FBQ1Asd0NBQXdDLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO1FBQzdELGdDQUFnQyxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRTtRQUMxRCxpQ0FBaUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7UUFDNUQsb0NBQW9DLEVBQUU7WUFDcEMsT0FBTyxFQUFFLDBCQUEwQjtTQUNwQztRQUNELHVDQUF1QyxFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRTtLQUNwRTtDQUNGLENBQUM7QUFFRixNQUFNLE9BQU8sK0JBQStCO0lBR25DLFNBQVMsQ0FDZCxVQUE0QixFQUM1QixJQUFZO1FBRVosT0FBTyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQVdILE1BQU0sT0FBTyw2QkFBNkI7OzJIQUE3Qiw2QkFBNkI7NEhBQTdCLDZCQUE2QixZQVQ5QixhQUFhOzRIQVNaLDZCQUE2QixhQVI3QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLDJCQUEyQjtZQUNwQyxRQUFRLEVBQUUsK0JBQStCO1lBQ3pDLEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRixZQVBTLGFBQWE7NEZBU1osNkJBQTZCO2tCQVZ6QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDeEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwyQkFBMkI7NEJBQ3BDLFFBQVEsRUFBRSwrQkFBK0I7NEJBQ3pDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBOT1RJQ0U6IERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIVxuICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSB3ZXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5XG4gKiB0aGUgJ25nIGdlbmVyYXRlIEBza3l1eC9pMThuOmxpYi1yZXNvdXJjZXMtbW9kdWxlIGxpYi9tb2R1bGVzL3NoYXJlZC9za3ktbGlzdC1idWlsZGVyJyBzY2hlbWF0aWMuXG4gKiBUbyB1cGRhdGUgdGhpcyBmaWxlLCBzaW1wbHkgcmVydW4gdGhlIGNvbW1hbmQuXG4gKi9cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlMsXG4gIFNreUFwcExvY2FsZUluZm8sXG4gIFNreUkxOG5Nb2R1bGUsXG4gIFNreUxpYlJlc291cmNlcyxcbiAgU2t5TGliUmVzb3VyY2VzUHJvdmlkZXIsXG4gIGdldExpYlN0cmluZ0ZvckxvY2FsZSxcbn0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5jb25zdCBSRVNPVVJDRVM6IHsgW2xvY2FsZTogc3RyaW5nXTogU2t5TGliUmVzb3VyY2VzIH0gPSB7XG4gICdFTi1VUyc6IHtcbiAgICBza3l1eF9saXN0X3Nob3dfc2Vjb25kYXJ5X2FjdGlvbnNfYnV0dG9uOiB7IG1lc3NhZ2U6ICdNb3JlJyB9LFxuICAgIHNreXV4X2xpc3RfbXVsdGlzZWxlY3RfY2xlYXJfYWxsOiB7IG1lc3NhZ2U6ICdDbGVhciBhbGwnIH0sXG4gICAgc2t5dXhfbGlzdF9tdXRsaXNlbGVjdF9zZWxlY3RfYWxsOiB7IG1lc3NhZ2U6ICdTZWxlY3QgYWxsJyB9LFxuICAgIHNreXV4X2xpc3RfbXV0bGlzZWxlY3Rfc2hvd19zZWxlY3RlZDoge1xuICAgICAgbWVzc2FnZTogJ09ubHkgc2hvdyBzZWxlY3RlZCBpdGVtcycsXG4gICAgfSxcbiAgICBza3l1eF9saXN0X3ZpZXdfc3dpdGNoZXJfZHJvcGRvd25fdGl0bGU6IHsgbWVzc2FnZTogJ1NlbGVjdCB2aWV3JyB9LFxuICB9LFxufTtcblxuZXhwb3J0IGNsYXNzIFNreUxpc3RCdWlsZGVyUmVzb3VyY2VzUHJvdmlkZXJcbiAgaW1wbGVtZW50cyBTa3lMaWJSZXNvdXJjZXNQcm92aWRlclxue1xuICBwdWJsaWMgZ2V0U3RyaW5nKFxuICAgIGxvY2FsZUluZm86IFNreUFwcExvY2FsZUluZm8sXG4gICAgbmFtZTogc3RyaW5nXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldExpYlN0cmluZ0ZvckxvY2FsZShSRVNPVVJDRVMsIGxvY2FsZUluZm8ubG9jYWxlLCBuYW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIEltcG9ydCBpbnRvIGFueSBjb21wb25lbnQgbGlicmFyeSBtb2R1bGUgdGhhdCBuZWVkcyB0byB1c2UgcmVzb3VyY2Ugc3RyaW5ncy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW1NreUkxOG5Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlMsXG4gICAgICB1c2VDbGFzczogU2t5TGlzdEJ1aWxkZXJSZXNvdXJjZXNQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUxpc3RCdWlsZGVyUmVzb3VyY2VzTW9kdWxlIHt9XG4iXX0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWxpc3QtYnVpbGRlci1yZXNvdXJjZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3QtYnVpbGRlci9zcmMvbGliL21vZHVsZXMvc2hhcmVkL3NreS1saXN0LWJ1aWxkZXItcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLDJCQUEyQixFQUUzQixhQUFhLEVBR2IscUJBQXFCLEdBQ3RCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBMEM7SUFDdkQsT0FBTyxFQUFFO1FBQ1Asd0NBQXdDLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO1FBQzdELGdDQUFnQyxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRTtRQUMxRCxpQ0FBaUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7UUFDNUQsb0NBQW9DLEVBQUU7WUFDcEMsT0FBTyxFQUFFLDBCQUEwQjtTQUNwQztRQUNELHVDQUF1QyxFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRTtLQUNwRTtDQUNGLENBQUM7QUFFRixNQUFNLE9BQU8sK0JBQStCO0lBR25DLFNBQVMsQ0FDZCxVQUE0QixFQUM1QixJQUFZO1FBRVosT0FBTyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQVdILE1BQU0sT0FBTyw2QkFBNkI7OzJIQUE3Qiw2QkFBNkI7NEhBQTdCLDZCQUE2QixZQVQ5QixhQUFhOzRIQVNaLDZCQUE2QixhQVI3QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLDJCQUEyQjtZQUNwQyxRQUFRLEVBQUUsK0JBQStCO1lBQ3pDLEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRixZQVBTLGFBQWE7NEZBU1osNkJBQTZCO2tCQVZ6QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDeEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwyQkFBMkI7NEJBQ3BDLFFBQVEsRUFBRSwrQkFBK0I7NEJBQ3pDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBOT1RJQ0U6IERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIVxuICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSB3ZXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5XG4gKiB0aGUgJ25nIGdlbmVyYXRlIEBza3l1eC9pMThuOmxpYi1yZXNvdXJjZXMtbW9kdWxlIGxpYi9tb2R1bGVzL3NoYXJlZC9za3ktbGlzdC1idWlsZGVyJyBzY2hlbWF0aWMuXG4gKiBUbyB1cGRhdGUgdGhpcyBmaWxlLCBzaW1wbHkgcmVydW4gdGhlIGNvbW1hbmQuXG4gKi9cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlMsXG4gIFNreUFwcExvY2FsZUluZm8sXG4gIFNreUkxOG5Nb2R1bGUsXG4gIFNreUxpYlJlc291cmNlcyxcbiAgU2t5TGliUmVzb3VyY2VzUHJvdmlkZXIsXG4gIGdldExpYlN0cmluZ0ZvckxvY2FsZSxcbn0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5jb25zdCBSRVNPVVJDRVM6IHsgW2xvY2FsZTogc3RyaW5nXTogU2t5TGliUmVzb3VyY2VzIH0gPSB7XG4gICdFTi1VUyc6IHtcbiAgICBza3l1eF9saXN0X3Nob3dfc2Vjb25kYXJ5X2FjdGlvbnNfYnV0dG9uOiB7IG1lc3NhZ2U6ICdNb3JlJyB9LFxuICAgIHNreXV4X2xpc3RfbXVsdGlzZWxlY3RfY2xlYXJfYWxsOiB7IG1lc3NhZ2U6ICdDbGVhciBhbGwnIH0sXG4gICAgc2t5dXhfbGlzdF9tdWx0aXNlbGVjdF9zZWxlY3RfYWxsOiB7IG1lc3NhZ2U6ICdTZWxlY3QgYWxsJyB9LFxuICAgIHNreXV4X2xpc3RfbXVsdGlzZWxlY3Rfc2hvd19zZWxlY3RlZDoge1xuICAgICAgbWVzc2FnZTogJ09ubHkgc2hvdyBzZWxlY3RlZCBpdGVtcycsXG4gICAgfSxcbiAgICBza3l1eF9saXN0X3ZpZXdfc3dpdGNoZXJfZHJvcGRvd25fdGl0bGU6IHsgbWVzc2FnZTogJ1NlbGVjdCB2aWV3JyB9LFxuICB9LFxufTtcblxuZXhwb3J0IGNsYXNzIFNreUxpc3RCdWlsZGVyUmVzb3VyY2VzUHJvdmlkZXJcbiAgaW1wbGVtZW50cyBTa3lMaWJSZXNvdXJjZXNQcm92aWRlclxue1xuICBwdWJsaWMgZ2V0U3RyaW5nKFxuICAgIGxvY2FsZUluZm86IFNreUFwcExvY2FsZUluZm8sXG4gICAgbmFtZTogc3RyaW5nXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldExpYlN0cmluZ0ZvckxvY2FsZShSRVNPVVJDRVMsIGxvY2FsZUluZm8ubG9jYWxlLCBuYW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIEltcG9ydCBpbnRvIGFueSBjb21wb25lbnQgbGlicmFyeSBtb2R1bGUgdGhhdCBuZWVkcyB0byB1c2UgcmVzb3VyY2Ugc3RyaW5ncy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW1NreUkxOG5Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlMsXG4gICAgICB1c2VDbGFzczogU2t5TGlzdEJ1aWxkZXJSZXNvdXJjZXNQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUxpc3RCdWlsZGVyUmVzb3VyY2VzTW9kdWxlIHt9XG4iXX0=
@@ -27,7 +27,7 @@ import { SkySearchComponent, SkySearchModule } from '@skyux/lookup';
27
27
  class ListDataRequestModel {
28
28
  constructor(data) {
29
29
  /**
30
- * Indicates whether to disable the search bar and filter button.
30
+ * Whether to disable the search bar and filter button.
31
31
  * @default false
32
32
  */
33
33
  this.isToolbarDisabled = false;
@@ -74,18 +74,18 @@ class ListDataProvider {
74
74
  class ListSearchModel {
75
75
  constructor(data) {
76
76
  /**
77
- * Specifies the text to search.
77
+ * The text to search.
78
78
  * @default ""
79
79
  */
80
80
  this.searchText = '';
81
81
  /**
82
- * Specifies an array of functions that returns a `boolean` value of `true` when
82
+ * The array of functions that returns a `boolean` value of `true` when
83
83
  * the search is successful. This property accepts a function of type
84
84
  * `(data: any, searchText: string) => boolean>.`
85
85
  */
86
86
  this.functions = [];
87
87
  /**
88
- * Specifies the columns to search. The columns correspond to `field` values that
88
+ * The columns to search. The columns correspond to `field` values that
89
89
  * you specify with the list component's `data` property.
90
90
  */
91
91
  this.fieldSelectors = [];
@@ -635,15 +635,15 @@ class ListSelectedModel {
635
635
  class ListSortModel {
636
636
  constructor(data) {
637
637
  /**
638
- * Specifies the list of available views to sort.
638
+ * The list of available views to sort.
639
639
  */
640
640
  this.available = [];
641
641
  /**
642
- * Specifies whether the sort applies to all list views.
642
+ * The list views that the sort applies to.
643
643
  */
644
644
  this.global = [];
645
645
  /**
646
- * Specifies the fields to sort.
646
+ * The fields to sort.
647
647
  * For information about `ListSortFieldSelectorModel`, see the
648
648
  * [shared classes for lists](https://developer.blackbaud.com/skyux-list-builder-common/docs/list-builder-common).
649
649
  */
@@ -887,12 +887,12 @@ class ListSelectedOrchestrator extends ListStateOrchestrator {
887
887
  class ListSortLabelModel {
888
888
  constructor(data) {
889
889
  /**
890
- * Indicates whether to sort all fields.
890
+ * Whether to sort all fields.
891
891
  * @default false
892
892
  */
893
893
  this.global = false;
894
894
  /**
895
- * Indicates whether to sort in descending order.
895
+ * Whether to sort in descending order.
896
896
  * @default false
897
897
  */
898
898
  this.descending = false;
@@ -1103,7 +1103,7 @@ class SkyListComponent {
1103
1103
  this.dispatcher = dispatcher;
1104
1104
  this.id = `sky-list-cmp-${++idIndex$1}`;
1105
1105
  /**
1106
- * Specifies the data to display. The list component requires this property or the
1106
+ * The data to display. The list component requires this property or the
1107
1107
  * `dataProvider` property. For checklist or multiselect grids, each row requires an
1108
1108
  * `id` property to manage selected items with the `selectedIds` input and the
1109
1109
  * `selectedIdsChange` event. If you do not provide an `id`, the list automatically
@@ -1112,7 +1112,7 @@ class SkyListComponent {
1112
1112
  */
1113
1113
  this.data = [];
1114
1114
  /**
1115
- * Specifies a set of filters to apply to list data.
1115
+ * The set of filters to apply to list data.
1116
1116
  * These filters create a filter summary when the list includes the
1117
1117
  * [`sky-list-filter-summary`](https://developer.blackbaud.com/skyux/components/list/filters)
1118
1118
  * component.
@@ -1401,7 +1401,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImpo
1401
1401
  class ListFilterModel {
1402
1402
  constructor(data) {
1403
1403
  /**
1404
- * Indicates whether users can dismiss the filter's summary item.
1404
+ * Whether users can dismiss the filter's summary item.
1405
1405
  * @default true
1406
1406
  */
1407
1407
  this.dismissible = true;
@@ -1692,7 +1692,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImpo
1692
1692
  }] });
1693
1693
 
1694
1694
  /**
1695
- * Provides a SKY UX-themed pagination control to display list data across multiple pages.
1695
+ * The SKY UX-themed pagination control that displays list data across multiple pages.
1696
1696
  * @internal
1697
1697
  * @deprecated
1698
1698
  */
@@ -1714,17 +1714,17 @@ class SkyListPagingComponent extends ListPagingComponent {
1714
1714
  constructor(state, dispatcher, logger) {
1715
1715
  super(state, dispatcher);
1716
1716
  /**
1717
- * Specifies the number of list items per page.
1717
+ * The number of list items per page.
1718
1718
  * @default 10
1719
1719
  */
1720
1720
  this.pageSize = 10;
1721
1721
  /**
1722
- * Specifies the maximum pages to display.
1722
+ * The maximum pages to display.
1723
1723
  * @default 5
1724
1724
  */
1725
1725
  this.maxPages = 5;
1726
1726
  /**
1727
- * Specifies the current page number.
1727
+ * The current page number.
1728
1728
  * @default 1
1729
1729
  */
1730
1730
  this.pageNumber = 1;
@@ -1807,8 +1807,8 @@ const RESOURCES = {
1807
1807
  'EN-US': {
1808
1808
  skyux_list_show_secondary_actions_button: { message: 'More' },
1809
1809
  skyux_list_multiselect_clear_all: { message: 'Clear all' },
1810
- skyux_list_mutliselect_select_all: { message: 'Select all' },
1811
- skyux_list_mutliselect_show_selected: {
1810
+ skyux_list_multiselect_select_all: { message: 'Select all' },
1811
+ skyux_list_multiselect_show_selected: {
1812
1812
  message: 'Only show selected items',
1813
1813
  },
1814
1814
  skyux_list_view_switcher_dropdown_title: { message: 'Select view' },
@@ -2064,7 +2064,7 @@ class SkyListMultiselectToolbarComponent {
2064
2064
  this.reapplyFilter(true);
2065
2065
  }
2066
2066
  });
2067
- // If 'show-selected' filter is programatically set from a child component (e.g. checkilst),
2067
+ // If 'show-selected' filter is programmatically set from a child component (e.g. checklist),
2068
2068
  // make sure the checked state of the 'show-selected' checkbox stays in sync.
2069
2069
  this.state
2070
2070
  .pipe(map((t) => t.filters), takeUntil(this.ngUnsubscribe), distinctUntilChanged(this.showSelectedValuesEqual))
@@ -2167,10 +2167,10 @@ class SkyListMultiselectToolbarComponent {
2167
2167
  }
2168
2168
  }
2169
2169
  SkyListMultiselectToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyListMultiselectToolbarComponent, deps: [{ token: ListState }, { token: ListStateDispatcher }], target: i0.ɵɵFactoryTarget.Component });
2170
- SkyListMultiselectToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyListMultiselectToolbarComponent, selector: "sky-list-multiselect-toolbar", inputs: { showOnlySelected: "showOnlySelected" }, ngImport: i0, template: "<sky-toolbar class=\"sky-list-multiselect-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-list-toolbar-item-renderer [template]=\"selectAllTemplate\">\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <sky-list-toolbar-item-renderer [template]=\"clearSelectionsTemplate\">\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <ng-container *ngTemplateOutlet=\"showSelectedTemplate\"></ng-container>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n</sky-toolbar>\n\n<ng-template #selectAllTemplate>\n <button\n class=\"sky-btn sky-btn-link\"\n type=\"button\"\n [attr.id]=\"multiselectToolbarId + '-select-all'\"\n (click)=\"selectAll(); $event.preventDefault()\"\n >\n {{ 'skyux_list_mutliselect_select_all' | skyLibResources }}\n </button>\n</ng-template>\n\n<ng-template #clearSelectionsTemplate>\n <button\n class=\"sky-btn sky-btn-link\"\n type=\"button\"\n [attr.id]=\"multiselectToolbarId + '-clear-all'\"\n (click)=\"clearSelections(); $event.preventDefault()\"\n >\n {{ 'skyux_list_multiselect_clear_all' | skyLibResources }}\n </button>\n</ng-template>\n\n<ng-template #showSelectedTemplate>\n <sky-checkbox\n [attr.id]=\"multiselectToolbarId + '-show-selected'\"\n [checked]=\"showOnlySelected\"\n (change)=\"changeVisibleItems($event)\"\n >\n <sky-checkbox-label>\n {{ 'skyux_list_mutliselect_show_selected' | skyLibResources }}\n </sky-checkbox-label>\n </sky-checkbox>\n</ng-template>\n", styles: [":host-context(sky-toolbar)+.sky-list-multiselect-toolbar ::ng-deep .sky-toolbar-container,:host-context(.sky-list-toolbar-search)+.sky-list-multiselect-toolbar ::ng-deep .sky-toolbar-container{border-top:none}\n"], dependencies: [{ kind: "directive", type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4$2.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "icon", "checkboxType", "checked", "indeterminate", "required"], outputs: ["change", "checkedChange", "disabledChange", "indeterminateChange"] }, { kind: "component", type: i4$2.λ4, selector: "sky-checkbox-label" }, { kind: "component", type: i5$1.λ37, selector: "sky-toolbar" }, { kind: "component", type: i5$1.λ39, selector: "sky-toolbar-item" }, { kind: "component", type: i5$1.λ38, selector: "sky-toolbar-section" }, { kind: "component", type: i5$1.λ40, selector: "sky-toolbar-view-actions" }, { kind: "component", type: SkyListToolbarItemRendererComponent, selector: "sky-list-toolbar-item-renderer", inputs: ["template"] }, { kind: "pipe", type: i5.SkyLibResourcesPipe, name: "skyLibResources" }] });
2170
+ SkyListMultiselectToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyListMultiselectToolbarComponent, selector: "sky-list-multiselect-toolbar", inputs: { showOnlySelected: "showOnlySelected" }, ngImport: i0, template: "<sky-toolbar class=\"sky-list-multiselect-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-list-toolbar-item-renderer [template]=\"selectAllTemplate\">\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <sky-list-toolbar-item-renderer [template]=\"clearSelectionsTemplate\">\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <ng-container *ngTemplateOutlet=\"showSelectedTemplate\"></ng-container>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n</sky-toolbar>\n\n<ng-template #selectAllTemplate>\n <button\n class=\"sky-btn sky-btn-link\"\n type=\"button\"\n [attr.id]=\"multiselectToolbarId + '-select-all'\"\n (click)=\"selectAll(); $event.preventDefault()\"\n >\n {{ 'skyux_list_multiselect_select_all' | skyLibResources }}\n </button>\n</ng-template>\n\n<ng-template #clearSelectionsTemplate>\n <button\n class=\"sky-btn sky-btn-link\"\n type=\"button\"\n [attr.id]=\"multiselectToolbarId + '-clear-all'\"\n (click)=\"clearSelections(); $event.preventDefault()\"\n >\n {{ 'skyux_list_multiselect_clear_all' | skyLibResources }}\n </button>\n</ng-template>\n\n<ng-template #showSelectedTemplate>\n <sky-checkbox\n [attr.id]=\"multiselectToolbarId + '-show-selected'\"\n [checked]=\"showOnlySelected\"\n (change)=\"changeVisibleItems($event)\"\n >\n <sky-checkbox-label>\n {{ 'skyux_list_multiselect_show_selected' | skyLibResources }}\n </sky-checkbox-label>\n </sky-checkbox>\n</ng-template>\n", styles: [":host-context(sky-toolbar)+.sky-list-multiselect-toolbar ::ng-deep .sky-toolbar-container,:host-context(.sky-list-toolbar-search)+.sky-list-multiselect-toolbar ::ng-deep .sky-toolbar-container{border-top:none}\n"], dependencies: [{ kind: "directive", type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4$2.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "icon", "checkboxType", "checked", "indeterminate", "required"], outputs: ["change", "checkedChange", "disabledChange", "indeterminateChange"] }, { kind: "component", type: i4$2.λ4, selector: "sky-checkbox-label" }, { kind: "component", type: i5$1.λ37, selector: "sky-toolbar" }, { kind: "component", type: i5$1.λ39, selector: "sky-toolbar-item" }, { kind: "component", type: i5$1.λ38, selector: "sky-toolbar-section" }, { kind: "component", type: i5$1.λ40, selector: "sky-toolbar-view-actions" }, { kind: "component", type: SkyListToolbarItemRendererComponent, selector: "sky-list-toolbar-item-renderer", inputs: ["template"] }, { kind: "pipe", type: i5.SkyLibResourcesPipe, name: "skyLibResources" }] });
2171
2171
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyListMultiselectToolbarComponent, decorators: [{
2172
2172
  type: Component,
2173
- args: [{ selector: 'sky-list-multiselect-toolbar', template: "<sky-toolbar class=\"sky-list-multiselect-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-list-toolbar-item-renderer [template]=\"selectAllTemplate\">\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <sky-list-toolbar-item-renderer [template]=\"clearSelectionsTemplate\">\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <ng-container *ngTemplateOutlet=\"showSelectedTemplate\"></ng-container>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n</sky-toolbar>\n\n<ng-template #selectAllTemplate>\n <button\n class=\"sky-btn sky-btn-link\"\n type=\"button\"\n [attr.id]=\"multiselectToolbarId + '-select-all'\"\n (click)=\"selectAll(); $event.preventDefault()\"\n >\n {{ 'skyux_list_mutliselect_select_all' | skyLibResources }}\n </button>\n</ng-template>\n\n<ng-template #clearSelectionsTemplate>\n <button\n class=\"sky-btn sky-btn-link\"\n type=\"button\"\n [attr.id]=\"multiselectToolbarId + '-clear-all'\"\n (click)=\"clearSelections(); $event.preventDefault()\"\n >\n {{ 'skyux_list_multiselect_clear_all' | skyLibResources }}\n </button>\n</ng-template>\n\n<ng-template #showSelectedTemplate>\n <sky-checkbox\n [attr.id]=\"multiselectToolbarId + '-show-selected'\"\n [checked]=\"showOnlySelected\"\n (change)=\"changeVisibleItems($event)\"\n >\n <sky-checkbox-label>\n {{ 'skyux_list_mutliselect_show_selected' | skyLibResources }}\n </sky-checkbox-label>\n </sky-checkbox>\n</ng-template>\n", styles: [":host-context(sky-toolbar)+.sky-list-multiselect-toolbar ::ng-deep .sky-toolbar-container,:host-context(.sky-list-toolbar-search)+.sky-list-multiselect-toolbar ::ng-deep .sky-toolbar-container{border-top:none}\n"] }]
2173
+ args: [{ selector: 'sky-list-multiselect-toolbar', template: "<sky-toolbar class=\"sky-list-multiselect-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-list-toolbar-item-renderer [template]=\"selectAllTemplate\">\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <sky-list-toolbar-item-renderer [template]=\"clearSelectionsTemplate\">\n </sky-list-toolbar-item-renderer>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <ng-container *ngTemplateOutlet=\"showSelectedTemplate\"></ng-container>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n</sky-toolbar>\n\n<ng-template #selectAllTemplate>\n <button\n class=\"sky-btn sky-btn-link\"\n type=\"button\"\n [attr.id]=\"multiselectToolbarId + '-select-all'\"\n (click)=\"selectAll(); $event.preventDefault()\"\n >\n {{ 'skyux_list_multiselect_select_all' | skyLibResources }}\n </button>\n</ng-template>\n\n<ng-template #clearSelectionsTemplate>\n <button\n class=\"sky-btn sky-btn-link\"\n type=\"button\"\n [attr.id]=\"multiselectToolbarId + '-clear-all'\"\n (click)=\"clearSelections(); $event.preventDefault()\"\n >\n {{ 'skyux_list_multiselect_clear_all' | skyLibResources }}\n </button>\n</ng-template>\n\n<ng-template #showSelectedTemplate>\n <sky-checkbox\n [attr.id]=\"multiselectToolbarId + '-show-selected'\"\n [checked]=\"showOnlySelected\"\n (change)=\"changeVisibleItems($event)\"\n >\n <sky-checkbox-label>\n {{ 'skyux_list_multiselect_show_selected' | skyLibResources }}\n </sky-checkbox-label>\n </sky-checkbox>\n</ng-template>\n", styles: [":host-context(sky-toolbar)+.sky-list-multiselect-toolbar ::ng-deep .sky-toolbar-container,:host-context(.sky-list-toolbar-search)+.sky-list-multiselect-toolbar ::ng-deep .sky-toolbar-container{border-top:none}\n"] }]
2174
2174
  }], ctorParameters: function () { return [{ type: ListState }, { type: ListStateDispatcher }]; }, propDecorators: { showOnlySelected: [{
2175
2175
  type: Input
2176
2176
  }] } });
@@ -2183,16 +2183,16 @@ let idIndex = 0;
2183
2183
  class SkyListToolbarItemComponent {
2184
2184
  constructor() {
2185
2185
  /**
2186
- * Specifies the ID of the item.
2186
+ * The ID of the item.
2187
2187
  */
2188
2188
  this.id = `sky-list-toolbar-item-${++idIndex}`;
2189
2189
  /**
2190
- * Specifies the index of the item at the given item location.
2190
+ * The index of the item at the given item location.
2191
2191
  * @default -1
2192
2192
  */
2193
2193
  this.index = -1;
2194
2194
  /**
2195
- * Specifies the toolbar location of the item. The valid options are `"left"`,
2195
+ * The toolbar location of the item. The valid options are `"left"`,
2196
2196
  * `"center"`, and `"right"`.
2197
2197
  * @default "left"
2198
2198
  */
@@ -2414,7 +2414,7 @@ class SkyListToolbarComponent {
2414
2414
  });
2415
2415
  }
2416
2416
  /**
2417
- * Indicates whether to use the in-memory search.
2417
+ * Whether to use the in-memory search.
2418
2418
  * Setting this to `false` will allow consumers to run their own searches remotely,
2419
2419
  * and push new values to the list component by updating the `data` property.
2420
2420
  * @default true