@fundamental-ngx/core 0.44.0-rc.6 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/esm2022/action-bar/action-bar.component.mjs +3 -2
  2. package/esm2022/alert/alert-service/alert.service.mjs +3 -3
  3. package/esm2022/alert/alert-utils/alert-config.mjs +3 -2
  4. package/esm2022/alert/alert-utils/alert-container.component.mjs +3 -2
  5. package/esm2022/alert/alert-utils/alert-ref.mjs +3 -2
  6. package/esm2022/alert/alert.component.mjs +3 -3
  7. package/esm2022/alert/alert.module.mjs +3 -3
  8. package/esm2022/avatar/avatar.component.mjs +3 -3
  9. package/esm2022/bar/directives/bar-element.directive.mjs +3 -2
  10. package/esm2022/carousel/carousel.component.mjs +4 -4
  11. package/esm2022/date-picker/date-picker.component.mjs +9 -8
  12. package/esm2022/datetime-picker/datetime-picker.component.mjs +8 -7
  13. package/esm2022/dialog/dialog-footer-button/dialog-footer-button.component.mjs +3 -2
  14. package/esm2022/dialog/directives/dialog-decisive-button.directive.mjs +3 -2
  15. package/esm2022/feed-list-item/components/item/feed-list-item.component.mjs +4 -4
  16. package/esm2022/form/form-label/form-label.component.mjs +5 -4
  17. package/esm2022/inline-help/inline-help.directive.mjs +3 -2
  18. package/esm2022/input-group/input-group.component.mjs +4 -3
  19. package/esm2022/link/link.component.mjs +3 -3
  20. package/esm2022/list/list-item/list-item.component.mjs +6 -6
  21. package/esm2022/message-box/directives/message-box-decisive-button.directive.mjs +3 -2
  22. package/esm2022/message-box/message-box-footer-button/message-box-footer-button.component.mjs +3 -2
  23. package/esm2022/pagination/pagination.component.mjs +10 -10
  24. package/esm2022/popover/base/base-popover.class.mjs +5 -4
  25. package/esm2022/popover/popover.component.mjs +3 -2
  26. package/esm2022/product-switch/product-switch/product-switch.component.mjs +3 -2
  27. package/esm2022/shellbar/shellbar-actions/shellbar-actions.component.mjs +3 -2
  28. package/esm2022/slider/slider.component.mjs +5 -4
  29. package/esm2022/split-button/split-button.component.mjs +4 -3
  30. package/esm2022/splitter/splitter.component.mjs +3 -2
  31. package/esm2022/step-input/step-input.component.mjs +4 -4
  32. package/esm2022/switch/switch.component.mjs +5 -4
  33. package/esm2022/tabs/tab-item-expand/tab-item-expand.component.mjs +3 -2
  34. package/esm2022/tabs/tab-list.component.mjs +3 -3
  35. package/esm2022/time/i18n/time-i18n.mjs +3 -2
  36. package/esm2022/token/token.component.mjs +4 -4
  37. package/esm2022/toolbar/toolbar.component.mjs +3 -3
  38. package/esm2022/upload-collection/upload-collection-button-group/upload-collection-button-group.component.mjs +8 -7
  39. package/esm2022/upload-collection/upload-collection-form-item/upload-collection-form-item.component.mjs +3 -2
  40. package/fesm2022/fundamental-ngx-core-action-bar.mjs +2 -1
  41. package/fesm2022/fundamental-ngx-core-action-bar.mjs.map +1 -1
  42. package/fesm2022/fundamental-ngx-core-alert.mjs +7 -7
  43. package/fesm2022/fundamental-ngx-core-alert.mjs.map +1 -1
  44. package/fesm2022/fundamental-ngx-core-avatar.mjs +2 -2
  45. package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
  46. package/fesm2022/fundamental-ngx-core-bar.mjs +2 -1
  47. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  48. package/fesm2022/fundamental-ngx-core-carousel.mjs +3 -3
  49. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  50. package/fesm2022/fundamental-ngx-core-date-picker.mjs +8 -7
  51. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  52. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +7 -6
  53. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  54. package/fesm2022/fundamental-ngx-core-dialog.mjs +3 -2
  55. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  56. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +3 -3
  57. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  58. package/fesm2022/fundamental-ngx-core-form.mjs +4 -3
  59. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  60. package/fesm2022/fundamental-ngx-core-inline-help.mjs +2 -1
  61. package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
  62. package/fesm2022/fundamental-ngx-core-input-group.mjs +3 -3
  63. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  64. package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
  65. package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
  66. package/fesm2022/fundamental-ngx-core-list.mjs +5 -5
  67. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  68. package/fesm2022/fundamental-ngx-core-message-box.mjs +3 -2
  69. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  70. package/fesm2022/fundamental-ngx-core-pagination.mjs +9 -9
  71. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  72. package/fesm2022/fundamental-ngx-core-popover.mjs +6 -5
  73. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  74. package/fesm2022/fundamental-ngx-core-product-switch.mjs +3 -3
  75. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  76. package/fesm2022/fundamental-ngx-core-shellbar.mjs +2 -2
  77. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  78. package/fesm2022/fundamental-ngx-core-slider.mjs +4 -4
  79. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  80. package/fesm2022/fundamental-ngx-core-split-button.mjs +3 -2
  81. package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
  82. package/fesm2022/fundamental-ngx-core-splitter.mjs +2 -2
  83. package/fesm2022/fundamental-ngx-core-splitter.mjs.map +1 -1
  84. package/fesm2022/fundamental-ngx-core-step-input.mjs +3 -3
  85. package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
  86. package/fesm2022/fundamental-ngx-core-switch.mjs +4 -3
  87. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  88. package/fesm2022/fundamental-ngx-core-tabs.mjs +3 -3
  89. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  90. package/fesm2022/fundamental-ngx-core-time.mjs +2 -2
  91. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  92. package/fesm2022/fundamental-ngx-core-token.mjs +3 -3
  93. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  94. package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
  95. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  96. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +8 -7
  97. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  98. package/fundamental-ngx-core-v0.44.0.tgz +0 -0
  99. package/package.json +3 -3
  100. package/schematics/add-dependencies/index.js +4 -4
  101. package/fundamental-ngx-core-v0.44.0-rc.6.tgz +0 -0
@@ -1,4 +1,5 @@
1
1
  import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
2
+ import { warnOnce } from '@fundamental-ngx/cdk/utils';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "@angular/common";
4
5
  import * as i2 from "@fundamental-ngx/core/icon";
@@ -12,7 +13,7 @@ export class TabItemExpandComponent {
12
13
  * @deprecated use i18n capabilities instead
13
14
  * @hidden Text visible in the trigger */
14
15
  set label(value) {
15
- console.warn("Property label is deprecated. Use i18n capabilities 'coreTabs.tabListExpandButtonText' key instead.");
16
+ warnOnce("Property label is deprecated. Use i18n capabilities 'coreTabs.tabListExpandButtonText' key instead.");
16
17
  this._label = value;
17
18
  }
18
19
  get label() {
@@ -30,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
30
31
  }], propDecorators: { label: [{
31
32
  type: Input
32
33
  }] } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWl0ZW0tZXhwYW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3RhYnMvdGFiLWl0ZW0tZXhwYW5kL3RhYi1pdGVtLWV4cGFuZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90YWJzL3RhYi1pdGVtLWV4cGFuZC90YWItaXRlbS1leHBhbmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUU3Rjs7R0FFRztBQVlILE1BQU0sT0FBTyxzQkFBc0I7SUFDL0I7OzZDQUV5QztJQUN6QyxJQUNJLEtBQUssQ0FBQyxLQUFhO1FBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQ1IscUdBQXFHLENBQ3hHLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7OEdBZFEsc0JBQXNCO2tHQUF0QixzQkFBc0Isb0xDaEJuQywrU0FNQTs7MkZEVWEsc0JBQXNCO2tCQVhsQyxTQUFTOytCQUNJLGdCQUFnQixRQUdwQjt3QkFDRixJQUFJLEVBQUUsS0FBSzt3QkFDWCxLQUFLLEVBQUUsdUNBQXVDO3FCQUNqRCxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzhCQU8zQyxLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbGlzdCBvZiB0YWItcGFuZWxzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWl0ZW0tZXhwYW5kJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFiLWl0ZW0tZXhwYW5kLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90YWItaXRlbS1leHBhbmQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIHJvbGU6ICd0YWInLFxuICAgICAgICBjbGFzczogJ2ZkLXRhYnNfX2l0ZW0gZmQtdGFic19faXRlbS0tb3ZlcmZsb3cnXG4gICAgfSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRhYkl0ZW1FeHBhbmRDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogQGhpZGRlbiBUZXh0IHZpc2libGUgaW4gdGhlIHRyaWdnZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBsYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiUHJvcGVydHkgbGFiZWwgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlVGFicy50YWJMaXN0RXhwYW5kQnV0dG9uVGV4dCcga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fbGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgbGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGFiZWw6IHN0cmluZztcbn1cbiIsIjxhIGNsYXNzPVwiZmQtdGFic19fbGlua1wiIHJvbGU9XCJ0YWJcIiBbYXR0ci50YWJpbmRleF09XCIwXCI+XG4gICAgPHNwYW4gKm5nSWY9XCJsYWJlbCB8fCAoJ2NvcmVUYWJzLnRhYkxpc3RFeHBhbmRCdXR0b25UZXh0JyB8IGZkVHJhbnNsYXRlKSBhcyBleHBhbmRCdXR0b25UZXh0XCIgZmQtdGFiLXRhZz57e1xuICAgICAgICBleHBhbmRCdXR0b25UZXh0XG4gICAgfX08L3NwYW4+XG4gICAgPGZkLWljb24gZ2x5cGg9XCJzbGltLWFycm93LWRvd25cIiBhcmlhLWxhYmVsPVwiU2VlIE1vcmVcIj48L2ZkLWljb24+XG48L2E+XG4iXX0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWl0ZW0tZXhwYW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3RhYnMvdGFiLWl0ZW0tZXhwYW5kL3RhYi1pdGVtLWV4cGFuZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90YWJzL3RhYi1pdGVtLWV4cGFuZC90YWItaXRlbS1leHBhbmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFFdEQ7O0dBRUc7QUFZSCxNQUFNLE9BQU8sc0JBQXNCO0lBQy9COzs2Q0FFeUM7SUFDekMsSUFDSSxLQUFLLENBQUMsS0FBYTtRQUNuQixRQUFRLENBQUMscUdBQXFHLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7OEdBWlEsc0JBQXNCO2tHQUF0QixzQkFBc0Isb0xDakJuQywrU0FNQTs7MkZEV2Esc0JBQXNCO2tCQVhsQyxTQUFTOytCQUNJLGdCQUFnQixRQUdwQjt3QkFDRixJQUFJLEVBQUUsS0FBSzt3QkFDWCxLQUFLLEVBQUUsdUNBQXVDO3FCQUNqRCxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzhCQU8zQyxLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHdhcm5PbmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBsaXN0IG9mIHRhYi1wYW5lbHMuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtaXRlbS1leHBhbmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWItaXRlbS1leHBhbmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RhYi1pdGVtLWV4cGFuZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ3RhYicsXG4gICAgICAgIGNsYXNzOiAnZmQtdGFic19faXRlbSBmZC10YWJzX19pdGVtLS1vdmVyZmxvdydcbiAgICB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGFiSXRlbUV4cGFuZENvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBAaGlkZGVuIFRleHQgdmlzaWJsZSBpbiB0aGUgdHJpZ2dlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGxhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgd2Fybk9uY2UoXCJQcm9wZXJ0eSBsYWJlbCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVUYWJzLnRhYkxpc3RFeHBhbmRCdXR0b25UZXh0JyBrZXkgaW5zdGVhZC5cIik7XG4gICAgICAgIHRoaXMuX2xhYmVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xhYmVsOiBzdHJpbmc7XG59XG4iLCI8YSBjbGFzcz1cImZkLXRhYnNfX2xpbmtcIiByb2xlPVwidGFiXCIgW2F0dHIudGFiaW5kZXhdPVwiMFwiPlxuICAgIDxzcGFuICpuZ0lmPVwibGFiZWwgfHwgKCdjb3JlVGFicy50YWJMaXN0RXhwYW5kQnV0dG9uVGV4dCcgfCBmZFRyYW5zbGF0ZSkgYXMgZXhwYW5kQnV0dG9uVGV4dFwiIGZkLXRhYi10YWc+e3tcbiAgICAgICAgZXhwYW5kQnV0dG9uVGV4dFxuICAgIH19PC9zcGFuPlxuICAgIDxmZC1pY29uIGdseXBoPVwic2xpbS1hcnJvdy1kb3duXCIgYXJpYS1sYWJlbD1cIlNlZSBNb3JlXCI+PC9mZC1pY29uPlxuPC9hPlxuIl19
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren,
2
2
  import { OverflowLayoutComponent } from '@fundamental-ngx/core/overflow-layout';
3
3
  import { fromEvent, merge, Subject, Subscription } from 'rxjs';
4
4
  import { debounceTime, delay, filter, first, map, startWith, switchMap } from 'rxjs/operators';
5
- import { KeyUtil, scrollTop } from '@fundamental-ngx/cdk/utils';
5
+ import { KeyUtil, scrollTop, warnOnce } from '@fundamental-ngx/cdk/utils';
6
6
  import { TabItemExpandComponent } from './tab-item-expand/tab-item-expand.component';
7
7
  import { TabLinkDirective } from './tab-link/tab-link.directive';
8
8
  import { TabItemDirective } from './tab-item/tab-item.directive';
@@ -33,7 +33,7 @@ export class TabListComponent {
33
33
  * Text visible in expand overflow trigger
34
34
  */
35
35
  set expandOverflowText(value) {
36
- console.warn("Property expandOverflowText is deprecated. Use i18n capabilities 'coreTabs.tabListExpandButtonText' key instead.");
36
+ warnOnce("Property expandOverflowText is deprecated. Use i18n capabilities 'coreTabs.tabListExpandButtonText' key instead.");
37
37
  this._expandOverflowText = value;
38
38
  }
39
39
  get expandOverflowText() {
@@ -320,4 +320,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
320
320
  type: ViewChild,
321
321
  args: [OverflowLayoutComponent]
322
322
  }] } });
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGFicy90YWItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90YWJzL3RhYi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxPQUFPLEVBQVksU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JE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QUk7c0JBREgsS0FBSztnQkFRTixJQUFJO3NCQURILEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBTU4sY0FBYztzQkFEYixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBUUYsa0JBQWtCO3NCQURyQixLQUFLO2dCQWNOLFVBQVU7c0JBRFQsS0FBSztnQkFLTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBS04sMEJBQTBCO3NCQUR6QixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFLUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBS1AsZ0JBQWdCO3NCQURmLE1BQU07Z0JBS1AsU0FBUztzQkFEUixlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztnQkFLcEQsY0FBYztzQkFEYixZQUFZO3VCQUFDLGdCQUFnQjtnQkFLOUIsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLGdCQUFnQjtnQkFLOUIsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLdkQsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLbEQsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBS2pFLElBQUk7c0JBREgsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO2dCQWlCbEMsZUFBZTtzQkFEdEIsU0FBUzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmZsb3dMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvb3ZlcmZsb3ctbGF5b3V0JztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkZWxheSwgZmlsdGVyLCBmaXJzdCwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEtleVV0aWwsIE51bGxhYmxlLCBzY3JvbGxUb3AgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBUYWJJdGVtRXhwYW5kQ29tcG9uZW50IH0gZnJvbSAnLi90YWItaXRlbS1leHBhbmQvdGFiLWl0ZW0tZXhwYW5kLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJMaW5rRGlyZWN0aXZlIH0gZnJvbSAnLi90YWItbGluay90YWItbGluay5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGFiSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vdGFiLWl0ZW0vdGFiLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IFRhYlBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi90YWItcGFuZWwvdGFiLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJJbmZvIH0gZnJvbSAnLi90YWItdXRpbHMvdGFiLWluZm8uY2xhc3MnO1xuaW1wb3J0IHsgRU5URVIsIFNQQUNFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVudSc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU9ic2VydmVyLCBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBMSVNUX0NPTVBPTkVOVCB9IGZyb20gJy4vdGFiLWxpc3QudG9rZW4nO1xuaW1wb3J0IHsgVGFiTGlzdENvbXBvbmVudEludGVyZmFjZSB9IGZyb20gJy4vdGFiLWxpc3QtY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmV4cG9ydCB0eXBlIFRhYk1vZGVzID0gJ2ljb24tb25seScgfCAncHJvY2VzcycgfCAnZmlsdGVyJztcblxuZXhwb3J0IHR5cGUgVGFiU2l6ZXMgPSAncycgfCAnbScgfCAnbCcgfCAneGwnIHwgJ3h4bCc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGxpc3Qgb2YgdGFiLXBhbmVscy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC10YWItbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYi1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90YWItbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC10YWJzLWN1c3RvbSdcbiAgICB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTElTVF9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUYWJMaXN0Q29tcG9uZW50KVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgVGFiTGlzdENvbXBvbmVudEludGVyZmFjZSwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogU2l6ZSBvZiB0YWIsIGl0J3MgbW9zdGx5IGFib3V0IGFkZGluZyBzcGFjaW5nIG9uIHRhYiBjb250YWluZXIsIGF2YWlsYWJsZSBzaXplcyAncycgfCAnbScgfCAnbCcgfCAneGwnIHwgJ3h4bCcgKi9cbiAgICBASW5wdXQoKVxuICAgIHNpemU6IFRhYlNpemVzID0gJ20nO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB1c2VyIHdhbnRzIHRvIHVzZSB0YWIgY29tcG9uZW50IGluIGNlcnRhaW4gbW9kZS4gTW9kZXMgYXZhaWxhYmxlOlxuICAgICAqICdpY29uLW9ubHknIHwgJ3Byb2Nlc3MnIHwgJ2ZpbHRlcidcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vZGU6IFRhYk1vZGVzO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gbW92ZSB0YWJzIG92ZXJmbG93aW5nIGluIHRoZSB0YWIgYmFyIHRvIHRoZSBkcm9wZG93biAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29sbGFwc2VPdmVyZmxvdyA9IHRydWU7XG5cbiAgICAvKiogTGltaXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0YWJzIHZpc2libGUgaW4gdGhlIHRhYiBiYXIgaW4gY29sbGFwc2VPdmVyZmxvdyBtb2RlLlxuICAgICAqIE90aGVyIHRhYnMgd2lsbCBiZSBtb3ZlZCB0byB0aGUgY29sbGFwc2VkIHRhYnMgZHJvcGRvd24gKi9cbiAgICBASW5wdXQoKVxuICAgIG1heFZpc2libGVUYWJzID0gSW5maW5pdHk7XG5cbiAgICAvKiogV2hldGhlciB0byBvcGVuIHRhYiBjb250ZW50IG9uZSB1bmRlciBhbm90aGVyIHdpdGhvdXQgY29sbGFwc2luZyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhY2tDb250ZW50ID0gZmFsc2U7XG5cbiAgICAvKiogTWF4aW11bSBoZWlnaHQgb2YgdGhlIGNvbnRlbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIG1heENvbnRlbnRIZWlnaHQgPSAnMTAwJSc7XG5cbiAgICAvKiogV2hldGhlciB0byBlbmFibGUgY29sbGFwc2luZyBleHBhbmRlZCB0YWIgb24gZXhwYW5kZWQgdGFiIGNsaWNrICovXG4gICAgQElucHV0KClcbiAgICBjb2xsYXBzaWJsZVRhYnMgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogVGV4dCB2aXNpYmxlIGluIGV4cGFuZCBvdmVyZmxvdyB0cmlnZ2VyXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZXhwYW5kT3ZlcmZsb3dUZXh0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgXCJQcm9wZXJ0eSBleHBhbmRPdmVyZmxvd1RleHQgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlVGFicy50YWJMaXN0RXhwYW5kQnV0dG9uVGV4dCcga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fZXhwYW5kT3ZlcmZsb3dUZXh0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGV4cGFuZE92ZXJmbG93VGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhwYW5kT3ZlcmZsb3dUZXh0O1xuICAgIH1cblxuICAgIC8qKiBJbml0aWFsbHkgc2VsZWN0ZWQgdGFiIChieSBpZCkuIEZpcnN0IG5vdCBkaXNhYmxlZCBvbmUgaWYgbm90IHNwZWNpZmllZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRlZmF1bHRUYWI6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogV2hldGhlciB0byB0cnkgdG8ga2VlcCBzZWxlY3RlZCB0YWIgKGRlZmF1bHQgdmFsdWUpIG9uIHRhYnMgY2hhbmdlIG9yIHRvIHNlbGVjdCBkZWZhdWx0IG9uZSAoZmlyc3QgaWYgbm90IHNwZWNpZmllZCkuICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3REZWZhdWx0T25UYWJzQ2hhbmdlID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBmb2N1cyB0aGUgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQgaW4gYSB0YWIgcGFuZWwgd2hlbiB1c2luZyBzdGFja2VkIHRhYnMuICovXG4gICAgQElucHV0KClcbiAgICBmb2N1c0ZpcnN0Rm9jdXNhYmxlRWxlbWVudCA9IHRydWU7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWxlY3RlZCBwYW5lbCBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlbGVjdGVkVGFiQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJQYW5lbENvbXBvbmVudD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdmlzaWJsZSBpdGVtcyBjb3VudCBoYXMgYmVlbiBjaGFuZ2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHZpc2libGVJdGVtc0NvdW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGhpZGRlbiBpdGVtcyBjb3VudCBoYXMgYmVlbiBjaGFuZ2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGhpZGRlbkl0ZW1zQ291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IFRhYlBhbmVsQ29tcG9uZW50KSlcbiAgICB0YWJQYW5lbHM6IFF1ZXJ5TGlzdDxUYWJQYW5lbENvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oVGFiTGlua0RpcmVjdGl2ZSlcbiAgICB0YWJIZWFkZXJMaW5rczogUXVlcnlMaXN0PFRhYkxpbmtEaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKFRhYkl0ZW1EaXJlY3RpdmUpXG4gICAgdGFiSGVhZGVyczogUXVlcnlMaXN0PFRhYkl0ZW1EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKFRhYkl0ZW1FeHBhbmRDb21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIG92ZXJmbG93VHJpZ2dlcjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnaGVhZGVyQ29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgaGVhZGVyQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjb250ZW50Q29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBjb250ZW50Q29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdtZW51JywgeyByZWFkOiBNZW51Q29tcG9uZW50IH0pXG4gICAgbWVudTogTWVudUNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuIENvbGxlY3Rpb24gb2YgdGFicyBpbiBvcmlnaW5hbCBvcmRlciAqL1xuICAgIF90YWJBcnJheTogVGFiSW5mb1tdO1xuXG4gICAgLyoqIEBoaWRkZW4gV2hldGhlciB0byBkaXNhYmxlIHNjcm9sbCBzcHkgKi9cbiAgICBfZGlzYWJsZVNjcm9sbFNweSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW5pdCA9IHRydWU7XG5cbiAgICAvKiogRXZlbnQgaXMgdGhyb3duIGFsd2F5cyB3aGVuIHRhYiBpcyBzZWxlY3RlZCBieSBrZXlib2FyZCBhY3Rpb25zICovXG4gICAgcmVhZG9ubHkgdGFiU2VsZWN0ZWQ6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChPdmVyZmxvd0xheW91dENvbXBvbmVudClcbiAgICBwcml2YXRlIF9vdmVyZmxvd0xheW91dDogT3ZlcmZsb3dMYXlvdXRDb21wb25lbnQ7XG5cbiAgICAvKiogRXZlbnQgaXMgdGhyb3duIGFsd2F5cywgd2hlbiBzb21lIHByb3BlcnR5IGlzIGNoYW5nZWQgKi9cbiAgICByZWFkb25seSB0YWJQYW5lbFByb3BlcnR5Q2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2V4cGFuZE92ZXJmbG93VGV4dDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9lbFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWZcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0dXBUYWJQYW5lbHNDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25Qcm9wZXJ0aWVzQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RhYkhlYWRlckNsaWNrSGFuZGxlcih0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZXhwYW5kVGFiKHRhYlBhbmVsLCAhdGFiUGFuZWwuZXhwYW5kZWQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RhYkhlYWRlcktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VOVEVSLCBTUEFDRV0pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl90YWJIZWFkZXJDbGlja0hhbmRsZXIodGFiUGFuZWwpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX292ZXJmbG93aW5nVGFiSGVhZGVyQ2xpY2tIYW5kbGVyKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJBcnJheS5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgICAgIHRhYi5wYW5lbC5fZm9yY2VkVmlzaWJpbGl0eSA9IHRhYi5wYW5lbCA9PT0gdGFiUGFuZWw7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2V4cGFuZFRhYih0YWJQYW5lbCwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgICAgIHRoaXMuX292ZXJmbG93TGF5b3V0LnRyaWdnZXJSZWNhbGN1bGF0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hpZ2hsaWdodEFjdGl2ZVRhYih7IGlkIH06IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhYiA9IHRoaXMuX3RhYkFycmF5LmZpbmQoKF90YWIpID0+IF90YWIucGFuZWwuX3BhbmVsSWQgPT09IGlkKTtcbiAgICAgICAgaWYgKHRhYikge1xuICAgICAgICAgICAgY29uc3QgX3RhYldhc0FjdGl2ZSA9IHRhYi5hY3RpdmU7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmF0ZVN0YWNrZWRUYWIodGFiLnBhbmVsLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIV90YWJXYXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFiQ2hhbmdlLmVtaXQodGFiLnBhbmVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uVHJpZ2dlcktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIG1lbnVSZWY6IE1lbnVDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRU5URVIsIFNQQUNFXSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBtZW51UmVmLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGdldCBfdGFiUGFuZWxzQ2hhbmdlJCgpOiBPYnNlcnZhYmxlPFRhYlBhbmVsQ29tcG9uZW50W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFiUGFuZWxzLmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLnRhYlBhbmVscyksXG4gICAgICAgICAgICBtYXAoKHRhYlBhbmVscykgPT4gdGFiUGFuZWxzLnRvQXJyYXkoKSksXG4gICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZiAmJiAhdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWZbJ2Rlc3Ryb3llZCddKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldHVwVGFiUGFuZWxzQ2hhbmdlTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saXN0ZW5PblRhYlBhbmVsc0FuZFVwZGF0ZVN0b3JhZ2VTdHJ1Y3R1cmVzKCk7XG4gICAgICAgIHRoaXMuX2luaXRTdGFja0NvbnRlbnRTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25UYWJQYW5lbHNFeHBhbmRlZENoYW5nZSgpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PblRhYlBhbmVsc0FuZEluaXRpYWxseUV4cGFuZFRhYlBhbmVsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU2V0dXAgbWVjaGFuaXNtcyByZXF1aXJlZCBmb3IgaGFuZGxpbmcgdGhlIHN0YWNrZWQgY29udGVudCBiZWhhdmlvciAqL1xuICAgIHByaXZhdGUgX2luaXRTdGFja0NvbnRlbnRTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYlBhbmVsc0NoYW5nZSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnN0YWNrQ29udGVudCksXG4gICAgICAgICAgICAgICAgZGVsYXkoMCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFiQXJyYXkuZmlsdGVyKCh0YWIpID0+ICF0YWIucGFuZWwuZGlzYWJsZWQpLmZvckVhY2goKHRhYikgPT4gdGFiLnBhbmVsLl9leHBhbmQodHJ1ZSkpXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25UYWJQYW5lbHNBbmRVcGRhdGVTdG9yYWdlU3RydWN0dXJlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFiUGFuZWxzQ2hhbmdlJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKCh0YWJQYW5lbHMpID0+IHRhYlBhbmVscy5tYXAoKGVsKSA9PiBuZXcgVGFiSW5mbyhlbCkpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRhYnMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJBcnJheSA9IHRhYnM7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uVGFiUGFuZWxzRXhwYW5kZWRDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYlBhbmVsc0NoYW5nZSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgodGFiUGFuZWxzKSA9PiB0YWJQYW5lbHMubWFwKCh0YWIpID0+IHRhYi5fZXhwYW5kZWRTdGF0ZUNoYW5nZS5hc09ic2VydmFibGUoKSkpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgodGFiUGFuZWxzKSA9PiBtZXJnZSguLi50YWJQYW5lbHMpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB0aGlzLl9leHBhbmRUYWIoZXZlbnQudGFyZ2V0LCBldmVudC5zdGF0ZSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25UYWJQYW5lbHNBbmRJbml0aWFsbHlFeHBhbmRUYWJQYW5lbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFiUGFuZWxzQ2hhbmdlJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVRhYiA9IHRoaXMuX3RhYkFycmF5LmZpbmQoKF90YWIpID0+IF90YWIuYWN0aXZlKTtcbiAgICAgICAgICAgIGxldCB0YWI6IE51bGxhYmxlPFRhYkluZm8+O1xuXG4gICAgICAgICAgICBpZiAoIWFjdGl2ZVRhYiB8fCB0aGlzLnNlbGVjdERlZmF1bHRPblRhYnNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0VGFiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhYiA9IHRoaXMuX3RhYkFycmF5LmZpbmQoKF90YWIpID0+ICFfdGFiLmRpc2FibGVkICYmIF90YWIuaWQgPT09IHRoaXMuZGVmYXVsdFRhYik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0YWIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFiID0gdGhpcy5fdGFiQXJyYXkuZmluZCgoX3RhYikgPT4gIV90YWIuZGlzYWJsZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRhYiAmJiBhY3RpdmVUYWIgIT09IHRhYikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2V4cGFuZFRhYih0YWIucGFuZWwsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uUHJvcGVydGllc0NoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgbWVyZ2UodGhpcy50YWJQYW5lbFByb3BlcnR5Q2hhbmdlZCwgdGhpcy50YWJQYW5lbHMuY2hhbmdlcylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fZGV0ZWN0Q2hhbmdlcygpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjdGl2YXRlU3RhY2tlZFRhYih0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQsIHNjcm9sbCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9QYW5lbCh0YWJQYW5lbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGFiQXJyYXkuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgICAgICB0YWIuYWN0aXZlID0gdGFiLnBhbmVsID09PSB0YWJQYW5lbDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hY3RpdmF0ZUV4cGFuZGFibGVUYWIodGFiUGFuZWw6IFRhYlBhbmVsQ29tcG9uZW50LCBleHBhbmQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29sbGFwc2UgPSB0aGlzLmNvbGxhcHNpYmxlVGFicyAmJiAhZXhwYW5kO1xuXG4gICAgICAgIHRoaXMuX3RhYkFycmF5LmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNBY3RpdmUgPSB0YWIucGFuZWwgPT09IHRhYlBhbmVsICYmICFjb2xsYXBzZTtcblxuICAgICAgICAgICAgdGFiLnBhbmVsLl9leHBhbmQoaXNBY3RpdmUpO1xuICAgICAgICAgICAgdGFiLmFjdGl2ZSA9IGlzQWN0aXZlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2V4cGFuZFRhYih0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQsIGV4cGFuZDogYm9vbGVhbiwgZGV0ZWN0Q2hhbmdlcyA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhY2tDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmF0ZVN0YWNrZWRUYWIodGFiUGFuZWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9jYW5DaGFuZ2VFeHBhbmRTdGF0ZSh0YWJQYW5lbCwgZXhwYW5kKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fYWN0aXZhdGVFeHBhbmRhYmxlVGFiKHRhYlBhbmVsLCBleHBhbmQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJDaGFuZ2UuZW1pdCh0YWJQYW5lbCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zY3JvbGxUb1BhbmVsKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYW5lbEVsZW1lbnQgPSB0YWJQYW5lbC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQgPSB0aGlzLmNvbnRlbnRDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgZGlzdGFuY2VUb1Njcm9sbCA9IHBhbmVsRWxlbWVudC5vZmZzZXRUb3AgLSBjb250YWluZXJFbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgY29uc3QgbWF4aW11bVNjcm9sbFRvcCA9IGNvbnRhaW5lckVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyRWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTY3JvbGxQb3NpdGlvbiA9IE1hdGguY2VpbChjb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCk7XG5cbiAgICAgICAgaWYgKCEoY3VycmVudFNjcm9sbFBvc2l0aW9uID09PSBtYXhpbXVtU2Nyb2xsVG9wICYmIGRpc3RhbmNlVG9TY3JvbGwgPiBtYXhpbXVtU2Nyb2xsVG9wKSkge1xuICAgICAgICAgICAgIXRoaXMuX2luaXQgPyAodGhpcy5fZGlzYWJsZVNjcm9sbFNweSA9IHRydWUpIDogKHRoaXMuX2luaXQgPSBmYWxzZSk7XG4gICAgICAgICAgICBmcm9tRXZlbnQoY29udGFpbmVyRWxlbWVudCwgJ3Njcm9sbCcpXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCksIGZpcnN0KCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+ICh0aGlzLl9kaXNhYmxlU2Nyb2xsU3B5ID0gZmFsc2UpKTtcbiAgICAgICAgICAgIHNjcm9sbFRvcChjb250YWluZXJFbGVtZW50LCBkaXN0YW5jZVRvU2Nyb2xsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZvY3VzRmlyc3RGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICB0YWJQYW5lbC5fZm9jdXNGaXJzdEZvY3VzYWJsZUVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFdoZXRoZXIgdGFiIGNhbiBiZSBleHBhbmRlZC9jb2xsYXBzZWQgKi9cbiAgICBwcml2YXRlIF9jYW5DaGFuZ2VFeHBhbmRTdGF0ZSh0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQsIGV4cGFuZDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRhYlBhbmVsLmRpc2FibGVkICYmIGV4cGFuZCAhPT0gdGFiUGFuZWwuZXhwYW5kZWQgJiYgZXhwYW5kID09PSBmYWxzZSA/IHRoaXMuY29sbGFwc2libGVUYWJzIDogdHJ1ZTtcbiAgICB9XG59XG4iLCI8ZGl2ICNoZWFkZXJDb250YWluZXIgcm9sZT1cInRhYmxpc3RcIiBjbGFzcz1cImZkLXRhYnNcIiBbY2xhc3NdPVwiKG1vZGUgPyAnZmQtdGFicy0tJyArIG1vZGUgOiAnJykgKyAoJyBmZC10YWJzLS0nICsgc2l6ZSlcIj5cbiAgICA8ZmQtb3ZlcmZsb3ctbGF5b3V0XG4gICAgICAgIFttYXhWaXNpYmxlSXRlbXNdPVwibWF4VmlzaWJsZVRhYnNcIlxuICAgICAgICBbZW5hYmxlS2V5Ym9hcmROYXZpZ2F0aW9uXT1cInRydWVcIlxuICAgICAgICBuYXZpZ2F0aW9uVHJpZ2dlcj1cImtleWRvd25cIlxuICAgICAgICAoaGlkZGVuSXRlbXNDb3VudCk9XCJoaWRkZW5JdGVtc0NvdW50LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICh2aXNpYmxlSXRlbXNDb3VudCk9XCJ2aXNpYmxlSXRlbXNDb3VudC5lbWl0KCRldmVudClcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIF90YWJBcnJheTsgbGV0IGkgPSBpbmRleDsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgZmQtdGFiLWl0ZW1cbiAgICAgICAgICAgICAgICAqZmRPdmVyZmxvd0l0ZW1SZWY9XCJ0YWJcIlxuICAgICAgICAgICAgICAgIGZkT3ZlcmZsb3dMYXlvdXRJdGVtXG4gICAgICAgICAgICAgICAgW2ZvcmNlVmlzaWJpbGl0eV09XCJ0YWIucGFuZWwuX2ZvcmNlZFZpc2liaWxpdHlcIlxuICAgICAgICAgICAgICAgIFtoZWFkZXJdPVwidGFiLmlzSGVhZGVyXCJcbiAgICAgICAgICAgICAgICBbdGFiSXRlbVN0YXRlXT1cInRhYi50YWJTdGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgZmQtdGFiLWxpbmtcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cInRhYlwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJ0YWIuaWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cInRhYi5wYW5lbElkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0YWIuYXJpYUxhYmVsIHx8IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiIXRhYi5hcmlhTGFiZWwgJiYgdGFiLmFyaWFMYWJlbGxlZEJ5ID8gdGFiLmFyaWFMYWJlbGxlZEJ5IDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIGZkT3ZlcmZsb3dMYXlvdXRGb2N1c2FibGVJdGVtXG4gICAgICAgICAgICAgICAgICAgIFtmb2N1c2FibGVdPVwidGFiLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuYXZpZ2FibGVdPVwiIXRhYi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthY3RpdmVdPVwidGFiLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfdGFiSGVhZGVyS2V5ZG93bkhhbmRsZXIoJGV2ZW50LCB0YWIucGFuZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl90YWJIZWFkZXJDbGlja0hhbmRsZXIodGFiLnBhbmVsKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiLnRpdGxlVGVtcGxhdGUgfHwgbnVsbFwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFiLnRpdGxlVGVtcGxhdGVcIiBbbmdTd2l0Y2hdPVwibW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbHRlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItaGVhZGVyICpuZ0lmPVwidGFiLmlzSGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1jb3VudGVyLWhlYWRlciAqbmdJZj1cInRhYi5jb3VudFwiPnt7IHRhYi5jb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWxhYmVsICpuZ0lmPVwidGFiLnRpdGxlXCI+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYi5pc0hlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItaWNvbiBbaWNvbl09XCJ0YWIuZ2x5cGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGZkLXRhYi1jb3VudD57eyB0YWIuY291bnQgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWxhYmVsPnt7IHRhYi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaWNvbi1vbmx5J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1pY29uIFtpY29uXT1cInRhYi5nbHlwaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBmZC10YWItY291bnQ+e3sgdGFiLmNvdW50IH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncHJvY2VzcydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItaWNvbiAqbmdJZj1cInRhYi5nbHlwaFwiIFtpY29uXT1cInRhYi5nbHlwaFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLXRhYi1wcm9jZXNzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItbGFiZWwgKm5nSWY9XCJ0YWIuY291bnRcIj57eyB0YWIuY291bnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1sYWJlbCAqbmdJZj1cInRhYi50aXRsZVwiPnt7IHRhYi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgZmQtdGFiLWNvdW50ICpuZ0lmPVwidGFiLmNvdW50XCI+e3sgdGFiLmNvdW50IH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi10YWc+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgICAgIDxkaXYgZmQtdGFiLXByb2Nlc3MtaWNvbiAqbmdJZj1cIm1vZGUgPT09ICdwcm9jZXNzJyAmJiAhbGFzdFwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0YWIuaXNIZWFkZXJcIiBmZC10YWItc2VwYXJhdG9yPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpmZE92ZXJmbG93RXhwYW5kPVwibGV0IHRhYnM7IGl0ZW1zOiBfdGFiQXJyYXlcIj5cbiAgICAgICAgICAgIDxmZC1pdGVtLWV4cGFuZFxuICAgICAgICAgICAgICAgIFtmZE1lbnVUcmlnZ2VyXT1cIm1lbnVcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJleHBhbmRPdmVyZmxvd1RleHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwidGFicy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfb25UcmlnZ2VyS2V5ZG93bigkZXZlbnQsIG1lbnUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZmQtaXRlbS1leHBhbmQ+XG5cbiAgICAgICAgICAgIDxmZC1tZW51ICNtZW51PlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBmZC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cIl9vdmVyZmxvd2luZ1RhYkhlYWRlckNsaWNrSGFuZGxlcih0YWIuaXRlbS5wYW5lbClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1tZW51LWludGVyYWN0aXZlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICF0YWIuaXRlbS50aXRsZVRlbXBsYXRlICYmIG1vZGUgPT09ICdpY29uLW9ubHknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGljb25Pbmx5VGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGFiLml0ZW0udGl0bGVUZW1wbGF0ZSB8fCB0ZXh0VGl0bGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiB0YWIuaXRlbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvZmQtbWVudT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1vdmVyZmxvdy1sYXlvdXQ+XG48L2Rpdj5cblxuPGRpdlxuICAgICNjb250ZW50Q29udGFpbmVyXG4gICAgY2xhc3M9XCJmZC10YWJzX19jb250ZW50XCJcbiAgICBbc3R5bGUubWF4SGVpZ2h0XT1cIm1heENvbnRlbnRIZWlnaHRcIlxuICAgIGZkU2Nyb2xsU3B5XG4gICAgZmQtc2Nyb2xsYmFyXG4gICAgW3RyYWNrZWRUYWdzXT1cIlsnZmQtdGFiJ11cIlxuICAgIFtzY3JvbGxTcHlEaXNhYmxlZF09XCJfZGlzYWJsZVNjcm9sbFNweVwiXG4gICAgKHNweUNoYW5nZSk9XCJfaGlnaGxpZ2h0QWN0aXZlVGFiKCRldmVudClcIlxuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RleHRUaXRsZSBsZXQtdGFiPlxuICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpY29uT25seVRlbXBsYXRlIGxldC10YWI+XG4gICAgPHNwYW4gZmQtdGFiLWljb24gW2ljb25dPVwidGFiLmdseXBoXCI+XG4gICAgICAgIDxwIGZkLXRhYi1jb3VudD57eyB0YWIuY291bnQgfX08L3A+XG4gICAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGFicy90YWItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90YWJzL3RhYi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxPQUFPLEVBQVksU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIs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QUk7c0JBREgsS0FBSztnQkFRTixJQUFJO3NCQURILEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBTU4sY0FBYztzQkFEYixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBUUYsa0JBQWtCO3NCQURyQixLQUFLO2dCQWNOLFVBQVU7c0JBRFQsS0FBSztnQkFLTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBS04sMEJBQTBCO3NCQUR6QixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFLUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBS1AsZ0JBQWdCO3NCQURmLE1BQU07Z0JBS1AsU0FBUztzQkFEUixlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztnQkFLcEQsY0FBYztzQkFEYixZQUFZO3VCQUFDLGdCQUFnQjtnQkFLOUIsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLGdCQUFnQjtnQkFLOUIsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLdkQsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLbEQsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBS2pFLElBQUk7c0JBREgsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO2dCQWlCbEMsZUFBZTtzQkFEdEIsU0FBUzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmZsb3dMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvb3ZlcmZsb3ctbGF5b3V0JztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkZWxheSwgZmlsdGVyLCBmaXJzdCwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEtleVV0aWwsIE51bGxhYmxlLCBzY3JvbGxUb3AsIHdhcm5PbmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgVGFiSXRlbUV4cGFuZENvbXBvbmVudCB9IGZyb20gJy4vdGFiLWl0ZW0tZXhwYW5kL3RhYi1pdGVtLWV4cGFuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFiTGlua0RpcmVjdGl2ZSB9IGZyb20gJy4vdGFiLWxpbmsvdGFiLWxpbmsuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRhYkl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL3RhYi1pdGVtL3RhYi1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUYWJQYW5lbENvbXBvbmVudCB9IGZyb20gJy4vdGFiLXBhbmVsL3RhYi1wYW5lbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFiSW5mbyB9IGZyb20gJy4vdGFiLXV0aWxzL3RhYi1pbmZvLmNsYXNzJztcbmltcG9ydCB7IEVOVEVSLCBTUEFDRSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21lbnUnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgTElTVF9DT01QT05FTlQgfSBmcm9tICcuL3RhYi1saXN0LnRva2VuJztcbmltcG9ydCB7IFRhYkxpc3RDb21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICcuL3RhYi1saXN0LWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5leHBvcnQgdHlwZSBUYWJNb2RlcyA9ICdpY29uLW9ubHknIHwgJ3Byb2Nlc3MnIHwgJ2ZpbHRlcic7XG5cbmV4cG9ydCB0eXBlIFRhYlNpemVzID0gJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJyB8ICd4eGwnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBsaXN0IG9mIHRhYi1wYW5lbHMuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtdGFiLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWItbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFiLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtdGFicy1jdXN0b20nXG4gICAgfSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKCksXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IExJU1RfQ09NUE9ORU5ULFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGFiTGlzdENvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFiTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIFRhYkxpc3RDb21wb25lbnRJbnRlcmZhY2UsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIFNpemUgb2YgdGFiLCBpdCdzIG1vc3RseSBhYm91dCBhZGRpbmcgc3BhY2luZyBvbiB0YWIgY29udGFpbmVyLCBhdmFpbGFibGUgc2l6ZXMgJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJyB8ICd4eGwnICovXG4gICAgQElucHV0KClcbiAgICBzaXplOiBUYWJTaXplcyA9ICdtJztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdXNlciB3YW50cyB0byB1c2UgdGFiIGNvbXBvbmVudCBpbiBjZXJ0YWluIG1vZGUuIE1vZGVzIGF2YWlsYWJsZTpcbiAgICAgKiAnaWNvbi1vbmx5JyB8ICdwcm9jZXNzJyB8ICdmaWx0ZXInXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtb2RlOiBUYWJNb2RlcztcblxuICAgIC8qKiBXaGV0aGVyIHRvIG1vdmUgdGFicyBvdmVyZmxvd2luZyBpbiB0aGUgdGFiIGJhciB0byB0aGUgZHJvcGRvd24gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbGxhcHNlT3ZlcmZsb3cgPSB0cnVlO1xuXG4gICAgLyoqIExpbWl0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGFicyB2aXNpYmxlIGluIHRoZSB0YWIgYmFyIGluIGNvbGxhcHNlT3ZlcmZsb3cgbW9kZS5cbiAgICAgKiBPdGhlciB0YWJzIHdpbGwgYmUgbW92ZWQgdG8gdGhlIGNvbGxhcHNlZCB0YWJzIGRyb3Bkb3duICovXG4gICAgQElucHV0KClcbiAgICBtYXhWaXNpYmxlVGFicyA9IEluZmluaXR5O1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gb3BlbiB0YWIgY29udGVudCBvbmUgdW5kZXIgYW5vdGhlciB3aXRob3V0IGNvbGxhcHNpbmcgKi9cbiAgICBASW5wdXQoKVxuICAgIHN0YWNrQ29udGVudCA9IGZhbHNlO1xuXG4gICAgLyoqIE1heGltdW0gaGVpZ2h0IG9mIHRoZSBjb250ZW50ICovXG4gICAgQElucHV0KClcbiAgICBtYXhDb250ZW50SGVpZ2h0ID0gJzEwMCUnO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZW5hYmxlIGNvbGxhcHNpbmcgZXhwYW5kZWQgdGFiIG9uIGV4cGFuZGVkIHRhYiBjbGljayAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29sbGFwc2libGVUYWJzID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIFRleHQgdmlzaWJsZSBpbiBleHBhbmQgb3ZlcmZsb3cgdHJpZ2dlclxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGV4cGFuZE92ZXJmbG93VGV4dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgXCJQcm9wZXJ0eSBleHBhbmRPdmVyZmxvd1RleHQgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlVGFicy50YWJMaXN0RXhwYW5kQnV0dG9uVGV4dCcga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fZXhwYW5kT3ZlcmZsb3dUZXh0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGV4cGFuZE92ZXJmbG93VGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhwYW5kT3ZlcmZsb3dUZXh0O1xuICAgIH1cblxuICAgIC8qKiBJbml0aWFsbHkgc2VsZWN0ZWQgdGFiIChieSBpZCkuIEZpcnN0IG5vdCBkaXNhYmxlZCBvbmUgaWYgbm90IHNwZWNpZmllZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRlZmF1bHRUYWI6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogV2hldGhlciB0byB0cnkgdG8ga2VlcCBzZWxlY3RlZCB0YWIgKGRlZmF1bHQgdmFsdWUpIG9uIHRhYnMgY2hhbmdlIG9yIHRvIHNlbGVjdCBkZWZhdWx0IG9uZSAoZmlyc3QgaWYgbm90IHNwZWNpZmllZCkuICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3REZWZhdWx0T25UYWJzQ2hhbmdlID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBmb2N1cyB0aGUgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQgaW4gYSB0YWIgcGFuZWwgd2hlbiB1c2luZyBzdGFja2VkIHRhYnMuICovXG4gICAgQElucHV0KClcbiAgICBmb2N1c0ZpcnN0Rm9jdXNhYmxlRWxlbWVudCA9IHRydWU7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWxlY3RlZCBwYW5lbCBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlbGVjdGVkVGFiQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJQYW5lbENvbXBvbmVudD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdmlzaWJsZSBpdGVtcyBjb3VudCBoYXMgYmVlbiBjaGFuZ2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHZpc2libGVJdGVtc0NvdW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGhpZGRlbiBpdGVtcyBjb3VudCBoYXMgYmVlbiBjaGFuZ2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGhpZGRlbkl0ZW1zQ291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IFRhYlBhbmVsQ29tcG9uZW50KSlcbiAgICB0YWJQYW5lbHM6IFF1ZXJ5TGlzdDxUYWJQYW5lbENvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oVGFiTGlua0RpcmVjdGl2ZSlcbiAgICB0YWJIZWFkZXJMaW5rczogUXVlcnlMaXN0PFRhYkxpbmtEaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKFRhYkl0ZW1EaXJlY3RpdmUpXG4gICAgdGFiSGVhZGVyczogUXVlcnlMaXN0PFRhYkl0ZW1EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKFRhYkl0ZW1FeHBhbmRDb21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIG92ZXJmbG93VHJpZ2dlcjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnaGVhZGVyQ29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgaGVhZGVyQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjb250ZW50Q29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBjb250ZW50Q29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdtZW51JywgeyByZWFkOiBNZW51Q29tcG9uZW50IH0pXG4gICAgbWVudTogTWVudUNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuIENvbGxlY3Rpb24gb2YgdGFicyBpbiBvcmlnaW5hbCBvcmRlciAqL1xuICAgIF90YWJBcnJheTogVGFiSW5mb1tdO1xuXG4gICAgLyoqIEBoaWRkZW4gV2hldGhlciB0byBkaXNhYmxlIHNjcm9sbCBzcHkgKi9cbiAgICBfZGlzYWJsZVNjcm9sbFNweSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW5pdCA9IHRydWU7XG5cbiAgICAvKiogRXZlbnQgaXMgdGhyb3duIGFsd2F5cyB3aGVuIHRhYiBpcyBzZWxlY3RlZCBieSBrZXlib2FyZCBhY3Rpb25zICovXG4gICAgcmVhZG9ubHkgdGFiU2VsZWN0ZWQ6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChPdmVyZmxvd0xheW91dENvbXBvbmVudClcbiAgICBwcml2YXRlIF9vdmVyZmxvd0xheW91dDogT3ZlcmZsb3dMYXlvdXRDb21wb25lbnQ7XG5cbiAgICAvKiogRXZlbnQgaXMgdGhyb3duIGFsd2F5cywgd2hlbiBzb21lIHByb3BlcnR5IGlzIGNoYW5nZWQgKi9cbiAgICByZWFkb25seSB0YWJQYW5lbFByb3BlcnR5Q2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2V4cGFuZE92ZXJmbG93VGV4dDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9lbFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWZcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0dXBUYWJQYW5lbHNDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25Qcm9wZXJ0aWVzQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RhYkhlYWRlckNsaWNrSGFuZGxlcih0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZXhwYW5kVGFiKHRhYlBhbmVsLCAhdGFiUGFuZWwuZXhwYW5kZWQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RhYkhlYWRlcktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VOVEVSLCBTUEFDRV0pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl90YWJIZWFkZXJDbGlja0hhbmRsZXIodGFiUGFuZWwpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX292ZXJmbG93aW5nVGFiSGVhZGVyQ2xpY2tIYW5kbGVyKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJBcnJheS5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgICAgIHRhYi5wYW5lbC5fZm9yY2VkVmlzaWJpbGl0eSA9IHRhYi5wYW5lbCA9PT0gdGFiUGFuZWw7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2V4cGFuZFRhYih0YWJQYW5lbCwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgICAgIHRoaXMuX292ZXJmbG93TGF5b3V0LnRyaWdnZXJSZWNhbGN1bGF0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hpZ2hsaWdodEFjdGl2ZVRhYih7IGlkIH06IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhYiA9IHRoaXMuX3RhYkFycmF5LmZpbmQoKF90YWIpID0+IF90YWIucGFuZWwuX3BhbmVsSWQgPT09IGlkKTtcbiAgICAgICAgaWYgKHRhYikge1xuICAgICAgICAgICAgY29uc3QgX3RhYldhc0FjdGl2ZSA9IHRhYi5hY3RpdmU7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmF0ZVN0YWNrZWRUYWIodGFiLnBhbmVsLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIV90YWJXYXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFiQ2hhbmdlLmVtaXQodGFiLnBhbmVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uVHJpZ2dlcktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIG1lbnVSZWY6IE1lbnVDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRU5URVIsIFNQQUNFXSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBtZW51UmVmLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGdldCBfdGFiUGFuZWxzQ2hhbmdlJCgpOiBPYnNlcnZhYmxlPFRhYlBhbmVsQ29tcG9uZW50W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFiUGFuZWxzLmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLnRhYlBhbmVscyksXG4gICAgICAgICAgICBtYXAoKHRhYlBhbmVscykgPT4gdGFiUGFuZWxzLnRvQXJyYXkoKSksXG4gICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZiAmJiAhdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWZbJ2Rlc3Ryb3llZCddKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldHVwVGFiUGFuZWxzQ2hhbmdlTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saXN0ZW5PblRhYlBhbmVsc0FuZFVwZGF0ZVN0b3JhZ2VTdHJ1Y3R1cmVzKCk7XG4gICAgICAgIHRoaXMuX2luaXRTdGFja0NvbnRlbnRTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25UYWJQYW5lbHNFeHBhbmRlZENoYW5nZSgpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PblRhYlBhbmVsc0FuZEluaXRpYWxseUV4cGFuZFRhYlBhbmVsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU2V0dXAgbWVjaGFuaXNtcyByZXF1aXJlZCBmb3IgaGFuZGxpbmcgdGhlIHN0YWNrZWQgY29udGVudCBiZWhhdmlvciAqL1xuICAgIHByaXZhdGUgX2luaXRTdGFja0NvbnRlbnRTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYlBhbmVsc0NoYW5nZSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnN0YWNrQ29udGVudCksXG4gICAgICAgICAgICAgICAgZGVsYXkoMCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFiQXJyYXkuZmlsdGVyKCh0YWIpID0+ICF0YWIucGFuZWwuZGlzYWJsZWQpLmZvckVhY2goKHRhYikgPT4gdGFiLnBhbmVsLl9leHBhbmQodHJ1ZSkpXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25UYWJQYW5lbHNBbmRVcGRhdGVTdG9yYWdlU3RydWN0dXJlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFiUGFuZWxzQ2hhbmdlJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKCh0YWJQYW5lbHMpID0+IHRhYlBhbmVscy5tYXAoKGVsKSA9PiBuZXcgVGFiSW5mbyhlbCkpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRhYnMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJBcnJheSA9IHRhYnM7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uVGFiUGFuZWxzRXhwYW5kZWRDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYlBhbmVsc0NoYW5nZSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgodGFiUGFuZWxzKSA9PiB0YWJQYW5lbHMubWFwKCh0YWIpID0+IHRhYi5fZXhwYW5kZWRTdGF0ZUNoYW5nZS5hc09ic2VydmFibGUoKSkpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgodGFiUGFuZWxzKSA9PiBtZXJnZSguLi50YWJQYW5lbHMpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB0aGlzLl9leHBhbmRUYWIoZXZlbnQudGFyZ2V0LCBldmVudC5zdGF0ZSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25UYWJQYW5lbHNBbmRJbml0aWFsbHlFeHBhbmRUYWJQYW5lbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFiUGFuZWxzQ2hhbmdlJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVRhYiA9IHRoaXMuX3RhYkFycmF5LmZpbmQoKF90YWIpID0+IF90YWIuYWN0aXZlKTtcbiAgICAgICAgICAgIGxldCB0YWI6IE51bGxhYmxlPFRhYkluZm8+O1xuXG4gICAgICAgICAgICBpZiAoIWFjdGl2ZVRhYiB8fCB0aGlzLnNlbGVjdERlZmF1bHRPblRhYnNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0VGFiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhYiA9IHRoaXMuX3RhYkFycmF5LmZpbmQoKF90YWIpID0+ICFfdGFiLmRpc2FibGVkICYmIF90YWIuaWQgPT09IHRoaXMuZGVmYXVsdFRhYik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0YWIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFiID0gdGhpcy5fdGFiQXJyYXkuZmluZCgoX3RhYikgPT4gIV90YWIuZGlzYWJsZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRhYiAmJiBhY3RpdmVUYWIgIT09IHRhYikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2V4cGFuZFRhYih0YWIucGFuZWwsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uUHJvcGVydGllc0NoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgbWVyZ2UodGhpcy50YWJQYW5lbFByb3BlcnR5Q2hhbmdlZCwgdGhpcy50YWJQYW5lbHMuY2hhbmdlcylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fZGV0ZWN0Q2hhbmdlcygpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjdGl2YXRlU3RhY2tlZFRhYih0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQsIHNjcm9sbCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9QYW5lbCh0YWJQYW5lbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGFiQXJyYXkuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgICAgICB0YWIuYWN0aXZlID0gdGFiLnBhbmVsID09PSB0YWJQYW5lbDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hY3RpdmF0ZUV4cGFuZGFibGVUYWIodGFiUGFuZWw6IFRhYlBhbmVsQ29tcG9uZW50LCBleHBhbmQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29sbGFwc2UgPSB0aGlzLmNvbGxhcHNpYmxlVGFicyAmJiAhZXhwYW5kO1xuXG4gICAgICAgIHRoaXMuX3RhYkFycmF5LmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNBY3RpdmUgPSB0YWIucGFuZWwgPT09IHRhYlBhbmVsICYmICFjb2xsYXBzZTtcblxuICAgICAgICAgICAgdGFiLnBhbmVsLl9leHBhbmQoaXNBY3RpdmUpO1xuICAgICAgICAgICAgdGFiLmFjdGl2ZSA9IGlzQWN0aXZlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2V4cGFuZFRhYih0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQsIGV4cGFuZDogYm9vbGVhbiwgZGV0ZWN0Q2hhbmdlcyA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhY2tDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmF0ZVN0YWNrZWRUYWIodGFiUGFuZWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9jYW5DaGFuZ2VFeHBhbmRTdGF0ZSh0YWJQYW5lbCwgZXhwYW5kKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fYWN0aXZhdGVFeHBhbmRhYmxlVGFiKHRhYlBhbmVsLCBleHBhbmQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJDaGFuZ2UuZW1pdCh0YWJQYW5lbCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zY3JvbGxUb1BhbmVsKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYW5lbEVsZW1lbnQgPSB0YWJQYW5lbC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQgPSB0aGlzLmNvbnRlbnRDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgZGlzdGFuY2VUb1Njcm9sbCA9IHBhbmVsRWxlbWVudC5vZmZzZXRUb3AgLSBjb250YWluZXJFbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgY29uc3QgbWF4aW11bVNjcm9sbFRvcCA9IGNvbnRhaW5lckVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyRWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTY3JvbGxQb3NpdGlvbiA9IE1hdGguY2VpbChjb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCk7XG5cbiAgICAgICAgaWYgKCEoY3VycmVudFNjcm9sbFBvc2l0aW9uID09PSBtYXhpbXVtU2Nyb2xsVG9wICYmIGRpc3RhbmNlVG9TY3JvbGwgPiBtYXhpbXVtU2Nyb2xsVG9wKSkge1xuICAgICAgICAgICAgIXRoaXMuX2luaXQgPyAodGhpcy5fZGlzYWJsZVNjcm9sbFNweSA9IHRydWUpIDogKHRoaXMuX2luaXQgPSBmYWxzZSk7XG4gICAgICAgICAgICBmcm9tRXZlbnQoY29udGFpbmVyRWxlbWVudCwgJ3Njcm9sbCcpXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCksIGZpcnN0KCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+ICh0aGlzLl9kaXNhYmxlU2Nyb2xsU3B5ID0gZmFsc2UpKTtcbiAgICAgICAgICAgIHNjcm9sbFRvcChjb250YWluZXJFbGVtZW50LCBkaXN0YW5jZVRvU2Nyb2xsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZvY3VzRmlyc3RGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICB0YWJQYW5lbC5fZm9jdXNGaXJzdEZvY3VzYWJsZUVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFdoZXRoZXIgdGFiIGNhbiBiZSBleHBhbmRlZC9jb2xsYXBzZWQgKi9cbiAgICBwcml2YXRlIF9jYW5DaGFuZ2VFeHBhbmRTdGF0ZSh0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQsIGV4cGFuZDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRhYlBhbmVsLmRpc2FibGVkICYmIGV4cGFuZCAhPT0gdGFiUGFuZWwuZXhwYW5kZWQgJiYgZXhwYW5kID09PSBmYWxzZSA/IHRoaXMuY29sbGFwc2libGVUYWJzIDogdHJ1ZTtcbiAgICB9XG59XG4iLCI8ZGl2ICNoZWFkZXJDb250YWluZXIgcm9sZT1cInRhYmxpc3RcIiBjbGFzcz1cImZkLXRhYnNcIiBbY2xhc3NdPVwiKG1vZGUgPyAnZmQtdGFicy0tJyArIG1vZGUgOiAnJykgKyAoJyBmZC10YWJzLS0nICsgc2l6ZSlcIj5cbiAgICA8ZmQtb3ZlcmZsb3ctbGF5b3V0XG4gICAgICAgIFttYXhWaXNpYmxlSXRlbXNdPVwibWF4VmlzaWJsZVRhYnNcIlxuICAgICAgICBbZW5hYmxlS2V5Ym9hcmROYXZpZ2F0aW9uXT1cInRydWVcIlxuICAgICAgICBuYXZpZ2F0aW9uVHJpZ2dlcj1cImtleWRvd25cIlxuICAgICAgICAoaGlkZGVuSXRlbXNDb3VudCk9XCJoaWRkZW5JdGVtc0NvdW50LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICh2aXNpYmxlSXRlbXNDb3VudCk9XCJ2aXNpYmxlSXRlbXNDb3VudC5lbWl0KCRldmVudClcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIF90YWJBcnJheTsgbGV0IGkgPSBpbmRleDsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgZmQtdGFiLWl0ZW1cbiAgICAgICAgICAgICAgICAqZmRPdmVyZmxvd0l0ZW1SZWY9XCJ0YWJcIlxuICAgICAgICAgICAgICAgIGZkT3ZlcmZsb3dMYXlvdXRJdGVtXG4gICAgICAgICAgICAgICAgW2ZvcmNlVmlzaWJpbGl0eV09XCJ0YWIucGFuZWwuX2ZvcmNlZFZpc2liaWxpdHlcIlxuICAgICAgICAgICAgICAgIFtoZWFkZXJdPVwidGFiLmlzSGVhZGVyXCJcbiAgICAgICAgICAgICAgICBbdGFiSXRlbVN0YXRlXT1cInRhYi50YWJTdGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgZmQtdGFiLWxpbmtcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cInRhYlwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJ0YWIuaWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cInRhYi5wYW5lbElkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0YWIuYXJpYUxhYmVsIHx8IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiIXRhYi5hcmlhTGFiZWwgJiYgdGFiLmFyaWFMYWJlbGxlZEJ5ID8gdGFiLmFyaWFMYWJlbGxlZEJ5IDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIGZkT3ZlcmZsb3dMYXlvdXRGb2N1c2FibGVJdGVtXG4gICAgICAgICAgICAgICAgICAgIFtmb2N1c2FibGVdPVwidGFiLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuYXZpZ2FibGVdPVwiIXRhYi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthY3RpdmVdPVwidGFiLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfdGFiSGVhZGVyS2V5ZG93bkhhbmRsZXIoJGV2ZW50LCB0YWIucGFuZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl90YWJIZWFkZXJDbGlja0hhbmRsZXIodGFiLnBhbmVsKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiLnRpdGxlVGVtcGxhdGUgfHwgbnVsbFwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFiLnRpdGxlVGVtcGxhdGVcIiBbbmdTd2l0Y2hdPVwibW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbHRlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItaGVhZGVyICpuZ0lmPVwidGFiLmlzSGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1jb3VudGVyLWhlYWRlciAqbmdJZj1cInRhYi5jb3VudFwiPnt7IHRhYi5jb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWxhYmVsICpuZ0lmPVwidGFiLnRpdGxlXCI+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYi5pc0hlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItaWNvbiBbaWNvbl09XCJ0YWIuZ2x5cGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGZkLXRhYi1jb3VudD57eyB0YWIuY291bnQgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWxhYmVsPnt7IHRhYi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaWNvbi1vbmx5J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1pY29uIFtpY29uXT1cInRhYi5nbHlwaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBmZC10YWItY291bnQ+e3sgdGFiLmNvdW50IH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncHJvY2VzcydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItaWNvbiAqbmdJZj1cInRhYi5nbHlwaFwiIFtpY29uXT1cInRhYi5nbHlwaFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLXRhYi1wcm9jZXNzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItbGFiZWwgKm5nSWY9XCJ0YWIuY291bnRcIj57eyB0YWIuY291bnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1sYWJlbCAqbmdJZj1cInRhYi50aXRsZVwiPnt7IHRhYi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgZmQtdGFiLWNvdW50ICpuZ0lmPVwidGFiLmNvdW50XCI+e3sgdGFiLmNvdW50IH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi10YWc+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgICAgIDxkaXYgZmQtdGFiLXByb2Nlc3MtaWNvbiAqbmdJZj1cIm1vZGUgPT09ICdwcm9jZXNzJyAmJiAhbGFzdFwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0YWIuaXNIZWFkZXJcIiBmZC10YWItc2VwYXJhdG9yPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpmZE92ZXJmbG93RXhwYW5kPVwibGV0IHRhYnM7IGl0ZW1zOiBfdGFiQXJyYXlcIj5cbiAgICAgICAgICAgIDxmZC1pdGVtLWV4cGFuZFxuICAgICAgICAgICAgICAgIFtmZE1lbnVUcmlnZ2VyXT1cIm1lbnVcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJleHBhbmRPdmVyZmxvd1RleHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwidGFicy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfb25UcmlnZ2VyS2V5ZG93bigkZXZlbnQsIG1lbnUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZmQtaXRlbS1leHBhbmQ+XG5cbiAgICAgICAgICAgIDxmZC1tZW51ICNtZW51PlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBmZC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cIl9vdmVyZmxvd2luZ1RhYkhlYWRlckNsaWNrSGFuZGxlcih0YWIuaXRlbS5wYW5lbClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1tZW51LWludGVyYWN0aXZlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICF0YWIuaXRlbS50aXRsZVRlbXBsYXRlICYmIG1vZGUgPT09ICdpY29uLW9ubHknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGljb25Pbmx5VGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGFiLml0ZW0udGl0bGVUZW1wbGF0ZSB8fCB0ZXh0VGl0bGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiB0YWIuaXRlbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvZmQtbWVudT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1vdmVyZmxvdy1sYXlvdXQ+XG48L2Rpdj5cblxuPGRpdlxuICAgICNjb250ZW50Q29udGFpbmVyXG4gICAgY2xhc3M9XCJmZC10YWJzX19jb250ZW50XCJcbiAgICBbc3R5bGUubWF4SGVpZ2h0XT1cIm1heENvbnRlbnRIZWlnaHRcIlxuICAgIGZkU2Nyb2xsU3B5XG4gICAgZmQtc2Nyb2xsYmFyXG4gICAgW3RyYWNrZWRUYWdzXT1cIlsnZmQtdGFiJ11cIlxuICAgIFtzY3JvbGxTcHlEaXNhYmxlZF09XCJfZGlzYWJsZVNjcm9sbFNweVwiXG4gICAgKHNweUNoYW5nZSk9XCJfaGlnaGxpZ2h0QWN0aXZlVGFiKCRldmVudClcIlxuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RleHRUaXRsZSBsZXQtdGFiPlxuICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpY29uT25seVRlbXBsYXRlIGxldC10YWI+XG4gICAgPHNwYW4gZmQtdGFiLWljb24gW2ljb25dPVwidGFiLmdseXBoXCI+XG4gICAgICAgIDxwIGZkLXRhYi1jb3VudD57eyB0YWIuY291bnQgfX08L3A+XG4gICAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  import { Injectable, isDevMode } from '@angular/core';
2
+ import { warnOnce } from '@fundamental-ngx/cdk/utils';
2
3
  import * as i0 from "@angular/core";
3
4
  /**
4
5
  * @deprecated use i18n capabilities instead
@@ -39,7 +40,7 @@ export class TimeI18n {
39
40
  */
40
41
  this.navigationInstruction = 'To move between items in this list, press top arrow or bottom arrow. To switch between lists press left arrow or right arrow.';
41
42
  if (isDevMode()) {
42
- console.warn('TimeI18n is deprecated and will be removed in next release. Use i18n capabilities instead.');
43
+ warnOnce('TimeI18n is deprecated and will be removed in next release. Use i18n capabilities instead.');
43
44
  }
44
45
  }
45
46
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: TimeI18n, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -48,4 +49,4 @@ export class TimeI18n {
48
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: TimeI18n, decorators: [{
49
50
  type: Injectable
50
51
  }], ctorParameters: function () { return []; } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGltZS9pMThuL3RpbWUtaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFdEQ7OztHQUdHO0FBRUgsTUFBTSxPQUFPLFFBQVE7SUErQ2pCLGNBQWM7SUFDZDtRQS9DQSxzQ0FBc0M7UUFDdEMsc0JBQWlCLEdBQUcsYUFBYSxDQUFDO1FBRWxDLGlEQUFpRDtRQUNqRCx1QkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUV0QyxtQ0FBbUM7UUFDbkMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixpREFBaUQ7UUFDakQsdUJBQWtCLEdBQUcsZ0JBQWdCLENBQUM7UUFFdEMsbURBQW1EO1FBQ25ELHlCQUFvQixHQUFHLGtCQUFrQixDQUFDO1FBRTFDLHFDQUFxQztRQUNyQyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQixtREFBbUQ7UUFDbkQseUJBQW9CLEdBQUcsa0JBQWtCLENBQUM7UUFFMUMsbURBQW1EO1FBQ25ELHlCQUFvQixHQUFHLGtCQUFrQixDQUFDO1FBRTFDLHFDQUFxQztRQUNyQyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQixtREFBbUQ7UUFDbkQseUJBQW9CLEdBQUcsa0JBQWtCLENBQUM7UUFFMUMsa0RBQWtEO1FBQ2xELHdCQUFtQixHQUFHLGlCQUFpQixDQUFDO1FBRXhDLG9DQUFvQztRQUNwQyxnQkFBVyxHQUFHLFFBQVEsQ0FBQztRQUV2QixrREFBa0Q7UUFDbEQsd0JBQW1CLEdBQUcsaUJBQWlCLENBQUM7UUFFeEM7OztXQUdHO1FBQ0gsMEJBQXFCLEdBQ2pCLCtIQUErSCxDQUFDO1FBSWhJLElBQUksU0FBUyxFQUFFLEVBQUU7WUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLDRGQUE0RixDQUFDLENBQUM7U0FDOUc7SUFDTCxDQUFDOzhHQXBEUSxRQUFRO2tIQUFSLFFBQVE7OzJGQUFSLFFBQVE7a0JBRHBCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICogUHJvdmlkZXMgaTE4biBzdXBwb3J0IGZvciBsYWJlbHMgYW5kIG1lcmlkaWFuIG5hbWluZyBpbnNpZGUgdGhlIHRpbWUgY29tcG9uZW50LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGltZUkxOG4ge1xuICAgIC8qKiBBcmlhIGxhYmVsIGZvciBlbnRpcmUgY29tcG9uZW50ICovXG4gICAgY29tcG9uZW50QXJpYU5hbWUgPSAnVGltZSBwaWNrZXInO1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSAnaW5jcmVhc2UgaG91cnMnIGJ1dHRvbiAqL1xuICAgIGluY3JlYXNlSG91cnNMYWJlbCA9ICdJbmNyZWFzZSBob3Vycyc7XG5cbiAgICAvKiogbGFiZWwgZm9yIHRoZSAnaG91cnMnIGNvbHVtbiAqL1xuICAgIGhvdXJzTGFiZWwgPSAnSHJzJztcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgJ2RlY3JlYXNlIGhvdXJzJyBidXR0b24gKi9cbiAgICBkZWNyZWFzZUhvdXJzTGFiZWwgPSAnRGVjcmVhc2UgaG91cnMnO1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSAnaW5jcmVhc2UgbWludXRlcycgYnV0dG9uICovXG4gICAgaW5jcmVhc2VNaW51dGVzTGFiZWwgPSAnSW5jcmVhc2UgbWludXRlcyc7XG5cbiAgICAvKiogbGFiZWwgZm9yIHRoZSAnbWludXRlcycgY29sdW1uICovXG4gICAgbWludXRlc0xhYmVsID0gJ01pbic7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlICdkZWNyZWFzZSBtaW51dGVzJyBidXR0b24gKi9cbiAgICBkZWNyZWFzZU1pbnV0ZXNMYWJlbCA9ICdEZWNyZWFzZSBtaW51dGVzJztcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgJ2luY3JlYXNlIHNlY29uZHMnIGJ1dHRvbiAqL1xuICAgIGluY3JlYXNlU2Vjb25kc0xhYmVsID0gJ0luY3JlYXNlIHNlY29uZHMnO1xuXG4gICAgLyoqIGxhYmVsIGZvciB0aGUgJ3NlY29uZHMnIGNvbHVtbiAqL1xuICAgIHNlY29uZHNMYWJlbCA9ICdTZWMnO1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSAnZGVjcmVhc2Ugc2Vjb25kcycgYnV0dG9uICovXG4gICAgZGVjcmVhc2VTZWNvbmRzTGFiZWwgPSAnRGVjcmVhc2Ugc2Vjb25kcyc7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlICdpbmNyZWFzZSBwZXJpb2QnIGJ1dHRvbiAqL1xuICAgIGluY3JlYXNlUGVyaW9kTGFiZWwgPSAnSW5jcmVhc2UgcGVyaW9kJztcblxuICAgIC8qKiBsYWJlbCBmb3IgdGhlICdwZXJpb2QnIGNvbHVtbiAqL1xuICAgIHBlcmlvZExhYmVsID0gJ1BlcmlvZCc7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlICdkZWNyZWFzZSBwZXJpb2QnIGJ1dHRvbiAqL1xuICAgIGRlY3JlYXNlUGVyaW9kTGFiZWwgPSAnRGVjcmVhc2UgcGVyaW9kJztcblxuICAgIC8qKlxuICAgICAqIEluc3RydWN0aW9uIGhvdyB0byBuYXZpZ2F0ZSBiZXR3ZWVuIG9wdGlvbnNcbiAgICAgKiBpbiB0aGUgdGltZSBjb2x1bW4gbGlzdCBhbmQgdG8gc3dpdGNoIGJldHdlZW4gdGltZSBjb2x1bW5zXG4gICAgICovXG4gICAgbmF2aWdhdGlvbkluc3RydWN0aW9uID1cbiAgICAgICAgJ1RvIG1vdmUgYmV0d2VlbiBpdGVtcyBpbiB0aGlzIGxpc3QsIHByZXNzIHRvcCBhcnJvdyBvciBib3R0b20gYXJyb3cuIFRvIHN3aXRjaCBiZXR3ZWVuIGxpc3RzIHByZXNzIGxlZnQgYXJyb3cgb3IgcmlnaHQgYXJyb3cuJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdUaW1lSTE4biBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gbmV4dCByZWxlYXNlLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZC4nKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGltZS9pMThuL3RpbWUtaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRXREOzs7R0FHRztBQUVILE1BQU0sT0FBTyxRQUFRO0lBK0NqQixjQUFjO0lBQ2Q7UUEvQ0Esc0NBQXNDO1FBQ3RDLHNCQUFpQixHQUFHLGFBQWEsQ0FBQztRQUVsQyxpREFBaUQ7UUFDakQsdUJBQWtCLEdBQUcsZ0JBQWdCLENBQUM7UUFFdEMsbUNBQW1DO1FBQ25DLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsaURBQWlEO1FBQ2pELHVCQUFrQixHQUFHLGdCQUFnQixDQUFDO1FBRXRDLG1EQUFtRDtRQUNuRCx5QkFBb0IsR0FBRyxrQkFBa0IsQ0FBQztRQUUxQyxxQ0FBcUM7UUFDckMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsbURBQW1EO1FBQ25ELHlCQUFvQixHQUFHLGtCQUFrQixDQUFDO1FBRTFDLG1EQUFtRDtRQUNuRCx5QkFBb0IsR0FBRyxrQkFBa0IsQ0FBQztRQUUxQyxxQ0FBcUM7UUFDckMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsbURBQW1EO1FBQ25ELHlCQUFvQixHQUFHLGtCQUFrQixDQUFDO1FBRTFDLGtEQUFrRDtRQUNsRCx3QkFBbUIsR0FBRyxpQkFBaUIsQ0FBQztRQUV4QyxvQ0FBb0M7UUFDcEMsZ0JBQVcsR0FBRyxRQUFRLENBQUM7UUFFdkIsa0RBQWtEO1FBQ2xELHdCQUFtQixHQUFHLGlCQUFpQixDQUFDO1FBRXhDOzs7V0FHRztRQUNILDBCQUFxQixHQUNqQiwrSEFBK0gsQ0FBQztRQUloSSxJQUFJLFNBQVMsRUFBRSxFQUFFO1lBQ2IsUUFBUSxDQUFDLDRGQUE0RixDQUFDLENBQUM7U0FDMUc7SUFDTCxDQUFDOzhHQXBEUSxRQUFRO2tIQUFSLFFBQVE7OzJGQUFSLFFBQVE7a0JBRHBCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHdhcm5PbmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gKiBQcm92aWRlcyBpMThuIHN1cHBvcnQgZm9yIGxhYmVscyBhbmQgbWVyaWRpYW4gbmFtaW5nIGluc2lkZSB0aGUgdGltZSBjb21wb25lbnQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUaW1lSTE4biB7XG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIGVudGlyZSBjb21wb25lbnQgKi9cbiAgICBjb21wb25lbnRBcmlhTmFtZSA9ICdUaW1lIHBpY2tlcic7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlICdpbmNyZWFzZSBob3VycycgYnV0dG9uICovXG4gICAgaW5jcmVhc2VIb3Vyc0xhYmVsID0gJ0luY3JlYXNlIGhvdXJzJztcblxuICAgIC8qKiBsYWJlbCBmb3IgdGhlICdob3VycycgY29sdW1uICovXG4gICAgaG91cnNMYWJlbCA9ICdIcnMnO1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSAnZGVjcmVhc2UgaG91cnMnIGJ1dHRvbiAqL1xuICAgIGRlY3JlYXNlSG91cnNMYWJlbCA9ICdEZWNyZWFzZSBob3Vycyc7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlICdpbmNyZWFzZSBtaW51dGVzJyBidXR0b24gKi9cbiAgICBpbmNyZWFzZU1pbnV0ZXNMYWJlbCA9ICdJbmNyZWFzZSBtaW51dGVzJztcblxuICAgIC8qKiBsYWJlbCBmb3IgdGhlICdtaW51dGVzJyBjb2x1bW4gKi9cbiAgICBtaW51dGVzTGFiZWwgPSAnTWluJztcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgJ2RlY3JlYXNlIG1pbnV0ZXMnIGJ1dHRvbiAqL1xuICAgIGRlY3JlYXNlTWludXRlc0xhYmVsID0gJ0RlY3JlYXNlIG1pbnV0ZXMnO1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSAnaW5jcmVhc2Ugc2Vjb25kcycgYnV0dG9uICovXG4gICAgaW5jcmVhc2VTZWNvbmRzTGFiZWwgPSAnSW5jcmVhc2Ugc2Vjb25kcyc7XG5cbiAgICAvKiogbGFiZWwgZm9yIHRoZSAnc2Vjb25kcycgY29sdW1uICovXG4gICAgc2Vjb25kc0xhYmVsID0gJ1NlYyc7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlICdkZWNyZWFzZSBzZWNvbmRzJyBidXR0b24gKi9cbiAgICBkZWNyZWFzZVNlY29uZHNMYWJlbCA9ICdEZWNyZWFzZSBzZWNvbmRzJztcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgJ2luY3JlYXNlIHBlcmlvZCcgYnV0dG9uICovXG4gICAgaW5jcmVhc2VQZXJpb2RMYWJlbCA9ICdJbmNyZWFzZSBwZXJpb2QnO1xuXG4gICAgLyoqIGxhYmVsIGZvciB0aGUgJ3BlcmlvZCcgY29sdW1uICovXG4gICAgcGVyaW9kTGFiZWwgPSAnUGVyaW9kJztcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgJ2RlY3JlYXNlIHBlcmlvZCcgYnV0dG9uICovXG4gICAgZGVjcmVhc2VQZXJpb2RMYWJlbCA9ICdEZWNyZWFzZSBwZXJpb2QnO1xuXG4gICAgLyoqXG4gICAgICogSW5zdHJ1Y3Rpb24gaG93IHRvIG5hdmlnYXRlIGJldHdlZW4gb3B0aW9uc1xuICAgICAqIGluIHRoZSB0aW1lIGNvbHVtbiBsaXN0IGFuZCB0byBzd2l0Y2ggYmV0d2VlbiB0aW1lIGNvbHVtbnNcbiAgICAgKi9cbiAgICBuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24gPVxuICAgICAgICAnVG8gbW92ZSBiZXR3ZWVuIGl0ZW1zIGluIHRoaXMgbGlzdCwgcHJlc3MgdG9wIGFycm93IG9yIGJvdHRvbSBhcnJvdy4gVG8gc3dpdGNoIGJldHdlZW4gbGlzdHMgcHJlc3MgbGVmdCBhcnJvdyBvciByaWdodCBhcnJvdy4nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICB3YXJuT25jZSgnVGltZUkxOG4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIG5leHQgcmVsZWFzZS4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWQuJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, ElementRef, EventEmitter, inject, Input, Output, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';
2
2
  import { fromEvent, Subscription } from 'rxjs';
3
- import { KeyUtil } from '@fundamental-ngx/cdk/utils';
3
+ import { KeyUtil, warnOnce } from '@fundamental-ngx/cdk/utils';
4
4
  import { ENTER, SPACE } from '@angular/cdk/keycodes';
5
5
  import { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
6
6
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@@ -28,7 +28,7 @@ export class TokenComponent {
28
28
  * label for close icon
29
29
  */
30
30
  set deleteButtonLabel(value) {
31
- console.warn("Property deleteButtonLabel is deprecated. Use i18n capabilities 'coreToken.deleteButtonLabel' key instead.");
31
+ warnOnce("Property deleteButtonLabel is deprecated. Use i18n capabilities 'coreToken.deleteButtonLabel' key instead.");
32
32
  this._deleteButtonLabel = value;
33
33
  }
34
34
  get deleteButtonLabel() {
@@ -39,7 +39,7 @@ export class TokenComponent {
39
39
  * role description for token
40
40
  */
41
41
  set ariaRoleDescription(value) {
42
- console.warn("Property ariaRoleDescription is deprecated. Use i18n capabilities 'coreToken.ariaRoleDescription' key instead.");
42
+ warnOnce("Property ariaRoleDescription is deprecated. Use i18n capabilities 'coreToken.ariaRoleDescription' key instead.");
43
43
  this._ariaRoleDescription = value;
44
44
  }
45
45
  get ariaRoleDescription() {
@@ -157,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
157
157
  }], elementFocused: [{
158
158
  type: Output
159
159
  }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdG9rZW4vdG9rZW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdG9rZW4vdG9rZW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFFaEU7OztHQUdHO0FBWUgsTUFBTSxPQUFPLGNBQWM7SUFpQnZCLHFDQUFxQztJQUNyQyxJQUNJLFFBQVEsQ0FBQyxHQUFZO1FBQ3JCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxHQUFHLEVBQUU7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUM5QjtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FB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TVAsK0RBQStEO1FBQy9ELFlBQVk7c0JBRlgsTUFBTTs7UUFNUCwrREFBK0Q7UUFDL0QsY0FBYztzQkFGYixNQUFNO2dCQVFQLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBLZXlVdGlsIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRU5URVIsIFNQQUNFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuLyoqXG4gKiBBIHRva2VuIGlzIHVzZWQgdG8gcmVwcmVzZW50IGNvbnRleHR1YWxpemluZyBpbmZvcm1hdGlvbi5cbiAqIFRoZXkgY2FuIGJlIHVzZWZ1bCB0byBzaG93IGFwcGxpZWQgZmlsdGVycywgc2VsZWN0ZWQgdmFsdWVzIGZvciBmb3JtIGZpZWxkcyBvciBvYmplY3QgbWV0YWRhdGEuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtdG9rZW4nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90b2tlbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9rZW4uY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW3N0eWxlLm1heC13aWR0aC4lXSc6ICcxMDAnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUb2tlbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIFdoZXRoZXIgdGhlIHRva2VuIGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgndG9rZW5XcmFwcGVyRWxlbWVudCcpXG4gICAgdG9rZW5XcmFwcGVyRWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnY29udGVudCcpXG4gICAgcmVhZG9ubHkgX2NvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3ZpZXdDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgICByZWFkb25seSBfdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB0b2tlbiBpcyBzZWxlY3RlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZWxlY3RlZCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkICE9PSB2YWwpIHtcbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdmFsO1xuICAgIH1cblxuICAgIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICAgIH1cbiAgICAvKiogV2hldGhlciB0aGUgdG9rZW4gaXMgcmVhZC1vbmx5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZE9ubHkgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogbGFiZWwgZm9yIGNsb3NlIGljb25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBkZWxldGVCdXR0b25MYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiUHJvcGVydHkgZGVsZXRlQnV0dG9uTGFiZWwgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlVG9rZW4uZGVsZXRlQnV0dG9uTGFiZWwnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2RlbGV0ZUJ1dHRvbkxhYmVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGRlbGV0ZUJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWxldGVCdXR0b25MYWJlbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIHJvbGUgZGVzY3JpcHRpb24gZm9yIHRva2VuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgYXJpYVJvbGVEZXNjcmlwdGlvbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiUHJvcGVydHkgYXJpYVJvbGVEZXNjcmlwdGlvbiBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVUb2tlbi5hcmlhUm9sZURlc2NyaXB0aW9uJyBrZXkgaW5zdGVhZC5cIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9hcmlhUm9sZURlc2NyaXB0aW9uID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGFyaWFSb2xlRGVzY3JpcHRpb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FyaWFSb2xlRGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgKngqIGljb24gaXMgY2xpY2tlZC4gU3BlY2lmaWNhbGx5LCBhbnkgcHNldWRvLWVsZW1lbnQuICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcmVhZG9ubHkgb25DbG9zZUNsaWNrOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRva2VuIHNob3VsZCBiZSByZW1vdmVkICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcmVhZG9ubHkgb25SZW1vdmU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSB0b2tlbiBpcyBjbGlja2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIG9uVG9rZW5DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSB0aGVyZSdzIGEga2V5ZG93biByZWdpc3RlcmVkIG9uIHRoZSB0b2tlbi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBvblRva2VuS2V5ZG93biA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiB0b2tlbiBlbGVtZW50IHJlY2VpdmVkIG9yIGxvc3QgZm9jdXMuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgZWxlbWVudEZvY3VzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRvdGFsQ291bnQ6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVsZXRlQnV0dG9uTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYXJpYVJvbGVEZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fY29udGVudCk7XG5cbiAgICAgICAgZnJvbUV2ZW50KHRoaXMudG9rZW5XcmFwcGVyRWxlbWVudC5uYXRpdmVFbGVtZW50LCAnZm9jdXMnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50Rm9jdXNlZC5lbWl0KHRydWUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50KHRoaXMudG9rZW5XcmFwcGVyRWxlbWVudC5uYXRpdmVFbGVtZW50LCAnYmx1cicpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRGb2N1c2VkLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2xvc2VDbGlja0hhbmRsZXIoZXZlbnQ/KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2xvc2VDbGljay5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdG9rZW5DbGlja0hhbmRsZXIoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRva2VuQ2xpY2suZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0b2tlbktleWRvd25IYW5kbGVyKGV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub2tlbktleWRvd24uZW1pdChldmVudCk7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VOVEVSLCBTUEFDRV0pKSB7XG4gICAgICAgICAgICB0aGlzLm9uVG9rZW5DbGljay5lbWl0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldFRvdGFsQ291bnQoY291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSBjb3VudDtcbiAgICB9XG59XG4iLCI8c3BhblxuICAgICN0b2tlbldyYXBwZXJFbGVtZW50XG4gICAgY2xhc3M9XCJmZC10b2tlblwiXG4gICAgcm9sZT1cIm9wdGlvblwiXG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICBbYXR0ci5hcmlhLXJvbGVkZXNjcmlwdGlvbl09XCJhcmlhUm9sZURlc2NyaXB0aW9uIHx8ICgnY29yZVRva2VuLmFyaWFSb2xlRGVzY3JpcHRpb24nIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAoY2xpY2spPVwidG9rZW5DbGlja0hhbmRsZXIoJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwidG9rZW5LZXlkb3duSGFuZGxlcigkZXZlbnQpXCJcbiAgICBbYXR0ci5hcmlhLXNldHNpemVdPVwidG90YWxDb3VudFwiXG4gICAgW2NsYXNzLmZkLXRva2VuX19kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2NsYXNzLmZkLXRva2VuLS1zZWxlY3RlZF09XCJzZWxlY3RlZFwiXG4gICAgW2NsYXNzLmZkLXRva2VuLS1yZWFkb25seV09XCJyZWFkT25seVwiXG4gICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJzZWxlY3RlZFwiXG4gICAgW2F0dHIuYXJpYS1yZWFkb25seV09XCJyZWFkT25seVwiXG4+XG4gICAgPHNwYW4gY2xhc3M9XCJmZC10b2tlbl9fdGV4dCBuby10ZXh0LXNlbGVjdFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICN2aWV3Q29udGFpbmVyPjwvbmctY29udGFpbmVyPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgICAoY2xpY2spPVwiY2xvc2VDbGlja0hhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImRlbGV0ZUJ1dHRvbkxhYmVsIHx8ICgnY29yZVRva2VuLmRlbGV0ZUJ1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICpuZ0lmPVwiIXJlYWRPbmx5XCJcbiAgICAgICAgY2xhc3M9XCJmZC10b2tlbl9fY2xvc2VcIlxuICAgID48L3NwYW4+XG48L3NwYW4+XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuIl19
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdG9rZW4vdG9rZW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdG9rZW4vdG9rZW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7O0FBRWhFOzs7R0FHRztBQVlILE1BQU0sT0FBTyxjQUFjO0lBaUJ2QixxQ0FBcUM7SUFDckMsSUFDSSxRQUFRLENBQUMsR0FBWTtRQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssR0FBRyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDOUI7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFD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UUFDL0QsWUFBWTtzQkFGWCxNQUFNOztRQU1QLCtEQUErRDtRQUMvRCxjQUFjO3NCQUZiLE1BQU07Z0JBUVAsY0FBYztzQkFEYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEtleVV0aWwsIHdhcm5PbmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRU5URVIsIFNQQUNFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuLyoqXG4gKiBBIHRva2VuIGlzIHVzZWQgdG8gcmVwcmVzZW50IGNvbnRleHR1YWxpemluZyBpbmZvcm1hdGlvbi5cbiAqIFRoZXkgY2FuIGJlIHVzZWZ1bCB0byBzaG93IGFwcGxpZWQgZmlsdGVycywgc2VsZWN0ZWQgdmFsdWVzIGZvciBmb3JtIGZpZWxkcyBvciBvYmplY3QgbWV0YWRhdGEuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtdG9rZW4nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90b2tlbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9rZW4uY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW3N0eWxlLm1heC13aWR0aC4lXSc6ICcxMDAnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUb2tlbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIFdoZXRoZXIgdGhlIHRva2VuIGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgndG9rZW5XcmFwcGVyRWxlbWVudCcpXG4gICAgdG9rZW5XcmFwcGVyRWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnY29udGVudCcpXG4gICAgcmVhZG9ubHkgX2NvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3ZpZXdDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgICByZWFkb25seSBfdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB0b2tlbiBpcyBzZWxlY3RlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZWxlY3RlZCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkICE9PSB2YWwpIHtcbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdmFsO1xuICAgIH1cblxuICAgIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICAgIH1cbiAgICAvKiogV2hldGhlciB0aGUgdG9rZW4gaXMgcmVhZC1vbmx5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZE9ubHkgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogbGFiZWwgZm9yIGNsb3NlIGljb25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBkZWxldGVCdXR0b25MYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgXCJQcm9wZXJ0eSBkZWxldGVCdXR0b25MYWJlbCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVUb2tlbi5kZWxldGVCdXR0b25MYWJlbCcga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fZGVsZXRlQnV0dG9uTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgZGVsZXRlQnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGV0ZUJ1dHRvbkxhYmVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogcm9sZSBkZXNjcmlwdGlvbiBmb3IgdG9rZW5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhcmlhUm9sZURlc2NyaXB0aW9uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIlByb3BlcnR5IGFyaWFSb2xlRGVzY3JpcHRpb24gaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlVG9rZW4uYXJpYVJvbGVEZXNjcmlwdGlvbicga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fYXJpYVJvbGVEZXNjcmlwdGlvbiA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBhcmlhUm9sZURlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcmlhUm9sZURlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlICp4KiBpY29uIGlzIGNsaWNrZWQuIFNwZWNpZmljYWxseSwgYW55IHBzZXVkby1lbGVtZW50LiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHJlYWRvbmx5IG9uQ2xvc2VDbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0b2tlbiBzaG91bGQgYmUgcmVtb3ZlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHJlYWRvbmx5IG9uUmVtb3ZlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgdG9rZW4gaXMgY2xpY2tlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBvblRva2VuQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgdGhlcmUncyBhIGtleWRvd24gcmVnaXN0ZXJlZCBvbiB0aGUgdG9rZW4uICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgb25Ub2tlbktleWRvd24gPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdG9rZW4gZWxlbWVudCByZWNlaXZlZCBvciBsb3N0IGZvY3VzLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGVsZW1lbnRGb2N1c2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0b3RhbENvdW50OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RlbGV0ZUJ1dHRvbkxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FyaWFSb2xlRGVzY3JpcHRpb246IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHJlYWRvbmx5IF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX2NvbnRlbnQpO1xuXG4gICAgICAgIGZyb21FdmVudCh0aGlzLnRva2VuV3JhcHBlckVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2ZvY3VzJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudEZvY3VzZWQuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudCh0aGlzLnRva2VuV3JhcHBlckVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2JsdXInKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50Rm9jdXNlZC5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNsb3NlQ2xpY2tIYW5kbGVyKGV2ZW50Pyk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNsb3NlQ2xpY2suZW1pdChldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRva2VuQ2xpY2tIYW5kbGVyKGV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub2tlbkNsaWNrLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdG9rZW5LZXlkb3duSGFuZGxlcihldmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG9rZW5LZXlkb3duLmVtaXQoZXZlbnQpO1xuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFTlRFUiwgU1BBQ0VdKSkge1xuICAgICAgICAgICAgdGhpcy5vblRva2VuQ2xpY2suZW1pdChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRUb3RhbENvdW50KGNvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b3RhbENvdW50ID0gY291bnQ7XG4gICAgfVxufVxuIiwiPHNwYW5cbiAgICAjdG9rZW5XcmFwcGVyRWxlbWVudFxuICAgIGNsYXNzPVwiZmQtdG9rZW5cIlxuICAgIHJvbGU9XCJvcHRpb25cIlxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgW2F0dHIuYXJpYS1yb2xlZGVzY3JpcHRpb25dPVwiYXJpYVJvbGVEZXNjcmlwdGlvbiB8fCAoJ2NvcmVUb2tlbi5hcmlhUm9sZURlc2NyaXB0aW9uJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgKGNsaWNrKT1cInRva2VuQ2xpY2tIYW5kbGVyKCRldmVudClcIlxuICAgIChrZXlkb3duKT1cInRva2VuS2V5ZG93bkhhbmRsZXIoJGV2ZW50KVwiXG4gICAgW2F0dHIuYXJpYS1zZXRzaXplXT1cInRvdGFsQ291bnRcIlxuICAgIFtjbGFzcy5mZC10b2tlbl9fZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtjbGFzcy5mZC10b2tlbi0tc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxuICAgIFtjbGFzcy5mZC10b2tlbi0tcmVhZG9ubHldPVwicmVhZE9ubHlcIlxuICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxuICAgIFthdHRyLmFyaWEtcmVhZG9ubHldPVwicmVhZE9ubHlcIlxuPlxuICAgIDxzcGFuIGNsYXNzPVwiZmQtdG9rZW5fX3RleHQgbm8tdGV4dC1zZWxlY3RcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAjdmlld0NvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgICAgKGNsaWNrKT1cImNsb3NlQ2xpY2tIYW5kbGVyKCRldmVudClcIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkZWxldGVCdXR0b25MYWJlbCB8fCAoJ2NvcmVUb2tlbi5kZWxldGVCdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAqbmdJZj1cIiFyZWFkT25seVwiXG4gICAgICAgIGNsYXNzPVwiZmQtdG9rZW5fX2Nsb3NlXCJcbiAgICA+PC9zcGFuPlxuPC9zcGFuPlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, DestroyRef, ElementRef, forwardRef, Inject, Input, NgZone, Optional, QueryList, SkipSelf, ViewChild, ViewEncapsulation } from '@angular/core';
3
3
  import { DYNAMIC_PAGE_HEADER_TOKEN } from '@fundamental-ngx/core/shared';
4
- import { applyCssClass, OVERFLOW_PRIORITY_SCORE, ResizeObserverService } from '@fundamental-ngx/cdk/utils';
4
+ import { applyCssClass, OVERFLOW_PRIORITY_SCORE, ResizeObserverService, warnOnce } from '@fundamental-ngx/cdk/utils';
5
5
  import { BehaviorSubject, combineLatest, map, startWith } from 'rxjs';
6
6
  import { TitleToken } from '@fundamental-ngx/core/title';
7
7
  import { ContentDensityMode, ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
@@ -31,7 +31,7 @@ export class ToolbarComponent {
31
31
  }
32
32
  /** @deprecated */
33
33
  set hasTitle(value) {
34
- console.warn('Property hasTitle is deprecated. ');
34
+ warnOnce('Property hasTitle is deprecated. ');
35
35
  this._hasTitle = value;
36
36
  }
37
37
  get hasTitle() {
@@ -345,4 +345,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
345
345
  type: ContentChild,
346
346
  args: [TitleToken]
347
347
  }], buildComponentCssClass: [] } });
348
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBSUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx5QkFBeUIsRUFBcUIsTUFBTSw4QkFBOEIsQ0FBQztBQUU1RixPQUFPLEVBQ0gsYUFBYSxFQUViLHVCQUF1QixFQUV2QixxQkFBcUIsRUFDeEIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QiwrQkFBK0IsRUFDbEMsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7OztBQUVoRSxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUM7QUFDekIsTUFBTSxjQUFjLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxjQUFjLENB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QUFDLENBQUM7SUFDckQsQ0FBQzs4R0FqWVEsZ0JBQWdCLDhLQTZIVyx5QkFBeUI7a0dBN0hwRCxnQkFBZ0IsbVJBTmQ7WUFDUCwrQkFBK0IsQ0FBQztnQkFDNUIscUJBQXFCLEVBQUUsa0JBQWtCLENBQUMsT0FBTzthQUNwRCxDQUFDO1NBQ0wsc0VBa0ZhLFVBQVUscUdBSlUsV0FBVyxvT0M5SWpELG9rREFtQ0E7O0FEbUtJO0lBREMsYUFBYTs7Ozs4REFVYjsyRkE3SVEsZ0JBQWdCO2tCQVo1QixTQUFTOytCQUNJLFlBQVksaUJBR1AsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUCwrQkFBK0IsQ0FBQzs0QkFDNUIscUJBQXFCLEVBQUUsa0JBQWtCLENBQUMsT0FBTzt5QkFDcEQsQ0FBQztxQkFDTDs7MEJBK0hJLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMseUJBQXlCOzRDQXhIN0QsT0FBTztzQkFETixLQUFLO2dCQU1OLEtBQUs7c0JBREosS0FBSztnQkFPRixjQUFjO3NCQURqQixLQUFLO2dCQWVOLE1BQU07c0JBREwsS0FBSztnQkFLRixRQUFRO3NCQURYLEtBQUs7Z0JBWU4sS0FBSztzQkFESixLQUFLO2dCQU9OLE1BQU07c0JBREwsS0FBSztnQkFPTixXQUFXO3NCQURWLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUztnQkFLcEIsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGNBQWM7Z0JBS3pCLFlBQVk7c0JBRFgsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDO2dCQUsxQyxjQUFjO3NCQURqQixZQUFZO3VCQUFDLFVBQVU7Z0JBb0R4QixzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNraXBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERZTkFNSUNfUEFHRV9IRUFERVJfVE9LRU4sIER5bmFtaWNQYWdlSGVhZGVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5cbmltcG9ydCB7XG4gICAgYXBwbHlDc3NDbGFzcyxcbiAgICBDc3NDbGFzc0J1aWxkZXIsXG4gICAgT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUsXG4gICAgT3ZlcmZsb3dQcmlvcml0eSxcbiAgICBSZXNpemVPYnNlcnZlclNlcnZpY2Vcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGl0bGVUb2tlbiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQge1xuICAgIENvbnRlbnREZW5zaXR5TW9kZSxcbiAgICBDb250ZW50RGVuc2l0eU9ic2VydmVyLFxuICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnNcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBUb29sYmFySXRlbSB9IGZyb20gJy4vYWJzdHJhY3QtdG9vbGJhci1pdGVtLmNsYXNzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuY29uc3QgRUxFTUVOVF9NQVJHSU4gPSA4O1xuY29uc3QgT1ZFUkZMT1dfU1BBQ0UgPSA1MCArIDIgKiBFTEVNRU5UX01BUkdJTjtcbmNvbnN0IE1BWF9DT05URU5UX1NJWkUgPSA5OTk5OTk5OTtcblxuZXhwb3J0IHR5cGUgVG9vbGJhclR5cGUgPSAnc29saWQnIHwgJ3RyYW5zcGFyZW50JyB8ICdhdXRvJyB8ICdpbmZvJztcblxuZXhwb3J0IGNvbnN0IGVudW0gT3ZlcmZsb3dQcmlvcml0eUVudW0ge1xuICAgIEFMV0FZUyA9ICdhbHdheXMnLFxuICAgIE5FVkVSID0gJ25ldmVyJyxcbiAgICBMT1cgPSAnbG93JyxcbiAgICBISUdIID0gJ2hpZ2gnLFxuICAgIERJU0FQUEVBUiA9ICdkaXNhcHBlYXInXG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtdG9vbGJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rvb2xiYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Rvb2xiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKHtcbiAgICAgICAgICAgIGRlZmF1bHRDb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1RcbiAgICAgICAgfSlcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRvb2xiYXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkLCBDc3NDbGFzc0J1aWxkZXIsIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIFRoZSBJRCBvZiB0aGUgdG9vbGJhciB0aXRsZVxuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICB0aXRsZUlkOiBzdHJpbmc7XG5cbiAgICAvKiogUHJvcGVydHkgYWxsb3dzIHVzZXIgdG8gcGFzcyBhZGRpdGlvbmFsIGNsYXNzXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjbGFzczogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgaWYgb3ZlcmZsb3cgYnV0dG9uIHNob3VsZCBiZSB2aXNpYmxlXG4gICAgICogRGVmYXVsdCB2YWx1ZTogZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzaG91bGRPdmVyZmxvdyh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2hvdWxkT3ZlcmZsb3cgPSB2YWw7XG4gICAgICAgIHRoaXMuc2hvdWxkT3ZlcmZsb3ckLm5leHQodmFsKTtcbiAgICB9XG5cbiAgICBnZXQgc2hvdWxkT3ZlcmZsb3coKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG91bGRPdmVyZmxvdztcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiB0b29sYmFyXG4gICAgICogQXZhaWxhYmxlIG9wdGlvbnM6ICdzb2xpZCcgfCAndHJhbnNwYXJlbnQnIHwgJ2F1dG8nIHwgJ2luZm8nXG4gICAgICogRGVmYXVsdCB2YWx1ZTogJ3NvbGlkJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmRUeXBlOiBUb29sYmFyVHlwZSA9ICdzb2xpZCc7XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBoYXNUaXRsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1Byb3BlcnR5IGhhc1RpdGxlIGlzIGRlcHJlY2F0ZWQuICcpO1xuICAgICAgICB0aGlzLl9oYXNUaXRsZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBoYXNUaXRsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1RpdGxlO1xuICAgIH1cblxuICAgIC8qKiBUaGUgdGl0bGUgZm9yIHRoZSB0b29sYmFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIGlmIHRvb2xiYXIgc2hvdWxkIGhhcyBhY3RpdmUgc3RhdGUgKG9ubHkgd2hlbiBmZFR5cGUgPT0gJ2luZm8nKVxuICAgICAqIERlZmF1bHQgdmFsdWU6IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhY3RpdmUgPSBmYWxzZTtcblxuICAgIC8qKiBEZXRlcm1pbmVzIGlmIHRvb2xiYXIgc2hvdWxkIGNsZWFyIGJvcmRlciBib3R0b21cbiAgICAgKiBEZWZhdWx0IHZhbHVlOiBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xlYXJCb3JkZXIgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGFsbCBpdGVtcyBzaG91bGQgYmUgaW5zaWRlIG92ZXJmbG93ICovXG4gICAgQElucHV0KClcbiAgICBmb3JjZU92ZXJmbG93ID0gZmFsc2U7XG5cbiAgICAvKiogVGFiaW5kZXggb2YgdGhlIHRvb2xiYXIgZWxlbWVudCwgdG8gYmUgdXNlZCB3aGVuIGZkVHlwZT1cImluZm9cIiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFiaW5kZXggPSAtMTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgndG9vbGJhcicpXG4gICAgdG9vbGJhcjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgndGl0bGVFbGVtZW50JylcbiAgICB0aXRsZUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEhlYWRFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IFRvb2xiYXJJdGVtKSlcbiAgICB0b29sYmFySXRlbXM6IFF1ZXJ5TGlzdDxUb29sYmFySXRlbT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoVGl0bGVUb2tlbilcbiAgICBzZXQgdGl0bGVDb21wb25lbnQodGl0bGU6IFRpdGxlVG9rZW4gfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3RpdGxlQ29tcG9uZW50JC5uZXh0KHRpdGxlKTtcbiAgICB9XG5cbiAgICBnZXQgdGl0bGVDb21wb25lbnQoKTogVGl0bGVUb2tlbiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGVDb21wb25lbnQkLnZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb3ZlcmZsb3dJdGVtcyQ6IE9ic2VydmFibGU8VG9vbGJhckl0ZW1bXT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG92ZXJmbG93bkl0ZW1zOiBUb29sYmFySXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhc1RpdGxlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RpdGxlQ29tcG9uZW50JDogQmVoYXZpb3JTdWJqZWN0PFRpdGxlVG9rZW4gfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGl0bGVUb2tlbiB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZWZyZXNoT3ZlcmZsb3ckID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPih1bmRlZmluZWQpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGdldCBfdG9vbGJhcldpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAodGhpcy50b29sYmFyLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmNsaWVudFdpZHRoIC0gT1ZFUkZMT1dfU1BBQ0U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaG91bGRPdmVyZmxvdyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXNlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHNob3VsZE92ZXJmbG93JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICByZWFkb25seSBfY29udGVudERlbnNpdHlPYnNlcnZlcjogQ29udGVudERlbnNpdHlPYnNlcnZlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZjogRGVzdHJveVJlZixcbiAgICAgICAgcHJpdmF0ZSByZXNpemVPYnNlcnZlclNlcnZpY2U6IFJlc2l6ZU9ic2VydmVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEluamVjdChEWU5BTUlDX1BBR0VfSEVBREVSX1RPS0VOKSBwcml2YXRlIF9keW5hbWljUGFnZUhlYWRlcj86IER5bmFtaWNQYWdlSGVhZGVyXG4gICAgKSB7XG4gICAgICAgIF9jb250ZW50RGVuc2l0eU9ic2VydmVyLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQGFwcGx5Q3NzQ2xhc3NcbiAgICBidWlsZENvbXBvbmVudENzc0NsYXNzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdmZC10b29sYmFyJyxcbiAgICAgICAgICAgIGBmZC10b29sYmFyLS0ke3RoaXMuZmRUeXBlfWAsXG4gICAgICAgICAgICBgJHt0aGlzLmFjdGl2ZSAmJiB0aGlzLmZkVHlwZSA9PT0gJ2luZm8nID8gJ2ZkLXRvb2xiYXItLWFjdGl2ZScgOiAnJ31gLFxuICAgICAgICAgICAgYCR7dGhpcy5oYXNUaXRsZSB8fCB0aGlzLnRpdGxlIHx8IHRoaXMudGl0bGVDb21wb25lbnQgPyAnZmQtdG9vbGJhci0tdGl0bGUnIDogJyd9YCxcbiAgICAgICAgICAgIGAke3RoaXMuY2xlYXJCb3JkZXIgPyAnZmQtdG9vbGJhci0tY2xlYXInIDogJyd9YCxcbiAgICAgICAgICAgIGAke3RoaXMuX2R5bmFtaWNQYWdlSGVhZGVyID8gJ2ZkLWR5bmFtaWMtcGFnZV9fdG9vbGJhcicgOiAnJ31gXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3ZlcmZsb3dJdGVtcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLm9ic2VydmUodGhpcy50b29sYmFyLm5hdGl2ZUVsZW1lbnQpLnBpcGUobWFwKCgpID0+IHRoaXMuX3Rvb2xiYXJXaWR0aCkpLFxuICAgICAgICAgICAgdGhpcy50b29sYmFySXRlbXMuY2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLnRvb2xiYXJJdGVtcyksXG4gICAgICAgICAgICAgICAgbWFwKCh0b29sYmFySXRlbXMpID0+IHRvb2xiYXJJdGVtcy50b0FycmF5KCkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGhpcy5fdGl0bGVDb21wb25lbnQkLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKCh0aXRsZUNvbXBvbmVudCk6IEhUTUxFbGVtZW50IHwgbnVsbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGl0bGVDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRpdGxlRWxlbWVudD8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGl0bGVDb21wb25lbnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGhpcy5zaG91bGRPdmVyZmxvdyQsXG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoT3ZlcmZsb3ckXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFt0b29sYmFyV2lkdGgsIHRvb2xiYXJJdGVtcywgdGl0bGVFbGVtZW50LCBzaG91bGRPdmVyZmxvd10pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc2hvdWxkT3ZlcmZsb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgX3NvcnRlZEJ5UHJpb3JpdHlBbmRHcm91cEl0ZW1zID0gdGhpcy5fZ2V0U29ydGVkQnlQcmlvcml0eUFuZEdyb3VwSXRlbXModG9vbGJhckl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3dJdGVtczogVG9vbGJhckl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBfc29ydGVkQnlQcmlvcml0eUFuZEdyb3VwSXRlbXMucmVkdWNlKChfY29udGVudFdpZHRoLCB0b29sYmFySXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbVdpZHRoID0gdG9vbGJhckl0ZW0ud2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtUHJpb3JpdHkgPSB0b29sYmFySXRlbS5wcmlvcml0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZEl0ZW1CZVJlbW92ZWRCeVdpZHRoID0gaXRlbVdpZHRoICsgX2NvbnRlbnRXaWR0aCA+IHRvb2xiYXJXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZEFsd2F5c0JlSW5PdmVyZmxvdyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVByaW9yaXR5ID09PSBPdmVyZmxvd1ByaW9yaXR5RW51bS5BTFdBWVMgfHwgdGhpcy5mb3JjZU92ZXJmbG93O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkTmV2ZXJCZUluT3ZlcmZsb3cgPSBpdGVtUHJpb3JpdHkgPT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLk5FVkVSO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzaG91bGRJdGVtQmVSZW1vdmVkQnlXaWR0aCAmJiAhc2hvdWxkTmV2ZXJCZUluT3ZlcmZsb3cpIHx8IHNob3VsZEFsd2F5c0JlSW5PdmVyZmxvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93SXRlbXMucHVzaCh0b29sYmFySXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZEFsd2F5c0JlSW5PdmVyZmxvdyA/IF9jb250ZW50V2lkdGggOiBNQVhfQ09OVEVOVF9TSVpFO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRlbnRXaWR0aCArIGl0ZW1XaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgdGl0bGVFbGVtZW50Py5jbGllbnRXaWR0aCB8fCAwKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gSGlkZSBvcnBoYW5zXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdG9vbGJhckl0ZW0gb2Ygb3ZlcmZsb3dJdGVtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBlZENvbGxlY3Rpb24gPSB0aGlzLl9nZXRHcm91cGVkQ29sbGVjdGlvbih0b29sYmFySXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0aWVzID0gdGhpcy5fZ2V0R3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eShncm91cGVkQ29sbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRvb2xiYXJJdGVtLmdyb3VwO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbVByaW9yaXR5ID0gdG9vbGJhckl0ZW0ucHJpb3JpdHk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXAgIT09IDAgJiYgaXRlbVByaW9yaXR5ICE9PSBPdmVyZmxvd1ByaW9yaXR5RW51bS5ESVNBUFBFQVIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtc0Zyb21DdXJyZW50R3JvdXAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9nZXRFbGVtZW50c0Zyb21DdXJyZW50R3JvdXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwZWRDb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0aWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfHwgW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNGcm9tQ3VycmVudEdyb3VwLmZvckVhY2goKGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG92ZXJmbG93SXRlbXMuaW5kZXhPZihpKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93SXRlbXMucHVzaChpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdmVyZmxvd0l0ZW1zLnNvcnQoKGEsIGIpID0+IHRoaXMuX3NvcnRQcmlvcml0aWVzKGEucHJpb3JpdHksIGIucHJpb3JpdHkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5vdmVyZmxvd0l0ZW1zJC5zdWJzY3JpYmUoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm92ZXJmbG93bkl0ZW1zID0gaXRlbXM7XG4gICAgICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXNlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGl0bGVDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudGl0bGVDb21wb25lbnQuZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdmZC10b29sYmFyX190aXRsZScpO1xuICAgICAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQ2hhbmdlIGRldGVjdGlvbiByZWZlcmVuY2UgKi9cbiAgICBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgZWxlbWVudFJlZigpOiBFbGVtZW50UmVmIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbGJhcjtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHRyaWdnZXJpbmcgY29sbGFwc2libGUgdG9vbGJhciAgKi9cbiAgICB1cGRhdGVDb2xsYXBzaWJsZUl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZWZyZXNoT3ZlcmZsb3ckLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBHZXQgZ3JvdXAgbnVtYmVyIHdpdGggdGhlIGxvd2VzdCBwcmlvcml0eS5cbiAgICAgKiAgVXNlcyBmb3IgZGV0ZWN0aW5nIGEgZ3JvdXAgb2YgZWxlbWVudHMgd2hpY2ggd291bGQgYmUgaGlkZGVuIGZyb20gdGhlIHRvb2xiYXIuXG4gICAgICogICovXG4gICAgcHJpdmF0ZSBfZ2V0TG93ZXN0UHJpb3JpdHlGcm9tR3JvdXAoXG4gICAgICAgIGl0ZW1Hcm91cDogbnVtYmVyLFxuICAgICAgICBncm91cGVkQ29sbGVjdGlvblByaW9yaXR5PzogUmVjb3JkPG51bWJlciwgT3ZlcmZsb3dQcmlvcml0eT5cbiAgICApOiBudW1iZXIge1xuICAgICAgICBjb25zdCBwcmlvcml0eSA9IGdyb3VwZWRDb2xsZWN0aW9uUHJpb3JpdHk7XG4gICAgICAgIGlmICghcHJpb3JpdHkgfHwgIU9WRVJGTE9XX1BSSU9SSVRZX1NDT1JFLmdldChwcmlvcml0eVtpdGVtR3JvdXBdKSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1Hcm91cDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdyb3VwcyA9IE9iamVjdC5rZXlzKHByaW9yaXR5KTtcblxuICAgICAgICByZXR1cm4gZ3JvdXBzLnJlZHVjZSgobG93ZXN0R3JvdXAsIGN1cnJlbnRHcm91cCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbG93ZXN0R3JvdXBQcmlvcml0eSA9IHByaW9yaXR5W2xvd2VzdEdyb3VwXTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRHcm91cFByaW9yaXR5ID0gcHJpb3JpdHlbY3VycmVudEdyb3VwXTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQoY3VycmVudEdyb3VwUHJpb3JpdHkpISA8IE9WRVJGTE9XX1BSSU9SSVRZX1NDT1JFLmdldChsb3dlc3RHcm91cFByaW9yaXR5KSFcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiArY3VycmVudEdyb3VwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbG93ZXN0R3JvdXA7XG4gICAgICAgIH0sIGl0ZW1Hcm91cCBhcyBudW1iZXIpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RWxlbWVudHNGcm9tQ3VycmVudEdyb3VwKFxuICAgICAgICBpdGVtR3JvdXA6IG51bWJlcixcbiAgICAgICAgZ3JvdXBlZENvbGxlY3Rpb24/OiBSZWNvcmQ8bnVtYmVyLCBUb29sYmFySXRlbVtdPixcbiAgICAgICAgZ3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eT86IFJlY29yZDxudW1iZXIsIE92ZXJmbG93UHJpb3JpdHk+XG4gICAgKTogVG9vbGJhckl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGxvd2VzdFByaW9yaXR5RnJvbUdyb3VwID0gdGhpcy5fZ2V0TG93ZXN0UHJpb3JpdHlGcm9tR3JvdXAoaXRlbUdyb3VwLCBncm91cGVkQ29sbGVjdGlvblByaW9yaXR5KTtcbiAgICAgICAgaWYgKCFncm91cGVkQ29sbGVjdGlvbiB8fCAhZ3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpdGVtc1RvUmVtb3ZlID0gZ3JvdXBlZENvbGxlY3Rpb25bbG93ZXN0UHJpb3JpdHlGcm9tR3JvdXBdO1xuXG4gICAgICAgIGRlbGV0ZSBncm91cGVkQ29sbGVjdGlvbltsb3dlc3RQcmlvcml0eUZyb21Hcm91cF07XG4gICAgICAgIGRlbGV0ZSBncm91cGVkQ29sbGVjdGlvblByaW9yaXR5W2xvd2VzdFByaW9yaXR5RnJvbUdyb3VwXTtcblxuICAgICAgICBpZiAobG93ZXN0UHJpb3JpdHlGcm9tR3JvdXAgIT09IGl0ZW1Hcm91cCkge1xuICAgICAgICAgICAgaXRlbXNUb1JlbW92ZSA9IFsuLi5pdGVtc1RvUmVtb3ZlLCAuLi5ncm91cGVkQ29sbGVjdGlvbltpdGVtR3JvdXBdXTtcbiAgICAgICAgICAgIGRlbGV0ZSBncm91cGVkQ29sbGVjdGlvbltpdGVtR3JvdXBdO1xuICAgICAgICAgICAgZGVsZXRlIGdyb3VwZWRDb2xsZWN0aW9uUHJpb3JpdHlbaXRlbUdyb3VwXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtc1RvUmVtb3ZlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEdldCB0aGUgb2JqZWN0IHdpdGggZ3JvdXBlZCBhcnJheXMgb2YgZWxlbWVudHMuICovXG4gICAgcHJpdmF0ZSBfZ2V0R3JvdXBlZENvbGxlY3Rpb24odG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbVtdKTogUmVjb3JkPG51bWJlciwgVG9vbGJhckl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gdG9vbGJhckl0ZW1zLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtUHJpbyA9IGl0ZW0ucHJpb3JpdHk7XG4gICAgICAgICAgICBjb25zdCBpdGVtR3JvdXAgPSBpdGVtLmdyb3VwO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGl0ZW1QcmlvID09PSBPdmVyZmxvd1ByaW9yaXR5RW51bS5ORVZFUiB8fFxuICAgICAgICAgICAgICAgIGl0ZW1QcmlvID09PSBPdmVyZmxvd1ByaW9yaXR5RW51bS5BTFdBWVMgfHxcbiAgICAgICAgICAgICAgICBpdGVtR3JvdXAgPT09IDBcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWFjY1tpdGVtR3JvdXBdKSB7XG4gICAgICAgICAgICAgICAgYWNjW2l0ZW1Hcm91cF0gPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjY1tpdGVtR3JvdXBdLnB1c2goaXRlbSk7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gR2V0IHRoZSBvYmplY3Qgd2l0aCB0aGUgaGlnaGVzdCBwcmlvcml0eSBmb3IgZWFjaCBncm91cCBvZiBlbGVtZW50cy4gKi9cbiAgICBwcml2YXRlIF9nZXRHcm91cGVkQ29sbGVjdGlvblByaW9yaXR5KFxuICAgICAgICBncm91cGVkQ29sbGVjdGlvbjogUmVjb3JkPG51bWJlciwgVG9vbGJhckl0ZW1bXT5cbiAgICApOiBSZWNvcmQ8bnVtYmVyLCBPdmVyZmxvd1ByaW9yaXR5PiB7XG4gICAgICAgIGNvbnN0IGdyb3VwcyA9IE9iamVjdC5rZXlzKGdyb3VwZWRDb2xsZWN0aW9uKTtcblxuICAgICAgICByZXR1cm4gZ3JvdXBzLnJlZHVjZSgoYWNjLCBpdGVtR3JvdXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNvcnRlZFByaW9yaXRpZXMgPSBncm91cGVkQ29sbGVjdGlvbiFbaXRlbUdyb3VwXVxuICAgICAgICAgICAgICAgIC5tYXAoKGkpID0+IGkucHJpb3JpdHkpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocHJpbykgPT4gcHJpbyAhPT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uQUxXQVlTICYmIHByaW8gIT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLk5FVkVSKVxuICAgICAgICAgICAgICAgIC5zb3J0KHRoaXMuX3NvcnRQcmlvcml0aWVzKTtcblxuICAgICAgICAgICAgYWNjW2l0ZW1Hcm91cF0gPSBzb3J0ZWRQcmlvcml0aWVzWzBdO1xuXG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU29ydCBwcmlvcml0aWVzIG9mIGVsZW1lbnRzL2dyb3Vwcy4gKi9cbiAgICBwcml2YXRlIF9zb3J0UHJpb3JpdGllcyhhOiBPdmVyZmxvd1ByaW9yaXR5LCBiOiBPdmVyZmxvd1ByaW9yaXR5KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE9WRVJGTE9XX1BSSU9SSVRZX1NDT1JFLmdldChiKSEgLSBPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQoYSkhO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNvcnQgYnkgZ3JvdXAgYW5kIHByaW9yaXR5IGFuZCBpbml0aWFsIHBvc2l0aW9uICovXG4gICAgcHJpdmF0ZSBfZ2V0U29ydGVkQnlQcmlvcml0eUFuZEdyb3VwSXRlbXModG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbVtdKTogVG9vbGJhckl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IG5vdFNvcnRlZCA9IHRvb2xiYXJJdGVtcy5tYXAoKGVsZW1lbnQsIGluZGV4KSA9PiAoeyBlbGVtZW50LCBpbmRleCB9KSk7XG5cbiAgICAgICAgY29uc3QgZ3JvdXBzID0gbm90U29ydGVkLnJlZHVjZSgoZ3IsIGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGxldCBncm91cElkID0gaXRlbS5lbGVtZW50Lmdyb3VwO1xuICAgICAgICAgICAgY29uc3QgaXRlbVByaW8gPSBpdGVtLmVsZW1lbnQucHJpb3JpdHk7XG4gICAgICAgICAgICBpZiAoaXRlbVByaW8gPT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLk5FVkVSIHx8IGl0ZW1QcmlvID09PSBPdmVyZmxvd1ByaW9yaXR5RW51bS5BTFdBWVMpIHtcbiAgICAgICAgICAgICAgICBncm91cElkID0gMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFncltncm91cElkXSkge1xuICAgICAgICAgICAgICAgIGdyW2dyb3VwSWRdID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdyW2dyb3VwSWRdLnB1c2goaXRlbSk7XG5cbiAgICAgICAgICAgIHJldHVybiBncjtcbiAgICAgICAgfSwge30pO1xuXG4gICAgICAgIGNvbnN0IGdyb3VwSWRzID0gT2JqZWN0LmtleXMoZ3JvdXBzKVxuICAgICAgICAgICAgLm1hcCgoZykgPT4gcGFyc2VJbnQoZywgMTApKVxuICAgICAgICAgICAgLmZpbHRlcigoZykgPT4gZyAhPT0gMCk7XG5cbiAgICAgICAgcmV0dXJuIGdyb3VwSWRzXG4gICAgICAgICAgICAubWFwKChnKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG1pbkluZGV4ID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgICAgICAgICAgICAgbGV0IG1heFByaW9yaXR5ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZ3JvdXBzW2ddKSB7XG4gICAgICAgICAgICAgICAgICAgIG1pbkluZGV4ID0gTWF0aC5taW4obWluSW5kZXgsIGl0ZW0uaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBtYXhQcmlvcml0eSA9IE1hdGgubWF4KFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4UHJpb3JpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICBPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQoaXRlbS5lbGVtZW50LnByaW9yaXR5KSA/PyAtSW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4geyBncm91cDogZ3JvdXBzW2ddLm1hcCgoeyBlbGVtZW50IH0pID0+IGVsZW1lbnQpLCBtaW5JbmRleCwgbWF4UHJpb3JpdHkgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY29uY2F0KFxuICAgICAgICAgICAgICAgICFncm91cHNbMF1cbiAgICAgICAgICAgICAgICAgICAgPyBbXVxuICAgICAgICAgICAgICAgICAgICA6IGdyb3Vwc1swXS5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiBbaXRlbS5lbGVtZW50XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4UHJpb3JpdHk6IE9WRVJGTE9XX1BSSU9SSVRZX1NDT1JFLmdldChpdGVtLmVsZW1lbnQucHJpb3JpdHkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5JbmRleDogaXRlbS5pbmRleFxuICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubWF4UHJpb3JpdHkgLSBhLm1heFByaW9yaXR5IHx8IGEubWluSW5kZXggLSBiLm1pbkluZGV4KVxuICAgICAgICAgICAgLnJlZHVjZSgoYXJyLCBpKSA9PiBhcnIuY29uY2F0KGkuZ3JvdXApLCBbXSk7XG4gICAgfVxufVxuIiwiPGRpdiAjdG9vbGJhciBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbY2xhc3MuZmQtdG9vbGJhci0tY296eV09XCJfY29udGVudERlbnNpdHlPYnNlcnZlci5pc0NvenkkIHwgYXN5bmNcIj5cbiAgICA8aDQgKm5nSWY9XCJ0aXRsZVwiIGNsYXNzPVwiZmQtdGl0bGUgZmQtdGl0bGUtLWg0IGZkLXRvb2xiYXJfX3RpdGxlXCIgW2lkXT1cInRpdGxlSWRcIiAjdGl0bGVFbGVtZW50Pnt7IHRpdGxlIH19PC9oND5cblxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvdmVyZmxvd25JdGVtcy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxmZC10b29sYmFyLXNwYWNlcj48L2ZkLXRvb2xiYXItc3BhY2VyPlxuICAgICAgICA8ZmQtdG9vbGJhci1zZXBhcmF0b3I+PC9mZC10b29sYmFyLXNlcGFyYXRvcj5cbiAgICAgICAgPGZkLXBvcG92ZXIgcGxhY2VtZW50PVwiYm90dG9tLWVuZFwiIFtub0Fycm93XT1cInRydWVcIiBjbGFzcz1cImZkLXBvcG92ZXJcIj5cbiAgICAgICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJNb3JlXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk1vcmVcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJvdmVyZmxvd1wiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG5cbiAgICAgICAgICAgIDxmZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLXRvb2xiYXJfX292ZXJmbG93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG92ZXJmbG93ZWRJdGVtIG9mIG92ZXJmbG93bkl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmRrLWR5bmFtaWMtcG9ydGFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RvbUVsZW1lbnRdPVwib3ZlcmZsb3dlZEl0ZW0uZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwib3ZlcmZsb3dlZEl0ZW0ucHJpb3JpdHkgPT09ICdkaXNhcHBlYXInID8gJ25vbmUnIDogJ2ZsZXgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZmxleC1kaXJlY3Rpb25dPVwib3ZlcmZsb3dlZEl0ZW0ucHJpb3JpdHkgPT09ICdkaXNhcHBlYXInID8gdW5kZWZpbmVkIDogJ2NvbHVtbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mZGstZHluYW1pYy1wb3J0YWw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgIDwvZmQtcG9wb3Zlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBSUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx5QkFBeUIsRUFBcUIsTUFBTSw4QkFBOEIsQ0FBQztBQUU1RixPQUFPLEVBQ0gsYUFBYSxFQUViLHVCQUF1QixFQUV2QixxQkFBcUIsRUFDckIsUUFBUSxFQUNYLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUNILGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsK0JBQStCLEVBQ2xDLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7QUFFaEUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLE1BQU0sY0FBYyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdB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QUFDLENBQUM7SUFDckQsQ0FBQzs4R0FqWVEsZ0JBQWdCLDhLQTZIVyx5QkFBeUI7a0dBN0hwRCxnQkFBZ0IsbVJBTmQ7WUFDUCwrQkFBK0IsQ0FBQztnQkFDNUIscUJBQXFCLEVBQUUsa0JBQWtCLENBQUMsT0FBTzthQUNwRCxDQUFDO1NBQ0wsc0VBa0ZhLFVBQVUscUdBSlUsV0FBVyxvT0MvSWpELG9rREFtQ0E7O0FEb0tJO0lBREMsYUFBYTs7Ozs4REFVYjsyRkE3SVEsZ0JBQWdCO2tCQVo1QixTQUFTOytCQUNJLFlBQVksaUJBR1AsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUCwrQkFBK0IsQ0FBQzs0QkFDNUIscUJBQXFCLEVBQUUsa0JBQWtCLENBQUMsT0FBTzt5QkFDcEQsQ0FBQztxQkFDTDs7MEJBK0hJLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMseUJBQXlCOzRDQXhIN0QsT0FBTztzQkFETixLQUFLO2dCQU1OLEtBQUs7c0JBREosS0FBSztnQkFPRixjQUFjO3NCQURqQixLQUFLO2dCQWVOLE1BQU07c0JBREwsS0FBSztnQkFLRixRQUFRO3NCQURYLEtBQUs7Z0JBWU4sS0FBSztzQkFESixLQUFLO2dCQU9OLE1BQU07c0JBREwsS0FBSztnQkFPTixXQUFXO3NCQURWLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUztnQkFLcEIsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGNBQWM7Z0JBS3pCLFlBQVk7c0JBRFgsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDO2dCQUsxQyxjQUFjO3NCQURqQixZQUFZO3VCQUFDLFVBQVU7Z0JBb0R4QixzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNraXBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERZTkFNSUNfUEFHRV9IRUFERVJfVE9LRU4sIER5bmFtaWNQYWdlSGVhZGVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5cbmltcG9ydCB7XG4gICAgYXBwbHlDc3NDbGFzcyxcbiAgICBDc3NDbGFzc0J1aWxkZXIsXG4gICAgT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUsXG4gICAgT3ZlcmZsb3dQcmlvcml0eSxcbiAgICBSZXNpemVPYnNlcnZlclNlcnZpY2UsXG4gICAgd2Fybk9uY2Vcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGl0bGVUb2tlbiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQge1xuICAgIENvbnRlbnREZW5zaXR5TW9kZSxcbiAgICBDb250ZW50RGVuc2l0eU9ic2VydmVyLFxuICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnNcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBUb29sYmFySXRlbSB9IGZyb20gJy4vYWJzdHJhY3QtdG9vbGJhci1pdGVtLmNsYXNzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuY29uc3QgRUxFTUVOVF9NQVJHSU4gPSA4O1xuY29uc3QgT1ZFUkZMT1dfU1BBQ0UgPSA1MCArIDIgKiBFTEVNRU5UX01BUkdJTjtcbmNvbnN0IE1BWF9DT05URU5UX1NJWkUgPSA5OTk5OTk5OTtcblxuZXhwb3J0IHR5cGUgVG9vbGJhclR5cGUgPSAnc29saWQnIHwgJ3RyYW5zcGFyZW50JyB8ICdhdXRvJyB8ICdpbmZvJztcblxuZXhwb3J0IGNvbnN0IGVudW0gT3ZlcmZsb3dQcmlvcml0eUVudW0ge1xuICAgIEFMV0FZUyA9ICdhbHdheXMnLFxuICAgIE5FVkVSID0gJ25ldmVyJyxcbiAgICBMT1cgPSAnbG93JyxcbiAgICBISUdIID0gJ2hpZ2gnLFxuICAgIERJU0FQUEVBUiA9ICdkaXNhcHBlYXInXG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtdG9vbGJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rvb2xiYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Rvb2xiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKHtcbiAgICAgICAgICAgIGRlZmF1bHRDb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1RcbiAgICAgICAgfSlcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRvb2xiYXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkLCBDc3NDbGFzc0J1aWxkZXIsIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIFRoZSBJRCBvZiB0aGUgdG9vbGJhciB0aXRsZVxuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICB0aXRsZUlkOiBzdHJpbmc7XG5cbiAgICAvKiogUHJvcGVydHkgYWxsb3dzIHVzZXIgdG8gcGFzcyBhZGRpdGlvbmFsIGNsYXNzXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjbGFzczogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgaWYgb3ZlcmZsb3cgYnV0dG9uIHNob3VsZCBiZSB2aXNpYmxlXG4gICAgICogRGVmYXVsdCB2YWx1ZTogZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzaG91bGRPdmVyZmxvdyh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2hvdWxkT3ZlcmZsb3cgPSB2YWw7XG4gICAgICAgIHRoaXMuc2hvdWxkT3ZlcmZsb3ckLm5leHQodmFsKTtcbiAgICB9XG5cbiAgICBnZXQgc2hvdWxkT3ZlcmZsb3coKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG91bGRPdmVyZmxvdztcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiB0b29sYmFyXG4gICAgICogQXZhaWxhYmxlIG9wdGlvbnM6ICdzb2xpZCcgfCAndHJhbnNwYXJlbnQnIHwgJ2F1dG8nIHwgJ2luZm8nXG4gICAgICogRGVmYXVsdCB2YWx1ZTogJ3NvbGlkJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmRUeXBlOiBUb29sYmFyVHlwZSA9ICdzb2xpZCc7XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBoYXNUaXRsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB3YXJuT25jZSgnUHJvcGVydHkgaGFzVGl0bGUgaXMgZGVwcmVjYXRlZC4gJyk7XG4gICAgICAgIHRoaXMuX2hhc1RpdGxlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGhhc1RpdGxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzVGl0bGU7XG4gICAgfVxuXG4gICAgLyoqIFRoZSB0aXRsZSBmb3IgdGhlIHRvb2xiYXIuICovXG4gICAgQElucHV0KClcbiAgICB0aXRsZTogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgaWYgdG9vbGJhciBzaG91bGQgaGFzIGFjdGl2ZSBzdGF0ZSAob25seSB3aGVuIGZkVHlwZSA9PSAnaW5mbycpXG4gICAgICogRGVmYXVsdCB2YWx1ZTogZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgLyoqIERldGVybWluZXMgaWYgdG9vbGJhciBzaG91bGQgY2xlYXIgYm9yZGVyIGJvdHRvbVxuICAgICAqIERlZmF1bHQgdmFsdWU6IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjbGVhckJvcmRlciA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgYWxsIGl0ZW1zIHNob3VsZCBiZSBpbnNpZGUgb3ZlcmZsb3cgKi9cbiAgICBASW5wdXQoKVxuICAgIGZvcmNlT3ZlcmZsb3cgPSBmYWxzZTtcblxuICAgIC8qKiBUYWJpbmRleCBvZiB0aGUgdG9vbGJhciBlbGVtZW50LCB0byBiZSB1c2VkIHdoZW4gZmRUeXBlPVwiaW5mb1wiICovXG4gICAgQElucHV0KClcbiAgICB0YWJpbmRleCA9IC0xO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCd0b29sYmFyJylcbiAgICB0b29sYmFyOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCd0aXRsZUVsZW1lbnQnKVxuICAgIHRpdGxlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSGVhZEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gVG9vbGJhckl0ZW0pKVxuICAgIHRvb2xiYXJJdGVtczogUXVlcnlMaXN0PFRvb2xiYXJJdGVtPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChUaXRsZVRva2VuKVxuICAgIHNldCB0aXRsZUNvbXBvbmVudCh0aXRsZTogVGl0bGVUb2tlbiB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fdGl0bGVDb21wb25lbnQkLm5leHQodGl0bGUpO1xuICAgIH1cblxuICAgIGdldCB0aXRsZUNvbXBvbmVudCgpOiBUaXRsZVRva2VuIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aXRsZUNvbXBvbmVudCQudmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvdmVyZmxvd0l0ZW1zJDogT2JzZXJ2YWJsZTxUb29sYmFySXRlbVtdPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb3ZlcmZsb3duSXRlbXM6IFRvb2xiYXJJdGVtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFzVGl0bGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGl0bGVDb21wb25lbnQkOiBCZWhhdmlvclN1YmplY3Q8VGl0bGVUb2tlbiB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUaXRsZVRva2VuIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hPdmVyZmxvdyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KHVuZGVmaW5lZCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF90b29sYmFyV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnRvb2xiYXIubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY2xpZW50V2lkdGggLSBPVkVSRkxPV19TUEFDRTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3VsZE92ZXJmbG93ID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpc2VkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgc2hvdWxkT3ZlcmZsb3ckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHJlYWRvbmx5IF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmOiBEZXN0cm95UmVmLFxuICAgICAgICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyU2VydmljZTogUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASW5qZWN0KERZTkFNSUNfUEFHRV9IRUFERVJfVE9LRU4pIHByaXZhdGUgX2R5bmFtaWNQYWdlSGVhZGVyPzogRHluYW1pY1BhZ2VIZWFkZXJcbiAgICApIHtcbiAgICAgICAgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAYXBwbHlDc3NDbGFzc1xuICAgIGJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgJ2ZkLXRvb2xiYXInLFxuICAgICAgICAgICAgYGZkLXRvb2xiYXItLSR7dGhpcy5mZFR5cGV9YCxcbiAgICAgICAgICAgIGAke3RoaXMuYWN0aXZlICYmIHRoaXMuZmRUeXBlID09PSAnaW5mbycgPyAnZmQtdG9vbGJhci0tYWN0aXZlJyA6ICcnfWAsXG4gICAgICAgICAgICBgJHt0aGlzLmhhc1RpdGxlIHx8IHRoaXMudGl0bGUgfHwgdGhpcy50aXRsZUNvbXBvbmVudCA/ICdmZC10b29sYmFyLS10aXRsZScgOiAnJ31gLFxuICAgICAgICAgICAgYCR7dGhpcy5jbGVhckJvcmRlciA/ICdmZC10b29sYmFyLS1jbGVhcicgOiAnJ31gLFxuICAgICAgICAgICAgYCR7dGhpcy5fZHluYW1pY1BhZ2VIZWFkZXIgPyAnZmQtZHluYW1pYy1wYWdlX190b29sYmFyJyA6ICcnfWBcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vdmVyZmxvd0l0ZW1zJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLnRvb2xiYXIubmF0aXZlRWxlbWVudCkucGlwZShtYXAoKCkgPT4gdGhpcy5fdG9vbGJhcldpZHRoKSksXG4gICAgICAgICAgICB0aGlzLnRvb2xiYXJJdGVtcy5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMudG9vbGJhckl0ZW1zKSxcbiAgICAgICAgICAgICAgICBtYXAoKHRvb2xiYXJJdGVtcykgPT4gdG9vbGJhckl0ZW1zLnRvQXJyYXkoKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aGlzLl90aXRsZUNvbXBvbmVudCQucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHRpdGxlQ29tcG9uZW50KTogSFRNTEVsZW1lbnQgfCBudWxsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aXRsZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGl0bGVFbGVtZW50Py5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aXRsZUNvbXBvbmVudC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aGlzLnNob3VsZE92ZXJmbG93JCxcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hPdmVyZmxvdyRcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3Rvb2xiYXJXaWR0aCwgdG9vbGJhckl0ZW1zLCB0aXRsZUVsZW1lbnQsIHNob3VsZE92ZXJmbG93XSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzaG91bGRPdmVyZmxvdykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBfc29ydGVkQnlQcmlvcml0eUFuZEdyb3VwSXRlbXMgPSB0aGlzLl9nZXRTb3J0ZWRCeVByaW9yaXR5QW5kR3JvdXBJdGVtcyh0b29sYmFySXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvdmVyZmxvd0l0ZW1zOiBUb29sYmFySXRlbVtdID0gW107XG4gICAgICAgICAgICAgICAgICAgIF9zb3J0ZWRCeVByaW9yaXR5QW5kR3JvdXBJdGVtcy5yZWR1Y2UoKF9jb250ZW50V2lkdGgsIHRvb2xiYXJJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtV2lkdGggPSB0b29sYmFySXRlbS53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1Qcmlvcml0eSA9IHRvb2xiYXJJdGVtLnByaW9yaXR5O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkSXRlbUJlUmVtb3ZlZEJ5V2lkdGggPSBpdGVtV2lkdGggKyBfY29udGVudFdpZHRoID4gdG9vbGJhcldpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkQWx3YXlzQmVJbk92ZXJmbG93ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtUHJpb3JpdHkgPT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLkFMV0FZUyB8fCB0aGlzLmZvcmNlT3ZlcmZsb3c7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGROZXZlckJlSW5PdmVyZmxvdyA9IGl0ZW1Qcmlvcml0eSA9PT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uTkVWRVI7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHNob3VsZEl0ZW1CZVJlbW92ZWRCeVdpZHRoICYmICFzaG91bGROZXZlckJlSW5PdmVyZmxvdykgfHwgc2hvdWxkQWx3YXlzQmVJbk92ZXJmbG93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dJdGVtcy5wdXNoKHRvb2xiYXJJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkQWx3YXlzQmVJbk92ZXJmbG93ID8gX2NvbnRlbnRXaWR0aCA6IE1BWF9DT05URU5UX1NJWkU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGVudFdpZHRoICsgaXRlbVdpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB0aXRsZUVsZW1lbnQ/LmNsaWVudFdpZHRoIHx8IDApO1xuICAgICAgICAgICAgICAgICAgICAvLyBIaWRlIG9ycGhhbnNcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB0b29sYmFySXRlbSBvZiBvdmVyZmxvd0l0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cGVkQ29sbGVjdGlvbiA9IHRoaXMuX2dldEdyb3VwZWRDb2xsZWN0aW9uKHRvb2xiYXJJdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cGVkQ29sbGVjdGlvblByaW9yaXRpZXMgPSB0aGlzLl9nZXRHcm91cGVkQ29sbGVjdGlvblByaW9yaXR5KGdyb3VwZWRDb2xsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdG9vbGJhckl0ZW0uZ3JvdXA7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtUHJpb3JpdHkgPSB0b29sYmFySXRlbS5wcmlvcml0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncm91cCAhPT0gMCAmJiBpdGVtUHJpb3JpdHkgIT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLkRJU0FQUEVBUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zRnJvbUN1cnJlbnRHcm91cCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2dldEVsZW1lbnRzRnJvbUN1cnJlbnRHcm91cChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBlZENvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cGVkQ29sbGVjdGlvblByaW9yaXRpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc0Zyb21DdXJyZW50R3JvdXAuZm9yRWFjaCgoaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3ZlcmZsb3dJdGVtcy5pbmRleE9mKGkpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dJdGVtcy5wdXNoKGkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG92ZXJmbG93SXRlbXMuc29ydCgoYSwgYikgPT4gdGhpcy5fc29ydFByaW9yaXRpZXMoYS5wcmlvcml0eSwgYi5wcmlvcml0eSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm92ZXJmbG93SXRlbXMkLnN1YnNjcmliZSgoaXRlbXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmZsb3duSXRlbXMgPSBpdGVtcztcbiAgICAgICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpc2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50aXRsZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy50aXRsZUNvbXBvbmVudC5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2ZkLXRvb2xiYXJfX3RpdGxlJyk7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBDaGFuZ2UgZGV0ZWN0aW9uIHJlZmVyZW5jZSAqL1xuICAgIGRldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBlbGVtZW50UmVmKCk6IEVsZW1lbnRSZWYge1xuICAgICAgICByZXR1cm4gdGhpcy50b29sYmFyO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdHJpZ2dlcmluZyBjb2xsYXBzaWJsZSB0b29sYmFyICAqL1xuICAgIHVwZGF0ZUNvbGxhcHNpYmxlSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hPdmVyZmxvdyQubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEdldCBncm91cCBudW1iZXIgd2l0aCB0aGUgbG93ZXN0IHByaW9yaXR5LlxuICAgICAqICBVc2VzIGZvciBkZXRlY3RpbmcgYSBncm91cCBvZiBlbGVtZW50cyB3aGljaCB3b3VsZCBiZSBoaWRkZW4gZnJvbSB0aGUgdG9vbGJhci5cbiAgICAgKiAgKi9cbiAgICBwcml2YXRlIF9nZXRMb3dlc3RQcmlvcml0eUZyb21Hcm91cChcbiAgICAgICAgaXRlbUdyb3VwOiBudW1iZXIsXG4gICAgICAgIGdyb3VwZWRDb2xsZWN0aW9uUHJpb3JpdHk/OiBSZWNvcmQ8bnVtYmVyLCBPdmVyZmxvd1ByaW9yaXR5PlxuICAgICk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHByaW9yaXR5ID0gZ3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eTtcbiAgICAgICAgaWYgKCFwcmlvcml0eSB8fCAhT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUuZ2V0KHByaW9yaXR5W2l0ZW1Hcm91cF0pKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbUdyb3VwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMocHJpb3JpdHkpO1xuXG4gICAgICAgIHJldHVybiBncm91cHMucmVkdWNlKChsb3dlc3RHcm91cCwgY3VycmVudEdyb3VwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsb3dlc3RHcm91cFByaW9yaXR5ID0gcHJpb3JpdHlbbG93ZXN0R3JvdXBdO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEdyb3VwUHJpb3JpdHkgPSBwcmlvcml0eVtjdXJyZW50R3JvdXBdO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIE9WRVJGTE9XX1BSSU9SSVRZX1NDT1JFLmdldChjdXJyZW50R3JvdXBQcmlvcml0eSkhIDwgT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUuZ2V0KGxvd2VzdEdyb3VwUHJpb3JpdHkpIVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICtjdXJyZW50R3JvdXA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBsb3dlc3RHcm91cDtcbiAgICAgICAgfSwgaXRlbUdyb3VwIGFzIG51bWJlcik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRFbGVtZW50c0Zyb21DdXJyZW50R3JvdXAoXG4gICAgICAgIGl0ZW1Hcm91cDogbnVtYmVyLFxuICAgICAgICBncm91cGVkQ29sbGVjdGlvbj86IFJlY29yZDxudW1iZXIsIFRvb2xiYXJJdGVtW10+LFxuICAgICAgICBncm91cGVkQ29sbGVjdGlvblByaW9yaXR5PzogUmVjb3JkPG51bWJlciwgT3ZlcmZsb3dQcmlvcml0eT5cbiAgICApOiBUb29sYmFySXRlbVtdIHtcbiAgICAgICAgY29uc3QgbG93ZXN0UHJpb3JpdHlGcm9tR3JvdXAgPSB0aGlzLl9nZXRMb3dlc3RQcmlvcml0eUZyb21Hcm91cChpdGVtR3JvdXAsIGdyb3VwZWRDb2xsZWN0aW9uUHJpb3JpdHkpO1xuICAgICAgICBpZiAoIWdyb3VwZWRDb2xsZWN0aW9uIHx8ICFncm91cGVkQ29sbGVjdGlvblByaW9yaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGl0ZW1zVG9SZW1vdmUgPSBncm91cGVkQ29sbGVjdGlvbltsb3dlc3RQcmlvcml0eUZyb21Hcm91cF07XG5cbiAgICAgICAgZGVsZXRlIGdyb3VwZWRDb2xsZWN0aW9uW2xvd2VzdFByaW9yaXR5RnJvbUdyb3VwXTtcbiAgICAgICAgZGVsZXRlIGdyb3VwZWRDb2xsZWN0aW9uUHJpb3JpdHlbbG93ZXN0UHJpb3JpdHlGcm9tR3JvdXBdO1xuXG4gICAgICAgIGlmIChsb3dlc3RQcmlvcml0eUZyb21Hcm91cCAhPT0gaXRlbUdyb3VwKSB7XG4gICAgICAgICAgICBpdGVtc1RvUmVtb3ZlID0gWy4uLml0ZW1zVG9SZW1vdmUsIC4uLmdyb3VwZWRDb2xsZWN0aW9uW2l0ZW1Hcm91cF1dO1xuICAgICAgICAgICAgZGVsZXRlIGdyb3VwZWRDb2xsZWN0aW9uW2l0ZW1Hcm91cF07XG4gICAgICAgICAgICBkZWxldGUgZ3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eVtpdGVtR3JvdXBdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW1zVG9SZW1vdmU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gR2V0IHRoZSBvYmplY3Qgd2l0aCBncm91cGVkIGFycmF5cyBvZiBlbGVtZW50cy4gKi9cbiAgICBwcml2YXRlIF9nZXRHcm91cGVkQ29sbGVjdGlvbih0b29sYmFySXRlbXM6IFRvb2xiYXJJdGVtW10pOiBSZWNvcmQ8bnVtYmVyLCBUb29sYmFySXRlbVtdPiB7XG4gICAgICAgIHJldHVybiB0b29sYmFySXRlbXMucmVkdWNlKChhY2MsIGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1QcmlvID0gaXRlbS5wcmlvcml0eTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1Hcm91cCA9IGl0ZW0uZ3JvdXA7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgaXRlbVByaW8gPT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLk5FVkVSIHx8XG4gICAgICAgICAgICAgICAgaXRlbVByaW8gPT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLkFMV0FZUyB8fFxuICAgICAgICAgICAgICAgIGl0ZW1Hcm91cCA9PT0gMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYWNjW2l0ZW1Hcm91cF0pIHtcbiAgICAgICAgICAgICAgICBhY2NbaXRlbUdyb3VwXSA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWNjW2l0ZW1Hcm91cF0ucHVzaChpdGVtKTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBHZXQgdGhlIG9iamVjdCB3aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5IGZvciBlYWNoIGdyb3VwIG9mIGVsZW1lbnRzLiAqL1xuICAgIHByaXZhdGUgX2dldEdyb3VwZWRDb2xsZWN0aW9uUHJpb3JpdHkoXG4gICAgICAgIGdyb3VwZWRDb2xsZWN0aW9uOiBSZWNvcmQ8bnVtYmVyLCBUb29sYmFySXRlbVtdPlxuICAgICk6IFJlY29yZDxudW1iZXIsIE92ZXJmbG93UHJpb3JpdHk+IHtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZ3JvdXBlZENvbGxlY3Rpb24pO1xuXG4gICAgICAgIHJldHVybiBncm91cHMucmVkdWNlKChhY2MsIGl0ZW1Hcm91cCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc29ydGVkUHJpb3JpdGllcyA9IGdyb3VwZWRDb2xsZWN0aW9uIVtpdGVtR3JvdXBdXG4gICAgICAgICAgICAgICAgLm1hcCgoaSkgPT4gaS5wcmlvcml0eSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChwcmlvKSA9PiBwcmlvICE9PSBPdmVyZmxvd1ByaW9yaXR5RW51bS5BTFdBWVMgJiYgcHJpbyAhPT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uTkVWRVIpXG4gICAgICAgICAgICAgICAgLnNvcnQodGhpcy5fc29ydFByaW9yaXRpZXMpO1xuXG4gICAgICAgICAgICBhY2NbaXRlbUdyb3VwXSA9IHNvcnRlZFByaW9yaXRpZXNbMF07XG5cbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTb3J0IHByaW9yaXRpZXMgb2YgZWxlbWVudHMvZ3JvdXBzLiAqL1xuICAgIHByaXZhdGUgX3NvcnRQcmlvcml0aWVzKGE6IE92ZXJmbG93UHJpb3JpdHksIGI6IE92ZXJmbG93UHJpb3JpdHkpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUuZ2V0KGIpISAtIE9WRVJGTE9XX1BSSU9SSVRZX1NDT1JFLmdldChhKSE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU29ydCBieSBncm91cCBhbmQgcHJpb3JpdHkgYW5kIGluaXRpYWwgcG9zaXRpb24gKi9cbiAgICBwcml2YXRlIF9nZXRTb3J0ZWRCeVByaW9yaXR5QW5kR3JvdXBJdGVtcyh0b29sYmFySXRlbXM6IFRvb2xiYXJJdGVtW10pOiBUb29sYmFySXRlbVtdIHtcbiAgICAgICAgY29uc3Qgbm90U29ydGVkID0gdG9vbGJhckl0ZW1zLm1hcCgoZWxlbWVudCwgaW5kZXgpID0+ICh7IGVsZW1lbnQsIGluZGV4IH0pKTtcblxuICAgICAgICBjb25zdCBncm91cHMgPSBub3RTb3J0ZWQucmVkdWNlKChnciwgaXRlbSkgPT4ge1xuICAgICAgICAgICAgbGV0IGdyb3VwSWQgPSBpdGVtLmVsZW1lbnQuZ3JvdXA7XG4gICAgICAgICAgICBjb25zdCBpdGVtUHJpbyA9IGl0ZW0uZWxlbWVudC5wcmlvcml0eTtcbiAgICAgICAgICAgIGlmIChpdGVtUHJpbyA9PT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uTkVWRVIgfHwgaXRlbVByaW8gPT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLkFMV0FZUykge1xuICAgICAgICAgICAgICAgIGdyb3VwSWQgPSAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWdyW2dyb3VwSWRdKSB7XG4gICAgICAgICAgICAgICAgZ3JbZ3JvdXBJZF0gPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ3JbZ3JvdXBJZF0ucHVzaChpdGVtKTtcblxuICAgICAgICAgICAgcmV0dXJuIGdyO1xuICAgICAgICB9LCB7fSk7XG5cbiAgICAgICAgY29uc3QgZ3JvdXBJZHMgPSBPYmplY3Qua2V5cyhncm91cHMpXG4gICAgICAgICAgICAubWFwKChnKSA9PiBwYXJzZUludChnLCAxMCkpXG4gICAgICAgICAgICAuZmlsdGVyKChnKSA9PiBnICE9PSAwKTtcblxuICAgICAgICByZXR1cm4gZ3JvdXBJZHNcbiAgICAgICAgICAgIC5tYXAoKGcpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgbWluSW5kZXggPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgICAgICAgICAgICAgICBsZXQgbWF4UHJpb3JpdHkgPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBncm91cHNbZ10pIHtcbiAgICAgICAgICAgICAgICAgICAgbWluSW5kZXggPSBNYXRoLm1pbihtaW5JbmRleCwgaXRlbS5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIG1heFByaW9yaXR5ID0gTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhQcmlvcml0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIE9WRVJGTE9XX1BSSU9SSVRZX1NDT1JFLmdldChpdGVtLmVsZW1lbnQucHJpb3JpdHkpID8/IC1JbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB7IGdyb3VwOiBncm91cHNbZ10ubWFwKCh7IGVsZW1lbnQgfSkgPT4gZWxlbWVudCksIG1pbkluZGV4LCBtYXhQcmlvcml0eSB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jb25jYXQoXG4gICAgICAgICAgICAgICAgIWdyb3Vwc1swXVxuICAgICAgICAgICAgICAgICAgICA/IFtdXG4gICAgICAgICAgICAgICAgICAgIDogZ3JvdXBzWzBdLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IFtpdGVtLmVsZW1lbnRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhQcmlvcml0eTogT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUuZ2V0KGl0ZW0uZWxlbWVudC5wcmlvcml0eSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkluZGV4OiBpdGVtLmluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYi5tYXhQcmlvcml0eSAtIGEubWF4UHJpb3JpdHkgfHwgYS5taW5JbmRleCAtIGIubWluSW5kZXgpXG4gICAgICAgICAgICAucmVkdWNlKChhcnIsIGkpID0+IGFyci5jb25jYXQoaS5ncm91cCksIFtdKTtcbiAgICB9XG59XG4iLCI8ZGl2ICN0b29sYmFyIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiIFtjbGFzcy5mZC10b29sYmFyLS1jb3p5XT1cIl9jb250ZW50RGVuc2l0eU9ic2VydmVyLmlzQ296eSQgfCBhc3luY1wiPlxuICAgIDxoNCAqbmdJZj1cInRpdGxlXCIgY2xhc3M9XCJmZC10aXRsZSBmZC10aXRsZS0taDQgZmQtdG9vbGJhcl9fdGl0bGVcIiBbaWRdPVwidGl0bGVJZFwiICN0aXRsZUVsZW1lbnQ+e3sgdGl0bGUgfX08L2g0PlxuXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm92ZXJmbG93bkl0ZW1zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGZkLXRvb2xiYXItc3BhY2VyPjwvZmQtdG9vbGJhci1zcGFjZXI+XG4gICAgICAgIDxmZC10b29sYmFyLXNlcGFyYXRvcj48L2ZkLXRvb2xiYXItc2VwYXJhdG9yPlxuICAgICAgICA8ZmQtcG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b20tZW5kXCIgW25vQXJyb3ddPVwidHJ1ZVwiIGNsYXNzPVwiZmQtcG9wb3ZlclwiPlxuICAgICAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIk1vcmVcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiTW9yZVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBnbHlwaD1cIm92ZXJmbG93XCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2ZkLXBvcG92ZXItY29udHJvbD5cblxuICAgICAgICAgICAgPGZkLXBvcG92ZXItYm9keT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtdG9vbGJhcl9fb3ZlcmZsb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3ZlcmZsb3dlZEl0ZW0gb2Ygb3ZlcmZsb3duSXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZGstZHluYW1pYy1wb3J0YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZG9tRWxlbWVudF09XCJvdmVyZmxvd2VkSXRlbS5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJvdmVyZmxvd2VkSXRlbS5wcmlvcml0eSA9PT0gJ2Rpc2FwcGVhcicgPyAnbm9uZScgOiAnZmxleCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mbGV4LWRpcmVjdGlvbl09XCJvdmVyZmxvd2VkSXRlbS5wcmlvcml0eSA9PT0gJ2Rpc2FwcGVhcicgPyB1bmRlZmluZWQgOiAnY29sdW1uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Zkay1keW5hbWljLXBvcnRhbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICAgICAgPC9mZC1wb3BvdmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=