@sumaris-net/ngx-components 2.4.57 → 2.4.59

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 (52) hide show
  1. package/doc/changelog.md +8 -0
  2. package/esm2020/public_api.mjs +11 -3
  3. package/esm2020/src/app/core/graphql/graphql.service.mjs +2 -2
  4. package/esm2020/src/app/core/graphql/graphql.utils.mjs +1 -1
  5. package/esm2020/src/app/core/services/network.service.mjs +17 -4
  6. package/esm2020/src/app/core/services/platform.service.mjs +24 -5
  7. package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +2 -2
  8. package/esm2020/src/app/core/services/storage/entity-store.class.mjs +1 -1
  9. package/esm2020/src/app/core/table/table.class.mjs +1 -1
  10. package/esm2020/src/app/shared/debug/debug-service.class.mjs +3 -0
  11. package/esm2020/src/app/shared/file/json.utils.mjs +4 -4
  12. package/esm2020/src/app/shared/logging/log-level.model.mjs +48 -0
  13. package/esm2020/src/app/shared/logging/logger.model.mjs +47 -0
  14. package/esm2020/src/app/shared/logging/logging-service.class.mjs +121 -0
  15. package/esm2020/src/app/shared/logging/logging-service.config.mjs +2 -0
  16. package/esm2020/src/app/shared/logging/logging-service.module.mjs +30 -0
  17. package/esm2020/src/app/shared/shared.module.mjs +3 -3
  18. package/esm2020/src/app/shared/shared.testing.module.mjs +16 -8
  19. package/esm2020/src/app/shared/storage/storage-explorer.component.mjs +262 -0
  20. package/esm2020/src/app/shared/storage/storage-explorer.module.mjs +60 -0
  21. package/esm2020/src/app/shared/storage/storage.service.mjs +132 -0
  22. package/esm2020/src/app/shared/storage/storage.utils.mjs +13 -0
  23. package/esm2020/src/app/social/user-event/testing/user-event.testing.service.mjs +1 -1
  24. package/esm2020/src/environments/environment.class.mjs +1 -1
  25. package/esm2020/src/environments/environment.mjs +7 -2
  26. package/fesm2015/sumaris-net.ngx-components.mjs +965 -376
  27. package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
  28. package/fesm2020/sumaris-net.ngx-components.mjs +941 -383
  29. package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
  30. package/package.json +1 -1
  31. package/public_api.d.ts +10 -2
  32. package/src/app/core/graphql/graphql.service.d.ts +1 -1
  33. package/src/app/core/graphql/graphql.utils.d.ts +1 -1
  34. package/src/app/core/services/network.service.d.ts +5 -2
  35. package/src/app/core/services/platform.service.d.ts +6 -3
  36. package/src/app/core/services/storage/entities-storage.service.d.ts +1 -1
  37. package/src/app/core/services/storage/entity-store.class.d.ts +1 -1
  38. package/src/app/shared/debug/debug-service.class.d.ts +5 -0
  39. package/src/app/shared/logging/log-level.model.d.ts +38 -0
  40. package/src/app/shared/logging/logger.model.d.ts +68 -0
  41. package/src/app/shared/logging/logging-service.class.d.ts +39 -0
  42. package/src/app/shared/logging/logging-service.config.d.ts +25 -0
  43. package/src/app/shared/logging/logging-service.module.d.ts +9 -0
  44. package/src/app/shared/shared.testing.module.d.ts +2 -1
  45. package/src/app/shared/storage/storage-explorer.component.d.ts +58 -0
  46. package/src/app/shared/storage/storage-explorer.module.d.ts +16 -0
  47. package/src/app/shared/{services/storage → storage}/storage.service.d.ts +2 -2
  48. package/src/assets/i18n/fr.json +3 -0
  49. package/src/environments/environment.class.d.ts +2 -0
  50. package/esm2020/src/app/shared/services/storage/storage.service.mjs +0 -132
  51. package/esm2020/src/app/shared/services/storage/storage.utils.mjs +0 -13
  52. /package/src/app/shared/{services/storage → storage}/storage.utils.d.ts +0 -0
package/doc/changelog.md CHANGED
@@ -603,3 +603,11 @@ Observables: function `waitFor()`, `waitForTrue()`, `watForFalse()`, `firstNotNi
603
603
 
604
604
  # 2.4.55
605
605
  - [fix] Editor: Disable animation, when reloading same page after saving
606
+
607
+ # 2.4.58
608
+ - [enh] Add storage explorer (with log preview)
609
+ - [enh] Add debug service (to send debug data to server)
610
+ - [enh] Add logging service
611
+
612
+ # 2.4.59
613
+ - [enh] Add logger on network service
@@ -54,6 +54,13 @@ export * from './src/app/shared/image/gallery/image-gallery.component';
54
54
  export * from './src/app/shared/image/gallery/image-gallery.module';
55
55
  export * from './src/app/shared/image/image.model';
56
56
  export * from './src/app/shared/image/image.module';
57
+ export * from './src/app/shared/storage/storage-explorer.component';
58
+ export * from './src/app/shared/storage/storage-explorer.module';
59
+ export * from './src/app/shared/logging/log-level.model';
60
+ export * from './src/app/shared/logging/logger.model';
61
+ export * from './src/app/shared/logging/logging-service.class';
62
+ export * from './src/app/shared/logging/logging-service.config';
63
+ export * from './src/app/shared/logging/logging-service.module';
57
64
  // Shared directives
58
65
  export * from './src/app/shared/directives/directives.module';
59
66
  export * from './src/app/shared/directives/autofocus.directive';
@@ -92,9 +99,10 @@ export * from './src/app/shared/services/memory-entity-service.class';
92
99
  export * from './src/app/shared/services/progress-bar.service';
93
100
  export * from './src/app/shared/services/translate-context.service';
94
101
  export * from './src/app/shared/services/job.utils';
95
- export * from './src/app/shared/services/storage/storage.service';
96
- export * from './src/app/shared/services/storage/storage.utils';
102
+ export * from './src/app/shared/storage/storage.service';
103
+ export * from './src/app/shared/storage/storage.utils';
97
104
  export * from './src/app/shared/validator/form-error-adapter.class';
105
+ export * from './src/app/shared/debug/debug-service.class';
98
106
  // Shared other
99
107
  export * from './src/app/shared/types';
100
108
  export * from './src/app/shared/dates';
@@ -296,4 +304,4 @@ export * from './src/app/social/job/testing/job-progression.testing';
296
304
  export * from './src/app/social/job/testing/job-progression.testing.service';
297
305
  export { MatAutocompleteConfigHolder } from './src/app/shared/material/autocomplete/material.autocomplete.config';
298
306
  export { TableValidatorService } from "./src/app/core/table/testing/table-validator.service";
299
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUVkLGNBQWMsc0NBQXNDLENBQUM7QUFFckQsU0FBUztBQUNULGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUUzRSxrQkFBa0I7QUFDbEIsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUNuRixjQUFjLHFFQUFxRSxDQUFDO0FBQ3BGLGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYyxxRUFBcUUsQ0FBQztBQUNwRixjQUFjLG9FQUFvRSxDQUFDO0FBQ25GLGNBQWMsOENBQThDLENBQUM7QUFDN0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQzdFLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyw2REFBNkQsQ0FBQztBQUM1RSxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHVEQUF1RCxDQUFDO0FBQ25GLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUNqRixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDekUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQ25GLGNBQWMsMkRBQTJELENBQUM7QUFDMUUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDakYsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLG1EQUFtRCxDQUFD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QXNELENBQUM7QUFDckUsY0FBYywwQ0FBMEMsQ0FBQztBQUV6RCxvQkFBb0I7QUFDcEIsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyw2Q0FBNkMsQ0FBQztBQUU1RCxlQUFlO0FBQ2YsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxzRUFBc0UsQ0FBQztBQUNyRixjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYyx1RUFBdUUsQ0FBQztBQUN0RixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUUzRCxpQkFBaUI7QUFDakIsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyxnRUFBZ0UsQ0FBQztBQUMvRSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxxRUFBcUUsQ0FBQztBQUdoSCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEVudmlyb25tZW50XG5cbmV4cG9ydCAqIGZyb20gJy4vc3JjL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5cbi8vIFNoYXJlZFxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmV4cG9ydCB7U2hhcmVkUm91dGluZ01vZHVsZX0gZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9zaGFyZWQtcm91dGluZy5tb2R1bGUnO1xuXG4vLyBTaGFyZWQgbWF0ZXJpYWxcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbWF0ZXJpYWwubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvYm9vbGVhbi9ib29sZWFuLm1vZHVsZSc7XG5leHBvcnQge01hdEJvb2xlYW5GaWVsZH0gZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9ib29sZWFuL21hdGVyaWFsLmJvb2xlYW4nO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9hdXRvY29tcGxldGUvbWF0ZXJpYWwuYXV0b2NvbXBsZXRlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9tYXRlcmlhbC5hdXRvY29tcGxldGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9hdXRvY29tcGxldGUvbWF0ZXJpYWwuYXV0b2NvbXBsZXRlLmNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9tYXRlcmlhbC5hdXRvY29tcGxldGUudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9jaGlwcy9jaGlwcy5tb2R1bGUnO1xuZXhwb3J0IHtNYXRDaGlwc0ZpZWxkfSBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2NoaXBzL21hdGVyaWFsLmNoaXBzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbWF0ZXJpYWwuYW5pbWF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL3BhZ2luYXRvci9tYXRlcmlhbC5wYWdpbmF0b3ItaTE4bic7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL3N0ZXBwZXIvbWF0ZXJpYWwuc3RlcHBlci1pMThuJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvZGF0ZXRpbWUvZGF0ZXRpbWUubW9kdWxlJztcbmV4cG9ydCB7TWF0RGF0ZVNob3J0fSBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2RhdGV0aW1lL21hdGVyaWFsLmRhdGVzaG9ydCc7XG5leHBvcnQge01hdERhdGVUaW1lfSBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2RhdGV0aW1lL21hdGVyaWFsLmRhdGV0aW1lJztcbmV4cG9ydCB7TWF0RGF0ZX0gZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9kYXRldGltZS9tYXRlcmlhbC5kYXRlJztcbmV4cG9ydCB7TWF0TGF0TG9uZ0ZpZWxkfSBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9kdXJhdGlvbi9kdXJhdGlvbi5tb2R1bGUnO1xuZXhwb3J0IHtNYXREdXJhdGlvbn0gZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9kdXJhdGlvbi9tYXRlcmlhbC5kdXJhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL251bXBhZC9udW1wYWQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbnVtcGFkL251bXBhZC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9udW1wYWQvbnVtcGFkLmFwcGVuZC10by1pbnB1dC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9udW1wYWQvbnVtcGFkLmNvbnRhaW5lcic7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL251bXBhZC9udW1wYWQuY29udGVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL251bXBhZC9udW1wYWQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvc3dpcGUvc3dpcGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvc3dpcGUvbWF0ZXJpYWwuc3dpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9iYWRnZS9iYWRnZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9iYWRnZS9iYWRnZS5kaXJlY3RpdmUnO1xuXG4vLyBTaGFyZWQgY29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9pbnB1dHMnO1xuZXhwb3J0IHtBcHBGb3JtRmllbGR9IGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZm9ybS9maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9mb3JtL2xvYWRpbmctc3Bpbm5lcic7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2Zvcm0vZmllbGQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC90b29sYmFyL3Rvb2xiYXInO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC90b29sYmFyL21vZGFsLXRvb2xiYXInO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC90b29sYmFyL3Rvb2xiYXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvaW50ZXJjZXB0b3JzL3Byb2dlc3MuaW50ZXJjZXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC90b2FzdC90b2FzdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9oZWxwL2hlbHAubW9kYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9ndWFyZC9jb21wb25lbnQtZGlydHkuZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC91cGxvYWQtZmlsZS91cGxvYWQtZmlsZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3VwbG9hZC1maWxlL3VwbG9hZC1maWxlLXBvcG92ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvdXBsb2FkLWZpbGUvdXBsb2FkLWZpbGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvaW1hZ2UvZ2FsbGVyeS9pbWFnZS1nYWxsZXJ5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2ltYWdlL2dhbGxlcnkvaW1hZ2UtZ2FsbGVyeS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9pbWFnZS9pbWFnZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2ltYWdlL2ltYWdlLm1vZHVsZSc7XG5cbi8vIFNoYXJlZCBkaXJlY3RpdmVzXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2RpcmVjdGl2ZXMvZGlyZWN0aXZlcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9kaXJlY3RpdmVzL2F1dG9mb2N1cy5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9kaXJlY3RpdmVzL25nLXZhci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9kaXJlY3RpdmVzL2RyYWctYW5kLWRyb3AuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZGlyZWN0aXZlcy9hdXRvdGl0bGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZGlyZWN0aXZlcy9yZXNpemFibGUvcmVzaXphYmxlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2RpcmVjdGl2ZXMvcmVzaXphYmxlL3Jlc2l6YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9kaXJlY3RpdmVzL3Jlc2l6YWJsZS9yZXNpemFibGUubW9kdWxlJztcblxuLy8gU2hhcmVkIHBpcGVzXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL3BpcGVzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL2RhdGUtZm9ybWF0LnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9kYXRlLWZyb20tbm93LnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9kYXRlLWRpZmYtZHVyYXRpb24ucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL2xhdGxvbmctZm9ybWF0LnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9oaWdobGlnaHQucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL251bWJlci1mb3JtYXQucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL2R1cmF0aW9uLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9maWxlLXNpemUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL3Byb3BlcnR5LnBpcGVzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvcGlwZXMvbWF0aC5waXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL2FycmF5cy5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvcGlwZXMvbWFwcy5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvcGlwZXMvc3RyaW5nLnBpcGVzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvcGlwZXMvdHJhbnNsYXRlLWNvbnRleHQucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL25nLWluaXQucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL2Zvcm0ucGlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9jb2xvcnMucGlwZSc7XG5cbi8vIFNoYXJlZCBzZXJ2aWNlc1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9hdWRpby9hdWRpbyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2ZpbGUvZmlsZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvaW1hZ2UvaW1hZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3NlcnZpY2VzL3N0YXJ0YWJsZS1zZXJ2aWNlLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9zZXJ2aWNlcy9tZW1vcnktZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9zZXJ2aWNlcy9wcm9ncmVzcy1iYXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3NlcnZpY2VzL3RyYW5zbGF0ZS1jb250ZXh0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9zZXJ2aWNlcy9qb2IudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9zZXJ2aWNlcy9zdG9yYWdlL3N0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3NlcnZpY2VzL3N0b3JhZ2Uvc3RvcmFnZS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3ZhbGlkYXRvci9mb3JtLWVycm9yLWFkYXB0ZXIuY2xhc3MnO1xuXG4vLyBTaGFyZWQgb3RoZXJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9kYXRlcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2Z1bmN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3NlcnZpY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZm9ybXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2V2ZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2FsZXJ0cyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BsYXRmb3Jtcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZmlsZS9maWxlLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZmlsZS9jc3YudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9maWxlL2ltYWdlcy51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2ZpbGUvanNvbi51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2ZpbGUvdXJpLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvaG90a2V5cy9zaGFyZWQtaG90a2V5cy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9ob3RrZXlzL2hvdGtleXMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2hvdGtleXMvZGlhbG9nL2hvdGtleXMtZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQge0NvbG9yLCBDb2xvck5hbWUsIENvbG9yU2NhbGUsIENvbG9yU2NhbGVMZWdlbmQsIENvbG9yU2NhbGVPcHRpb25zLCBDb2xvckdyYWRpZW50T3B0aW9ucywgQ29sb3JTY2FsZUxlZ2VuZEl0ZW19IGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZ3JhcGgvZ3JhcGgtY29sb3JzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZ3JhcGgvY29sb3JzLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZ2VzdHVyZS9nZXN0dXJlLWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2dlc3R1cmUvaGFtbWVyLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvdmFsaWRhdG9yL3ZhbGlkYXRvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC92YWxpZGF0b3IvZm9ybS1lcnJvci1hZGFwdGVyLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbGF0bG9uZy9sYXRsb25nLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZGVidWcvZGVidWcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZGVidWcvZGVidWcuY29tcG9uZW50JztcblxuLy8gQ29yZVxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvY29yZS5tb2R1bGUnO1xuXG4vLyBDb3JlIG1vZGVsXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9tb2RlbC9hY2NvdW50Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL2NvbmZpZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9tb2RlbC9kZXBhcnRtZW50Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9tb2RlbC9maWx0ZXIubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvbW9kZWwvaGlzdG9yeS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9tb2RlbC9tb2RlbC5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL3BlZXIubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvbW9kZWwvcGVyc29uLm1vZGVsJztcbmV4cG9ydCB7IElSZWZlcmVudGlhbFJlZiwgUmVmZXJlbnRpYWxSZWYsXG4gIEJhc2VSZWZlcmVudGlhbCwgUmVmZXJlbnRpYWwsIFJlZmVyZW50aWFsVXRpbHMsXG4gIFJlZmVyZW50aWFsQXNPYmplY3RPcHRpb25zLFxuICByZWZlcmVudGlhbFRvU3RyaW5nLCByZWZlcmVudGlhbHNUb1N0cmluZyxcbiAgSVN0YXR1cywgU3RhdHVzTGlzdCwgU3RhdHVzQnlJZCxcbiAgTUlOSUZZX0VOVElUWV9GT1JfTE9DQUxfU1RPUkFHRSwgTUlOSUZZX0VOVElUWV9GT1JfUE9EIH0gZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvbW9kZWwvcmVmZXJlbnRpYWwubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvbW9kZWwvc2V0dGluZ3MubW9kZWwnO1xuXG4vLyBHcmFwaFFMXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9ncmFwaHFsL2dyYXBocWwubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2dyYXBocWwvZ3JhcGhxbC5zZXJ2aWNlJztcblxuLy8gQ29yZSBwaXBlc1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvcGlwZXMvYWNjb3VudC5waXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9waXBlcy9kZXBhcnRtZW50LXRvLXN0cmluZy5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL3BpcGVzL3BlcnNvbi10by1zdHJpbmcucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9waXBlcy91c2FnZS1tb2RlLnBpcGVzJztcblxuLy8gQ29yZSBzZXJ2aWNlc1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvcGxhdGZvcm0uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvbmV0d29yay50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5leHBvcnQge0NPUkVfQ09ORklHX09QVElPTlN9IGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL2NvbmZpZy9jb3JlLmNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9sb2NhbC1zZXR0aW5ncy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9jcnlwdG8uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9hdXRoLWd1YXJkLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvYmFzZTU4JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL2Jhc2UtZ3JhcGhxbC1zZXJ2aWNlLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL2Jhc2UtZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvc3RvcmFnZS9lbnRpdGllcy1zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvc3RvcmFnZS9lbnRpdHktc3RvcmUuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvdmFsaWRhdG9yL2Jhc2UudmFsaWRhdG9yLmNsYXNzJztcblxuLy8gQ29yZSBjb21wb25lbnRzXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9mb3JtL2Zvcm0uY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvZm9ybS9mb3JtLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2Zvcm0vZm9ybS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvZm9ybS9idXR0b25zL2Zvcm0tYnV0dG9ucy1iYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2Zvcm0vYnV0dG9ucy9mb3JtLWJ1dHRvbnMtYmFyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9mb3JtL2VudGl0eS9lZGl0b3IuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvZm9ybS9lbnRpdHkvZW50aXR5LWVkaXRvci5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9mb3JtL2VudGl0eS9lbnRpdHktZWRpdG9yLW1vZGFsLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2Zvcm0vZW50aXR5L2VudGl0eS1tZXRhZGF0YS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvZm9ybS9lbnRpdHkvZW50aXR5Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9mb3JtL2xpc3QvbGlzdC5mb3JtJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2Zvcm0vbGlzdC9saXN0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy5mb3JtJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2Zvcm0vcHJvcGVydGllcy9wcm9wZXJ0aWVzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9mb3JtL3RleHQtcG9wb3Zlci90ZXh0LWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2Zvcm0vdGV4dC1wb3BvdmVyL3RleHQtcG9wb3Zlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvZm9ybS90ZXh0LXBvcG92ZXIvdGV4dC1wb3BvdmVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS90YWJsZS90YWJsZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS90YWJsZS90YWJsZS5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS90YWJsZS9hc3luYy10YWJsZS5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS90YWJsZS90YWJsZS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS90YWJsZS90YWJsZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvdGFibGUvbWVtb3J5LXRhYmxlLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3RhYmxlL2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2UuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvdGFibGUvZW50aXRpZXMtYXN5bmMtdGFibGUtZGF0YXNvdXJjZS5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS90YWJsZS90YWJsZS1zZWxlY3QtY29sdW1ucy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvdGFibGUvYWN0aW9ucy1jb2x1bW4uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2ljb24vaWNvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvaWNvbi9pY29uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9ob21lL2hvbWUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvaG9tZS9ob21lLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXR0aW5ncy9zZXR0aW5ncy5wYWdlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NldHRpbmdzL3NldHRpbmdzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9hY2NvdW50L2FjY291bnQucGFnZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9hY2NvdW50L2FjY291bnQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2F1dGgvYXV0aC5mb3JtJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2F1dGgvYXV0aC5tb2RhbCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9hdXRoL2F1dGgubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3JlZ2lzdGVyL3JlZ2lzdGVyLWNvbmZpcm0ucGFnZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9yZWdpc3Rlci9yZWdpc3Rlci5mb3JtJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3JlZ2lzdGVyL3JlZ2lzdGVyLm1vZGFsJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3JlZ2lzdGVyL3JlZ2lzdGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9hYm91dC9hYm91dC5tb2RhbCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9hYm91dC9hYm91dC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvcGVlci9zZWxlY3QtcGVlci5tb2RhbCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9wZWVyL3NlbGVjdC1wZWVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9pbnN0YWxsL2luc3RhbGwtdXBncmFkZS1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9pbnN0YWxsL2luc3RhbGwtdXBncmFkZS1jYXJkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9tZW51L21lbnUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL21lbnUvbWVudS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9tZW51L21lbnUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL21lbnUvbWVudS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL29mZmxpbmUvdXBkYXRlLW9mZmxpbmUtbW9kZS1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9vZmZsaW5lL3VwZGF0ZS1vZmZsaW5lLW1vZGUtY2FyZC5tb2R1bGUnO1xuXG4vLyBDb3JlIGRlY29yYXRvclxuZXhwb3J0IHtFbnRpdHlDbGFzcywgRW50aXR5Q2xhc3Nlc30gZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5LmRlY29yYXRvcnMnO1xuXG5cbi8vIFNvY2lhbFxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NvY2lhbC9zb2NpYWwubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zb2NpYWwvc29jaWFsLmVycm9ycyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL3VzZXItZXZlbnQvdXNlci1ldmVudC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L3VzZXItZXZlbnQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L3VzZXItZXZlbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL3VzZXItZXZlbnQvbm90aWZpY2F0aW9uL3VzZXItZXZlbnQtbm90aWZpY2F0aW9uLmljb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L25vdGlmaWNhdGlvbi91c2VyLWV2ZW50LW5vdGlmaWNhdGlvbi5saXN0JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zb2NpYWwvam9iL2pvYi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NvY2lhbC9qb2IvcHJvZ3Jlc3Npb24vam9iLXByb2dyZXNzaW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NvY2lhbC9qb2IvcHJvZ3Jlc3Npb24vam9iLXByb2dyZXNzaW9uLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zb2NpYWwvam9iL3Byb2dyZXNzaW9uL2pvYi1wcm9ncmVzc2lvbi5pY29uJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zb2NpYWwvam9iL3Byb2dyZXNzaW9uL2pvYi1wcm9ncmVzc2lvbi5saXN0JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zb2NpYWwvbWVzc2FnZS9tZXNzYWdlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL21lc3NhZ2UvbWVzc2FnZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL21lc3NhZ2UvbWVzc2FnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zb2NpYWwvbWVzc2FnZS9tZXNzYWdlLmZvcm0nO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NvY2lhbC9tZXNzYWdlL21lc3NhZ2UubW9kYWwnO1xuXG4vLyBBZG1pblxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2FkbWluL2FkbWluLm1vZHVsZSc7XG5leHBvcnQge0FkbWluUm91dGluZ01vZHVsZX0gZnJvbSAnLi9zcmMvYXBwL2FkbWluL2FkbWluLXJvdXRpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9hZG1pbi9zZXJ2aWNlcy9maWx0ZXIvcGVyc29uLmZpbHRlcic7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvYWRtaW4vc2VydmljZXMvdmFsaWRhdG9yL3BlcnNvbi52YWxpZGF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2FkbWluL3NlcnZpY2VzL3BlcnNvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9hZG1pbi91c2Vycy91c2Vycy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2FkbWluL3VzZXJzL3VzZXJzJztcblxuLy8gU2hhcmVkIHRlc3RzIHBhZ2VcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvdGVzdGluZy90ZXN0cy5wYWdlJztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZXN0aW5nIG1vZHVsZSBhbmQgY29tcG9uZW50c1xuLy9cbi8vIFRPRE86IHRvIHJlbW92ZSB3aGVuIG5neC1jb21wb25lbnRzIHdpbGwgYmUgd2VsbCB0ZXN0ZWRcbi8vIChvciBleHBvcnQgaW50byBhIHN1YiBwYWNrYWdlLCBsaWtlICdAc3VtYXJpcy1uZXQvbmd4LWNvbXBvbmVudHMvdGVzdGluZycpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gU2hhcmVkIG1hdGVyaWFsIHRlc3RcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbWF0ZXJpYWwudGVzdGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9hdXRvY29tcGxldGUvdGVzdGluZy9hdXRvY29tcGxldGUudGVzdCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvdGVzdGluZy9sYXRsb25nLnRlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9zd2lwZS90ZXN0aW5nL3N3aXBlLnRlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9kYXRldGltZS90ZXN0aW5nL21hdC1kYXRlLXRpbWUudGVzdCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2RhdGV0aW1lL3Rlc3RpbmcvbWF0LWRhdGUudGVzdCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2RhdGV0aW1lL3Rlc3RpbmcvbWF0LWRhdGVzaG9ydC50ZXN0JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvY2hpcHMvdGVzdGluZy9jaGlwcy50ZXN0JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbnVtcGFkL3Rlc3RpbmcvbnVtcGFkLnRlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC90ZXN0aW5nL29ic2VydmFibGUudGVzdCc7XG5cbi8vIFNoYXJlZCBvdGhlciB0ZXN0XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3NoYXJlZC50ZXN0aW5nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3VwbG9hZC1maWxlL3Rlc3RpbmcvdXBsb2FkLWZpbGUudGVzdGluZyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3VwbG9hZC1maWxlL3Rlc3RpbmcvdXBsb2FkLWZpbGUudGVzdGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC90b2FzdC90b2FzdC50ZXN0aW5nJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvdG9hc3QvdG9hc3QudGVzdGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9pbWFnZS9nYWxsZXJ5L3Rlc3RpbmcvZ2FsbGVyeS5zZXJ2aWNlLnRlc3RpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9pbWFnZS9nYWxsZXJ5L3Rlc3RpbmcvZ2FsbGVyeS50ZXN0aW5nJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvaW1hZ2UvZ2FsbGVyeS90ZXN0aW5nL2dhbGxlcnkudGVzdGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9hdWRpby9hdWRpby50ZXN0aW5nJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvYXVkaW8vYXVkaW8udGVzdGluZy5tb2R1bGUnO1xuXG4vLyBDb3JlIHRlc3RpbmdcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2NvcmUudGVzdGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvdGVzdGluZy9yZWZlcmVudGlhbC1maWx0ZXIubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvdGVzdGluZy9yZWZlcmVudGlhbC52YWxpZGF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvZXJyb3JzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3RhYmxlL3Rlc3RpbmcvdGFibGUudGVzdGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvdGFibGUvdGVzdGluZy90YWJsZS50ZXN0aW5nJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2Zvcm0vdGV4dC1wb3BvdmVyL3Rlc3RpbmcvdGV4dC1wb3BvdmVyLnRlc3RpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2Zvcm0vdGV4dC1wb3BvdmVyL3Rlc3RpbmcvdGV4dC1wb3BvdmVyLnRlc3RpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvZm9ybS9wcm9wZXJ0aWVzL3Rlc3RpbmcvcHJvcGVydGllcy1mb3JtLnRlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvZm9ybS9wcm9wZXJ0aWVzL3Rlc3RpbmcvcHJvcGVydGllcy1mb3JtLnRlc3RpbmcubW9kdWxlJztcbmV4cG9ydCB7c3VnZ2VzdEZyb21BcnJheX0gZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9zZXJ2aWNlcyc7XG5cbi8vIFNvY2lhbCB0ZXN0aW5nXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL3NvY2lhbC50ZXN0aW5nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL3VzZXItZXZlbnQvdGVzdGluZy91c2VyLWV2ZW50LnRlc3RpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC90ZXN0aW5nL3VzZXItZXZlbnQudGVzdGluZyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL3VzZXItZXZlbnQvdGVzdGluZy91c2VyLWV2ZW50LnRlc3Rpbmcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL2pvYi90ZXN0aW5nL2pvYi50ZXN0aW5nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL2pvYi90ZXN0aW5nL2pvYi1wcm9ncmVzc2lvbi50ZXN0aW5nJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zb2NpYWwvam9iL3Rlc3Rpbmcvam9iLXByb2dyZXNzaW9uLnRlc3Rpbmcuc2VydmljZSc7XG5leHBvcnQge01hdEF1dG9jb21wbGV0ZUNvbmZpZ0hvbGRlcn0gZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9hdXRvY29tcGxldGUvbWF0ZXJpYWwuYXV0b2NvbXBsZXRlLmNvbmZpZyc7XG5leHBvcnQge01hdEF1dG9jb21wbGV0ZUZpZWxkQWRkT3B0aW9uc30gZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9hdXRvY29tcGxldGUvbWF0ZXJpYWwuYXV0b2NvbXBsZXRlLmNvbmZpZyc7XG5leHBvcnQge01hdEF1dG9jb21wbGV0ZUZpZWxkQ29uZmlnfSBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9tYXRlcmlhbC5hdXRvY29tcGxldGUuY29uZmlnJztcbmV4cG9ydCB7VGFibGVWYWxpZGF0b3JTZXJ2aWNlfSBmcm9tIFwiLi9zcmMvYXBwL2NvcmUvdGFibGUvdGVzdGluZy90YWJsZS12YWxpZGF0b3Iuc2VydmljZVwiO1xuIl19
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUVkLGNBQWMsc0NBQXNDLENBQUM7QUFFckQsU0FBUztBQUNULGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUUzRSxrQkFBa0I7QUFDbEIsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUNuRixjQUFjLHFFQUFxRSxDQUFDO0FBQ3BGLGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYyxxRUFBcUUsQ0FBQztBQUNwRixjQUFjLG9FQUFvRSxDQUFDO0FBQ25GLGNBQWMsOENBQThDLENBQUM7QUFDN0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQzdFLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyw2REFBNkQsQ0FBQztBQUM1RSxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHVEQUF1RCxDQUFDO0FBQ25GLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUNqRixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDekUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQ25GLGNBQWMsMkRBQTJELENBQUM7QUFDMUUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDakYsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLG1EQUFtRCxDQUFD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LGNBQWMsOERBQThELENBQUM7QUFDN0UsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0scUVBQXFFLENBQUM7QUFHaEgsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sc0RBQXNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBFbnZpcm9ubWVudFxuXG5leHBvcnQgKiBmcm9tICcuL3NyYy9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuXG4vLyBTaGFyZWRcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5leHBvcnQge1NoYXJlZFJvdXRpbmdNb2R1bGV9IGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvc2hhcmVkLXJvdXRpbmcubW9kdWxlJztcblxuLy8gU2hhcmVkIG1hdGVyaWFsXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL21hdGVyaWFsLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2Jvb2xlYW4vYm9vbGVhbi5tb2R1bGUnO1xuZXhwb3J0IHtNYXRCb29sZWFuRmllbGR9IGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvYm9vbGVhbi9tYXRlcmlhbC5ib29sZWFuJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlL21hdGVyaWFsLmF1dG9jb21wbGV0ZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9hdXRvY29tcGxldGUvbWF0ZXJpYWwuYXV0b2NvbXBsZXRlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlL21hdGVyaWFsLmF1dG9jb21wbGV0ZS5jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9hdXRvY29tcGxldGUvbWF0ZXJpYWwuYXV0b2NvbXBsZXRlLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvY2hpcHMvY2hpcHMubW9kdWxlJztcbmV4cG9ydCB7TWF0Q2hpcHNGaWVsZH0gZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9jaGlwcy9tYXRlcmlhbC5jaGlwcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL21hdGVyaWFsLmFuaW1hdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9wYWdpbmF0b3IvbWF0ZXJpYWwucGFnaW5hdG9yLWkxOG4nO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9zdGVwcGVyL21hdGVyaWFsLnN0ZXBwZXItaTE4bic7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2RhdGV0aW1lL2RhdGV0aW1lLm1vZHVsZSc7XG5leHBvcnQge01hdERhdGVTaG9ydH0gZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9kYXRldGltZS9tYXRlcmlhbC5kYXRlc2hvcnQnO1xuZXhwb3J0IHtNYXREYXRlVGltZX0gZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9kYXRldGltZS9tYXRlcmlhbC5kYXRldGltZSc7XG5leHBvcnQge01hdERhdGV9IGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvZGF0ZXRpbWUvbWF0ZXJpYWwuZGF0ZSc7XG5leHBvcnQge01hdExhdExvbmdGaWVsZH0gZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9sYXRsb25nL21hdGVyaWFsLmxhdGxvbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9sYXRsb25nL21hdGVyaWFsLmxhdGxvbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvZHVyYXRpb24vZHVyYXRpb24ubW9kdWxlJztcbmV4cG9ydCB7TWF0RHVyYXRpb259IGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvZHVyYXRpb24vbWF0ZXJpYWwuZHVyYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9udW1wYWQvbnVtcGFkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL251bXBhZC9udW1wYWQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbnVtcGFkL251bXBhZC5hcHBlbmQtdG8taW5wdXQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbnVtcGFkL251bXBhZC5jb250YWluZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9udW1wYWQvbnVtcGFkLmNvbnRlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9udW1wYWQvbnVtcGFkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL3N3aXBlL3N3aXBlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL3N3aXBlL21hdGVyaWFsLnN3aXBlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvYmFkZ2UvYmFkZ2UubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvYmFkZ2UvYmFkZ2UuZGlyZWN0aXZlJztcblxuLy8gU2hhcmVkIGNvbXBvbmVudHNcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvaW5wdXRzJztcbmV4cG9ydCB7QXBwRm9ybUZpZWxkfSBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2Zvcm0vZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZm9ybS9sb2FkaW5nLXNwaW5uZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvdG9vbGJhci90b29sYmFyJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvdG9vbGJhci9tb2RhbC10b29sYmFyJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvdG9vbGJhci90b29sYmFyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2ludGVyY2VwdG9ycy9wcm9nZXNzLmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvdG9hc3QvdG9hc3RzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvaGVscC9oZWxwLm1vZGFsJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZ3VhcmQvY29tcG9uZW50LWRpcnR5Lmd1YXJkJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvdXBsb2FkLWZpbGUvdXBsb2FkLWZpbGUubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC91cGxvYWQtZmlsZS91cGxvYWQtZmlsZS1wb3BvdmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3VwbG9hZC1maWxlL3VwbG9hZC1maWxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2ltYWdlL2dhbGxlcnkvaW1hZ2UtZ2FsbGVyeS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9pbWFnZS9nYWxsZXJ5L2ltYWdlLWdhbGxlcnkubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvaW1hZ2UvaW1hZ2UubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9pbWFnZS9pbWFnZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9zdG9yYWdlL3N0b3JhZ2UtZXhwbG9yZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvc3RvcmFnZS9zdG9yYWdlLWV4cGxvcmVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2xvZ2dpbmcvbG9nLWxldmVsLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbG9nZ2luZy9sb2dnZXIubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9sb2dnaW5nL2xvZ2dpbmctc2VydmljZS5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2xvZ2dpbmcvbG9nZ2luZy1zZXJ2aWNlLmNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2xvZ2dpbmcvbG9nZ2luZy1zZXJ2aWNlLm1vZHVsZSc7XG5cbi8vIFNoYXJlZCBkaXJlY3RpdmVzXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2RpcmVjdGl2ZXMvZGlyZWN0aXZlcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9kaXJlY3RpdmVzL2F1dG9mb2N1cy5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9kaXJlY3RpdmVzL25nLXZhci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9kaXJlY3RpdmVzL2RyYWctYW5kLWRyb3AuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZGlyZWN0aXZlcy9hdXRvdGl0bGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZGlyZWN0aXZlcy9yZXNpemFibGUvcmVzaXphYmxlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2RpcmVjdGl2ZXMvcmVzaXphYmxlL3Jlc2l6YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9kaXJlY3RpdmVzL3Jlc2l6YWJsZS9yZXNpemFibGUubW9kdWxlJztcblxuLy8gU2hhcmVkIHBpcGVzXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL3BpcGVzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL2RhdGUtZm9ybWF0LnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9kYXRlLWZyb20tbm93LnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9kYXRlLWRpZmYtZHVyYXRpb24ucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL2xhdGxvbmctZm9ybWF0LnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9oaWdobGlnaHQucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL251bWJlci1mb3JtYXQucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL2R1cmF0aW9uLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9maWxlLXNpemUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL3Byb3BlcnR5LnBpcGVzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvcGlwZXMvbWF0aC5waXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL2FycmF5cy5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvcGlwZXMvbWFwcy5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvcGlwZXMvc3RyaW5nLnBpcGVzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvcGlwZXMvdHJhbnNsYXRlLWNvbnRleHQucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL25nLWluaXQucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3BpcGVzL2Zvcm0ucGlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9jb2xvcnMucGlwZSc7XG5cbi8vIFNoYXJlZCBzZXJ2aWNlc1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9hdWRpby9hdWRpbyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2ZpbGUvZmlsZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvaW1hZ2UvaW1hZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3NlcnZpY2VzL3N0YXJ0YWJsZS1zZXJ2aWNlLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9zZXJ2aWNlcy9tZW1vcnktZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9zZXJ2aWNlcy9wcm9ncmVzcy1iYXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3NlcnZpY2VzL3RyYW5zbGF0ZS1jb250ZXh0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9zZXJ2aWNlcy9qb2IudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9zdG9yYWdlL3N0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3N0b3JhZ2Uvc3RvcmFnZS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3ZhbGlkYXRvci9mb3JtLWVycm9yLWFkYXB0ZXIuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9kZWJ1Zy9kZWJ1Zy1zZXJ2aWNlLmNsYXNzJztcblxuLy8gU2hhcmVkIG90aGVyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZGF0ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9mdW5jdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9zZXJ2aWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2Zvcm1zJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvb2JzZXJ2YWJsZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9ldmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9hbGVydHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9wbGF0Zm9ybXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2ZpbGUvZmlsZS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2ZpbGUvY3N2LnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvZmlsZS9pbWFnZXMudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9maWxlL2pzb24udXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9maWxlL3VyaS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2hvdGtleXMvc2hhcmVkLWhvdGtleXMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvaG90a2V5cy9ob3RrZXlzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9ob3RrZXlzL2RpYWxvZy9ob3RrZXlzLWRpYWxvZy5jb21wb25lbnQnO1xuZXhwb3J0IHtDb2xvciwgQ29sb3JOYW1lLCBDb2xvclNjYWxlLCBDb2xvclNjYWxlTGVnZW5kLCBDb2xvclNjYWxlT3B0aW9ucywgQ29sb3JHcmFkaWVudE9wdGlvbnMsIENvbG9yU2NhbGVMZWdlbmRJdGVtfSBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2dyYXBoL2dyYXBoLWNvbG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2dyYXBoL2NvbG9ycy51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2dlc3R1cmUvZ2VzdHVyZS1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9nZXN0dXJlL2hhbW1lci51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3ZhbGlkYXRvci92YWxpZGF0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvdmFsaWRhdG9yL2Zvcm0tZXJyb3ItYWRhcHRlci5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbGF0bG9uZy51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2RlYnVnL2RlYnVnLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2RlYnVnL2RlYnVnLmNvbXBvbmVudCc7XG5cbi8vIENvcmVcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2NvcmUubW9kdWxlJztcblxuLy8gQ29yZSBtb2RlbFxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvbW9kZWwvYWNjb3VudC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9tb2RlbC9jb25maWcubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvbW9kZWwvZGVwYXJ0bWVudC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvbW9kZWwvZmlsdGVyLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL2hpc3RvcnkubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvbW9kZWwvbW9kZWwuZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9tb2RlbC9wZWVyLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL3BlcnNvbi5tb2RlbCc7XG5leHBvcnQgeyBJUmVmZXJlbnRpYWxSZWYsIFJlZmVyZW50aWFsUmVmLFxuICBCYXNlUmVmZXJlbnRpYWwsIFJlZmVyZW50aWFsLCBSZWZlcmVudGlhbFV0aWxzLFxuICBSZWZlcmVudGlhbEFzT2JqZWN0T3B0aW9ucyxcbiAgcmVmZXJlbnRpYWxUb1N0cmluZywgcmVmZXJlbnRpYWxzVG9TdHJpbmcsXG4gIElTdGF0dXMsIFN0YXR1c0xpc3QsIFN0YXR1c0J5SWQsXG4gIE1JTklGWV9FTlRJVFlfRk9SX0xPQ0FMX1NUT1JBR0UsIE1JTklGWV9FTlRJVFlfRk9SX1BPRCB9IGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL3JlZmVyZW50aWFsLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL3NldHRpbmdzLm1vZGVsJztcblxuLy8gR3JhcGhRTFxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvZ3JhcGhxbC9ncmFwaHFsLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9ncmFwaHFsL2dyYXBocWwuc2VydmljZSc7XG5cbi8vIENvcmUgcGlwZXNcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL3BpcGVzL2FjY291bnQucGlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvcGlwZXMvZGVwYXJ0bWVudC10by1zdHJpbmcucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9waXBlcy9wZXJzb24tdG8tc3RyaW5nLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvcGlwZXMvdXNhZ2UtbW9kZS5waXBlcyc7XG5cbi8vIENvcmUgc2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL3BsYXRmb3JtLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvbmV0d29yay5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL25ldHdvcmsudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuZXhwb3J0IHtDT1JFX0NPTkZJR19PUFRJT05TfSBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9jb25maWcvY29yZS5jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvY3J5cHRvLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvYXV0aC1ndWFyZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL2Jhc2U1OCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9iYXNlLWdyYXBocWwtc2VydmljZS5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9iYXNlLWVudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL3N0b3JhZ2UvZW50aXRpZXMtc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL3N0b3JhZ2UvZW50aXR5LXN0b3JlLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL3ZhbGlkYXRvci9iYXNlLnZhbGlkYXRvci5jbGFzcyc7XG5cbi8vIENvcmUgY29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvZm9ybS9mb3JtLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2Zvcm0vZm9ybS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9mb3JtL2Zvcm0ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2Zvcm0vYnV0dG9ucy9mb3JtLWJ1dHRvbnMtYmFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9mb3JtL2J1dHRvbnMvZm9ybS1idXR0b25zLWJhci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvZm9ybS9lbnRpdHkvZWRpdG9yLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2Zvcm0vZW50aXR5L2VudGl0eS1lZGl0b3IuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvZm9ybS9lbnRpdHkvZW50aXR5LWVkaXRvci1tb2RhbC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9mb3JtL2VudGl0eS9lbnRpdHktbWV0YWRhdGEuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2Zvcm0vZW50aXR5L2VudGl0eS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvZm9ybS9saXN0L2xpc3QuZm9ybSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9mb3JtL2xpc3QvbGlzdC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvZm9ybS9wcm9wZXJ0aWVzL3Byb3BlcnRpZXMuZm9ybSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvZm9ybS90ZXh0LXBvcG92ZXIvdGV4dC1mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9mb3JtL3RleHQtcG9wb3Zlci90ZXh0LXBvcG92ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2Zvcm0vdGV4dC1wb3BvdmVyL3RleHQtcG9wb3Zlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvdGFibGUvdGFibGUubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvdGFibGUvdGFibGUuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvdGFibGUvYXN5bmMtdGFibGUuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvdGFibGUvdGFibGUudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvdGFibGUvdGFibGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3RhYmxlL21lbW9yeS10YWJsZS5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS90YWJsZS9lbnRpdGllcy10YWJsZS1kYXRhc291cmNlLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3RhYmxlL2VudGl0aWVzLWFzeW5jLXRhYmxlLWRhdGFzb3VyY2UuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvdGFibGUvdGFibGUtc2VsZWN0LWNvbHVtbnMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3RhYmxlL2FjdGlvbnMtY29sdW1uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9pY29uL2ljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2ljb24vaWNvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvaG9tZS9ob21lJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2hvbWUvaG9tZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvc2V0dGluZ3Mvc2V0dGluZ3MucGFnZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9zZXR0aW5ncy9zZXR0aW5ncy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvYWNjb3VudC9hY2NvdW50LnBhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvYWNjb3VudC9hY2NvdW50Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9hdXRoL2F1dGguZm9ybSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9hdXRoL2F1dGgubW9kYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvYXV0aC9hdXRoLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9yZWdpc3Rlci9yZWdpc3Rlci1jb25maXJtLnBhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvcmVnaXN0ZXIvcmVnaXN0ZXIuZm9ybSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9yZWdpc3Rlci9yZWdpc3Rlci5tb2RhbCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9yZWdpc3Rlci9yZWdpc3Rlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvYWJvdXQvYWJvdXQubW9kYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvYWJvdXQvYWJvdXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3BlZXIvc2VsZWN0LXBlZXIubW9kYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvcGVlci9zZWxlY3QtcGVlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvaW5zdGFsbC9pbnN0YWxsLXVwZ3JhZGUtY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvaW5zdGFsbC9pbnN0YWxsLXVwZ3JhZGUtY2FyZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvbWVudS9tZW51LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9tZW51L21lbnUubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvbWVudS9tZW51Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9tZW51L21lbnUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9vZmZsaW5lL3VwZGF0ZS1vZmZsaW5lLW1vZGUtY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2NvcmUvb2ZmbGluZS91cGRhdGUtb2ZmbGluZS1tb2RlLWNhcmQubW9kdWxlJztcblxuLy8gQ29yZSBkZWNvcmF0b3JcbmV4cG9ydCB7RW50aXR5Q2xhc3MsIEVudGl0eUNsYXNzZXN9IGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL2VudGl0eS5kZWNvcmF0b3JzJztcblxuXG4vLyBTb2NpYWxcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zb2NpYWwvc29jaWFsLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL3NvY2lhbC5lcnJvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L3VzZXItZXZlbnQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC91c2VyLWV2ZW50Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC91c2VyLWV2ZW50LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L25vdGlmaWNhdGlvbi91c2VyLWV2ZW50LW5vdGlmaWNhdGlvbi5pY29uJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC9ub3RpZmljYXRpb24vdXNlci1ldmVudC1ub3RpZmljYXRpb24ubGlzdCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL2pvYi9qb2IubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zb2NpYWwvam9iL3Byb2dyZXNzaW9uL2pvYi1wcm9ncmVzc2lvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zb2NpYWwvam9iL3Byb2dyZXNzaW9uL2pvYi1wcm9ncmVzc2lvbi5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL2pvYi9wcm9ncmVzc2lvbi9qb2ItcHJvZ3Jlc3Npb24uaWNvbic7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL2pvYi9wcm9ncmVzc2lvbi9qb2ItcHJvZ3Jlc3Npb24ubGlzdCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL21lc3NhZ2UvbWVzc2FnZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NvY2lhbC9tZXNzYWdlL21lc3NhZ2UubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NvY2lhbC9tZXNzYWdlL21lc3NhZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL21lc3NhZ2UvbWVzc2FnZS5mb3JtJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zb2NpYWwvbWVzc2FnZS9tZXNzYWdlLm1vZGFsJztcblxuLy8gQWRtaW5cbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9hZG1pbi9hZG1pbi5tb2R1bGUnO1xuZXhwb3J0IHtBZG1pblJvdXRpbmdNb2R1bGV9IGZyb20gJy4vc3JjL2FwcC9hZG1pbi9hZG1pbi1yb3V0aW5nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvYWRtaW4vc2VydmljZXMvZmlsdGVyL3BlcnNvbi5maWx0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL2FkbWluL3NlcnZpY2VzL3ZhbGlkYXRvci9wZXJzb24udmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9hZG1pbi9zZXJ2aWNlcy9wZXJzb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvYWRtaW4vdXNlcnMvdXNlcnMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9hZG1pbi91c2Vycy91c2Vycyc7XG5cbi8vIFNoYXJlZCB0ZXN0cyBwYWdlXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3Rlc3RpbmcvdGVzdHMucGFnZSc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGVzdGluZyBtb2R1bGUgYW5kIGNvbXBvbmVudHNcbi8vXG4vLyBUT0RPOiB0byByZW1vdmUgd2hlbiBuZ3gtY29tcG9uZW50cyB3aWxsIGJlIHdlbGwgdGVzdGVkXG4vLyAob3IgZXhwb3J0IGludG8gYSBzdWIgcGFja2FnZSwgbGlrZSAnQHN1bWFyaXMtbmV0L25neC1jb21wb25lbnRzL3Rlc3RpbmcnKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNoYXJlZCBtYXRlcmlhbCB0ZXN0XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL21hdGVyaWFsLnRlc3RpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlL3Rlc3RpbmcvYXV0b2NvbXBsZXRlLnRlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9sYXRsb25nL3Rlc3RpbmcvbGF0bG9uZy50ZXN0JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvc3dpcGUvdGVzdGluZy9zd2lwZS50ZXN0JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvZGF0ZXRpbWUvdGVzdGluZy9tYXQtZGF0ZS10aW1lLnRlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9kYXRldGltZS90ZXN0aW5nL21hdC1kYXRlLnRlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9kYXRldGltZS90ZXN0aW5nL21hdC1kYXRlc2hvcnQudGVzdCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2NoaXBzL3Rlc3RpbmcvY2hpcHMudGVzdCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL251bXBhZC90ZXN0aW5nL251bXBhZC50ZXN0JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvdGVzdGluZy9vYnNlcnZhYmxlLnRlc3QnO1xuXG4vLyBTaGFyZWQgb3RoZXIgdGVzdFxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9zaGFyZWQudGVzdGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC91cGxvYWQtZmlsZS90ZXN0aW5nL3VwbG9hZC1maWxlLnRlc3RpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC91cGxvYWQtZmlsZS90ZXN0aW5nL3VwbG9hZC1maWxlLnRlc3RpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvdG9hc3QvdG9hc3QudGVzdGluZyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL3RvYXN0L3RvYXN0LnRlc3RpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvaW1hZ2UvZ2FsbGVyeS90ZXN0aW5nL2dhbGxlcnkuc2VydmljZS50ZXN0aW5nJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvaW1hZ2UvZ2FsbGVyeS90ZXN0aW5nL2dhbGxlcnkudGVzdGluZyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2ltYWdlL2dhbGxlcnkvdGVzdGluZy9nYWxsZXJ5LnRlc3RpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvYXVkaW8vYXVkaW8udGVzdGluZyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc2hhcmVkL2F1ZGlvL2F1ZGlvLnRlc3RpbmcubW9kdWxlJztcblxuLy8gQ29yZSB0ZXN0aW5nXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9jb3JlLnRlc3RpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL3Rlc3RpbmcvcmVmZXJlbnRpYWwtZmlsdGVyLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL3Rlc3RpbmcvcmVmZXJlbnRpYWwudmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL2Vycm9ycyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS90YWJsZS90ZXN0aW5nL3RhYmxlLnRlc3RpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL3RhYmxlL3Rlc3RpbmcvdGFibGUudGVzdGluZyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9mb3JtL3RleHQtcG9wb3Zlci90ZXN0aW5nL3RleHQtcG9wb3Zlci50ZXN0aW5nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvY29yZS9mb3JtL3RleHQtcG9wb3Zlci90ZXN0aW5nL3RleHQtcG9wb3Zlci50ZXN0aW5nJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2Zvcm0vcHJvcGVydGllcy90ZXN0aW5nL3Byb3BlcnRpZXMtZm9ybS50ZXN0JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwcC9jb3JlL2Zvcm0vcHJvcGVydGllcy90ZXN0aW5nL3Byb3BlcnRpZXMtZm9ybS50ZXN0aW5nLm1vZHVsZSc7XG5leHBvcnQge3N1Z2dlc3RGcm9tQXJyYXl9IGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvc2VydmljZXMnO1xuXG4vLyBTb2NpYWwgdGVzdGluZ1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NvY2lhbC9zb2NpYWwudGVzdGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L3Rlc3RpbmcvdXNlci1ldmVudC50ZXN0aW5nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL3VzZXItZXZlbnQvdGVzdGluZy91c2VyLWV2ZW50LnRlc3RpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L3Rlc3RpbmcvdXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NvY2lhbC9qb2IvdGVzdGluZy9qb2IudGVzdGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYXBwL3NvY2lhbC9qb2IvdGVzdGluZy9qb2ItcHJvZ3Jlc3Npb24udGVzdGluZyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcHAvc29jaWFsL2pvYi90ZXN0aW5nL2pvYi1wcm9ncmVzc2lvbi50ZXN0aW5nLnNlcnZpY2UnO1xuZXhwb3J0IHtNYXRBdXRvY29tcGxldGVDb25maWdIb2xkZXJ9IGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlL21hdGVyaWFsLmF1dG9jb21wbGV0ZS5jb25maWcnO1xuZXhwb3J0IHtNYXRBdXRvY29tcGxldGVGaWVsZEFkZE9wdGlvbnN9IGZyb20gJy4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlL21hdGVyaWFsLmF1dG9jb21wbGV0ZS5jb25maWcnO1xuZXhwb3J0IHtNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZ30gZnJvbSAnLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9hdXRvY29tcGxldGUvbWF0ZXJpYWwuYXV0b2NvbXBsZXRlLmNvbmZpZyc7XG5leHBvcnQge1RhYmxlVmFsaWRhdG9yU2VydmljZX0gZnJvbSBcIi4vc3JjL2FwcC9jb3JlL3RhYmxlL3Rlc3RpbmcvdGFibGUtdmFsaWRhdG9yLnNlcnZpY2VcIjtcbiJdfQ==
@@ -24,7 +24,7 @@ import * as i1 from "@ionic/angular";
24
24
  import * as i2 from "apollo-angular";
25
25
  import * as i3 from "apollo-angular/http";
26
26
  import * as i4 from "../services/network.service";
27
- import * as i5 from "../../shared/services/storage/storage.service";
27
+ import * as i5 from "../../shared/storage/storage.service";
28
28
  import * as i6 from "../services/crypto.service";
29
29
  // Workaround for issue https://github.com/ng-packagr/ng-packagr/issues/2215
30
30
  const QueueLink = unwrapESModule(queueLinkImported);
@@ -746,4 +746,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
746
746
  type: Inject,
747
747
  args: [APP_GRAPHQL_FRAGMENTS]
748
748
  }] }]; } });
749
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2dyYXBocWwvZ3JhcGhxbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxFQUFFLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sRUFFTCxZQUFZLEVBQ1osVUFBVSxFQUdWLGFBQWEsRUFFYixhQUFhLEVBSWQsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFDOUUsT0FBTyxFQUFDLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXZILE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHM0UsT0FBTyxFQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBZSxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pLLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLGlCQUFpQixNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sdUJBQXVCLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxrQkFBa0IsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQUMsV0FBVyxFQUFVLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRWxGLE9BQU8sRUFBQyxX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QUksS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQztTQUNqRjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7OzRHQWwyQlUsY0FBYyxpTEErQmYsV0FBVyxhQUNDLHlCQUF5Qiw2QkFDekIscUJBQXFCO2dIQWpDaEMsY0FBYyxjQUZiLE1BQU07NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWdDSSxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHlCQUF5Qjs7MEJBQzVDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlLCBvZiwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Fwb2xsbywgRXh0cmFTdWJzY3JpcHRpb25PcHRpb25zLCBRdWVyeVJlZn0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xuaW1wb3J0IHtcbiAgQXBvbGxvQ2FjaGUsXG4gIEFwb2xsb0NsaWVudCxcbiAgQXBvbGxvTGluayxcbiAgQXBvbGxvUXVlcnlSZXN1bHQsXG4gIEZldGNoUG9saWN5LFxuICBJbk1lbW9yeUNhY2hlLFxuICBNdXRhdGlvblVwZGF0ZXJGbixcbiAgTmV0d29ya1N0YXR1cyxcbiAgT3BlcmF0aW9uVmFyaWFibGVzLFxuICBUeXBlUG9saWNpZXMsXG4gIFdhdGNoUXVlcnlGZXRjaFBvbGljeVxufSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7RXJyb3JDb2RlcywgU2VydmVyRXJyb3JDb2RlcywgU2VydmljZUVycm9yfSBmcm9tICcuLi9zZXJ2aWNlcy9lcnJvcnMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBmaXJzdCwgbWFwLCBtZXJnZU1hcCwgdGFrZVVudGlsLCB0aHJvdHRsZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05ldHdvcmtTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHtDb25uZWN0aW9uVHlwZX0gZnJvbSAnLi4vc2VydmljZXMvbmV0d29yay50eXBlcyc7XG5pbXBvcnQge0FwcFdlYlNvY2tldCwgY3JlYXRlVHJhY2tlckxpbmssIEVtcHR5T2JqZWN0LCBpc011dGF0aW9uT3BlcmF0aW9uLCBpc1N1YnNjcmlwdGlvbk9wZXJhdGlvbiwgcmVzdG9yZVRyYWNrZWRRdWVyaWVzLCBTdG9yYWdlU2VydmljZVdyYXBwZXJ9IGZyb20gJy4vZ3JhcGhxbC51dGlscyc7XG5pbXBvcnQge1JldHJ5TGlua30gZnJvbSAnQGFwb2xsby9jbGllbnQvbGluay9yZXRyeSc7XG5pbXBvcnQgcXVldWVMaW5rSW1wb3J0ZWQgZnJvbSAnYXBvbGxvLWxpbmstcXVldWUnO1xuaW1wb3J0IHNlcmlhbGl6aW5nTGlua0ltcG9ydGVkIGZyb20gJ2Fwb2xsby1saW5rLXNlcmlhbGl6ZSc7XG5pbXBvcnQgbG9nZ2VyTGlua0ltcG9ydGVkIGZyb20gJ2Fwb2xsby1saW5rLWxvZ2dlcic7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge0VudGl0eVV0aWxzLCBJRW50aXR5fSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtpc05pbCwgaXNOb3RFbXB0eUFycmF5LCBpc05vdE5pbCwgdG9OdW1iZXJ9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHtSZXNvbHZlcnN9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUvdHlwZXMnO1xuaW1wb3J0IHtIdHRwSGVhZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtIdHRwTGluaywgT3B0aW9uc30gZnJvbSAnYXBvbGxvLWFuZ3VsYXIvaHR0cCc7XG5pbXBvcnQge3BlcnNpc3RDYWNoZSwgUGVyc2lzdGVudFN0b3JhZ2V9IGZyb20gJ2Fwb2xsbzMtY2FjaGUtcGVyc2lzdCc7XG5pbXBvcnQge0Vycm9yUG9saWN5LCBNdXRhdGlvbkJhc2VPcHRpb25zfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlL3dhdGNoUXVlcnlPcHRpb25zJztcbmltcG9ydCB7Q2FjaGV9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NhY2hlL2NvcmUvdHlwZXMvQ2FjaGUnO1xuaW1wb3J0IHtFTlZJUk9OTUVOVH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7Q3J5cHRvU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvY3J5cHRvLnNlcnZpY2UnO1xuaW1wb3J0IHtQcm9wZXJ0aWVzTWFwfSBmcm9tICcuLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHtTdGFydGFibGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvc3RhcnRhYmxlLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtpc01vYmlsZX0gZnJvbSAnLi4vLi4vc2hhcmVkL3BsYXRmb3Jtcyc7XG5pbXBvcnQge1N0b3JhZ2VTZXJ2aWNlfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvc3RvcmFnZS9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHtHcmFwaFFMV3NMaW5rfSBmcm9tICdAYXBvbGxvL2NsaWVudC9saW5rL3N1YnNjcmlwdGlvbnMnO1xuaW1wb3J0IHtDbGllbnRPcHRpb25zLCBjcmVhdGVDbGllbnR9IGZyb20gJ2dyYXBocWwtd3MnO1xuaW1wb3J0IHt1bndyYXBFU01vZHVsZX0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZHVsZXMnO1xuaW1wb3J0IHtjcmVhdGVGcmFnbWVudFJlZ2lzdHJ5fSBmcm9tICdAYXBvbGxvL2NsaWVudC9jYWNoZS9pbm1lbW9yeS9mcmFnbWVudFJlZ2lzdHJ5JztcbmltcG9ydCB7RG9jdW1lbnROb2RlfSBmcm9tICdncmFwaHFsJztcblxuLy8gV29ya2Fyb3VuZCBmb3IgaXNzdWUgaHR0cHM6Ly9naXRodWIuY29tL25nLXBhY2thZ3IvbmctcGFja2Fnci9pc3N1ZXMvMjIxNVxuY29uc3QgUXVldWVMaW5rID0gdW53cmFwRVNNb2R1bGUocXVldWVMaW5rSW1wb3J0ZWQpO1xuY29uc3QgU2VyaWFsaXppbmdMaW5rID0gdW53cmFwRVNNb2R1bGUoc2VyaWFsaXppbmdMaW5rSW1wb3J0ZWQpO1xuY29uc3QgbG9nZ2VyTGluayA9IHVud3JhcEVTTW9kdWxlKGxvZ2dlckxpbmtJbXBvcnRlZCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2F0Y2hRdWVyeU9wdGlvbnM8Vj4ge1xuICBxdWVyeTogYW55O1xuICB2YXJpYWJsZXM/OiBWO1xuICBlcnJvcj86IFNlcnZpY2VFcnJvcjtcbiAgZmV0Y2hQb2xpY3k/OiBXYXRjaFF1ZXJ5RmV0Y2hQb2xpY3k7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXV0YXRlUXVlcnlPcHRpb25zPFQsIFYgPSBPcGVyYXRpb25WYXJpYWJsZXM+IGV4dGVuZHMgTXV0YXRpb25CYXNlT3B0aW9uczxULCBWPiB7XG4gIG11dGF0aW9uOiBhbnk7XG4gIHZhcmlhYmxlcz86IFY7XG4gIGVycm9yPzogU2VydmljZUVycm9yO1xuICBjb250ZXh0Pzoge1xuICAgIHNlcmlhbGl6YXRpb25LZXk/OiBzdHJpbmc7XG4gICAgdHJhY2tlZD86IGJvb2xlYW47XG4gICAgdGltZW91dD86IG51bWJlcjtcbiAgfTtcbiAgb3B0aW1pc3RpY1Jlc3BvbnNlPzogVDtcbiAgb2ZmbGluZVJlc3BvbnNlPzogVCB8ICgoY29udGV4dDogYW55KSA9PiBQcm9taXNlPFQ+KTtcbiAgdXBkYXRlPzogTXV0YXRpb25VcGRhdGVyRm48VD47XG4gIGZvcmNlT2ZmbGluZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBBUFBfR1JBUEhRTF9UWVBFX1BPTElDSUVTID0gbmV3IEluamVjdGlvblRva2VuPFR5cGVQb2xpY2llcz4oJ2dyYXBocWxUeXBlUG9saWNpZXMnKTtcblxuZXhwb3J0IGNvbnN0IEFQUF9HUkFQSFFMX0ZSQUdNRU5UUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEb2N1bWVudE5vZGVbXT4oJ2dyYXBocWxGcmFnbWVudHMnKTtcblxuXG5leHBvcnQgdHlwZSBDb25uZWN0aW9uUGFyYW1zID0ge1xuICBhdXRoVG9rZW4/OiBzdHJpbmc7XG4gIGF1dGhCYXNpYz86IHN0cmluZztcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEdyYXBocWxTZXJ2aWNlIGV4dGVuZHMgU3RhcnRhYmxlU2VydmljZTxBcG9sbG9DbGllbnQ8YW55Pj4ge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25ldHdvcmtTdGF0dXNDaGFuZ2VkJDogT2JzZXJ2YWJsZTxDb25uZWN0aW9uVHlwZT47XG5cbiAgcHJpdmF0ZSBodHRwUGFyYW1zOiBPcHRpb25zO1xuICBwcml2YXRlIHdzUGFyYW1zOiBDbGllbnRPcHRpb25zPENvbm5lY3Rpb25QYXJhbXM+O1xuICBwcml2YXRlIGNvbm5lY3Rpb25QYXJhbXM6IENvbm5lY3Rpb25QYXJhbXMgPSB7fTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdEZldGNoUG9saWN5OiBXYXRjaFF1ZXJ5RmV0Y2hQb2xpY3k7XG4gIHByaXZhdGUgb25OZXR3b3JrRXJyb3IgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIGN1c3RvbUVycm9yczogUHJvcGVydGllc01hcCA9IHt9O1xuICBwcml2YXRlIG9uUmVzZXRBdXRoICA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgZ2V0IGNsaWVudCgpOiBBcG9sbG9DbGllbnQ8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cblxuICBnZXQgY2FjaGUoKTogQXBvbGxvQ2FjaGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuYXBvbGxvLmNsaWVudC5jYWNoZTtcbiAgfVxuXG4gIGdldCBkZWZhdWx0RmV0Y2hQb2xpY3koKTogV2F0Y2hRdWVyeUZldGNoUG9saWN5IHtcbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdEZldGNoUG9saWN5O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgcHJpdmF0ZSBhcG9sbG86IEFwb2xsbyxcbiAgICBwcml2YXRlIGh0dHBMaW5rOiBIdHRwTGluayxcbiAgICBwcml2YXRlIG5ldHdvcms6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjcnlwdG9TZXJ2aWNlOiBDcnlwdG9TZXJ2aWNlLFxuICAgIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9HUkFQSFFMX1RZUEVfUE9MSUNJRVMpIHByaXZhdGUgdHlwZVBvbGljaWVzOiBUeXBlUG9saWNpZXMsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBUFBfR1JBUEhRTF9GUkFHTUVOVFMpIHByaXZhdGUgZnJhZ21lbnRzOiBEb2N1bWVudE5vZGVbXVxuICApIHtcbiAgICBzdXBlcihwbGF0Zm9ybSk7IC8vIFdhaXQgcGxhdGZvcm1cblxuICAgIHRoaXMuX2RlYnVnID0gIWVudmlyb25tZW50LnByb2R1Y3Rpb247XG4gICAgdGhpcy5fZGVmYXVsdEZldGNoUG9saWN5ID0gZW52aXJvbm1lbnQuYXBvbGxvRmV0Y2hQb2xpY3k7XG5cbiAgICAvLyBMaXN0ZW4gbmV0d29yayBzdGF0dXNcbiAgICB0aGlzLl9uZXR3b3JrU3RhdHVzQ2hhbmdlZCQgPSBuZXR3b3JrLm9uTmV0d29ya1N0YXR1c0NoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoaXNOb3ROaWwpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICApO1xuXG4gICAgLy8gV2hlbiBnZXR0aW5nIG5ldHdvcmsgZXJyb3I6IHRyeSB0byBwaW5nIHBlZXIsIGFuZCB0b2dnbGUgdG8gb2ZmbGluZVxuICAgIHRoaXMub25OZXR3b3JrRXJyb3JcbiAgICAgIC5waXBlKFxuICAgICAgICB0aHJvdHRsZVRpbWUoMzAwKSxcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMubmV0d29yay5vbmxpbmUpLFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLm5ldHdvcmsuY2hlY2tQZWVyQWxpdmUoKSksXG4gICAgICAgIGZpbHRlcihhbGl2ZSA9PiAhYWxpdmUpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMubmV0d29yay5zZXRGb3JjZU9mZmxpbmUodHJ1ZSwge3Nob3dUb2FzdDogdHJ1ZX0pKTtcblxuICB9XG5cbiAgYXN5bmMgc2V0QXV0aFRva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tncmFwaHFsXSBBcHBseSB0b2tlbiBhdXRoZW50aWNhdGlvbiB0byBoZWFkZXJzJyk7XG4gICAgICB0aGlzLmNvbm5lY3Rpb25QYXJhbXMuYXV0aFRva2VuID0gdG9rZW47XG4gICAgfVxuICAgIC8vIENsZWFuIGF1dGggdG9rZW5cbiAgICBlbHNlIGlmICh0aGlzLmNvbm5lY3Rpb25QYXJhbXMuYXV0aFRva2VuKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbZ3JhcGhxbF0gUmVtb3ZlIHRva2VuIGF1dGhlbnRpY2F0aW9uIGZyb20gaGVhZGVycycpO1xuICAgICAgZGVsZXRlIHRoaXMuY29ubmVjdGlvblBhcmFtcy5hdXRoVG9rZW47XG5cbiAgICAgIGF3YWl0IHRoaXMuY2xlYXJDYWNoZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNldEF1dGhCYXNpYyhiYXNpYzogc3RyaW5nKSB7XG4gICAgaWYgKGJhc2ljKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbZ3JhcGhxbF0gQXBwbHkgYmFzaWMgYXV0aGVudGljYXRpb24gdG8gaGVhZGVycycpO1xuICAgICAgdGhpcy5jb25uZWN0aW9uUGFyYW1zLmF1dGhCYXNpYyA9IGJhc2ljO1xuICAgIH1cbiAgICAvLyBDbGVhbiBhdXRoIGJhc2ljXG4gICAgZWxzZSBpZiAodGhpcy5jb25uZWN0aW9uUGFyYW1zLmF1dGhCYXNpYykge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW2dyYXBocWxdIFJlbW92ZSBiYXNpYyBhdXRoZW50aWNhdGlvbiBmcm9tIGhlYWRlcnMnKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmNvbm5lY3Rpb25QYXJhbXMuYXV0aEJhc2ljO1xuXG4gICAgICBhd2FpdCB0aGlzLmNsZWFyQ2FjaGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWxsb3cgdG8gYWRkIGEgZmllbGQgcmVzb2x2ZXJcbiAgICogIChzZWUgZG9jOiBodHRwczovL3d3dy5hcG9sbG9ncmFwaHFsLmNvbS9kb2NzL3JlYWN0L2RhdGEvbG9jYWwtc3RhdGUvI2hhbmRsaW5nLWNsaWVudC1maWVsZHMtd2l0aC1yZXNvbHZlcnMpXG4gICAqXG4gICAqIEBwYXJhbSByZXNvbHZlcnNcbiAgICovXG4gIGFzeW5jIGFkZFJlc29sdmVyKHJlc29sdmVyczogUmVzb2x2ZXJzIHwgUmVzb2x2ZXJzW10pIHtcbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIHRoaXMuYXBvbGxvLmNsaWVudC5hZGRSZXNvbHZlcnMocmVzb2x2ZXJzKTtcbiAgfVxuXG4gIGFzeW5jIHF1ZXJ5PFQsIFYgPSBFbXB0eU9iamVjdD4ob3B0czoge1xuICAgIHF1ZXJ5OiBhbnk7XG4gICAgdmFyaWFibGVzPzogVjtcbiAgICBlcnJvcj86IFNlcnZpY2VFcnJvcjtcbiAgICBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5O1xuICB9KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcbiAgICBsZXQgcmVzO1xuICAgIHRyeSB7XG4gICAgICByZXMgPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeTxBcG9sbG9RdWVyeVJlc3VsdDxUPiwgVj4oe1xuICAgICAgICBxdWVyeTogb3B0cy5xdWVyeSxcbiAgICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlcyxcbiAgICAgICAgZmV0Y2hQb2xpY3k6IG9wdHMuZmV0Y2hQb2xpY3kgfHwgKHRoaXMuX2RlZmF1bHRGZXRjaFBvbGljeSBhcyBGZXRjaFBvbGljeSkgfHwgdW5kZWZpbmVkXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJlcyA9IHRoaXMudG9BcG9sbG9FcnJvcjxUPihlcnIsIG9wdHMuZXJyb3IpO1xuICAgIH1cbiAgICBpZiAocmVzLmVycm9ycykge1xuICAgICAgdGhyb3cgcmVzLmVycm9yc1swXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5kYXRhO1xuICB9XG5cbiAgd2F0Y2hRdWVyeVJlZjxULCBWID0gRW1wdHlPYmplY3Q+KG9wdHM6IFdhdGNoUXVlcnlPcHRpb25zPFY+KTogUXVlcnlSZWY8VCwgVj4ge1xuICAgIHJldHVybiB0aGlzLmFwb2xsby53YXRjaFF1ZXJ5PFQsIFY+KHtcbiAgICAgIHF1ZXJ5OiBvcHRzLnF1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlcyxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRzLmZldGNoUG9saWN5IHx8ICh0aGlzLl9kZWZhdWx0RmV0Y2hQb2xpY3kgYXMgRmV0Y2hQb2xpY3kpIHx8IHVuZGVmaW5lZCxcbiAgICAgIG5vdGlmeU9uTmV0d29ya1N0YXR1c0NoYW5nZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgcXVlcnlSZWZWYWx1ZXNDaGFuZ2VzPFQsIFYgPSBFbXB0eU9iamVjdD4ocXVlcnlSZWY6IFF1ZXJ5UmVmPFQsIFY+LCBvcHRzOiBXYXRjaFF1ZXJ5T3B0aW9uczxWPik6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiBxdWVyeVJlZlxuICAgICAgLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhpcy5vbkFwb2xsb0Vycm9yPFQ+KGVycm9yLCBvcHRzLmVycm9yKSksXG4gICAgICAgIGZpbHRlcih2YWx1ZSA9PiB2YWx1ZS5uZXR3b3JrU3RhdHVzID09PSBOZXR3b3JrU3RhdHVzLnJlYWR5IHx8IHZhbHVlLm5ldHdvcmtTdGF0dXMgPT09IE5ldHdvcmtTdGF0dXMuZXJyb3IpLFxuICAgICAgICBtYXAoKHtkYXRhLCBlcnJvcnN9KSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9ycykge1xuICAgICAgICAgICAgdGhyb3cgZXJyb3JzWzBdO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICB3YXRjaFF1ZXJ5PFQsIFYgPSBFbXB0eU9iamVjdD4ob3B0czogV2F0Y2hRdWVyeU9wdGlvbnM8Vj4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCBxdWVyeVJlZjogUXVlcnlSZWY8VCwgVj4gPSB0aGlzLndhdGNoUXVlcnlSZWYob3B0cyk7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlSZWZWYWx1ZXNDaGFuZ2VzKHF1ZXJ5UmVmLCBvcHRzKTtcbiAgfVxuXG4gIGFzeW5jIG11dGF0ZTxULCBWID0gRW1wdHlPYmplY3Q+KG9wdHM6IE11dGF0ZVF1ZXJ5T3B0aW9uczxULCBWPik6IFByb21pc2U8VD4ge1xuXG4gICAgLy8gSWYgb2ZmbGluZSwgY29tcHV0ZSBhbiBvcHRpbWlzdGljIHJlc3BvbnNlIGZvciB0cmFja2VkIHF1ZXJpZXNcbiAgICBpZiAoKG9wdHMuZm9yY2VPZmZsaW5lIHx8IHRoaXMubmV0d29yay5vZmZsaW5lKSAmJiBvcHRzLm9mZmxpbmVSZXNwb25zZSkge1xuICAgICAgaWYgKHR5cGVvZiBvcHRzLm9mZmxpbmVSZXNwb25zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvcHRzLmNvbnRleHQgPSBvcHRzLmNvbnRleHQgfHwge307XG4gICAgICAgIGNvbnN0IG9wdGltaXN0aWNSZXNwb25zZUZuID0gKG9wdHMub2ZmbGluZVJlc3BvbnNlIGFzICgoY29udGV4dDogYW55KSA9PiBQcm9taXNlPFQ+KSk7XG4gICAgICAgIG9wdHMub3B0aW1pc3RpY1Jlc3BvbnNlID0gYXdhaXQgb3B0aW1pc3RpY1Jlc3BvbnNlRm4ob3B0cy5jb250ZXh0KTtcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKCdbZ3JhcGhxbF0gW29mZmxpbmVdIFVzaW5nIGFuIG9wdGltaXN0aWMgcmVzcG9uc2U6ICcsIG9wdHMub3B0aW1pc3RpY1Jlc3BvbnNlKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBvcHRzLm9wdGltaXN0aWNSZXNwb25zZSA9IG9wdHMub2ZmbGluZVJlc3BvbnNlIGFzIFQ7XG4gICAgICB9XG4gICAgICBpZiAob3B0cy5mb3JjZU9mZmxpbmUpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge2RhdGE6IG9wdHMub3B0aW1pc3RpY1Jlc3BvbnNlfTtcbiAgICAgICAgaWYgKG9wdHMudXBkYXRlKSB7XG4gICAgICAgICAgb3B0cy51cGRhdGUodGhpcy5hcG9sbG8uY2xpZW50LmNhY2hlLCByZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXMuZGF0YTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmFwb2xsby5tdXRhdGU8QXBvbGxvUXVlcnlSZXN1bHQ8VD4sIFY+KHtcbiAgICAgIG11dGF0aW9uOiBvcHRzLm11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlcyxcbiAgICAgIGNvbnRleHQ6IG9wdHMuY29udGV4dCxcbiAgICAgIG9wdGltaXN0aWNSZXNwb25zZTogb3B0cy5vcHRpbWlzdGljUmVzcG9uc2UgYXMgYW55LFxuICAgICAgdXBkYXRlOiBvcHRzLnVwZGF0ZSBhcyBhbnlcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhpcy5vbkFwb2xsb0Vycm9yPFQ+KGVycm9yLCBvcHRzLmVycm9yKSksXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIC8vIFRvIGRlYnVnLCBpZiBuZWVkOlxuICAgICAgICAvL3RhcCgocmVzKSA9PiAoIXJlcykgJiYgY29uc29sZS5lcnJvcignW2dyYXBocWxdIFVua25vd24gZXJyb3IgZHVyaW5nIG11dGF0aW9uLiBDaGVjayBlcnJvcnMgaW4gY29uc29sZSAobWF5IGJlIGFuIGludmFsaWQgZ2VuZXJhdGVkIGNhY2hlIGlkID8pJykpXG4gICAgICApLnRvUHJvbWlzZSgpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlcy5lcnJvcnMpKSB7XG4gICAgICB0aHJvdyByZXMuZXJyb3JzWzBdO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLmRhdGEgYXMgVDtcbiAgfVxuXG4gIHN1YnNjcmliZTxULCBWID0gRW1wdHlPYmplY3Q+KG9wdHM6IHtcbiAgICBxdWVyeTogYW55O1xuICAgIHZhcmlhYmxlczogVjtcbiAgICBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5O1xuICAgIGVycm9yUG9saWN5PzogRXJyb3JQb2xpY3k7XG4gICAgZXJyb3I/OiBTZXJ2aWNlRXJyb3I7XG4gIH0sIGV4dHJhPzogRXh0cmFTdWJzY3JpcHRpb25PcHRpb25zKTogT2JzZXJ2YWJsZTxUPiB7XG5cbiAgICByZXR1cm4gdGhpcy5hcG9sbG8uc3Vic2NyaWJlPFQ+KHtcbiAgICAgIHF1ZXJ5OiBvcHRzLnF1ZXJ5LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdHMgJiYgb3B0cy5mZXRjaFBvbGljeSB8fCAnbmV0d29yay1vbmx5JyxcbiAgICAgIGVycm9yUG9saWN5OiBvcHRzICYmIG9wdHMuZXJyb3JQb2xpY3kgfHwgdW5kZWZpbmVkLFxuICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlc1xuICAgIH0sIHtcbiAgICAgIHVzZVpvbmU6IHRydWUsXG4gICAgICAuLi5leHRyYVxuICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB0aGlzLm9uQXBvbGxvRXJyb3I8VD4oZXJyb3IsIG9wdHMuZXJyb3IpKSxcbiAgICAgICAgbWFwKCh7ZGF0YSwgZXJyb3JzfSkgPT4ge1xuICAgICAgICAgIGlmIChlcnJvcnMpIHtcbiAgICAgICAgICAgIHRocm93IGVycm9yc1swXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgaW5zZXJ0SW50b1F1ZXJ5Q2FjaGU8VCwgViA9IEVtcHR5T2JqZWN0PihjYWNoZTogQXBvbGxvQ2FjaGU8YW55PixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzOiBDYWNoZS5SZWFkUXVlcnlPcHRpb25zPFYsIGFueT4gJiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheUZpZWxkTmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxGaWVsZE5hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydEZuPzogKGQxOiBULCBkMjogVCkgPT4gbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT86IG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSB7XG5cbiAgICBjYWNoZSA9IGNhY2hlIHx8IHRoaXMuYXBvbGxvLmNsaWVudC5jYWNoZTtcbiAgICBvcHRzLmFycmF5RmllbGROYW1lID0gb3B0cy5hcnJheUZpZWxkTmFtZSB8fCAnZGF0YSc7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IGRhdGEgPSBjYWNoZS5yZWFkUXVlcnk8YW55LCBWPih7cXVlcnk6IG9wdHMucXVlcnksIHZhcmlhYmxlczogb3B0cy52YXJpYWJsZXN9KTtcblxuICAgICAgaWYgKGRhdGEgJiYgZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXSkge1xuICAgICAgICAvLyBDb3B5IGJlY2F1c2UgaW1tdXRhYmxlXG4gICAgICAgIGRhdGEgPSB7IC4uLmRhdGEgfTtcblxuICAgICAgICAvLyBBcHBlbmQgdG8gcmVzdWx0IGFycmF5XG4gICAgICAgIGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0gPSBbIC4uLmRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0sIHsuLi5vcHRzLmRhdGF9XTtcblxuICAgICAgICAvLyBSZXNvcnQsIGlmIG5lZWRcbiAgICAgICAgaWYgKG9wdHMuc29ydEZuKSB7XG4gICAgICAgICAgZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXS5zb3J0KG9wdHMuc29ydEZuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEV4Y2x1ZGUgaWYgZXhjZWVkIG1heCBzaXplXG4gICAgICAgIGNvbnN0IHNpemUgPSB0b051bWJlcihvcHRzLnZhcmlhYmxlcyAmJiBvcHRzLnZhcmlhYmxlc1snc2l6ZSddLCAtMSk7XG4gICAgICAgIGlmIChzaXplID4gMCAmJiBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLmxlbmd0aCA+IHNpemUpIHtcbiAgICAgICAgICBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLnNwbGljZShzaXplLCBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLmxlbmd0aCAtIHNpemUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5jcmVtZW50IHRvdGFsXG4gICAgICAgIGlmIChpc05vdE5pbChvcHRzLnRvdGFsRmllbGROYW1lKSkge1xuICAgICAgICAgIGlmIChpc05vdE5pbChkYXRhW29wdHMudG90YWxGaWVsZE5hbWVdKSkge1xuICAgICAgICAgICAgZGF0YVtvcHRzLnRvdGFsRmllbGROYW1lXSArPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW2dyYXBocWxdIFVuYWJsZSB0byB1cGRhdGUgY2FjaGVkIHF1ZXJ5LiBVbmtub3duIHJlc3VsdCBwYXJ0OiAnICsgb3B0cy50b3RhbEZpZWxkTmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY2FjaGUud3JpdGVRdWVyeSh7XG4gICAgICAgICAgcXVlcnk6IG9wdHMucXVlcnksXG4gICAgICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlcyxcbiAgICAgICAgICBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW2dyYXBocWxdIFVuYWJsZSB0byB1cGRhdGUgY2FjaGVkIHF1ZXJ5LiBVbmtub3duIHJlc3VsdCBwYXJ0OiAnICsgb3B0cy5hcnJheUZpZWxkTmFtZSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBjb250aW51ZVxuICAgICAgLy8gcmVhZCBpbiBjYWNoZSBpcyBub3QgZ3VhcmFudGVlZCB0byByZXR1cm4gYSByZXN1bHQuIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXBvbGxvZ3JhcGhxbC9yZWFjdC1hcG9sbG8vaXNzdWVzLzE3NzYjaXNzdWVjb21tZW50LTM3MjIzNzk0MFxuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmVycm9yKCdbZ3JhcGhxbF0gRXJyb3Igd2hpbGUgdXBkYXRpbmcgY2FjaGU6ICcsIGVycik7XG4gICAgfVxuICB9XG5cbiAgYWRkTWFueVRvUXVlcnlDYWNoZTxUID0gYW55LCBWID0gRW1wdHlPYmplY3Q+KGNhY2hlOiBBcG9sbG9DYWNoZTxhbnk+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0czogQ2FjaGUuUmVhZFF1ZXJ5T3B0aW9uczxWLCBhbnk+ICYge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheUZpZWxkTmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbEZpZWxkTmFtZT86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogVFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVhbHNGbj86IChkMTogVCwgZDI6IFQpID0+IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRGbj86IChkMTogVCwgZDI6IFQpID0+IG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIHtcblxuICAgIGlmICghb3B0cy5kYXRhIHx8ICFvcHRzLmRhdGEubGVuZ3RoKSByZXR1cm47IC8vIG5vdGhpbmcgdG8gcHJvY2Vzc1xuXG4gICAgY2FjaGUgPSBjYWNoZSB8fCB0aGlzLmFwb2xsby5jbGllbnQuY2FjaGU7XG4gICAgb3B0cy5hcnJheUZpZWxkTmFtZSA9IG9wdHMuYXJyYXlGaWVsZE5hbWUgfHwgJ2RhdGEnO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBkYXRhID0gY2FjaGUucmVhZFF1ZXJ5PGFueSwgVj4oe3F1ZXJ5OiBvcHRzLnF1ZXJ5LCB2YXJpYWJsZXM6IG9wdHMudmFyaWFibGVzfSk7XG5cbiAgICAgIGlmIChkYXRhICYmIGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0pIHtcbiAgICAgICAgLy8gQ29weSBiZWNhdXNlIGltbXV0YWJsZVxuICAgICAgICBkYXRhID0geyAuLi5kYXRhIH07XG5cbiAgICAgICAgLy8gS2VlcCBvbmx5IG5vdCBleGlzdGluZyByZXNcbiAgICAgICAgY29uc3QgZXF1YWxzRm4gPSBvcHRzLmVxdWFsc0ZuIHx8ICgoZDEsIGQyKSA9PiBkMVsnaWQnXSA9PT0gZDJbJ2lkJ10gJiYgZDFbJ2VudGl0eU5hbWUnXSA9PT0gZDJbJ2VudGl0eU5hbWUnXSk7XG4gICAgICAgIGNvbnN0IG5ld0l0ZW1zID0gb3B0cy5kYXRhLmZpbHRlcihpbnB1dFZhbHVlID0+IGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0uZmluZEluZGV4KGV4aXN0aW5nVmFsdWUgPT4gZXF1YWxzRm4oaW5wdXRWYWx1ZSwgZXhpc3RpbmdWYWx1ZSkpID09PSAtMSk7XG5cbiAgICAgICAgaWYgKCFuZXdJdGVtcy5sZW5ndGgpIHJldHVybjsgLy8gTm8gbmV3IHZhbHVlXG5cbiAgICAgICAgLy8gQXBwZW5kIHRvIGFycmF5XG4gICAgICAgIGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0gPSBbIC4uLmRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0sIC4uLm5ld0l0ZW1zXTtcblxuICAgICAgICAvLyBSZXNvcnQsIGlmIG5lZWRcbiAgICAgICAgaWYgKG9wdHMuc29ydEZuKSB7XG4gICAgICAgICAgZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXS5zb3J0KG9wdHMuc29ydEZuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEV4Y2x1ZGUgaWYgZXhjZWVkIG1heCBzaXplXG4gICAgICAgIGNvbnN0IHNpemUgPSB0b051bWJlcihvcHRzLnZhcmlhYmxlcyAmJiBvcHRzLnZhcmlhYmxlc1snc2l6ZSddLCAtMSk7XG4gICAgICAgIGlmIChzaXplID4gMCAmJiBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLmxlbmd0aCA+IHNpemUpIHtcbiAgICAgICAgICBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLnNwbGljZShzaXplLCBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLmxlbmd0aCAtIHNpemUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5jcmVtZW50IHRoZSB0b3RhbFxuICAgICAgICBpZiAoaXNOb3ROaWwob3B0cy50b3RhbEZpZWxkTmFtZSkpIHtcbiAgICAgICAgICBpZiAoaXNOb3ROaWwoZGF0YVtvcHRzLnRvdGFsRmllbGROYW1lXSkpIHtcbiAgICAgICAgICAgIGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0gKz0gbmV3SXRlbXMubGVuZ3RoO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW2dyYXBocWxdIFVuYWJsZSB0byB1cGRhdGUgY2FjaGVkIHF1ZXJ5LiBVbmtub3duIHJlc3VsdCBwYXJ0OiAnICsgb3B0cy50b3RhbEZpZWxkTmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gV3JpdGUgdG8gY2FjaGVcbiAgICAgICAgY2FjaGUud3JpdGVRdWVyeSh7XG4gICAgICAgICAgcXVlcnk6IG9wdHMucXVlcnksXG4gICAgICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlcyxcbiAgICAgICAgICBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW2dyYXBocWxdIFVuYWJsZSB0byB1cGRhdGUgY2FjaGVkIHF1ZXJ5LiBVbmtub3duIHJlc3VsdCBwYXJ0OiAnICsgb3B0cy5hcnJheUZpZWxkTmFtZSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBjb250aW51ZVxuICAgICAgLy8gcmVhZCBpbiBjYWNoZSBpcyBub3QgZ3VhcmFudGVlZCB0byByZXR1cm4gYSByZXN1bHQuIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXBvbGxvZ3JhcGhxbC9yZWFjdC1hcG9sbG8vaXNzdWVzLzE3NzYjaXNzdWVjb21tZW50LTM3MjIzNzk0MFxuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLndhcm4oJ1tncmFwaHFsXSBFcnJvciB3aGlsZSB1cGRhdGluZyBjYWNoZTogJywgZXJyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGZyb20gY2FjaGUsIGFuZCByZXR1cm4gaWYgcmVtb3ZlZCBvciBub3RcbiAgICpcbiAgICogQHBhcmFtIGNhY2hlXG4gICAqIEBwYXJhbSBvcHRzXG4gICAqL1xuICByZW1vdmVGcm9tQ2FjaGVkUXVlcnlCeUlkPFYgPSBFbXB0eU9iamVjdCwgSUQgPSBudW1iZXI+KGNhY2hlOiBBcG9sbG9DYWNoZTxhbnk+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHM6IENhY2hlLlJlYWRRdWVyeU9wdGlvbnM8ViwgYW55PiAmIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5RmllbGROYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbEZpZWxkTmFtZT86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkczogSUQ7IC8vIERvIE5PVCB1c2UgJ2lkJywgYXMgYWxyZWFkeSB1c2VkIGJ5IHRoZSBBcG9sbG8gQVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk6IGJvb2xlYW4ge1xuXG4gICAgY2FjaGUgPSBjYWNoZSB8fCB0aGlzLmFwb2xsby5jbGllbnQuY2FjaGU7XG4gICAgb3B0cy5hcnJheUZpZWxkTmFtZSA9IG9wdHMuYXJyYXlGaWVsZE5hbWUgfHwgJ2RhdGEnO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBkYXRhID0gY2FjaGUucmVhZFF1ZXJ5PGFueSwgVj4oe3F1ZXJ5OiBvcHRzLnF1ZXJ5LCB2YXJpYWJsZXM6IG9wdHMudmFyaWFibGVzfSk7XG5cbiAgICAgIGlmIChkYXRhICYmIGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0pIHtcbiAgICAgICAgLy8gQ29weSBiZWNhdXNlIGltbXV0YWJsZVxuICAgICAgICBkYXRhID0geyAuLi5kYXRhIH07XG5cbiAgICAgICAgY29uc3QgaW5kZXggPSBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLmZpbmRJbmRleChpdGVtID0+IGl0ZW1bJ2lkJ10gPT09IG9wdHMuaWRzKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIGZhbHNlOyAvLyBTa2lwIChub3RoaW5nIHJlbW92ZWQpXG5cbiAgICAgICAgLy8gQ29weSwgdGhlbiByZW1vdmUgZGVsZXRlZCBpdGVtXG4gICAgICAgIGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0gPSBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLnNsaWNlKCk7XG4gICAgICAgIGNvbnN0IGRlbGV0ZWRJdGVtID0gZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXS5zcGxpY2UoaW5kZXgsIDEpWzBdO1xuICAgICAgICBjYWNoZS5ldmljdCh7aWQ6IGNhY2hlLmlkZW50aWZ5KGRlbGV0ZWRJdGVtKX0pO1xuXG4gICAgICAgIC8vIERlY3JlbWVudCB0aGUgdG90YWxcbiAgICAgICAgaWYgKGlzTm90TmlsKG9wdHMudG90YWxGaWVsZE5hbWUpKSB7XG4gICAgICAgICAgaWYgKGlzTm90TmlsKGRhdGFbb3B0cy50b3RhbEZpZWxkTmFtZV0pKSB7XG4gICAgICAgICAgICBkYXRhW29wdHMudG90YWxGaWVsZE5hbWVdIC09IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbZ3JhcGhxbF0gVW5hYmxlIHRvIHVwZGF0ZSBjYWNoZWQgcXVlcnkuIFVua25vd24gcmVzdWx0IHBhcnQ6ICcgKyBvcHRzLnRvdGFsRmllbGROYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXcml0ZSB0byBjYWNoZVxuICAgICAgICBjYWNoZS53cml0ZVF1ZXJ5KHtcbiAgICAgICAgICBxdWVyeTogb3B0cy5xdWVyeSxcbiAgICAgICAgICB2YXJpYWJsZXM6IG9wdHMudmFyaWFibGVzLFxuICAgICAgICAgIGRhdGFcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW2dyYXBocWxdIFVuYWJsZSB0byB1cGRhdGUgY2FjaGVkIHF1ZXJ5LiBVbmtub3duIHJlc3VsdCBwYXJ0OiAnICsgb3B0cy5hcnJheUZpZWxkTmFtZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIGNvbnRpbnVlXG4gICAgICAvLyByZWFkIGluIGNhY2hlIGlzIG5vdCBndWFyYW50ZWVkIHRvIHJldHVybiBhIHJlc3VsdC4gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hcG9sbG9ncmFwaHFsL3JlYWN0LWFwb2xsby9pc3N1ZXMvMTc3NiNpc3N1ZWNvbW1lbnQtMzcyMjM3OTQwXG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUud2FybignW2dyYXBocWxdIEVycm9yIHdoaWxlIHJlbW92aW5nIGZyb20gY2FjaGU6ICcsIGVycik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBpZHMgZnJvbSBjYWNoZSwgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGl0ZW1zIHJlbW92ZWRcbiAgICpcbiAgICogQHBhcmFtIGNhY2hlXG4gICAqIEBwYXJhbSBvcHRzXG4gICAqL1xuICByZW1vdmVGcm9tQ2FjaGVkUXVlcnlCeUlkczxWID0gRW1wdHlPYmplY3QsIElEID0gbnVtYmVyPihjYWNoZTogQXBvbGxvQ2FjaGU8YW55PixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0czogQ2FjaGUuUmVhZFF1ZXJ5T3B0aW9uczxWLCBhbnk+ICYge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5RmllbGROYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxGaWVsZE5hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRzOiBJRFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTogbnVtYmVyIHtcblxuICAgIGNhY2hlID0gY2FjaGUgfHwgdGhpcy5hcG9sbG8uY2xpZW50LmNhY2hlO1xuICAgIG9wdHMuYXJyYXlGaWVsZE5hbWUgPSBvcHRzLmFycmF5RmllbGROYW1lIHx8ICdkYXRhJztcblxuICAgIHRyeSB7XG4gICAgICBsZXQgZGF0YSA9IGNhY2hlLnJlYWRRdWVyeShvcHRzKTtcblxuICAgICAgaWYgKGRhdGEgJiYgZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXSkge1xuICAgICAgICAvLyBDb3B5IGJlY2F1c2UgaW1tdXRhYmxlXG4gICAgICAgIGRhdGEgPSB7IC4uLmRhdGEgfTtcblxuICAgICAgICBjb25zdCBkZWxldGVkSW5kZXhlcyA9IGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0ucmVkdWNlKChyZXMsIGl0ZW0sIGluZGV4KSA9PiBvcHRzLmlkcy5pbmNsdWRlcyhpdGVtWydpZCddKSA/IHJlcy5jb25jYXQoaW5kZXgpIDogcmVzLCBbXSk7XG5cbiAgICAgICAgaWYgKGRlbGV0ZWRJbmRleGVzLmxlbmd0aCA8PSAwKSByZXR1cm4gMDsgLy8gU2tpcCAobm90aGluZyByZW1vdmVkKVxuXG4gICAgICAgIC8vIFF1ZXJ5IGhhcyBOTyB0b3RhbFxuICAgICAgICBpZiAoaXNOaWwob3B0cy50b3RhbEZpZWxkTmFtZSkpIHtcblxuICAgICAgICAgIC8vIEV2aWN0IGVhY2ggb2JqZWN0XG4gICAgICAgICAgZGVsZXRlZEluZGV4ZXNcbiAgICAgICAgICAgIC5tYXAoaW5kZXggPT4gZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXVtpbmRleF0pXG4gICAgICAgICAgICAubWFwKGl0ZW0gPT4gY2FjaGUuaWRlbnRpZnkoaXRlbSkpXG4gICAgICAgICAgICAuZm9yRWFjaChpZCA9PiBjYWNoZS5ldmljdCh7aWR9KSk7XG5cbiAgICAgICAgfVxuICAgICAgICAvLyBRdWVyeSBoYXMgYSB0b3RhbFxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAvLyBDb3B5IHRoZSBhcnJheVxuICAgICAgICAgIGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0gPSBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLnNsaWNlKCk7XG5cbiAgICAgICAgICAvLyByZW1vdmUgZnJvbSBhcnJheSwgdGhlbiBldmljdFxuICAgICAgICAgIGRlbGV0ZWRJbmRleGVzXG4gICAgICAgICAgICAvLyBSZXZlcnNlOiB0byBrZWVwIHZhbGlkIGluZGV4XG4gICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAvLyBSZW1vdmUgZnJvbSB0aGUgYXJyYXlcbiAgICAgICAgICAgIC5tYXAoaW5kZXggPT4gZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXS5zcGxpY2UoaW5kZXgsIDEpWzBdKVxuICAgICAgICAgICAgLy8gRXZpY3QgZnJvbSBjYWNoZVxuICAgICAgICAgICAgLm1hcChpdGVtID0+IGNhY2hlLmlkZW50aWZ5KGl0ZW0pKVxuICAgICAgICAgICAgLmZvckVhY2goaWQgPT4gY2FjaGUuZXZpY3Qoe2lkfSkpO1xuXG4gICAgICAgICAgaWYgKGlzTm90TmlsKGRhdGFbb3B0cy50b3RhbEZpZWxkTmFtZV0pKSB7XG4gICAgICAgICAgICBkYXRhW29wdHMudG90YWxGaWVsZE5hbWVdIC09IGRlbGV0ZWRJbmRleGVzLmxlbmd0aDsgLy8gUmVtb3ZlIGRlbGV0aW9uIGNvdW50XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbZ3JhcGhxbF0gVW5hYmxlIHRvIHVwZGF0ZSB0aGUgdG90YWwgaW4gY2FjaGVkIHF1ZXJ5LiBVbmtub3duIHJlc3VsdCBwYXJ0OiAnICsgb3B0cy50b3RhbEZpZWxkTmFtZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FjaGUud3JpdGVRdWVyeSh7XG4gICAgICAgICAgICBxdWVyeTogb3B0cy5xdWVyeSxcbiAgICAgICAgICAgIHZhcmlhYmxlczogb3B0cy52YXJpYWJsZXMsXG4gICAgICAgICAgICBkYXRhXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gZGVsZXRlZEluZGV4ZXMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbZ3JhcGhxbF0gVW5hYmxlIHRvIHVwZGF0ZSBjYWNoZWQgcXVlcnkuIFVua25vd24gcmVzdWx0IHBhcnQ6ICcgKyBvcHRzLmFycmF5RmllbGROYW1lKTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBjb250aW51ZVxuICAgICAgLy8gcmVhZCBpbiBjYWNoZSBpcyBub3QgZ3VhcmFudGVlZCB0byByZXR1cm4gYSByZXN1bHQuIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXBvbGxvZ3JhcGhxbC9yZWFjdC1hcG9sbG8vaXNzdWVzLzE3NzYjaXNzdWVjb21tZW50LTM3MjIzNzk0MFxuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLndhcm4oJ1tncmFwaHFsXSBFcnJvciB3aGlsZSByZW1vdmluZyBmcm9tIGNhY2hlOiAnLCBlcnIpO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVG9RdWVyeUNhY2hlPFQgZXh0ZW5kcyBJRW50aXR5PGFueT4sXG4gICAgViA9IEVtcHR5T2JqZWN0PihjYWNoZTogQXBvbGxvQ2FjaGU8YW55PixcbiAgICAgICAgICAgICAgICAgICAgIG9wdHM6IENhY2hlLlJlYWRRdWVyeU9wdGlvbnM8ViwgYW55PiAmIHtcbiAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlGaWVsZE5hbWU6IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgdG90YWxGaWVsZE5hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IFQ7XG4gICAgICAgICAgICAgICAgICAgICAgIGVxdWFsc0ZuPzogKGQxOiBULCBkMjogVCkgPT4gYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgICAgIH0pIHtcbiAgICBjYWNoZSA9IGNhY2hlIHx8IHRoaXMuYXBvbGxvLmNsaWVudC5jYWNoZTtcbiAgICBvcHRzLmFycmF5RmllbGROYW1lID0gb3B0cy5hcnJheUZpZWxkTmFtZSB8fCAnZGF0YSc7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IGRhdGE6IGFueSA9IGNhY2hlLnJlYWRRdWVyeShvcHRzKTtcblxuICAgICAgaWYgKGRhdGEgJiYgZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXSkge1xuICAgICAgICAvLyBDb3B5IGJlY2F1c2UgaW1tdXRhYmxlXG4gICAgICAgIGRhdGEgPSB7IC4uLmRhdGEgfTtcblxuICAgICAgICBjb25zdCBlcXVhbHNGbiA9IG9wdHMuZXF1YWxzRm4gfHwgKChkMSwgZDIpID0+IEVudGl0eVV0aWxzLmVxdWFscyhkMSwgZDIsICdpZCcpKTtcblxuICAgICAgICAvLyBVcGRhdGUgaWYgZXhpc3RzLCBvciBpbnNlcnRcbiAgICAgICAgY29uc3QgaW5kZXggPSBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLmZpbmRJbmRleCh2ID0+IGVxdWFsc0ZuKG9wdHMuZGF0YSwgdikpO1xuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXSA9IGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0uc2xpY2UoKS5zcGxpY2UoaW5kZXgsIDEsIG9wdHMuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXSA9IFsgLi4uZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXSwgb3B0cy5kYXRhXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEluY3JlbWVudCB0b3RhbCAoaWYgY2hhbmdlZClcbiAgICAgICAgaWYgKGlzTm90TmlsKG9wdHMudG90YWxGaWVsZE5hbWUpICYmIGluZGV4ID09PSAtMSkge1xuICAgICAgICAgIGlmIChpc05vdE5pbChkYXRhW29wdHMudG90YWxGaWVsZE5hbWVdKSkge1xuICAgICAgICAgICAgZGF0YVtvcHRzLnRvdGFsRmllbGROYW1lXSArPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW2dyYXBocWxdIFVuYWJsZSB0byB1cGRhdGUgY2FjaGVkIHF1ZXJ5LiBVbmtub3duIHJlc3VsdCBwYXJ0OiAnICsgb3B0cy50b3RhbEZpZWxkTmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY2FjaGUud3JpdGVRdWVyeSh7XG4gICAgICAgICAgcXVlcnk6IG9wdHMucXVlcnksXG4gICAgICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlcyxcbiAgICAgICAgICBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47IC8vIE9LOiBzdG9wIGhlcmVcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIGNvbnRpbnVlXG4gICAgICAvLyByZWFkIGluIGNhY2hlIGlzIG5vdCBndWFyYW50ZWVkIHRvIHJldHVybiBhIHJlc3VsdC4gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hcG9sbG9ncmFwaHFsL3JlYWN0LWFwb2xsby9pc3N1ZXMvMTc3NiNpc3N1ZWNvbW1lbnQtMzcyMjM3OTQwXG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUud2FybignW2dyYXBocWxdIEVycm9yIHdoaWxlIHVwZGF0aW5nIGNhY2hlOiAnLCBlcnIpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNsZWFyQ2FjaGUoY2xpZW50PzogQXBvbGxvQ2xpZW50PGFueT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjbGllbnQgPSAoY2xpZW50IHx8IHRoaXMuY2xpZW50KSBhcyBBcG9sbG9DbGllbnQ8YW55PjtcbiAgICBpZiAoY2xpZW50KSB7XG4gICAgICBjb25zb2xlLmluZm8oJ1tncmFwaHFsXSBDbGVhbmluZyBjYWNoZS4uLiAnKTtcbiAgICAgIGNvbnN0IG5vdyA9IHRoaXMuX2RlYnVnICYmIERhdGUubm93KCk7XG5cbiAgICAgIC8vIENsZWFyaW5nIHRoZSBjYWNoZVxuICAgICAgYXdhaXQgY2xpZW50LmNhY2hlLnJlc2V0KCk7XG5cbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2dyYXBocWxdIENsZWFuaW5nIGNhY2hlIFtPS10gaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJDdXN0b21FcnJvcihlcnJvcjogUHJvcGVydGllc01hcCkge1xuICAgIHRoaXMuY3VzdG9tRXJyb3JzID0gey4uLnRoaXMuY3VzdG9tRXJyb3JzLCAuLi5lcnJvcn07XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCBhc3luYyBuZ09uU3RhcnQoKTogUHJvbWlzZTxBcG9sbG9DbGllbnQ8YW55Pj4ge1xuXG4gICAgLy8gV2FpdCBuZXR3b3JrIGFuZCBzdG9yYWdlXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdGhpcy5zdG9yYWdlLnJlYWR5KCksXG4gICAgICB0aGlzLm5ldHdvcmsucmVhZHkoKVxuICAgIF0pO1xuXG4gICAgY29uc29sZS5pbmZvKCdbZ3JhcGhxbF0gU3RhcnRpbmcgZ3JhcGhxbC4uLicpO1xuICAgIGNvbnN0IG1vYmlsZSA9IGlzTW9iaWxlKHdpbmRvdyk7XG4gICAgY29uc3QgZW5hYmxlVHJhY2tNdXRhdGlvblF1ZXJpZXMgPSAhbW9iaWxlO1xuXG4gICAgY29uc3QgcGVlciA9IHRoaXMubmV0d29yay5wZWVyO1xuICAgIGlmICghcGVlcikgdGhyb3cgRXJyb3IoJ1tncmFwaHFsXSBNaXNzaW5nIHBlZXIuIFVuYWJsZSB0byBzdGFydCBncmFwaHFsIHNlcnZpY2UnKTtcblxuICAgIGNvbnN0IHVyaSA9IHBlZXIudXJsICsgJy9ncmFwaHFsJztcbiAgICBjb25zdCB3c1VybCA9IHVyaS5yZXBsYWNlKC9eaHR0cChzKT86LywgJ3dzJDE6JykgKyAnL3dlYnNvY2tldCc7XG4gICAgY29uc29sZS5pbmZvKCdbZ3JhcGhxbF0gQmFzZSB1cmk6ICcgKyB1cmkpO1xuICAgIGNvbnNvbGUuaW5mbygnW2dyYXBocWxdIFN1YnNjcmlwdGlvbiB1cmk6ICcgKyB3c1VybCk7XG5cbiAgICB0aGlzLmh0dHBQYXJhbXMgPSB0aGlzLmh0dHBQYXJhbXMgfHwge307XG4gICAgdGhpcy5odHRwUGFyYW1zLnVyaSA9IHVyaTtcblxuICAgIHRoaXMud3NQYXJhbXMgPSB7XG4gICAgICAuLi50aGlzLndzUGFyYW1zLFxuICAgICAgbGF6eTogdHJ1ZSxcbiAgICAgIGNvbm5lY3Rpb25QYXJhbXM6IHRoaXMuY29ubmVjdGlvblBhcmFtcyxcbiAgICAgIHdlYlNvY2tldEltcGw6IEFwcFdlYlNvY2tldCxcbiAgICAgIHVybDogd3NVcmwsXG4gICAgICBzaG91bGRSZXRyeTogKGVyck9yQ2xvc2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tncmFwaHFsLXNlcnZpY2VdIFtXU10gVHJ5aW5nIHRvIHJlY29ubmVjdC4uLicsIGVyck9yQ2xvc2VFdmVudCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSxcbiAgICAgIHJldHJ5QXR0ZW1wdHM6IDEwXG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSBhIHN0b3JhZ2UgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IHN0b3JhZ2U6IFBlcnNpc3RlbnRTdG9yYWdlPHN0cmluZz4gPSBuZXcgU3RvcmFnZVNlcnZpY2VXcmFwcGVyKHRoaXMuc3RvcmFnZSk7XG5cbiAgICBsZXQgY2xpZW50ID0gdGhpcy5hcG9sbG8uY2xpZW50O1xuICAgIGlmICghY2xpZW50KSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbZ3JhcGhxbF0gQ3JlYXRpbmcgQXBvbGxvIEdyYXBoUUwgY2xpZW50Li4uJyk7XG5cbiAgICAgIC8vIFdlYnNvY2tldCBsaW5rXG4gICAgICBjb25zdCB3c0xpbmsgPSBuZXcgR3JhcGhRTFdzTGluayhjcmVhdGVDbGllbnQodGhpcy53c1BhcmFtcykpO1xuICAgICAgdGhpcy5vblJlc2V0QXV0aFxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5zdG9wU3ViamVjdCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuaW5mbygnW2dyYXBocWxdIENsb3Npbmcgd2Vic29ja2V0IGNsaWVudCwgdG8gZm9yY2UgdW5hdXRoJyk7XG4gICAgICAgICAgd3NMaW5rLmNsaWVudC5kaXNwb3NlKCk7XG4gICAgICAgIH0pXG5cbiAgICAgIC8vIFJldHJ5IHdoZW4gZmFpbGVkIGxpbmtcbiAgICAgIGNvbnN0IHJldHJ5TGluayA9IG5ldyBSZXRyeUxpbmsoKTtcbiAgICAgIGNvbnN0IGF1dGhMaW5rID0gbmV3IEFwb2xsb0xpbmsoKG9wZXJhdGlvbiwgZm9yd2FyZCkgPT4ge1xuXG4gICAgICAgIGNvbnN0IGF1dGhvcml6YXRpb24gPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvblBhcmFtcy5hdXRoVG9rZW4pIHtcbiAgICAgICAgICBhdXRob3JpemF0aW9uLnB1c2goYHRva2VuICR7dGhpcy5jb25uZWN0aW9uUGFyYW1zLmF1dGhUb2tlbn1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uUGFyYW1zLmF1dGhCYXNpYykge1xuICAgICAgICAgIGF1dGhvcml6YXRpb24ucHVzaChgQmFzaWMgJHt0aGlzLmNvbm5lY3Rpb25QYXJhbXMuYXV0aEJhc2ljfWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgICAgICAgIC5hcHBlbmQoJ0F1dGhvcml6YXRpb24nLCBhdXRob3JpemF0aW9uKTtcblxuICAgICAgICAvLyBVc2UgdGhlIHNldENvbnRleHQgbWV0aG9kIHRvIHNldCB0aGUgSFRUUCBoZWFkZXJzLlxuICAgICAgICBvcGVyYXRpb24uc2V0Q29udGV4dCh7XG4gICAgICAgICAgLi4ub3BlcmF0aW9uLmdldENvbnRleHQoKSxcbiAgICAgICAgICAuLi57aGVhZGVyc31cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ2FsbCB0aGUgbmV4dCBsaW5rIGluIHRoZSBtaWRkbGV3YXJlIGNoYWluLlxuICAgICAgICByZXR1cm4gZm9yd2FyZChvcGVyYXRpb24pO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIEh0dHAgbGlua1xuICAgICAgY29uc3QgaHR0cExpbmsgPSB0aGlzLmh0dHBMaW5rLmNyZWF0ZSh0aGlzLmh0dHBQYXJhbXMpO1xuXG4gICAgICAvLyBDYWNoZVxuICAgICAgY29uc3QgY2FjaGUgPSBuZXcgSW5NZW1vcnlDYWNoZSh7XG4gICAgICAgIHR5cGVQb2xpY2llczogdGhpcy50eXBlUG9saWNpZXMsXG4gICAgICAgIGZyYWdtZW50czogaXNOb3RFbXB0eUFycmF5KHRoaXMuZnJhZ21lbnRzKSA/IGNyZWF0ZUZyYWdtZW50UmVnaXN0cnkoLi4udGhpcy5mcmFnbWVudHMpIDogdW5kZWZpbmVkXG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIGNhY2hlIHBlcnNpc3RlbmNlXG4gICAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5wZXJzaXN0Q2FjaGUpIHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnW2dyYXBocWxdIFN0YXJ0aW5nIHBlcnNpc3RlbmNlIGNhY2hlLi4uJyk7XG4gICAgICAgIGF3YWl0IHBlcnNpc3RDYWNoZSh7XG4gICAgICAgICAgY2FjaGUsXG4gICAgICAgICAgc3RvcmFnZSxcbiAgICAgICAgICB0cmlnZ2VyOiB0aGlzLnBsYXRmb3JtLmlzKCdhbmRyb2lkJykgPyAnYmFja2dyb3VuZCcgOiAnd3JpdGUnLFxuICAgICAgICAgIGRlYm91bmNlOiAxMDAwLFxuICAgICAgICAgIGRlYnVnOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBsZXQgbXV0YXRpb25MaW5rczogQXJyYXk8QXBvbGxvTGluaz47XG5cbiAgICAgIC8vIEFkZCBxdWV1ZSB0byBzdG9yZSB0cmFja2VkIHF1ZXJpZXMsIHdoZW4gb2ZmbGluZVxuICAgICAgaWYgKGVuYWJsZVRyYWNrTXV0YXRpb25RdWVyaWVzKSB7XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6aW5nTGluayA9IG5ldyBTZXJpYWxpemluZ0xpbmsoKTtcbiAgICAgICAgY29uc3QgdHJhY2tlckxpbmsgPSBjcmVhdGVUcmFja2VyTGluayh7XG4gICAgICAgICAgc3RvcmFnZSxcbiAgICAgICAgICBvbk5ldHdvcmtTdGF0dXNDaGFuZ2U6IHRoaXMuX25ldHdvcmtTdGF0dXNDaGFuZ2VkJCxcbiAgICAgICAgICBkZWJvdW5jZTogMTAwMCxcbiAgICAgICAgICBkZWJ1ZzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gQ3JlYXRpbmcgYSBtdXRhdGlvbiBxdWV1ZVxuICAgICAgICBjb25zdCBxdWV1ZUxpbmsgPSBuZXcgUXVldWVMaW5rKCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24odGhpcy5fbmV0d29ya1N0YXR1c0NoYW5nZWQkXG4gICAgICAgICAgLnN1YnNjcmliZSh0eXBlID0+IHtcbiAgICAgICAgICAgIC8vIE5ldHdvcmsgaXMgb2ZmbGluZTogc3RhcnQgYnVmZmVyaW5nIGludG8gcXVldWVcbiAgICAgICAgICAgIGlmICh0eXBlID09PSAnbm9uZScpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5pbmZvKCdbZ3JhcGhxbF0gb2ZmbGluZSBtb2RlOiBlbmFibGUgbXV0YXRpb25zIGJ1ZmZlcicpO1xuICAgICAgICAgICAgICBxdWV1ZUxpbmsuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIE5ldHdvcmsgaXMgb25saW5lXG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc29sZS5pbmZvKCdbZ3JhcGhxbF0gb25saW5lIG1vZGU6IGRpc2FibGUgbXV0YXRpb25zIGJ1ZmZlcicpO1xuICAgICAgICAgICAgICBxdWV1ZUxpbmsub3BlbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgbXV0YXRpb25MaW5rcyA9IFtcbiAgICAgICAgICBsb2dnZXJMaW5rLFxuICAgICAgICAgIHF1ZXVlTGluayxcbiAgICAgICAgICB0cmFja2VyTGluayxcbiAgICAgICAgICBxdWV1ZUxpbmssXG4gICAgICAgICAgc2VyaWFsaXppbmdMaW5rLFxuICAgICAgICAgIHJldHJ5TGluayxcbiAgICAgICAgICBhdXRoTGluayxcbiAgICAgICAgICBodHRwTGlua1xuICAgICAgICBdO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG11dGF0aW9uTGlua3MgPSBbXG4gICAgICAgICAgcmV0cnlMaW5rLFxuICAgICAgICAgIGF1dGhMaW5rLFxuICAgICAgICAgIGh0dHBMaW5rXG4gICAgICAgIF07XG4gICAgICB9XG5cbiAgICAgIC8vIGNyZWF0ZSBBcG9sbG9cbiAgICAgIGNsaWVudCA9IG5ldyBBcG9sbG9DbGllbnQoe1xuICAgICAgICBjYWNoZSxcbiAgICAgICAgbGluazpcbiAgICAgICAgICBBcG9sbG9MaW5rLnNwbGl0KFxuICAgICAgICAgICAgLy8gSGFuZGxlIG11dGF0aW9uc1xuICAgICAgICAgICAgaXNNdXRhdGlvbk9wZXJhdGlvbixcbiAgICAgICAgICAgIEFwb2xsb0xpbmsuZnJvbShtdXRhdGlvbkxpbmtzKSxcblxuICAgICAgICAgICAgQXBvbGxvTGluay5zcGxpdChcbiAgICAgICAgICAgICAgLy8gSGFuZGxlIHN1YnNjcmlwdGlvbnNcbiAgICAgICAgICAgICAgaXNTdWJzY3JpcHRpb25PcGVyYXRpb24sXG4gICAgICAgICAgICAgIHdzTGluayxcblxuICAgICAgICAgICAgICAvLyBIYW5kbGUgcXVlcmllc1xuICAgICAgICAgICAgICBBcG9sbG9MaW5rLmZyb20oW1xuICAgICAgICAgICAgICAgIHJldHJ5TGluayxcbiAgICAgICAgICAgICAgICBhdXRoTGluayxcbiAgICAgICAgICAgICAgICBodHRwTGlua1xuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgIGNvbm5lY3RUb0RldlRvb2xzOiAhdGhpcy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5hcG9sbG8uY2xpZW50ID0gY2xpZW50O1xuICAgIH1cblxuICAgIC8vIEVuYWJsZSB0cmFja2VkIHF1ZXJpZXMgcGVyc2lzdGVuY2VcbiAgICBpZiAoZW5hYmxlVHJhY2tNdXRhdGlvblF1ZXJpZXMgJiYgdGhpcy5lbnZpcm9ubWVudC5wZXJzaXN0Q2FjaGUpIHtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgcmVzdG9yZVRyYWNrZWRRdWVyaWVzKHtcbiAgICAgICAgICBhcG9sbG9DbGllbnQ6IGNsaWVudCxcbiAgICAgICAgICBzdG9yYWdlLFxuICAgICAgICAgIGRlYnVnOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tncmFwaHFsXSBGYWlsZWQgdG8gcmVzdG9yZSB0cmFja2VkIHF1ZXJpZXMgZnJvbSBzdG9yYWdlOiAnICsgKGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnIpLCBlcnIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIExpc3RlbiBmb3IgbmV0d29yayByZXN0YXJ0XG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMubmV0d29yay5vbignc3RhcnQnLCAoKSA9PiB0aGlzLnJlc3RhcnQoKSlcbiAgICApO1xuXG4gICAgLy8gTGlzdGVuIGZvciBjbGVhciBjYWNoZSByZXF1ZXN0LCBmcm9tIG5ldHdvcmtcbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5uZXR3b3JrLm9uKCdyZXNldENhY2hlJywgKCkgPT4gdGhpcy5jbGVhckNhY2hlKCkpXG4gICAgKTtcblxuICAgIGNvbnNvbGUuaW5mbygnW2dyYXBocWxdIFN0YXJ0aW5nIGdyYXBocWwgW09LXScpO1xuICAgIHJldHVybiBjbGllbnQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdPblN0b3AoKSB7XG4gICAgY29uc29sZS5pbmZvKCdbZ3JhcGhxbF0gU3RvcHBpbmcgZ3JhcGhxbCBzZXJ2aWNlLi4uJyk7XG4gICAgYXdhaXQgdGhpcy5yZXNldENsaWVudCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJlc2V0Q2xpZW50KGNsaWVudD86IEFwb2xsb0NsaWVudDxhbnk+KSB7XG4gICAgY2xpZW50ID0gKGNsaWVudCB8fCB0aGlzLmFwb2xsby5jbGllbnQpIGFzIEFwb2xsb0NsaWVudDxhbnk+O1xuICAgIGlmICghY2xpZW50KSByZXR1cm47XG5cbiAgICBjb25zb2xlLmluZm8oJ1tncmFwaHFsXSBSZXNldHRpbmcgQXBvbGxvIGNsaWVudC4uLicpO1xuICAgIGNsaWVudC5zdG9wKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgY2xpZW50LmNsZWFyU3RvcmUoKSxcbiAgICAgIHRoaXMuY2xlYXJDYWNoZShjbGllbnQpXG4gICAgXSk7XG4gIH1cblxuICBwcml2YXRlIG9uQXBvbGxvRXJyb3I8VD4oZXJyOiBhbnksIGRlZmF1bHRFcnJvcj86IGFueSk6IE9ic2VydmFibGU8QXBvbGxvUXVlcnlSZXN1bHQ8VD4+IHtcbiAgICByZXR1cm4gb2YodGhpcy50b0Fwb2xsb0Vycm9yPFQ+KGVyciwgZGVmYXVsdEVycm9yKSk7XG4gIH1cblxuICBwcml2YXRlIHRvQXBvbGxvRXJyb3I8VD4oZXJyOiBhbnksIGRlZmF1bHRFcnJvcj86IGFueSk6IEFwb2xsb1F1ZXJ5UmVzdWx0PFQ+IHtcbiAgICBsZXQgZXJyb3IgPVxuICAgICAgLy8gSWYgbmV0d29yayBlcnJvcjogdHJ5IHRvIGNvbnZlcnQgdG8gQXBwIChyZWFkIGFzIEpTT04pLCBvciBjcmVhdGUgYW4gVU5LTk9XTl9ORVRXT1JLX0VSUk9SXG4gICAgICAoZXJyLm5ldHdvcmtFcnJvciAmJiAoXG4gICAgICAgICAgKGVyci5uZXR3b3JrRXJyb3IuZXJyb3IgJiYgdGhpcy50b0FwcEVycm9yKGVyci5uZXR3b3JrRXJyb3IuZXJyb3IpKVxuICAgICAgICAgIHx8IHRoaXMudG9BcHBFcnJvcihlcnIubmV0d29ya0Vycm9yKVxuICAgICAgICAgIHx8IChlcnIubmV0d29ya0Vycm9yLmVycm9yICYmIHRoaXMuY3JlYXRlQXBwRXJyb3JCeUNvZGUoZXJyLm5ldHdvcmtFcnJvci5lcnJvci5zdGF0dXMpKVxuICAgICAgICAgIHx8IHRoaXMuY3JlYXRlQXBwRXJyb3JCeUNvZGUoRXJyb3JDb2Rlcy5VTktOT1dOX05FVFdPUktfRVJST1IpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC8vIElmIGdyYXBoUUw6IHRyeSB0byBjb252ZXJ0IHRoZSBmaXJzdCBlcnJvciBmb3VuZFxuICAgICAgfHwgKGVyci5ncmFwaFFMRXJyb3JzICYmIGVyci5ncmFwaFFMRXJyb3JzLmxlbmd0aCAmJiB0aGlzLnRvQXBwRXJyb3IoZXJyLmdyYXBoUUxFcnJvcnNbMF0pKVxuICAgICAgfHwgdGhpcy50b0FwcEVycm9yKGVycilcbiAgICAgIHx8IHRoaXMudG9BcHBFcnJvcihlcnIub3JpZ2luYWxFcnJvcilcbiAgICAgIHx8IChlcnIuZ3JhcGhRTEVycm9ycyAmJiBlcnIuZ3JhcGhRTEVycm9yc1swXSlcbiAgICAgIHx8IGVycjtcbiAgICBjb25zb2xlLmVycm9yKCdbZ3JhcGhxbF0gJyArIChlcnJvciAmJiBlcnJvci5tZXNzYWdlIHx8IGVycm9yKSwgZXJyb3Iuc3RhY2sgfHwgJycpO1xuICAgIGlmIChlcnJvciAmJiBlcnJvci5jb2RlID09PSBFcnJvckNvZGVzLlVOS05PV05fTkVUV09SS19FUlJPUiAmJiBlcnIubmV0d29ya0Vycm9yICYmIGVyci5uZXR3b3JrRXJyb3IubWVzc2FnZSkge1xuICAgICAgY29uc29sZS5lcnJvcignW2dyYXBocWxdIG9yaWdpbmFsIGVycm9yOiAnICsgZXJyLm5ldHdvcmtFcnJvci5tZXNzYWdlKTtcbiAgICAgIHRoaXMub25OZXR3b3JrRXJyb3IubmV4dChlcnJvcik7XG4gICAgfVxuICAgIGlmICgoIWVycm9yIHx8ICFlcnJvci5jb2RlKSAmJiBkZWZhdWx0RXJyb3IpIHtcbiAgICAgIGVycm9yID0gey4uLmRlZmF1bHRFcnJvciwgZGV0YWlsczogZXJyb3IsIHN0YWNrOiBlcnIuc3RhY2t9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogbnVsbCxcbiAgICAgIGVycm9yczogW2Vycm9yXSxcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgbmV0d29ya1N0YXR1czogTmV0d29ya1N0YXR1cy5lcnJvclxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFwcEVycm9yQnlDb2RlKGVycm9yQ29kZTogbnVtYmVyKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5nZXRJMThuRXJyb3JNZXNzYWdlQnlDb2RlKGVycm9yQ29kZSk7XG4gICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvZGU6IGVycm9yQ29kZSxcbiAgICAgICAgbWVzc2FnZTogdGhpcy5nZXRJMThuRXJyb3JNZXNzYWdlQnlDb2RlKGVycm9yQ29kZSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldEkxOG5FcnJvck1lc3NhZ2VCeUNvZGUoZXJyb3JDb2RlOiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXG4gICAgLy8gbG9vayBpbiByZWdpc3RlcmVkIGVycm9yIGNvZGVzXG4gICAgY29uc3QgY3VzdG9tRXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvcnNbZXJyb3JDb2RlXTtcbiAgICBpZiAoY3VzdG9tRXJyb3JNZXNzYWdlKSB7XG4gICAgICByZXR1cm4gY3VzdG9tRXJyb3JNZXNzYWdlO1xuICAgIH1cblxuICAgIC8vIERlZmF1bHQsIHN3aXRjaCBvbiBlcnJvciBjb2RlXG4gICAgc3dpdGNoIChlcnJvckNvZGUpIHtcbiAgICAgIGNhc2UgU2VydmVyRXJyb3JDb2Rlcy5VTkFVVEhPUklaRUQ6XG4gICAgICAgIHJldHVybiAnRVJST1IuVU5BVVRIT1JJWkVEJztcbiAgICAgIGNhc2UgU2VydmVyRXJyb3JDb2Rlcy5GT1JCSURERU46XG4gICAgICAgIHJldHVybiAnRVJST1IuRk9SQklEREVOJztcbiAgICAgIGNhc2UgRXJyb3JDb2Rlcy5VTktOT1dOX05FVFdPUktfRVJST1I6XG4gICAgICAgIHJldHVybiAnRVJST1IuVU5LTk9XTl9ORVRXT1JLX0VSUk9SJztcbiAgICAgIGNhc2UgU2VydmVyRXJyb3JDb2Rlcy5CQURfVVBEQVRFX0RBVEU6XG4gICAgICAgIHJldHVybiAnRVJST1IuQkFEX1VQREFURV9EQVRFJztcbiAgICAgIGNhc2UgU2VydmVyRXJyb3JDb2Rlcy5EQVRBX0xPQ0tFRDpcbiAgICAgICAgcmV0dXJuICdFUlJPUi5EQVRBX0xPQ0tFRCc7XG4gICAgICBjYXNlIFNlcnZlckVycm9yQ29kZXMuQkFEX0FQUF9WRVJTSU9OOlxuICAgICAgICByZXR1cm4gJ0VSUk9SLkJBRF9BUFBfVkVSU0lPTic7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgdG9BcHBFcnJvcihlcnI6IGFueSk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGVycm9yID0gZXJyO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyO1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycgJiYgbWVzc2FnZS50cmltKCkuaW5kZXhPZigne1wiY29kZVwiOicpID09PSAwKSB7XG4gICAgICB0cnkge1xuICAgICAgICBlcnJvciA9IEpTT04ucGFyc2UobWVzc2FnZVxuICAgICAgICAgIC8vIFJlbW92ZSBzcGVjaWFsIGNoYXJhY3RlcnMgYmVmb3JlIHBhcnNpbmcgKGUuZy4gU1FMIGVycm9ycyBmcm9tIGFuIE9yYWNsZSBkYXRhYmFzZSlcbiAgICAgICAgICAucmVwbGFjZSgnXFxuJywgJyAnKVxuICAgICAgICAgIC5yZXBsYWNlKCdcXHInLCAnJykpO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignVW5hYmxlIHRvIHBhcnNlIGVycm9yIGFzIEpTT046ICcsIHBhcnNlRXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXJyb3IgJiYgZXJyb3IuY29kZSkge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQXBwRXJyb3JCeUNvZGUoZXJyb3IuY29kZSkgfHwgZXJyb3IgJiYgZXJyb3IubWVzc2FnZSB8fCBlcnJvcjtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG59XG4iXX0=
749
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2dyYXBocWwvZ3JhcGhxbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxFQUFFLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sRUFFTCxZQUFZLEVBQ1osVUFBVSxFQUdWLGFBQWEsRUFFYixhQUFhLEVBSWQsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFDOUUsT0FBTyxFQUFDLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXZILE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHM0UsT0FBTyxFQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBZSxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pLLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLGlCQUFpQixNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sdUJBQXVCLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxrQkFBa0IsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQUMsV0FBVyxFQUFVLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRWxGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRCxPQUFPLEVBQUMsWUFBWSxFQUFvQixNQUFNLHVCQUF1QixDQUFDO0FBR3RFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUdwRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUMvRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFaEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ2hFLE9BQU8sRUFBZ0IsWUFBWSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQzs7Ozs7Ozs7QUFHdEYsNEVBQTRFO0FBQzVFLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3BELE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQ2hFLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBd0J0RCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLGNBQWMsQ0FBZSxxQkFBcUIsQ0FBQyxDQUFDO0FBRWpHLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFpQixrQkFBa0IsQ0FBQyxDQUFDO0FBVzVGLE1BQU0sT0FBTyxjQUFlLFNBQVEsZ0JBQW1DO0lBd0JyRSxZQUNVLFFBQWtCLEVBQ2xCLE1BQWMsRUFDZCxRQUFrQixFQUNsQixPQUF1QixFQUN2QixPQUF1QixFQUN2QixhQUE0QixFQUNMLFdBQVcsRUFDYSxZQUEwQixFQUM5QixTQUF5QjtRQUU1RSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7UUFWekIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNMLGdCQUFXLEdBQVgsV0FBVyxDQUFBO1FBQ2EsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUEzQnRFLHFCQUFnQixHQUFxQixFQUFFLENBQUM7UUFFeEMsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQy9CLGlCQUFZLEdBQWtCLEVBQUUsQ0FBQztRQUNqQyxnQkFBVyxHQUFJLElBQUksT0FBTyxFQUFFLENBQUM7UUEyQm5DLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxXQUFXLENBQUMsaUJBQWlCLENBQUM7UUFFekQsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxPQUFPLENBQUMsc0JBQXNCO2FBQ3pELElBQUksQ0FDSCxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQ2hCLG9CQUFvQixFQUFFLENBQ3ZCLENBQUM7UUFFSixzRUFBc0U7UUFDdEUsSUFBSSxDQUFDLGNBQWM7YUFDaEIsSUFBSSxDQUNILFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQ2pDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQzdDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQ3hCO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFFNUUsQ0FBQztJQTdDRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBcUNELEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBYTtRQUM5QixJQUFJLEtBQUssRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUN6QztRQUNELG1CQUFtQjthQUNkLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRTtZQUN4QyxPQUFPLENBQUMsS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7WUFDcEUsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO1lBRXZDLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBYTtRQUM5QixJQUFJLEtBQUssRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUN6QztRQUNELG1CQUFtQjthQUNkLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRTtZQUN4QyxPQUFPLENBQUMsS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7WUFDcEUsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO1lBRXZDLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFrQztRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLLENBQXFCLElBSy9CO1FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEMsSUFBSSxHQUFHLENBQUM7UUFDUixJQUFJO1lBQ0YsR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQTBCO2dCQUNyRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUssSUFBSSxDQUFDLG1CQUFtQyxJQUFJLFNBQVM7YUFDeEYsQ0FBQyxDQUFDO1NBQ0o7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFJLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUM7UUFDRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDZCxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckI7UUFDRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFDbEIsQ0FBQztJQUVELGFBQWEsQ0FBcUIsSUFBMEI7UUFDMUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBTztZQUNsQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFLLElBQUksQ0FBQyxtQkFBbUMsSUFBSSxTQUFTO1lBQ3ZGLDJCQUEyQixFQUFFLElBQUk7U0FDbEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHFCQUFxQixDQUFxQixRQUF3QixFQUFFLElBQTBCO1FBQzVGLE9BQU8sUUFBUTthQUNaLFlBQVk7YUFDWixJQUFJLENBQ0gsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBSSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQzdELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLEtBQUssYUFBYSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFDM0csR0FBRyxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFDLEVBQUUsRUFBRTtZQUNyQixJQUFJLE1BQU0sRUFBRTtnQkFDVixNQUFNLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNqQjtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRCxVQUFVLENBQXFCLElBQTBCO1FBQ3ZELE1BQU0sUUFBUSxHQUFtQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBcUIsSUFBOEI7UUFFN0QsaUVBQWlFO1FBQ2pFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN2RSxJQUFJLE9BQU8sSUFBSSxDQUFDLGVBQWUsS0FBSyxVQUFVLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sb0JBQW9CLEdBQUksSUFBSSxDQUFDLGVBQWtELENBQUM7Z0JBQ3RGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxJQUFJLENBQUMsTUFBTTtvQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLG9EQUFvRCxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQy9HO2lCQUNJO2dCQUNILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsZUFBb0IsQ0FBQzthQUNyRDtZQUNELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDckIsTUFBTSxHQUFHLEdBQUcsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFDLENBQUM7Z0JBQzVDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtvQkFDZixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztpQkFDNUM7Z0JBQ0QsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO2FBQ2pCO1NBQ0Y7UUFFRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUEwQjtZQUM1RCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQXlCO1lBQ2xELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBYTtTQUMzQixDQUFDO2FBQ0MsSUFBSSxDQUNILFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUksS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUM3RCxLQUFLLEVBQUUsQ0FHUixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDN0IsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JCO1FBQ0QsT0FBTyxHQUFHLENBQUMsSUFBUyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxTQUFTLENBQXFCLElBTTdCLEVBQUUsS0FBZ0M7UUFFakMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBSTtZQUM5QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsV0FBVyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLGNBQWM7WUFDdkQsV0FBVyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLFNBQVM7WUFDbEQsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzFCLEVBQUU7WUFDRCxPQUFPLEVBQUUsSUFBSTtZQUNiLEdBQUcsS0FBSztTQUNULENBQUM7YUFDQyxJQUFJLENBQ0gsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBSSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQzdELEdBQUcsQ0FBQyxDQUFDLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBQyxFQUFFLEVBQUU7WUFDckIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDakI7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQsb0JBQW9CLENBQXFCLEtBQXVCLEVBQ3ZCLElBTUM7UUFFeEMsS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQztRQUVwRCxJQUFJO1lBQ0YsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBUyxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQztZQUVuRixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFO2dCQUNyQyx5QkFBeUI7Z0JBQ3pCLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7Z0JBRW5CLHlCQUF5QjtnQkFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUM7Z0JBRTVFLGtCQUFrQjtnQkFDbEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDN0M7Z0JBRUQsNkJBQTZCO2dCQUM3QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BFLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUU7b0JBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQztpQkFDakY7Z0JBRUQsa0JBQWtCO2dCQUNsQixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7b0JBQ2pDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRTt3QkFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ2hDO3lCQUNJO3dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0VBQWdFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO3FCQUN0RztpQkFDRjtnQkFFRCxLQUFLLENBQUMsVUFBVSxDQUFDO29CQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO29CQUN6QixJQUFJO2lCQUNMLENBQUMsQ0FBQzthQUNKO2lCQUNJO2dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0VBQWdFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3RHO1NBQ0Y7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLFdBQVc7WUFDWCwySUFBMkk7WUFDM0ksSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQy9FO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUEyQixLQUF1QixFQUN2QixJQU1DO1FBRTdDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxDQUFDLHFCQUFxQjtRQUVsRSxLQUFLLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLElBQUksTUFBTSxDQUFDO1FBRXBELElBQUk7WUFDRixJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFTLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDO1lBRW5GLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQ3JDLHlCQUF5QjtnQkFDekIsSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztnQkFFbkIsNkJBQTZCO2dCQUM3QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDL0csTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUVsSixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07b0JBQUUsT0FBTyxDQUFDLGVBQWU7Z0JBRTdDLGtCQUFrQjtnQkFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDO2dCQUV6RSxrQkFBa0I7Z0JBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtvQkFDZixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQzdDO2dCQUVELDZCQUE2QjtnQkFDN0IsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxFQUFFO29CQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7aUJBQ2pGO2dCQUVELHNCQUFzQjtnQkFDdEIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFO29CQUNqQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUU7d0JBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQztxQkFDOUM7eUJBQ0k7d0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxnRUFBZ0UsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7cUJBQ3RHO2lCQUNGO2dCQUVELGlCQUFpQjtnQkFDakIsS0FBSyxDQUFDLFVBQVUsQ0FBQztvQkFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7b0JBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztvQkFDekIsSUFBSTtpQkFDTCxDQUFDLENBQUM7YUFDSjtpQkFDSTtnQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLGdFQUFnRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUN0RztTQUNGO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixXQUFXO1lBQ1gsMklBQTJJO1lBQzNJLElBQUksSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUM5RTtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHlCQUF5QixDQUErQixLQUF1QixFQUN2QixJQUlDO1FBRXZELEtBQUssR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUM7UUFFcEQsSUFBSTtZQUNGLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQVMsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUM7WUFFbkYsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDckMseUJBQXlCO2dCQUN6QixJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO2dCQUVuQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25GLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztvQkFBRSxPQUFPLEtBQUssQ0FBQyxDQUFDLHlCQUF5QjtnQkFFekQsaUNBQWlDO2dCQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzlELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEUsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFDLENBQUMsQ0FBQztnQkFFL0Msc0JBQXNCO2dCQUN0QixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7b0JBQ2pDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRTt3QkFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ2hDO3lCQUNJO3dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0VBQWdFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO3FCQUN0RztpQkFDRjtnQkFFRCxpQkFBaUI7Z0JBQ2pCLEtBQUssQ0FBQyxVQUFVLENBQUM7b0JBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ3pCLElBQUk7aUJBQ0wsQ0FBQyxDQUFDO2dCQUNILE9BQU8sSUFBSSxDQUFDO2FBQ2I7aUJBQ0k7Z0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxnRUFBZ0UsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3JHLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osV0FBVztZQUNYLDJJQUEySTtZQUMzSSxJQUFJLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkNBQTZDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbEYsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILDBCQUEwQixDQUErQixLQUF1QixFQUN2QixJQUlDO1FBRXhELEtBQUssR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUM7UUFFcEQsSUFBSTtZQUNGLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFakMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDckMseUJBQXlCO2dCQUN6QixJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO2dCQUVuQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUUzSSxJQUFJLGNBQWMsQ0FBQyxNQUFNLElBQUksQ0FBQztvQkFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtnQkFFbkUscUJBQXFCO2dCQUNyQixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7b0JBRTlCLG9CQUFvQjtvQkFDcEIsY0FBYzt5QkFDWCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO3lCQUM5QyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO3lCQUNqQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUVyQztnQkFDRCxvQkFBb0I7cUJBQ2Y7b0JBQ0gsaUJBQWlCO29CQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBRTlELGdDQUFnQztvQkFDaEMsY0FBYzt3QkFDWiwrQkFBK0I7eUJBQzlCLE9BQU8sRUFBRTt3QkFDVix3QkFBd0I7eUJBQ3ZCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDNUQsbUJBQW1CO3lCQUNsQixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO3lCQUNqQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDO29CQUVwQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUU7d0JBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLHdCQUF3QjtxQkFDN0U7eUJBQ0k7d0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyw2RUFBNkUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7cUJBQ25IO29CQUVELEtBQUssQ0FBQyxVQUFVLENBQUM7d0JBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO3dCQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7d0JBQ3pCLElBQUk7cUJBQ0wsQ0FBQyxDQUFDO29CQUVILE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQztpQkFDOUI7YUFDRjtpQkFDSTtnQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLGdFQUFnRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDckcsT0FBTyxDQUFDLENBQUM7YUFDVjtTQUNGO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixXQUFXO1lBQ1gsMklBQTJJO1lBQzNJLElBQUksSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyw2Q0FBNkMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNsRixPQUFPLENBQUMsQ0FBQztTQUNWO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUNDLEtBQXVCLEVBQ3ZCLElBS0M7UUFDbEIsS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQztRQUVwRCxJQUFJO1lBQ0YsSUFBSSxJQUFJLEdBQVEsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV0QyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFO2dCQUNyQyx5QkFBeUI7Z0JBQ3pCLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7Z0JBRW5CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUVqRiw4QkFBOEI7Z0JBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0UsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQzNGO3FCQUNJO29CQUNILElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN4RTtnQkFFRCwrQkFBK0I7Z0JBQy9CLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ2pELElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRTt3QkFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ2hDO3lCQUNJO3dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0VBQWdFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO3FCQUN0RztpQkFDRjtnQkFFRCxLQUFLLENBQUMsVUFBVSxDQUFDO29CQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO29CQUN6QixJQUFJO2lCQUNMLENBQUMsQ0FBQztnQkFDSCxPQUFPLENBQUMsZ0JBQWdCO2FBQ3pCO1NBQ0Y7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLFdBQVc7WUFDWCwySUFBMkk7WUFDM0ksSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlFO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBMEI7UUFDekMsTUFBTSxHQUFHLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQXNCLENBQUM7UUFDdEQsSUFBSSxNQUFNLEVBQUU7WUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDN0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFdEMscUJBQXFCO1lBQ3JCLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUUzQixJQUFJLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQzFGO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQW9CO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxLQUFLLEVBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsNkJBQTZCO0lBRW5CLEtBQUssQ0FBQyxTQUFTO1FBRXZCLDJCQUEyQjtRQUMzQixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7U0FDckIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsTUFBTSxDQUFDO1FBRTNDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJO1lBQUUsTUFBTSxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQztRQUVsRixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQztRQUNsQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDaEUsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLDhCQUE4QixHQUFHLEtBQUssQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBRTFCLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxHQUFHLElBQUksQ0FBQyxRQUFRO1lBQ2hCLElBQUksRUFBRSxJQUFJO1lBQ1YsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN2QyxhQUFhLEVBQUUsWUFBWTtZQUMzQixHQUFHLEVBQUUsS0FBSztZQUNWLFdBQVcsRUFBRSxDQUFDLGVBQWUsRUFBRSxFQUFFO2dCQUMvQixPQUFPLENBQUMsSUFBSSxDQUFDLCtDQUErQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO2dCQUMvRSxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxhQUFhLEVBQUUsRUFBRTtTQUNsQixDQUFDO1FBRUYsaUNBQWlDO1FBQ2pDLE1BQU0sT0FBTyxHQUE4QixJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuRixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1lBRTdELGlCQUFpQjtZQUNqQixNQUFNLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLFdBQVc7aUJBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQ2pDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO2dCQUNwRSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFBO1lBRUoseUJBQXlCO1lBQ3pCLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7WUFDbEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUU7Z0JBRXJELE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFO29CQUNuQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7aUJBQ2hFO2dCQUNELElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRTtvQkFDbkMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO2lCQUNoRTtnQkFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRTtxQkFDOUIsTUFBTSxDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUMsQ0FBQztnQkFFMUMscURBQXFEO2dCQUNyRCxTQUFTLENBQUMsVUFBVSxDQUFDO29CQUNuQixHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUU7b0JBQ3pCLEdBQUcsRUFBQyxPQUFPLEVBQUM7aUJBQ2IsQ0FBQyxDQUFDO2dCQUVILDhDQUE4QztnQkFDOUMsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7WUFFSCxZQUFZO1lBQ1osTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXZELFFBQVE7WUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLGFBQWEsQ0FBQztnQkFDOUIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUMvQixTQUFTLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDbkcsQ0FBQyxDQUFDO1lBRUgsd0JBQXdCO1lBQ3hCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUU7Z0JBQ2pDLE9BQU8sQ0FBQyxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztnQkFDekQsTUFBTSxZQUFZLENBQUM7b0JBQ2pCLEtBQUs7b0JBQ0wsT0FBTztvQkFDUCxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTztvQkFDN0QsUUFBUSxFQUFFLElBQUk7b0JBQ2QsS0FBSyxFQUFFLElBQUk7aUJBQ1osQ0FBQyxDQUFDO2FBQ0o7WUFFRCxJQUFJLGFBQWdDLENBQUM7WUFFckMsbURBQW1EO1lBQ25ELElBQUksMEJBQTBCLEVBQUU7Z0JBQzlCLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQzlDLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDO29CQUNwQyxPQUFPO29CQUNQLHFCQUFxQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7b0JBQ2xELFFBQVEsRUFBRSxJQUFJO29CQUNkLEtBQUssRUFBRSxJQUFJO2lCQUNaLENBQUMsQ0FBQztnQkFDSCw0QkFBNEI7Z0JBQzVCLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsc0JBQXNCO3FCQUNsRCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ2hCLGlEQUFpRDtvQkFDakQsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO3dCQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLGlEQUFpRCxDQUFDLENBQUM7d0JBQ2hFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztxQkFDbkI7b0JBQ0Qsb0JBQW9CO3lCQUNmO3dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsaURBQWlELENBQUMsQ0FBQzt3QkFDaEUsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO3FCQUNsQjtnQkFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNOLGFBQWEsR0FBRztvQkFDZCxVQUFVO29CQUNWLFNBQVM7b0JBQ1QsV0FBVztvQkFDWCxTQUFTO29CQUNULGVBQWU7b0JBQ2YsU0FBUztvQkFDVCxRQUFRO29CQUNSLFFBQVE7aUJBQ1QsQ0FBQzthQUNIO2lCQUNJO2dCQUNILGFBQWEsR0FBRztvQkFDZCxTQUFTO29CQUNULFFBQVE7b0JBQ1IsUUFBUTtpQkFDVCxDQUFDO2FBQ0g7WUFFRCxnQkFBZ0I7WUFDaEIsTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDO2dCQUN4QixLQUFLO2dCQUNMLElBQUksRUFDRixVQUFVLENBQUMsS0FBSztnQkFDZCxtQkFBbUI7Z0JBQ25CLG1CQUFtQixFQUNuQixVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUU5QixVQUFVLENBQUMsS0FBSztnQkFDZCx1QkFBdUI7Z0JBQ3ZCLHVCQUF1QixFQUN2QixNQUFNO2dCQUVOLGlCQUFpQjtnQkFDakIsVUFBVSxDQUFDLElBQUksQ0FBQztvQkFDZCxTQUFTO29CQUNULFFBQVE7b0JBQ1IsUUFBUTtpQkFDVCxDQUFDLENBQ0gsQ0FDRjtnQkFDSCxpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVTthQUNoRCxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7U0FDN0I7UUFFRCxxQ0FBcUM7UUFDckMsSUFBSSwwQkFBMEIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRTtZQUUvRCxJQUFJO2dCQUNGLE1BQU0scUJBQXFCLENBQUM7b0JBQzFCLFlBQVksRUFBRSxNQUFNO29CQUNwQixPQUFPO29CQUNQLEtBQUssRUFBRSxJQUFJO2lCQUNaLENBQUMsQ0FBQzthQUNKO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyw0REFBNEQsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQ2hIO1NBQ0Y7UUFFRCw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLG9CQUFvQixDQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQy9DLENBQUM7UUFFRiwrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLG9CQUFvQixDQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQ3ZELENBQUM7UUFFRixPQUFPLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDaEQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVTLEtBQUssQ0FBQyxRQUFRO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUN0RCxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRVMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUEwQjtRQUNwRCxNQUFNLEdBQUcsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQXNCLENBQUM7UUFDN0QsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRXBCLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUNyRCxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDaEIsTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztTQUN4QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUFJLEdBQVEsRUFBRSxZQUFrQjtRQUNuRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFJLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTyxhQUFhLENBQUksR0FBUSxFQUFFLFlBQWtCO1FBQ25ELElBQUksS0FBSztRQUNQLDZGQUE2RjtRQUM3RixDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksQ0FDakIsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7ZUFDaEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDO2VBQ2pDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2VBQ3BGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsQ0FDL0QsQ0FDRjtZQUNELG1EQUFtRDtlQUNoRCxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7ZUFDeEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7ZUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO2VBQ2xDLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO2VBQzNDLEdBQUcsQ0FBQztRQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRixJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxxQkFBcUIsSUFBSSxHQUFHLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFO1lBQzVHLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2RSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNqQztRQUNELElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxZQUFZLEVBQUU7WUFDM0MsS0FBSyxHQUFHLEVBQUMsR0FBRyxZQUFZLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBQyxDQUFDO1NBQzdEO1FBQ0QsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJO1lBQ1YsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2YsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsYUFBYSxDQUFDLEtBQUs7U0FDbkMsQ0FBQztJQUNKLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxTQUFpQjtRQUM1QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUQsSUFBSSxPQUFPLEVBQUU7WUFDWCxPQUFPO2dCQUNMLElBQUksRUFBRSxTQUFTO2dCQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDO2FBQ25ELENBQUM7U0FDSDtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxTQUFpQjtRQUVqRCxpQ0FBaUM7UUFDakMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELElBQUksa0JBQWtCLEVBQUU7WUFDdEIsT0FBTyxrQkFBa0IsQ0FBQztTQUMzQjtRQUVELGdDQUFnQztRQUNoQyxRQUFRLFNBQVMsRUFBRTtZQUNqQixLQUFLLGdCQUFnQixDQUFDLFlBQVk7Z0JBQ2hDLE9BQU8sb0JBQW9CLENBQUM7WUFDOUIsS0FBSyxnQkFBZ0IsQ0FBQyxTQUFTO2dCQUM3QixPQUFPLGlCQUFpQixDQUFDO1lBQzNCLEtBQUssVUFBVSxDQUFDLHFCQUFxQjtnQkFDbkMsT0FBTyw2QkFBNkIsQ0FBQztZQUN2QyxLQUFLLGdCQUFnQixDQUFDLGVBQWU7Z0JBQ25DLE9BQU8sdUJBQXVCLENBQUM7WUFDakMsS0FBSyxnQkFBZ0IsQ0FBQyxXQUFXO2dCQUMvQixPQUFPLG1CQUFtQixDQUFDO1lBQzdCLEtBQUssZ0JBQWdCLENBQUMsZUFBZTtnQkFDbkMsT0FBTyx1QkFBdUIsQ0FBQztTQUNsQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTyxVQUFVLENBQUMsR0FBUTtRQUN6QixJQUFJLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDaEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDO1FBQzFDLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNFLElBQUk7Z0JBQ0YsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztvQkFDeEIscUZBQXFGO3FCQUNwRixPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztxQkFDbEIsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3ZCO1lBQ0QsT0FBTyxVQUFVLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDOUQ7U0FDRjtRQUNELElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQztTQUNqRjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7OzRHQWwyQlUsY0FBYyxpTEErQmYsV0FBVyxhQUNDLHlCQUF5Qiw2QkFDekIscUJBQXFCO2dIQWpDaEMsY0FBYyxjQUZiLE1BQU07NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWdDSSxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHlCQUF5Qjs7MEJBQzVDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlLCBvZiwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Fwb2xsbywgRXh0cmFTdWJzY3JpcHRpb25PcHRpb25zLCBRdWVyeVJlZn0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xuaW1wb3J0IHtcbiAgQXBvbGxvQ2FjaGUsXG4gIEFwb2xsb0NsaWVudCxcbiAgQXBvbGxvTGluayxcbiAgQXBvbGxvUXVlcnlSZXN1bHQsXG4gIEZldGNoUG9saWN5LFxuICBJbk1lbW9yeUNhY2hlLFxuICBNdXRhdGlvblVwZGF0ZXJGbixcbiAgTmV0d29ya1N0YXR1cyxcbiAgT3BlcmF0aW9uVmFyaWFibGVzLFxuICBUeXBlUG9saWNpZXMsXG4gIFdhdGNoUXVlcnlGZXRjaFBvbGljeVxufSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7RXJyb3JDb2RlcywgU2VydmVyRXJyb3JDb2RlcywgU2VydmljZUVycm9yfSBmcm9tICcuLi9zZXJ2aWNlcy9lcnJvcnMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBmaXJzdCwgbWFwLCBtZXJnZU1hcCwgdGFrZVVudGlsLCB0aHJvdHRsZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05ldHdvcmtTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHtDb25uZWN0aW9uVHlwZX0gZnJvbSAnLi4vc2VydmljZXMvbmV0d29yay50eXBlcyc7XG5pbXBvcnQge0FwcFdlYlNvY2tldCwgY3JlYXRlVHJhY2tlckxpbmssIEVtcHR5T2JqZWN0LCBpc011dGF0aW9uT3BlcmF0aW9uLCBpc1N1YnNjcmlwdGlvbk9wZXJhdGlvbiwgcmVzdG9yZVRyYWNrZWRRdWVyaWVzLCBTdG9yYWdlU2VydmljZVdyYXBwZXJ9IGZyb20gJy4vZ3JhcGhxbC51dGlscyc7XG5pbXBvcnQge1JldHJ5TGlua30gZnJvbSAnQGFwb2xsby9jbGllbnQvbGluay9yZXRyeSc7XG5pbXBvcnQgcXVldWVMaW5rSW1wb3J0ZWQgZnJvbSAnYXBvbGxvLWxpbmstcXVldWUnO1xuaW1wb3J0IHNlcmlhbGl6aW5nTGlua0ltcG9ydGVkIGZyb20gJ2Fwb2xsby1saW5rLXNlcmlhbGl6ZSc7XG5pbXBvcnQgbG9nZ2VyTGlua0ltcG9ydGVkIGZyb20gJ2Fwb2xsby1saW5rLWxvZ2dlcic7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge0VudGl0eVV0aWxzLCBJRW50aXR5fSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtpc05pbCwgaXNOb3RFbXB0eUFycmF5LCBpc05vdE5pbCwgdG9OdW1iZXJ9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHtSZXNvbHZlcnN9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUvdHlwZXMnO1xuaW1wb3J0IHtIdHRwSGVhZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtIdHRwTGluaywgT3B0aW9uc30gZnJvbSAnYXBvbGxvLWFuZ3VsYXIvaHR0cCc7XG5pbXBvcnQge3BlcnNpc3RDYWNoZSwgUGVyc2lzdGVudFN0b3JhZ2V9IGZyb20gJ2Fwb2xsbzMtY2FjaGUtcGVyc2lzdCc7XG5pbXBvcnQge0Vycm9yUG9saWN5LCBNdXRhdGlvbkJhc2VPcHRpb25zfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlL3dhdGNoUXVlcnlPcHRpb25zJztcbmltcG9ydCB7Q2FjaGV9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NhY2hlL2NvcmUvdHlwZXMvQ2FjaGUnO1xuaW1wb3J0IHtFTlZJUk9OTUVOVH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7Q3J5cHRvU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvY3J5cHRvLnNlcnZpY2UnO1xuaW1wb3J0IHtQcm9wZXJ0aWVzTWFwfSBmcm9tICcuLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHtTdGFydGFibGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvc3RhcnRhYmxlLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtpc01vYmlsZX0gZnJvbSAnLi4vLi4vc2hhcmVkL3BsYXRmb3Jtcyc7XG5pbXBvcnQge1N0b3JhZ2VTZXJ2aWNlfSBmcm9tICcuLi8uLi9zaGFyZWQvc3RvcmFnZS9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHtHcmFwaFFMV3NMaW5rfSBmcm9tICdAYXBvbGxvL2NsaWVudC9saW5rL3N1YnNjcmlwdGlvbnMnO1xuaW1wb3J0IHtDbGllbnRPcHRpb25zLCBjcmVhdGVDbGllbnR9IGZyb20gJ2dyYXBocWwtd3MnO1xuaW1wb3J0IHt1bndyYXBFU01vZHVsZX0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZHVsZXMnO1xuaW1wb3J0IHtjcmVhdGVGcmFnbWVudFJlZ2lzdHJ5fSBmcm9tICdAYXBvbGxvL2NsaWVudC9jYWNoZS9pbm1lbW9yeS9mcmFnbWVudFJlZ2lzdHJ5JztcbmltcG9ydCB7RG9jdW1lbnROb2RlfSBmcm9tICdncmFwaHFsJztcblxuLy8gV29ya2Fyb3VuZCBmb3IgaXNzdWUgaHR0cHM6Ly9naXRodWIuY29tL25nLXBhY2thZ3IvbmctcGFja2Fnci9pc3N1ZXMvMjIxNVxuY29uc3QgUXVldWVMaW5rID0gdW53cmFwRVNNb2R1bGUocXVldWVMaW5rSW1wb3J0ZWQpO1xuY29uc3QgU2VyaWFsaXppbmdMaW5rID0gdW53cmFwRVNNb2R1bGUoc2VyaWFsaXppbmdMaW5rSW1wb3J0ZWQpO1xuY29uc3QgbG9nZ2VyTGluayA9IHVud3JhcEVTTW9kdWxlKGxvZ2dlckxpbmtJbXBvcnRlZCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2F0Y2hRdWVyeU9wdGlvbnM8Vj4ge1xuICBxdWVyeTogYW55O1xuICB2YXJpYWJsZXM/OiBWO1xuICBlcnJvcj86IFNlcnZpY2VFcnJvcjtcbiAgZmV0Y2hQb2xpY3k/OiBXYXRjaFF1ZXJ5RmV0Y2hQb2xpY3k7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXV0YXRlUXVlcnlPcHRpb25zPFQsIFYgPSBPcGVyYXRpb25WYXJpYWJsZXM+IGV4dGVuZHMgTXV0YXRpb25CYXNlT3B0aW9uczxULCBWPiB7XG4gIG11dGF0aW9uOiBhbnk7XG4gIHZhcmlhYmxlcz86IFY7XG4gIGVycm9yPzogU2VydmljZUVycm9yO1xuICBjb250ZXh0Pzoge1xuICAgIHNlcmlhbGl6YXRpb25LZXk/OiBzdHJpbmc7XG4gICAgdHJhY2tlZD86IGJvb2xlYW47XG4gICAgdGltZW91dD86IG51bWJlcjtcbiAgfTtcbiAgb3B0aW1pc3RpY1Jlc3BvbnNlPzogVDtcbiAgb2ZmbGluZVJlc3BvbnNlPzogVCB8ICgoY29udGV4dDogYW55KSA9PiBQcm9taXNlPFQ+KTtcbiAgdXBkYXRlPzogTXV0YXRpb25VcGRhdGVyRm48VD47XG4gIGZvcmNlT2ZmbGluZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBBUFBfR1JBUEhRTF9UWVBFX1BPTElDSUVTID0gbmV3IEluamVjdGlvblRva2VuPFR5cGVQb2xpY2llcz4oJ2dyYXBocWxUeXBlUG9saWNpZXMnKTtcblxuZXhwb3J0IGNvbnN0IEFQUF9HUkFQSFFMX0ZSQUdNRU5UUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEb2N1bWVudE5vZGVbXT4oJ2dyYXBocWxGcmFnbWVudHMnKTtcblxuXG5leHBvcnQgdHlwZSBDb25uZWN0aW9uUGFyYW1zID0ge1xuICBhdXRoVG9rZW4/OiBzdHJpbmc7XG4gIGF1dGhCYXNpYz86IHN0cmluZztcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEdyYXBocWxTZXJ2aWNlIGV4dGVuZHMgU3RhcnRhYmxlU2VydmljZTxBcG9sbG9DbGllbnQ8YW55Pj4ge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25ldHdvcmtTdGF0dXNDaGFuZ2VkJDogT2JzZXJ2YWJsZTxDb25uZWN0aW9uVHlwZT47XG5cbiAgcHJpdmF0ZSBodHRwUGFyYW1zOiBPcHRpb25zO1xuICBwcml2YXRlIHdzUGFyYW1zOiBDbGllbnRPcHRpb25zPENvbm5lY3Rpb25QYXJhbXM+O1xuICBwcml2YXRlIGNvbm5lY3Rpb25QYXJhbXM6IENvbm5lY3Rpb25QYXJhbXMgPSB7fTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdEZldGNoUG9saWN5OiBXYXRjaFF1ZXJ5RmV0Y2hQb2xpY3k7XG4gIHByaXZhdGUgb25OZXR3b3JrRXJyb3IgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIGN1c3RvbUVycm9yczogUHJvcGVydGllc01hcCA9IHt9O1xuICBwcml2YXRlIG9uUmVzZXRBdXRoICA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgZ2V0IGNsaWVudCgpOiBBcG9sbG9DbGllbnQ8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cblxuICBnZXQgY2FjaGUoKTogQXBvbGxvQ2FjaGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuYXBvbGxvLmNsaWVudC5jYWNoZTtcbiAgfVxuXG4gIGdldCBkZWZhdWx0RmV0Y2hQb2xpY3koKTogV2F0Y2hRdWVyeUZldGNoUG9saWN5IHtcbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdEZldGNoUG9saWN5O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgcHJpdmF0ZSBhcG9sbG86IEFwb2xsbyxcbiAgICBwcml2YXRlIGh0dHBMaW5rOiBIdHRwTGluayxcbiAgICBwcml2YXRlIG5ldHdvcms6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjcnlwdG9TZXJ2aWNlOiBDcnlwdG9TZXJ2aWNlLFxuICAgIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9HUkFQSFFMX1RZUEVfUE9MSUNJRVMpIHByaXZhdGUgdHlwZVBvbGljaWVzOiBUeXBlUG9saWNpZXMsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBUFBfR1JBUEhRTF9GUkFHTUVOVFMpIHByaXZhdGUgZnJhZ21lbnRzOiBEb2N1bWVudE5vZGVbXVxuICApIHtcbiAgICBzdXBlcihwbGF0Zm9ybSk7IC8vIFdhaXQgcGxhdGZvcm1cblxuICAgIHRoaXMuX2RlYnVnID0gIWVudmlyb25tZW50LnByb2R1Y3Rpb247XG4gICAgdGhpcy5fZGVmYXVsdEZldGNoUG9saWN5ID0gZW52aXJvbm1lbnQuYXBvbGxvRmV0Y2hQb2xpY3k7XG5cbiAgICAvLyBMaXN0ZW4gbmV0d29yayBzdGF0dXNcbiAgICB0aGlzLl9uZXR3b3JrU3RhdHVzQ2hhbmdlZCQgPSBuZXR3b3JrLm9uTmV0d29ya1N0YXR1c0NoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoaXNOb3ROaWwpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICApO1xuXG4gICAgLy8gV2hlbiBnZXR0aW5nIG5ldHdvcmsgZXJyb3I6IHRyeSB0byBwaW5nIHBlZXIsIGFuZCB0b2dnbGUgdG8gb2ZmbGluZVxuICAgIHRoaXMub25OZXR3b3JrRXJyb3JcbiAgICAgIC5waXBlKFxuICAgICAgICB0aHJvdHRsZVRpbWUoMzAwKSxcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMubmV0d29yay5vbmxpbmUpLFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLm5ldHdvcmsuY2hlY2tQZWVyQWxpdmUoKSksXG4gICAgICAgIGZpbHRlcihhbGl2ZSA9PiAhYWxpdmUpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMubmV0d29yay5zZXRGb3JjZU9mZmxpbmUodHJ1ZSwge3Nob3dUb2FzdDogdHJ1ZX0pKTtcblxuICB9XG5cbiAgYXN5bmMgc2V0QXV0aFRva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tncmFwaHFsXSBBcHBseSB0b2tlbiBhdXRoZW50aWNhdGlvbiB0byBoZWFkZXJzJyk7XG4gICAgICB0aGlzLmNvbm5lY3Rpb25QYXJhbXMuYXV0aFRva2VuID0gdG9rZW47XG4gICAgfVxuICAgIC8vIENsZWFuIGF1dGggdG9rZW5cbiAgICBlbHNlIGlmICh0aGlzLmNvbm5lY3Rpb25QYXJhbXMuYXV0aFRva2VuKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbZ3JhcGhxbF0gUmVtb3ZlIHRva2VuIGF1dGhlbnRpY2F0aW9uIGZyb20gaGVhZGVycycpO1xuICAgICAgZGVsZXRlIHRoaXMuY29ubmVjdGlvblBhcmFtcy5hdXRoVG9rZW47XG5cbiAgICAgIGF3YWl0IHRoaXMuY2xlYXJDYWNoZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNldEF1dGhCYXNpYyhiYXNpYzogc3RyaW5nKSB7XG4gICAgaWYgKGJhc2ljKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbZ3JhcGhxbF0gQXBwbHkgYmFzaWMgYXV0aGVudGljYXRpb24gdG8gaGVhZGVycycpO1xuICAgICAgdGhpcy5jb25uZWN0aW9uUGFyYW1zLmF1dGhCYXNpYyA9IGJhc2ljO1xuICAgIH1cbiAgICAvLyBDbGVhbiBhdXRoIGJhc2ljXG4gICAgZWxzZSBpZiAodGhpcy5jb25uZWN0aW9uUGFyYW1zLmF1dGhCYXNpYykge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW2dyYXBocWxdIFJlbW92ZSBiYXNpYyBhdXRoZW50aWNhdGlvbiBmcm9tIGhlYWRlcnMnKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmNvbm5lY3Rpb25QYXJhbXMuYXV0aEJhc2ljO1xuXG4gICAgICBhd2FpdCB0aGlzLmNsZWFyQ2FjaGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWxsb3cgdG8gYWRkIGEgZmllbGQgcmVzb2x2ZXJcbiAgICogIChzZWUgZG9jOiBodHRwczovL3d3dy5hcG9sbG9ncmFwaHFsLmNvbS9kb2NzL3JlYWN0L2RhdGEvbG9jYWwtc3RhdGUvI2hhbmRsaW5nLWNsaWVudC1maWVsZHMtd2l0aC1yZXNvbHZlcnMpXG4gICAqXG4gICAqIEBwYXJhbSByZXNvbHZlcnNcbiAgICovXG4gIGFzeW5jIGFkZFJlc29sdmVyKHJlc29sdmVyczogUmVzb2x2ZXJzIHwgUmVzb2x2ZXJzW10pIHtcbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIHRoaXMuYXBvbGxvLmNsaWVudC5hZGRSZXNvbHZlcnMocmVzb2x2ZXJzKTtcbiAgfVxuXG4gIGFzeW5jIHF1ZXJ5PFQsIFYgPSBFbXB0eU9iamVjdD4ob3B0czoge1xuICAgIHF1ZXJ5OiBhbnk7XG4gICAgdmFyaWFibGVzPzogVjtcbiAgICBlcnJvcj86IFNlcnZpY2VFcnJvcjtcbiAgICBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5O1xuICB9KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcbiAgICBsZXQgcmVzO1xuICAgIHRyeSB7XG4gICAgICByZXMgPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeTxBcG9sbG9RdWVyeVJlc3VsdDxUPiwgVj4oe1xuICAgICAgICBxdWVyeTogb3B0cy5xdWVyeSxcbiAgICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlcyxcbiAgICAgICAgZmV0Y2hQb2xpY3k6IG9wdHMuZmV0Y2hQb2xpY3kgfHwgKHRoaXMuX2RlZmF1bHRGZXRjaFBvbGljeSBhcyBGZXRjaFBvbGljeSkgfHwgdW5kZWZpbmVkXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJlcyA9IHRoaXMudG9BcG9sbG9FcnJvcjxUPihlcnIsIG9wdHMuZXJyb3IpO1xuICAgIH1cbiAgICBpZiAocmVzLmVycm9ycykge1xuICAgICAgdGhyb3cgcmVzLmVycm9yc1swXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5kYXRhO1xuICB9XG5cbiAgd2F0Y2hRdWVyeVJlZjxULCBWID0gRW1wdHlPYmplY3Q+KG9wdHM6IFdhdGNoUXVlcnlPcHRpb25zPFY+KTogUXVlcnlSZWY8VCwgVj4ge1xuICAgIHJldHVybiB0aGlzLmFwb2xsby53YXRjaFF1ZXJ5PFQsIFY+KHtcbiAgICAgIHF1ZXJ5OiBvcHRzLnF1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlcyxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRzLmZldGNoUG9saWN5IHx8ICh0aGlzLl9kZWZhdWx0RmV0Y2hQb2xpY3kgYXMgRmV0Y2hQb2xpY3kpIHx8IHVuZGVmaW5lZCxcbiAgICAgIG5vdGlmeU9uTmV0d29ya1N0YXR1c0NoYW5nZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgcXVlcnlSZWZWYWx1ZXNDaGFuZ2VzPFQsIFYgPSBFbXB0eU9iamVjdD4ocXVlcnlSZWY6IFF1ZXJ5UmVmPFQsIFY+LCBvcHRzOiBXYXRjaFF1ZXJ5T3B0aW9uczxWPik6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiBxdWVyeVJlZlxuICAgICAgLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhpcy5vbkFwb2xsb0Vycm9yPFQ+KGVycm9yLCBvcHRzLmVycm9yKSksXG4gICAgICAgIGZpbHRlcih2YWx1ZSA9PiB2YWx1ZS5uZXR3b3JrU3RhdHVzID09PSBOZXR3b3JrU3RhdHVzLnJlYWR5IHx8IHZhbHVlLm5ldHdvcmtTdGF0dXMgPT09IE5ldHdvcmtTdGF0dXMuZXJyb3IpLFxuICAgICAgICBtYXAoKHtkYXRhLCBlcnJvcnN9KSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9ycykge1xuICAgICAgICAgICAgdGhyb3cgZXJyb3JzWzBdO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICB3YXRjaFF1ZXJ5PFQsIFYgPSBFbXB0eU9iamVjdD4ob3B0czogV2F0Y2hRdWVyeU9wdGlvbnM8Vj4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCBxdWVyeVJlZjogUXVlcnlSZWY8VCwgVj4gPSB0aGlzLndhdGNoUXVlcnlSZWYob3B0cyk7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlSZWZWYWx1ZXNDaGFuZ2VzKHF1ZXJ5UmVmLCBvcHRzKTtcbiAgfVxuXG4gIGFzeW5jIG11dGF0ZTxULCBWID0gRW1wdHlPYmplY3Q+KG9wdHM6IE11dGF0ZVF1ZXJ5T3B0aW9uczxULCBWPik6IFByb21pc2U8VD4ge1xuXG4gICAgLy8gSWYgb2ZmbGluZSwgY29tcHV0ZSBhbiBvcHRpbWlzdGljIHJlc3BvbnNlIGZvciB0cmFja2VkIHF1ZXJpZXNcbiAgICBpZiAoKG9wdHMuZm9yY2VPZmZsaW5lIHx8IHRoaXMubmV0d29yay5vZmZsaW5lKSAmJiBvcHRzLm9mZmxpbmVSZXNwb25zZSkge1xuICAgICAgaWYgKHR5cGVvZiBvcHRzLm9mZmxpbmVSZXNwb25zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvcHRzLmNvbnRleHQgPSBvcHRzLmNvbnRleHQgfHwge307XG4gICAgICAgIGNvbnN0IG9wdGltaXN0aWNSZXNwb25zZUZuID0gKG9wdHMub2ZmbGluZVJlc3BvbnNlIGFzICgoY29udGV4dDogYW55KSA9PiBQcm9taXNlPFQ+KSk7XG4gICAgICAgIG9wdHMub3B0aW1pc3RpY1Jlc3BvbnNlID0gYXdhaXQgb3B0aW1pc3RpY1Jlc3BvbnNlRm4ob3B0cy5jb250ZXh0KTtcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKCdbZ3JhcGhxbF0gW29mZmxpbmVdIFVzaW5nIGFuIG9wdGltaXN0aWMgcmVzcG9uc2U6ICcsIG9wdHMub3B0aW1pc3RpY1Jlc3BvbnNlKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBvcHRzLm9wdGltaXN0aWNSZXNwb25zZSA9IG9wdHMub2ZmbGluZVJlc3BvbnNlIGFzIFQ7XG4gICAgICB9XG4gICAgICBpZiAob3B0cy5mb3JjZU9mZmxpbmUpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge2RhdGE6IG9wdHMub3B0aW1pc3RpY1Jlc3BvbnNlfTtcbiAgICAgICAgaWYgKG9wdHMudXBkYXRlKSB7XG4gICAgICAgICAgb3B0cy51cGRhdGUodGhpcy5hcG9sbG8uY2xpZW50LmNhY2hlLCByZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXMuZGF0YTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmFwb2xsby5tdXRhdGU8QXBvbGxvUXVlcnlSZXN1bHQ8VD4sIFY+KHtcbiAgICAgIG11dGF0aW9uOiBvcHRzLm11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlcyxcbiAgICAgIGNvbnRleHQ6IG9wdHMuY29udGV4dCxcbiAgICAgIG9wdGltaXN0aWNSZXNwb25zZTogb3B0cy5vcHRpbWlzdGljUmVzcG9uc2UgYXMgYW55LFxuICAgICAgdXBkYXRlOiBvcHRzLnVwZGF0ZSBhcyBhbnlcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhpcy5vbkFwb2xsb0Vycm9yPFQ+KGVycm9yLCBvcHRzLmVycm9yKSksXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIC8vIFRvIGRlYnVnLCBpZiBuZWVkOlxuICAgICAgICAvL3RhcCgocmVzKSA9PiAoIXJlcykgJiYgY29uc29sZS5lcnJvcignW2dyYXBocWxdIFVua25vd24gZXJyb3IgZHVyaW5nIG11dGF0aW9uLiBDaGVjayBlcnJvcnMgaW4gY29uc29sZSAobWF5IGJlIGFuIGludmFsaWQgZ2VuZXJhdGVkIGNhY2hlIGlkID8pJykpXG4gICAgICApLnRvUHJvbWlzZSgpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlcy5lcnJvcnMpKSB7XG4gICAgICB0aHJvdyByZXMuZXJyb3JzWzBdO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLmRhdGEgYXMgVDtcbiAgfVxuXG4gIHN1YnNjcmliZTxULCBWID0gRW1wdHlPYmplY3Q+KG9wdHM6IHtcbiAgICBxdWVyeTogYW55O1xuICAgIHZhcmlhYmxlczogVjtcbiAgICBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5O1xuICAgIGVycm9yUG9saWN5PzogRXJyb3JQb2xpY3k7XG4gICAgZXJyb3I/OiBTZXJ2aWNlRXJyb3I7XG4gIH0sIGV4dHJhPzogRXh0cmFTdWJzY3JpcHRpb25PcHRpb25zKTogT2JzZXJ2YWJsZTxUPiB7XG5cbiAgICByZXR1cm4gdGhpcy5hcG9sbG8uc3Vic2NyaWJlPFQ+KHtcbiAgICAgIHF1ZXJ5OiBvcHRzLnF1ZXJ5LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdHMgJiYgb3B0cy5mZXRjaFBvbGljeSB8fCAnbmV0d29yay1vbmx5JyxcbiAgICAgIGVycm9yUG9saWN5OiBvcHRzICYmIG9wdHMuZXJyb3JQb2xpY3kgfHwgdW5kZWZpbmVkLFxuICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlc1xuICAgIH0sIHtcbiAgICAgIHVzZVpvbmU6IHRydWUsXG4gICAgICAuLi5leHRyYVxuICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB0aGlzLm9uQXBvbGxvRXJyb3I8VD4oZXJyb3IsIG9wdHMuZXJyb3IpKSxcbiAgICAgICAgbWFwKCh7ZGF0YSwgZXJyb3JzfSkgPT4ge1xuICAgICAgICAgIGlmIChlcnJvcnMpIHtcbiAgICAgICAgICAgIHRocm93IGVycm9yc1swXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgaW5zZXJ0SW50b1F1ZXJ5Q2FjaGU8VCwgViA9IEVtcHR5T2JqZWN0PihjYWNoZTogQXBvbGxvQ2FjaGU8YW55PixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzOiBDYWNoZS5SZWFkUXVlcnlPcHRpb25zPFYsIGFueT4gJiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheUZpZWxkTmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxGaWVsZE5hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydEZuPzogKGQxOiBULCBkMjogVCkgPT4gbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT86IG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSB7XG5cbiAgICBjYWNoZSA9IGNhY2hlIHx8IHRoaXMuYXBvbGxvLmNsaWVudC5jYWNoZTtcbiAgICBvcHRzLmFycmF5RmllbGROYW1lID0gb3B0cy5hcnJheUZpZWxkTmFtZSB8fCAnZGF0YSc7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IGRhdGEgPSBjYWNoZS5yZWFkUXVlcnk8YW55LCBWPih7cXVlcnk6IG9wdHMucXVlcnksIHZhcmlhYmxlczogb3B0cy52YXJpYWJsZXN9KTtcblxuICAgICAgaWYgKGRhdGEgJiYgZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXSkge1xuICAgICAgICAvLyBDb3B5IGJlY2F1c2UgaW1tdXRhYmxlXG4gICAgICAgIGRhdGEgPSB7IC4uLmRhdGEgfTtcblxuICAgICAgICAvLyBBcHBlbmQgdG8gcmVzdWx0IGFycmF5XG4gICAgICAgIGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0gPSBbIC4uLmRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0sIHsuLi5vcHRzLmRhdGF9XTtcblxuICAgICAgICAvLyBSZXNvcnQsIGlmIG5lZWRcbiAgICAgICAgaWYgKG9wdHMuc29ydEZuKSB7XG4gICAgICAgICAgZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXS5zb3J0KG9wdHMuc29ydEZuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEV4Y2x1ZGUgaWYgZXhjZWVkIG1heCBzaXplXG4gICAgICAgIGNvbnN0IHNpemUgPSB0b051bWJlcihvcHRzLnZhcmlhYmxlcyAmJiBvcHRzLnZhcmlhYmxlc1snc2l6ZSddLCAtMSk7XG4gICAgICAgIGlmIChzaXplID4gMCAmJiBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLmxlbmd0aCA+IHNpemUpIHtcbiAgICAgICAgICBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLnNwbGljZShzaXplLCBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLmxlbmd0aCAtIHNpemUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5jcmVtZW50IHRvdGFsXG4gICAgICAgIGlmIChpc05vdE5pbChvcHRzLnRvdGFsRmllbGROYW1lKSkge1xuICAgICAgICAgIGlmIChpc05vdE5pbChkYXRhW29wdHMudG90YWxGaWVsZE5hbWVdKSkge1xuICAgICAgICAgICAgZGF0YVtvcHRzLnRvdGFsRmllbGROYW1lXSArPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW2dyYXBocWxdIFVuYWJsZSB0byB1cGRhdGUgY2FjaGVkIHF1ZXJ5LiBVbmtub3duIHJlc3VsdCBwYXJ0OiAnICsgb3B0cy50b3RhbEZpZWxkTmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY2FjaGUud3JpdGVRdWVyeSh7XG4gICAgICAgICAgcXVlcnk6IG9wdHMucXVlcnksXG4gICAgICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlcyxcbiAgICAgICAgICBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW2dyYXBocWxdIFVuYWJsZSB0byB1cGRhdGUgY2FjaGVkIHF1ZXJ5LiBVbmtub3duIHJlc3VsdCBwYXJ0OiAnICsgb3B0cy5hcnJheUZpZWxkTmFtZSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBjb250aW51ZVxuICAgICAgLy8gcmVhZCBpbiBjYWNoZSBpcyBub3QgZ3VhcmFudGVlZCB0byByZXR1cm4gYSByZXN1bHQuIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXBvbGxvZ3JhcGhxbC9yZWFjdC1hcG9sbG8vaXNzdWVzLzE3NzYjaXNzdWVjb21tZW50LTM3MjIzNzk0MFxuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmVycm9yKCdbZ3JhcGhxbF0gRXJyb3Igd2hpbGUgdXBkYXRpbmcgY2FjaGU6ICcsIGVycik7XG4gICAgfVxuICB9XG5cbiAgYWRkTWFueVRvUXVlcnlDYWNoZTxUID0gYW55LCBWID0gRW1wdHlPYmplY3Q+KGNhY2hlOiBBcG9sbG9DYWNoZTxhbnk+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0czogQ2FjaGUuUmVhZFF1ZXJ5T3B0aW9uczxWLCBhbnk+ICYge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheUZpZWxkTmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbEZpZWxkTmFtZT86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogVFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVhbHNGbj86IChkMTogVCwgZDI6IFQpID0+IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRGbj86IChkMTogVCwgZDI6IFQpID0+IG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIHtcblxuICAgIGlmICghb3B0cy5kYXRhIHx8ICFvcHRzLmRhdGEubGVuZ3RoKSByZXR1cm47IC8vIG5vdGhpbmcgdG8gcHJvY2Vzc1xuXG4gICAgY2FjaGUgPSBjYWNoZSB8fCB0aGlzLmFwb2xsby5jbGllbnQuY2FjaGU7XG4gICAgb3B0cy5hcnJheUZpZWxkTmFtZSA9IG9wdHMuYXJyYXlGaWVsZE5hbWUgfHwgJ2RhdGEnO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBkYXRhID0gY2FjaGUucmVhZFF1ZXJ5PGFueSwgVj4oe3F1ZXJ5OiBvcHRzLnF1ZXJ5LCB2YXJpYWJsZXM6IG9wdHMudmFyaWFibGVzfSk7XG5cbiAgICAgIGlmIChkYXRhICYmIGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0pIHtcbiAgICAgICAgLy8gQ29weSBiZWNhdXNlIGltbXV0YWJsZVxuICAgICAgICBkYXRhID0geyAuLi5kYXRhIH07XG5cbiAgICAgICAgLy8gS2VlcCBvbmx5IG5vdCBleGlzdGluZyByZXNcbiAgICAgICAgY29uc3QgZXF1YWxzRm4gPSBvcHRzLmVxdWFsc0ZuIHx8ICgoZDEsIGQyKSA9PiBkMVsnaWQnXSA9PT0gZDJbJ2lkJ10gJiYgZDFbJ2VudGl0eU5hbWUnXSA9PT0gZDJbJ2VudGl0eU5hbWUnXSk7XG4gICAgICAgIGNvbnN0IG5ld0l0ZW1zID0gb3B0cy5kYXRhLmZpbHRlcihpbnB1dFZhbHVlID0+IGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0uZmluZEluZGV4KGV4aXN0aW5nVmFsdWUgPT4gZXF1YWxzRm4oaW5wdXRWYWx1ZSwgZXhpc3RpbmdWYWx1ZSkpID09PSAtMSk7XG5cbiAgICAgICAgaWYgKCFuZXdJdGVtcy5sZW5ndGgpIHJldHVybjsgLy8gTm8gbmV3IHZhbHVlXG5cbiAgICAgICAgLy8gQXBwZW5kIHRvIGFycmF5XG4gICAgICAgIGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0gPSBbIC4uLmRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0sIC4uLm5ld0l0ZW1zXTtcblxuICAgICAgICAvLyBSZXNvcnQsIGlmIG5lZWRcbiAgICAgICAgaWYgKG9wdHMuc29ydEZuKSB7XG4gICAgICAgICAgZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXS5zb3J0KG9wdHMuc29ydEZuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEV4Y2x1ZGUgaWYgZXhjZWVkIG1heCBzaXplXG4gICAgICAgIGNvbnN0IHNpemUgPSB0b051bWJlcihvcHRzLnZhcmlhYmxlcyAmJiBvcHRzLnZhcmlhYmxlc1snc2l6ZSddLCAtMSk7XG4gICAgICAgIGlmIChzaXplID4gMCAmJiBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLmxlbmd0aCA+IHNpemUpIHtcbiAgICAgICAgICBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLnNwbGljZShzaXplLCBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLmxlbmd0aCAtIHNpemUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5jcmVtZW50IHRoZSB0b3RhbFxuICAgICAgICBpZiAoaXNOb3ROaWwob3B0cy50b3RhbEZpZWxkTmFtZSkpIHtcbiAgICAgICAgICBpZiAoaXNOb3ROaWwoZGF0YVtvcHRzLnRvdGFsRmllbGROYW1lXSkpIHtcbiAgICAgICAgICAgIGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0gKz0gbmV3SXRlbXMubGVuZ3RoO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW2dyYXBocWxdIFVuYWJsZSB0byB1cGRhdGUgY2FjaGVkIHF1ZXJ5LiBVbmtub3duIHJlc3VsdCBwYXJ0OiAnICsgb3B0cy50b3RhbEZpZWxkTmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gV3JpdGUgdG8gY2FjaGVcbiAgICAgICAgY2FjaGUud3JpdGVRdWVyeSh7XG4gICAgICAgICAgcXVlcnk6IG9wdHMucXVlcnksXG4gICAgICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlcyxcbiAgICAgICAgICBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW2dyYXBocWxdIFVuYWJsZSB0byB1cGRhdGUgY2FjaGVkIHF1ZXJ5LiBVbmtub3duIHJlc3VsdCBwYXJ0OiAnICsgb3B0cy5hcnJheUZpZWxkTmFtZSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBjb250aW51ZVxuICAgICAgLy8gcmVhZCBpbiBjYWNoZSBpcyBub3QgZ3VhcmFudGVlZCB0byByZXR1cm4gYSByZXN1bHQuIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXBvbGxvZ3JhcGhxbC9yZWFjdC1hcG9sbG8vaXNzdWVzLzE3NzYjaXNzdWVjb21tZW50LTM3MjIzNzk0MFxuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLndhcm4oJ1tncmFwaHFsXSBFcnJvciB3aGlsZSB1cGRhdGluZyBjYWNoZTogJywgZXJyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGZyb20gY2FjaGUsIGFuZCByZXR1cm4gaWYgcmVtb3ZlZCBvciBub3RcbiAgICpcbiAgICogQHBhcmFtIGNhY2hlXG4gICAqIEBwYXJhbSBvcHRzXG4gICAqL1xuICByZW1vdmVGcm9tQ2FjaGVkUXVlcnlCeUlkPFYgPSBFbXB0eU9iamVjdCwgSUQgPSBudW1iZXI+KGNhY2hlOiBBcG9sbG9DYWNoZTxhbnk+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHM6IENhY2hlLlJlYWRRdWVyeU9wdGlvbnM8ViwgYW55PiAmIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5RmllbGROYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbEZpZWxkTmFtZT86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkczogSUQ7IC8vIERvIE5PVCB1c2UgJ2lkJywgYXMgYWxyZWFkeSB1c2VkIGJ5IHRoZSBBcG9sbG8gQVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk6IGJvb2xlYW4ge1xuXG4gICAgY2FjaGUgPSBjYWNoZSB8fCB0aGlzLmFwb2xsby5jbGllbnQuY2FjaGU7XG4gICAgb3B0cy5hcnJheUZpZWxkTmFtZSA9IG9wdHMuYXJyYXlGaWVsZE5hbWUgfHwgJ2RhdGEnO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBkYXRhID0gY2FjaGUucmVhZFF1ZXJ5PGFueSwgVj4oe3F1ZXJ5OiBvcHRzLnF1ZXJ5LCB2YXJpYWJsZXM6IG9wdHMudmFyaWFibGVzfSk7XG5cbiAgICAgIGlmIChkYXRhICYmIGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0pIHtcbiAgICAgICAgLy8gQ29weSBiZWNhdXNlIGltbXV0YWJsZVxuICAgICAgICBkYXRhID0geyAuLi5kYXRhIH07XG5cbiAgICAgICAgY29uc3QgaW5kZXggPSBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLmZpbmRJbmRleChpdGVtID0+IGl0ZW1bJ2lkJ10gPT09IG9wdHMuaWRzKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIGZhbHNlOyAvLyBTa2lwIChub3RoaW5nIHJlbW92ZWQpXG5cbiAgICAgICAgLy8gQ29weSwgdGhlbiByZW1vdmUgZGVsZXRlZCBpdGVtXG4gICAgICAgIGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0gPSBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLnNsaWNlKCk7XG4gICAgICAgIGNvbnN0IGRlbGV0ZWRJdGVtID0gZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXS5zcGxpY2UoaW5kZXgsIDEpWzBdO1xuICAgICAgICBjYWNoZS5ldmljdCh7aWQ6IGNhY2hlLmlkZW50aWZ5KGRlbGV0ZWRJdGVtKX0pO1xuXG4gICAgICAgIC8vIERlY3JlbWVudCB0aGUgdG90YWxcbiAgICAgICAgaWYgKGlzTm90TmlsKG9wdHMudG90YWxGaWVsZE5hbWUpKSB7XG4gICAgICAgICAgaWYgKGlzTm90TmlsKGRhdGFbb3B0cy50b3RhbEZpZWxkTmFtZV0pKSB7XG4gICAgICAgICAgICBkYXRhW29wdHMudG90YWxGaWVsZE5hbWVdIC09IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbZ3JhcGhxbF0gVW5hYmxlIHRvIHVwZGF0ZSBjYWNoZWQgcXVlcnkuIFVua25vd24gcmVzdWx0IHBhcnQ6ICcgKyBvcHRzLnRvdGFsRmllbGROYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXcml0ZSB0byBjYWNoZVxuICAgICAgICBjYWNoZS53cml0ZVF1ZXJ5KHtcbiAgICAgICAgICBxdWVyeTogb3B0cy5xdWVyeSxcbiAgICAgICAgICB2YXJpYWJsZXM6IG9wdHMudmFyaWFibGVzLFxuICAgICAgICAgIGRhdGFcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW2dyYXBocWxdIFVuYWJsZSB0byB1cGRhdGUgY2FjaGVkIHF1ZXJ5LiBVbmtub3duIHJlc3VsdCBwYXJ0OiAnICsgb3B0cy5hcnJheUZpZWxkTmFtZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIGNvbnRpbnVlXG4gICAgICAvLyByZWFkIGluIGNhY2hlIGlzIG5vdCBndWFyYW50ZWVkIHRvIHJldHVybiBhIHJlc3VsdC4gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hcG9sbG9ncmFwaHFsL3JlYWN0LWFwb2xsby9pc3N1ZXMvMTc3NiNpc3N1ZWNvbW1lbnQtMzcyMjM3OTQwXG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUud2FybignW2dyYXBocWxdIEVycm9yIHdoaWxlIHJlbW92aW5nIGZyb20gY2FjaGU6ICcsIGVycik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBpZHMgZnJvbSBjYWNoZSwgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGl0ZW1zIHJlbW92ZWRcbiAgICpcbiAgICogQHBhcmFtIGNhY2hlXG4gICAqIEBwYXJhbSBvcHRzXG4gICAqL1xuICByZW1vdmVGcm9tQ2FjaGVkUXVlcnlCeUlkczxWID0gRW1wdHlPYmplY3QsIElEID0gbnVtYmVyPihjYWNoZTogQXBvbGxvQ2FjaGU8YW55PixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0czogQ2FjaGUuUmVhZFF1ZXJ5T3B0aW9uczxWLCBhbnk+ICYge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5RmllbGROYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxGaWVsZE5hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRzOiBJRFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTogbnVtYmVyIHtcblxuICAgIGNhY2hlID0gY2FjaGUgfHwgdGhpcy5hcG9sbG8uY2xpZW50LmNhY2hlO1xuICAgIG9wdHMuYXJyYXlGaWVsZE5hbWUgPSBvcHRzLmFycmF5RmllbGROYW1lIHx8ICdkYXRhJztcblxuICAgIHRyeSB7XG4gICAgICBsZXQgZGF0YSA9IGNhY2hlLnJlYWRRdWVyeShvcHRzKTtcblxuICAgICAgaWYgKGRhdGEgJiYgZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXSkge1xuICAgICAgICAvLyBDb3B5IGJlY2F1c2UgaW1tdXRhYmxlXG4gICAgICAgIGRhdGEgPSB7IC4uLmRhdGEgfTtcblxuICAgICAgICBjb25zdCBkZWxldGVkSW5kZXhlcyA9IGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0ucmVkdWNlKChyZXMsIGl0ZW0sIGluZGV4KSA9PiBvcHRzLmlkcy5pbmNsdWRlcyhpdGVtWydpZCddKSA/IHJlcy5jb25jYXQoaW5kZXgpIDogcmVzLCBbXSk7XG5cbiAgICAgICAgaWYgKGRlbGV0ZWRJbmRleGVzLmxlbmd0aCA8PSAwKSByZXR1cm4gMDsgLy8gU2tpcCAobm90aGluZyByZW1vdmVkKVxuXG4gICAgICAgIC8vIFF1ZXJ5IGhhcyBOTyB0b3RhbFxuICAgICAgICBpZiAoaXNOaWwob3B0cy50b3RhbEZpZWxkTmFtZSkpIHtcblxuICAgICAgICAgIC8vIEV2aWN0IGVhY2ggb2JqZWN0XG4gICAgICAgICAgZGVsZXRlZEluZGV4ZXNcbiAgICAgICAgICAgIC5tYXAoaW5kZXggPT4gZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXVtpbmRleF0pXG4gICAgICAgICAgICAubWFwKGl0ZW0gPT4gY2FjaGUuaWRlbnRpZnkoaXRlbSkpXG4gICAgICAgICAgICAuZm9yRWFjaChpZCA9PiBjYWNoZS5ldmljdCh7aWR9KSk7XG5cbiAgICAgICAgfVxuICAgICAgICAvLyBRdWVyeSBoYXMgYSB0b3RhbFxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAvLyBDb3B5IHRoZSBhcnJheVxuICAgICAgICAgIGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0gPSBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLnNsaWNlKCk7XG5cbiAgICAgICAgICAvLyByZW1vdmUgZnJvbSBhcnJheSwgdGhlbiBldmljdFxuICAgICAgICAgIGRlbGV0ZWRJbmRleGVzXG4gICAgICAgICAgICAvLyBSZXZlcnNlOiB0byBrZWVwIHZhbGlkIGluZGV4XG4gICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAvLyBSZW1vdmUgZnJvbSB0aGUgYXJyYXlcbiAgICAgICAgICAgIC5tYXAoaW5kZXggPT4gZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXS5zcGxpY2UoaW5kZXgsIDEpWzBdKVxuICAgICAgICAgICAgLy8gRXZpY3QgZnJvbSBjYWNoZVxuICAgICAgICAgICAgLm1hcChpdGVtID0+IGNhY2hlLmlkZW50aWZ5KGl0ZW0pKVxuICAgICAgICAgICAgLmZvckVhY2goaWQgPT4gY2FjaGUuZXZpY3Qoe2lkfSkpO1xuXG4gICAgICAgICAgaWYgKGlzTm90TmlsKGRhdGFbb3B0cy50b3RhbEZpZWxkTmFtZV0pKSB7XG4gICAgICAgICAgICBkYXRhW29wdHMudG90YWxGaWVsZE5hbWVdIC09IGRlbGV0ZWRJbmRleGVzLmxlbmd0aDsgLy8gUmVtb3ZlIGRlbGV0aW9uIGNvdW50XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbZ3JhcGhxbF0gVW5hYmxlIHRvIHVwZGF0ZSB0aGUgdG90YWwgaW4gY2FjaGVkIHF1ZXJ5LiBVbmtub3duIHJlc3VsdCBwYXJ0OiAnICsgb3B0cy50b3RhbEZpZWxkTmFtZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FjaGUud3JpdGVRdWVyeSh7XG4gICAgICAgICAgICBxdWVyeTogb3B0cy5xdWVyeSxcbiAgICAgICAgICAgIHZhcmlhYmxlczogb3B0cy52YXJpYWJsZXMsXG4gICAgICAgICAgICBkYXRhXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gZGVsZXRlZEluZGV4ZXMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbZ3JhcGhxbF0gVW5hYmxlIHRvIHVwZGF0ZSBjYWNoZWQgcXVlcnkuIFVua25vd24gcmVzdWx0IHBhcnQ6ICcgKyBvcHRzLmFycmF5RmllbGROYW1lKTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBjb250aW51ZVxuICAgICAgLy8gcmVhZCBpbiBjYWNoZSBpcyBub3QgZ3VhcmFudGVlZCB0byByZXR1cm4gYSByZXN1bHQuIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXBvbGxvZ3JhcGhxbC9yZWFjdC1hcG9sbG8vaXNzdWVzLzE3NzYjaXNzdWVjb21tZW50LTM3MjIzNzk0MFxuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLndhcm4oJ1tncmFwaHFsXSBFcnJvciB3aGlsZSByZW1vdmluZyBmcm9tIGNhY2hlOiAnLCBlcnIpO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVG9RdWVyeUNhY2hlPFQgZXh0ZW5kcyBJRW50aXR5PGFueT4sXG4gICAgViA9IEVtcHR5T2JqZWN0PihjYWNoZTogQXBvbGxvQ2FjaGU8YW55PixcbiAgICAgICAgICAgICAgICAgICAgIG9wdHM6IENhY2hlLlJlYWRRdWVyeU9wdGlvbnM8ViwgYW55PiAmIHtcbiAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlGaWVsZE5hbWU6IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgdG90YWxGaWVsZE5hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IFQ7XG4gICAgICAgICAgICAgICAgICAgICAgIGVxdWFsc0ZuPzogKGQxOiBULCBkMjogVCkgPT4gYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgICAgIH0pIHtcbiAgICBjYWNoZSA9IGNhY2hlIHx8IHRoaXMuYXBvbGxvLmNsaWVudC5jYWNoZTtcbiAgICBvcHRzLmFycmF5RmllbGROYW1lID0gb3B0cy5hcnJheUZpZWxkTmFtZSB8fCAnZGF0YSc7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IGRhdGE6IGFueSA9IGNhY2hlLnJlYWRRdWVyeShvcHRzKTtcblxuICAgICAgaWYgKGRhdGEgJiYgZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXSkge1xuICAgICAgICAvLyBDb3B5IGJlY2F1c2UgaW1tdXRhYmxlXG4gICAgICAgIGRhdGEgPSB7IC4uLmRhdGEgfTtcblxuICAgICAgICBjb25zdCBlcXVhbHNGbiA9IG9wdHMuZXF1YWxzRm4gfHwgKChkMSwgZDIpID0+IEVudGl0eVV0aWxzLmVxdWFscyhkMSwgZDIsICdpZCcpKTtcblxuICAgICAgICAvLyBVcGRhdGUgaWYgZXhpc3RzLCBvciBpbnNlcnRcbiAgICAgICAgY29uc3QgaW5kZXggPSBkYXRhW29wdHMuYXJyYXlGaWVsZE5hbWVdLmZpbmRJbmRleCh2ID0+IGVxdWFsc0ZuKG9wdHMuZGF0YSwgdikpO1xuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXSA9IGRhdGFbb3B0cy5hcnJheUZpZWxkTmFtZV0uc2xpY2UoKS5zcGxpY2UoaW5kZXgsIDEsIG9wdHMuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXSA9IFsgLi4uZGF0YVtvcHRzLmFycmF5RmllbGROYW1lXSwgb3B0cy5kYXRhXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEluY3JlbWVudCB0b3RhbCAoaWYgY2hhbmdlZClcbiAgICAgICAgaWYgKGlzTm90TmlsKG9wdHMudG90YWxGaWVsZE5hbWUpICYmIGluZGV4ID09PSAtMSkge1xuICAgICAgICAgIGlmIChpc05vdE5pbChkYXRhW29wdHMudG90YWxGaWVsZE5hbWVdKSkge1xuICAgICAgICAgICAgZGF0YVtvcHRzLnRvdGFsRmllbGROYW1lXSArPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW2dyYXBocWxdIFVuYWJsZSB0byB1cGRhdGUgY2FjaGVkIHF1ZXJ5LiBVbmtub3duIHJlc3VsdCBwYXJ0OiAnICsgb3B0cy50b3RhbEZpZWxkTmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY2FjaGUud3JpdGVRdWVyeSh7XG4gICAgICAgICAgcXVlcnk6IG9wdHMucXVlcnksXG4gICAgICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlcyxcbiAgICAgICAgICBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47IC8vIE9LOiBzdG9wIGhlcmVcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIGNvbnRpbnVlXG4gICAgICAvLyByZWFkIGluIGNhY2hlIGlzIG5vdCBndWFyYW50ZWVkIHRvIHJldHVybiBhIHJlc3VsdC4gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hcG9sbG9ncmFwaHFsL3JlYWN0LWFwb2xsby9pc3N1ZXMvMTc3NiNpc3N1ZWNvbW1lbnQtMzcyMjM3OTQwXG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUud2FybignW2dyYXBocWxdIEVycm9yIHdoaWxlIHVwZGF0aW5nIGNhY2hlOiAnLCBlcnIpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNsZWFyQ2FjaGUoY2xpZW50PzogQXBvbGxvQ2xpZW50PGFueT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjbGllbnQgPSAoY2xpZW50IHx8IHRoaXMuY2xpZW50KSBhcyBBcG9sbG9DbGllbnQ8YW55PjtcbiAgICBpZiAoY2xpZW50KSB7XG4gICAgICBjb25zb2xlLmluZm8oJ1tncmFwaHFsXSBDbGVhbmluZyBjYWNoZS4uLiAnKTtcbiAgICAgIGNvbnN0IG5vdyA9IHRoaXMuX2RlYnVnICYmIERhdGUubm93KCk7XG5cbiAgICAgIC8vIENsZWFyaW5nIHRoZSBjYWNoZVxuICAgICAgYXdhaXQgY2xpZW50LmNhY2hlLnJlc2V0KCk7XG5cbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2dyYXBocWxdIENsZWFuaW5nIGNhY2hlIFtPS10gaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJDdXN0b21FcnJvcihlcnJvcjogUHJvcGVydGllc01hcCkge1xuICAgIHRoaXMuY3VzdG9tRXJyb3JzID0gey4uLnRoaXMuY3VzdG9tRXJyb3JzLCAuLi5lcnJvcn07XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCBhc3luYyBuZ09uU3RhcnQoKTogUHJvbWlzZTxBcG9sbG9DbGllbnQ8YW55Pj4ge1xuXG4gICAgLy8gV2FpdCBuZXR3b3JrIGFuZCBzdG9yYWdlXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdGhpcy5zdG9yYWdlLnJlYWR5KCksXG4gICAgICB0aGlzLm5ldHdvcmsucmVhZHkoKVxuICAgIF0pO1xuXG4gICAgY29uc29sZS5pbmZvKCdbZ3JhcGhxbF0gU3RhcnRpbmcgZ3JhcGhxbC4uLicpO1xuICAgIGNvbnN0IG1vYmlsZSA9IGlzTW9iaWxlKHdpbmRvdyk7XG4gICAgY29uc3QgZW5hYmxlVHJhY2tNdXRhdGlvblF1ZXJpZXMgPSAhbW9iaWxlO1xuXG4gICAgY29uc3QgcGVlciA9IHRoaXMubmV0d29yay5wZWVyO1xuICAgIGlmICghcGVlcikgdGhyb3cgRXJyb3IoJ1tncmFwaHFsXSBNaXNzaW5nIHBlZXIuIFVuYWJsZSB0byBzdGFydCBncmFwaHFsIHNlcnZpY2UnKTtcblxuICAgIGNvbnN0IHVyaSA9IHBlZXIudXJsICsgJy9ncmFwaHFsJztcbiAgICBjb25zdCB3c1VybCA9IHVyaS5yZXBsYWNlKC9eaHR0cChzKT86LywgJ3dzJDE6JykgKyAnL3dlYnNvY2tldCc7XG4gICAgY29uc29sZS5pbmZvKCdbZ3JhcGhxbF0gQmFzZSB1cmk6ICcgKyB1cmkpO1xuICAgIGNvbnNvbGUuaW5mbygnW2dyYXBocWxdIFN1YnNjcmlwdGlvbiB1cmk6ICcgKyB3c1VybCk7XG5cbiAgICB0aGlzLmh0dHBQYXJhbXMgPSB0aGlzLmh0dHBQYXJhbXMgfHwge307XG4gICAgdGhpcy5odHRwUGFyYW1zLnVyaSA9IHVyaTtcblxuICAgIHRoaXMud3NQYXJhbXMgPSB7XG4gICAgICAuLi50aGlzLndzUGFyYW1zLFxuICAgICAgbGF6eTogdHJ1ZSxcbiAgICAgIGNvbm5lY3Rpb25QYXJhbXM6IHRoaXMuY29ubmVjdGlvblBhcmFtcyxcbiAgICAgIHdlYlNvY2tldEltcGw6IEFwcFdlYlNvY2tldCxcbiAgICAgIHVybDogd3NVcmwsXG4gICAgICBzaG91bGRSZXRyeTogKGVyck9yQ2xvc2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tncmFwaHFsLXNlcnZpY2VdIFtXU10gVHJ5aW5nIHRvIHJlY29ubmVjdC4uLicsIGVyck9yQ2xvc2VFdmVudCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSxcbiAgICAgIHJldHJ5QXR0ZW1wdHM6IDEwXG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSBhIHN0b3JhZ2UgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IHN0b3JhZ2U6IFBlcnNpc3RlbnRTdG9yYWdlPHN0cmluZz4gPSBuZXcgU3RvcmFnZVNlcnZpY2VXcmFwcGVyKHRoaXMuc3RvcmFnZSk7XG5cbiAgICBsZXQgY2xpZW50ID0gdGhpcy5hcG9sbG8uY2xpZW50O1xuICAgIGlmICghY2xpZW50KSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbZ3JhcGhxbF0gQ3JlYXRpbmcgQXBvbGxvIEdyYXBoUUwgY2xpZW50Li4uJyk7XG5cbiAgICAgIC8vIFdlYnNvY2tldCBsaW5rXG4gICAgICBjb25zdCB3c0xpbmsgPSBuZXcgR3JhcGhRTFdzTGluayhjcmVhdGVDbGllbnQodGhpcy53c1BhcmFtcykpO1xuICAgICAgdGhpcy5vblJlc2V0QXV0aFxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5zdG9wU3ViamVjdCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuaW5mbygnW2dyYXBocWxdIENsb3Npbmcgd2Vic29ja2V0IGNsaWVudCwgdG8gZm9yY2UgdW5hdXRoJyk7XG4gICAgICAgICAgd3NMaW5rLmNsaWVudC5kaXNwb3NlKCk7XG4gICAgICAgIH0pXG5cbiAgICAgIC8vIFJldHJ5IHdoZW4gZmFpbGVkIGxpbmtcbiAgICAgIGNvbnN0IHJldHJ5TGluayA9IG5ldyBSZXRyeUxpbmsoKTtcbiAgICAgIGNvbnN0IGF1dGhMaW5rID0gbmV3IEFwb2xsb0xpbmsoKG9wZXJhdGlvbiwgZm9yd2FyZCkgPT4ge1xuXG4gICAgICAgIGNvbnN0IGF1dGhvcml6YXRpb24gPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvblBhcmFtcy5hdXRoVG9rZW4pIHtcbiAgICAgICAgICBhdXRob3JpemF0aW9uLnB1c2goYHRva2VuICR7dGhpcy5jb25uZWN0aW9uUGFyYW1zLmF1dGhUb2tlbn1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uUGFyYW1zLmF1dGhCYXNpYykge1xuICAgICAgICAgIGF1dGhvcml6YXRpb24ucHVzaChgQmFzaWMgJHt0aGlzLmNvbm5lY3Rpb25QYXJhbXMuYXV0aEJhc2ljfWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgICAgICAgIC5hcHBlbmQoJ0F1dGhvcml6YXRpb24nLCBhdXRob3JpemF0aW9uKTtcblxuICAgICAgICAvLyBVc2UgdGhlIHNldENvbnRleHQgbWV0aG9kIHRvIHNldCB0aGUgSFRUUCBoZWFkZXJzLlxuICAgICAgICBvcGVyYXRpb24uc2V0Q29udGV4dCh7XG4gICAgICAgICAgLi4ub3BlcmF0aW9uLmdldENvbnRleHQoKSxcbiAgICAgICAgICAuLi57aGVhZGVyc31cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ2FsbCB0aGUgbmV4dCBsaW5rIGluIHRoZSBtaWRkbGV3YXJlIGNoYWluLlxuICAgICAgICByZXR1cm4gZm9yd2FyZChvcGVyYXRpb24pO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIEh0dHAgbGlua1xuICAgICAgY29uc3QgaHR0cExpbmsgPSB0aGlzLmh0dHBMaW5rLmNyZWF0ZSh0aGlzLmh0dHBQYXJhbXMpO1xuXG4gICAgICAvLyBDYWNoZVxuICAgICAgY29uc3QgY2FjaGUgPSBuZXcgSW5NZW1vcnlDYWNoZSh7XG4gICAgICAgIHR5cGVQb2xpY2llczogdGhpcy50eXBlUG9saWNpZXMsXG4gICAgICAgIGZyYWdtZW50czogaXNOb3RFbXB0eUFycmF5KHRoaXMuZnJhZ21lbnRzKSA/IGNyZWF0ZUZyYWdtZW50UmVnaXN0cnkoLi4udGhpcy5mcmFnbWVudHMpIDogdW5kZWZpbmVkXG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIGNhY2hlIHBlcnNpc3RlbmNlXG4gICAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5wZXJzaXN0Q2FjaGUpIHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnW2dyYXBocWxdIFN0YXJ0aW5nIHBlcnNpc3RlbmNlIGNhY2hlLi4uJyk7XG4gICAgICAgIGF3YWl0IHBlcnNpc3RDYWNoZSh7XG4gICAgICAgICAgY2FjaGUsXG4gICAgICAgICAgc3RvcmFnZSxcbiAgICAgICAgICB0cmlnZ2VyOiB0aGlzLnBsYXRmb3JtLmlzKCdhbmRyb2lkJykgPyAnYmFja2dyb3VuZCcgOiAnd3JpdGUnLFxuICAgICAgICAgIGRlYm91bmNlOiAxMDAwLFxuICAgICAgICAgIGRlYnVnOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBsZXQgbXV0YXRpb25MaW5rczogQXJyYXk8QXBvbGxvTGluaz47XG5cbiAgICAgIC8vIEFkZCBxdWV1ZSB0byBzdG9yZSB0cmFja2VkIHF1ZXJpZXMsIHdoZW4gb2ZmbGluZVxuICAgICAgaWYgKGVuYWJsZVRyYWNrTXV0YXRpb25RdWVyaWVzKSB7XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6aW5nTGluayA9IG5ldyBTZXJpYWxpemluZ0xpbmsoKTtcbiAgICAgICAgY29uc3QgdHJhY2tlckxpbmsgPSBjcmVhdGVUcmFja2VyTGluayh7XG4gICAgICAgICAgc3RvcmFnZSxcbiAgICAgICAgICBvbk5ldHdvcmtTdGF0dXNDaGFuZ2U6IHRoaXMuX25ldHdvcmtTdGF0dXNDaGFuZ2VkJCxcbiAgICAgICAgICBkZWJvdW5jZTogMTAwMCxcbiAgICAgICAgICBkZWJ1ZzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gQ3JlYXRpbmcgYSBtdXRhdGlvbiBxdWV1ZVxuICAgICAgICBjb25zdCBxdWV1ZUxpbmsgPSBuZXcgUXVldWVMaW5rKCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24odGhpcy5fbmV0d29ya1N0YXR1c0NoYW5nZWQkXG4gICAgICAgICAgLnN1YnNjcmliZSh0eXBlID0+IHtcbiAgICAgICAgICAgIC8vIE5ldHdvcmsgaXMgb2ZmbGluZTogc3RhcnQgYnVmZmVyaW5nIGludG8gcXVldWVcbiAgICAgICAgICAgIGlmICh0eXBlID09PSAnbm9uZScpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5pbmZvKCdbZ3JhcGhxbF0gb2ZmbGluZSBtb2RlOiBlbmFibGUgbXV0YXRpb25zIGJ1ZmZlcicpO1xuICAgICAgICAgICAgICBxdWV1ZUxpbmsuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIE5ldHdvcmsgaXMgb25saW5lXG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc29sZS5pbmZvKCdbZ3JhcGhxbF0gb25saW5lIG1vZGU6IGRpc2FibGUgbXV0YXRpb25zIGJ1ZmZlcicpO1xuICAgICAgICAgICAgICBxdWV1ZUxpbmsub3BlbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgbXV0YXRpb25MaW5rcyA9IFtcbiAgICAgICAgICBsb2dnZXJMaW5rLFxuICAgICAgICAgIHF1ZXVlTGluayxcbiAgICAgICAgICB0cmFja2VyTGluayxcbiAgICAgICAgICBxdWV1ZUxpbmssXG4gICAgICAgICAgc2VyaWFsaXppbmdMaW5rLFxuICAgICAgICAgIHJldHJ5TGluayxcbiAgICAgICAgICBhdXRoTGluayxcbiAgICAgICAgICBodHRwTGlua1xuICAgICAgICBdO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG11dGF0aW9uTGlua3MgPSBbXG4gICAgICAgICAgcmV0cnlMaW5rLFxuICAgICAgICAgIGF1dGhMaW5rLFxuICAgICAgICAgIGh0dHBMaW5rXG4gICAgICAgIF07XG4gICAgICB9XG5cbiAgICAgIC8vIGNyZWF0ZSBBcG9sbG9cbiAgICAgIGNsaWVudCA9IG5ldyBBcG9sbG9DbGllbnQoe1xuICAgICAgICBjYWNoZSxcbiAgICAgICAgbGluazpcbiAgICAgICAgICBBcG9sbG9MaW5rLnNwbGl0KFxuICAgICAgICAgICAgLy8gSGFuZGxlIG11dGF0aW9uc1xuICAgICAgICAgICAgaXNNdXRhdGlvbk9wZXJhdGlvbixcbiAgICAgICAgICAgIEFwb2xsb0xpbmsuZnJvbShtdXRhdGlvbkxpbmtzKSxcblxuICAgICAgICAgICAgQXBvbGxvTGluay5zcGxpdChcbiAgICAgICAgICAgICAgLy8gSGFuZGxlIHN1YnNjcmlwdGlvbnNcbiAgICAgICAgICAgICAgaXNTdWJzY3JpcHRpb25PcGVyYXRpb24sXG4gICAgICAgICAgICAgIHdzTGluayxcblxuICAgICAgICAgICAgICAvLyBIYW5kbGUgcXVlcmllc1xuICAgICAgICAgICAgICBBcG9sbG9MaW5rLmZyb20oW1xuICAgICAgICAgICAgICAgIHJldHJ5TGluayxcbiAgICAgICAgICAgICAgICBhdXRoTGluayxcbiAgICAgICAgICAgICAgICBodHRwTGlua1xuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgIGNvbm5lY3RUb0RldlRvb2xzOiAhdGhpcy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5hcG9sbG8uY2xpZW50ID0gY2xpZW50O1xuICAgIH1cblxuICAgIC8vIEVuYWJsZSB0cmFja2VkIHF1ZXJpZXMgcGVyc2lzdGVuY2VcbiAgICBpZiAoZW5hYmxlVHJhY2tNdXRhdGlvblF1ZXJpZXMgJiYgdGhpcy5lbnZpcm9ubWVudC5wZXJzaXN0Q2FjaGUpIHtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgcmVzdG9yZVRyYWNrZWRRdWVyaWVzKHtcbiAgICAgICAgICBhcG9sbG9DbGllbnQ6IGNsaWVudCxcbiAgICAgICAgICBzdG9yYWdlLFxuICAgICAgICAgIGRlYnVnOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tncmFwaHFsXSBGYWlsZWQgdG8gcmVzdG9yZSB0cmFja2VkIHF1ZXJpZXMgZnJvbSBzdG9yYWdlOiAnICsgKGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnIpLCBlcnIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIExpc3RlbiBmb3IgbmV0d29yayByZXN0YXJ0XG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMubmV0d29yay5vbignc3RhcnQnLCAoKSA9PiB0aGlzLnJlc3RhcnQoKSlcbiAgICApO1xuXG4gICAgLy8gTGlzdGVuIGZvciBjbGVhciBjYWNoZSByZXF1ZXN0LCBmcm9tIG5ldHdvcmtcbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5uZXR3b3JrLm9uKCdyZXNldENhY2hlJywgKCkgPT4gdGhpcy5jbGVhckNhY2hlKCkpXG4gICAgKTtcblxuICAgIGNvbnNvbGUuaW5mbygnW2dyYXBocWxdIFN0YXJ0aW5nIGdyYXBocWwgW09LXScpO1xuICAgIHJldHVybiBjbGllbnQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdPblN0b3AoKSB7XG4gICAgY29uc29sZS5pbmZvKCdbZ3JhcGhxbF0gU3RvcHBpbmcgZ3JhcGhxbCBzZXJ2aWNlLi4uJyk7XG4gICAgYXdhaXQgdGhpcy5yZXNldENsaWVudCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJlc2V0Q2xpZW50KGNsaWVudD86IEFwb2xsb0NsaWVudDxhbnk+KSB7XG4gICAgY2xpZW50ID0gKGNsaWVudCB8fCB0aGlzLmFwb2xsby5jbGllbnQpIGFzIEFwb2xsb0NsaWVudDxhbnk+O1xuICAgIGlmICghY2xpZW50KSByZXR1cm47XG5cbiAgICBjb25zb2xlLmluZm8oJ1tncmFwaHFsXSBSZXNldHRpbmcgQXBvbGxvIGNsaWVudC4uLicpO1xuICAgIGNsaWVudC5zdG9wKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgY2xpZW50LmNsZWFyU3RvcmUoKSxcbiAgICAgIHRoaXMuY2xlYXJDYWNoZShjbGllbnQpXG4gICAgXSk7XG4gIH1cblxuICBwcml2YXRlIG9uQXBvbGxvRXJyb3I8VD4oZXJyOiBhbnksIGRlZmF1bHRFcnJvcj86IGFueSk6IE9ic2VydmFibGU8QXBvbGxvUXVlcnlSZXN1bHQ8VD4+IHtcbiAgICByZXR1cm4gb2YodGhpcy50b0Fwb2xsb0Vycm9yPFQ+KGVyciwgZGVmYXVsdEVycm9yKSk7XG4gIH1cblxuICBwcml2YXRlIHRvQXBvbGxvRXJyb3I8VD4oZXJyOiBhbnksIGRlZmF1bHRFcnJvcj86IGFueSk6IEFwb2xsb1F1ZXJ5UmVzdWx0PFQ+IHtcbiAgICBsZXQgZXJyb3IgPVxuICAgICAgLy8gSWYgbmV0d29yayBlcnJvcjogdHJ5IHRvIGNvbnZlcnQgdG8gQXBwIChyZWFkIGFzIEpTT04pLCBvciBjcmVhdGUgYW4gVU5LTk9XTl9ORVRXT1JLX0VSUk9SXG4gICAgICAoZXJyLm5ldHdvcmtFcnJvciAmJiAoXG4gICAgICAgICAgKGVyci5uZXR3b3JrRXJyb3IuZXJyb3IgJiYgdGhpcy50b0FwcEVycm9yKGVyci5uZXR3b3JrRXJyb3IuZXJyb3IpKVxuICAgICAgICAgIHx8IHRoaXMudG9BcHBFcnJvcihlcnIubmV0d29ya0Vycm9yKVxuICAgICAgICAgIHx8IChlcnIubmV0d29ya0Vycm9yLmVycm9yICYmIHRoaXMuY3JlYXRlQXBwRXJyb3JCeUNvZGUoZXJyLm5ldHdvcmtFcnJvci5lcnJvci5zdGF0dXMpKVxuICAgICAgICAgIHx8IHRoaXMuY3JlYXRlQXBwRXJyb3JCeUNvZGUoRXJyb3JDb2Rlcy5VTktOT1dOX05FVFdPUktfRVJST1IpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC8vIElmIGdyYXBoUUw6IHRyeSB0byBjb252ZXJ0IHRoZSBmaXJzdCBlcnJvciBmb3VuZFxuICAgICAgfHwgKGVyci5ncmFwaFFMRXJyb3JzICYmIGVyci5ncmFwaFFMRXJyb3JzLmxlbmd0aCAmJiB0aGlzLnRvQXBwRXJyb3IoZXJyLmdyYXBoUUxFcnJvcnNbMF0pKVxuICAgICAgfHwgdGhpcy50b0FwcEVycm9yKGVycilcbiAgICAgIHx8IHRoaXMudG9BcHBFcnJvcihlcnIub3JpZ2luYWxFcnJvcilcbiAgICAgIHx8IChlcnIuZ3JhcGhRTEVycm9ycyAmJiBlcnIuZ3JhcGhRTEVycm9yc1swXSlcbiAgICAgIHx8IGVycjtcbiAgICBjb25zb2xlLmVycm9yKCdbZ3JhcGhxbF0gJyArIChlcnJvciAmJiBlcnJvci5tZXNzYWdlIHx8IGVycm9yKSwgZXJyb3Iuc3RhY2sgfHwgJycpO1xuICAgIGlmIChlcnJvciAmJiBlcnJvci5jb2RlID09PSBFcnJvckNvZGVzLlVOS05PV05fTkVUV09SS19FUlJPUiAmJiBlcnIubmV0d29ya0Vycm9yICYmIGVyci5uZXR3b3JrRXJyb3IubWVzc2FnZSkge1xuICAgICAgY29uc29sZS5lcnJvcignW2dyYXBocWxdIG9yaWdpbmFsIGVycm9yOiAnICsgZXJyLm5ldHdvcmtFcnJvci5tZXNzYWdlKTtcbiAgICAgIHRoaXMub25OZXR3b3JrRXJyb3IubmV4dChlcnJvcik7XG4gICAgfVxuICAgIGlmICgoIWVycm9yIHx8ICFlcnJvci5jb2RlKSAmJiBkZWZhdWx0RXJyb3IpIHtcbiAgICAgIGVycm9yID0gey4uLmRlZmF1bHRFcnJvciwgZGV0YWlsczogZXJyb3IsIHN0YWNrOiBlcnIuc3RhY2t9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogbnVsbCxcbiAgICAgIGVycm9yczogW2Vycm9yXSxcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgbmV0d29ya1N0YXR1czogTmV0d29ya1N0YXR1cy5lcnJvclxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFwcEVycm9yQnlDb2RlKGVycm9yQ29kZTogbnVtYmVyKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5nZXRJMThuRXJyb3JNZXNzYWdlQnlDb2RlKGVycm9yQ29kZSk7XG4gICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvZGU6IGVycm9yQ29kZSxcbiAgICAgICAgbWVzc2FnZTogdGhpcy5nZXRJMThuRXJyb3JNZXNzYWdlQnlDb2RlKGVycm9yQ29kZSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldEkxOG5FcnJvck1lc3NhZ2VCeUNvZGUoZXJyb3JDb2RlOiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXG4gICAgLy8gbG9vayBpbiByZWdpc3RlcmVkIGVycm9yIGNvZGVzXG4gICAgY29uc3QgY3VzdG9tRXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvcnNbZXJyb3JDb2RlXTtcbiAgICBpZiAoY3VzdG9tRXJyb3JNZXNzYWdlKSB7XG4gICAgICByZXR1cm4gY3VzdG9tRXJyb3JNZXNzYWdlO1xuICAgIH1cblxuICAgIC8vIERlZmF1bHQsIHN3aXRjaCBvbiBlcnJvciBjb2RlXG4gICAgc3dpdGNoIChlcnJvckNvZGUpIHtcbiAgICAgIGNhc2UgU2VydmVyRXJyb3JDb2Rlcy5VTkFVVEhPUklaRUQ6XG4gICAgICAgIHJldHVybiAnRVJST1IuVU5BVVRIT1JJWkVEJztcbiAgICAgIGNhc2UgU2VydmVyRXJyb3JDb2Rlcy5GT1JCSURERU46XG4gICAgICAgIHJldHVybiAnRVJST1IuRk9SQklEREVOJztcbiAgICAgIGNhc2UgRXJyb3JDb2Rlcy5VTktOT1dOX05FVFdPUktfRVJST1I6XG4gICAgICAgIHJldHVybiAnRVJST1IuVU5LTk9XTl9ORVRXT1JLX0VSUk9SJztcbiAgICAgIGNhc2UgU2VydmVyRXJyb3JDb2Rlcy5CQURfVVBEQVRFX0RBVEU6XG4gICAgICAgIHJldHVybiAnRVJST1IuQkFEX1VQREFURV9EQVRFJztcbiAgICAgIGNhc2UgU2VydmVyRXJyb3JDb2Rlcy5EQVRBX0xPQ0tFRDpcbiAgICAgICAgcmV0dXJuICdFUlJPUi5EQVRBX0xPQ0tFRCc7XG4gICAgICBjYXNlIFNlcnZlckVycm9yQ29kZXMuQkFEX0FQUF9WRVJTSU9OOlxuICAgICAgICByZXR1cm4gJ0VSUk9SLkJBRF9BUFBfVkVSU0lPTic7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgdG9BcHBFcnJvcihlcnI6IGFueSk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGVycm9yID0gZXJyO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyO1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycgJiYgbWVzc2FnZS50cmltKCkuaW5kZXhPZigne1wiY29kZVwiOicpID09PSAwKSB7XG4gICAgICB0cnkge1xuICAgICAgICBlcnJvciA9IEpTT04ucGFyc2UobWVzc2FnZVxuICAgICAgICAgIC8vIFJlbW92ZSBzcGVjaWFsIGNoYXJhY3RlcnMgYmVmb3JlIHBhcnNpbmcgKGUuZy4gU1FMIGVycm9ycyBmcm9tIGFuIE9yYWNsZSBkYXRhYmFzZSlcbiAgICAgICAgICAucmVwbGFjZSgnXFxuJywgJyAnKVxuICAgICAgICAgIC5yZXBsYWNlKCdcXHInLCAnJykpO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignVW5hYmxlIHRvIHBhcnNlIGVycm9yIGFzIEpTT046ICcsIHBhcnNlRXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXJyb3IgJiYgZXJyb3IuY29kZSkge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQXBwRXJyb3JCeUNvZGUoZXJyb3IuY29kZSkgfHwgZXJyb3IgJiYgZXJyb3IubWVzc2FnZSB8fCBlcnJvcjtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG59XG4iXX0=