@fundamental-ngx/core 0.35.2-rc.2 → 0.35.2-rc.5

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 (105) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/package.json +1 -1
  6. package/bar/package.json +1 -1
  7. package/breadcrumb/package.json +1 -1
  8. package/busy-indicator/package.json +1 -1
  9. package/button/package.json +1 -1
  10. package/calendar/package.json +1 -1
  11. package/card/package.json +1 -1
  12. package/carousel/package.json +1 -1
  13. package/checkbox/package.json +1 -1
  14. package/combobox/package.json +1 -1
  15. package/date-picker/package.json +1 -1
  16. package/datetime/package.json +1 -1
  17. package/datetime-picker/package.json +1 -1
  18. package/dialog/package.json +1 -1
  19. package/dynamic-page/package.json +1 -1
  20. package/dynamic-side-content/package.json +1 -1
  21. package/esm2020/wizard/wizard.component.mjs +4 -3
  22. package/esm2020/wizard/wizard.module.mjs +5 -4
  23. package/facets/package.json +1 -1
  24. package/feed-input/package.json +1 -1
  25. package/feed-list-item/package.json +1 -1
  26. package/fesm2015/fundamental-ngx-core-wizard.mjs +7 -5
  27. package/fesm2015/fundamental-ngx-core-wizard.mjs.map +1 -1
  28. package/fesm2020/fundamental-ngx-core-wizard.mjs +7 -5
  29. package/fesm2020/fundamental-ngx-core-wizard.mjs.map +1 -1
  30. package/file-uploader/package.json +1 -1
  31. package/fixed-card-layout/package.json +1 -1
  32. package/flexible-column-layout/package.json +1 -1
  33. package/form/package.json +1 -1
  34. package/formatted-text/package.json +1 -1
  35. package/grid-list/package.json +1 -1
  36. package/icon/package.json +1 -1
  37. package/illustrated-message/package.json +1 -1
  38. package/infinite-scroll/package.json +1 -1
  39. package/info-label/package.json +1 -1
  40. package/inline-help/package.json +1 -1
  41. package/input-group/package.json +1 -1
  42. package/layout-grid/package.json +1 -1
  43. package/layout-panel/package.json +1 -1
  44. package/link/package.json +1 -1
  45. package/list/package.json +1 -1
  46. package/menu/package.json +1 -1
  47. package/message-box/package.json +1 -1
  48. package/message-strip/package.json +1 -1
  49. package/message-toast/package.json +1 -1
  50. package/micro-process-flow/package.json +1 -1
  51. package/mobile-mode/package.json +1 -1
  52. package/multi-input/package.json +1 -1
  53. package/nested-list/package.json +1 -1
  54. package/notification/package.json +1 -1
  55. package/object-identifier/package.json +1 -1
  56. package/object-marker/package.json +1 -1
  57. package/object-number/package.json +1 -1
  58. package/object-status/package.json +1 -1
  59. package/overflow-layout/package.json +12 -12
  60. package/package.json +1 -1
  61. package/pagination/package.json +1 -1
  62. package/panel/package.json +1 -1
  63. package/popover/package.json +1 -1
  64. package/product-switch/package.json +1 -1
  65. package/progress-indicator/package.json +1 -1
  66. package/quick-view/package.json +1 -1
  67. package/radio/package.json +1 -1
  68. package/rating-indicator/package.json +1 -1
  69. package/resizable-card-layout/package.json +1 -1
  70. package/scroll-spy/package.json +1 -1
  71. package/scrollbar/package.json +1 -1
  72. package/segmented-button/package.json +1 -1
  73. package/select/package.json +1 -1
  74. package/shared/package.json +1 -1
  75. package/shellbar/package.json +1 -1
  76. package/side-navigation/package.json +1 -1
  77. package/slider/package.json +1 -1
  78. package/split-button/package.json +1 -1
  79. package/splitter/package.json +1 -1
  80. package/status-indicator/package.json +1 -1
  81. package/step-input/package.json +1 -1
  82. package/switch/package.json +1 -1
  83. package/table/package.json +1 -1
  84. package/tabs/package.json +1 -1
  85. package/text/package.json +1 -1
  86. package/theming/package.json +1 -1
  87. package/tile/package.json +1 -1
  88. package/time/package.json +1 -1
  89. package/time-picker/package.json +1 -1
  90. package/timeline/package.json +1 -1
  91. package/title/package.json +1 -1
  92. package/token/package.json +1 -1
  93. package/toolbar/package.json +1 -1
  94. package/tree/package.json +1 -1
  95. package/upload-collection/package.json +1 -1
  96. package/utils/package.json +1 -1
  97. package/vertical-navigation/package.json +1 -1
  98. package/wizard/esm2020/wizard.component.mjs +4 -3
  99. package/wizard/esm2020/wizard.module.mjs +5 -4
  100. package/wizard/fesm2015/fundamental-ngx-core-wizard.mjs +7 -5
  101. package/wizard/fesm2015/fundamental-ngx-core-wizard.mjs.map +1 -1
  102. package/wizard/fesm2020/fundamental-ngx-core-wizard.mjs +7 -5
  103. package/wizard/fesm2020/fundamental-ngx-core-wizard.mjs.map +1 -1
  104. package/wizard/package.json +1 -1
  105. package/wizard/wizard.module.d.ts +2 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/action-bar",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/action-sheet",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/alert",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/avatar",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/avatar-group",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
package/bar/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/bar",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/breadcrumb",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/busy-indicator",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/button",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/calendar",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
package/card/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/card",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/carousel",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/checkbox",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/combobox",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/date-picker",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/datetime",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/datetime-picker",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/dialog",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/dynamic-page",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/dynamic-side-content",
3
- "version": "0.35.2-rc.2",
3
+ "version": "0.35.2-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -11,6 +11,7 @@ import * as i0 from "@angular/core";
11
11
  import * as i1 from "@fundamental-ngx/core/dialog";
12
12
  import * as i2 from "@angular/common";
13
13
  import * as i3 from "@fundamental-ngx/core/scroll-spy";
14
+ import * as i4 from "@angular/cdk/scrolling";
14
15
  export const STEP_MIN_WIDTH = 168;
15
16
  export const STEP_STACKED_TOP_CLASS = 'fd-wizard__step--stacked-top';
16
17
  export const STEP_STACKED_CLASS = 'fd-wizard__step--stacked';
@@ -478,7 +479,7 @@ WizardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
478
479
  provide: WIZARD,
479
480
  useExisting: WizardComponent
480
481
  }
481
- ], queries: [{ propertyName: "progressBar", first: true, predicate: WizardProgressBarDirective, descendants: true }, { propertyName: "steps", predicate: WizardStepComponent, descendants: true }, { propertyName: "wizardContent", predicate: WizardContentComponent }], viewQueries: [{ propertyName: "wrapperContainer", first: true, predicate: ["wrapperContainer"], descendants: true }], ngImport: i0, template: "<section class=\"fd-wizard\">\n <ng-content select=\"fd-wizard-navigation\"></ng-content>\n <div\n *ngIf=\"appendToWizard\"\n class=\"fd-wizard-container-wrapper\"\n #wrapperContainer\n fdScrollSpy\n [trackedTags]=\"['div']\"\n (spyChange)=\"scrollSpyChange($event)\"\n >\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n <div *ngIf=\"!appendToWizard\" class=\"fd-wizard-container-wrapper\">\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</section>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.1-rc.1\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-wizard{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;position:relative}.fd-wizard:before,.fd-wizard:after{box-sizing:inherit;font-size:inherit}.fd-wizard__navigation{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0}.fd-wizard__navigation:before,.fd-wizard__navigation:after{box-sizing:inherit;font-size:inherit}.fd-wizard__progress-bar{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;width:100%;height:4rem;display:table;padding-top:1rem;position:relative;table-layout:fixed;list-style-type:none;background:var(--sapObjectHeader_Background);box-shadow:var(--sapContent_HeaderShadow)}.fd-wizard__progress-bar:before,.fd-wizard__progress-bar:after{box-sizing:inherit;font-size:inherit}.fd-wizard__progress-bar--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__progress-bar--md,.fd-wizard__progress-bar--lg{padding-left:2rem;padding-right:2rem}.fd-wizard__progress-bar--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__step-wrapper{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;height:2rem}.fd-wizard__step-wrapper:before,.fd-wizard__step-wrapper:after{box-sizing:inherit;font-size:inherit}.fd-wizard__step{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;width:100%;min-width:10.5rem;position:relative;display:table-cell;vertical-align:top;box-sizing:content-box}.fd-wizard__step:before,.fd-wizard__step:after{box-sizing:inherit;font-size:inherit}.fd-wizard__step--completed .fd-wizard__label{color:var(--fdWizard_Completed_Step_Label_Color)}.fd-wizard__step--completed .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);color:var(--fdWizard_Completed_Step_Color);border:var(--fdWizard_Completed_Step_Border)}.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Completed_Step_Icon_Color)}.fd-wizard__step--current .fd-wizard__label{color:var(--fdWizard_Current_Step_Label_Color)}.fd-wizard__step--current .fd-wizard__step-indicator{border:var(--fdWizard_Current_Step_Border);position:relative;background:var(--fdWizard_Current_Step_Background_Color);color:var(--fdWizard_Current_Step_Color)}.fd-wizard__step--current .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--current .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Current_Step_Icon_Color)}.fd-wizard__step--current .fd-wizard__step-indicator:after{content:\"\";bottom:-1rem;left:-.1875rem;position:absolute;display:inline-block;width:calc(100% + .375rem);height:var(--fdWizard_Selection_Bar_Height);background:var(--fdWizard_Selection_Bar_Background);border-radius:.125rem .125rem 0 0;transition:all .125s ease-in}.fd-wizard__step--upcoming .fd-wizard__label,.fd-wizard__step--upcoming .fd-wizard__optional-text{color:var(--sapContent_LabelColor)}.fd-wizard__step--upcoming .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);border:.0625rem solid var(--sapList_BorderColor);color:var(--fdWizard_Upcoming_Step_Color)}.fd-wizard__step--upcoming .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--upcoming .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Upcoming_Step_Icon_Color)}.fd-wizard__step--upcoming .fd-wizard__step-container{cursor:default;pointer-events:none}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__label{color:var(--fdWizard_Completed_Step_Label_Color)}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);color:var(--fdWizard_Completed_Step_Color);border:var(--fdWizard_Completed_Step_Border)}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Completed_Step_Icon_Color)}.fd-wizard__step--no-label{min-width:4rem}.fd-wizard__step--no-label .fd-wizard__label-container{display:none}.fd-wizard__step--stacked-top.fd-wizard__step--stacked{min-width:4rem;width:4rem}.fd-wizard__step--stacked-top.fd-wizard__step--stacked .fd-wizard__connector{display:block;min-width:auto}.fd-wizard__step--stacked{width:.25rem;min-width:auto}.fd-wizard__step--stacked:last-child{padding-right:2.375rem}[dir=rtl] .fd-wizard__step--stacked:last-child,.fd-wizard__step--stacked:last-child[dir=rtl]{padding-right:0;padding-left:2.375rem}.fd-wizard__step--stacked .fd-wizard__connector,.fd-wizard__step--stacked .fd-wizard__label-container{display:none}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(1){z-index:9}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(2){z-index:8}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(3){z-index:7}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(4){z-index:6}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(5){z-index:5}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(6){z-index:4}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(7){z-index:3}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(8){z-index:2}.fd-wizard__step--active .fd-wizard__step-indicator{background:var(--sapActiveColor);border-color:var(--fdWizard_Active_Step_Border_Color);color:var(--fdWizard_Active_Step_Color)}.fd-wizard__step--active .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--active .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Active_Step_Icon_Color)}.fd-wizard__step-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;cursor:pointer}.fd-wizard__step-container:before,.fd-wizard__step-container:after{box-sizing:inherit;font-size:inherit}.fd-wizard__step-container:focus,.fd-wizard__step-container.is-focus{z-index:5;outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);outline-color:var(--sapContent_FocusColor)}.fd-wizard__step-indicator{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;border:0;display:flex;justify-content:center;align-items:center;border-radius:50%;min-width:2rem;min-height:2rem;width:2rem;height:2rem;margin:0;margin-left:.1875rem;margin-right:var(--fdWizard_Step_Indicator_Margin_Right)}.fd-wizard__step-indicator:before,.fd-wizard__step-indicator:after{box-sizing:inherit;font-size:inherit}[dir=rtl] .fd-wizard__step-indicator,.fd-wizard__step-indicator[dir=rtl]{margin-right:.1875rem;margin-left:var(--fdWizard_Step_Indicator_Margin_Right)}.fd-wizard__icon [class*=sap-icon],.fd-wizard__icon[class*=sap-icon]{color:inherit;background:inherit;font-size:inherit;border-radius:inherit;line-height:1;display:flex;justify-content:center;align-items:center;height:100%;font-size:var(--sapFontLargeSize)}.fd-wizard__label-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;flex-direction:column;max-width:100%;max-height:2rem;color:var(--sapContent_LabelColor);overflow:hidden}.fd-wizard__label-container:before,.fd-wizard__label-container:after{box-sizing:inherit;font-size:inherit}.fd-wizard__label-container--optional .fd-wizard__label{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-overflow:ellipsis;max-height:1rem}.fd-wizard__label{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-overflow:ellipsis;font-family:var(--fdWizard_Label_Font_Family);font-weight:var(--fdWizard_Label_Font_Weight);line-height:1rem;max-width:100%}.fd-wizard__label:before,.fd-wizard__label:after{box-sizing:inherit;font-size:inherit}.fd-wizard__optional-text{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-overflow:ellipsis;max-width:100%;font-size:var(--sapFontSmallSize);color:var(--sapContent_LabelColor)}.fd-wizard__optional-text:before,.fd-wizard__optional-text:after{box-sizing:inherit;font-size:inherit}.fd-wizard__connector{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;flex:1 1 auto;margin:.5rem;max-width:100%;min-width:1rem;border-bottom:.0625rem solid var(--sapList_BorderColor)}.fd-wizard__connector:before,.fd-wizard__connector:after{box-sizing:inherit;font-size:inherit}.fd-wizard__connector--active{border-bottom-color:var(--fdWizard_Connector_Active_Border_Color)}.fd-wizard__connector--branching{border-bottom-style:dashed}.fd-wizard__content{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;padding-top:1rem;width:100%;height:100%;background:var(--sapBackgroundColor)}.fd-wizard__content:before,.fd-wizard__content:after{box-sizing:inherit;font-size:inherit}.fd-wizard__content--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__content--md,.fd-wizard__content--lg{padding-left:2rem;padding-right:2rem}.fd-wizard__content--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__content--solid{background:var(--fdWizard_Content_Solid_Background)}.fd-wizard__content--list{background:var(--fdWizard_Content_List_Background)}.fd-wizard__content--transparent{background:var(--fdWizard_Content_Transparent_Background)}.fd-wizard__step-content-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;padding:var(--fdWizard_Step_Content_Container_Spacing);background-color:var(--fdWizard_Step_Content_Container_Background_Color);border-radius:var(--sapElement_BorderCornerRadius)}.fd-wizard__step-content-container:before,.fd-wizard__step-content-container:after{box-sizing:inherit;font-size:inherit}.fd-wizard__step-content-container--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__step-content-container--md,.fd-wizard__step-content-container--lg{padding-left:2rem;padding-right:2rem}.fd-wizard__step-content-container--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__next-step{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;margin-top:1rem}.fd-wizard__next-step:before,.fd-wizard__next-step:after{box-sizing:inherit;font-size:inherit}.fd-wizard__next-step--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__next-step--md,.fd-wizard__next-step--lg{padding-left:2rem;padding-right:2rem}.fd-wizard__next-step--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__next-step--floating{position:absolute;bottom:3.5rem}.fd-wizard__label,.fd-wizard__optional-text{display:block;display:-webkit-box}.fd-wizard-container-wrapper{overflow:auto}@media (max-width: 599px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:1rem;padding-right:1rem}}@media (min-width: 600px) and (max-width: 1439px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:2rem;padding-right:2rem}}@media (min-width: 1440px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:3rem;padding-right:3rem}}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ScrollSpyDirective, selector: "[fdScrollSpy]", inputs: ["trackedTags", "fireEmpty", "targetPercent", "targetOffset", "scrollSpyDisabled"], outputs: ["spyChange"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
482
+ ], queries: [{ propertyName: "progressBar", first: true, predicate: WizardProgressBarDirective, descendants: true }, { propertyName: "steps", predicate: WizardStepComponent, descendants: true }, { propertyName: "wizardContent", predicate: WizardContentComponent }], viewQueries: [{ propertyName: "wrapperContainer", first: true, predicate: ["wrapperContainer"], descendants: true }], ngImport: i0, template: "<section class=\"fd-wizard\">\n <ng-content select=\"fd-wizard-navigation\"></ng-content>\n <div\n *ngIf=\"appendToWizard\"\n class=\"fd-wizard-container-wrapper\"\n #wrapperContainer\n fdScrollSpy\n cdkScrollable\n [trackedTags]=\"['div']\"\n (spyChange)=\"scrollSpyChange($event)\"\n >\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n <div *ngIf=\"!appendToWizard\" cdkScrollable class=\"fd-wizard-container-wrapper\">\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</section>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.1-rc.1\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-wizard{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;position:relative}.fd-wizard:before,.fd-wizard:after{box-sizing:inherit;font-size:inherit}.fd-wizard__navigation{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0}.fd-wizard__navigation:before,.fd-wizard__navigation:after{box-sizing:inherit;font-size:inherit}.fd-wizard__progress-bar{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;width:100%;height:4rem;display:table;padding-top:1rem;position:relative;table-layout:fixed;list-style-type:none;background:var(--sapObjectHeader_Background);box-shadow:var(--sapContent_HeaderShadow)}.fd-wizard__progress-bar:before,.fd-wizard__progress-bar:after{box-sizing:inherit;font-size:inherit}.fd-wizard__progress-bar--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__progress-bar--md,.fd-wizard__progress-bar--lg{padding-left:2rem;padding-right:2rem}.fd-wizard__progress-bar--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__step-wrapper{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;height:2rem}.fd-wizard__step-wrapper:before,.fd-wizard__step-wrapper:after{box-sizing:inherit;font-size:inherit}.fd-wizard__step{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;width:100%;min-width:10.5rem;position:relative;display:table-cell;vertical-align:top;box-sizing:content-box}.fd-wizard__step:before,.fd-wizard__step:after{box-sizing:inherit;font-size:inherit}.fd-wizard__step--completed .fd-wizard__label{color:var(--fdWizard_Completed_Step_Label_Color)}.fd-wizard__step--completed .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);color:var(--fdWizard_Completed_Step_Color);border:var(--fdWizard_Completed_Step_Border)}.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Completed_Step_Icon_Color)}.fd-wizard__step--current .fd-wizard__label{color:var(--fdWizard_Current_Step_Label_Color)}.fd-wizard__step--current .fd-wizard__step-indicator{border:var(--fdWizard_Current_Step_Border);position:relative;background:var(--fdWizard_Current_Step_Background_Color);color:var(--fdWizard_Current_Step_Color)}.fd-wizard__step--current .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--current .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Current_Step_Icon_Color)}.fd-wizard__step--current .fd-wizard__step-indicator:after{content:\"\";bottom:-1rem;left:-.1875rem;position:absolute;display:inline-block;width:calc(100% + .375rem);height:var(--fdWizard_Selection_Bar_Height);background:var(--fdWizard_Selection_Bar_Background);border-radius:.125rem .125rem 0 0;transition:all .125s ease-in}.fd-wizard__step--upcoming .fd-wizard__label,.fd-wizard__step--upcoming .fd-wizard__optional-text{color:var(--sapContent_LabelColor)}.fd-wizard__step--upcoming .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);border:.0625rem solid var(--sapList_BorderColor);color:var(--fdWizard_Upcoming_Step_Color)}.fd-wizard__step--upcoming .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--upcoming .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Upcoming_Step_Icon_Color)}.fd-wizard__step--upcoming .fd-wizard__step-container{cursor:default;pointer-events:none}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__label{color:var(--fdWizard_Completed_Step_Label_Color)}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);color:var(--fdWizard_Completed_Step_Color);border:var(--fdWizard_Completed_Step_Border)}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Completed_Step_Icon_Color)}.fd-wizard__step--no-label{min-width:4rem}.fd-wizard__step--no-label .fd-wizard__label-container{display:none}.fd-wizard__step--stacked-top.fd-wizard__step--stacked{min-width:4rem;width:4rem}.fd-wizard__step--stacked-top.fd-wizard__step--stacked .fd-wizard__connector{display:block;min-width:auto}.fd-wizard__step--stacked{width:.25rem;min-width:auto}.fd-wizard__step--stacked:last-child{padding-right:2.375rem}[dir=rtl] .fd-wizard__step--stacked:last-child,.fd-wizard__step--stacked:last-child[dir=rtl]{padding-right:0;padding-left:2.375rem}.fd-wizard__step--stacked .fd-wizard__connector,.fd-wizard__step--stacked .fd-wizard__label-container{display:none}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(1){z-index:9}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(2){z-index:8}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(3){z-index:7}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(4){z-index:6}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(5){z-index:5}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(6){z-index:4}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(7){z-index:3}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(8){z-index:2}.fd-wizard__step--active .fd-wizard__step-indicator{background:var(--sapActiveColor);border-color:var(--fdWizard_Active_Step_Border_Color);color:var(--fdWizard_Active_Step_Color)}.fd-wizard__step--active .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--active .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Active_Step_Icon_Color)}.fd-wizard__step-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;cursor:pointer}.fd-wizard__step-container:before,.fd-wizard__step-container:after{box-sizing:inherit;font-size:inherit}.fd-wizard__step-container:focus,.fd-wizard__step-container.is-focus{z-index:5;outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);outline-color:var(--sapContent_FocusColor)}.fd-wizard__step-indicator{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;border:0;display:flex;justify-content:center;align-items:center;border-radius:50%;min-width:2rem;min-height:2rem;width:2rem;height:2rem;margin:0;margin-left:.1875rem;margin-right:var(--fdWizard_Step_Indicator_Margin_Right)}.fd-wizard__step-indicator:before,.fd-wizard__step-indicator:after{box-sizing:inherit;font-size:inherit}[dir=rtl] .fd-wizard__step-indicator,.fd-wizard__step-indicator[dir=rtl]{margin-right:.1875rem;margin-left:var(--fdWizard_Step_Indicator_Margin_Right)}.fd-wizard__icon [class*=sap-icon],.fd-wizard__icon[class*=sap-icon]{color:inherit;background:inherit;font-size:inherit;border-radius:inherit;line-height:1;display:flex;justify-content:center;align-items:center;height:100%;font-size:var(--sapFontLargeSize)}.fd-wizard__label-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;flex-direction:column;max-width:100%;max-height:2rem;color:var(--sapContent_LabelColor);overflow:hidden}.fd-wizard__label-container:before,.fd-wizard__label-container:after{box-sizing:inherit;font-size:inherit}.fd-wizard__label-container--optional .fd-wizard__label{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-overflow:ellipsis;max-height:1rem}.fd-wizard__label{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-overflow:ellipsis;font-family:var(--fdWizard_Label_Font_Family);font-weight:var(--fdWizard_Label_Font_Weight);line-height:1rem;max-width:100%}.fd-wizard__label:before,.fd-wizard__label:after{box-sizing:inherit;font-size:inherit}.fd-wizard__optional-text{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-overflow:ellipsis;max-width:100%;font-size:var(--sapFontSmallSize);color:var(--sapContent_LabelColor)}.fd-wizard__optional-text:before,.fd-wizard__optional-text:after{box-sizing:inherit;font-size:inherit}.fd-wizard__connector{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;flex:1 1 auto;margin:.5rem;max-width:100%;min-width:1rem;border-bottom:.0625rem solid var(--sapList_BorderColor)}.fd-wizard__connector:before,.fd-wizard__connector:after{box-sizing:inherit;font-size:inherit}.fd-wizard__connector--active{border-bottom-color:var(--fdWizard_Connector_Active_Border_Color)}.fd-wizard__connector--branching{border-bottom-style:dashed}.fd-wizard__content{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;padding-top:1rem;width:100%;height:100%;background:var(--sapBackgroundColor)}.fd-wizard__content:before,.fd-wizard__content:after{box-sizing:inherit;font-size:inherit}.fd-wizard__content--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__content--md,.fd-wizard__content--lg{padding-left:2rem;padding-right:2rem}.fd-wizard__content--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__content--solid{background:var(--fdWizard_Content_Solid_Background)}.fd-wizard__content--list{background:var(--fdWizard_Content_List_Background)}.fd-wizard__content--transparent{background:var(--fdWizard_Content_Transparent_Background)}.fd-wizard__step-content-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;padding:var(--fdWizard_Step_Content_Container_Spacing);background-color:var(--fdWizard_Step_Content_Container_Background_Color);border-radius:var(--sapElement_BorderCornerRadius)}.fd-wizard__step-content-container:before,.fd-wizard__step-content-container:after{box-sizing:inherit;font-size:inherit}.fd-wizard__step-content-container--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__step-content-container--md,.fd-wizard__step-content-container--lg{padding-left:2rem;padding-right:2rem}.fd-wizard__step-content-container--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__next-step{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;margin-top:1rem}.fd-wizard__next-step:before,.fd-wizard__next-step:after{box-sizing:inherit;font-size:inherit}.fd-wizard__next-step--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__next-step--md,.fd-wizard__next-step--lg{padding-left:2rem;padding-right:2rem}.fd-wizard__next-step--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__next-step--floating{position:absolute;bottom:3.5rem}.fd-wizard__label,.fd-wizard__optional-text{display:block;display:-webkit-box}.fd-wizard-container-wrapper{overflow:auto}@media (max-width: 599px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:1rem;padding-right:1rem}}@media (min-width: 600px) and (max-width: 1439px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:2rem;padding-right:2rem}}@media (min-width: 1440px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:3rem;padding-right:3rem}}.fd-wizard__progress-bar{z-index:1003}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ScrollSpyDirective, selector: "[fdScrollSpy]", inputs: ["trackedTags", "fireEmpty", "targetPercent", "targetOffset", "scrollSpyDisabled"], outputs: ["spyChange"] }, { type: i4.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
482
483
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: WizardComponent, decorators: [{
483
484
  type: Component,
484
485
  args: [{ selector: 'fd-wizard', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
@@ -489,7 +490,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
489
490
  ], host: {
490
491
  role: 'region',
491
492
  '[attr.aria-label]': 'ariaLabel'
492
- }, template: "<section class=\"fd-wizard\">\n <ng-content select=\"fd-wizard-navigation\"></ng-content>\n <div\n *ngIf=\"appendToWizard\"\n class=\"fd-wizard-container-wrapper\"\n #wrapperContainer\n fdScrollSpy\n [trackedTags]=\"['div']\"\n (spyChange)=\"scrollSpyChange($event)\"\n >\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n <div *ngIf=\"!appendToWizard\" class=\"fd-wizard-container-wrapper\">\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</section>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.1-rc.1\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-wizard{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;position:relative}.fd-wizard:before,.fd-wizard:after{box-sizing:inherit;font-size:inherit}.fd-wizard__navigation{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0}.fd-wizard__navigation:before,.fd-wizard__navigation:after{box-sizing:inherit;font-size:inherit}.fd-wizard__progress-bar{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;width:100%;height:4rem;display:table;padding-top:1rem;position:relative;table-layout:fixed;list-style-type:none;background:var(--sapObjectHeader_Background);box-shadow:var(--sapContent_HeaderShadow)}.fd-wizard__progress-bar:before,.fd-wizard__progress-bar:after{box-sizing:inherit;font-size:inherit}.fd-wizard__progress-bar--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__progress-bar--md,.fd-wizard__progress-bar--lg{padding-left:2rem;padding-right:2rem}.fd-wizard__progress-bar--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__step-wrapper{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;height:2rem}.fd-wizard__step-wrapper:before,.fd-wizard__step-wrapper:after{box-sizing:inherit;font-size:inherit}.fd-wizard__step{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;width:100%;min-width:10.5rem;position:relative;display:table-cell;vertical-align:top;box-sizing:content-box}.fd-wizard__step:before,.fd-wizard__step:after{box-sizing:inherit;font-size:inherit}.fd-wizard__step--completed .fd-wizard__label{color:var(--fdWizard_Completed_Step_Label_Color)}.fd-wizard__step--completed .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);color:var(--fdWizard_Completed_Step_Color);border:var(--fdWizard_Completed_Step_Border)}.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Completed_Step_Icon_Color)}.fd-wizard__step--current .fd-wizard__label{color:var(--fdWizard_Current_Step_Label_Color)}.fd-wizard__step--current .fd-wizard__step-indicator{border:var(--fdWizard_Current_Step_Border);position:relative;background:var(--fdWizard_Current_Step_Background_Color);color:var(--fdWizard_Current_Step_Color)}.fd-wizard__step--current .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--current .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Current_Step_Icon_Color)}.fd-wizard__step--current .fd-wizard__step-indicator:after{content:\"\";bottom:-1rem;left:-.1875rem;position:absolute;display:inline-block;width:calc(100% + .375rem);height:var(--fdWizard_Selection_Bar_Height);background:var(--fdWizard_Selection_Bar_Background);border-radius:.125rem .125rem 0 0;transition:all .125s ease-in}.fd-wizard__step--upcoming .fd-wizard__label,.fd-wizard__step--upcoming .fd-wizard__optional-text{color:var(--sapContent_LabelColor)}.fd-wizard__step--upcoming .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);border:.0625rem solid var(--sapList_BorderColor);color:var(--fdWizard_Upcoming_Step_Color)}.fd-wizard__step--upcoming .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--upcoming .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Upcoming_Step_Icon_Color)}.fd-wizard__step--upcoming .fd-wizard__step-container{cursor:default;pointer-events:none}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__label{color:var(--fdWizard_Completed_Step_Label_Color)}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);color:var(--fdWizard_Completed_Step_Color);border:var(--fdWizard_Completed_Step_Border)}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Completed_Step_Icon_Color)}.fd-wizard__step--no-label{min-width:4rem}.fd-wizard__step--no-label .fd-wizard__label-container{display:none}.fd-wizard__step--stacked-top.fd-wizard__step--stacked{min-width:4rem;width:4rem}.fd-wizard__step--stacked-top.fd-wizard__step--stacked .fd-wizard__connector{display:block;min-width:auto}.fd-wizard__step--stacked{width:.25rem;min-width:auto}.fd-wizard__step--stacked:last-child{padding-right:2.375rem}[dir=rtl] .fd-wizard__step--stacked:last-child,.fd-wizard__step--stacked:last-child[dir=rtl]{padding-right:0;padding-left:2.375rem}.fd-wizard__step--stacked .fd-wizard__connector,.fd-wizard__step--stacked .fd-wizard__label-container{display:none}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(1){z-index:9}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(2){z-index:8}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(3){z-index:7}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(4){z-index:6}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(5){z-index:5}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(6){z-index:4}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(7){z-index:3}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(8){z-index:2}.fd-wizard__step--active .fd-wizard__step-indicator{background:var(--sapActiveColor);border-color:var(--fdWizard_Active_Step_Border_Color);color:var(--fdWizard_Active_Step_Color)}.fd-wizard__step--active .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--active .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Active_Step_Icon_Color)}.fd-wizard__step-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;cursor:pointer}.fd-wizard__step-container:before,.fd-wizard__step-container:after{box-sizing:inherit;font-size:inherit}.fd-wizard__step-container:focus,.fd-wizard__step-container.is-focus{z-index:5;outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);outline-color:var(--sapContent_FocusColor)}.fd-wizard__step-indicator{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;border:0;display:flex;justify-content:center;align-items:center;border-radius:50%;min-width:2rem;min-height:2rem;width:2rem;height:2rem;margin:0;margin-left:.1875rem;margin-right:var(--fdWizard_Step_Indicator_Margin_Right)}.fd-wizard__step-indicator:before,.fd-wizard__step-indicator:after{box-sizing:inherit;font-size:inherit}[dir=rtl] .fd-wizard__step-indicator,.fd-wizard__step-indicator[dir=rtl]{margin-right:.1875rem;margin-left:var(--fdWizard_Step_Indicator_Margin_Right)}.fd-wizard__icon [class*=sap-icon],.fd-wizard__icon[class*=sap-icon]{color:inherit;background:inherit;font-size:inherit;border-radius:inherit;line-height:1;display:flex;justify-content:center;align-items:center;height:100%;font-size:var(--sapFontLargeSize)}.fd-wizard__label-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;flex-direction:column;max-width:100%;max-height:2rem;color:var(--sapContent_LabelColor);overflow:hidden}.fd-wizard__label-container:before,.fd-wizard__label-container:after{box-sizing:inherit;font-size:inherit}.fd-wizard__label-container--optional .fd-wizard__label{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-overflow:ellipsis;max-height:1rem}.fd-wizard__label{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-overflow:ellipsis;font-family:var(--fdWizard_Label_Font_Family);font-weight:var(--fdWizard_Label_Font_Weight);line-height:1rem;max-width:100%}.fd-wizard__label:before,.fd-wizard__label:after{box-sizing:inherit;font-size:inherit}.fd-wizard__optional-text{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-overflow:ellipsis;max-width:100%;font-size:var(--sapFontSmallSize);color:var(--sapContent_LabelColor)}.fd-wizard__optional-text:before,.fd-wizard__optional-text:after{box-sizing:inherit;font-size:inherit}.fd-wizard__connector{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;flex:1 1 auto;margin:.5rem;max-width:100%;min-width:1rem;border-bottom:.0625rem solid var(--sapList_BorderColor)}.fd-wizard__connector:before,.fd-wizard__connector:after{box-sizing:inherit;font-size:inherit}.fd-wizard__connector--active{border-bottom-color:var(--fdWizard_Connector_Active_Border_Color)}.fd-wizard__connector--branching{border-bottom-style:dashed}.fd-wizard__content{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;padding-top:1rem;width:100%;height:100%;background:var(--sapBackgroundColor)}.fd-wizard__content:before,.fd-wizard__content:after{box-sizing:inherit;font-size:inherit}.fd-wizard__content--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__content--md,.fd-wizard__content--lg{padding-left:2rem;padding-right:2rem}.fd-wizard__content--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__content--solid{background:var(--fdWizard_Content_Solid_Background)}.fd-wizard__content--list{background:var(--fdWizard_Content_List_Background)}.fd-wizard__content--transparent{background:var(--fdWizard_Content_Transparent_Background)}.fd-wizard__step-content-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;padding:var(--fdWizard_Step_Content_Container_Spacing);background-color:var(--fdWizard_Step_Content_Container_Background_Color);border-radius:var(--sapElement_BorderCornerRadius)}.fd-wizard__step-content-container:before,.fd-wizard__step-content-container:after{box-sizing:inherit;font-size:inherit}.fd-wizard__step-content-container--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__step-content-container--md,.fd-wizard__step-content-container--lg{padding-left:2rem;padding-right:2rem}.fd-wizard__step-content-container--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__next-step{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;margin-top:1rem}.fd-wizard__next-step:before,.fd-wizard__next-step:after{box-sizing:inherit;font-size:inherit}.fd-wizard__next-step--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__next-step--md,.fd-wizard__next-step--lg{padding-left:2rem;padding-right:2rem}.fd-wizard__next-step--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__next-step--floating{position:absolute;bottom:3.5rem}.fd-wizard__label,.fd-wizard__optional-text{display:block;display:-webkit-box}.fd-wizard-container-wrapper{overflow:auto}@media (max-width: 599px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:1rem;padding-right:1rem}}@media (min-width: 600px) and (max-width: 1439px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:2rem;padding-right:2rem}}@media (min-width: 1440px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:3rem;padding-right:3rem}}\n"] }]
493
+ }, template: "<section class=\"fd-wizard\">\n <ng-content select=\"fd-wizard-navigation\"></ng-content>\n <div\n *ngIf=\"appendToWizard\"\n class=\"fd-wizard-container-wrapper\"\n #wrapperContainer\n fdScrollSpy\n cdkScrollable\n [trackedTags]=\"['div']\"\n (spyChange)=\"scrollSpyChange($event)\"\n >\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n <div *ngIf=\"!appendToWizard\" cdkScrollable class=\"fd-wizard-container-wrapper\">\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</section>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.1-rc.1\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-wizard{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;position:relative}.fd-wizard:before,.fd-wizard:after{box-sizing:inherit;font-size:inherit}.fd-wizard__navigation{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0}.fd-wizard__navigation:before,.fd-wizard__navigation:after{box-sizing:inherit;font-size:inherit}.fd-wizard__progress-bar{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;width:100%;height:4rem;display:table;padding-top:1rem;position:relative;table-layout:fixed;list-style-type:none;background:var(--sapObjectHeader_Background);box-shadow:var(--sapContent_HeaderShadow)}.fd-wizard__progress-bar:before,.fd-wizard__progress-bar:after{box-sizing:inherit;font-size:inherit}.fd-wizard__progress-bar--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__progress-bar--md,.fd-wizard__progress-bar--lg{padding-left:2rem;padding-right:2rem}.fd-wizard__progress-bar--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__step-wrapper{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;height:2rem}.fd-wizard__step-wrapper:before,.fd-wizard__step-wrapper:after{box-sizing:inherit;font-size:inherit}.fd-wizard__step{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;width:100%;min-width:10.5rem;position:relative;display:table-cell;vertical-align:top;box-sizing:content-box}.fd-wizard__step:before,.fd-wizard__step:after{box-sizing:inherit;font-size:inherit}.fd-wizard__step--completed .fd-wizard__label{color:var(--fdWizard_Completed_Step_Label_Color)}.fd-wizard__step--completed .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);color:var(--fdWizard_Completed_Step_Color);border:var(--fdWizard_Completed_Step_Border)}.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Completed_Step_Icon_Color)}.fd-wizard__step--current .fd-wizard__label{color:var(--fdWizard_Current_Step_Label_Color)}.fd-wizard__step--current .fd-wizard__step-indicator{border:var(--fdWizard_Current_Step_Border);position:relative;background:var(--fdWizard_Current_Step_Background_Color);color:var(--fdWizard_Current_Step_Color)}.fd-wizard__step--current .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--current .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Current_Step_Icon_Color)}.fd-wizard__step--current .fd-wizard__step-indicator:after{content:\"\";bottom:-1rem;left:-.1875rem;position:absolute;display:inline-block;width:calc(100% + .375rem);height:var(--fdWizard_Selection_Bar_Height);background:var(--fdWizard_Selection_Bar_Background);border-radius:.125rem .125rem 0 0;transition:all .125s ease-in}.fd-wizard__step--upcoming .fd-wizard__label,.fd-wizard__step--upcoming .fd-wizard__optional-text{color:var(--sapContent_LabelColor)}.fd-wizard__step--upcoming .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);border:.0625rem solid var(--sapList_BorderColor);color:var(--fdWizard_Upcoming_Step_Color)}.fd-wizard__step--upcoming .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--upcoming .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Upcoming_Step_Icon_Color)}.fd-wizard__step--upcoming .fd-wizard__step-container{cursor:default;pointer-events:none}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__label{color:var(--fdWizard_Completed_Step_Label_Color)}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);color:var(--fdWizard_Completed_Step_Color);border:var(--fdWizard_Completed_Step_Border)}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Completed_Step_Icon_Color)}.fd-wizard__step--no-label{min-width:4rem}.fd-wizard__step--no-label .fd-wizard__label-container{display:none}.fd-wizard__step--stacked-top.fd-wizard__step--stacked{min-width:4rem;width:4rem}.fd-wizard__step--stacked-top.fd-wizard__step--stacked .fd-wizard__connector{display:block;min-width:auto}.fd-wizard__step--stacked{width:.25rem;min-width:auto}.fd-wizard__step--stacked:last-child{padding-right:2.375rem}[dir=rtl] .fd-wizard__step--stacked:last-child,.fd-wizard__step--stacked:last-child[dir=rtl]{padding-right:0;padding-left:2.375rem}.fd-wizard__step--stacked .fd-wizard__connector,.fd-wizard__step--stacked .fd-wizard__label-container{display:none}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(1){z-index:9}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(2){z-index:8}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(3){z-index:7}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(4){z-index:6}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(5){z-index:5}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(6){z-index:4}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(7){z-index:3}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(8){z-index:2}.fd-wizard__step--active .fd-wizard__step-indicator{background:var(--sapActiveColor);border-color:var(--fdWizard_Active_Step_Border_Color);color:var(--fdWizard_Active_Step_Color)}.fd-wizard__step--active .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--active .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Active_Step_Icon_Color)}.fd-wizard__step-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;cursor:pointer}.fd-wizard__step-container:before,.fd-wizard__step-container:after{box-sizing:inherit;font-size:inherit}.fd-wizard__step-container:focus,.fd-wizard__step-container.is-focus{z-index:5;outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);outline-color:var(--sapContent_FocusColor)}.fd-wizard__step-indicator{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;border:0;display:flex;justify-content:center;align-items:center;border-radius:50%;min-width:2rem;min-height:2rem;width:2rem;height:2rem;margin:0;margin-left:.1875rem;margin-right:var(--fdWizard_Step_Indicator_Margin_Right)}.fd-wizard__step-indicator:before,.fd-wizard__step-indicator:after{box-sizing:inherit;font-size:inherit}[dir=rtl] .fd-wizard__step-indicator,.fd-wizard__step-indicator[dir=rtl]{margin-right:.1875rem;margin-left:var(--fdWizard_Step_Indicator_Margin_Right)}.fd-wizard__icon [class*=sap-icon],.fd-wizard__icon[class*=sap-icon]{color:inherit;background:inherit;font-size:inherit;border-radius:inherit;line-height:1;display:flex;justify-content:center;align-items:center;height:100%;font-size:var(--sapFontLargeSize)}.fd-wizard__label-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;flex-direction:column;max-width:100%;max-height:2rem;color:var(--sapContent_LabelColor);overflow:hidden}.fd-wizard__label-container:before,.fd-wizard__label-container:after{box-sizing:inherit;font-size:inherit}.fd-wizard__label-container--optional .fd-wizard__label{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-overflow:ellipsis;max-height:1rem}.fd-wizard__label{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-overflow:ellipsis;font-family:var(--fdWizard_Label_Font_Family);font-weight:var(--fdWizard_Label_Font_Weight);line-height:1rem;max-width:100%}.fd-wizard__label:before,.fd-wizard__label:after{box-sizing:inherit;font-size:inherit}.fd-wizard__optional-text{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-overflow:ellipsis;max-width:100%;font-size:var(--sapFontSmallSize);color:var(--sapContent_LabelColor)}.fd-wizard__optional-text:before,.fd-wizard__optional-text:after{box-sizing:inherit;font-size:inherit}.fd-wizard__connector{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;flex:1 1 auto;margin:.5rem;max-width:100%;min-width:1rem;border-bottom:.0625rem solid var(--sapList_BorderColor)}.fd-wizard__connector:before,.fd-wizard__connector:after{box-sizing:inherit;font-size:inherit}.fd-wizard__connector--active{border-bottom-color:var(--fdWizard_Connector_Active_Border_Color)}.fd-wizard__connector--branching{border-bottom-style:dashed}.fd-wizard__content{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;padding-top:1rem;width:100%;height:100%;background:var(--sapBackgroundColor)}.fd-wizard__content:before,.fd-wizard__content:after{box-sizing:inherit;font-size:inherit}.fd-wizard__content--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__content--md,.fd-wizard__content--lg{padding-left:2rem;padding-right:2rem}.fd-wizard__content--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__content--solid{background:var(--fdWizard_Content_Solid_Background)}.fd-wizard__content--list{background:var(--fdWizard_Content_List_Background)}.fd-wizard__content--transparent{background:var(--fdWizard_Content_Transparent_Background)}.fd-wizard__step-content-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;padding:var(--fdWizard_Step_Content_Container_Spacing);background-color:var(--fdWizard_Step_Content_Container_Background_Color);border-radius:var(--sapElement_BorderCornerRadius)}.fd-wizard__step-content-container:before,.fd-wizard__step-content-container:after{box-sizing:inherit;font-size:inherit}.fd-wizard__step-content-container--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__step-content-container--md,.fd-wizard__step-content-container--lg{padding-left:2rem;padding-right:2rem}.fd-wizard__step-content-container--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__next-step{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;margin-top:1rem}.fd-wizard__next-step:before,.fd-wizard__next-step:after{box-sizing:inherit;font-size:inherit}.fd-wizard__next-step--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__next-step--md,.fd-wizard__next-step--lg{padding-left:2rem;padding-right:2rem}.fd-wizard__next-step--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__next-step--floating{position:absolute;bottom:3.5rem}.fd-wizard__label,.fd-wizard__optional-text{display:block;display:-webkit-box}.fd-wizard-container-wrapper{overflow:auto}@media (max-width: 599px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:1rem;padding-right:1rem}}@media (min-width: 600px) and (max-width: 1439px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:2rem;padding-right:2rem}}@media (min-width: 1440px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:3rem;padding-right:3rem}}.fd-wizard__progress-bar{z-index:1003}\n"] }]
493
494
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.DialogBodyComponent, decorators: [{
494
495
  type: Optional
495
496
  }] }]; }, propDecorators: { appendToWizard: [{
@@ -521,4 +522,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
521
522
  type: HostListener,
522
523
  args: ['window:resize']
523
524
  }] } });
524
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvd2l6YXJkL3dpemFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLFNBQVMsRUFFVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXhELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBRWxELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUM7QUFDbEMsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsOEJBQThCLENBQUM7QUFDckUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsMEJB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QXFCQTsyRkRnRGEsZUFBZTtrQkFqQjNCLFNBQVM7K0JBQ0ksV0FBVyxpQkFHTixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxNQUFNOzRCQUNmLFdBQVcsaUJBQWlCO3lCQUMvQjtxQkFDSixRQUNLO3dCQUNGLElBQUksRUFBRSxRQUFRO3dCQUNkLG1CQUFtQixFQUFFLFdBQVc7cUJBQ25DOzswQkFvRUksUUFBUTs0Q0E1RGIsY0FBYztzQkFEYixLQUFLO2dCQVFOLGFBQWE7c0JBRFosS0FBSztnQkFRTixrQkFBa0I7c0JBRmpCLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsc0NBQXNDO2dCQUluRCxrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLEtBQUs7c0JBREosZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBSzNELFdBQVc7c0JBRFYsWUFBWTt1QkFBQywwQkFBMEI7Z0JBS3hDLGFBQWE7c0JBRFosZUFBZTt1QkFBQyxzQkFBc0I7Z0JBS3ZDLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGtCQUFrQjtnQkE2QjdCLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEaWFsb2dCb2R5Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBzY3JvbGxUb3AgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcbmltcG9ydCB7IFdpemFyZFN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3dpemFyZC1zdGVwL3dpemFyZC1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaXphcmRQcm9ncmVzc0JhckRpcmVjdGl2ZSB9IGZyb20gJy4vd2l6YXJkLXByb2dyZXNzLWJhci93aXphcmQtcHJvZ3Jlc3MtYmFyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBXaXphcmRDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi93aXphcmQtY29udGVudC93aXphcmQtY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQUNUSVZFX1NURVBfU1RBVFVTLCBDVVJSRU5UX1NURVBfU1RBVFVTLCBVUENPTUlOR19TVEVQX1NUQVRVUywgQ09NUExFVEVEX1NURVBfU1RBVFVTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgV0laQVJEIH0gZnJvbSAnLi93aXphcmQtaW5qZWN0aW9uLXRva2VuJztcblxuZXhwb3J0IGNvbnN0IFNURVBfTUlOX1dJRFRIID0gMTY4O1xuZXhwb3J0IGNvbnN0IFNURVBfU1RBQ0tFRF9UT1BfQ0xBU1MgPSAnZmQtd2l6YXJkX19zdGVwLS1zdGFja2VkLXRvcCc7XG5leHBvcnQgY29uc3QgU1RFUF9TVEFDS0VEX0NMQVNTID0gJ2ZkLXdpemFyZF9fc3RlcC0tc3RhY2tlZCc7XG5leHBvcnQgY29uc3QgU1RFUF9OT19MQUJFTF9DTEFTUyA9ICdmZC13aXphcmRfX3N0ZXAtLW5vLWxhYmVsJztcblxuZXhwb3J0IGNvbnN0IFdJWkFSRF9OQVZJR0FUSU9OX0NMQVNTID0gJ2ZkLXdpemFyZF9fbmF2aWdhdGlvbic7XG5leHBvcnQgY29uc3QgV0laQVJEX0NPTlRFTlRfQ0xBU1MgPSAnZmQtd2l6YXJkX19jb250ZW50JztcbmV4cG9ydCBjb25zdCBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MgPSAnZmQtd2l6YXJkLWNvbnRhaW5lci13cmFwcGVyJztcbmV4cG9ydCBjb25zdCBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTID0gJ2ZkLXdpemFyZC10YWxsLWNvbnRlbnQnO1xuZXhwb3J0IGNvbnN0IFNIRUxMQkFSX0NMQVNTID0gJ2ZkLXNoZWxsYmFyJztcbmV4cG9ydCBjb25zdCBCQVJfRk9PVEVSX0NMQVNTID0gJ2ZkLWJhci0tZm9vdGVyJztcbmV4cG9ydCBjb25zdCBCQVJfRkxPQVRJTkdfRk9PVEVSX0NMQVNTID0gJ2ZkLWJhci0tZmxvYXRpbmctZm9vdGVyJztcblxuZXhwb3J0IGxldCBfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXA7XG5leHBvcnQgbGV0IHRpbWVyOiBhbnkgPSBudWxsO1xuZXhwb3J0IGNvbnN0IGhhbmRsZVRpbWVvdXRSZWZlcmVuY2UgPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKHRpbWVyICE9PSBudWxsKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgfVxuICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIF9mcm9tU2Nyb2xsVG9DdXJyZW50U3RlcCA9IGZhbHNlO1xuICAgIH0sIDE1MCk7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXdpemFyZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3dpemFyZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vd2l6YXJkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogV0laQVJELFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFdpemFyZENvbXBvbmVudFxuICAgICAgICB9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgIHJvbGU6ICdyZWdpb24nLFxuICAgICAgICAnW2F0dHIuYXJpYS1sYWJlbF0nOiAnYXJpYUxhYmVsJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgV2l6YXJkQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0byBhcHBlbmQgdGhlIHN0ZXAgdG8gdGhlIHdpemFyZC4gSWYgZmFsc2UsIGVhY2ggc3RlcCB3aWxsIGJlIGRpc3BsYXllZCBvbiBhIGRpZmZlcmVudCBwYWdlLlxuICAgICAqIERlZmF1bHQgaXMgdHJ1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFwcGVuZFRvV2l6YXJkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBoZWlnaHQgdG8gdXNlIGZvciB0aGUgd2l6YXJkJ3MgY29udGVudCBwYW5lLiBCeSBkZWZhdWx0LCB0aGlzIHZhbHVlIGlzIGNhbGMoMTAwdmggLSAxNDRweCksIHdoZXJlIDE0NHB4XG4gICAgICogaXMgdGhlIGNvbWJpbmVkIGhlaWdodCBvZiB0aGUgc2hlbGxiYXIsIHdpemFyZCBoZWFkZXIgYW5kIHdpemFyZCBmb290ZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjb250ZW50SGVpZ2h0OiBOdWxsYWJsZTxzdHJpbmcgfCBudWxsPjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IGFwcGx5IHJlc3BvbnNpdmUgcGFkZGluZ3Mgc3R5bGluZy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtd2l6YXJkLS1yZXNwb25zaXZlLXBhZGRpbmdzJylcbiAgICByZXNwb25zaXZlUGFkZGluZ3MgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheVN1bW1hcnlTdGVwID0gZmFsc2U7XG5cbiAgICAvKiogYWRkaW5nIGFyaWEgbGFiZWwgdG8gdGhlIGNvbXBvbmVudCAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsID0gJ1dpemFyZCc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oV2l6YXJkU3RlcENvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHN0ZXBzOiBRdWVyeUxpc3Q8V2l6YXJkU3RlcENvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoV2l6YXJkUHJvZ3Jlc3NCYXJEaXJlY3RpdmUpXG4gICAgcHJvZ3Jlc3NCYXI6IFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFdpemFyZENvbnRlbnRDb21wb25lbnQpXG4gICAgd2l6YXJkQ29udGVudDogV2l6YXJkQ29udGVudENvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnd3JhcHBlckNvbnRhaW5lcicpXG4gICAgd3JhcHBlckNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnRlbnRUZW1wbGF0ZXM6IFRlbXBsYXRlUmVmPGFueT5bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGFja2VkU3RlcHNMZWZ0OiBXaXphcmRTdGVwQ29tcG9uZW50W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhY2tlZFN0ZXBzUmlnaHQ6IFdpemFyZFN0ZXBDb21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdGVwRXZlbnRTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXBMaXN0Q2hhbmdlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcmV2aW91c1dpZHRoOiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGlhbG9nQm9keUNvbXBvbmVudDogRGlhbG9nQm9keUNvbXBvbmVudFxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gICAgcmVzaXplSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkV2lkdGggPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBpZiAoIXRoaXMuX3ByZXZpb3VzV2lkdGggfHwgd2l6YXJkV2lkdGggPD0gdGhpcy5fcHJldmlvdXNXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5fd2l6YXJkU2hyaW5raW5nKCk7XG4gICAgICAgIH0gZWxzZSBpZiAod2l6YXJkV2lkdGggPiB0aGlzLl9wcmV2aW91c1dpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzV2lkdGggPSB3aXphcmRXaWR0aDtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudEhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykuc3R5bGUuaGVpZ2h0ID1cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRDb250YWluZXJBbmRUYWxsQ29udGVudEhlaWdodCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLy8gZml4ZXMgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgICAgICAgICAgdGhpcy5fc2V0Q29udGVudFRlbXBsYXRlcygpO1xuICAgICAgICAgICAgdGhpcy5fc3RlcExpc3RDaGFuZ2VzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXR1cFN0ZXBFdmVudHMoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuX3NldHVwU3RlcEV2ZW50cygpO1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVIYW5kbGVyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fc3RlcExpc3RDaGFuZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMud3JhcHBlckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgdGhlIGhlaWdodCBvZiB0aGUgd2l6YXJkIGNvbnRlbnQgYnkgbG9va2luZyBmb3IgdGhlIGRvY3VtZW50J3Mgc2hlbGxiYXIsIHRoZSB3aXphcmRcbiAgICAgKiBuYXZpZ2F0aW9uIGFuZCB0aGUgd2l6YXJkIGZvb3RlciwgYW5kIGNhbGN1bGF0aW5nIHRoZSBoZWlnaHQgYmFzZWQgb24gdGhlaXIgcHJlc2VuY2UuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlQ29udGVudEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgd2l6YXJkTmF2SGVpZ2h0ID0gMDtcbiAgICAgICAgY29uc3Qgc2hlbGxiYXJIZWlnaHQgPSB0aGlzLl9nZXRTaGVsbGJhckhlaWdodCgpO1xuICAgICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHdpemFyZE5hdkhlaWdodCA9IHRoaXMuX2dldFdpemFyZE5hdkhlaWdodCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHdpemFyZEZvb3RlckhlaWdodCA9IHRoaXMuX2dldFdpemFyZEZvb3RlckhlaWdodCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dPZmZzZXQgPSB0aGlzLl9nZXREaWFsb2dPZmZzZXQoKTtcblxuICAgICAgICByZXR1cm4gc2hlbGxiYXJIZWlnaHQgKyB3aXphcmROYXZIZWlnaHQgKyB3aXphcmRGb290ZXJIZWlnaHQgKyBkaWFsb2dPZmZzZXQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRTaGVsbGJhckhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy4nICsgU0hFTExCQVJfQ0xBU1MpPy5jbGllbnRIZWlnaHQgPz8gMDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFdpemFyZE5hdkhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgcmV0VmFsO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1MpKSB7XG4gICAgICAgICAgICByZXRWYWwgPSB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfTkFWSUdBVElPTl9DTEFTUykuY2xpZW50SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0VmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0V2l6YXJkRm9vdGVySGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHdpemFyZCA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGxldCByZXRWYWw7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRk9PVEVSX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZPT1RFUl9DTEFTUykub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9IGVsc2UgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIEJBUl9GTE9BVElOR19GT09URVJfQ0xBU1MpKSB7XG4gICAgICAgICAgICByZXRWYWwgPSB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRkxPQVRJTkdfRk9PVEVSX0NMQVNTKS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRWYWwgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXREaWFsb2dPZmZzZXQoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHJldFZhbCA9IDA7XG4gICAgICAgIGlmICh0aGlzLl9kaWFsb2dCb2R5Q29tcG9uZW50KSB7XG4gICAgICAgICAgICBjb25zdCBkaWFsb2dCb2R5ID0gdGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudC5lbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChkaWFsb2dCb2R5LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2ZkLWRpYWxvZy1ib2R5Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RpYWxvZ0JvZHlDb21wb25lbnQuZGlhbG9nQ29uZmlnLnZlcnRpY2FsUGFkZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpYWxvZ0JvZHlUaXRsZSA9IGRpYWxvZ0JvZHkucXVlcnlTZWxlY3RvcignLmZkLXRpdGxlLS1oMicpO1xuICAgICAgICAgICAgICAgIGlmIChkaWFsb2dCb2R5VGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gZGlhbG9nQm9keVRpdGxlLm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0VmFsID0gcmV0VmFsICsgd2luZG93LmlubmVySGVpZ2h0IC0gZGlhbG9nQm9keS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0Q29udGFpbmVyQW5kVGFsbENvbnRlbnRIZWlnaHQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdpemFyZCA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNvbWJpbmVkSGVpZ2h0ID0gdGhpcy5jb250ZW50SGVpZ2h0ID8gdGhpcy5jb250ZW50SGVpZ2h0IDogdGhpcy5fY2FsY3VsYXRlQ29udGVudEhlaWdodCgpO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTKSkge1xuICAgICAgICAgICAgd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTKS5zdHlsZS5oZWlnaHQgPVxuICAgICAgICAgICAgICAgICdjYWxjKDEwMHZoIC0gJyArIGNvbWJpbmVkSGVpZ2h0ICsgJ3B4KSc7XG4gICAgICAgIH1cbiAgICAgICAgd2l6YXJkLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgV0laQVJEX0NPTlRFTlRfQ0xBU1MpLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgIG5vZGUuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUykub2Zmc2V0SGVpZ2h0IDxcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpLm9mZnNldEhlaWdodFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUykuc3R5bGUuaGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAgICAgJ2NhbGMoMTAwdmggLSAnICsgY29tYmluZWRIZWlnaHQgKyAncHgpJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUykuc3R5bGUucGFkZGluZ0JvdHRvbSA9ICcyNHB4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0dXBTdGVwRXZlbnRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgc3RlcC5zdGVwQ2xpY2tlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0ZXBDbGlja2VkKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZVN0ZXBPclN0YXR1c0NoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgICAgIHN0ZXAuc3RlcEluZGljYXRvckl0ZW1DbGlja2VkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RlcENsaWNrZWQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgLy8gbmVlZCB0byBjYWxsIHdpemFyZFNocmlua2luZyBmb3IgZWFjaCBzdGVwIDwgMTY4cHggb24gZmlyc3QgbG9hZFxuICAgICAgICAgICAgaWYgKHN0ZXAud2l6YXJkTGFiZWwgJiYgc3RlcC5nZXRTdGVwQ2xpZW50V2lkdGgoKSA8IFNURVBfTUlOX1dJRFRIKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2l6YXJkU2hyaW5raW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfd2l6YXJkU2hyaW5raW5nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcCA9IHRoaXMuX2dldEN1cnJlbnRTdGVwKCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwICYmXG4gICAgICAgICAgICAoIWN1cnJlbnRTdGVwLmlzU3VtbWFyeSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkgJiZcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLndpemFyZExhYmVsICYmXG4gICAgICAgICAgICBjdXJyZW50U3RlcC5nZXRTdGVwQ2xpZW50V2lkdGgoKSA8IFNURVBfTUlOX1dJRFRIXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5faGlkZVNvbWVTdGVwKGN1cnJlbnRTdGVwKTtcbiAgICAgICAgICAgIHRoaXMuX3NldFN0YWNrZWRUb3AoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0Q29udGVudFRlbXBsYXRlcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGVzTGVuZ3RoID0gdGhpcy5jb250ZW50VGVtcGxhdGVzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzID0gW107XG4gICAgICAgIGxldCBfc3RlcElkID0gMDtcbiAgICAgICAgY29uc3Qgc3RlcHMgPSB0aGlzLnN0ZXBzLnRvQXJyYXkoKTtcbiAgICAgICAgZm9yIChjb25zdCBzdGVwIG9mIHN0ZXBzKSB7XG4gICAgICAgICAgICBpZiAoc3RlcC5jb250ZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzdGVwLmlzU3VtbWFyeSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQudGFsbENvbnRlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RlcC5jb250ZW50LndpemFyZENvbnRlbnRJZCA9IF9zdGVwSWQudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0ZXAuX3N0ZXBJZCA9IF9zdGVwSWQ7XG4gICAgICAgICAgICBfc3RlcElkKys7XG4gICAgICAgICAgICBzdGVwLnNldEZpbmFsU3RlcChmYWxzZSk7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgIElmIHRoZSBzdGVwIGlzIGNvbXBsZXRlZCBhbmQgYXBwZW5kVG9XaXphcmQgaXMgdHJ1ZSwgaGlkZSB0aGUgbmV4dFN0ZXAgYnV0dG9uLCB1bmxlc3MgaXQncyB0aGUgbGFzdCBzdGVwLFxuICAgICAgICAgICAgIG9yIGlmIHRoZXJlJ3MgYSBzdW1tYXJ5IGFuZCBpdCBpcyB0aGUgc2Vjb25kIHRvIGxhc3Qgc3RlcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcC5jb21wbGV0ZWQgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZFRvV2l6YXJkICYmXG4gICAgICAgICAgICAgICAgc3RlcC5jb250ZW50Py5uZXh0U3RlcD8uY2FuSGlkZSAmJlxuICAgICAgICAgICAgICAgIHN0ZXAgIT09IHRoaXMuX2dldExhc3ROb25TdW1tYXJ5U3RlcCgpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQubmV4dFN0ZXAuX2hpZGVFbGVtZW50KCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudD8ubmV4dFN0ZXAgJiZcbiAgICAgICAgICAgICAgICAoKHN0ZXAuY29tcGxldGVkICYmIHRoaXMuYXBwZW5kVG9XaXphcmQpIHx8XG4gICAgICAgICAgICAgICAgICAgIChzdGVwLnZpc2l0ZWQgJiYgc3RlcC5icmFuY2hpbmcgJiYgc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgc3RlcC5jb250ZW50Lm5leHRTdGVwLl9zaG93RWxlbWVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHN0ZXAudmlzaXRlZCB8fFxuICAgICAgICAgICAgICAgICgoc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgfHwgc3RlcC5zdGF0dXMgPT09IENPTVBMRVRFRF9TVEVQX1NUQVRVUykgJiYgc3RlcC5jb250ZW50KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgc3RlcC52aXNpdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgJiYgKCFzdGVwLmNvbXBsZXRlZCB8fCAhdGhpcy5hcHBlbmRUb1dpemFyZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5jb250ZW50LnRhbGxDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpc0N1cnJlbnRTdGVwID0gIXRoaXMuYXBwZW5kVG9XaXphcmQgJiYgc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVM7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRlbXBsYXRlc0xlbmd0aCB8fCBpc0N1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcyA9IFtzdGVwLmNvbnRlbnQuY29udGVudFRlbXBsYXRlXTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBmb3VuZCBuZWVkZWQgc3RlcCwgYnJlYWsgdGhlIGN5Y2xlLCBzaW5jZSBpdCBtaWdodCBzZXQgd3Jvbmcgc3RlcCBsYXRlci5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFwcGVuZFRvV2l6YXJkICYmICghc3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcy5wdXNoKHN0ZXAuY29udGVudC5jb250ZW50VGVtcGxhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhc3RWaXNpYmxlVGVtcGxhdGUgPSBzdGVwc1t0aGlzLmNvbnRlbnRUZW1wbGF0ZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChsYXN0VmlzaWJsZVRlbXBsYXRlICYmIGxhc3RWaXNpYmxlVGVtcGxhdGUuY29udGVudCkge1xuICAgICAgICAgICAgbGFzdFZpc2libGVUZW1wbGF0ZS5jb250ZW50LnRhbGxDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXRGaW5hbFN0ZXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Njcm9sbFRvQ3VycmVudFN0ZXAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvV2l6YXJkKSB7XG4gICAgICAgICAgICBfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXAgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyAmJiAoIXN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IHRoaXMud3JhcHBlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW2luZGV4XSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2l6YXJkTmF2aWdhdGlvbkhlaWdodCA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICcuJyArIFdJWkFSRF9OQVZJR0FUSU9OX0NMQVNTXG4gICAgICAgICAgICAgICAgICAgICkuY2xpZW50SGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvcCh0aGlzLndyYXBwZXJDb250YWluZXIubmF0aXZlRWxlbWVudCwgY2hpbGQub2Zmc2V0VG9wIC0gd2l6YXJkTmF2aWdhdGlvbkhlaWdodCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9zZXRVcFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFVwU2Nyb2xsTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud3JhcHBlckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oaWRlU29tZVN0ZXAoY3VycmVudFN0ZXA6IFdpemFyZFN0ZXBDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gSWYgYSBzbWFsbCBzdGVwIHdhcyBmb3VuZCwgZ2V0IHRoZSBzdGVwIHdpdGggYSB2aXNpYmxlIGxhYmVsIGZ1cnRoZXN0IGF3YXkgZnJvbSB0aGUgY3VycmVudCBzdGVwIGFuZCBoaWRlIHRoZSBsYWJlbFxuICAgICAgICBsZXQgc3RlcHNBcnJheSA9IHRoaXMuc3RlcHMudG9BcnJheSgpO1xuICAgICAgICBzdGVwc0FycmF5ID0gc3RlcHNBcnJheS5maWx0ZXIoKHN0ZXApID0+ICFzdGVwLmhhc0xhYmVsKFNURVBfTk9fTEFCRUxfQ0xBU1MpKTtcbiAgICAgICAgaWYgKHRoaXMuc3RlcHMubGFzdC5pc1N1bW1hcnkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBzdGVwc0FycmF5LnBvcCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGVwc0FycmF5Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50U3RlcEluZGV4ID0gMCxcbiAgICAgICAgICAgICAgICBzdGVwVG9IaWRlO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFN0ZXBJbmRleCA9IHN0ZXBzQXJyYXkuaW5kZXhPZihjdXJyZW50U3RlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50U3RlcEluZGV4ID4gKHN0ZXBzQXJyYXkubGVuZ3RoIC0gMSkgLyAyXG4gICAgICAgICAgICAgICAgPyAoc3RlcFRvSGlkZSA9IHN0ZXBzQXJyYXlbMF0pXG4gICAgICAgICAgICAgICAgOiAoc3RlcFRvSGlkZSA9IHN0ZXBzQXJyYXlbc3RlcHNBcnJheS5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgICBzdGVwVG9IaWRlLmdldENsYXNzTGlzdCgpLmFkZChTVEVQX05PX0xBQkVMX0NMQVNTKTtcbiAgICAgICAgICAgIHN0ZXBUb0hpZGUuZ2V0Q2xhc3NMaXN0KCkuYWRkKFNURVBfU1RBQ0tFRF9DTEFTUyk7XG4gICAgICAgICAgICBpZiAoc3RlcHNBcnJheS5pbmRleE9mKHN0ZXBUb0hpZGUpIDwgY3VycmVudFN0ZXBJbmRleCAmJiAhdGhpcy5zdGFja2VkU3RlcHNMZWZ0LmluY2x1ZGVzKHN0ZXBUb0hpZGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNMZWZ0LnNwbGljZSh0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHN0ZXBUb0hpZGUpLCAwLCBzdGVwVG9IaWRlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcHNBcnJheS5pbmRleE9mKHN0ZXBUb0hpZGUpID4gY3VycmVudFN0ZXBJbmRleCAmJlxuICAgICAgICAgICAgICAgICF0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0LmluY2x1ZGVzKHN0ZXBUb0hpZGUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0LnVuc2hpZnQoc3RlcFRvSGlkZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFN0YWNrZWRUb3AoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5fZ2V0Q3VycmVudFN0ZXAoKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0ZXAuc3RlcEluZGljYXRvcikge1xuICAgICAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkucmVtb3ZlKFNURVBfU1RBQ0tFRF9UT1BfQ0xBU1MpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLnRvQXJyYXkoKVtpbmRleCArIDFdID09PSBjdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLmFkZChTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGFja2VkU3RlcHNMZWZ0LmluY2x1ZGVzKHN0ZXApICYmIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5sZW5ndGggPj0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5zcGxpY2UoaW5kZXgsIDAsIHN0ZXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RlcEluZGljYXRvci5zZXRTdGFja2VkSXRlbXModGhpcy5zdGFja2VkU3RlcHNMZWZ0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3Iuc3RhY2tlZEl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCkuc3RlcEluZGljYXRvci5zZXRTdGFja2VkSXRlbXModGhpcy5zdGFja2VkU3RlcHNSaWdodCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNldFN0ZXBDbGFzc2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkucmVtb3ZlKFNURVBfU1RBQ0tFRF9UT1BfQ0xBU1MpO1xuICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9TVEFDS0VEX0NMQVNTKTtcbiAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkucmVtb3ZlKFNURVBfTk9fTEFCRUxfQ0xBU1MpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVN0ZXBPclN0YXR1c0NoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0Jhci52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9zaG93U3VtbWFyeSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0Jhci52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3NldENvbnRlbnRUZW1wbGF0ZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3Nocmlua1doaWxlQW55U3RlcElzVG9vTmFycm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhhbmRsZXIoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5faXNDdXJyZW50U3RlcFN1bW1hcnkoKSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvQ3VycmVudFN0ZXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3NldEZpbmFsU3RlcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0RmluYWxTdGVwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYXN0Tm9uU3VtbWFyeVN0ZXAgPSB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKTtcbiAgICAgICAgaWYgKGxhc3ROb25TdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMubGFzdC5pc1N1bW1hcnkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwcy5sYXN0LnJlbW92ZUZyb21Eb20oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsYXN0Tm9uU3VtbWFyeVN0ZXAuY29udGVudCkge1xuICAgICAgICAgICAgICAgIGxhc3ROb25TdW1tYXJ5U3RlcC5jb250ZW50LnRhbGxDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3ROb25TdW1tYXJ5U3RlcC5zZXRGaW5hbFN0ZXAodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3dTdW1tYXJ5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIGlmICghc3RlcC5pc1N1bW1hcnkpIHtcbiAgICAgICAgICAgICAgICBzdGVwLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5zdGVwcy5maW5kKChzdGVwKSA9PiBzdGVwLmlzU3VtbWFyeSk7XG4gICAgICAgIGlmIChzdW1tYXJ5KSB7XG4gICAgICAgICAgICBzdW1tYXJ5LmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzID0gW3N1bW1hcnkuY29udGVudC5jb250ZW50VGVtcGxhdGVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMuc29tZSgoc3RlcCkgPT4gc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgJiYgc3RlcC5pc1N1bW1hcnkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q3VycmVudFN0ZXAoKTogV2l6YXJkU3RlcENvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpbHRlcihcbiAgICAgICAgICAgIChzdGVwKSA9PiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyB8fCBzdGVwLnN0YXR1cyA9PT0gQUNUSVZFX1NURVBfU1RBVFVTXG4gICAgICAgIClbMF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpOiB2b2lkIHtcbiAgICAgICAgLy8gQWRkIHNtYWxsIGRlbGF5IGZvciBlbGVtZW50cyB0byByZW5kZXIgYXBwcm9wcmlhdGVseS5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc0xlZnQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZmlyc3Quc3RlcEluZGljYXRvci5zZXRTdGFja2VkSXRlbXModGhpcy5zdGFja2VkU3RlcHNMZWZ0KTtcbiAgICAgICAgICAgIHRoaXMuX2dldExhc3ROb25TdW1tYXJ5U3RlcCgpLnN0ZXBJbmRpY2F0b3Iuc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQpO1xuICAgICAgICAgICAgdGhpcy5fcmVzZXRTdGVwQ2xhc3NlcygpO1xuICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgd2hpbGUgKHRoaXMuX2FueVN0ZXBJc1Rvb05hcnJvdygpICYmIGkgPCB0aGlzLnN0ZXBzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2l6YXJkU2hyaW5raW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FueVN0ZXBJc1Rvb05hcnJvdygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMuc29tZSgoc3RlcCkgPT4gc3RlcC5nZXRTdGVwQ2xpZW50V2lkdGgoKSA8IFNURVBfTUlOX1dJRFRIKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXBDbGlja2VkKGNsaWNrZWRTdGVwOiBXaXphcmRTdGVwQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghY2xpY2tlZFN0ZXApIHtcbiAgICAgICAgICAgIGNsaWNrZWRTdGVwID0gdGhpcy5zdGVwcy5maXJzdDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjbGlja2VkU3RlcEluZGV4ID0gdGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihjbGlja2VkU3RlcCk7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0ZXAgPT09IGNsaWNrZWRTdGVwKSB7XG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDVVJSRU5UX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzQ2hhbmdlLmVtaXQoQ1VSUkVOVF9TVEVQX1NUQVRVUyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0ZXAgIT09IGNsaWNrZWRTdGVwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2Yoc3RlcCkgPCBjbGlja2VkU3RlcEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ09NUExFVEVEX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5lbWl0KENPTVBMRVRFRF9TVEVQX1NUQVRVUyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHN0ZXApID4gY2xpY2tlZFN0ZXBJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IFVQQ09NSU5HX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5lbWl0KFVQQ09NSU5HX1NURVBfU1RBVFVTKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIChkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5ibHVyKCk7IC8vIHRoaXMgZnVuY3Rpb24gY2FuIGZvY3VzIHN0ZXAgaW5kaWNhdG9ycyB1bmRlc2lyYWJseVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldExhc3ROb25TdW1tYXJ5U3RlcCgpOiBXaXphcmRTdGVwQ29tcG9uZW50IHtcbiAgICAgICAgaWYgKHRoaXMuc3RlcHMubGFzdC5pc1N1bW1hcnkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy50b0FycmF5KClbdGhpcy5zdGVwcy5sZW5ndGggLSAyXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmxhc3Q7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzY3JvbGxTcHlDaGFuZ2UoJGV2ZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIV9mcm9tU2Nyb2xsVG9DdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuX3N0ZXBJZC50b1N0cmluZygpID09PSAkZXZlbnQuY2hpbGRyZW5bMF0uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDVVJSRU5UX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RlcC5fc3RlcElkIDwgcGFyc2VJbnQoJGV2ZW50LmNoaWxkcmVuWzBdLmlkLCAxMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDT01QTEVURURfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBVUENPTUlOR19TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwiZmQtd2l6YXJkXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtd2l6YXJkLW5hdmlnYXRpb25cIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cImFwcGVuZFRvV2l6YXJkXCJcbiAgICAgICAgY2xhc3M9XCJmZC13aXphcmQtY29udGFpbmVyLXdyYXBwZXJcIlxuICAgICAgICAjd3JhcHBlckNvbnRhaW5lclxuICAgICAgICBmZFNjcm9sbFNweVxuICAgICAgICBbdHJhY2tlZFRhZ3NdPVwiWydkaXYnXVwiXG4gICAgICAgIChzcHlDaGFuZ2UpPVwic2Nyb2xsU3B5Q2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29udGVudFRlbXBsYXRlIG9mIGNvbnRlbnRUZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFhcHBlbmRUb1dpemFyZFwiIGNsYXNzPVwiZmQtd2l6YXJkLWNvbnRhaW5lci13cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbnRlbnRUZW1wbGF0ZSBvZiBjb250ZW50VGVtcGxhdGVzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvc2VjdGlvbj5cbiJdfQ==
525
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvd2l6YXJkL3dpemFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLFNBQVMsRUFFVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXhELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQUVsRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLDhCQUE4QixDQUFDO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLDBC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QkFzQkE7MkZEK0NhLGVBQWU7a0JBakIzQixTQUFTOytCQUNJLFdBQVcsaUJBR04saUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsTUFBTTs0QkFDZixXQUFXLGlCQUFpQjt5QkFDL0I7cUJBQ0osUUFDSzt3QkFDRixJQUFJLEVBQUUsUUFBUTt3QkFDZCxtQkFBbUIsRUFBRSxXQUFXO3FCQUNuQzs7MEJBb0VJLFFBQVE7NENBNURiLGNBQWM7c0JBRGIsS0FBSztnQkFRTixhQUFhO3NCQURaLEtBQUs7Z0JBUU4sa0JBQWtCO3NCQUZqQixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLHNDQUFzQztnQkFJbkQsa0JBQWtCO3NCQURqQixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixLQUFLO3NCQURKLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUszRCxXQUFXO3NCQURWLFlBQVk7dUJBQUMsMEJBQTBCO2dCQUt4QyxhQUFhO3NCQURaLGVBQWU7dUJBQUMsc0JBQXNCO2dCQUt2QyxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBNkI3QixhQUFhO3NCQURaLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGlhbG9nQm9keUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgc2Nyb2xsVG9wIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQgeyBXaXphcmRTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi93aXphcmQtc3RlcC93aXphcmQtc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2l6YXJkUHJvZ3Jlc3NCYXJEaXJlY3RpdmUgfSBmcm9tICcuL3dpemFyZC1wcm9ncmVzcy1iYXIvd2l6YXJkLXByb2dyZXNzLWJhci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV2l6YXJkQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4vd2l6YXJkLWNvbnRlbnQvd2l6YXJkLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEFDVElWRV9TVEVQX1NUQVRVUywgQ1VSUkVOVF9TVEVQX1NUQVRVUywgVVBDT01JTkdfU1RFUF9TVEFUVVMsIENPTVBMRVRFRF9TVEVQX1NUQVRVUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFdJWkFSRCB9IGZyb20gJy4vd2l6YXJkLWluamVjdGlvbi10b2tlbic7XG5cbmV4cG9ydCBjb25zdCBTVEVQX01JTl9XSURUSCA9IDE2ODtcbmV4cG9ydCBjb25zdCBTVEVQX1NUQUNLRURfVE9QX0NMQVNTID0gJ2ZkLXdpemFyZF9fc3RlcC0tc3RhY2tlZC10b3AnO1xuZXhwb3J0IGNvbnN0IFNURVBfU1RBQ0tFRF9DTEFTUyA9ICdmZC13aXphcmRfX3N0ZXAtLXN0YWNrZWQnO1xuZXhwb3J0IGNvbnN0IFNURVBfTk9fTEFCRUxfQ0xBU1MgPSAnZmQtd2l6YXJkX19zdGVwLS1uby1sYWJlbCc7XG5cbmV4cG9ydCBjb25zdCBXSVpBUkRfTkFWSUdBVElPTl9DTEFTUyA9ICdmZC13aXphcmRfX25hdmlnYXRpb24nO1xuZXhwb3J0IGNvbnN0IFdJWkFSRF9DT05URU5UX0NMQVNTID0gJ2ZkLXdpemFyZF9fY29udGVudCc7XG5leHBvcnQgY29uc3QgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTID0gJ2ZkLXdpemFyZC1jb250YWluZXItd3JhcHBlcic7XG5leHBvcnQgY29uc3QgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUyA9ICdmZC13aXphcmQtdGFsbC1jb250ZW50JztcbmV4cG9ydCBjb25zdCBTSEVMTEJBUl9DTEFTUyA9ICdmZC1zaGVsbGJhcic7XG5leHBvcnQgY29uc3QgQkFSX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZvb3Rlcic7XG5leHBvcnQgY29uc3QgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZsb2F0aW5nLWZvb3Rlcic7XG5cbmV4cG9ydCBsZXQgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwO1xuZXhwb3J0IGxldCB0aW1lcjogYW55ID0gbnVsbDtcbmV4cG9ydCBjb25zdCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aW1lciAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXAgPSBmYWxzZTtcbiAgICB9LCAxNTApO1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC13aXphcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXphcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3dpemFyZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFdJWkFSRCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBXaXphcmRDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAncmVnaW9uJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ2FyaWFMYWJlbCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFdpemFyZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gYXBwZW5kIHRoZSBzdGVwIHRvIHRoZSB3aXphcmQuIElmIGZhbHNlLCBlYWNoIHN0ZXAgd2lsbCBiZSBkaXNwbGF5ZWQgb24gYSBkaWZmZXJlbnQgcGFnZS5cbiAgICAgKiBEZWZhdWx0IGlzIHRydWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcHBlbmRUb1dpemFyZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gaGVpZ2h0IHRvIHVzZSBmb3IgdGhlIHdpemFyZCdzIGNvbnRlbnQgcGFuZS4gQnkgZGVmYXVsdCwgdGhpcyB2YWx1ZSBpcyBjYWxjKDEwMHZoIC0gMTQ0cHgpLCB3aGVyZSAxNDRweFxuICAgICAqIGlzIHRoZSBjb21iaW5lZCBoZWlnaHQgb2YgdGhlIHNoZWxsYmFyLCB3aXphcmQgaGVhZGVyIGFuZCB3aXphcmQgZm9vdGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29udGVudEhlaWdodDogTnVsbGFibGU8c3RyaW5nIHwgbnVsbD47XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCBhcHBseSByZXNwb25zaXZlIHBhZGRpbmdzIHN0eWxpbmcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXdpemFyZC0tcmVzcG9uc2l2ZS1wYWRkaW5ncycpXG4gICAgcmVzcG9uc2l2ZVBhZGRpbmdzID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlTdW1tYXJ5U3RlcCA9IGZhbHNlO1xuXG4gICAgLyoqIGFkZGluZyBhcmlhIGxhYmVsIHRvIHRoZSBjb21wb25lbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbCA9ICdXaXphcmQnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFdpemFyZFN0ZXBDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBzdGVwczogUXVlcnlMaXN0PFdpemFyZFN0ZXBDb21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlKVxuICAgIHByb2dyZXNzQmFyOiBXaXphcmRQcm9ncmVzc0JhckRpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaXphcmRDb250ZW50Q29tcG9uZW50KVxuICAgIHdpemFyZENvbnRlbnQ6IFdpemFyZENvbnRlbnRDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3dyYXBwZXJDb250YWluZXInKVxuICAgIHdyYXBwZXJDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb250ZW50VGVtcGxhdGVzOiBUZW1wbGF0ZVJlZjxhbnk+W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhY2tlZFN0ZXBzTGVmdDogV2l6YXJkU3RlcENvbXBvbmVudFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YWNrZWRTdGVwc1JpZ2h0OiBXaXphcmRTdGVwQ29tcG9uZW50W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RlcEV2ZW50U3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdGVwTGlzdENoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldmlvdXNXaWR0aDogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2VsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpYWxvZ0JvZHlDb21wb25lbnQ6IERpYWxvZ0JvZHlDb21wb25lbnRcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICAgIHJlc2l6ZUhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdpemFyZFdpZHRoID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgaWYgKCF0aGlzLl9wcmV2aW91c1dpZHRoIHx8IHdpemFyZFdpZHRoIDw9IHRoaXMuX3ByZXZpb3VzV2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3dpemFyZFNocmlua2luZygpO1xuICAgICAgICB9IGVsc2UgaWYgKHdpemFyZFdpZHRoID4gdGhpcy5fcHJldmlvdXNXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5fc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wcmV2aW91c1dpZHRoID0gd2l6YXJkV2lkdGg7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2V0Q29udGFpbmVyQW5kVGFsbENvbnRlbnRIZWlnaHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIC8vIGZpeGVzIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcbiAgICAgICAgICAgIHRoaXMuX3NldENvbnRlbnRUZW1wbGF0ZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3N0ZXBMaXN0Q2hhbmdlc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZVN0ZXBPclN0YXR1c0NoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBTdGVwRXZlbnRzKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zZXR1cFN0ZXBFdmVudHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZVN0ZXBPclN0YXR1c0NoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplSGFuZGxlcigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N0ZXBMaXN0Q2hhbmdlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLndyYXBwZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlVGltZW91dFJlZmVyZW5jZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwcml2YXRlXG4gICAgICogVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIHRoZSBoZWlnaHQgb2YgdGhlIHdpemFyZCBjb250ZW50IGJ5IGxvb2tpbmcgZm9yIHRoZSBkb2N1bWVudCdzIHNoZWxsYmFyLCB0aGUgd2l6YXJkXG4gICAgICogbmF2aWdhdGlvbiBhbmQgdGhlIHdpemFyZCBmb290ZXIsIGFuZCBjYWxjdWxhdGluZyB0aGUgaGVpZ2h0IGJhc2VkIG9uIHRoZWlyIHByZXNlbmNlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUNvbnRlbnRIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHdpemFyZE5hdkhlaWdodCA9IDA7XG4gICAgICAgIGNvbnN0IHNoZWxsYmFySGVpZ2h0ID0gdGhpcy5fZ2V0U2hlbGxiYXJIZWlnaHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpIHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICB3aXphcmROYXZIZWlnaHQgPSB0aGlzLl9nZXRXaXphcmROYXZIZWlnaHQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3aXphcmRGb290ZXJIZWlnaHQgPSB0aGlzLl9nZXRXaXphcmRGb290ZXJIZWlnaHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nT2Zmc2V0ID0gdGhpcy5fZ2V0RGlhbG9nT2Zmc2V0KCk7XG5cbiAgICAgICAgcmV0dXJuIHNoZWxsYmFySGVpZ2h0ICsgd2l6YXJkTmF2SGVpZ2h0ICsgd2l6YXJkRm9vdGVySGVpZ2h0ICsgZGlhbG9nT2Zmc2V0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0U2hlbGxiYXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuJyArIFNIRUxMQkFSX0NMQVNTKT8uY2xpZW50SGVpZ2h0ID8/IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRXaXphcmROYXZIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IHJldFZhbDtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9OQVZJR0FUSU9OX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1MpLmNsaWVudEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFZhbCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFdpemFyZEZvb3RlckhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgcmV0VmFsO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZPT1RFUl9DTEFTUykpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIEJBUl9GT09URVJfQ0xBU1MpLm9mZnNldEhlaWdodDtcbiAgICAgICAgfSBlbHNlIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRkxPQVRJTkdfRk9PVEVSX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUykub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0VmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RGlhbG9nT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCByZXRWYWwgPSAwO1xuICAgICAgICBpZiAodGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29uc3QgZGlhbG9nQm9keSA9IHRoaXMuX2RpYWxvZ0JvZHlDb21wb25lbnQuZWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoZGlhbG9nQm9keS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdmZC1kaWFsb2ctYm9keScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaWFsb2dCb2R5Q29tcG9uZW50LmRpYWxvZ0NvbmZpZy52ZXJ0aWNhbFBhZGRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaWFsb2dCb2R5VGl0bGUgPSBkaWFsb2dCb2R5LnF1ZXJ5U2VsZWN0b3IoJy5mZC10aXRsZS0taDInKTtcbiAgICAgICAgICAgICAgICBpZiAoZGlhbG9nQm9keVRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IGRpYWxvZ0JvZHlUaXRsZS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbCArIHdpbmRvdy5pbm5lckhlaWdodCAtIGRpYWxvZ0JvZHkub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldENvbnRhaW5lckFuZFRhbGxDb250ZW50SGVpZ2h0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBjb21iaW5lZEhlaWdodCA9IHRoaXMuY29udGVudEhlaWdodCA/IHRoaXMuY29udGVudEhlaWdodCA6IHRoaXMuX2NhbGN1bGF0ZUNvbnRlbnRIZWlnaHQoKTtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykpIHtcbiAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykuc3R5bGUuaGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAnY2FsYygxMDB2aCAtICcgKyBjb21iaW5lZEhlaWdodCArICdweCknO1xuICAgICAgICB9XG4gICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIFdJWkFSRF9DT05URU5UX0NMQVNTKS5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBub2RlLnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLm9mZnNldEhlaWdodCA8XG4gICAgICAgICAgICAgICAgd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTKS5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICdjYWxjKDEwMHZoIC0gJyArIGNvbWJpbmVkSGVpZ2h0ICsgJ3B4KSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLnN0eWxlLnBhZGRpbmdCb3R0b20gPSAnMjRweCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldHVwU3RlcEV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgICAgIHN0ZXAuc3RlcENsaWNrZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGVwQ2xpY2tlZChldmVudCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3JJdGVtQ2xpY2tlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0ZXBDbGlja2VkKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIG5lZWQgdG8gY2FsbCB3aXphcmRTaHJpbmtpbmcgZm9yIGVhY2ggc3RlcCA8IDE2OHB4IG9uIGZpcnN0IGxvYWRcbiAgICAgICAgICAgIGlmIChzdGVwLndpemFyZExhYmVsICYmIHN0ZXAuZ2V0U3RlcENsaWVudFdpZHRoKCkgPCBTVEVQX01JTl9XSURUSCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dpemFyZFNocmlua2luZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3dpemFyZFNocmlua2luZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXAgPSB0aGlzLl9nZXRDdXJyZW50U3RlcCgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjdXJyZW50U3RlcCAmJlxuICAgICAgICAgICAgKCFjdXJyZW50U3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApICYmXG4gICAgICAgICAgICBjdXJyZW50U3RlcC53aXphcmRMYWJlbCAmJlxuICAgICAgICAgICAgY3VycmVudFN0ZXAuZ2V0U3RlcENsaWVudFdpZHRoKCkgPCBTVEVQX01JTl9XSURUSFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX2hpZGVTb21lU3RlcChjdXJyZW50U3RlcCk7XG4gICAgICAgICAgICB0aGlzLl9zZXRTdGFja2VkVG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldENvbnRlbnRUZW1wbGF0ZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlc0xlbmd0aCA9IHRoaXMuY29udGVudFRlbXBsYXRlcy5sZW5ndGg7XG4gICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcyA9IFtdO1xuICAgICAgICBsZXQgX3N0ZXBJZCA9IDA7XG4gICAgICAgIGNvbnN0IHN0ZXBzID0gdGhpcy5zdGVwcy50b0FycmF5KCk7XG4gICAgICAgIGZvciAoY29uc3Qgc3RlcCBvZiBzdGVwcykge1xuICAgICAgICAgICAgaWYgKHN0ZXAuY29udGVudCkge1xuICAgICAgICAgICAgICAgIGlmICghc3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5jb250ZW50LnRhbGxDb250ZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC53aXphcmRDb250ZW50SWQgPSBfc3RlcElkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGVwLl9zdGVwSWQgPSBfc3RlcElkO1xuICAgICAgICAgICAgX3N0ZXBJZCsrO1xuICAgICAgICAgICAgc3RlcC5zZXRGaW5hbFN0ZXAoZmFsc2UpO1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICBJZiB0aGUgc3RlcCBpcyBjb21wbGV0ZWQgYW5kIGFwcGVuZFRvV2l6YXJkIGlzIHRydWUsIGhpZGUgdGhlIG5leHRTdGVwIGJ1dHRvbiwgdW5sZXNzIGl0J3MgdGhlIGxhc3Qgc3RlcCxcbiAgICAgICAgICAgICBvciBpZiB0aGVyZSdzIGEgc3VtbWFyeSBhbmQgaXQgaXMgdGhlIHNlY29uZCB0byBsYXN0IHN0ZXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHN0ZXAuY29tcGxldGVkICYmXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRUb1dpemFyZCAmJlxuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudD8ubmV4dFN0ZXA/LmNhbkhpZGUgJiZcbiAgICAgICAgICAgICAgICBzdGVwICE9PSB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgc3RlcC5jb250ZW50Lm5leHRTdGVwLl9oaWRlRWxlbWVudCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQ/Lm5leHRTdGVwICYmXG4gICAgICAgICAgICAgICAgKChzdGVwLmNvbXBsZXRlZCAmJiB0aGlzLmFwcGVuZFRvV2l6YXJkKSB8fFxuICAgICAgICAgICAgICAgICAgICAoc3RlcC52aXNpdGVkICYmIHN0ZXAuYnJhbmNoaW5nICYmIHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC5uZXh0U3RlcC5fc2hvd0VsZW1lbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLnZpc2l0ZWQgfHxcbiAgICAgICAgICAgICAgICAoKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTIHx8IHN0ZXAuc3RhdHVzID09PSBDT01QTEVURURfU1RFUF9TVEFUVVMpICYmIHN0ZXAuY29udGVudClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAudmlzaXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmICghc3RlcC5jb21wbGV0ZWQgfHwgIXRoaXMuYXBwZW5kVG9XaXphcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50U3RlcCA9ICF0aGlzLmFwcGVuZFRvV2l6YXJkICYmIHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0ZW1wbGF0ZXNMZW5ndGggfHwgaXNDdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMgPSBbc3RlcC5jb250ZW50LmNvbnRlbnRUZW1wbGF0ZV07XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgbmVlZGVkIHN0ZXAsIGJyZWFrIHRoZSBjeWNsZSwgc2luY2UgaXQgbWlnaHQgc2V0IHdyb25nIHN0ZXAgbGF0ZXIuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0N1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBlbmRUb1dpemFyZCAmJiAoIXN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMucHVzaChzdGVwLmNvbnRlbnQuY29udGVudFRlbXBsYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXN0VmlzaWJsZVRlbXBsYXRlID0gc3RlcHNbdGhpcy5jb250ZW50VGVtcGxhdGVzLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAobGFzdFZpc2libGVUZW1wbGF0ZSAmJiBsYXN0VmlzaWJsZVRlbXBsYXRlLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIGxhc3RWaXNpYmxlVGVtcGxhdGUuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0RmluYWxTdGVwKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zY3JvbGxUb0N1cnJlbnRTdGVwKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hcHBlbmRUb1dpemFyZCkge1xuICAgICAgICAgICAgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgJiYgKCFzdGVwLmlzU3VtbWFyeSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLndyYXBwZXJDb250YWluZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbltpbmRleF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpemFyZE5hdmlnYXRpb25IZWlnaHQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnLicgKyBXSVpBUkRfTkFWSUdBVElPTl9DTEFTU1xuICAgICAgICAgICAgICAgICAgICApLmNsaWVudEhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3AodGhpcy53cmFwcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIGNoaWxkLm9mZnNldFRvcCAtIHdpemFyZE5hdmlnYXRpb25IZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fc2V0VXBTY3JvbGxMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRVcFNjcm9sbExpc3RlbmVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndyYXBwZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlVGltZW91dFJlZmVyZW5jZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGlkZVNvbWVTdGVwKGN1cnJlbnRTdGVwOiBXaXphcmRTdGVwQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIC8vIElmIGEgc21hbGwgc3RlcCB3YXMgZm91bmQsIGdldCB0aGUgc3RlcCB3aXRoIGEgdmlzaWJsZSBsYWJlbCBmdXJ0aGVzdCBhd2F5IGZyb20gdGhlIGN1cnJlbnQgc3RlcCBhbmQgaGlkZSB0aGUgbGFiZWxcbiAgICAgICAgbGV0IHN0ZXBzQXJyYXkgPSB0aGlzLnN0ZXBzLnRvQXJyYXkoKTtcbiAgICAgICAgc3RlcHNBcnJheSA9IHN0ZXBzQXJyYXkuZmlsdGVyKChzdGVwKSA9PiAhc3RlcC5oYXNMYWJlbChTVEVQX05PX0xBQkVMX0NMQVNTKSk7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgc3RlcHNBcnJheS5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RlcHNBcnJheS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudFN0ZXBJbmRleCA9IDAsXG4gICAgICAgICAgICAgICAgc3RlcFRvSGlkZTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwSW5kZXggPSBzdGVwc0FycmF5LmluZGV4T2YoY3VycmVudFN0ZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudFN0ZXBJbmRleCA+IChzdGVwc0FycmF5Lmxlbmd0aCAtIDEpIC8gMlxuICAgICAgICAgICAgICAgID8gKHN0ZXBUb0hpZGUgPSBzdGVwc0FycmF5WzBdKVxuICAgICAgICAgICAgICAgIDogKHN0ZXBUb0hpZGUgPSBzdGVwc0FycmF5W3N0ZXBzQXJyYXkubGVuZ3RoIC0gMV0pO1xuICAgICAgICAgICAgc3RlcFRvSGlkZS5nZXRDbGFzc0xpc3QoKS5hZGQoU1RFUF9OT19MQUJFTF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwVG9IaWRlLmdldENsYXNzTGlzdCgpLmFkZChTVEVQX1NUQUNLRURfQ0xBU1MpO1xuICAgICAgICAgICAgaWYgKHN0ZXBzQXJyYXkuaW5kZXhPZihzdGVwVG9IaWRlKSA8IGN1cnJlbnRTdGVwSW5kZXggJiYgIXRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5pbmNsdWRlcyhzdGVwVG9IaWRlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5zcGxpY2UodGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihzdGVwVG9IaWRlKSwgMCwgc3RlcFRvSGlkZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHN0ZXBzQXJyYXkuaW5kZXhPZihzdGVwVG9IaWRlKSA+IGN1cnJlbnRTdGVwSW5kZXggJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5zdGFja2VkU3RlcHNSaWdodC5pbmNsdWRlcyhzdGVwVG9IaWRlKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNSaWdodC51bnNoaWZ0KHN0ZXBUb0hpZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRTdGFja2VkVG9wKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcCA9IHRoaXMuX2dldEN1cnJlbnRTdGVwKCk7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGVwLnN0ZXBJbmRpY2F0b3IpIHtcbiAgICAgICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwcy50b0FycmF5KClbaW5kZXggKyAxXSA9PT0gY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5hZGQoU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5pbmNsdWRlcyhzdGVwKSAmJiB0aGlzLnN0YWNrZWRTdGVwc0xlZnQubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc0xlZnQuc3BsaWNlKGluZGV4LCAwLCBzdGVwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3Iuc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzTGVmdCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGVwSW5kaWNhdG9yLnN0YWNrZWRJdGVtcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2dldExhc3ROb25TdW1tYXJ5U3RlcCgpLnN0ZXBJbmRpY2F0b3Iuc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRTdGVwQ2xhc3NlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkucmVtb3ZlKFNURVBfU1RBQ0tFRF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX05PX0xBQkVMX0NMQVNTKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNDdXJyZW50U3RlcFN1bW1hcnkoKSAmJiAhdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fc2hvd1N1bW1hcnkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZW50VGVtcGxhdGVzKCk7XG4gICAgICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVIYW5kbGVyKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0N1cnJlbnRTdGVwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zZXRGaW5hbFN0ZXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldEZpbmFsU3RlcCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGFzdE5vblN1bW1hcnlTdGVwID0gdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCk7XG4gICAgICAgIGlmIChsYXN0Tm9uU3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcHMubGFzdC5yZW1vdmVGcm9tRG9tKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGFzdE5vblN1bW1hcnlTdGVwLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBsYXN0Tm9uU3VtbWFyeVN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXN0Tm9uU3VtbWFyeVN0ZXAuc2V0RmluYWxTdGVwKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaG93U3VtbWFyeSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXN0ZXAuaXNTdW1tYXJ5KSB7XG4gICAgICAgICAgICAgICAgc3RlcC5jb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc3VtbWFyeSA9IHRoaXMuc3RlcHMuZmluZCgoc3RlcCkgPT4gc3RlcC5pc1N1bW1hcnkpO1xuICAgICAgICBpZiAoc3VtbWFyeSkge1xuICAgICAgICAgICAgc3VtbWFyeS5jb250ZW50LnRhbGxDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcyA9IFtzdW1tYXJ5LmNvbnRlbnQuY29udGVudFRlbXBsYXRlXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNDdXJyZW50U3RlcFN1bW1hcnkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnNvbWUoKHN0ZXApID0+IHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmIHN0ZXAuaXNTdW1tYXJ5KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEN1cnJlbnRTdGVwKCk6IFdpemFyZFN0ZXBDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5maWx0ZXIoXG4gICAgICAgICAgICAoc3RlcCkgPT4gc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgfHwgc3RlcC5zdGF0dXMgPT09IEFDVElWRV9TVEVQX1NUQVRVU1xuICAgICAgICApWzBdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTogdm9pZCB7XG4gICAgICAgIC8vIEFkZCBzbWFsbCBkZWxheSBmb3IgZWxlbWVudHMgdG8gcmVuZGVyIGFwcHJvcHJpYXRlbHkuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNMZWZ0ID0gW107XG4gICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0ID0gW107XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZpcnN0LnN0ZXBJbmRpY2F0b3Iuc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzTGVmdCk7XG4gICAgICAgICAgICB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKS5zdGVwSW5kaWNhdG9yLnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0KTtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0U3RlcENsYXNzZXMoKTtcbiAgICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLl9hbnlTdGVwSXNUb29OYXJyb3coKSAmJiBpIDwgdGhpcy5zdGVwcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIHRoaXMuX3dpemFyZFNocmlua2luZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAxMCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hbnlTdGVwSXNUb29OYXJyb3coKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnNvbWUoKHN0ZXApID0+IHN0ZXAuZ2V0U3RlcENsaWVudFdpZHRoKCkgPCBTVEVQX01JTl9XSURUSCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdGVwQ2xpY2tlZChjbGlja2VkU3RlcDogV2l6YXJkU3RlcENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIWNsaWNrZWRTdGVwKSB7XG4gICAgICAgICAgICBjbGlja2VkU3RlcCA9IHRoaXMuc3RlcHMuZmlyc3Q7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2xpY2tlZFN0ZXBJbmRleCA9IHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2YoY2xpY2tlZFN0ZXApO1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIGlmIChzdGVwID09PSBjbGlja2VkU3RlcCkge1xuICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5lbWl0KENVUlJFTlRfU1RFUF9TVEFUVVMpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdGVwICE9PSBjbGlja2VkU3RlcCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHN0ZXApIDwgY2xpY2tlZFN0ZXBJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IENPTVBMRVRFRF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2UuZW1pdChDT01QTEVURURfU1RFUF9TVEFUVVMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihzdGVwKSA+IGNsaWNrZWRTdGVwSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBVUENPTUlOR19TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2UuZW1pdChVUENPTUlOR19TVEVQX1NUQVRVUyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuYmx1cigpOyAvLyB0aGlzIGZ1bmN0aW9uIGNhbiBmb2N1cyBzdGVwIGluZGljYXRvcnMgdW5kZXNpcmFibHlcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKTogV2l6YXJkU3RlcENvbXBvbmVudCB7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMudG9BcnJheSgpW3RoaXMuc3RlcHMubGVuZ3RoIC0gMl07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5sYXN0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2Nyb2xsU3B5Q2hhbmdlKCRldmVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGVwLl9zdGVwSWQudG9TdHJpbmcoKSA9PT0gJGV2ZW50LmNoaWxkcmVuWzBdLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0ZXAuX3N0ZXBJZCA8IHBhcnNlSW50KCRldmVudC5jaGlsZHJlblswXS5pZCwgMTApKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ09NUExFVEVEX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gVVBDT01JTkdfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTtcbiAgICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cImZkLXdpemFyZFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZkLXdpemFyZC1uYXZpZ2F0aW9uXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJhcHBlbmRUb1dpemFyZFwiXG4gICAgICAgIGNsYXNzPVwiZmQtd2l6YXJkLWNvbnRhaW5lci13cmFwcGVyXCJcbiAgICAgICAgI3dyYXBwZXJDb250YWluZXJcbiAgICAgICAgZmRTY3JvbGxTcHlcbiAgICAgICAgY2RrU2Nyb2xsYWJsZVxuICAgICAgICBbdHJhY2tlZFRhZ3NdPVwiWydkaXYnXVwiXG4gICAgICAgIChzcHlDaGFuZ2UpPVwic2Nyb2xsU3B5Q2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29udGVudFRlbXBsYXRlIG9mIGNvbnRlbnRUZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFhcHBlbmRUb1dpemFyZFwiIGNka1Njcm9sbGFibGUgY2xhc3M9XCJmZC13aXphcmQtY29udGFpbmVyLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29udGVudFRlbXBsYXRlIG9mIGNvbnRlbnRUZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9zZWN0aW9uPlxuIl19