ontimize-web-ngx 15.2.1 → 15.3.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 (87) hide show
  1. package/assets/svg/ontimize-icon-set.svg +0 -1
  2. package/esm2020/lib/components/form/navigation/o-form.navigation.class.mjs +5 -4
  3. package/esm2020/lib/components/input/currency-input/o-currency-input.component.mjs +3 -3
  4. package/esm2020/lib/components/input/integer-input/o-integer-input.component.mjs +6 -6
  5. package/esm2020/lib/components/input/percent-input/o-percent-input.component.mjs +3 -3
  6. package/esm2020/lib/components/input/real-input/o-real-input.component.mjs +3 -3
  7. package/esm2020/lib/components/input/text-input/o-text-input.component.mjs +15 -13
  8. package/esm2020/lib/components/o-service-base-component.class.mjs +1 -1
  9. package/esm2020/lib/components/o-service-component.class.mjs +12 -3
  10. package/esm2020/lib/components/table/column/cell-editor/integer/o-table-cell-editor-integer.component.mjs +6 -6
  11. package/esm2020/lib/components/table/column/cell-editor/real/o-table-cell-editor-real.component.mjs +6 -6
  12. package/esm2020/lib/components/table/column/cell-renderer/action/o-table-cell-renderer-action.component.mjs +7 -1
  13. package/esm2020/lib/components/table/column/cell-renderer/cell-renderer.mjs +5 -3
  14. package/esm2020/lib/components/table/column/o-column.class.mjs +4 -1
  15. package/esm2020/lib/components/table/column/o-table-column.component.mjs +2 -3
  16. package/esm2020/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.mjs +80 -19
  17. package/esm2020/lib/components/table/extensions/export-button/o-table-export-button.component.mjs +10 -11
  18. package/esm2020/lib/components/table/extensions/header/table-button/o-table-button.component.mjs +10 -2
  19. package/esm2020/lib/components/table/extensions/header/table-buttons/o-table-buttons.component.mjs +3 -3
  20. package/esm2020/lib/components/table/extensions/header/table-menu/o-table-export-configuration.class.mjs +1 -1
  21. package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +10 -1
  22. package/esm2020/lib/components/table/extensions/header/table-quickfilter/o-table-quickfilter.component.mjs +3 -2
  23. package/esm2020/lib/components/table/o-table-base.class.mjs +1 -1
  24. package/esm2020/lib/components/table/o-table.component.mjs +103 -19
  25. package/esm2020/lib/components/tree/o-tree-dao.service.mjs +1 -1
  26. package/esm2020/lib/components/tree/o-tree.component.mjs +17 -24
  27. package/esm2020/lib/components/tree/o-tree.datasource.mjs +1 -1
  28. package/esm2020/lib/components/tree/tree-node/tree-node.component.mjs +27 -6
  29. package/esm2020/lib/config/o-directives.mjs +4 -2
  30. package/esm2020/lib/directives/index.mjs +2 -1
  31. package/esm2020/lib/directives/input-regulate.directive.mjs +70 -0
  32. package/esm2020/lib/i18n/i18n.mjs +24 -3
  33. package/esm2020/lib/interfaces/export-service.interface.mjs +1 -1
  34. package/esm2020/lib/interfaces/layout-manager-component.interface.mjs +1 -1
  35. package/esm2020/lib/layouts/form-layout/dialog/o-form-layout-dialog.component.mjs +5 -2
  36. package/esm2020/lib/layouts/form-layout/guards/o-form-layout-can-activate-child.guard.mjs +3 -2
  37. package/esm2020/lib/layouts/form-layout/o-form-layout-manager-base.class.mjs +1 -1
  38. package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +8 -4
  39. package/esm2020/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.mjs +1 -1
  40. package/esm2020/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.mjs +5 -2
  41. package/esm2020/lib/services/o-form-layout-manager.service.mjs +7 -1
  42. package/esm2020/lib/services/ontimize/ontimize-export-3xx.service.mjs +7 -5
  43. package/esm2020/lib/services/ontimize-export-data-provider-3x.service.mjs +6 -3
  44. package/esm2020/lib/services/snackbar.service.mjs +1 -1
  45. package/esm2020/lib/shared/shared.module.mjs +4 -3
  46. package/esm2020/lib/types/form-layout-manager-context.type.mjs +2 -0
  47. package/esm2020/lib/types/table/o-table-global-config.type.mjs +1 -1
  48. package/esm2020/lib/types/tree-flat-node.type.mjs +2 -0
  49. package/esm2020/lib/util/util.mjs +8 -1
  50. package/esm2020/lib/validators/o-validators.mjs +1 -1
  51. package/fesm2015/ontimize-web-ngx.mjs +6189 -5882
  52. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  53. package/fesm2020/ontimize-web-ngx.mjs +4329 -4024
  54. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  55. package/lib/components/input/text-input/o-text-input.component.d.ts +2 -1
  56. package/lib/components/o-service-base-component.class.d.ts +1 -0
  57. package/lib/components/o-service-component.class.d.ts +5 -3
  58. package/lib/components/table/column/o-table-column.component.d.ts +1 -1
  59. package/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.d.ts +24 -1
  60. package/lib/components/table/extensions/dialog/o-table-dialog-components.d.ts +1 -1
  61. package/lib/components/table/extensions/export-button/o-table-export-button.component.d.ts +2 -2
  62. package/lib/components/table/extensions/footer/o-table-footer-components.d.ts +1 -1
  63. package/lib/components/table/extensions/header/o-table-header-components.d.ts +2 -2
  64. package/lib/components/table/extensions/header/table-button/o-table-button.component.d.ts +1 -0
  65. package/lib/components/table/extensions/header/table-menu/o-table-export-configuration.class.d.ts +1 -0
  66. package/lib/components/table/extensions/header/table-menu/o-table-menu.component.d.ts +1 -0
  67. package/lib/components/table/o-table-base.class.d.ts +13 -5
  68. package/lib/components/table/o-table.component.d.ts +14 -4
  69. package/lib/components/tree/o-tree-dao.service.d.ts +1 -1
  70. package/lib/components/tree/o-tree.component.d.ts +5 -16
  71. package/lib/components/tree/o-tree.datasource.d.ts +2 -1
  72. package/lib/components/tree/tree-node/tree-node.component.d.ts +6 -2
  73. package/lib/directives/index.d.ts +1 -0
  74. package/lib/directives/input-regulate.directive.d.ts +23 -0
  75. package/lib/i18n/i18n.d.ts +21 -0
  76. package/lib/interfaces/export-service.interface.d.ts +1 -1
  77. package/lib/interfaces/layout-manager-component.interface.d.ts +1 -0
  78. package/lib/layouts/form-layout/o-form-layout-manager-base.class.d.ts +2 -0
  79. package/lib/layouts/form-layout/o-form-layout-manager.component.d.ts +2 -1
  80. package/lib/services/o-form-layout-manager.service.d.ts +5 -1
  81. package/lib/services/ontimize/ontimize-export-3xx.service.d.ts +1 -1
  82. package/lib/shared/shared.module.d.ts +15 -14
  83. package/lib/types/form-layout-manager-context.type.d.ts +3 -0
  84. package/lib/types/table/o-table-global-config.type.d.ts +2 -0
  85. package/lib/types/tree-flat-node.type.d.ts +14 -0
  86. package/lib/util/util.d.ts +2 -0
  87. package/package.json +1 -1
@@ -231,14 +231,23 @@ export class OTableMenuComponent {
231
231
  this.dialog.open(OTableExportDialogComponent, {
232
232
  data: {
233
233
  visibleButtons: this.table.visibleExportDialogButtons,
234
+ columns: this.parseColumnsVisible(),
234
235
  service: this.table.service,
235
236
  serviceType: this.table.exportServiceType,
236
237
  options: this.table.exportOptsTemplate
237
238
  },
239
+ maxWidth: '65vw',
240
+ minWidth: '25vw',
238
241
  disableClose: true,
239
242
  panelClass: ['o-dialog-class', 'o-table-dialog']
240
243
  });
241
244
  }
245
+ parseColumnsVisible() {
246
+ const columnsArray = Util.parseArray(this.table.columns);
247
+ return this.table.oTableOptions.columns.filter(oCol => oCol.type !== "image" && oCol.type !== "action" && oCol.visible && columnsArray.findIndex(column => column === oCol.attr) > -1).map((x) => {
248
+ return x.attr;
249
+ });
250
+ }
242
251
  onChangeColumnsVisibilityClicked() {
243
252
  const dialogRef = this.dialog.open(OTableVisibleColumnsDialogComponent, {
244
253
  data: {
@@ -495,4 +504,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
495
504
  type: ViewChild,
496
505
  args: ['chartMenu', { static: true }]
497
506
  }] } });
498
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLW1lbnUvby10YWJsZS1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLW1lbnUvby10YWJsZS1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFHUixRQUFRLEVBQ1IsU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBSWxGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNsSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDMUYsT0FBTyxFQUFFLDBCQUEw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MEJBQUksTUFBTTsyQkFBQyx5QkFBeUI7OzBCQUU1QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQjs0Q0E3RHRDLGlCQUFpQixNQUVqQixZQUFZLE1BRVosdUJBQXVCLE1BRXZCLGdCQUFnQixNQUVoQix1QkFBdUIsTUFFdkIsaUJBQWlCLE1BRWpCLG9CQUFvQixNQUVwQix3QkFBd0IsTUFFeEIsd0JBQXdCLE1BV3hCLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUduQyx1QkFBdUI7c0JBRHRCLFNBQVM7dUJBQUMseUJBQXlCO2dCQUdwQyxrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUcvQiw2QkFBNkI7c0JBRDVCLFNBQVM7dUJBQUMsK0JBQStCO2dCQUcxQyxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBR25ELHVCQUF1QjtzQkFEdEIsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSTFELFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxZQUFZO2dCQUd2QixpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMsbUJBQW1CO2dCQUc5QixrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUcvQixTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRNZW51IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBJQ2hhcnRPbkRlbWFuZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2NoYXJ0LW9uLWRlbWFuZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBPVGFibGVNZW51IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9vLXRhYmxlLW1lbnUuaW50ZXJmYWNlJztcbmltcG9ydCB7IElSZXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9yZXBvcnQtb24tZGVtYW5kLXNlcnZpY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBPX0NIQVJUX09OX0RFTUFORF9TRVJWSUNFLCBPX1JFUE9SVF9TRVJWSUNFIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvZmFjdG9yaWVzJztcbmltcG9ydCB7IE9udGltaXplRXhwb3J0RGF0YVByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL29udGltaXplLWV4cG9ydC1kYXRhLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvc25hY2tiYXIuc2VydmljZSc7XG5pbXBvcnQgeyBPVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS9vLXRyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9Mb2FkRmlsdGVyRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMvZmlsdGVyL2xvYWQtZmlsdGVyL28tbG9hZC1maWx0ZXItZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPU3RvcmVGaWx0ZXJEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cy9maWx0ZXIvc3RvcmUtZmlsdGVyL28tc3RvcmUtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHR5cGUgeyBPUGVybWlzc2lvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy9vLXBlcm1pc3Npb25zLnR5cGUnO1xuaW1wb3J0IHR5cGUgeyBPVGFibGVNZW51UGVybWlzc2lvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy90YWJsZS9vLXRhYmxlLW1lbnUtcGVybWlzc2lvbnMudHlwZSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uc1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB0eXBlIHsgT0NvbHVtbiB9IGZyb20gJy4uLy4uLy4uL2NvbHVtbi9vLWNvbHVtbi5jbGFzcyc7XG5pbXBvcnQgeyBPVGFibGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vby10YWJsZS1iYXNlLmNsYXNzJztcbmltcG9ydCB7IE9UYWJsZUFwcGx5Q29uZmlndXJhdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZy9hcHBseS1jb25maWd1cmF0aW9uL28tdGFibGUtYXBwbHktY29uZmlndXJhdGlvbi1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IE9UYWJsZUV4cG9ydERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZy9leHBvcnQvby10YWJsZS1leHBvcnQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPVGFibGVTdG9yZUNvbmZpZ3VyYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2cvc3RvcmUtY29uZmlndXJhdGlvbi9vLXRhYmxlLXN0b3JlLWNvbmZpZ3VyYXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPVGFibGVWaXNpYmxlQ29sdW1uc0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZy92aXNpYmxlLWNvbHVtbnMvby10YWJsZS12aXNpYmxlLWNvbHVtbnMtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPVGFibGVPcHRpb25Db21wb25lbnQgfSBmcm9tICcuLi90YWJsZS1vcHRpb24vby10YWJsZS1vcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IE9UYWJsZUdyb3VwQnlDb2x1bW5zRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGlhbG9nL2dyb3VwLWJ5LWNvbHVtbnMvby10YWJsZS1ncm91cC1ieS1jb2x1bW5zLWRpYWxvZy5jb21wb25lbnQnO1xuXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX01FTlUgPSBbXG4gIC8vIHNlbGVjdC1hbGwtY2hlY2tib3ggW3llc3xub3x0cnVlfGZhbHNlXTogc2hvdyBzZWxlY3Rpb24gY2hlY2sgYm94ZXMuIERlZmF1bHQ6IG5vLlxuICAnc2VsZWN0QWxsQ2hlY2tib3g6IHNlbGVjdC1hbGwtY2hlY2tib3gnLFxuXG4gIC8vIGV4cG9ydC1idXR0b24gW25vfHllc106IHNob3cgZXhwb3J0IGJ1dHRvbi4gRGVmYXVsdDogeWVzLlxuICAnZXhwb3J0QnV0dG9uOiBleHBvcnQtYnV0dG9uJyxcblxuICAvLyBjb2x1bW5zLXZpc2liaWxpdHktYnV0dG9uIFtub3x5ZXNdOiBzaG93IGNvbHVtbnMgdmlzaWJpbGl0eSBidXR0b24uIERlZmF1bHQ6IHllcy5cbiAgJ2NvbHVtbnNWaXNpYmlsaXR5QnV0dG9uOiBjb2x1bW5zLXZpc2liaWxpdHktYnV0dG9uJyxcblxuICAvLyBzaG93LWNvbmZpZ3VyYXRpb24tb3B0aW9uIFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHNob3cgY29uZmlndXJhdGlvbiBidXR0b24gaW4gaGVhZGVyLiBEZWZhdWx0OiB5ZXMuXG4gICdzaG93Q29uZmlndXJhdGlvbk9wdGlvbjogc2hvdy1jb25maWd1cmF0aW9uLW9wdGlvbicsXG5cbiAgLy8gc2hvdy1maWx0ZXItb3B0aW9uIFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHNob3cgZmlsdGVyIG1lbnUgb3B0aW9uIGluIHRoZSBoZWFkZXIgbWVudVxuICAnc2hvd0ZpbHRlck9wdGlvbjogc2hvdy1maWx0ZXItb3B0aW9uJyxcblxuICAvLyBzaG93LWdyb3VwLWJ5LW9wdGlvbiBbeWVzfG5vfHRydWV8ZmFsc2VdOiBzaG93IGdyb3VwIGJ5IG1lbnUgb3B0aW9uIGluIHRoZSBoZWFkZXIgbWVudVxuICAnc2hvd0dyb3VwQnlPcHRpb246IHNob3ctZ3JvdXAtYnktb3B0aW9uJyxcblxuICAvLyBzaG93LXJlc2V0LXdpZHRoLW9wdGlvbiBbeWVzfG5vfHRydWV8ZmFsc2VdOiBzaG93IHJlc2V0IHdpZHRoIG1lbnUgb3B0aW9uIGluIHRoZSBoZWFkZXIgbWVudVxuICAnc2hvd1Jlc2V0V2lkdGhPcHRpb246IHNob3ctcmVzZXQtd2lkdGgtb3B0aW9uJyxcblxuICAvLyBzaG93LXJlcG9ydC1vbi1kZW1hbmQtb3B0aW9uIFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHNob3cgcmVwb3J0IG9uIGRlbWFuZCBvcHRpb24gaW4gdGhlIGhlYWRlciBtZW51XG4gICdzaG93UmVwb3J0T25EZW1hbmRPcHRpb246IHNob3ctcmVwb3J0LW9uLWRlbWFuZC1vcHRpb24nLFxuXG4gIC8vIHNob3ctY2hhcnRzLW9uLWRlbWFuZC1vcHRpb24gW3llc3xub3x0cnVlfGZhbHNlXTogc2hvdyBjaGFydHMgb24gZGVtYW5kIG9wdGlvbiBpbiB0aGUgaGVhZGVyIG1lbnVcbiAgJ3Nob3dDaGFydHNPbkRlbWFuZE9wdGlvbjogc2hvdy1jaGFydHMtb24tZGVtYW5kLW9wdGlvbidcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19UQUJMRV9NRU5VID0gW107XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLXRhYmxlLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLW1lbnUuY29tcG9uZW50LnNjc3MnXSxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX01FTlUsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX01FTlUsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tdGFibGUtbWVudV0nOiAndHJ1ZSdcbiAgfSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9UYWJsZU1lbnUsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAvKiBJbnB1dHMgKi9cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNlbGVjdEFsbENoZWNrYm94OiBib29sZWFuID0gZmFsc2U7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBleHBvcnRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2hvd0NvbmZpZ3VyYXRpb25PcHRpb246IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2hvd0ZpbHRlck9wdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBjb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93R3JvdXBCeU9wdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93UmVzZXRXaWR0aE9wdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93UmVwb3J0T25EZW1hbmRPcHRpb246IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2hvd0NoYXJ0c09uRGVtYW5kT3B0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuXG4gIHB1YmxpYyBvblZpc2libGVGaWx0ZXJPcHRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvKiBFbmQgb2YgaW5wdXRzICovXG5cbiAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2U7XG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBPVHJhbnNsYXRlU2VydmljZTtcbiAgcHJvdGVjdGVkIHNuYWNrQmFyU2VydmljZTogU25hY2tCYXJTZXJ2aWNlO1xuXG4gIEBWaWV3Q2hpbGQoJ21lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBtYXRNZW51OiBNYXRNZW51O1xuICBAVmlld0NoaWxkKCdzZWxlY3RBbGxDaGVja2JveE9wdGlvbicpXG4gIHNlbGVjdEFsbENoZWNrYm94T3B0aW9uOiBPVGFibGVPcHRpb25Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2V4cG9ydEJ1dHRvbk9wdGlvbicpXG4gIGV4cG9ydEJ1dHRvbk9wdGlvbjogT1RhYmxlT3B0aW9uQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdjb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbk9wdGlvbicpXG4gIGNvbHVtbnNWaXNpYmlsaXR5QnV0dG9uT3B0aW9uOiBPVGFibGVPcHRpb25Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlck1lbnVCdXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgZmlsdGVyTWVudUJ1dHRvbjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnY29uZmlndXJhdGlvbk1lbnVCdXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgY29uZmlndXJhdGlvbk1lbnVCdXR0b246IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnZmlsdGVyTWVudScpXG4gIGZpbHRlck1lbnU6IE1hdE1lbnU7XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpZ3VyYXRpb25NZW51JylcbiAgY29uZmlndXJhdGlvbk1lbnU6IE1hdE1lbnU7XG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbkZpbHRlck9wdGlvbicpXG4gIGNvbHVtbkZpbHRlck9wdGlvbjogT1RhYmxlT3B0aW9uQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdjaGFydE1lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBjaGFydE1lbnU6IE1hdE1lbnU7XG5cbiAgcHJvdGVjdGVkIHBlcm1pc3Npb25zOiBPVGFibGVNZW51UGVybWlzc2lvbnM7XG4gIHByb3RlY3RlZCBtdXRhdGlvbk9ic2VydmVyczogTXV0YXRpb25PYnNlcnZlcltdID0gW107XG4gIHByb3RlY3RlZCBleHBvcnREYXRhUHJvdmlkZXI6IE9udGltaXplRXhwb3J0RGF0YVByb3ZpZGVyU2VydmljZTtcblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9UYWJsZUJhc2UpKSBwcm90ZWN0ZWQgdGFibGU6IE9UYWJsZUJhc2UsXG5cbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE9fQ0hBUlRfT05fREVNQU5EX1NFUlZJQ0UpIHB1YmxpYyBjaGFydE9uRGVtYW5kU2VydmljZTogSUNoYXJ0T25EZW1hbmRTZXJ2aWNlLFxuXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChPX1JFUE9SVF9TRVJWSUNFKSBwdWJsaWMgcmVwb3J0U2VydmljZTogSVJlcG9ydFNlcnZpY2VcblxuICApIHtcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChEaWFsb2dTZXJ2aWNlKTtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChPVHJhbnNsYXRlU2VydmljZSk7XG4gICAgdGhpcy5zbmFja0JhclNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChTbmFja0JhclNlcnZpY2UpO1xuICAgIHRoaXMuZXhwb3J0RGF0YVByb3ZpZGVyID0gdGhpcy5pbmplY3Rvci5nZXQoT250aW1pemVFeHBvcnREYXRhUHJvdmlkZXJTZXJ2aWNlKVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wZXJtaXNzaW9ucyA9IHRoaXMudGFibGUuZ2V0TWVudVBlcm1pc3Npb25zKCk7XG4gIH1cblxuICBnZXQgaXNDb2x1bW5GaWx0ZXJPcHRpb25BY3RpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUgJiYgdGhpcy50YWJsZS5pc0NvbHVtbkZpbHRlcnNBY3RpdmU7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG5cbiAgICBpZiAoIXRoaXMucGVybWlzc2lvbnMuaXRlbXMgfHwgdGhpcy5wZXJtaXNzaW9ucy5pdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0QWxsQ2hlY2tib3hPcHRpb24gJiYgIXRoaXMuZW5hYmxlZFNlbGVjdEFsbENoZWNrYm94KSB7XG4gICAgICB0aGlzLmRpc2FibGVPVGFibGVPcHRpb25Db21wb25lbnQodGhpcy5zZWxlY3RBbGxDaGVja2JveE9wdGlvbik7XG4gICAgfVxuICAgIGlmICh0aGlzLmV4cG9ydEJ1dHRvbk9wdGlvbiAmJiAhdGhpcy5lbmFibGVkRXhwb3J0QnV0dG9uKSB7XG4gICAgICB0aGlzLmRpc2FibGVPVGFibGVPcHRpb25Db21wb25lbnQodGhpcy5leHBvcnRCdXR0b25PcHRpb24pO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbk9wdGlvbiAmJiAhdGhpcy5lbmFibGVkQ29sdW1uc1Zpc2liaWxpdHlCdXR0b24pIHtcbiAgICAgIHRoaXMuZGlzYWJsZU9UYWJsZU9wdGlvbkNvbXBvbmVudCh0aGlzLmNvbHVtbnNWaXNpYmlsaXR5QnV0dG9uT3B0aW9uKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZmlsdGVyTWVudUJ1dHRvbiAmJiAhdGhpcy5lbmFibGVkRmlsdGVyTWVudSkge1xuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uKHRoaXMuZmlsdGVyTWVudUJ1dHRvbik7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25NZW51QnV0dG9uICYmICF0aGlzLmVuYWJsZWRDb25maWd1cmF0aW9uTWVudSkge1xuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uKHRoaXMuY29uZmlndXJhdGlvbk1lbnVCdXR0b24pO1xuICAgIH1cblxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRpc2FibGVPVGFibGVPcHRpb25Db21wb25lbnQoY29tcDogT1RhYmxlT3B0aW9uQ29tcG9uZW50KSB7XG4gICAgY29tcC5lbmFibGVkID0gZmFsc2U7XG4gICAgY29uc3QgYnV0dG9uRUwgPSBjb21wLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uJyk7XG4gICAgY29uc3Qgb2JzID0gUGVybWlzc2lvbnNVdGlscy5yZWdpc3RlckRpc2FibGVkQ2hhbmdlc0luRG9tKGJ1dHRvbkVMKTtcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJzLnB1c2gob2JzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkaXNhYmxlQnV0dG9uKGJ1dHRvbkVMOiBFbGVtZW50UmVmKSB7XG4gICAgYnV0dG9uRUwubmF0aXZlRWxlbWVudC5kaXNhYmxlZCA9IHRydWU7XG4gICAgY29uc3Qgb2JzID0gUGVybWlzc2lvbnNVdGlscy5yZWdpc3RlckRpc2FibGVkQ2hhbmdlc0luRG9tKGJ1dHRvbkVMLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcnMucHVzaChvYnMpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMubXV0YXRpb25PYnNlcnZlcnMpIHtcbiAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcnMuZm9yRWFjaCgobTogTXV0YXRpb25PYnNlcnZlcikgPT4ge1xuICAgICAgICBtLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT3B0aW9ucyhvVGFibGVPcHRpb25zOiBPVGFibGVPcHRpb25Db21wb25lbnRbXSkge1xuICAgIGNvbnN0IGl0ZW1zOiBPUGVybWlzc2lvbnNbXSA9IHRoaXMucGVybWlzc2lvbnMuaXRlbXMgfHwgW107XG4gICAgY29uc3QgZml4ZWRPcHRpb25zID0gWydzZWxlY3QtYWxsLWNoZWNrYm94JywgJ2V4cG9ydCcsICdzaG93LWhpZGUtY29sdW1ucycsICdmaWx0ZXInLCAnY29uZmlndXJhdGlvbiddO1xuICAgIGNvbnN0IHVzZXJJdGVtczogT1Blcm1pc3Npb25zW10gPSBpdGVtcy5maWx0ZXIoKHBlcm06IE9QZXJtaXNzaW9ucykgPT4gZml4ZWRPcHRpb25zLmluZGV4T2YocGVybS5hdHRyKSA9PT0gLTEpO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHVzZXJJdGVtcy5mb3JFYWNoKChwZXJtOiBPUGVybWlzc2lvbnMpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbiA9IG9UYWJsZU9wdGlvbnMuZmluZCgob1RhYmxlT3B0aW9uOiBPVGFibGVPcHRpb25Db21wb25lbnQpID0+IG9UYWJsZU9wdGlvbi5vYXR0ciA9PT0gcGVybS5hdHRyKTtcbiAgICAgIHNlbGYuc2V0UGVybWlzc2lvbnNUb09UYWJsZU9wdGlvbihwZXJtLCBvcHRpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFBlcm1pc3Npb25zVG9PVGFibGVPcHRpb24ocGVybTogT1Blcm1pc3Npb25zLCBvcHRpb246IE9UYWJsZU9wdGlvbkNvbXBvbmVudCkge1xuICAgIGlmIChwZXJtLnZpc2libGUgPT09IGZhbHNlICYmIG9wdGlvbikge1xuICAgICAgb3B0aW9uLmVsUmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XG4gICAgfSBlbHNlIGlmIChwZXJtLmVuYWJsZWQgPT09IGZhbHNlICYmIG9wdGlvbikge1xuICAgICAgb3B0aW9uLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGJ1dHRvbkVMID0gb3B0aW9uLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uJyk7XG4gICAgICBjb25zdCBvYnMgPSBQZXJtaXNzaW9uc1V0aWxzLnJlZ2lzdGVyRGlzYWJsZWRDaGFuZ2VzSW5Eb20oYnV0dG9uRUwpO1xuICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVycy5wdXNoKG9icyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UGVybWlzc2lvbkJ5QXR0cihhdHRyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtczogT1Blcm1pc3Npb25zW10gPSB0aGlzLnBlcm1pc3Npb25zLml0ZW1zIHx8IFtdO1xuICAgIHJldHVybiBpdGVtcy5maW5kKChwZXJtOiBPUGVybWlzc2lvbnMpID0+IHBlcm0uYXR0ciA9PT0gYXR0cik7XG4gIH1cblxuICBnZXQgaXNTZWxlY3RBbGxPcHRpb25BY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUub1RhYmxlT3B0aW9ucy5zZWxlY3RDb2x1bW4udmlzaWJsZTtcbiAgfVxuXG4gIGdldCBzaG93U2VsZWN0QWxsQ2hlY2tib3goKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdEFsbENoZWNrYm94KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignc2VsZWN0LWFsbC1jaGVja2JveCcpO1xuICAgIHJldHVybiB0aGlzLnNlbGVjdEFsbENoZWNrYm94ICYmICEocGVybSAmJiBwZXJtLnZpc2libGUgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCByb3dIZWlnaHRPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUucm93SGVpZ2h0T2JzZXJ2YWJsZTtcbiAgfVxuICBnZXQgZW5hYmxlZFNlbGVjdEFsbENoZWNrYm94KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignc2VsZWN0LWFsbC1jaGVja2JveCcpO1xuICAgIHJldHVybiAhKHBlcm0gJiYgcGVybS5lbmFibGVkID09PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgc2hvd0V4cG9ydEJ1dHRvbigpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZXhwb3J0QnV0dG9uKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignZXhwb3J0Jyk7XG4gICAgcmV0dXJuICEocGVybSAmJiBwZXJtLnZpc2libGUgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBlbmFibGVkRXhwb3J0QnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignZXhwb3J0Jyk7XG4gICAgcmV0dXJuICEocGVybSAmJiBwZXJtLmVuYWJsZWQgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBzaG93Q29sdW1uc1Zpc2liaWxpdHlCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbnNWaXNpYmlsaXR5QnV0dG9uKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignc2hvdy1oaWRlLWNvbHVtbnMnKTtcbiAgICByZXR1cm4gIShwZXJtICYmIHBlcm0udmlzaWJsZSA9PT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IHNob3dSZXBvcnRPbkRlbWFuZEJ1dHRvbigpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2hvd1JlcG9ydE9uRGVtYW5kT3B0aW9uKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignc2hvdy1yZXBvcnQtb24tZGVtYW5kJyk7XG4gICAgcmV0dXJuICEocGVybSAmJiBwZXJtLnZpc2libGUgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBlbmFibGVkQ29sdW1uc1Zpc2liaWxpdHlCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGVybTogT1Blcm1pc3Npb25zID0gdGhpcy5nZXRQZXJtaXNzaW9uQnlBdHRyKCdzaG93LWhpZGUtY29sdW1ucycpO1xuICAgIHJldHVybiAhKHBlcm0gJiYgcGVybS5lbmFibGVkID09PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgc2hvd0ZpbHRlck1lbnUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGVybTogT1Blcm1pc3Npb25zID0gdGhpcy5nZXRQZXJtaXNzaW9uQnlBdHRyKCdmaWx0ZXInKTtcbiAgICByZXR1cm4gdGhpcy5zaG93RmlsdGVyT3B0aW9uICYmICEocGVybSAmJiBwZXJtLnZpc2libGUgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBlbmFibGVkRmlsdGVyTWVudSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBwZXJtOiBPUGVybWlzc2lvbnMgPSB0aGlzLmdldFBlcm1pc3Npb25CeUF0dHIoJ2ZpbHRlcicpO1xuICAgIHJldHVybiAhKHBlcm0gJiYgcGVybS5lbmFibGVkID09PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgc2hvd0NvbmZpZ3VyYXRpb25NZW51KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignY29uZmlndXJhdGlvbicpO1xuICAgIHJldHVybiB0aGlzLnNob3dDb25maWd1cmF0aW9uT3B0aW9uICYmICEocGVybSAmJiBwZXJtLnZpc2libGUgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBlbmFibGVkQ29uZmlndXJhdGlvbk1lbnUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGVybTogT1Blcm1pc3Npb25zID0gdGhpcy5nZXRQZXJtaXNzaW9uQnlBdHRyKCdjb25maWd1cmF0aW9uJyk7XG4gICAgcmV0dXJuICEocGVybSAmJiBwZXJtLmVuYWJsZWQgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBzaG93R3JvdXBCeUJ1dHRvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93R3JvdXBCeU9wdGlvbjtcbiAgfVxuXG4gIGdldCBzaG93Q2hhcnRzT25EZW1hbmRCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnNob3dDaGFydHNPbkRlbWFuZE9wdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBwZXJtOiBPUGVybWlzc2lvbnMgPSB0aGlzLmdldFBlcm1pc3Npb25CeUF0dHIoJ3Nob3ctY2hhcnQtb24tZGVtYW5kJyk7XG4gICAgcmV0dXJuICEocGVybSAmJiBwZXJtLnZpc2libGUgPT09IGZhbHNlKTtcblxuICB9XG4gIGdldCBzaG93Rmlyc3REaXZpZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5zaG93QW55T3B0aW9uRmlyc3RTZWN0aW9uICYmIHRoaXMuc2hvd0FueU9wdGlvblNlY29uZFNlY3Rpb24pIHx8XG4gICAgICAodGhpcy5zaG93QW55T3B0aW9uRmlyc3RTZWN0aW9uICYmICF0aGlzLnNob3dBbnlPcHRpb25TZWNvbmRTZWN0aW9uICYmIHRoaXMuc2hvd0FueU9wdGlvblRoaXJkU2VjdGlvbik7XG4gIH1cblxuICBnZXQgc2hvd1NlY29uZERpdmlkZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0FueU9wdGlvblNlY29uZFNlY3Rpb24gJiYgdGhpcy5zaG93QW55T3B0aW9uVGhpcmRTZWN0aW9uO1xuICB9XG5cbiAgZ2V0IHNob3dBbnlPcHRpb25UaGlyZFNlY3Rpb24oKTpib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93R3JvdXBCeUJ1dHRvbiB8fCB0aGlzLnNob3dGaWx0ZXJNZW51IHx8IHRoaXMuc2hvd0NvbmZpZ3VyYXRpb25NZW51O1xuICB9XG4gIGdldCBzaG93QW55T3B0aW9uRmlyc3RTZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3dTZWxlY3RBbGxDaGVja2JveCB8fCB0aGlzLnNob3dDb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbiB8fCB0aGlzLnNob3dSZXNldFdpZHRoT3B0aW9uO1xuICB9XG4gIGdldCBzaG93QW55T3B0aW9uU2Vjb25kU2VjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93RXhwb3J0QnV0dG9uIHx8IHRoaXMuc2hvd1JlcG9ydE9uRGVtYW5kQnV0dG9uIHx8IHRoaXMuc2hvd0NoYXJ0c09uRGVtYW5kQnV0dG9uO1xuICB9XG5cblxuICBvblNob3dzU2VsZWN0cygpIHtcbiAgICBjb25zdCB0YWJsZU9wdGlvbnMgPSB0aGlzLnRhYmxlLm9UYWJsZU9wdGlvbnM7XG4gICAgdGFibGVPcHRpb25zLnNlbGVjdENvbHVtbi52aXNpYmxlID0gIXRhYmxlT3B0aW9ucy5zZWxlY3RDb2x1bW4udmlzaWJsZTtcbiAgICB0aGlzLnRhYmxlLmluaXRpYWxpemVDaGVja2JveENvbHVtbigpO1xuICB9XG5cbiAgb25FeHBvcnRCdXR0b25DbGlja2VkKCkge1xuICAgIHRoaXMuZXhwb3J0RGF0YVByb3ZpZGVyLmluaXRpYWxpemVQcm92aWRlcih0aGlzLnRhYmxlKTtcblxuICAgIHRoaXMuZGlhbG9nLm9wZW4oT1RhYmxlRXhwb3J0RGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHZpc2libGVCdXR0b25zOiB0aGlzLnRhYmxlLnZpc2libGVFeHBvcnREaWFsb2dCdXR0b25zLFxuICAgICAgICBzZXJ2aWNlOiB0aGlzLnRhYmxlLnNlcnZpY2UsXG4gICAgICAgIHNlcnZpY2VUeXBlOiB0aGlzLnRhYmxlLmV4cG9ydFNlcnZpY2VUeXBlLFxuICAgICAgICBvcHRpb25zOiB0aGlzLnRhYmxlLmV4cG9ydE9wdHNUZW1wbGF0ZVxuICAgICAgfSxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgIHBhbmVsQ2xhc3M6IFsnby1kaWFsb2ctY2xhc3MnLCAnby10YWJsZS1kaWFsb2cnXVxuICAgIH0pO1xuICB9XG5cbiAgb25DaGFuZ2VDb2x1bW5zVmlzaWJpbGl0eUNsaWNrZWQoKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihPVGFibGVWaXNpYmxlQ29sdW1uc0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YToge1xuICAgICAgICB0YWJsZTogdGhpcy50YWJsZVxuICAgICAgfSxcbiAgICAgIG1heFdpZHRoOiAnMzV2dycsXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBwYW5lbENsYXNzOiBbJ28tZGlhbG9nLWNsYXNzJywgJ28tdGFibGUtZGlhbG9nJ11cbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJlc3VsdCkpIHtcbiAgICAgICAgdGhpcy50YWJsZS52aXNpYmxlQ29sQXJyYXkgPSByZXN1bHQudmlzaWJsZUNvbEFycmF5O1xuICAgICAgICBjb25zdCBjb2x1bW5zT3JkZXIgPSByZXN1bHQuY29sdW1uc09yZGVyO1xuICAgICAgICB0aGlzLnRhYmxlLm9UYWJsZU9wdGlvbnMuY29sdW1ucy5zb3J0KChhOiBPQ29sdW1uLCBiOiBPQ29sdW1uKSA9PiBjb2x1bW5zT3JkZXIuaW5kZXhPZihhLmF0dHIpIC0gY29sdW1uc09yZGVyLmluZGV4T2YoYi5hdHRyKSk7XG5cbiAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJlc3VsdC5zb3J0Q29sdW1ucykpIHtcbiAgICAgICAgICB0aGlzLnRhYmxlLnJlaW5pdGlhbGl6ZVNvcnRDb2x1bW5zKHJlc3VsdC5zb3J0Q29sdW1ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQocmVzdWx0Lmdyb3VwQ29sdW1ucykpIHtcbiAgICAgICAgICB0aGlzLnRhYmxlLnNldEdyb3VwQ29sdW1ucyhyZXN1bHQuZ3JvdXBDb2x1bW5zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQuY29sdW1uVmFsdWVGaWx0ZXJzVG9SZW1vdmUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMudGFibGUuY2xlYXJDb2x1bW5GaWx0ZXJzKGZhbHNlLCByZXN1bHQuY29sdW1uVmFsdWVGaWx0ZXJzVG9SZW1vdmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YWJsZS5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMudGFibGUucmVmcmVzaENvbHVtbnNXaWR0aEZyb21Mb2NhbFN0b3JhZ2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uR3JvdXBCeUNsaWNrZWQoKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihPVGFibGVHcm91cEJ5Q29sdW1uc0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YToge1xuICAgICAgICBncm91cGVkQ29sdW1uczogdGhpcy50YWJsZS5ncm91cGVkQ29sdW1uc0FycmF5LFxuICAgICAgICBjb2x1bW5zRGF0YTogdGhpcy50YWJsZS5vVGFibGVPcHRpb25zLmNvbHVtbnMsXG4gICAgICAgIHJvd0hlaWdodDogdGhpcy50YWJsZS5yb3dIZWlnaHQsXG4gICAgICAgIGdyb3VwZWRDb2x1bW5UeXBlczogdGhpcy50YWJsZS5ncm91cGVkQ29sdW1uVHlwZXNcbiAgICAgIH0sXG4gICAgICBoZWlnaHQ6ICc3NXZoJyxcbiAgICAgIHdpZHRoOiAnNTB2dycsXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBwYW5lbENsYXNzOiBbJ28tZGlhbG9nLWNsYXNzJywgJ28tdGFibGUtZGlhbG9nJywgJ28tdGFibGUtZ3JvdXAtYnktY29sdW1uLWRpYWxvZyddXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy50YWJsZS5zZXRHcm91cGVkQ29sdW1uVHlwZXMoZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldEdyb3VwZWRDb2x1bW5UeXBlcygpKTtcbiAgICAgICAgdGhpcy50YWJsZS5zZXRHcm91cENvbHVtbnMoZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldEdyb3VwZWRDb2x1bW5zKCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25GaWx0ZXJCeUNvbHVtbkNsaWNrZWQoKSB7XG4gICAgaWYgKHRoaXMudGFibGUuaXNDb2x1bW5GaWx0ZXJzQWN0aXZlICYmIHRoaXMudGFibGUuZGF0YVNvdXJjZS5pc0NvbHVtblZhbHVlRmlsdGVyQWN0aXZlKCkpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jb25maXJtKCdDT05GSVJNJywgJ01FU1NBR0VTLkNPTkZJUk1fRElTQ0FSRF9GSUxURVJfQllfQ09MVU1OJykudGhlbihyZXMgPT4ge1xuICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgdGhpcy50YWJsZS5jbGVhckNvbHVtbkZpbHRlcnMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRhYmxlLmlzQ29sdW1uRmlsdGVyc0FjdGl2ZSA9ICFyZXM7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YWJsZS5pc0NvbHVtbkZpbHRlcnNBY3RpdmUgPSAhdGhpcy50YWJsZS5pc0NvbHVtbkZpbHRlcnNBY3RpdmU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uU3RvcmVGaWx0ZXJDbGlja2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oT1N0b3JlRmlsdGVyRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB0aGlzLnRhYmxlLnN0YXRlLnN0b3JlZEZpbHRlcnMubWFwKGZpbHRlciA9PiBmaWx0ZXIubmFtZSksXG4gICAgICB3aWR0aDogJ2NhbGMoKDc1ZW0gLSAxMDAlKSAqIDEwMDApJyxcbiAgICAgIG1heFdpZHRoOiAnNjV2dycsXG4gICAgICBtaW5XaWR0aDogJzMwdncnLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgcGFuZWxDbGFzczogWydvLWRpYWxvZy1jbGFzcycsICdvLXRhYmxlLWRpYWxvZyddXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy50YWJsZS5zdG9yZUZpbHRlckluU3RhdGUoZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldEZpbHRlckF0dHJpYnV0ZXMoKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Mb2FkRmlsdGVyQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE9Mb2FkRmlsdGVyRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB0aGlzLnRhYmxlLnN0YXRlLnN0b3JlZEZpbHRlcnMsXG4gICAgICB3aWR0aDogJ2NhbGMoKDc1ZW0gLSAxMDAlKSAqIDEwMDApJyxcbiAgICAgIG1heFdpZHRoOiAnNjV2dycsXG4gICAgICBtaW5XaWR0aDogJzMwdncnLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgcGFuZWxDbGFzczogWydvLWRpYWxvZy1jbGFzcycsICdvLXRhYmxlLWRpYWxvZyddXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uub25EZWxldGUuc3Vic2NyaWJlKGZpbHRlck5hbWUgPT4gdGhpcy50YWJsZS5zdGF0ZS5kZWxldGVTdG9yZWRGaWx0ZXIoZmlsdGVyTmFtZSkpO1xuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEZpbHRlck5hbWU6IHN0cmluZyA9IGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5nZXRTZWxlY3RlZEZpbHRlck5hbWUoKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkRmlsdGVyTmFtZSkge1xuICAgICAgICAgIHRoaXMudGFibGUuc3RhdGUuYXBwbHlGaWx0ZXIoc2VsZWN0ZWRGaWx0ZXJOYW1lKTtcbiAgICAgICAgICB0aGlzLnRhYmxlLnNldEZpbHRlcnNDb25maWd1cmF0aW9uKCk7XG4gICAgICAgICAgdGhpcy50YWJsZS5yZWxvYWRQYWdpbmF0ZWREYXRhRnJvbVN0YXJ0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25DbGVhckZpbHRlckNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0oJ0NPTkZJUk0nLCAnVEFCTEUuRElBTE9HLkNPTkZJUk1fQ0xFQVJfRklMVEVSJykudGhlbihyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLnRhYmxlLmNsZWFyRmlsdGVycygpO1xuICAgICAgICB0aGlzLnRhYmxlLnJlbG9hZFBhZ2luYXRlZERhdGFGcm9tU3RhcnQoZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxuICBvbkNoYXJ0c09uRGVtYW5kQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jaGFydE9uRGVtYW5kU2VydmljZSkge1xuICAgICAgdGhpcy5jaGFydE9uRGVtYW5kU2VydmljZS5vcGVuQ2hhcnRPbkRlbWFuZCh0aGlzLnRhYmxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKFwiWW91IG11c3QgaGF2ZSBvbnRpbWl6ZS13ZWItbmd4LWNoYXJ0cyBpbnN0YWxsZWQgaW4geW91ciBhcHAgdG8gdXNlIGNoYXJ0cyBvbiBkZW1hbmQuXCIpXG4gICAgfVxuICB9XG4gIG9uUmVzZXRXaWR0aENsaWNrZWQoKSB7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0oJ0NPTkZJUk0nLCAnVEFCTEUuRElBTE9HLkNPTkZJUk1fUkVTRVRfV0lEVEgnKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHRoaXMudGFibGUucmVzZXRDb2x1bW5zV2lkdGgoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uUmVwb3J0T25EZW1hbmRDbGlja2VkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlcG9ydFNlcnZpY2UpIHtcbiAgICAgIHRoaXMucmVwb3J0U2VydmljZS5vcGVuUmVwb3J0T25EZW1hbmQodGhpcy50YWJsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihcIllvdSBtdXN0IGhhdmUgb250aW1pemUtd2ViLW5neC1yZXBvcnQtb24tZGVtYW5kIGluc3RhbGxlZCBpbiB5b3VyIGFwcCB0byB1c2UgcmVwb3J0IG9uIGRlbWFuZC5cIilcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TdG9yZUNvbmZpZ3VyYXRpb25DbGlja2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oT1RhYmxlU3RvcmVDb25maWd1cmF0aW9uRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogJ2NhbGMoKDc1ZW0gLSAxMDAlKSAqIDEwMDApJyxcbiAgICAgIG1heFdpZHRoOiAnNjV2dycsXG4gICAgICBtaW5XaWR0aDogJzMwdncnLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgcGFuZWxDbGFzczogWydvLWRpYWxvZy1jbGFzcycsICdvLXRhYmxlLWRpYWxvZyddXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25EYXRhID0gZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldENvbmZpZ3VyYXRpb25BdHRyaWJ1dGVzKCk7XG4gICAgICAgIGNvbnN0IHRhYmxlUHJvcGVydGllcyA9IGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5nZXRTZWxlY3RlZFRhYmxlUHJvcGVydGllcygpO1xuICAgICAgICB0aGlzLnRhYmxlLmNvbXBvbmVudFN0YXRlU2VydmljZS5zdG9yZUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbkRhdGEsIHRhYmxlUHJvcGVydGllcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25BcHBseUNvbmZpZ3VyYXRpb25DbGlja2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oT1RhYmxlQXBwbHlDb25maWd1cmF0aW9uRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB0aGlzLnRhYmxlLnN0YXRlLnN0b3JlZENvbmZpZ3VyYXRpb25zLFxuICAgICAgd2lkdGg6ICdjYWxjKCg3NWVtIC0gMTAwJSkgKiAxMDAwKScsXG4gICAgICBtYXhXaWR0aDogJzY1dncnLFxuICAgICAgbWluV2lkdGg6ICczMHZ3JyxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgIHBhbmVsQ2xhc3M6IFsnby1kaWFsb2ctY2xhc3MnLCAnby10YWJsZS1kaWFsb2cnXVxuICAgIH0pO1xuICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5vbkRlbGV0ZS5zdWJzY3JpYmUoY29uZmlndXJhdGlvbk5hbWUgPT4gdGhpcy50YWJsZS5zdGF0ZS5kZWxldGVTdG9yZWRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25OYW1lKSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0ICYmIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5pc0RlZmF1bHRDb25maWd1cmF0aW9uU2VsZWN0ZWQoKSkge1xuICAgICAgICB0aGlzLnRhYmxlLnN0YXRlLnJlc2V0KHRoaXMudGFibGUucGFnZWFibGUpO1xuICAgICAgICB0aGlzLnRhYmxlLmFwcGx5RGVmYXVsdENvbmZpZ3VyYXRpb24oKTtcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ29uZmlndXJhdGlvbk5hbWU6IHN0cmluZyA9IGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5nZXRTZWxlY3RlZENvbmZpZ3VyYXRpb25OYW1lKCk7XG4gICAgICAgIGlmIChzZWxlY3RlZENvbmZpZ3VyYXRpb25OYW1lKSB7XG4gICAgICAgICAgdGhpcy50YWJsZS5zdGF0ZS5hcHBseUNvbmZpZ3VyYXRpb24oc2VsZWN0ZWRDb25maWd1cmF0aW9uTmFtZSk7XG4gICAgICAgICAgdGhpcy50YWJsZS5hcHBseUNvbmZpZ3VyYXRpb24oc2VsZWN0ZWRDb25maWd1cmF0aW9uTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG59XG4iLCI8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgeC1wb3NpdGlvbj1cImJlZm9yZVwiIFtjbGFzc109XCIocm93SGVpZ2h0T2JzZXJ2YWJsZSB8IGFzeW5jKSArJyBvLXRhYmxlLW1lbnUgby1tYXQtbWVudSdcIj5cbiAgPCEtLSBJdCBpcyBuZWNlc3NhcnkgdG8gd3JhcCB0aGUgby10YWJsZSBidXR0b24gd2l0aCA8c3BhbiBtYXQtbWVudS1pdGVtPiBzbyB0aGF0IHRoZSBzdWJtZW51cyBjb2xsYXBzZSB3aGVuIGxvc2luZyBmb2N1cyAtLT5cbiAgPCEtLSBERUZBVUxUIE9QVElPTlMgLS0+XG4gIDxzcGFuIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJwYWRkaW5nLTBcIiAqbmdJZj1cInNob3dTZWxlY3RBbGxDaGVja2JveFwiPlxuICAgIDxvLXRhYmxlLW9wdGlvbiAjc2VsZWN0QWxsQ2hlY2tib3hPcHRpb24gW2FjdGl2ZV09XCJpc1NlbGVjdEFsbE9wdGlvbkFjdGl2ZVwiIChvbkNsaWNrKT1cIm9uU2hvd3NTZWxlY3RzKClcIiBsYWJlbD1cIlRBQkxFLkJVVFRPTlMuU0VMRUNUXCJcbiAgICAgIHNob3ctY2hlY2tib3gtb3B0aW9uPVwidHJ1ZVwiPjwvby10YWJsZS1vcHRpb24+XG4gIDwvc3Bhbj5cbiAgPHNwYW4gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInBhZGRpbmctMFwiICpuZ0lmPVwic2hvd0NvbHVtbnNWaXNpYmlsaXR5QnV0dG9uXCI+XG4gICAgPG8tdGFibGUtb3B0aW9uICNjb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbk9wdGlvbiAob25DbGljayk9XCJvbkNoYW5nZUNvbHVtbnNWaXNpYmlsaXR5Q2xpY2tlZCgpXCIgbGFiZWw9XCJUQUJMRS5CVVRUT05TLkNPTFZJU1wiPjwvby10YWJsZS1vcHRpb24+XG4gIDwvc3Bhbj5cbiAgPHNwYW4gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInBhZGRpbmctMFwiICpuZ0lmPVwic2hvd1Jlc2V0V2lkdGhPcHRpb25cIj5cbiAgICA8by10YWJsZS1vcHRpb24gKG9uQ2xpY2spPVwib25SZXNldFdpZHRoQ2xpY2tlZCgpXCIgbGFiZWw9XCJUQUJMRS5CVVRUT05TLlJFU0VUV0lEVEhcIj48L28tdGFibGUtb3B0aW9uPlxuICA8L3NwYW4+XG4gIDxtYXQtZGl2aWRlciAqbmdJZj1cInNob3dGaXJzdERpdmlkZXJcIj48L21hdC1kaXZpZGVyPlxuICA8c3BhbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwicGFkZGluZy0wXCIgKm5nSWY9XCJzaG93RXhwb3J0QnV0dG9uXCI+XG4gICAgPG8tdGFibGUtb3B0aW9uICNleHBvcnRCdXR0b25PcHRpb24gKG9uQ2xpY2spPVwib25FeHBvcnRCdXR0b25DbGlja2VkKClcIiBsYWJlbD1cIlRBQkxFLkJVVFRPTlMuRVhQT1JUXCI+PC9vLXRhYmxlLW9wdGlvbj5cbiAgPC9zcGFuPlxuICA8c3BhbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwicGFkZGluZy0wXCIgKm5nSWY9XCJzaG93UmVwb3J0T25EZW1hbmRCdXR0b25cIj5cbiAgICA8by10YWJsZS1vcHRpb24gKG9uQ2xpY2spPVwib25SZXBvcnRPbkRlbWFuZENsaWNrZWQoKVwiIGxhYmVsPVwiVEFCTEUuQlVUVE9OUy5SRVBPUlRfT05fREVNQU5EXCI+PC9vLXRhYmxlLW9wdGlvbj5cbiAgPC9zcGFuPlxuICA8c3BhbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwicGFkZGluZy0wXCIgKm5nSWY9XCJzaG93Q2hhcnRzT25EZW1hbmRCdXR0b25cIj5cbiAgICA8by10YWJsZS1vcHRpb24gKG9uQ2xpY2spPVwib25DaGFydHNPbkRlbWFuZENsaWNrZWQoKVwiIGxhYmVsPVwiVEFCTEUuQlVUVE9OUy5DSEFSVF9PTl9ERU1BTkRcIj48L28tdGFibGUtb3B0aW9uPlxuICA8L3NwYW4+XG4gIDxtYXQtZGl2aWRlciAqbmdJZj1cInNob3dTZWNvbmREaXZpZGVyXCI+PC9tYXQtZGl2aWRlcj5cbiAgPHNwYW4gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInBhZGRpbmctMFwiICpuZ0lmPVwic2hvd0dyb3VwQnlCdXR0b25cIj5cbiAgICA8by10YWJsZS1vcHRpb24gI2NvbHVtbnNHcm91cEJ5T3B0aW9uIChvbkNsaWNrKT1cIm9uR3JvdXBCeUNsaWNrZWQoKVwiIGxhYmVsPVwiVEFCTEUuQlVUVE9OUy5HUk9VUEJZXCI+PC9vLXRhYmxlLW9wdGlvbj5cbiAgPC9zcGFuPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjZmlsdGVyTWVudUJ1dHRvbiAqbmdJZj1cInNob3dGaWx0ZXJNZW51XCIgbWF0LW1lbnUtaXRlbSBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZmlsdGVyTWVudVwiPnt7XG4gICAgJ1RBQkxFLkJVVFRPTlMuRklMVEVSJyB8IG9UcmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI2NvbmZpZ3VyYXRpb25NZW51QnV0dG9uICpuZ0lmPVwic2hvd0NvbmZpZ3VyYXRpb25NZW51XCIgbWF0LW1lbnUtaXRlbSBbbWF0TWVudVRyaWdnZXJGb3JdPVwiY29uZmlndXJhdGlvbk1lbnVcIj57e1xuICAgICdUQUJMRS5CVVRUT05TLkNPTkZJR1VSQVRJT04nIHwgb1RyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L21hdC1tZW51PlxuXG48bWF0LW1lbnUgI2ZpbHRlck1lbnU9XCJtYXRNZW51XCIgW2NsYXNzXT1cIihyb3dIZWlnaHRPYnNlcnZhYmxlfCBhc3luYykgKycgby10YWJsZS1tZW51IG8tbWF0LW1lbnUnXCI+XG4gIDxzcGFuIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJwYWRkaW5nLTBcIj5cbiAgICA8by10YWJsZS1vcHRpb24gI2NvbHVtbkZpbHRlck9wdGlvbiBzaG93LWNoZWNrYm94LW9wdGlvbj1cInRydWVcIiBbYWN0aXZlXT1cImlzQ29sdW1uRmlsdGVyT3B0aW9uQWN0aXZlXCIgKG9uQ2xpY2spPVwib25GaWx0ZXJCeUNvbHVtbkNsaWNrZWQoKVwiXG4gICAgICBsYWJlbD1cIlRBQkxFLkJVVFRPTlMuRklMVEVSX0JZX0NPTFVNTlwiPlxuICAgIDwvby10YWJsZS1vcHRpb24+XG4gIDwvc3Bhbj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25TdG9yZUZpbHRlckNsaWNrZWQoKVwiPnt7ICdUQUJMRS5CVVRUT05TLkZJTFRFUl9TQVZFJyB8IG9UcmFuc2xhdGVcbiAgICB9fTwvYnV0dG9uPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbkxvYWRGaWx0ZXJDbGlja2VkKClcIj57eyAnVEFCTEUuQlVUVE9OUy5GSUxURVJfTE9BRCcgfCBvVHJhbnNsYXRlXG4gICAgfX08L2J1dHRvbj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25DbGVhckZpbHRlckNsaWNrZWQoKVwiPnt7ICdUQUJMRS5CVVRUT05TLkZJTFRFUl9DTEVBUicgfCBvVHJhbnNsYXRlXG4gICAgfX08L2J1dHRvbj5cbjwvbWF0LW1lbnU+XG5cbjxtYXQtbWVudSAjY29uZmlndXJhdGlvbk1lbnU9XCJtYXRNZW51XCIgW2NsYXNzXT1cIihyb3dIZWlnaHRPYnNlcnZhYmxlIHwgYXN5bmMpICsnIG8tdGFibGUtbWVudSAgby1tYXQtbWVudSdcIj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25TdG9yZUNvbmZpZ3VyYXRpb25DbGlja2VkKClcIj57eyAnVEFCTEUuQlVUVE9OUy5TQVZFX0NPTkZJR1VSQVRJT04nIHxcbiAgICBvVHJhbnNsYXRlIH19PC9idXR0b24+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uQXBwbHlDb25maWd1cmF0aW9uQ2xpY2tlZCgpXCI+e3sgJ1RBQkxFLkJVVFRPTlMuQVBQTFlfQ09ORklHVVJBVElPTicgfFxuICAgIG9UcmFuc2xhdGUgfX08L2J1dHRvbj5cbjwvbWF0LW1lbnU+XG4iXX0=
507
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLW1lbnUvby10YWJsZS1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLW1lbnUvby10YWJsZS1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFHUixRQUFRLEVBQ1IsU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBSWxGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNsSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDMUYsT0FBTyxFQUFFLDBCQUEw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dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUduRCx1QkFBdUI7c0JBRHRCLFNBQVM7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUkxRCxVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWTtnQkFHdkIsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQjtnQkFHOUIsa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLG9CQUFvQjtnQkFHL0IsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0TWVudSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgSUNoYXJ0T25EZW1hbmRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9jaGFydC1vbi1kZW1hbmQuaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgT1RhYmxlTWVudSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvby10YWJsZS1tZW51LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJUmVwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LW9uLWRlbWFuZC1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgT19DSEFSVF9PTl9ERU1BTkRfU0VSVklDRSwgT19SRVBPUlRfU0VSVklDRSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2ZhY3Rvcmllcyc7XG5pbXBvcnQgeyBPbnRpbWl6ZUV4cG9ydERhdGFQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9vbnRpbWl6ZS1leHBvcnQtZGF0YS1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL3NuYWNrYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBPTG9hZEZpbHRlckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlci9sb2FkLWZpbHRlci9vLWxvYWQtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgT1N0b3JlRmlsdGVyRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMvZmlsdGVyL3N0b3JlLWZpbHRlci9vLXN0b3JlLWZpbHRlci1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgT1Blcm1pc3Npb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMvby1wZXJtaXNzaW9ucy50eXBlJztcbmltcG9ydCB0eXBlIHsgT1RhYmxlTWVudVBlcm1pc3Npb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMvdGFibGUvby10YWJsZS1tZW51LXBlcm1pc3Npb25zLnR5cGUnO1xuaW1wb3J0IHsgUGVybWlzc2lvbnNVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgdHlwZSB7IE9Db2x1bW4gfSBmcm9tICcuLi8uLi8uLi9jb2x1bW4vby1jb2x1bW4uY2xhc3MnO1xuaW1wb3J0IHsgT1RhYmxlQmFzZSB9IGZyb20gJy4uLy4uLy4uL28tdGFibGUtYmFzZS5jbGFzcyc7XG5pbXBvcnQgeyBPVGFibGVBcHBseUNvbmZpZ3VyYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2cvYXBwbHktY29uZmlndXJhdGlvbi9vLXRhYmxlLWFwcGx5LWNvbmZpZ3VyYXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPVGFibGVFeHBvcnREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2cvZXhwb3J0L28tdGFibGUtZXhwb3J0LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgT1RhYmxlU3RvcmVDb25maWd1cmF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGlhbG9nL3N0b3JlLWNvbmZpZ3VyYXRpb24vby10YWJsZS1zdG9yZS1jb25maWd1cmF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgT1RhYmxlVmlzaWJsZUNvbHVtbnNEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2cvdmlzaWJsZS1jb2x1bW5zL28tdGFibGUtdmlzaWJsZS1jb2x1bW5zLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgT1RhYmxlT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtb3B0aW9uL28tdGFibGUtb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPVGFibGVHcm91cEJ5Q29sdW1uc0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZy9ncm91cC1ieS1jb2x1bW5zL28tdGFibGUtZ3JvdXAtYnktY29sdW1ucy1kaWFsb2cuY29tcG9uZW50JztcblxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19UQUJMRV9NRU5VID0gW1xuICAvLyBzZWxlY3QtYWxsLWNoZWNrYm94IFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHNob3cgc2VsZWN0aW9uIGNoZWNrIGJveGVzLiBEZWZhdWx0OiBuby5cbiAgJ3NlbGVjdEFsbENoZWNrYm94OiBzZWxlY3QtYWxsLWNoZWNrYm94JyxcblxuICAvLyBleHBvcnQtYnV0dG9uIFtub3x5ZXNdOiBzaG93IGV4cG9ydCBidXR0b24uIERlZmF1bHQ6IHllcy5cbiAgJ2V4cG9ydEJ1dHRvbjogZXhwb3J0LWJ1dHRvbicsXG5cbiAgLy8gY29sdW1ucy12aXNpYmlsaXR5LWJ1dHRvbiBbbm98eWVzXTogc2hvdyBjb2x1bW5zIHZpc2liaWxpdHkgYnV0dG9uLiBEZWZhdWx0OiB5ZXMuXG4gICdjb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbjogY29sdW1ucy12aXNpYmlsaXR5LWJ1dHRvbicsXG5cbiAgLy8gc2hvdy1jb25maWd1cmF0aW9uLW9wdGlvbiBbeWVzfG5vfHRydWV8ZmFsc2VdOiBzaG93IGNvbmZpZ3VyYXRpb24gYnV0dG9uIGluIGhlYWRlci4gRGVmYXVsdDogeWVzLlxuICAnc2hvd0NvbmZpZ3VyYXRpb25PcHRpb246IHNob3ctY29uZmlndXJhdGlvbi1vcHRpb24nLFxuXG4gIC8vIHNob3ctZmlsdGVyLW9wdGlvbiBbeWVzfG5vfHRydWV8ZmFsc2VdOiBzaG93IGZpbHRlciBtZW51IG9wdGlvbiBpbiB0aGUgaGVhZGVyIG1lbnVcbiAgJ3Nob3dGaWx0ZXJPcHRpb246IHNob3ctZmlsdGVyLW9wdGlvbicsXG5cbiAgLy8gc2hvdy1ncm91cC1ieS1vcHRpb24gW3llc3xub3x0cnVlfGZhbHNlXTogc2hvdyBncm91cCBieSBtZW51IG9wdGlvbiBpbiB0aGUgaGVhZGVyIG1lbnVcbiAgJ3Nob3dHcm91cEJ5T3B0aW9uOiBzaG93LWdyb3VwLWJ5LW9wdGlvbicsXG5cbiAgLy8gc2hvdy1yZXNldC13aWR0aC1vcHRpb24gW3llc3xub3x0cnVlfGZhbHNlXTogc2hvdyByZXNldCB3aWR0aCBtZW51IG9wdGlvbiBpbiB0aGUgaGVhZGVyIG1lbnVcbiAgJ3Nob3dSZXNldFdpZHRoT3B0aW9uOiBzaG93LXJlc2V0LXdpZHRoLW9wdGlvbicsXG5cbiAgLy8gc2hvdy1yZXBvcnQtb24tZGVtYW5kLW9wdGlvbiBbeWVzfG5vfHRydWV8ZmFsc2VdOiBzaG93IHJlcG9ydCBvbiBkZW1hbmQgb3B0aW9uIGluIHRoZSBoZWFkZXIgbWVudVxuICAnc2hvd1JlcG9ydE9uRGVtYW5kT3B0aW9uOiBzaG93LXJlcG9ydC1vbi1kZW1hbmQtb3B0aW9uJyxcblxuICAvLyBzaG93LWNoYXJ0cy1vbi1kZW1hbmQtb3B0aW9uIFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHNob3cgY2hhcnRzIG9uIGRlbWFuZCBvcHRpb24gaW4gdGhlIGhlYWRlciBtZW51XG4gICdzaG93Q2hhcnRzT25EZW1hbmRPcHRpb246IHNob3ctY2hhcnRzLW9uLWRlbWFuZC1vcHRpb24nXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfTUVOVSA9IFtdO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLXRhYmxlLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vby10YWJsZS1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby10YWJsZS1tZW51LmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19UQUJMRV9NRU5VLFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19UQUJMRV9NRU5VLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLXRhYmxlLW1lbnVdJzogJ3RydWUnXG4gIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE9UYWJsZU1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPVGFibGVNZW51LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgLyogSW5wdXRzICovXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzZWxlY3RBbGxDaGVja2JveDogYm9vbGVhbiA9IGZhbHNlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgZXhwb3J0QnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dDb25maWd1cmF0aW9uT3B0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dGaWx0ZXJPcHRpb246IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgY29sdW1uc1Zpc2liaWxpdHlCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2hvd0dyb3VwQnlPcHRpb246IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2hvd1Jlc2V0V2lkdGhPcHRpb246IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2hvd1JlcG9ydE9uRGVtYW5kT3B0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dDaGFydHNPbkRlbWFuZE9wdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cblxuICBwdWJsaWMgb25WaXNpYmxlRmlsdGVyT3B0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLyogRW5kIG9mIGlucHV0cyAqL1xuXG4gIHByb3RlY3RlZCBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogT1RyYW5zbGF0ZVNlcnZpY2U7XG4gIHByb3RlY3RlZCBzbmFja0JhclNlcnZpY2U6IFNuYWNrQmFyU2VydmljZTtcblxuICBAVmlld0NoaWxkKCdtZW51JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgbWF0TWVudTogTWF0TWVudTtcbiAgQFZpZXdDaGlsZCgnc2VsZWN0QWxsQ2hlY2tib3hPcHRpb24nKVxuICBzZWxlY3RBbGxDaGVja2JveE9wdGlvbjogT1RhYmxlT3B0aW9uQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdleHBvcnRCdXR0b25PcHRpb24nKVxuICBleHBvcnRCdXR0b25PcHRpb246IE9UYWJsZU9wdGlvbkNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnY29sdW1uc1Zpc2liaWxpdHlCdXR0b25PcHRpb24nKVxuICBjb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbk9wdGlvbjogT1RhYmxlT3B0aW9uQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdmaWx0ZXJNZW51QnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGZpbHRlck1lbnVCdXR0b246IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpZ3VyYXRpb25NZW51QnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGNvbmZpZ3VyYXRpb25NZW51QnV0dG9uOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlck1lbnUnKVxuICBmaWx0ZXJNZW51OiBNYXRNZW51O1xuICBAVmlld0NoaWxkKCdjb25maWd1cmF0aW9uTWVudScpXG4gIGNvbmZpZ3VyYXRpb25NZW51OiBNYXRNZW51O1xuICBAVmlld0NoaWxkKCdjb2x1bW5GaWx0ZXJPcHRpb24nKVxuICBjb2x1bW5GaWx0ZXJPcHRpb246IE9UYWJsZU9wdGlvbkNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnY2hhcnRNZW51JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgY2hhcnRNZW51OiBNYXRNZW51O1xuXG4gIHByb3RlY3RlZCBwZXJtaXNzaW9uczogT1RhYmxlTWVudVBlcm1pc3Npb25zO1xuICBwcm90ZWN0ZWQgbXV0YXRpb25PYnNlcnZlcnM6IE11dGF0aW9uT2JzZXJ2ZXJbXSA9IFtdO1xuICBwcm90ZWN0ZWQgZXhwb3J0RGF0YVByb3ZpZGVyOiBPbnRpbWl6ZUV4cG9ydERhdGFQcm92aWRlclNlcnZpY2U7XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPVGFibGVCYXNlKSkgcHJvdGVjdGVkIHRhYmxlOiBPVGFibGVCYXNlLFxuXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChPX0NIQVJUX09OX0RFTUFORF9TRVJWSUNFKSBwdWJsaWMgY2hhcnRPbkRlbWFuZFNlcnZpY2U6IElDaGFydE9uRGVtYW5kU2VydmljZSxcblxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoT19SRVBPUlRfU0VSVklDRSkgcHVibGljIHJlcG9ydFNlcnZpY2U6IElSZXBvcnRTZXJ2aWNlXG5cbiAgKSB7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoRGlhbG9nU2VydmljZSk7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT1RyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoU25hY2tCYXJTZXJ2aWNlKTtcbiAgICB0aGlzLmV4cG9ydERhdGFQcm92aWRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9udGltaXplRXhwb3J0RGF0YVByb3ZpZGVyU2VydmljZSlcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucGVybWlzc2lvbnMgPSB0aGlzLnRhYmxlLmdldE1lbnVQZXJtaXNzaW9ucygpO1xuICB9XG5cbiAgZ2V0IGlzQ29sdW1uRmlsdGVyT3B0aW9uQWN0aXZlKCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlICYmIHRoaXMudGFibGUuaXNDb2x1bW5GaWx0ZXJzQWN0aXZlO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuXG4gICAgaWYgKCF0aGlzLnBlcm1pc3Npb25zLml0ZW1zIHx8IHRoaXMucGVybWlzc2lvbnMuaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdEFsbENoZWNrYm94T3B0aW9uICYmICF0aGlzLmVuYWJsZWRTZWxlY3RBbGxDaGVja2JveCkge1xuICAgICAgdGhpcy5kaXNhYmxlT1RhYmxlT3B0aW9uQ29tcG9uZW50KHRoaXMuc2VsZWN0QWxsQ2hlY2tib3hPcHRpb24pO1xuICAgIH1cbiAgICBpZiAodGhpcy5leHBvcnRCdXR0b25PcHRpb24gJiYgIXRoaXMuZW5hYmxlZEV4cG9ydEJ1dHRvbikge1xuICAgICAgdGhpcy5kaXNhYmxlT1RhYmxlT3B0aW9uQ29tcG9uZW50KHRoaXMuZXhwb3J0QnV0dG9uT3B0aW9uKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29sdW1uc1Zpc2liaWxpdHlCdXR0b25PcHRpb24gJiYgIXRoaXMuZW5hYmxlZENvbHVtbnNWaXNpYmlsaXR5QnV0dG9uKSB7XG4gICAgICB0aGlzLmRpc2FibGVPVGFibGVPcHRpb25Db21wb25lbnQodGhpcy5jb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbk9wdGlvbik7XG4gICAgfVxuICAgIGlmICh0aGlzLmZpbHRlck1lbnVCdXR0b24gJiYgIXRoaXMuZW5hYmxlZEZpbHRlck1lbnUpIHtcbiAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbih0aGlzLmZpbHRlck1lbnVCdXR0b24pO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uTWVudUJ1dHRvbiAmJiAhdGhpcy5lbmFibGVkQ29uZmlndXJhdGlvbk1lbnUpIHtcbiAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbih0aGlzLmNvbmZpZ3VyYXRpb25NZW51QnV0dG9uKTtcbiAgICB9XG5cbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkaXNhYmxlT1RhYmxlT3B0aW9uQ29tcG9uZW50KGNvbXA6IE9UYWJsZU9wdGlvbkNvbXBvbmVudCkge1xuICAgIGNvbXAuZW5hYmxlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGJ1dHRvbkVMID0gY29tcC5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpO1xuICAgIGNvbnN0IG9icyA9IFBlcm1pc3Npb25zVXRpbHMucmVnaXN0ZXJEaXNhYmxlZENoYW5nZXNJbkRvbShidXR0b25FTCk7XG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVycy5wdXNoKG9icyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGlzYWJsZUJ1dHRvbihidXR0b25FTDogRWxlbWVudFJlZikge1xuICAgIGJ1dHRvbkVMLm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlO1xuICAgIGNvbnN0IG9icyA9IFBlcm1pc3Npb25zVXRpbHMucmVnaXN0ZXJEaXNhYmxlZENoYW5nZXNJbkRvbShidXR0b25FTC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJzLnB1c2gob2JzKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm11dGF0aW9uT2JzZXJ2ZXJzKSB7XG4gICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJzLmZvckVhY2goKG06IE11dGF0aW9uT2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgbS5kaXNjb25uZWN0KCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9wdGlvbnMob1RhYmxlT3B0aW9uczogT1RhYmxlT3B0aW9uQ29tcG9uZW50W10pIHtcbiAgICBjb25zdCBpdGVtczogT1Blcm1pc3Npb25zW10gPSB0aGlzLnBlcm1pc3Npb25zLml0ZW1zIHx8IFtdO1xuICAgIGNvbnN0IGZpeGVkT3B0aW9ucyA9IFsnc2VsZWN0LWFsbC1jaGVja2JveCcsICdleHBvcnQnLCAnc2hvdy1oaWRlLWNvbHVtbnMnLCAnZmlsdGVyJywgJ2NvbmZpZ3VyYXRpb24nXTtcbiAgICBjb25zdCB1c2VySXRlbXM6IE9QZXJtaXNzaW9uc1tdID0gaXRlbXMuZmlsdGVyKChwZXJtOiBPUGVybWlzc2lvbnMpID0+IGZpeGVkT3B0aW9ucy5pbmRleE9mKHBlcm0uYXR0cikgPT09IC0xKTtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICB1c2VySXRlbXMuZm9yRWFjaCgocGVybTogT1Blcm1pc3Npb25zKSA9PiB7XG4gICAgICBjb25zdCBvcHRpb24gPSBvVGFibGVPcHRpb25zLmZpbmQoKG9UYWJsZU9wdGlvbjogT1RhYmxlT3B0aW9uQ29tcG9uZW50KSA9PiBvVGFibGVPcHRpb24ub2F0dHIgPT09IHBlcm0uYXR0cik7XG4gICAgICBzZWxmLnNldFBlcm1pc3Npb25zVG9PVGFibGVPcHRpb24ocGVybSwgb3B0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRQZXJtaXNzaW9uc1RvT1RhYmxlT3B0aW9uKHBlcm06IE9QZXJtaXNzaW9ucywgb3B0aW9uOiBPVGFibGVPcHRpb25Db21wb25lbnQpIHtcbiAgICBpZiAocGVybS52aXNpYmxlID09PSBmYWxzZSAmJiBvcHRpb24pIHtcbiAgICAgIG9wdGlvbi5lbFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZSgpO1xuICAgIH0gZWxzZSBpZiAocGVybS5lbmFibGVkID09PSBmYWxzZSAmJiBvcHRpb24pIHtcbiAgICAgIG9wdGlvbi5lbmFibGVkID0gZmFsc2U7XG4gICAgICBjb25zdCBidXR0b25FTCA9IG9wdGlvbi5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpO1xuICAgICAgY29uc3Qgb2JzID0gUGVybWlzc2lvbnNVdGlscy5yZWdpc3RlckRpc2FibGVkQ2hhbmdlc0luRG9tKGJ1dHRvbkVMKTtcbiAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcnMucHVzaChvYnMpO1xuICAgIH1cbiAgfVxuXG4gIGdldFBlcm1pc3Npb25CeUF0dHIoYXR0cjogc3RyaW5nKSB7XG4gICAgY29uc3QgaXRlbXM6IE9QZXJtaXNzaW9uc1tdID0gdGhpcy5wZXJtaXNzaW9ucy5pdGVtcyB8fCBbXTtcbiAgICByZXR1cm4gaXRlbXMuZmluZCgocGVybTogT1Blcm1pc3Npb25zKSA9PiBwZXJtLmF0dHIgPT09IGF0dHIpO1xuICB9XG5cbiAgZ2V0IGlzU2VsZWN0QWxsT3B0aW9uQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRhYmxlLm9UYWJsZU9wdGlvbnMuc2VsZWN0Q29sdW1uLnZpc2libGU7XG4gIH1cblxuICBnZXQgc2hvd1NlbGVjdEFsbENoZWNrYm94KCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5zZWxlY3RBbGxDaGVja2JveCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBwZXJtOiBPUGVybWlzc2lvbnMgPSB0aGlzLmdldFBlcm1pc3Npb25CeUF0dHIoJ3NlbGVjdC1hbGwtY2hlY2tib3gnKTtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RBbGxDaGVja2JveCAmJiAhKHBlcm0gJiYgcGVybS52aXNpYmxlID09PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgcm93SGVpZ2h0T2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnRhYmxlLnJvd0hlaWdodE9ic2VydmFibGU7XG4gIH1cbiAgZ2V0IGVuYWJsZWRTZWxlY3RBbGxDaGVja2JveCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBwZXJtOiBPUGVybWlzc2lvbnMgPSB0aGlzLmdldFBlcm1pc3Npb25CeUF0dHIoJ3NlbGVjdC1hbGwtY2hlY2tib3gnKTtcbiAgICByZXR1cm4gIShwZXJtICYmIHBlcm0uZW5hYmxlZCA9PT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IHNob3dFeHBvcnRCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmV4cG9ydEJ1dHRvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBwZXJtOiBPUGVybWlzc2lvbnMgPSB0aGlzLmdldFBlcm1pc3Npb25CeUF0dHIoJ2V4cG9ydCcpO1xuICAgIHJldHVybiAhKHBlcm0gJiYgcGVybS52aXNpYmxlID09PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgZW5hYmxlZEV4cG9ydEJ1dHRvbigpOiBib29sZWFuIHtcbiAgICBjb25zdCBwZXJtOiBPUGVybWlzc2lvbnMgPSB0aGlzLmdldFBlcm1pc3Npb25CeUF0dHIoJ2V4cG9ydCcpO1xuICAgIHJldHVybiAhKHBlcm0gJiYgcGVybS5lbmFibGVkID09PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgc2hvd0NvbHVtbnNWaXNpYmlsaXR5QnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5jb2x1bW5zVmlzaWJpbGl0eUJ1dHRvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBwZXJtOiBPUGVybWlzc2lvbnMgPSB0aGlzLmdldFBlcm1pc3Npb25CeUF0dHIoJ3Nob3ctaGlkZS1jb2x1bW5zJyk7XG4gICAgcmV0dXJuICEocGVybSAmJiBwZXJtLnZpc2libGUgPT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBzaG93UmVwb3J0T25EZW1hbmRCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnNob3dSZXBvcnRPbkRlbWFuZE9wdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBwZXJtOiBPUGVybWlzc2lvbnMgPSB0aGlzLmdldFBlcm1pc3Npb25CeUF0dHIoJ3Nob3ctcmVwb3J0LW9uLWRlbWFuZCcpO1xuICAgIHJldHVybiAhKHBlcm0gJiYgcGVybS52aXNpYmxlID09PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgZW5hYmxlZENvbHVtbnNWaXNpYmlsaXR5QnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignc2hvdy1oaWRlLWNvbHVtbnMnKTtcbiAgICByZXR1cm4gIShwZXJtICYmIHBlcm0uZW5hYmxlZCA9PT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IHNob3dGaWx0ZXJNZW51KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignZmlsdGVyJyk7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0ZpbHRlck9wdGlvbiAmJiAhKHBlcm0gJiYgcGVybS52aXNpYmxlID09PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgZW5hYmxlZEZpbHRlck1lbnUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGVybTogT1Blcm1pc3Npb25zID0gdGhpcy5nZXRQZXJtaXNzaW9uQnlBdHRyKCdmaWx0ZXInKTtcbiAgICByZXR1cm4gIShwZXJtICYmIHBlcm0uZW5hYmxlZCA9PT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IHNob3dDb25maWd1cmF0aW9uTWVudSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBwZXJtOiBPUGVybWlzc2lvbnMgPSB0aGlzLmdldFBlcm1pc3Npb25CeUF0dHIoJ2NvbmZpZ3VyYXRpb24nKTtcbiAgICByZXR1cm4gdGhpcy5zaG93Q29uZmlndXJhdGlvbk9wdGlvbiAmJiAhKHBlcm0gJiYgcGVybS52aXNpYmxlID09PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgZW5hYmxlZENvbmZpZ3VyYXRpb25NZW51KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBlcm06IE9QZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UGVybWlzc2lvbkJ5QXR0cignY29uZmlndXJhdGlvbicpO1xuICAgIHJldHVybiAhKHBlcm0gJiYgcGVybS5lbmFibGVkID09PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgc2hvd0dyb3VwQnlCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0dyb3VwQnlPcHRpb247XG4gIH1cblxuICBnZXQgc2hvd0NoYXJ0c09uRGVtYW5kQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5zaG93Q2hhcnRzT25EZW1hbmRPcHRpb24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgcGVybTogT1Blcm1pc3Npb25zID0gdGhpcy5nZXRQZXJtaXNzaW9uQnlBdHRyKCdzaG93LWNoYXJ0LW9uLWRlbWFuZCcpO1xuICAgIHJldHVybiAhKHBlcm0gJiYgcGVybS52aXNpYmxlID09PSBmYWxzZSk7XG5cbiAgfVxuICBnZXQgc2hvd0ZpcnN0RGl2aWRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuc2hvd0FueU9wdGlvbkZpcnN0U2VjdGlvbiAmJiB0aGlzLnNob3dBbnlPcHRpb25TZWNvbmRTZWN0aW9uKSB8fFxuICAgICAgKHRoaXMuc2hvd0FueU9wdGlvbkZpcnN0U2VjdGlvbiAmJiAhdGhpcy5zaG93QW55T3B0aW9uU2Vjb25kU2VjdGlvbiAmJiB0aGlzLnNob3dBbnlPcHRpb25UaGlyZFNlY3Rpb24pO1xuICB9XG5cbiAgZ2V0IHNob3dTZWNvbmREaXZpZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3dBbnlPcHRpb25TZWNvbmRTZWN0aW9uICYmIHRoaXMuc2hvd0FueU9wdGlvblRoaXJkU2VjdGlvbjtcbiAgfVxuXG4gIGdldCBzaG93QW55T3B0aW9uVGhpcmRTZWN0aW9uKCk6Ym9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0dyb3VwQnlCdXR0b24gfHwgdGhpcy5zaG93RmlsdGVyTWVudSB8fCB0aGlzLnNob3dDb25maWd1cmF0aW9uTWVudTtcbiAgfVxuICBnZXQgc2hvd0FueU9wdGlvbkZpcnN0U2VjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93U2VsZWN0QWxsQ2hlY2tib3ggfHwgdGhpcy5zaG93Q29sdW1uc1Zpc2liaWxpdHlCdXR0b24gfHwgdGhpcy5zaG93UmVzZXRXaWR0aE9wdGlvbjtcbiAgfVxuICBnZXQgc2hvd0FueU9wdGlvblNlY29uZFNlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0V4cG9ydEJ1dHRvbiB8fCB0aGlzLnNob3dSZXBvcnRPbkRlbWFuZEJ1dHRvbiB8fCB0aGlzLnNob3dDaGFydHNPbkRlbWFuZEJ1dHRvbjtcbiAgfVxuXG5cbiAgb25TaG93c1NlbGVjdHMoKSB7XG4gICAgY29uc3QgdGFibGVPcHRpb25zID0gdGhpcy50YWJsZS5vVGFibGVPcHRpb25zO1xuICAgIHRhYmxlT3B0aW9ucy5zZWxlY3RDb2x1bW4udmlzaWJsZSA9ICF0YWJsZU9wdGlvbnMuc2VsZWN0Q29sdW1uLnZpc2libGU7XG4gICAgdGhpcy50YWJsZS5pbml0aWFsaXplQ2hlY2tib3hDb2x1bW4oKTtcbiAgfVxuXG4gIG9uRXhwb3J0QnV0dG9uQ2xpY2tlZCgpIHtcbiAgICB0aGlzLmV4cG9ydERhdGFQcm92aWRlci5pbml0aWFsaXplUHJvdmlkZXIodGhpcy50YWJsZSk7XG5cbiAgICB0aGlzLmRpYWxvZy5vcGVuKE9UYWJsZUV4cG9ydERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YToge1xuICAgICAgICB2aXNpYmxlQnV0dG9uczogdGhpcy50YWJsZS52aXNpYmxlRXhwb3J0RGlhbG9nQnV0dG9ucyxcbiAgICAgICAgY29sdW1uczp0aGlzLnBhcnNlQ29sdW1uc1Zpc2libGUoKSxcbiAgICAgICAgc2VydmljZTogdGhpcy50YWJsZS5zZXJ2aWNlLFxuICAgICAgICBzZXJ2aWNlVHlwZTogdGhpcy50YWJsZS5leHBvcnRTZXJ2aWNlVHlwZSxcbiAgICAgICAgb3B0aW9uczogdGhpcy50YWJsZS5leHBvcnRPcHRzVGVtcGxhdGVcbiAgICAgIH0sXG4gICAgICBtYXhXaWR0aDogJzY1dncnLFxuICAgICAgbWluV2lkdGg6ICcyNXZ3JyxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgIHBhbmVsQ2xhc3M6IFsnby1kaWFsb2ctY2xhc3MnLCAnby10YWJsZS1kaWFsb2cnXVxuICAgIH0pO1xuICB9XG4gIHByb3RlY3RlZCBwYXJzZUNvbHVtbnNWaXNpYmxlKCkge1xuICAgIGNvbnN0IGNvbHVtbnNBcnJheSA9IFV0aWwucGFyc2VBcnJheSh0aGlzLnRhYmxlLmNvbHVtbnMpO1xuICAgIHJldHVybiB0aGlzLnRhYmxlLm9UYWJsZU9wdGlvbnMuY29sdW1ucy5maWx0ZXIob0NvbCA9PiBvQ29sLnR5cGUgIT09IFwiaW1hZ2VcIiAmJiBvQ29sLnR5cGUgIT09IFwiYWN0aW9uXCIgJiYgb0NvbC52aXNpYmxlICYmIGNvbHVtbnNBcnJheS5maW5kSW5kZXgoY29sdW1uID0+IGNvbHVtbiA9PT0gb0NvbC5hdHRyKSA+IC0xKS5tYXAoXG4gICAgICAoeDogT0NvbHVtbikgPT4ge1xuICAgICAgICByZXR1cm4geC5hdHRyO1xuICAgICAgfVxuICAgIClcbiAgfVxuICBvbkNoYW5nZUNvbHVtbnNWaXNpYmlsaXR5Q2xpY2tlZCgpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE9UYWJsZVZpc2libGVDb2x1bW5zRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHRhYmxlOiB0aGlzLnRhYmxlXG4gICAgICB9LFxuICAgICAgbWF4V2lkdGg6ICczNXZ3JyxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgIHBhbmVsQ2xhc3M6IFsnby1kaWFsb2ctY2xhc3MnLCAnby10YWJsZS1kaWFsb2cnXVxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQocmVzdWx0KSkge1xuICAgICAgICB0aGlzLnRhYmxlLnZpc2libGVDb2xBcnJheSA9IHJlc3VsdC52aXNpYmxlQ29sQXJyYXk7XG4gICAgICAgIGNvbnN0IGNvbHVtbnNPcmRlciA9IHJlc3VsdC5jb2x1bW5zT3JkZXI7XG4gICAgICAgIHRoaXMudGFibGUub1RhYmxlT3B0aW9ucy5jb2x1bW5zLnNvcnQoKGE6IE9Db2x1bW4sIGI6IE9Db2x1bW4pID0+IGNvbHVtbnNPcmRlci5pbmRleE9mKGEuYXR0cikgLSBjb2x1bW5zT3JkZXIuaW5kZXhPZihiLmF0dHIpKTtcblxuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQocmVzdWx0LnNvcnRDb2x1bW5zKSkge1xuICAgICAgICAgIHRoaXMudGFibGUucmVpbml0aWFsaXplU29ydENvbHVtbnMocmVzdWx0LnNvcnRDb2x1bW5zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChyZXN1bHQuZ3JvdXBDb2x1bW5zKSkge1xuICAgICAgICAgIHRoaXMudGFibGUuc2V0R3JvdXBDb2x1bW5zKHJlc3VsdC5ncm91cENvbHVtbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc3VsdC5jb2x1bW5WYWx1ZUZpbHRlcnNUb1JlbW92ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy50YWJsZS5jbGVhckNvbHVtbkZpbHRlcnMoZmFsc2UsIHJlc3VsdC5jb2x1bW5WYWx1ZUZpbHRlcnNUb1JlbW92ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhYmxlLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy50YWJsZS5yZWZyZXNoQ29sdW1uc1dpZHRoRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25Hcm91cEJ5Q2xpY2tlZCgpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE9UYWJsZUdyb3VwQnlDb2x1bW5zRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGdyb3VwZWRDb2x1bW5zOiB0aGlzLnRhYmxlLmdyb3VwZWRDb2x1bW5zQXJyYXksXG4gICAgICAgIGNvbHVtbnNEYXRhOiB0aGlzLnRhYmxlLm9UYWJsZU9wdGlvbnMuY29sdW1ucyxcbiAgICAgICAgcm93SGVpZ2h0OiB0aGlzLnRhYmxlLnJvd0hlaWdodCxcbiAgICAgICAgZ3JvdXBlZENvbHVtblR5cGVzOiB0aGlzLnRhYmxlLmdyb3VwZWRDb2x1bW5UeXBlc1xuICAgICAgfSxcbiAgICAgIGhlaWdodDogJzc1dmgnLFxuICAgICAgd2lkdGg6ICc1MHZ3JyxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgIHBhbmVsQ2xhc3M6IFsnby1kaWFsb2ctY2xhc3MnLCAnby10YWJsZS1kaWFsb2cnLCAnby10YWJsZS1ncm91cC1ieS1jb2x1bW4tZGlhbG9nJ11cbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLnRhYmxlLnNldEdyb3VwZWRDb2x1bW5UeXBlcyhkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZ2V0R3JvdXBlZENvbHVtblR5cGVzKCkpO1xuICAgICAgICB0aGlzLnRhYmxlLnNldEdyb3VwQ29sdW1ucyhkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZ2V0R3JvdXBlZENvbHVtbnMoKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbkZpbHRlckJ5Q29sdW1uQ2xpY2tlZCgpIHtcbiAgICBpZiAodGhpcy50YWJsZS5pc0NvbHVtbkZpbHRlcnNBY3RpdmUgJiYgdGhpcy50YWJsZS5kYXRhU291cmNlLmlzQ29sdW1uVmFsdWVGaWx0ZXJBY3RpdmUoKSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0oJ0NPTkZJUk0nLCAnTUVTU0FHRVMuQ09ORklSTV9ESVNDQVJEX0ZJTFRFUl9CWV9DT0xVTU4nKS50aGVuKHJlcyA9PiB7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICB0aGlzLnRhYmxlLmNsZWFyQ29sdW1uRmlsdGVycygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGFibGUuaXNDb2x1bW5GaWx0ZXJzQWN0aXZlID0gIXJlcztcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhYmxlLmlzQ29sdW1uRmlsdGVyc0FjdGl2ZSA9ICF0aGlzLnRhYmxlLmlzQ29sdW1uRmlsdGVyc0FjdGl2ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TdG9yZUZpbHRlckNsaWNrZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihPU3RvcmVGaWx0ZXJEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHRoaXMudGFibGUuc3RhdGUuc3RvcmVkRmlsdGVycy5tYXAoZmlsdGVyID0+IGZpbHRlci5uYW1lKSxcbiAgICAgIHdpZHRoOiAnY2FsYygoNzVlbSAtIDEwMCUpICogMTAwMCknLFxuICAgICAgbWF4V2lkdGg6ICc2NXZ3JyxcbiAgICAgIG1pbldpZHRoOiAnMzB2dycsXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBwYW5lbENsYXNzOiBbJ28tZGlhbG9nLWNsYXNzJywgJ28tdGFibGUtZGlhbG9nJ11cbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLnRhYmxlLnN0b3JlRmlsdGVySW5TdGF0ZShkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZ2V0RmlsdGVyQXR0cmlidXRlcygpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkxvYWRGaWx0ZXJDbGlja2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oT0xvYWRGaWx0ZXJEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHRoaXMudGFibGUuc3RhdGUuc3RvcmVkRmlsdGVycyxcbiAgICAgIHdpZHRoOiAnY2FsYygoNzVlbSAtIDEwMCUpICogMTAwMCknLFxuICAgICAgbWF4V2lkdGg6ICc2NXZ3JyxcbiAgICAgIG1pbldpZHRoOiAnMzB2dycsXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBwYW5lbENsYXNzOiBbJ28tZGlhbG9nLWNsYXNzJywgJ28tdGFibGUtZGlhbG9nJ11cbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5vbkRlbGV0ZS5zdWJzY3JpYmUoZmlsdGVyTmFtZSA9PiB0aGlzLnRhYmxlLnN0YXRlLmRlbGV0ZVN0b3JlZEZpbHRlcihmaWx0ZXJOYW1lKSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRmlsdGVyTmFtZTogc3RyaW5nID0gZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldFNlbGVjdGVkRmlsdGVyTmFtZSgpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRGaWx0ZXJOYW1lKSB7XG4gICAgICAgICAgdGhpcy50YWJsZS5zdGF0ZS5hcHBseUZpbHRlcihzZWxlY3RlZEZpbHRlck5hbWUpO1xuICAgICAgICAgIHRoaXMudGFibGUuc2V0RmlsdGVyc0NvbmZpZ3VyYXRpb24oKTtcbiAgICAgICAgICB0aGlzLnRhYmxlLnJlbG9hZFBhZ2luYXRlZERhdGFGcm9tU3RhcnQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbkNsZWFyRmlsdGVyQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybSgnQ09ORklSTScsICdUQUJMRS5ESUFMT0cuQ09ORklSTV9DTEVBUl9GSUxURVInKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHRoaXMudGFibGUuY2xlYXJGaWx0ZXJzKCk7XG4gICAgICAgIHRoaXMudGFibGUucmVsb2FkUGFnaW5hdGVkRGF0YUZyb21TdGFydChmYWxzZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIG9uQ2hhcnRzT25EZW1hbmRDbGlja2VkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNoYXJ0T25EZW1hbmRTZXJ2aWNlKSB7XG4gICAgICB0aGlzLmNoYXJ0T25EZW1hbmRTZXJ2aWNlLm9wZW5DaGFydE9uRGVtYW5kKHRoaXMudGFibGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJZb3UgbXVzdCBoYXZlIG9udGltaXplLXdlYi1uZ3gtY2hhcnRzIGluc3RhbGxlZCBpbiB5b3VyIGFwcCB0byB1c2UgY2hhcnRzIG9uIGRlbWFuZC5cIilcbiAgICB9XG4gIH1cbiAgb25SZXNldFdpZHRoQ2xpY2tlZCgpIHtcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybSgnQ09ORklSTScsICdUQUJMRS5ESUFMT0cuQ09ORklSTV9SRVNFVF9XSURUSCcpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy50YWJsZS5yZXNldENvbHVtbnNXaWR0aCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25SZXBvcnRPbkRlbWFuZENsaWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVwb3J0U2VydmljZSkge1xuICAgICAgdGhpcy5yZXBvcnRTZXJ2aWNlLm9wZW5SZXBvcnRPbkRlbWFuZCh0aGlzLnRhYmxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKFwiWW91IG11c3QgaGF2ZSBvbnRpbWl6ZS13ZWItbmd4LXJlcG9ydC1vbi1kZW1hbmQgaW5zdGFsbGVkIGluIHlvdXIgYXBwIHRvIHVzZSByZXBvcnQgb24gZGVtYW5kLlwiKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblN0b3JlQ29uZmlndXJhdGlvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihPVGFibGVTdG9yZUNvbmZpZ3VyYXRpb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnY2FsYygoNzVlbSAtIDEwMCUpICogMTAwMCknLFxuICAgICAgbWF4V2lkdGg6ICc2NXZ3JyxcbiAgICAgIG1pbldpZHRoOiAnMzB2dycsXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBwYW5lbENsYXNzOiBbJ28tZGlhbG9nLWNsYXNzJywgJ28tdGFibGUtZGlhbG9nJ11cbiAgICB9KTtcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgY29uc3QgY29uZmlndXJhdGlvbkRhdGEgPSBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZ2V0Q29uZmlndXJhdGlvbkF0dHJpYnV0ZXMoKTtcbiAgICAgICAgY29uc3QgdGFibGVQcm9wZXJ0aWVzID0gZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldFNlbGVjdGVkVGFibGVQcm9wZXJ0aWVzKCk7XG4gICAgICAgIHRoaXMudGFibGUuY29tcG9uZW50U3RhdGVTZXJ2aWNlLnN0b3JlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uRGF0YSwgdGFibGVQcm9wZXJ0aWVzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkFwcGx5Q29uZmlndXJhdGlvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihPVGFibGVBcHBseUNvbmZpZ3VyYXRpb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHRoaXMudGFibGUuc3RhdGUuc3RvcmVkQ29uZmlndXJhdGlvbnMsXG4gICAgICB3aWR0aDogJ2NhbGMoKDc1ZW0gLSAxMDAlKSAqIDEwMDApJyxcbiAgICAgIG1heFdpZHRoOiAnNjV2dycsXG4gICAgICBtaW5XaWR0aDogJzMwdncnLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgcGFuZWxDbGFzczogWydvLWRpYWxvZy1jbGFzcycsICdvLXRhYmxlLWRpYWxvZyddXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm9uRGVsZXRlLnN1YnNjcmliZShjb25maWd1cmF0aW9uTmFtZSA9PiB0aGlzLnRhYmxlLnN0YXRlLmRlbGV0ZVN0b3JlZENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbk5hbWUpKTtcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQgJiYgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmlzRGVmYXVsdENvbmZpZ3VyYXRpb25TZWxlY3RlZCgpKSB7XG4gICAgICAgIHRoaXMudGFibGUuc3RhdGUucmVzZXQodGhpcy50YWJsZS5wYWdlYWJsZSk7XG4gICAgICAgIHRoaXMudGFibGUuYXBwbHlEZWZhdWx0Q29uZmlndXJhdGlvbigpO1xuICAgICAgfSBlbHNlIGlmIChyZXN1bHQpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nID0gZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldFNlbGVjdGVkQ29uZmlndXJhdGlvbk5hbWUoKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkQ29uZmlndXJhdGlvbk5hbWUpIHtcbiAgICAgICAgICB0aGlzLnRhYmxlLnN0YXRlLmFwcGx5Q29uZmlndXJhdGlvbihzZWxlY3RlZENvbmZpZ3VyYXRpb25OYW1lKTtcbiAgICAgICAgICB0aGlzLnRhYmxlLmFwcGx5Q29uZmlndXJhdGlvbihzZWxlY3RlZENvbmZpZ3VyYXRpb25OYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiB4LXBvc2l0aW9uPVwiYmVmb3JlXCIgW2NsYXNzXT1cIihyb3dIZWlnaHRPYnNlcnZhYmxlIHwgYXN5bmMpICsnIG8tdGFibGUtbWVudSBvLW1hdC1tZW51J1wiPlxuICA8IS0tIEl0IGlzIG5lY2Vzc2FyeSB0byB3cmFwIHRoZSBvLXRhYmxlIGJ1dHRvbiB3aXRoIDxzcGFuIG1hdC1tZW51LWl0ZW0+IHNvIHRoYXQgdGhlIHN1Ym1lbnVzIGNvbGxhcHNlIHdoZW4gbG9zaW5nIGZvY3VzIC0tPlxuICA8IS0tIERFRkFVTFQgT1BUSU9OUyAtLT5cbiAgPHNwYW4gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInBhZGRpbmctMFwiICpuZ0lmPVwic2hvd1NlbGVjdEFsbENoZWNrYm94XCI+XG4gICAgPG8tdGFibGUtb3B0aW9uICNzZWxlY3RBbGxDaGVja2JveE9wdGlvbiBbYWN0aXZlXT1cImlzU2VsZWN0QWxsT3B0aW9uQWN0aXZlXCIgKG9uQ2xpY2spPVwib25TaG93c1NlbGVjdHMoKVwiIGxhYmVsPVwiVEFCTEUuQlVUVE9OUy5TRUxFQ1RcIlxuICAgICAgc2hvdy1jaGVja2JveC1vcHRpb249XCJ0cnVlXCI+PC9vLXRhYmxlLW9wdGlvbj5cbiAgPC9zcGFuPlxuICA8c3BhbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwicGFkZGluZy0wXCIgKm5nSWY9XCJzaG93Q29sdW1uc1Zpc2liaWxpdHlCdXR0b25cIj5cbiAgICA8by10YWJsZS1vcHRpb24gI2NvbHVtbnNWaXNpYmlsaXR5QnV0dG9uT3B0aW9uIChvbkNsaWNrKT1cIm9uQ2hhbmdlQ29sdW1uc1Zpc2liaWxpdHlDbGlja2VkKClcIiBsYWJlbD1cIlRBQkxFLkJVVFRPTlMuQ09MVklTXCI+PC9vLXRhYmxlLW9wdGlvbj5cbiAgPC9zcGFuPlxuICA8c3BhbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwicGFkZGluZy0wXCIgKm5nSWY9XCJzaG93UmVzZXRXaWR0aE9wdGlvblwiPlxuICAgIDxvLXRhYmxlLW9wdGlvbiAob25DbGljayk9XCJvblJlc2V0V2lkdGhDbGlja2VkKClcIiBsYWJlbD1cIlRBQkxFLkJVVFRPTlMuUkVTRVRXSURUSFwiPjwvby10YWJsZS1vcHRpb24+XG4gIDwvc3Bhbj5cbiAgPG1hdC1kaXZpZGVyICpuZ0lmPVwic2hvd0ZpcnN0RGl2aWRlclwiPjwvbWF0LWRpdmlkZXI+XG4gIDxzcGFuIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJwYWRkaW5nLTBcIiAqbmdJZj1cInNob3dFeHBvcnRCdXR0b25cIj5cbiAgICA8by10YWJsZS1vcHRpb24gI2V4cG9ydEJ1dHRvbk9wdGlvbiAob25DbGljayk9XCJvbkV4cG9ydEJ1dHRvbkNsaWNrZWQoKVwiIGxhYmVsPVwiVEFCTEUuQlVUVE9OUy5FWFBPUlRcIj48L28tdGFibGUtb3B0aW9uPlxuICA8L3NwYW4+XG4gIDxzcGFuIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJwYWRkaW5nLTBcIiAqbmdJZj1cInNob3dSZXBvcnRPbkRlbWFuZEJ1dHRvblwiPlxuICAgIDxvLXRhYmxlLW9wdGlvbiAob25DbGljayk9XCJvblJlcG9ydE9uRGVtYW5kQ2xpY2tlZCgpXCIgbGFiZWw9XCJUQUJMRS5CVVRUT05TLlJFUE9SVF9PTl9ERU1BTkRcIj48L28tdGFibGUtb3B0aW9uPlxuICA8L3NwYW4+XG4gIDxzcGFuIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJwYWRkaW5nLTBcIiAqbmdJZj1cInNob3dDaGFydHNPbkRlbWFuZEJ1dHRvblwiPlxuICAgIDxvLXRhYmxlLW9wdGlvbiAob25DbGljayk9XCJvbkNoYXJ0c09uRGVtYW5kQ2xpY2tlZCgpXCIgbGFiZWw9XCJUQUJMRS5CVVRUT05TLkNIQVJUX09OX0RFTUFORFwiPjwvby10YWJsZS1vcHRpb24+XG4gIDwvc3Bhbj5cbiAgPG1hdC1kaXZpZGVyICpuZ0lmPVwic2hvd1NlY29uZERpdmlkZXJcIj48L21hdC1kaXZpZGVyPlxuICA8c3BhbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwicGFkZGluZy0wXCIgKm5nSWY9XCJzaG93R3JvdXBCeUJ1dHRvblwiPlxuICAgIDxvLXRhYmxlLW9wdGlvbiAjY29sdW1uc0dyb3VwQnlPcHRpb24gKG9uQ2xpY2spPVwib25Hcm91cEJ5Q2xpY2tlZCgpXCIgbGFiZWw9XCJUQUJMRS5CVVRUT05TLkdST1VQQllcIj48L28tdGFibGUtb3B0aW9uPlxuICA8L3NwYW4+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNmaWx0ZXJNZW51QnV0dG9uICpuZ0lmPVwic2hvd0ZpbHRlck1lbnVcIiBtYXQtbWVudS1pdGVtIFttYXRNZW51VHJpZ2dlckZvcl09XCJmaWx0ZXJNZW51XCI+e3tcbiAgICAnVEFCTEUuQlVUVE9OUy5GSUxURVInIHwgb1RyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjY29uZmlndXJhdGlvbk1lbnVCdXR0b24gKm5nSWY9XCJzaG93Q29uZmlndXJhdGlvbk1lbnVcIiBtYXQtbWVudS1pdGVtIFttYXRNZW51VHJpZ2dlckZvcl09XCJjb25maWd1cmF0aW9uTWVudVwiPnt7XG4gICAgJ1RBQkxFLkJVVFRPTlMuQ09ORklHVVJBVElPTicgfCBvVHJhbnNsYXRlIH19PC9idXR0b24+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbWF0LW1lbnU+XG5cbjxtYXQtbWVudSAjZmlsdGVyTWVudT1cIm1hdE1lbnVcIiBbY2xhc3NdPVwiKHJvd0hlaWdodE9ic2VydmFibGV8IGFzeW5jKSArJyBvLXRhYmxlLW1lbnUgby1tYXQtbWVudSdcIj5cbiAgPHNwYW4gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInBhZGRpbmctMFwiPlxuICAgIDxvLXRhYmxlLW9wdGlvbiAjY29sdW1uRmlsdGVyT3B0aW9uIHNob3ctY2hlY2tib3gtb3B0aW9uPVwidHJ1ZVwiIFthY3RpdmVdPVwiaXNDb2x1bW5GaWx0ZXJPcHRpb25BY3RpdmVcIiAob25DbGljayk9XCJvbkZpbHRlckJ5Q29sdW1uQ2xpY2tlZCgpXCJcbiAgICAgIGxhYmVsPVwiVEFCTEUuQlVUVE9OUy5GSUxURVJfQllfQ09MVU1OXCI+XG4gICAgPC9vLXRhYmxlLW9wdGlvbj5cbiAgPC9zcGFuPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvblN0b3JlRmlsdGVyQ2xpY2tlZCgpXCI+e3sgJ1RBQkxFLkJVVFRPTlMuRklMVEVSX1NBVkUnIHwgb1RyYW5zbGF0ZVxuICAgIH19PC9idXR0b24+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uTG9hZEZpbHRlckNsaWNrZWQoKVwiPnt7ICdUQUJMRS5CVVRUT05TLkZJTFRFUl9MT0FEJyB8IG9UcmFuc2xhdGVcbiAgICB9fTwvYnV0dG9uPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbkNsZWFyRmlsdGVyQ2xpY2tlZCgpXCI+e3sgJ1RBQkxFLkJVVFRPTlMuRklMVEVSX0NMRUFSJyB8IG9UcmFuc2xhdGVcbiAgICB9fTwvYnV0dG9uPlxuPC9tYXQtbWVudT5cblxuPG1hdC1tZW51ICNjb25maWd1cmF0aW9uTWVudT1cIm1hdE1lbnVcIiBbY2xhc3NdPVwiKHJvd0hlaWdodE9ic2VydmFibGUgfCBhc3luYykgKycgby10YWJsZS1tZW51ICBvLW1hdC1tZW51J1wiPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvblN0b3JlQ29uZmlndXJhdGlvbkNsaWNrZWQoKVwiPnt7ICdUQUJMRS5CVVRUT05TLlNBVkVfQ09ORklHVVJBVElPTicgfFxuICAgIG9UcmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25BcHBseUNvbmZpZ3VyYXRpb25DbGlja2VkKClcIj57eyAnVEFCTEUuQlVUVE9OUy5BUFBMWV9DT05GSUdVUkFUSU9OJyB8XG4gICAgb1RyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuPC9tYXQtbWVudT5cbiJdfQ==
@@ -161,7 +161,8 @@ export class OTableQuickfilterComponent {
161
161
  column.type === 'real' ||
162
162
  column.type === 'percentage' ||
163
163
  column.type === 'currency' ||
164
- column.type === 'service');
164
+ column.type === 'service' ||
165
+ column.type === 'date');
165
166
  }
166
167
  getColumnsWithoutRendererExpressions(columns) {
167
168
  return columns
@@ -203,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
203
204
  type: ViewChild,
204
205
  args: ['menu', { static: true }]
205
206
  }] } });
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1xdWlja2ZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2hlYWRlci90YWJsZS1xdWlja2ZpbHRlci9vLXRhYmxlLXF1aWNrZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLXF1aWNrZmlsdGVyL28tdGFibGUtcXVpY2tmaWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFHUixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFLcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBRXpELE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHO0lBQ2hELGFBQWE7Q0FDZCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUc7SUFDakQsVUFBVTtDQUNYLENBQUM7QUFjRixNQUFNLE9BQU8sMEJBQTBCO0lBSXJDLElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsS0FBYTtRQUMzQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBZUQsWUFDWSxRQUFrQixFQUNsQixLQUFpQixFQUNxQixLQUFpQjtRQUZ2RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDcUIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQTVCekQsaUJBQVksR0FBVyxTQUFTLENBQUM7UUFtQnBDLGFBQVEsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQVdqRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQ3BDLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTdCLElBQUk7WUFDRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDM0Q7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzlCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMxQztJQUNILENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFHcEQsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsSUFBSSxNQUFNLEdBQWUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNsRixNQUFNLFdBQVcsR0FBaUIsRUFBRSxDQUFDO1lBRXJDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3BKLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsb0NBQW9DLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUU5RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFeEUsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzlFLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksa0JBQWtCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFLL0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2xDO1lBQ0QsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLGtCQUFrQixDQUFDLENBQUM7WUFFeEMsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDMUIsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDeEg7U0FDRjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksTUFBa0IsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLFlBQVksUUFBUSxFQUFFO1lBQ3RELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDeEYsTUFBTSxHQUFJLFVBQXlCLENBQUM7YUFDckM7aUJBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEdBQUcscUJBQXFCLENBQUMseUJBQXlCLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDdEU7U0FDRjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxxQkFBcUI7UUFDMUIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzlDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDO2lCQUN2RSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN2QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztpQkFDNUIsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtvQkFDdEQsT0FBTztpQkFDUjtnQkFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7WUFHTCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUNsRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFTSxRQUFRLENBQUMsS0FBVSxFQUFFLFVBQW1CLElBQUk7UUFDakQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUMxRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNoRDtJQUNILENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sU0FBUyxDQUFDLE1BQWU7UUFDOUIsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxNQUFlLEVBQUUsS0FBd0I7UUFDL0QsTUFBTSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ25DLENBQUM7SUFFTSx5QkFBeUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVNLG9CQUFvQjtRQUN6QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFZLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU0sc0JBQXNCO1FBQzNCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFZLEVBQUUsRUFBRTtZQUMvQyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUU7Z0JBQ2pCLEtBQUssRUFBRSxDQUFDO2FBQ1Q7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQXdCO1FBQy9DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFZLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxNQUFlO1FBQzFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQ3pCLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUN4QixNQUFNLENBQUMsSUFBSSxLQUFLLFdBQVc7WUFDM0IsTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTO1lBQ3pCLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTTtZQUN0QixNQUFNLENBQUMsSUFBSSxLQUFLLFlBQVk7WUFDNUIsTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVO1lBQzFCLE1BQU0sQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUMxQixDQUFDO0lBQ0osQ0FBQztJQUVTLG9DQUFvQyxDQUFDLE9BQWtCO1FBQy9ELE9BQU8sT0FBTzthQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFO2dCQUNqRCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM3RDtpQkFBTTtnQkFFTCxPQUFPLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3pFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVMsNkJBQTZCLENBQUMsT0FBa0I7UUFDeEQsT0FBTyxPQUFPO2FBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2FBQy9GLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNWLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7Z0JBQ3JELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdEQ7WUFFRCxPQUFPLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7d0hBaE5VLDBCQUEwQixvRUE4QjNCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7NEdBOUIzQiwwQkFBMEIsdVlDbER2QywrdkRBb0NBOzRGRGNhLDBCQUEwQjtrQkFadEMsU0FBUzsrQkFDRSxxQkFBcUIsVUFHdkIsa0NBQWtDLFdBQ2pDLG1DQUFtQyxpQkFDN0IsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSiw2QkFBNkIsRUFBRSxNQUFNO3FCQUN0Qzs7MEJBZ0NFLE1BQU07MkJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQzs0Q0FmL0IsTUFBTTtzQkFEWixTQUFTO3VCQUFDLFFBQVE7Z0JBSVosT0FBTztzQkFEYixTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRNZW51IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgT19JTlBVVFNfT1BUSU9OUyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbmZpZy9hcHAtY29uZmlnJztcbmltcG9ydCB0eXBlIHsgT1RhYmxlT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvby10YWJsZS1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IE9UYWJsZVF1aWNrZmlsdGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9vLXRhYmxlLXF1aWNrZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IEV4cHJlc3Npb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy9leHByZXNzaW9uLnR5cGUnO1xuaW1wb3J0IHR5cGUgeyBPSW5wdXRzT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3R5cGVzL28taW5wdXRzLW9wdGlvbnMudHlwZSc7XG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uVXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL2ZpbHRlci1leHByZXNzaW9uLnV0aWxzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBPQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vY29sdW1uL28tY29sdW1uLmNsYXNzJztcbmltcG9ydCB7IE9UYWJsZUJhc2UgfSBmcm9tICcuLi8uLi8uLi9vLXRhYmxlLWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19UQUJMRV9RVUlDS0ZJTFRFUiA9IFtcbiAgJ3BsYWNlaG9sZGVyJ1xuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX1FVSUNLRklMVEVSID0gW1xuICAnb25DaGFuZ2UnXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLXRhYmxlLXF1aWNrZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdGFibGUtcXVpY2tmaWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLXF1aWNrZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19UQUJMRV9RVUlDS0ZJTFRFUixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfUVVJQ0tGSUxURVIsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLXRhYmxlLXF1aWNrZmlsdGVyXSc6ICd0cnVlJyxcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBPVGFibGVRdWlja2ZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9UYWJsZVF1aWNrZmlsdGVyLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJvdGVjdGVkIF9wbGFjZWhvbGRlcjogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHZhbHVlKSkge1xuICAgICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBAVmlld0NoaWxkKCdmaWx0ZXInKVxuICBwdWJsaWMgZmlsdGVyOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ21lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgbWF0TWVudTogTWF0TWVudTtcblxuICBwdWJsaWMgdmFsdWU6IHN0cmluZztcbiAgcHVibGljIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHB1YmxpYyBmb3JtQ29udHJvbDtcblxuICBwcm90ZWN0ZWQgb0lucHV0c09wdGlvbnM6IE9JbnB1dHNPcHRpb25zO1xuICBwcm90ZWN0ZWQgcXVpY2tGaWx0ZXJPYnNlcnZhYmxlOiBTdWJzY3JpcHRpb247XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPVGFibGVCYXNlKSkgcHJvdGVjdGVkIHRhYmxlOiBPVGFibGVCYXNlXG4gICkge1xuICAgIHRoaXMuZm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50YWJsZS5yZWdpc3RlclF1aWNrRmlsdGVyKHRoaXMpO1xuICAgIC8vIHdvcmthcm91bmQgYmVjYXVzZSAneC1wb3NpdGlvbj1cImJlZm9yZVwiJyB3YXMgbm90IHdvcmtpbmcgaW4gdGhlIHRlbXBsYXRlXG4gICAgdGhpcy5tYXRNZW51LnhQb3NpdGlvbiA9ICdiZWZvcmUnO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemVFdmVudEZpbHRlcigpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMub0lucHV0c09wdGlvbnMgPSB0aGlzLmluamVjdG9yLmdldChPX0lOUFVUU19PUFRJT05TKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLm9JbnB1dHNPcHRpb25zID0ge307XG4gICAgfVxuICAgIFV0aWwucGFyc2VPSW5wdXRzT3B0aW9ucyh0aGlzLmVsUmVmLCB0aGlzLm9JbnB1dHNPcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5xdWlja0ZpbHRlck9ic2VydmFibGUpIHtcbiAgICAgIHRoaXMucXVpY2tGaWx0ZXJPYnNlcnZhYmxlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9UYWJsZU9wdGlvbnMoKTogT1RhYmxlT3B0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUub1RhYmxlT3B0aW9ucztcbiAgfVxuXG4gIGdldCBxdWlja0ZpbHRlckNvbHVtbnMoKTogT0NvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZS5vVGFibGVPcHRpb25zLmNvbHVtbnMuZmlsdGVyKG9Db2wgPT4ge1xuICAgICAgLy8gQ0hFQ0s6IFdoeSBjb2x1bW5zIHdpdGggcmVuZGVyZXJzIGFyZSBub3QgZmlsdGVyZWQ/XG4gICAgICAvLyByZXR1cm4gb0NvbC5zZWFyY2hhYmxlICYmIG9Db2wudmlzaWJsZSAmJiAhVXRpbC5pc0RlZmluZWQob0NvbC5yZW5kZXJlcik7XG4gICAgICByZXR1cm4gb0NvbC5zZWFyY2hhYmxlICYmIG9Db2wudmlzaWJsZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJFeHByZXNzaW9uKCk6IEV4cHJlc3Npb24ge1xuICAgIGxldCByZXN1bHQ6IEV4cHJlc3Npb24gPSB0aGlzLmdldFVzZXJGaWx0ZXIoKTtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHJlc3VsdCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBleHByZXNzaW9uczogRXhwcmVzc2lvbltdID0gW107XG5cbiAgICAgIGNvbnN0IHNlYXJjaGluZ0NvbHMgPSB0aGlzLm9UYWJsZU9wdGlvbnMuY29sdW1ucy5maWx0ZXIob0NvbCA9PiBvQ29sLnNlYXJjaGluZyAmJiBvQ29sLnZpc2libGUgJiYgb0NvbC5zZWFyY2hhYmxlICYmIHRoaXMuaXNGaWx0ZXJhYmxlQ29sdW1uKG9Db2wpKTtcbiAgICAgIGV4cHJlc3Npb25zLnB1c2goLi4udGhpcy5nZXRDb2x1bW5zV2l0aG91dFJlbmRlcmVyRXhwcmVzc2lvbnMoc2VhcmNoaW5nQ29scykpO1xuXG4gICAgICBjb25zdCByZW5kZXJlcnNFeHByID0gdGhpcy5nZXRDb2x1bW5zUmVuZGVyZXJFeHByZXNzaW9ucyhzZWFyY2hpbmdDb2xzKTtcblxuICAgICAgY29uc3Qgbm90TnVsbEV4cHJlc3Npb25zID0gcmVuZGVyZXJzRXhwci5maWx0ZXIoZXhwciA9PiBVdGlsLmlzRGVmaW5lZChleHByKSk7XG4gICAgICBpZiAoZXhwcmVzc2lvbnMubGVuZ3RoID09PSAwICYmIG5vdE51bGxFeHByZXNzaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gQWxsIGZpbHRlcnMgaW4gdGhlIHJlbmRlcmVyIGFyZSBlbXB0eSBhbmQgdGhlcmUgYXJlIG5vIG90aGVyIGZpbHRlcnMgY29uZmlndXJlZCxcbiAgICAgICAgLy8gc28gd2UgYWxyZWFkeSBrbm93IHRoYXQgdGhlIHRhYmxlIHNob3VsZCBub3QgaGF2ZSBhbnkgaW5mb3JtYXRpb24gYnV0XG4gICAgICAgIC8vIGl0IHdvdWxkIG1ha2UgYSBxdWVyeSB3aXRoIGVtcHR5IGZpbHRlcnMgYW5kIHJldHJpZXZlIGluZm9ybWF0aW9uIG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIGNvbmZpZ3VyZWQgcXVpY2tmaWx0ZXIgdmFsdWUsXG4gICAgICAgIC8vIHNvIHdlIGZvcmNlIHRvIHN0b3AgdGhlIHF1ZXJ5IGFuZCBzZXQgYW4gZW1wdHkgYXJyYXkgb24gdGhlIHRhYmxlXG4gICAgICAgIHRoaXMudGFibGUuYWJvcnRRdWVyeS5uZXh0KHRydWUpO1xuICAgICAgfVxuICAgICAgZXhwcmVzc2lvbnMucHVzaCguLi5ub3ROdWxsRXhwcmVzc2lvbnMpO1xuXG4gICAgICBpZiAoZXhwcmVzc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHQgPSBleHByZXNzaW9ucy5yZWR1Y2UoKGEsIGIpID0+IEZpbHRlckV4cHJlc3Npb25VdGlscy5idWlsZENvbXBsZXhFeHByZXNzaW9uKGEsIGIsIEZpbHRlckV4cHJlc3Npb25VdGlscy5PUF9PUikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGdldFVzZXJGaWx0ZXIoKTogRXhwcmVzc2lvbiB7XG4gICAgbGV0IHJlc3VsdDogRXhwcmVzc2lvbjtcbiAgICBpZiAodGhpcy50YWJsZS5xdWlja0ZpbHRlckNhbGxiYWNrIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgIGNvbnN0IHVzZXJGaWx0ZXIgPSB0aGlzLnRhYmxlLnF1aWNrRmlsdGVyQ2FsbGJhY2sodGhpcy52YWx1ZSk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQodXNlckZpbHRlcikgJiYgRmlsdGVyRXhwcmVzc2lvblV0aWxzLmluc3RhbmNlb2ZFeHByZXNzaW9uKHVzZXJGaWx0ZXIpKSB7XG4gICAgICAgIHJlc3VsdCA9ICh1c2VyRmlsdGVyIGFzIEV4cHJlc3Npb24pO1xuICAgICAgfSBlbHNlIGlmIChVdGlsLmlzRGVmaW5lZCh1c2VyRmlsdGVyKSkge1xuICAgICAgICByZXN1bHQgPSBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuYnVpbGRFeHByZXNzaW9uRnJvbU9iamVjdCh1c2VyRmlsdGVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplRXZlbnRGaWx0ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlsdGVyICYmICF0aGlzLnF1aWNrRmlsdGVyT2JzZXJ2YWJsZSkge1xuICAgICAgdGhpcy5xdWlja0ZpbHRlck9ic2VydmFibGUgPSBmcm9tRXZlbnQodGhpcy5maWx0ZXIubmF0aXZlRWxlbWVudCwgJ2tleXVwJylcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDE1MCkpXG4gICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpbHRlclZhbCA9IHRoaXMuZmlsdGVyLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgICAgaWYgKCF0aGlzLnRhYmxlLmRhdGFTb3VyY2UgfHwgdGhpcy52YWx1ZSA9PT0gZmlsdGVyVmFsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2V0VmFsdWUoZmlsdGVyVmFsKTtcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAvLyBpZiBleGlzdHMgZmlsdGVyIHZhbHVlIGluIHN0b3JhZ2UgdGhlbiBmaWx0ZXIgcmVzdWx0IHRhYmxlXG4gICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHRoaXMudmFsdWUgfHwgdGhpcy5maWx0ZXIubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoZmlsdGVyVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSh2YWx1ZTogYW55LCB0cmlnZ2VyOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgIGlmICh0cmlnZ2VyICYmIHRoaXMudGFibGUgJiYgIXRoaXMudGFibGUucGFnZWFibGUgJiYgdGhpcy50YWJsZS5kYXRhU291cmNlKSB7XG4gICAgICB0aGlzLnRhYmxlLmRhdGFTb3VyY2UucXVpY2tGaWx0ZXIgPSB0aGlzLnZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbk1lbnVDbG9zZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgaXNDaGVja2VkKGNvbHVtbjogT0NvbHVtbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjb2x1bW4uc2VhcmNoaW5nO1xuICB9XG5cbiAgcHVibGljIG9uQ2hlY2tib3hDaGFuZ2UoY29sdW1uOiBPQ29sdW1uLCBldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICBjb2x1bW4uc2VhcmNoaW5nID0gZXZlbnQuY2hlY2tlZDtcbiAgfVxuXG4gIHB1YmxpYyBzaG93Q2FzZVNlbnNpdGl2ZUNoZWNrYm94KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRhYmxlLnNob3dDYXNlU2Vuc2l0aXZlQ2hlY2tib3goKTtcbiAgfVxuXG4gIHB1YmxpYyBhcmVBbGxDb2x1bW5zQ2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5xdWlja0ZpbHRlckNvbHVtbnMuZXZlcnkoKGNvbDogT0NvbHVtbikgPT4gY29sLnNlYXJjaGluZyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnRDb2x1bW5zQ2hlY2tlZCgpOiBudW1iZXIge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgdGhpcy5xdWlja0ZpbHRlckNvbHVtbnMuZm9yRWFjaCgoY29sOiBPQ29sdW1uKSA9PiB7XG4gICAgICBpZiAoY29sLnNlYXJjaGluZykge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdEFsbENoYW5nZShldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLnF1aWNrRmlsdGVyQ29sdW1ucy5mb3JFYWNoKChjb2w6IE9Db2x1bW4pID0+IGNvbC5zZWFyY2hpbmcgPSBldmVudC5jaGVja2VkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0ZpbHRlcmFibGVDb2x1bW4oY29sdW1uOiBPQ29sdW1uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFjb2x1bW4ucmVuZGVyZXIgfHwgKFxuICAgICAgY29sdW1uLnR5cGUgPT09ICdzdHJpbmcnIHx8XG4gICAgICBjb2x1bW4udHlwZSA9PT0gJ3RyYW5zbGF0ZScgfHxcbiAgICAgIGNvbHVtbi50eXBlID09PSAnaW50ZWdlcicgfHxcbiAgICAgIGNvbHVtbi50eXBlID09PSAncmVhbCcgfHxcbiAgICAgIGNvbHVtbi50eXBlID09PSAncGVyY2VudGFnZScgfHxcbiAgICAgIGNvbHVtbi50eXBlID09PSAnY3VycmVuY3knIHx8XG4gICAgICBjb2x1bW4udHlwZSA9PT0gJ3NlcnZpY2UnXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5zV2l0aG91dFJlbmRlcmVyRXhwcmVzc2lvbnMoY29sdW1uczogT0NvbHVtbltdKTogRXhwcmVzc2lvbltdIHtcbiAgICByZXR1cm4gY29sdW1uc1xuICAgICAgLmZpbHRlcihvQ29sID0+ICFVdGlsLmlzRGVmaW5lZChvQ29sLnJlbmRlcmVyKSlcbiAgICAgIC5tYXAob0NvbCA9PiB7XG4gICAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChvQ29sLmZpbHRlckV4cHJlc3Npb25GdW5jdGlvbikpIHtcbiAgICAgICAgICByZXR1cm4gb0NvbC5maWx0ZXJFeHByZXNzaW9uRnVuY3Rpb24ob0NvbC5hdHRyLCB0aGlzLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBEZWZhdWx0IGJlaGF2aW91clxuICAgICAgICAgIHJldHVybiBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuYnVpbGRFeHByZXNzaW9uTGlrZShvQ29sLmF0dHIsIHRoaXMudmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5zUmVuZGVyZXJFeHByZXNzaW9ucyhjb2x1bW5zOiBPQ29sdW1uW10pIHtcbiAgICByZXR1cm4gY29sdW1uc1xuICAgICAgLmZpbHRlcihvQ29sID0+IFV0aWwuaXNEZWZpbmVkKG9Db2wucmVuZGVyZXIpICYmICFVdGlsLmlzRGVmaW5lZChvQ29sLmZpbHRlckV4cHJlc3Npb25GdW5jdGlvbikpXG4gICAgICAubWFwKG9Db2wgPT4ge1xuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQob0NvbC5yZW5kZXJlci5nZXRGaWx0ZXJFeHByZXNzaW9uKSkge1xuICAgICAgICAgIHJldHVybiBvQ29sLnJlbmRlcmVyLmdldEZpbHRlckV4cHJlc3Npb24odGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGVmYXVsdCBiZWhhdmlvdXJcbiAgICAgICAgcmV0dXJuIEZpbHRlckV4cHJlc3Npb25VdGlscy5idWlsZEV4cHJlc3Npb25MaWtlKG9Db2wuYXR0ciwgdGhpcy52YWx1ZSk7XG4gICAgICB9KTtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicXVpY2tGaWx0ZXJcIiBmeExheW91dD1cInJvd1wiPlxuXG4gIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgIDxpbnB1dCBtYXRJbnB1dCAjZmlsdGVyIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIHwgb1RyYW5zbGF0ZSB9fVwiPlxuICAgIDxkaXYgbWF0UHJlZml4PlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTpzZWFyY2hcIiBbbWF0QmFkZ2VdPVwiYXJlQWxsQ29sdW1uc0NoZWNrZWQoKT8nJzpnZXRDb3VudENvbHVtbnNDaGVja2VkKClcIiBtYXRCYWRnZVNpemU9XCJzbWFsbFwiPjwvbWF0LWljb24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiAobWVudUNsb3NlZCk9XCJvbk1lbnVDbG9zZWQoKVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic2VhcmNoLWljb25cIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cIm8tdGFibGUtcXVpY2tmaWx0ZXItbWVudVwiPlxuICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwiY2hlY2tib3gtY29udGFpbmVyXCI+XG5cbiAgICAgICAgPG1hdC1jaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgW2NoZWNrZWRdPVwiYXJlQWxsQ29sdW1uc0NoZWNrZWQoKVwiIChjaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgIHt7ICdTRUxFQ1RfQUxMJyB8IG9UcmFuc2xhdGV9fVxuICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHF1aWNrRmlsdGVyQ29sdW1uc1wiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIFtjaGVja2VkXT1cImlzQ2hlY2tlZChjb2x1bW4pXCIgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKGNvbHVtbiwgJGV2ZW50KVwiPlxuICAgICAgICAgICAge3sgY29sdW1uLnRpdGxlIHwgb1RyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0Nhc2VTZW5zaXRpdmVDaGVja2JveCgpXCI+XG4gICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgW2NoZWNrZWRdPVwib1RhYmxlT3B0aW9ucy5maWx0ZXJDYXNlU2Vuc2l0aXZlXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib1RhYmxlT3B0aW9ucy5maWx0ZXJDYXNlU2Vuc2l0aXZlID0gJGV2ZW50LmNoZWNrZWRcIj5cbiAgICAgICAgICAgIHt7ICdUQUJMRS5GSUxURVIuQ0FTRV9TRU5TSVRJVkUnIHwgb1RyYW5zbGF0ZX19XG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtbWVudT5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PlxuIl19
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1xdWlja2ZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2hlYWRlci90YWJsZS1xdWlja2ZpbHRlci9vLXRhYmxlLXF1aWNrZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLXF1aWNrZmlsdGVyL28tdGFibGUtcXVpY2tmaWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFHUixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFLcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7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Q0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQzthQUMvRixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDVixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO2dCQUNyRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3REO1lBRUQsT0FBTyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O3dIQWpOVSwwQkFBMEIsb0VBOEIzQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDOzRHQTlCM0IsMEJBQTBCLHVZQ2xEdkMsK3ZEQW9DQTs0RkRjYSwwQkFBMEI7a0JBWnRDLFNBQVM7K0JBQ0UscUJBQXFCLFVBR3ZCLGtDQUFrQyxXQUNqQyxtQ0FBbUMsaUJBQzdCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0osNkJBQTZCLEVBQUUsTUFBTTtxQkFDdEM7OzBCQWdDRSxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7NENBZi9CLE1BQU07c0JBRFosU0FBUzt1QkFBQyxRQUFRO2dCQUlaLE9BQU87c0JBRGIsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTWF0TWVudSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE9fSU5QVVRTX09QVElPTlMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb25maWcvYXBwLWNvbmZpZyc7XG5pbXBvcnQgdHlwZSB7IE9UYWJsZU9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9pbnRlcmZhY2VzL28tdGFibGUtb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBPVGFibGVRdWlja2ZpbHRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvby10YWJsZS1xdWlja2ZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMvZXhwcmVzc2lvbi50eXBlJztcbmltcG9ydCB0eXBlIHsgT0lucHV0c09wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy9vLWlucHV0cy1vcHRpb25zLnR5cGUnO1xuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvblV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC9maWx0ZXItZXhwcmVzc2lvbi51dGlscyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB0eXBlIHsgT0NvbHVtbiB9IGZyb20gJy4uLy4uLy4uL2NvbHVtbi9vLWNvbHVtbi5jbGFzcyc7XG5pbXBvcnQgeyBPVGFibGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vby10YWJsZS1iYXNlLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fVEFCTEVfUVVJQ0tGSUxURVIgPSBbXG4gICdwbGFjZWhvbGRlcidcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19UQUJMRV9RVUlDS0ZJTFRFUiA9IFtcbiAgJ29uQ2hhbmdlJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1xdWlja2ZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLXRhYmxlLXF1aWNrZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby10YWJsZS1xdWlja2ZpbHRlci5jb21wb25lbnQuc2NzcyddLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fVEFCTEVfUVVJQ0tGSUxURVIsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX1FVSUNLRklMVEVSLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby10YWJsZS1xdWlja2ZpbHRlcl0nOiAndHJ1ZScsXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlUXVpY2tmaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPVGFibGVRdWlja2ZpbHRlciwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByb3RlY3RlZCBfcGxhY2Vob2xkZXI6IHN0cmluZyA9IHVuZGVmaW5lZDtcblxuICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cblxuICBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgQFZpZXdDaGlsZCgnZmlsdGVyJylcbiAgcHVibGljIGZpbHRlcjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdtZW51JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIG1hdE1lbnU6IE1hdE1lbnU7XG5cbiAgcHVibGljIHZhbHVlOiBzdHJpbmc7XG4gIHB1YmxpYyBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBwdWJsaWMgZm9ybUNvbnRyb2w7XG5cbiAgcHJvdGVjdGVkIG9JbnB1dHNPcHRpb25zOiBPSW5wdXRzT3B0aW9ucztcbiAgcHJvdGVjdGVkIHF1aWNrRmlsdGVyT2JzZXJ2YWJsZTogU3Vic2NyaXB0aW9uO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBlbFJlZjogRWxlbWVudFJlZixcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT1RhYmxlQmFzZSkpIHByb3RlY3RlZCB0YWJsZTogT1RhYmxlQmFzZVxuICApIHtcbiAgICB0aGlzLmZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGFibGUucmVnaXN0ZXJRdWlja0ZpbHRlcih0aGlzKTtcbiAgICAvLyB3b3JrYXJvdW5kIGJlY2F1c2UgJ3gtcG9zaXRpb249XCJiZWZvcmVcIicgd2FzIG5vdCB3b3JraW5nIGluIHRoZSB0ZW1wbGF0ZVxuICAgIHRoaXMubWF0TWVudS54UG9zaXRpb24gPSAnYmVmb3JlJztcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplRXZlbnRGaWx0ZXIoKTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLm9JbnB1dHNPcHRpb25zID0gdGhpcy5pbmplY3Rvci5nZXQoT19JTlBVVFNfT1BUSU9OUyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5vSW5wdXRzT3B0aW9ucyA9IHt9O1xuICAgIH1cbiAgICBVdGlsLnBhcnNlT0lucHV0c09wdGlvbnModGhpcy5lbFJlZiwgdGhpcy5vSW5wdXRzT3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucXVpY2tGaWx0ZXJPYnNlcnZhYmxlKSB7XG4gICAgICB0aGlzLnF1aWNrRmlsdGVyT2JzZXJ2YWJsZS51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBvVGFibGVPcHRpb25zKCk6IE9UYWJsZU9wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLnRhYmxlLm9UYWJsZU9wdGlvbnM7XG4gIH1cblxuICBnZXQgcXVpY2tGaWx0ZXJDb2x1bW5zKCk6IE9Db2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUub1RhYmxlT3B0aW9ucy5jb2x1bW5zLmZpbHRlcihvQ29sID0+IHtcbiAgICAgIC8vIENIRUNLOiBXaHkgY29sdW1ucyB3aXRoIHJlbmRlcmVycyBhcmUgbm90IGZpbHRlcmVkP1xuICAgICAgLy8gcmV0dXJuIG9Db2wuc2VhcmNoYWJsZSAmJiBvQ29sLnZpc2libGUgJiYgIVV0aWwuaXNEZWZpbmVkKG9Db2wucmVuZGVyZXIpO1xuICAgICAgcmV0dXJuIG9Db2wuc2VhcmNoYWJsZSAmJiBvQ29sLnZpc2libGU7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgZmlsdGVyRXhwcmVzc2lvbigpOiBFeHByZXNzaW9uIHtcbiAgICBsZXQgcmVzdWx0OiBFeHByZXNzaW9uID0gdGhpcy5nZXRVc2VyRmlsdGVyKCk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChyZXN1bHQpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMudmFsdWUpICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZXhwcmVzc2lvbnM6IEV4cHJlc3Npb25bXSA9IFtdO1xuXG4gICAgICBjb25zdCBzZWFyY2hpbmdDb2xzID0gdGhpcy5vVGFibGVPcHRpb25zLmNvbHVtbnMuZmlsdGVyKG9Db2wgPT4gb0NvbC5zZWFyY2hpbmcgJiYgb0NvbC52aXNpYmxlICYmIG9Db2wuc2VhcmNoYWJsZSAmJiB0aGlzLmlzRmlsdGVyYWJsZUNvbHVtbihvQ29sKSk7XG4gICAgICBleHByZXNzaW9ucy5wdXNoKC4uLnRoaXMuZ2V0Q29sdW1uc1dpdGhvdXRSZW5kZXJlckV4cHJlc3Npb25zKHNlYXJjaGluZ0NvbHMpKTtcblxuICAgICAgY29uc3QgcmVuZGVyZXJzRXhwciA9IHRoaXMuZ2V0Q29sdW1uc1JlbmRlcmVyRXhwcmVzc2lvbnMoc2VhcmNoaW5nQ29scyk7XG5cbiAgICAgIGNvbnN0IG5vdE51bGxFeHByZXNzaW9ucyA9IHJlbmRlcmVyc0V4cHIuZmlsdGVyKGV4cHIgPT4gVXRpbC5pc0RlZmluZWQoZXhwcikpO1xuICAgICAgaWYgKGV4cHJlc3Npb25zLmxlbmd0aCA9PT0gMCAmJiBub3ROdWxsRXhwcmVzc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIEFsbCBmaWx0ZXJzIGluIHRoZSByZW5kZXJlciBhcmUgZW1wdHkgYW5kIHRoZXJlIGFyZSBubyBvdGhlciBmaWx0ZXJzIGNvbmZpZ3VyZWQsXG4gICAgICAgIC8vIHNvIHdlIGFscmVhZHkga25vdyB0aGF0IHRoZSB0YWJsZSBzaG91bGQgbm90IGhhdmUgYW55IGluZm9ybWF0aW9uIGJ1dFxuICAgICAgICAvLyBpdCB3b3VsZCBtYWtlIGEgcXVlcnkgd2l0aCBlbXB0eSBmaWx0ZXJzIGFuZCByZXRyaWV2ZSBpbmZvcm1hdGlvbiBub3QgY29uc2lzdGVudCB3aXRoIHRoZSBjb25maWd1cmVkIHF1aWNrZmlsdGVyIHZhbHVlLFxuICAgICAgICAvLyBzbyB3ZSBmb3JjZSB0byBzdG9wIHRoZSBxdWVyeSBhbmQgc2V0IGFuIGVtcHR5IGFycmF5IG9uIHRoZSB0YWJsZVxuICAgICAgICB0aGlzLnRhYmxlLmFib3J0UXVlcnkubmV4dCh0cnVlKTtcbiAgICAgIH1cbiAgICAgIGV4cHJlc3Npb25zLnB1c2goLi4ubm90TnVsbEV4cHJlc3Npb25zKTtcblxuICAgICAgaWYgKGV4cHJlc3Npb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0ID0gZXhwcmVzc2lvbnMucmVkdWNlKChhLCBiKSA9PiBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuYnVpbGRDb21wbGV4RXhwcmVzc2lvbihhLCBiLCBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuT1BfT1IpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVc2VyRmlsdGVyKCk6IEV4cHJlc3Npb24ge1xuICAgIGxldCByZXN1bHQ6IEV4cHJlc3Npb247XG4gICAgaWYgKHRoaXMudGFibGUucXVpY2tGaWx0ZXJDYWxsYmFjayBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICBjb25zdCB1c2VyRmlsdGVyID0gdGhpcy50YWJsZS5xdWlja0ZpbHRlckNhbGxiYWNrKHRoaXMudmFsdWUpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHVzZXJGaWx0ZXIpICYmIEZpbHRlckV4cHJlc3Npb25VdGlscy5pbnN0YW5jZW9mRXhwcmVzc2lvbih1c2VyRmlsdGVyKSkge1xuICAgICAgICByZXN1bHQgPSAodXNlckZpbHRlciBhcyBFeHByZXNzaW9uKTtcbiAgICAgIH0gZWxzZSBpZiAoVXRpbC5pc0RlZmluZWQodXNlckZpbHRlcikpIHtcbiAgICAgICAgcmVzdWx0ID0gRmlsdGVyRXhwcmVzc2lvblV0aWxzLmJ1aWxkRXhwcmVzc2lvbkZyb21PYmplY3QodXNlckZpbHRlcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZUV2ZW50RmlsdGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpbHRlciAmJiAhdGhpcy5xdWlja0ZpbHRlck9ic2VydmFibGUpIHtcbiAgICAgIHRoaXMucXVpY2tGaWx0ZXJPYnNlcnZhYmxlID0gZnJvbUV2ZW50KHRoaXMuZmlsdGVyLm5hdGl2ZUVsZW1lbnQsICdrZXl1cCcpXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxNTApKVxuICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJWYWwgPSB0aGlzLmZpbHRlci5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICAgIGlmICghdGhpcy50YWJsZS5kYXRhU291cmNlIHx8IHRoaXMudmFsdWUgPT09IGZpbHRlclZhbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNldFZhbHVlKGZpbHRlclZhbCk7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICB9KTtcblxuICAgICAgLy8gaWYgZXhpc3RzIGZpbHRlciB2YWx1ZSBpbiBzdG9yYWdlIHRoZW4gZmlsdGVyIHJlc3VsdCB0YWJsZVxuICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB0aGlzLnZhbHVlIHx8IHRoaXMuZmlsdGVyLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGZpbHRlclZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0VmFsdWUodmFsdWU6IGFueSwgdHJpZ2dlcjogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICBpZiAodHJpZ2dlciAmJiB0aGlzLnRhYmxlICYmICF0aGlzLnRhYmxlLnBhZ2VhYmxlICYmIHRoaXMudGFibGUuZGF0YVNvdXJjZSkge1xuICAgICAgdGhpcy50YWJsZS5kYXRhU291cmNlLnF1aWNrRmlsdGVyID0gdGhpcy52YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25NZW51Q2xvc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGlzQ2hlY2tlZChjb2x1bW46IE9Db2x1bW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gY29sdW1uLnNlYXJjaGluZztcbiAgfVxuXG4gIHB1YmxpYyBvbkNoZWNrYm94Q2hhbmdlKGNvbHVtbjogT0NvbHVtbiwgZXZlbnQ6IE1hdENoZWNrYm94Q2hhbmdlKTogdm9pZCB7XG4gICAgY29sdW1uLnNlYXJjaGluZyA9IGV2ZW50LmNoZWNrZWQ7XG4gIH1cblxuICBwdWJsaWMgc2hvd0Nhc2VTZW5zaXRpdmVDaGVja2JveCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZS5zaG93Q2FzZVNlbnNpdGl2ZUNoZWNrYm94KCk7XG4gIH1cblxuICBwdWJsaWMgYXJlQWxsQ29sdW1uc0NoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucXVpY2tGaWx0ZXJDb2x1bW5zLmV2ZXJ5KChjb2w6IE9Db2x1bW4pID0+IGNvbC5zZWFyY2hpbmcpO1xuICB9XG5cbiAgcHVibGljIGdldENvdW50Q29sdW1uc0NoZWNrZWQoKTogbnVtYmVyIHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIHRoaXMucXVpY2tGaWx0ZXJDb2x1bW5zLmZvckVhY2goKGNvbDogT0NvbHVtbikgPT4ge1xuICAgICAgaWYgKGNvbC5zZWFyY2hpbmcpIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RBbGxDaGFuZ2UoZXZlbnQ6IE1hdENoZWNrYm94Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5xdWlja0ZpbHRlckNvbHVtbnMuZm9yRWFjaCgoY29sOiBPQ29sdW1uKSA9PiBjb2wuc2VhcmNoaW5nID0gZXZlbnQuY2hlY2tlZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNGaWx0ZXJhYmxlQ29sdW1uKGNvbHVtbjogT0NvbHVtbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhY29sdW1uLnJlbmRlcmVyIHx8IChcbiAgICAgIGNvbHVtbi50eXBlID09PSAnc3RyaW5nJyB8fFxuICAgICAgY29sdW1uLnR5cGUgPT09ICd0cmFuc2xhdGUnIHx8XG4gICAgICBjb2x1bW4udHlwZSA9PT0gJ2ludGVnZXInIHx8XG4gICAgICBjb2x1bW4udHlwZSA9PT0gJ3JlYWwnIHx8XG4gICAgICBjb2x1bW4udHlwZSA9PT0gJ3BlcmNlbnRhZ2UnIHx8XG4gICAgICBjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fFxuICAgICAgY29sdW1uLnR5cGUgPT09ICdzZXJ2aWNlJyB8fFxuICAgICAgY29sdW1uLnR5cGUgPT09ICdkYXRlJ1xuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q29sdW1uc1dpdGhvdXRSZW5kZXJlckV4cHJlc3Npb25zKGNvbHVtbnM6IE9Db2x1bW5bXSk6IEV4cHJlc3Npb25bXSB7XG4gICAgcmV0dXJuIGNvbHVtbnNcbiAgICAgIC5maWx0ZXIob0NvbCA9PiAhVXRpbC5pc0RlZmluZWQob0NvbC5yZW5kZXJlcikpXG4gICAgICAubWFwKG9Db2wgPT4ge1xuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQob0NvbC5maWx0ZXJFeHByZXNzaW9uRnVuY3Rpb24pKSB7XG4gICAgICAgICAgcmV0dXJuIG9Db2wuZmlsdGVyRXhwcmVzc2lvbkZ1bmN0aW9uKG9Db2wuYXR0ciwgdGhpcy52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRGVmYXVsdCBiZWhhdmlvdXJcbiAgICAgICAgICByZXR1cm4gRmlsdGVyRXhwcmVzc2lvblV0aWxzLmJ1aWxkRXhwcmVzc2lvbkxpa2Uob0NvbC5hdHRyLCB0aGlzLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q29sdW1uc1JlbmRlcmVyRXhwcmVzc2lvbnMoY29sdW1uczogT0NvbHVtbltdKSB7XG4gICAgcmV0dXJuIGNvbHVtbnNcbiAgICAgIC5maWx0ZXIob0NvbCA9PiBVdGlsLmlzRGVmaW5lZChvQ29sLnJlbmRlcmVyKSAmJiAhVXRpbC5pc0RlZmluZWQob0NvbC5maWx0ZXJFeHByZXNzaW9uRnVuY3Rpb24pKVxuICAgICAgLm1hcChvQ29sID0+IHtcbiAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKG9Db2wucmVuZGVyZXIuZ2V0RmlsdGVyRXhwcmVzc2lvbikpIHtcbiAgICAgICAgICByZXR1cm4gb0NvbC5yZW5kZXJlci5nZXRGaWx0ZXJFeHByZXNzaW9uKHRoaXMudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIERlZmF1bHQgYmVoYXZpb3VyXG4gICAgICAgIHJldHVybiBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuYnVpbGRFeHByZXNzaW9uTGlrZShvQ29sLmF0dHIsIHRoaXMudmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInF1aWNrRmlsdGVyXCIgZnhMYXlvdXQ9XCJyb3dcIj5cblxuICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICA8aW5wdXQgbWF0SW5wdXQgI2ZpbHRlciBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgcGxhY2Vob2xkZXI9XCJ7eyBwbGFjZWhvbGRlciB8IG9UcmFuc2xhdGUgfX1cIj5cbiAgICA8ZGl2IG1hdFByZWZpeD5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6c2VhcmNoXCIgW21hdEJhZGdlXT1cImFyZUFsbENvbHVtbnNDaGVja2VkKCk/Jyc6Z2V0Q291bnRDb2x1bW5zQ2hlY2tlZCgpXCIgbWF0QmFkZ2VTaXplPVwic21hbGxcIj48L21hdC1pY29uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgKG1lbnVDbG9zZWQpPVwib25NZW51Q2xvc2VkKClcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInNlYXJjaC1pY29uXCI+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJvLXRhYmxlLXF1aWNrZmlsdGVyLW1lbnVcIj5cbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lclwiPlxuXG4gICAgICAgIDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIFtjaGVja2VkXT1cImFyZUFsbENvbHVtbnNDaGVja2VkKClcIiAoY2hhbmdlKT1cIm9uU2VsZWN0QWxsQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgICB7eyAnU0VMRUNUX0FMTCcgfCBvVHJhbnNsYXRlfX1cbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBxdWlja0ZpbHRlckNvbHVtbnNcIj5cbiAgICAgICAgICA8bWF0LWNoZWNrYm94IChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBbY2hlY2tlZF09XCJpc0NoZWNrZWQoY29sdW1uKVwiIChjaGFuZ2UpPVwib25DaGVja2JveENoYW5nZShjb2x1bW4sICRldmVudClcIj5cbiAgICAgICAgICAgIHt7IGNvbHVtbi50aXRsZSB8IG9UcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dDYXNlU2Vuc2l0aXZlQ2hlY2tib3goKVwiPlxuICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIFtjaGVja2VkXT1cIm9UYWJsZU9wdGlvbnMuZmlsdGVyQ2FzZVNlbnNpdGl2ZVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9UYWJsZU9wdGlvbnMuZmlsdGVyQ2FzZVNlbnNpdGl2ZSA9ICRldmVudC5jaGVja2VkXCI+XG4gICAgICAgICAgICB7eyAnVEFCTEUuRklMVEVSLkNBU0VfU0VOU0lUSVZFJyB8IG9UcmFuc2xhdGV9fVxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LW1lbnU+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  export class OTableBase {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1iYXNlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvby10YWJsZS1iYXNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFCQSxNQUFNLE9BQWdCLFVBQVU7Q0FnRy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSBcInJ4anMvaW50ZXJuYWwvQmVoYXZpb3JTdWJqZWN0XCI7XG5pbXBvcnQgdHlwZSB7IFF1aWNrRmlsdGVyRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vdHlwZXMvcXVpY2stZmlsdGVyLWZ1bmN0aW9uLnR5cGVcIjtcbmltcG9ydCB0eXBlIHsgT0NvbHVtbiB9IGZyb20gXCIuL2NvbHVtbi9vLWNvbHVtbi5jbGFzc1wiO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEV2ZW50RW1pdHRlciwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBPUGVybWlzc2lvbnMgfSBmcm9tIFwiLi4vLi4vdHlwZXMvby1wZXJtaXNzaW9ucy50eXBlXCI7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIjtcbmltcG9ydCB0eXBlIHsgT1RhYmxlQnV0dG9ucyB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL28tdGFibGUtYnV0dG9ucy5pbnRlcmZhY2VcIjtcbmltcG9ydCB0eXBlIHsgT1RhYmxlUXVpY2tmaWx0ZXIgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9vLXRhYmxlLXF1aWNrZmlsdGVyLmludGVyZmFjZVwiO1xuaW1wb3J0IHR5cGUgeyBPVGFibGVNZW51IH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvby10YWJsZS1tZW51LmludGVyZmFjZVwiO1xuaW1wb3J0IHR5cGUgeyBPQ29sdW1uVmFsdWVGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdGFibGUvby1jb2x1bW4tdmFsdWUtZmlsdGVyLnR5cGVcIjtcbmltcG9ydCB0eXBlIHsgT0NvbnRleHRNZW51Q29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbnRleHRtZW51L28tY29udGV4dC1tZW51LmNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBFeHByZXNzaW9uLCBPRmlsdGVyRGVmaW5pdGlvbiwgT0dyb3VwZWRDb2x1bW5UeXBlcywgT1RhYmxlTWVudVBlcm1pc3Npb25zLCBTUUxPcmRlciB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgdHlwZSB7IE9UYWJsZUNvbXBvbmVudFN0YXRlQ2xhc3MgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc3RhdGUvby10YWJsZS1jb21wb25lbnQtc3RhdGUuY2xhc3NcIjtcbmltcG9ydCB0eXBlIHsgT1RhYmxlSGVhZGVyQ29tcG9uZW50IH0gZnJvbSBcIi4vZXh0ZW5zaW9ucy9oZWFkZXIvdGFibGUtaGVhZGVyL28tdGFibGUtaGVhZGVyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBNYXRQYWdpbmF0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yXCI7XG5pbXBvcnQgeyBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveFwiO1xuaW1wb3J0IHR5cGUgeyBPVGFibGVDb2x1bW5TZWxlY3RBbGxEaXJlY3RpdmUgfSBmcm9tIFwiLi9leHRlbnNpb25zL2hlYWRlci90YWJsZS1jb2x1bW4tc2VsZWN0LWFsbC9vLXRhYmxlLWNvbHVtbi1zZWxlY3QtYWxsLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHR5cGUgeyBPRmlsdGVyQnVpbGRlckNvbXBvbmVudCB9IGZyb20gXCIuLi9maWx0ZXItYnVpbGRlci9vLWZpbHRlci1idWlsZGVyLmNvbXBvbmVudFwiO1xuXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBPVGFibGVCYXNlIHtcbiAgYWJzdHJhY3QgZ2V0TWVudVBlcm1pc3Npb25zKCk6IE9UYWJsZU1lbnVQZXJtaXNzaW9ucztcbiAgYWJzdHJhY3Qgcm93SGVpZ2h0T2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBhYnN0cmFjdCBpbml0aWFsaXplQ2hlY2tib3hDb2x1bW4oKTtcbiAgdmlzaWJsZUV4cG9ydERpYWxvZ0J1dHRvbnM6IHN0cmluZztcbiAgc2VydmljZTogc3RyaW5nO1xuICBleHBvcnRTZXJ2aWNlVHlwZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgZXhwb3J0T3B0c1RlbXBsYXRlOiBhbnk7XG4gIHZpc2libGVDb2xBcnJheTogc3RyaW5nW107XG4gIGFic3RyYWN0IHJlaW5pdGlhbGl6ZVNvcnRDb2x1bW5zKHNvcnRDb2x1bW5zPzogU1FMT3JkZXJbXSk7XG4gIGFic3RyYWN0IHNldEdyb3VwQ29sdW1ucyh2YWx1ZTogYW55W10pO1xuICBhYnN0cmFjdCBjbGVhckNvbHVtbkZpbHRlcnModHJpZ2dlckRhdGFzb3VyY2VVcGRhdGU/OiBib29sZWFuLCBjb2x1bW5zQXR0cj86IHN0cmluZ1tdKTogdm9pZFxuICBhYnN0cmFjdCByZWZyZXNoQ29sdW1uc1dpZHRoRnJvbUxvY2FsU3RvcmFnZSgpO1xuICBhYnN0cmFjdCByb3dIZWlnaHQ6IHN0cmluZztcbiAgYWJzdHJhY3QgZ3JvdXBlZENvbHVtblR5cGVzOiBPR3JvdXBlZENvbHVtblR5cGVzW107XG4gIGFic3RyYWN0IHNldEdyb3VwZWRDb2x1bW5UeXBlcyh2YWx1ZTogT0dyb3VwZWRDb2x1bW5UeXBlc1tdKVxuICBhYnN0cmFjdCBzdGF0ZTogT1RhYmxlQ29tcG9uZW50U3RhdGVDbGFzcztcbiAgYWJzdHJhY3Qgc3RvcmVGaWx0ZXJJblN0YXRlKGFyZzogT0ZpbHRlckRlZmluaXRpb24pO1xuICBhYnN0cmFjdCBzZXRGaWx0ZXJzQ29uZmlndXJhdGlvbigpO1xuICBhYnN0cmFjdCByZWxvYWRQYWdpbmF0ZWREYXRhRnJvbVN0YXJ0KGNsZWFyU2VsZWN0ZWRJdGVtcz86IGJvb2xlYW4pO1xuICBhYnN0cmFjdCBjbGVhckZpbHRlcnMoKTogdm9pZDtcbiAgYWJzdHJhY3QgcmVzZXRDb2x1bW5zV2lkdGgoKTtcbiAgYWJzdHJhY3QgY29tcG9uZW50U3RhdGVTZXJ2aWNlOiBhbnk7XG4gIGFic3RyYWN0IGFwcGx5RGVmYXVsdENvbmZpZ3VyYXRpb24oKTtcbiAgYWJzdHJhY3QgYXBwbHlDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25OYW1lOiBzdHJpbmcpO1xuXG4gIGFic3RyYWN0IGdldENvbHVtbnNOb3RJbmNsdWRlZCgpOiBzdHJpbmdbXVxuICBhYnN0cmFjdCBnZXRDb21wb25lbnRGaWx0ZXIoZXhpc3RpbmdGaWx0ZXI/OiBhbnkpOiBhbnk7XG4gIGFic3RyYWN0IGVudGl0eTogc3RyaW5nO1xuICBhYnN0cmFjdCBnZXRTcWxUeXBlcygpO1xuICBhYnN0cmFjdCBnZXRDb2x1bW5OYW1lcyhjb2x1bW5zOiBzdHJpbmdbXSk6IHsgW2NvbHVtbklkOiBzdHJpbmddOiBzdHJpbmc7IH07XG4gIGFic3RyYWN0IHNob3dDYXNlU2Vuc2l0aXZlQ2hlY2tib3goKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgcGFnZWFibGU6IGJvb2xlYW47XG4gIGFic3RyYWN0IGRhdGFTb3VyY2U6IGFueTtcbiAgYWJzdHJhY3QgcXVpY2tGaWx0ZXJDYWxsYmFjazogUXVpY2tGaWx0ZXJGdW5jdGlvbjtcbiAgYWJzdHJhY3QgYWJvcnRRdWVyeTogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICBhYnN0cmFjdCBvVGFibGVPcHRpb25zOiBhbnk7XG4gIGFic3RyYWN0IHJlZ2lzdGVyUXVpY2tGaWx0ZXIoYXJnOiBhbnkpOiB2b2lkO1xuICBhYnN0cmFjdCBnZXRPQ29sdW1uRnJvbVRoKHRoOiBhbnkpOiBPQ29sdW1uO1xuICBhYnN0cmFjdCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gIGFic3RyYWN0IGdldENsaWVudFdpZHRoQ29sdW1uKGNvbDogT0NvbHVtbik6IG51bWJlcjtcbiAgYWJzdHJhY3QgaG9yaXpvbnRhbFNjcm9sbDogYm9vbGVhbjtcbiAgYWJzdHJhY3QgZ2V0QWN0aW9uc1Blcm1pc3Npb25zKCk6IE9QZXJtaXNzaW9uc1tdO1xuICBhYnN0cmFjdCBzZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPEVsZW1lbnQ+O1xuICBhYnN0cmFjdCByZWdpc3Rlck9UYWJsZUJ1dHRvbnMoYXJnOiBPVGFibGVCdXR0b25zKTtcbiAgYWJzdHJhY3QgYWRkKCk7XG4gIGFic3RyYWN0IHJlbG9hZERhdGEoKTtcbiAgYWJzdHJhY3QgcmVtb3ZlKCk7XG4gIGFic3RyYWN0IG9uVXBkYXRlU2Nyb2xsZWRTdGF0ZTogRXZlbnRFbWl0dGVyPGFueT47XG4gIGFic3RyYWN0IHJvd1dpZHRoO1xuICBhYnN0cmFjdCBvbkNvbnRlbnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBhYnN0cmFjdCBzdGF0aWNEYXRhOiBBcnJheTxhbnk+O1xuICBhYnN0cmFjdCBvVGFibGVRdWlja0ZpbHRlckNvbXBvbmVudDogT1RhYmxlUXVpY2tmaWx0ZXI7XG4gIGFic3RyYWN0IHF1aWNrRmlsdGVyOiBib29sZWFuO1xuICBhYnN0cmFjdCBncm91cGVkQ29sdW1uc0FycmF5OiBzdHJpbmdbXTtcbiAgYWJzdHJhY3QgaXNDb2x1bW5GaWx0ZXJhYmxlKGNvbHVtbjogT0NvbHVtbik6IGJvb2xlYW47XG4gIGFic3RyYWN0IG9wZW5Db2x1bW5GaWx0ZXJEaWFsb2coY29sdW1uOiBPQ29sdW1uLCBldmVudDogRXZlbnQpO1xuICBhYnN0cmFjdCBpc0NvbHVtbkZpbHRlcnNBY3RpdmU6IGJvb2xlYW47XG4gIGFic3RyYWN0IG9UYWJsZU1lbnU6IE9UYWJsZU1lbnU7XG4gIGFic3RyYWN0IGdldE9Db2x1bW4oYXR0cjogc3RyaW5nKTogT0NvbHVtbjtcbiAgYWJzdHJhY3QgZ3JvdXBCeUNvbHVtbihjb2x1bW46IE9Db2x1bW4sIHR5cGU/OiBzdHJpbmcpO1xuICBhYnN0cmFjdCB1bkdyb3VwQnlDb2x1bW4oY29sdW1uOiBPQ29sdW1uKTtcbiAgYWJzdHJhY3QgdW5Hcm91cEJ5QWxsQ29sdW1ucygpO1xuICBhYnN0cmFjdCBmaWx0ZXJCeUNvbHVtbihjb2x1bW5WYWx1ZUZpbHRlcjogT0NvbHVtblZhbHVlRmlsdGVyKTtcbiAgYWJzdHJhY3QgcmVmcmVzaCgpO1xuICBhYnN0cmFjdCBjb3B5U2VsZWN0aW9uKCk7XG4gIGFic3RyYWN0IGNvcHlBbGwoKTtcbiAgYWJzdHJhY3Qgc2hvd0FuZFNlbGVjdEFsbENoZWNrYm94KCk7XG4gIGFic3RyYWN0IGRvSGFuZGxlQ2xpY2socm93OiBhbnksIGNvbHVtbjogc3RyaW5nLCByb3dJbmRleDogbnVtYmVyLCAkZXZlbnQ6IE1vdXNlRXZlbnQpO1xuICBhYnN0cmFjdCB2aWV3RGV0YWlsKGl0ZW06IGFueSk6IHZvaWQ7XG4gIGFic3RyYWN0IGNsZWFyU2VsZWN0aW9uKCk6IHZvaWQ7XG4gIGFic3RyYWN0IGlzU2VsZWN0aW9uTW9kZU11bHRpcGxlKCk6IGJvb2xlYW47XG4gIGFic3RyYWN0IHJlZ2lzdGVyQ29udGV4dE1lbnUodmFsdWU6IE9Db250ZXh0TWVudUNvbXBvbmVudCk6IHZvaWQ7XG4gIGFic3RyYWN0IGdyb3VwYWJsZTogYm9vbGVhbjtcbiAgYWJzdHJhY3Qgc2VsZWN0QWxsQ2hlY2tib3g6IGJvb2xlYW47XG4gIGFic3RyYWN0IGlzU2VsZWN0aW9uTW9kZU5vbmUoKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuXG5cbiAgYWJzdHJhY3Qgbm9uSGlkYWJsZUNvbHVtbnM6IHN0cmluZztcbiAgYWJzdHJhY3QgdmlzaWJsZUNvbHVtbnM6IHN0cmluZztcbiAgYWJzdHJhY3Qgc29ydENvbEFycmF5OiBTUUxPcmRlcltdO1xuICBhYnN0cmFjdCBjdXJyZW50UGFnZTogbnVtYmVyO1xuICBhYnN0cmFjdCBxdWVyeVJvd3M6IG51bWJlcjtcbiAgYWJzdHJhY3QgcmVzaXphYmxlOiBib29sZWFuXG4gIGFic3RyYWN0IHJlZ2lzdGVyVGFibGVIZWFkZXJzKHRhYmxlSGVhZGVyOiBPVGFibGVIZWFkZXJDb21wb25lbnQpO1xuICBhYnN0cmFjdCBzaG93QnV0dG9uc1RleHQ6IGJvb2xlYW47XG4gIGFic3RyYWN0IG1hdHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuICBhYnN0cmFjdCBpc0luZGV0ZXJtaW5hdGUoKTogYm9vbGVhbjtcbiAgYWJzdHJhY3Qgb25GaWx0ZXJCeUNvbHVtbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT47XG4gIGFic3RyYWN0IG1hc3RlclRvZ2dsZShldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpOiB2b2lkO1xuICBhYnN0cmFjdCB0YWJsZUNvbHVtblNlbGVjdEFsbENvbnRlbnRDaGlsZDogT1RhYmxlQ29sdW1uU2VsZWN0QWxsRGlyZWN0aXZlO1xuXG4gIGFic3RyYWN0IGdldENvbHVtbkZpbHRlcnNFeHByZXNzaW9uKCk6IEV4cHJlc3Npb247XG4gIGFic3RyYWN0IGNvbHVtbnM6IHN0cmluZztcbiAgYWJzdHJhY3QgZ2V0UGFyZW50S2V5c1ZhbHVlcygpO1xuICBhYnN0cmFjdCBmaWx0ZXJCdWlsZGVyOiBPRmlsdGVyQnVpbGRlckNvbXBvbmVudDtcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1iYXNlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvby10YWJsZS1iYXNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdCQSxNQUFNLE9BQWdCLFVBQVU7Q0F1Ry9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEV2ZW50RW1pdHRlciwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcy9pbnRlcm5hbC9CZWhhdmlvclN1YmplY3QnO1xuXG5pbXBvcnQgdHlwZSB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvc25hY2tiYXIuc2VydmljZSc7XG5cbmltcG9ydCB0eXBlIHsgUXVpY2tGaWx0ZXJGdW5jdGlvbiB9IGZyb20gXCIuLi8uLi90eXBlcy9xdWljay1maWx0ZXItZnVuY3Rpb24udHlwZVwiO1xuaW1wb3J0IHR5cGUgeyBPQ29sdW1uIH0gZnJvbSBcIi4vY29sdW1uL28tY29sdW1uLmNsYXNzXCI7XG5pbXBvcnQgdHlwZSB7IE9QZXJtaXNzaW9ucyB9IGZyb20gXCIuLi8uLi90eXBlcy9vLXBlcm1pc3Npb25zLnR5cGVcIjtcbmltcG9ydCB0eXBlIHsgT1RhYmxlQnV0dG9ucyB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL28tdGFibGUtYnV0dG9ucy5pbnRlcmZhY2VcIjtcbmltcG9ydCB0eXBlIHsgT1RhYmxlUXVpY2tmaWx0ZXIgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9vLXRhYmxlLXF1aWNrZmlsdGVyLmludGVyZmFjZVwiO1xuaW1wb3J0IHR5cGUgeyBPVGFibGVNZW51IH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvby10YWJsZS1tZW51LmludGVyZmFjZVwiO1xuaW1wb3J0IHR5cGUgeyBPQ29sdW1uVmFsdWVGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdGFibGUvby1jb2x1bW4tdmFsdWUtZmlsdGVyLnR5cGVcIjtcbmltcG9ydCB0eXBlIHsgT0NvbnRleHRNZW51Q29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbnRleHRtZW51L28tY29udGV4dC1tZW51LmNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBFeHByZXNzaW9uLCBPRmlsdGVyRGVmaW5pdGlvbiwgT0dyb3VwZWRDb2x1bW5UeXBlcywgT1RhYmxlTWVudVBlcm1pc3Npb25zLCBTUUxPcmRlciB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBPVGFibGVDb21wb25lbnRTdGF0ZUNsYXNzIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3N0YXRlL28tdGFibGUtY29tcG9uZW50LXN0YXRlLmNsYXNzXCI7XG5pbXBvcnQgdHlwZSB7IE9UYWJsZUhlYWRlckNvbXBvbmVudCB9IGZyb20gXCIuL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLWhlYWRlci9vLXRhYmxlLWhlYWRlci5jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgTWF0UGFnaW5hdG9yIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvclwiO1xuaW1wb3J0IHR5cGUgeyBPVGFibGVDb2x1bW5TZWxlY3RBbGxEaXJlY3RpdmUgfSBmcm9tIFwiLi9leHRlbnNpb25zL2hlYWRlci90YWJsZS1jb2x1bW4tc2VsZWN0LWFsbC9vLXRhYmxlLWNvbHVtbi1zZWxlY3QtYWxsLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHR5cGUgeyBPRmlsdGVyQnVpbGRlckNvbXBvbmVudCB9IGZyb20gXCIuLi9maWx0ZXItYnVpbGRlci9vLWZpbHRlci1idWlsZGVyLmNvbXBvbmVudFwiO1xuXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBPVGFibGVCYXNlIHtcbiAgYWJzdHJhY3QgZ2V0TWVudVBlcm1pc3Npb25zKCk6IE9UYWJsZU1lbnVQZXJtaXNzaW9ucztcbiAgYWJzdHJhY3Qgcm93SGVpZ2h0T2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBhYnN0cmFjdCBpbml0aWFsaXplQ2hlY2tib3hDb2x1bW4oKTtcbiAgdmlzaWJsZUV4cG9ydERpYWxvZ0J1dHRvbnM6IHN0cmluZztcbiAgc2VydmljZTogc3RyaW5nO1xuICBleHBvcnRTZXJ2aWNlVHlwZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgZXhwb3J0T3B0c1RlbXBsYXRlOiBhbnk7XG4gIHZpc2libGVDb2xBcnJheTogc3RyaW5nW107XG4gIHNob3dOb3RpZmljYXRpb25PZlJlYWRPbmx5OiBib29sZWFuO1xuICBhYnN0cmFjdCByZWluaXRpYWxpemVTb3J0Q29sdW1ucyhzb3J0Q29sdW1ucz86IFNRTE9yZGVyW10pO1xuICBhYnN0cmFjdCBzZXRHcm91cENvbHVtbnModmFsdWU6IGFueVtdKTtcbiAgYWJzdHJhY3QgY2xlYXJDb2x1bW5GaWx0ZXJzKHRyaWdnZXJEYXRhc291cmNlVXBkYXRlPzogYm9vbGVhbiwgY29sdW1uc0F0dHI/OiBzdHJpbmdbXSk6IHZvaWRcbiAgYWJzdHJhY3QgcmVmcmVzaENvbHVtbnNXaWR0aEZyb21Mb2NhbFN0b3JhZ2UoKTtcbiAgYWJzdHJhY3Qgcm93SGVpZ2h0OiBzdHJpbmc7XG4gIGFic3RyYWN0IGdyb3VwZWRDb2x1bW5UeXBlczogT0dyb3VwZWRDb2x1bW5UeXBlc1tdO1xuICBhYnN0cmFjdCBzZXRHcm91cGVkQ29sdW1uVHlwZXModmFsdWU6IE9Hcm91cGVkQ29sdW1uVHlwZXNbXSlcbiAgYWJzdHJhY3Qgc3RhdGU6IE9UYWJsZUNvbXBvbmVudFN0YXRlQ2xhc3M7XG4gIGFic3RyYWN0IHN0b3JlRmlsdGVySW5TdGF0ZShhcmc6IE9GaWx0ZXJEZWZpbml0aW9uKTtcbiAgYWJzdHJhY3Qgc2V0RmlsdGVyc0NvbmZpZ3VyYXRpb24oKTtcbiAgYWJzdHJhY3QgcmVsb2FkUGFnaW5hdGVkRGF0YUZyb21TdGFydChjbGVhclNlbGVjdGVkSXRlbXM/OiBib29sZWFuKTtcbiAgYWJzdHJhY3QgY2xlYXJGaWx0ZXJzKCk6IHZvaWQ7XG4gIGFic3RyYWN0IHJlc2V0Q29sdW1uc1dpZHRoKCk7XG4gIGFic3RyYWN0IGNvbXBvbmVudFN0YXRlU2VydmljZTogYW55O1xuICBhYnN0cmFjdCBhcHBseURlZmF1bHRDb25maWd1cmF0aW9uKCk7XG4gIGFic3RyYWN0IGFwcGx5Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uTmFtZTogc3RyaW5nKTtcblxuICBhYnN0cmFjdCBnZXRDb2x1bW5zTm90SW5jbHVkZWQoKTogc3RyaW5nW11cbiAgYWJzdHJhY3QgZ2V0Q29tcG9uZW50RmlsdGVyKGV4aXN0aW5nRmlsdGVyPzogYW55KTogYW55O1xuICBhYnN0cmFjdCBlbnRpdHk6IHN0cmluZztcbiAgYWJzdHJhY3QgZ2V0U3FsVHlwZXMoKTtcbiAgYWJzdHJhY3QgZ2V0Q29sdW1uTmFtZXMoY29sdW1uczogc3RyaW5nW10pOiB7IFtjb2x1bW5JZDogc3RyaW5nXTogc3RyaW5nOyB9O1xuICBhYnN0cmFjdCBzaG93Q2FzZVNlbnNpdGl2ZUNoZWNrYm94KCk6IGJvb2xlYW47XG4gIGFic3RyYWN0IHBhZ2VhYmxlOiBib29sZWFuO1xuICBhYnN0cmFjdCBkYXRhU291cmNlOiBhbnk7XG4gIGFic3RyYWN0IHF1aWNrRmlsdGVyQ2FsbGJhY2s6IFF1aWNrRmlsdGVyRnVuY3Rpb247XG4gIGFic3RyYWN0IGFib3J0UXVlcnk6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgYWJzdHJhY3Qgb1RhYmxlT3B0aW9uczogYW55O1xuICBhYnN0cmFjdCByZWdpc3RlclF1aWNrRmlsdGVyKGFyZzogYW55KTogdm9pZDtcbiAgYWJzdHJhY3QgZ2V0T0NvbHVtbkZyb21UaCh0aDogYW55KTogT0NvbHVtbjtcbiAgYWJzdHJhY3QgY2Q6IENoYW5nZURldGVjdG9yUmVmO1xuICBhYnN0cmFjdCBnZXRDbGllbnRXaWR0aENvbHVtbihjb2w6IE9Db2x1bW4pOiBudW1iZXI7XG4gIGFic3RyYWN0IGhvcml6b250YWxTY3JvbGw6IGJvb2xlYW47XG4gIGFic3RyYWN0IGdldEFjdGlvbnNQZXJtaXNzaW9ucygpOiBPUGVybWlzc2lvbnNbXTtcbiAgYWJzdHJhY3Qgc2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxFbGVtZW50PjtcbiAgYWJzdHJhY3QgcmVnaXN0ZXJPVGFibGVCdXR0b25zKGFyZzogT1RhYmxlQnV0dG9ucyk7XG4gIGFic3RyYWN0IGFkZCgpO1xuICBhYnN0cmFjdCByZWxvYWREYXRhKCk7XG4gIGFic3RyYWN0IHJlbW92ZSgpO1xuICBhYnN0cmFjdCBvblVwZGF0ZVNjcm9sbGVkU3RhdGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBhYnN0cmFjdCByb3dXaWR0aDtcbiAgYWJzdHJhY3Qgb25Db250ZW50Q2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgYWJzdHJhY3Qgc3RhdGljRGF0YTogQXJyYXk8YW55PjtcbiAgYWJzdHJhY3Qgb1RhYmxlUXVpY2tGaWx0ZXJDb21wb25lbnQ6IE9UYWJsZVF1aWNrZmlsdGVyO1xuICBhYnN0cmFjdCBxdWlja0ZpbHRlcjogYm9vbGVhbjtcbiAgYWJzdHJhY3QgZ3JvdXBlZENvbHVtbnNBcnJheTogc3RyaW5nW107XG4gIGFic3RyYWN0IGlzQ29sdW1uRmlsdGVyYWJsZShjb2x1bW46IE9Db2x1bW4pOiBib29sZWFuO1xuICBhYnN0cmFjdCBvcGVuQ29sdW1uRmlsdGVyRGlhbG9nKGNvbHVtbjogT0NvbHVtbiwgZXZlbnQ6IEV2ZW50KTtcbiAgYWJzdHJhY3QgaXNDb2x1bW5GaWx0ZXJzQWN0aXZlOiBib29sZWFuO1xuICBhYnN0cmFjdCBvVGFibGVNZW51OiBPVGFibGVNZW51O1xuICBhYnN0cmFjdCBnZXRPQ29sdW1uKGF0dHI6IHN0cmluZyk6IE9Db2x1bW47XG4gIGFic3RyYWN0IGdyb3VwQnlDb2x1bW4oY29sdW1uOiBPQ29sdW1uLCB0eXBlPzogc3RyaW5nKTtcbiAgYWJzdHJhY3QgdW5Hcm91cEJ5Q29sdW1uKGNvbHVtbjogT0NvbHVtbik7XG4gIGFic3RyYWN0IHVuR3JvdXBCeUFsbENvbHVtbnMoKTtcbiAgYWJzdHJhY3QgZmlsdGVyQnlDb2x1bW4oY29sdW1uVmFsdWVGaWx0ZXI6IE9Db2x1bW5WYWx1ZUZpbHRlcik7XG4gIGFic3RyYWN0IHJlZnJlc2goKTtcbiAgYWJzdHJhY3QgY29weVNlbGVjdGlvbigpO1xuICBhYnN0cmFjdCBjb3B5QWxsKCk7XG4gIGFic3RyYWN0IHNob3dBbmRTZWxlY3RBbGxDaGVja2JveCgpO1xuICBhYnN0cmFjdCBkb0hhbmRsZUNsaWNrKHJvdzogYW55LCBjb2x1bW46IHN0cmluZywgcm93SW5kZXg6IG51bWJlciwgJGV2ZW50OiBNb3VzZUV2ZW50KTtcbiAgYWJzdHJhY3Qgdmlld0RldGFpbChpdGVtOiBhbnkpOiB2b2lkO1xuICBhYnN0cmFjdCBjbGVhclNlbGVjdGlvbigpOiB2b2lkO1xuICBhYnN0cmFjdCBpc1NlbGVjdGlvbk1vZGVNdWx0aXBsZSgpOiBib29sZWFuO1xuICBhYnN0cmFjdCByZWdpc3RlckNvbnRleHRNZW51KHZhbHVlOiBPQ29udGV4dE1lbnVDb21wb25lbnQpOiB2b2lkO1xuICBhYnN0cmFjdCBncm91cGFibGU6IGJvb2xlYW47XG4gIGFic3RyYWN0IHNlbGVjdEFsbENoZWNrYm94OiBib29sZWFuO1xuICBhYnN0cmFjdCBpc1NlbGVjdGlvbk1vZGVOb25lKCk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGlzQWxsU2VsZWN0ZWQoKTogYm9vbGVhblxuXG4gIGFic3RyYWN0IG5vbkhpZGFibGVDb2x1bW5zOiBzdHJpbmc7XG4gIGFic3RyYWN0IHZpc2libGVDb2x1bW5zOiBzdHJpbmc7XG4gIGFic3RyYWN0IHNvcnRDb2xBcnJheTogU1FMT3JkZXJbXTtcbiAgYWJzdHJhY3QgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgYWJzdHJhY3QgcXVlcnlSb3dzOiBudW1iZXI7XG4gIGFic3RyYWN0IHJlc2l6YWJsZTogYm9vbGVhblxuICBhYnN0cmFjdCByZWdpc3RlclRhYmxlSGVhZGVycyh0YWJsZUhlYWRlcjogT1RhYmxlSGVhZGVyQ29tcG9uZW50KTtcbiAgYWJzdHJhY3Qgc2hvd0J1dHRvbnNUZXh0OiBib29sZWFuO1xuICBhYnN0cmFjdCBtYXRwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcbiAgYWJzdHJhY3QgaXNJbmRldGVybWluYXRlKCk6IGJvb2xlYW47XG4gIGFic3RyYWN0IG9uRmlsdGVyQnlDb2x1bW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBhYnN0cmFjdCBtYXN0ZXJUb2dnbGUoZXZlbnQ6IE1hdENoZWNrYm94Q2hhbmdlKTogdm9pZDtcbiAgYWJzdHJhY3QgdGFibGVDb2x1bW5TZWxlY3RBbGxDb250ZW50Q2hpbGQ6IE9UYWJsZUNvbHVtblNlbGVjdEFsbERpcmVjdGl2ZTtcblxuICBhYnN0cmFjdCBnZXRDb2x1bW5GaWx0ZXJzRXhwcmVzc2lvbigpOiBFeHByZXNzaW9uO1xuICBhYnN0cmFjdCBjb2x1bW5zOiBzdHJpbmc7XG4gIGFic3RyYWN0IGdldFBhcmVudEtleXNWYWx1ZXMoKTtcbiAgYWJzdHJhY3QgZmlsdGVyQnVpbGRlcjogT0ZpbHRlckJ1aWxkZXJDb21wb25lbnQ7XG4gIGFic3RyYWN0IHJlYWRPbmx5RnVuY3Rpb246IChjb25maWd1cmF0aW9uOiBhbnkpID0+IGJvb2xlYW47XG4gIGFic3RyYWN0IGlzQ29tcG9uZW50UmVhZE9ubHkoc2VsZWN0b3I6IHN0cmluZywgYXR0cjogc3RyaW5nKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgZ2V0U25hY2tTZXJ2aWNlKCk6IFNuYWNrQmFyU2VydmljZTtcbiAgYWJzdHJhY3Qgc2V0U2VsZWN0ZWRCeUtleXMoa2V5VmFsdWVzOiBBcnJheTxhbnk+KTogdm9pZDtcbiAgYWJzdHJhY3Qgc2V0U2VsZWN0ZWRCeU11bHRpcGxlS2V5cyhrZXlWYWx1ZXM6IEFycmF5PE9iamVjdD4pOiB2b2lkO1xuICBhYnN0cmFjdCBzZXRTZWxlY3RlZEJ5Um93SWRzKHJvd0lkczogQXJyYXk8bnVtYmVyPik6IHZvaWQ7XG59XG4iXX0=