@fundamental-ngx/core 0.34.3-rc.21 → 0.34.3-rc.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/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/fixed-card-layout/fixed-card-layout.component.mjs +15 -4
  22. package/facets/package.json +1 -1
  23. package/feed-input/package.json +1 -1
  24. package/feed-list-item/package.json +1 -1
  25. package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs +14 -3
  26. package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  27. package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs +14 -3
  28. package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  29. package/file-uploader/package.json +1 -1
  30. package/fixed-card-layout/esm2020/fixed-card-layout.component.mjs +15 -4
  31. package/fixed-card-layout/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs +14 -3
  32. package/fixed-card-layout/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  33. package/fixed-card-layout/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs +14 -3
  34. package/fixed-card-layout/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  35. package/fixed-card-layout/fixed-card-layout.component.d.ts +3 -1
  36. package/fixed-card-layout/package.json +1 -1
  37. package/flexible-column-layout/package.json +1 -1
  38. package/form/package.json +1 -1
  39. package/formatted-text/package.json +1 -1
  40. package/grid-list/package.json +1 -1
  41. package/icon/package.json +1 -1
  42. package/illustrated-message/package.json +1 -1
  43. package/infinite-scroll/package.json +1 -1
  44. package/info-label/package.json +1 -1
  45. package/inline-help/package.json +1 -1
  46. package/input-group/package.json +1 -1
  47. package/layout-grid/package.json +1 -1
  48. package/layout-panel/package.json +1 -1
  49. package/link/package.json +1 -1
  50. package/list/package.json +1 -1
  51. package/menu/package.json +1 -1
  52. package/message-box/package.json +1 -1
  53. package/message-strip/package.json +1 -1
  54. package/message-toast/package.json +1 -1
  55. package/micro-process-flow/package.json +1 -1
  56. package/mobile-mode/package.json +1 -1
  57. package/multi-input/package.json +1 -1
  58. package/nested-list/package.json +1 -1
  59. package/notification/package.json +1 -1
  60. package/object-identifier/package.json +1 -1
  61. package/object-marker/package.json +1 -1
  62. package/object-number/package.json +1 -1
  63. package/object-status/package.json +1 -1
  64. package/package.json +1 -1
  65. package/pagination/package.json +1 -1
  66. package/panel/package.json +1 -1
  67. package/popover/package.json +1 -1
  68. package/product-switch/package.json +1 -1
  69. package/progress-indicator/package.json +1 -1
  70. package/quick-view/package.json +1 -1
  71. package/radio/package.json +1 -1
  72. package/rating-indicator/package.json +1 -1
  73. package/resizable-card-layout/package.json +1 -1
  74. package/scroll-spy/package.json +1 -1
  75. package/scrollbar/package.json +1 -1
  76. package/segmented-button/package.json +1 -1
  77. package/select/package.json +1 -1
  78. package/shared/package.json +1 -1
  79. package/shellbar/package.json +1 -1
  80. package/side-navigation/package.json +1 -1
  81. package/slider/package.json +1 -1
  82. package/split-button/package.json +1 -1
  83. package/splitter/package.json +1 -1
  84. package/status-indicator/package.json +1 -1
  85. package/step-input/package.json +1 -1
  86. package/switch/package.json +1 -1
  87. package/table/package.json +1 -1
  88. package/tabs/package.json +1 -1
  89. package/text/package.json +1 -1
  90. package/tile/package.json +1 -1
  91. package/time/package.json +1 -1
  92. package/time-picker/package.json +1 -1
  93. package/timeline/package.json +1 -1
  94. package/title/package.json +1 -1
  95. package/token/package.json +1 -1
  96. package/toolbar/package.json +1 -1
  97. package/tree/package.json +1 -1
  98. package/upload-collection/package.json +1 -1
  99. package/utils/package.json +1 -1
  100. package/vertical-navigation/package.json +1 -1
  101. package/wizard/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/action-bar",
3
- "version": "0.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -15,6 +15,7 @@ const PX_IN_REM = 16;
15
15
  const CARD_MINIMUM_WIDTH = 320; // 320px = 20rem
16
16
  const CARD_GAP_WIDTH = 16; // 16px = 1rem
17
17
  const DRAG_START_DELAY = 200; // in ms
18
+ const MAX_COLUMNS = 10;
18
19
  let cardRank = 1;
19
20
  export class CardDefinitionDirective {
20
21
  /** @hidden */
@@ -52,6 +53,8 @@ export class FixedCardLayoutComponent {
52
53
  this._rtlService = _rtlService;
53
54
  /** Drag start delay in milliseconds, default to 200ms for safe scrolling on mobile with touchscreen */
54
55
  this.dragStartDelay = DRAG_START_DELAY;
56
+ /** Limit the number of columns. Default is 10. */
57
+ this.maxColumns = MAX_COLUMNS;
55
58
  /** Event to emit, when layout changes */
56
59
  this.layoutChange = new EventEmitter();
57
60
  /** Event to emit on Card dragged and dropped */
@@ -145,7 +148,13 @@ export class FixedCardLayoutComponent {
145
148
  }
146
149
  /** @hidden */
147
150
  ngOnChanges(changes) {
148
- if ('columnsWidthConfig' in changes && this._cards?.length) {
151
+ if (!this._cards?.length) {
152
+ return;
153
+ }
154
+ if ('maxColumns' in changes) {
155
+ this.updateLayout();
156
+ }
157
+ else if ('columnsWidthConfig' in changes) {
149
158
  this._setColumnsWidth();
150
159
  }
151
160
  }
@@ -167,7 +176,7 @@ export class FixedCardLayoutComponent {
167
176
  return;
168
177
  }
169
178
  const possibleNumberOfColumns = getNumberOfColumns(this._availableWidth, this.cardMinimumWidth);
170
- this._numberOfColumns = Math.min(possibleNumberOfColumns, this._cards.length);
179
+ this._numberOfColumns = Math.min(possibleNumberOfColumns, this._cards.length, this.maxColumns || MAX_COLUMNS, MAX_COLUMNS);
171
180
  this.layoutChange.emit({
172
181
  numberOfColumns: this._numberOfColumns,
173
182
  screenSize: this._availableWidth
@@ -321,7 +330,7 @@ export class FixedCardLayoutComponent {
321
330
  }
322
331
  }
323
332
  FixedCardLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: FixedCardLayoutComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
324
- FixedCardLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: FixedCardLayoutComponent, selector: "fd-fixed-card-layout", inputs: { disableDragDrop: "disableDragDrop", dragStartDelay: "dragStartDelay", cardMinimumWidth: "cardMinimumWidth", columnsWidthConfig: "columnsWidthConfig" }, outputs: { layoutChange: "layoutChange", cardDraggedDropped: "cardDraggedDropped" }, host: { listeners: { "keydown": "handleKeydown($event)" }, classAttribute: "fd-fixed-card-layout" }, queries: [{ propertyName: "_cards", predicate: CardDefinitionDirective }], viewQueries: [{ propertyName: "_layout", first: true, predicate: ["layout"], descendants: true }, { propertyName: "_cardContainers", predicate: FixedCardLayoutItemComponent, descendants: true }, { propertyName: "_cardWrappers", predicate: ["dropList"], descendants: true, read: CdkDropList }], usesOnChanges: true, ngImport: i0, template: "<div\n #layout\n cdkDropListGroup\n fdDndKeyboardGroup\n class=\"fd-fixed-card-layout__card-layout fd-fixed-card-layout__card-layout--columns-{{ this._numberOfColumns }}\"\n [style.height]=\"_containerHeight + 'px'\"\n [groups]=\"_cardColumns\"\n orientation=\"horizontal\"\n [customMoveFn]=\"_customMoveFn\"\n [customTransferFn]=\"_customTransferFn\"\n [disableKeyboardDragDrop]=\"disableDragDrop\"\n [cdkDropListGroupDisabled]=\"disableDragDrop\"\n [attr.dir]=\"_dir\"\n>\n <div\n #dropList\n *ngFor=\"let card of _cardsArray; let cardIndex = index\"\n cdkDropList\n cdkDropListSortingDisabled\n class=\"fd-fixed-card-layout__card\"\n [class.fd-fixed-card-layout__card--single]=\"_singleItemColumns.has(card.fdCardDef)\"\n [style.min-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.max-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [cdkDropListData]=\"cardIndex\"\n [cdkDropListEnterPredicate]=\"_enterPredicate\"\n (cdkDropListEntered)=\"_onDropListEntered($event)\"\n (cdkDropListExited)=\"_onDropListExited()\"\n >\n <div\n cdkDrag\n fdDndKeyboardItem\n tabindex=\"0\"\n cdkDragPreviewClass=\"fd-fixed-card-layout__card-preview\"\n [cdkDragData]=\"card\"\n [cdkDragStartDelay]=\"dragStartDelay\"\n [itemIndex]=\"_itemIndexes.get(card.fdCardDef)\"\n [groupIndex]=\"_groupIndexes.get(card.fdCardDef)\"\n (cdkDragDropped)=\"_onDragDropped($event)\"\n (cdkDragStarted)=\"_setPlaceholderStyle(false)\"\n >\n <fd-fixed-card-layout-item>\n <ng-container *ngTemplateOutlet=\"card?.template\"> </ng-container>\n </fd-fixed-card-layout-item>\n\n <div *cdkDragPlaceholder class=\"fd-fixed-card-layout__card-placeholder\" [style]=\"_placeholderMargin\">\n <ng-container *ngTemplateOutlet=\"card?.template\"></ng-container>\n </div>\n </div>\n </div>\n\n <ng-container *ngFor=\"let column of _cardColumns; let last = last; let index = index\">\n <div *ngIf=\"!last\" class=\"fd-fixed-card-layout__clearfix\" [style.order]=\"index + 1\"></div>\n </ng-container>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.0-rc.8\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-fixed-card-layout{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-fixed-card-layout:after,.fd-fixed-card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout{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-left:-1rem;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap;flex-direction:column;margin-top:-1rem}.fd-fixed-card-layout__card-layout:after,.fd-fixed-card-layout__card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card-layout{margin-right:-1rem;margin-left:0}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card{width:50%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card{width:33.3333333333%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card{width:25%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card{width:20%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card{width:16.6666666667%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card{width:14.2857142857%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card{width:12.5%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card{width:11.1111111111%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n){order:9}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card{width:10%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n){order:10}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+9){order:9}.fd-fixed-card-layout__card,.fd-fixed-card-layout__card-placeholder{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;min-width:20rem;min-height:.0625rem}.fd-fixed-card-layout__card-placeholder:after,.fd-fixed-card-layout__card-placeholder:before,.fd-fixed-card-layout__card:after,.fd-fixed-card-layout__card:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{padding-left:1rem;order:1;padding-top:1rem}.fd-fixed-card-layout__card[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card{padding-right:1rem;padding-left:0}.fd-fixed-card-layout__card--single{flex-basis:100%}.fd-fixed-card-layout__card:empty{padding-top:0}.fd-fixed-card-layout__card-placeholder{opacity:.3;border:.125rem dashed var(--sapContent_DragAndDropActiveColor);cursor:grabbing}.fd-fixed-card-layout__card-preview{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;padding:0;margin:0;border:0;box-sizing:border-box;border-radius:var(--sapElement_BorderCornerRadius);box-shadow:var(--sapContent_Shadow2)}.fd-fixed-card-layout__card-preview:after,.fd-fixed-card-layout__card-preview:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__clearfix{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:0;flex-basis:100%}.fd-fixed-card-layout__clearfix:after,.fd-fixed-card-layout__clearfix:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{width:100%}.fd-fixed-card-layout__card-placeholder{width:100%;min-width:100%;max-width:100%}\n"], components: [{ type: i2.FixedCardLayoutItemComponent, selector: "fd-fixed-card-layout-item" }], directives: [{ type: i3.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { type: i1.DndKeyboardGroupDirective, selector: "[fdDndKeyboardGroup]", inputs: ["groups", "disableKeyboardDragDrop", "orientation", "customMoveFn", "customTransferFn"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i1.DndKeyboardItemDirective, selector: "[fdDndKeyboardItem]", inputs: ["itemIndex", "groupIndex"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
333
+ FixedCardLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: FixedCardLayoutComponent, selector: "fd-fixed-card-layout", inputs: { disableDragDrop: "disableDragDrop", dragStartDelay: "dragStartDelay", cardMinimumWidth: "cardMinimumWidth", columnsWidthConfig: "columnsWidthConfig", maxColumns: "maxColumns" }, outputs: { layoutChange: "layoutChange", cardDraggedDropped: "cardDraggedDropped" }, host: { listeners: { "keydown": "handleKeydown($event)" }, classAttribute: "fd-fixed-card-layout" }, queries: [{ propertyName: "_cards", predicate: CardDefinitionDirective }], viewQueries: [{ propertyName: "_layout", first: true, predicate: ["layout"], descendants: true }, { propertyName: "_cardContainers", predicate: FixedCardLayoutItemComponent, descendants: true }, { propertyName: "_cardWrappers", predicate: ["dropList"], descendants: true, read: CdkDropList }], usesOnChanges: true, ngImport: i0, template: "<div\n #layout\n cdkDropListGroup\n fdDndKeyboardGroup\n class=\"fd-fixed-card-layout__card-layout fd-fixed-card-layout__card-layout--columns-{{ this._numberOfColumns }}\"\n [style.height]=\"_containerHeight + 'px'\"\n [groups]=\"_cardColumns\"\n orientation=\"horizontal\"\n [customMoveFn]=\"_customMoveFn\"\n [customTransferFn]=\"_customTransferFn\"\n [disableKeyboardDragDrop]=\"disableDragDrop\"\n [cdkDropListGroupDisabled]=\"disableDragDrop\"\n [attr.dir]=\"_dir\"\n>\n <div\n #dropList\n *ngFor=\"let card of _cardsArray; let cardIndex = index\"\n cdkDropList\n cdkDropListSortingDisabled\n class=\"fd-fixed-card-layout__card\"\n [class.fd-fixed-card-layout__card--single]=\"_singleItemColumns.has(card.fdCardDef)\"\n [style.min-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.max-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [cdkDropListData]=\"cardIndex\"\n [cdkDropListEnterPredicate]=\"_enterPredicate\"\n (cdkDropListEntered)=\"_onDropListEntered($event)\"\n (cdkDropListExited)=\"_onDropListExited()\"\n >\n <div\n cdkDrag\n fdDndKeyboardItem\n tabindex=\"0\"\n cdkDragPreviewClass=\"fd-fixed-card-layout__card-preview\"\n [cdkDragData]=\"card\"\n [cdkDragStartDelay]=\"dragStartDelay\"\n [itemIndex]=\"_itemIndexes.get(card.fdCardDef)\"\n [groupIndex]=\"_groupIndexes.get(card.fdCardDef)\"\n (cdkDragDropped)=\"_onDragDropped($event)\"\n (cdkDragStarted)=\"_setPlaceholderStyle(false)\"\n >\n <fd-fixed-card-layout-item>\n <ng-container *ngTemplateOutlet=\"card?.template\"> </ng-container>\n </fd-fixed-card-layout-item>\n\n <div *cdkDragPlaceholder class=\"fd-fixed-card-layout__card-placeholder\" [style]=\"_placeholderMargin\">\n <ng-container *ngTemplateOutlet=\"card?.template\"></ng-container>\n </div>\n </div>\n </div>\n\n <ng-container *ngFor=\"let column of _cardColumns; let last = last; let index = index\">\n <div *ngIf=\"!last\" class=\"fd-fixed-card-layout__clearfix\" [style.order]=\"index + 1\"></div>\n </ng-container>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.0-rc.8\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-fixed-card-layout{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-fixed-card-layout:after,.fd-fixed-card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout{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-left:-1rem;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap;flex-direction:column;margin-top:-1rem}.fd-fixed-card-layout__card-layout:after,.fd-fixed-card-layout__card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card-layout{margin-right:-1rem;margin-left:0}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card{width:50%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card{width:33.3333333333%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card{width:25%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card{width:20%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card{width:16.6666666667%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card{width:14.2857142857%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card{width:12.5%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card{width:11.1111111111%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n){order:9}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card{width:10%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n){order:10}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+9){order:9}.fd-fixed-card-layout__card,.fd-fixed-card-layout__card-placeholder{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;min-width:20rem;min-height:.0625rem}.fd-fixed-card-layout__card-placeholder:after,.fd-fixed-card-layout__card-placeholder:before,.fd-fixed-card-layout__card:after,.fd-fixed-card-layout__card:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{padding-left:1rem;order:1;padding-top:1rem}.fd-fixed-card-layout__card[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card{padding-right:1rem;padding-left:0}.fd-fixed-card-layout__card--single{flex-basis:100%}.fd-fixed-card-layout__card:empty{padding-top:0}.fd-fixed-card-layout__card-placeholder{opacity:.3;border:.125rem dashed var(--sapContent_DragAndDropActiveColor);cursor:grabbing}.fd-fixed-card-layout__card-preview{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;padding:0;margin:0;border:0;box-sizing:border-box;border-radius:var(--sapElement_BorderCornerRadius);box-shadow:var(--sapContent_Shadow2)}.fd-fixed-card-layout__card-preview:after,.fd-fixed-card-layout__card-preview:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__clearfix{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:0;flex-basis:100%}.fd-fixed-card-layout__clearfix:after,.fd-fixed-card-layout__clearfix:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{width:100%}.fd-fixed-card-layout__card-placeholder{width:100%;min-width:100%;max-width:100%}\n"], components: [{ type: i2.FixedCardLayoutItemComponent, selector: "fd-fixed-card-layout-item" }], directives: [{ type: i3.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { type: i1.DndKeyboardGroupDirective, selector: "[fdDndKeyboardGroup]", inputs: ["groups", "disableKeyboardDragDrop", "orientation", "customMoveFn", "customTransferFn"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i1.DndKeyboardItemDirective, selector: "[fdDndKeyboardItem]", inputs: ["itemIndex", "groupIndex"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
325
334
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: FixedCardLayoutComponent, decorators: [{
326
335
  type: Component,
327
336
  args: [{ selector: 'fd-fixed-card-layout', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
@@ -337,6 +346,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
337
346
  type: Input
338
347
  }], columnsWidthConfig: [{
339
348
  type: Input
349
+ }], maxColumns: [{
350
+ type: Input
340
351
  }], layoutChange: [{
341
352
  type: Output
342
353
  }], cardDraggedDropped: [{
@@ -383,4 +394,4 @@ function adjustCardRank(draggedCard, replacedCard) {
383
394
  draggedCard.fdCardDef = replacedCard.fdCardDef;
384
395
  replacedCard.fdCardDef = draggedCardRank;
385
396
  }
386
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFzQyxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBZSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFFMUUsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ3JCLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLENBQUMsZ0JBQWdCO0FBQ2hELE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQyxDQUFDLGNBQWM7QUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRO0FBRXRDLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztBQUdqQixNQUFNLE9BQU8sdUJBQXVCO0lBb0JoQyxjQUFjO0lBQ2QsWUFBbUIsUUFBMEI7UUFBMUIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFKN0MsY0FBYztRQUNOLGVBQVUsR0FBVyxRQUFRLEVBQUUsQ0FBQztJQUdRLENBQUM7SUFwQmpEOzs7T0FHRztJQUNILElBQ0ksU0FBUyxDQUFDLEtBQWtCO1FBQzVCLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQzs7b0hBZlEsdUJBQXVCO3dHQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFEbkMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7a0dBTzlCLFNBQVM7c0JBRFosS0FBSzs7QUErQ1YsTUFBTSxPQUFPLHdCQUF3QjtJQTZHakMsY0FBYztJQUNkLFlBQ3FCLGVBQWtDLEVBQ3RCLFdBQXVCO1FBRG5DLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQXpHeEQsdUdBQXVHO1FBRXZHLG1CQUFjLEdBQUcsZ0JBQWdCLENBQUM7UUEwQmxDLHlDQUF5QztRQUV6QyxpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRWhFLGdEQUFnRDtRQUVoRCx1QkFBa0IsR0FBOEIsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQThCaEYsa0NBQWtDO1FBQ2xDLFNBQUksR0FBRyxLQUFLLENBQUM7UUFFYiwrREFBK0Q7UUFDL0Qsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUUxQywrREFBK0Q7UUFDL0QsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUV6QywrREFBK0Q7UUFDL0QsdUJBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUV2QyxjQUFjO1FBQ2Qsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQWdCMUMsY0FBYztRQUNOLHNCQUFpQixHQUFHLGtCQUFrQixDQUFDO1FBRS9DLGNBQWM7UUFDTixvQ0FBK0IsR0FBRyxLQUFLLENBQUM7UUFFaEQsK0dBQStHO1FBQzlGLGdCQUFXLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFxR2xFLGNBQWM7UUFDZCxvQkFBZSxHQUFHLENBQUMsQ0FBVSxFQUFFLElBQWlCLEVBQVcsRUFBRTtZQUN6RCxxSUFBcUk7WUFDckksK0hBQStIO1lBQy9ILElBQUksSUFBSSxDQUFDLCtCQUErQixFQUFFO2dCQUN0QyxJQUFJLENBQUMsK0JBQStCLEdBQUcsS0FBSyxDQUFDO2dCQUU3QyxrRUFBa0U7Z0JBQ2xFLGtFQUFrRTtnQkFDbEUsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXJFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUNuRDtZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztRQStDRixtREFBbUQ7UUFDbkQsa0JBQWEsR0FBRyxDQUFDLEtBQWlCLEVBQUUsU0FBaUIsRUFBRSxPQUFlLEVBQVEsRUFBRTtZQUM1RSxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkMsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXBDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFckcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2pGLENBQUMsQ0FBQztRQUVGLG1EQUFtRDtRQUNuRCxzQkFBaUIsR0FBRyxDQUFDLFNBQXFCLEVBQUUsU0FBcUIsRUFBRSxTQUFpQixFQUFFLE9BQWUsRUFBUSxFQUFFO1lBQzNHLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN2QyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFeEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BHLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUVyRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDakYsQ0FBQyxDQUFDO0lBakxDLENBQUM7SUF0R0osc0NBQXNDO0lBQ3RDLElBQ0ksZ0JBQWdCLENBQUMsS0FBa0I7UUFDbkMsTUFBTSxZQUFZLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakQsSUFBSSxZQUFZLEdBQUcsa0JBQWtCLEVBQUU7WUFDbkMsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFlBQVksQ0FBQztRQUV0QywrQ0FBK0M7UUFDL0MsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUNELElBQUksZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7SUF5REQsMkRBQTJEO0lBQzNELElBQUksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDcEUsQ0FBQztJQTBCRCxjQUFjO0lBQ2QsUUFBUTtRQUNKLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYztJQUNkLGtCQUFrQjtRQUNkLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxjQUFjO0lBQ2QsZUFBZTtRQUNYLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGNBQWM7SUFDZCxrQkFBa0I7UUFDZDs7O1dBR0c7UUFDSCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxvQkFBb0IsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7WUFDeEQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGNBQWM7SUFFZCxhQUFhLENBQUMsS0FBb0I7UUFDOUIsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFakMsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDN0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoRDtJQUNMLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsWUFBWTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNyQixPQUFPO1NBQ1Y7UUFFRCxNQUFNLHVCQUF1QixHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFaEcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5RSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNuQixlQUFlLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN0QyxVQUFVLEVBQUUsSUFBSSxDQUFDLGVBQWU7U0FDbkMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDdEQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCw0RUFBNEU7SUFDNUUseUJBQXlCLENBQUMsa0JBQTBCLENBQUM7UUFDakQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ3BELE1BQU0sQ0FBQyxHQUFHLENBQ04sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FDcEcsQ0FDSixDQUFDO1FBRUYsTUFBTSxjQUFjLEdBQUcsY0FBYzthQUNoQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN4RixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZGLGlFQUFpRTtRQUNqRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxlQUFlLENBQUM7UUFFMUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBbUJELGNBQWM7SUFDZCxpQkFBaUI7UUFDYixJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDO0lBQ2hELENBQUM7SUFFRCxjQUFjO0lBQ2Qsa0JBQWtCLENBQUMsS0FBbUI7UUFDbEMsTUFBTSxvQkFBb0IsR0FBSSxLQUFLLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQWdDLENBQUMsU0FBUyxDQUFDO1FBQzdHLE1BQU0sZUFBZSxHQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBZ0MsQ0FBQyxTQUFTLENBQUM7UUFFL0UsSUFBSSxDQUFDLG9CQUFvQixDQUFDLG9CQUFvQixLQUFLLGVBQWUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxjQUFjO0lBQ2QsY0FBYyxDQUFDLEtBQWtDO1FBQzdDLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRTtZQUN2RCxPQUFPO1NBQ1Y7UUFFRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ25FLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRTlELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQ2hFLENBQUM7UUFDRixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDekQsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQ25FLENBQUM7UUFFRixnRkFBZ0Y7UUFDaEYsc0hBQXNIO1FBQ3RILHlCQUF5QjtRQUN6QixJQUFJLGVBQWUsS0FBSyxrQkFBa0IsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN4RSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFO2dCQUNyRyxPQUFPO2FBQ1Y7WUFFRCxJQUFJLFNBQVMsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFO2dCQUNyRyxPQUFPO2FBQ1Y7U0FDSjtRQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBd0JELGNBQWM7SUFDZCxvQkFBb0IsQ0FBQyxLQUFjO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdkUsQ0FBQztJQUVELHFEQUFxRDtJQUM3QyxnQkFBZ0IsQ0FDcEIsU0FBaUIsRUFDakIsUUFBZ0IsRUFDaEIsUUFBaUMsRUFDakMsT0FBZ0M7UUFFaEMseUVBQXlFO1FBQ3pFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBRTNDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQztZQUN6QixhQUFhLEVBQUUsU0FBUztZQUN4QixZQUFZLEVBQUUsUUFBUTtZQUN0QixhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7U0FDL0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjO0lBQ04sbUJBQW1CO1FBQ3ZCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkYsQ0FBQztJQUVELHNDQUFzQztJQUM5QixlQUFlO1FBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEUsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQseUVBQXlFO0lBQ2pFLGVBQWU7UUFDbkIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7YUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ25ELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsdUVBQXVFO0lBQy9ELG9CQUFvQjtRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQy9CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsK0NBQStDO0lBQ3ZDLGNBQWM7UUFDbEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsY0FBYztJQUNOLGFBQWE7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTTthQUN6QixPQUFPLEVBQUU7YUFDVCxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVqRixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXJDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQseUVBQXlFO0lBQ2pFLGVBQWU7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQzlDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBRTVDLE1BQU0sT0FBTyxHQUFpQixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDakMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNsRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBRWxELE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7UUFFNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNqQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNwRDtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7SUFDTixnQkFBZ0IsQ0FBQyxhQUFhLEdBQUcsSUFBSTtRQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFFL0IsTUFBTSxhQUFhLEdBQ2YsSUFBSSxDQUFDLGtCQUFrQjtZQUN2QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxRQUFRO1lBQzNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxDQUFDO1FBRWhELElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxDQUFDLEVBQUU7WUFDaEUsT0FBTztTQUNWO1FBRUQsTUFBTSxtQkFBbUIsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDOUYsTUFBTSxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFFdkYsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQ3pGLENBQUM7WUFFRixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDbEYsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLGFBQWEsRUFBRTtZQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDeEM7SUFDTCxDQUFDOztxSEF0YVEsd0JBQXdCO3lHQUF4Qix3QkFBd0IsK2FBNENoQix1QkFBdUIscUpBSTFCLDRCQUE0QiwwR0FJUixXQUFXLGtEQ2xKakQsb3hFQXNEQTsyRkR3Q2Esd0JBQXdCO2tCQVZwQyxTQUFTOytCQUNJLHNCQUFzQixtQkFHZix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNGLEtBQUssRUFBRSxzQkFBc0I7cUJBQ2hDOzswQkFrSEksUUFBUTs0Q0EzR2IsZUFBZTtzQkFEZCxLQUFLO2dCQUtOLGNBQWM7c0JBRGIsS0FBSztnQkFLRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBcUJOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFLTixZQUFZO3NCQURYLE1BQU07Z0JBS1Asa0JBQWtCO3NCQURqQixNQUFNO2dCQUtQLE1BQU07c0JBREwsZUFBZTt1QkFBQyx1QkFBdUI7Z0JBS3hDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyw0QkFBNEI7Z0JBSzFDLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUsvQyxPQUFPO3NCQUROLFNBQVM7dUJBQUMsUUFBUTtnQkFvR25CLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBOFF2QyxjQUFjO0FBQ2QsU0FBUyxpQkFBaUIsQ0FBQyxNQUEwQixFQUFFLGVBQXVCO0lBQzFFLE1BQU0sU0FBUyxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVyRCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDOUIsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLEVBQUU7WUFDakQsT0FBTyxDQUFDLENBQUM7U0FDWjtRQUVELE9BQU8sbUJBQW1CLENBQUM7SUFDL0IsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsbUdBQW1HO0FBQ25HLFNBQVMsa0JBQWtCLENBQUMsY0FBc0IsRUFBRSxTQUFpQjtJQUNqRSxjQUFjLEdBQUcsY0FBYyxJQUFJLENBQUMsQ0FBQztJQUNyQyxTQUFTLEdBQUcsU0FBUyxJQUFJLENBQUMsQ0FBQztJQUUzQixNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyx5QkFBeUI7SUFDN0csTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsR0FBRyxTQUFTLEdBQUcsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUM7SUFDaEgsTUFBTSxXQUFXLEdBQUcsb0JBQW9CLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDO0lBRWhILE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELDREQUE0RDtBQUM1RCxTQUFTLGNBQWMsQ0FBQyxXQUFvQyxFQUFFLFlBQXFDO0lBQy9GLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDOUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO0lBQy9DLFlBQVksQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvY3VzS2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IENka0RyYWcsIENka0RyYWdEcm9wLCBDZGtEcmFnRW50ZXIsIENka0Ryb3BMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgcmVzaXplT2JzZXJ2YWJsZSwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBGaXhlZENhcmRMYXlvdXRJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9maXhlZC1jYXJkLWxheW91dC1pdGVtL2ZpeGVkLWNhcmQtbGF5b3V0LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbmNvbnN0IFBYX0lOX1JFTSA9IDE2O1xuY29uc3QgQ0FSRF9NSU5JTVVNX1dJRFRIID0gMzIwOyAvLyAzMjBweCA9IDIwcmVtXG5jb25zdCBDQVJEX0dBUF9XSURUSCA9IDE2OyAvLyAxNnB4ID0gMXJlbVxuY29uc3QgRFJBR19TVEFSVF9ERUxBWSA9IDIwMDsgLy8gaW4gbXNcblxubGV0IGNhcmRSYW5rID0gMTtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2ZkQ2FyZERlZl0nIH0pXG5leHBvcnQgY2xhc3MgQ2FyZERlZmluaXRpb25EaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIEJlaGF2ZXMgbGlrZSByYW5rIG9mIGNhcmQuXG4gICAgICogVXNlZnVsIGluIGNyZWF0aW5nIGxheW91dCBhZ2FpbiBhZnRlciBkcmFnIGFuZCBkcm9wLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZkQ2FyZERlZih2YWx1ZTogTnVtYmVySW5wdXQpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZmRDYXJkRGVmID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgZmRDYXJkRGVmKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mZENhcmREZWY7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mZENhcmREZWY6IG51bWJlciA9IGNhcmRSYW5rKys7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXlvdXQge1xuICAgIG51bWJlck9mQ29sdW1ucz86IG51bWJlcjtcbiAgICBzY3JlZW5TaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZERyb3BwZWQge1xuICAgIHByZXZpb3VzSW5kZXg6IG51bWJlcjtcbiAgICBjdXJyZW50SW5kZXg6IG51bWJlcjtcbiAgICBsYXlvdXRDb2x1bW5zOiBudW1iZXI7XG4gICAgaXRlbXM6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlW107XG59XG5cbnR5cGUgQ29sdW1ucyA9IDEgfCAyIHwgMyB8IDQgfCA1IHwgNiB8IDcgfCA4IHwgOSB8IDEwO1xuXG5leHBvcnQgdHlwZSBDb2x1bW5zV2lkdGhDb25maWcgPSB7IFtDIGluIENvbHVtbnNdPzogbnVtYmVyIH07XG5cbnR5cGUgQ2FyZENvbHVtbiA9IENhcmREZWZpbml0aW9uRGlyZWN0aXZlW107XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtZml4ZWQtY2FyZC1sYXlvdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maXhlZC1jYXJkLWxheW91dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC1maXhlZC1jYXJkLWxheW91dCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEZpeGVkQ2FyZExheW91dENvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICAgIC8qKiBEcmFnIGRyb3AgYmVoYXZpb3IgY2FuIGJlIGRpc2FibGVkICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlRHJhZ0Ryb3A6IGJvb2xlYW47XG5cbiAgICAvKiogRHJhZyBzdGFydCBkZWxheSBpbiBtaWxsaXNlY29uZHMsIGRlZmF1bHQgdG8gMjAwbXMgZm9yIHNhZmUgc2Nyb2xsaW5nIG9uIG1vYmlsZSB3aXRoIHRvdWNoc2NyZWVuICovXG4gICAgQElucHV0KClcbiAgICBkcmFnU3RhcnREZWxheSA9IERSQUdfU1RBUlRfREVMQVk7XG5cbiAgICAvKiogQ2FyZCdzIG1pbmltdW0gd2lkdGggaW4gcGl4ZWxzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNhcmRNaW5pbXVtV2lkdGgodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcblxuICAgICAgICBpZiAoY29lcmNlZFZhbHVlIDwgQ0FSRF9NSU5JTVVNX1dJRFRIKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jYXJkTWluaW11bVdpZHRoID0gY29lcmNlZFZhbHVlO1xuXG4gICAgICAgIC8vIElmIGNvbXBvbmVudCBpcyByZWFkeSwgZG8gdGhlIHJlY2FsY3VsYXRpb24uXG4gICAgICAgIGlmICh0aGlzLl9sYXlvdXQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGNhcmRNaW5pbXVtV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcmRNaW5pbXVtV2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIENvbmZpZyB3aXRoIHRoZSB3aWR0aCByYXRpb3MgdGhhdCBzaG91bGQgdGFrZSBldmVyeSBjb2x1bW4uIEZsZXgtZ3JvdyBwcmluY2lwZS4gTWlzc2VkIHZhbHVlcyBzZXQgdG8gMC4gcyovXG4gICAgQElucHV0KClcbiAgICBjb2x1bW5zV2lkdGhDb25maWc6IENvbHVtbnNXaWR0aENvbmZpZztcblxuICAgIC8qKiBFdmVudCB0byBlbWl0LCB3aGVuIGxheW91dCBjaGFuZ2VzICovXG4gICAgQE91dHB1dCgpXG4gICAgbGF5b3V0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TGF5b3V0PiA9IG5ldyBFdmVudEVtaXR0ZXI8TGF5b3V0PigpO1xuXG4gICAgLyoqIEV2ZW50IHRvIGVtaXQgb24gQ2FyZCBkcmFnZ2VkIGFuZCBkcm9wcGVkICovXG4gICAgQE91dHB1dCgpXG4gICAgY2FyZERyYWdnZWREcm9wcGVkOiBFdmVudEVtaXR0ZXI8Q2FyZERyb3BwZWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxDYXJkRHJvcHBlZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSlcbiAgICBfY2FyZHM6IFF1ZXJ5TGlzdDxDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oRml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudClcbiAgICBfY2FyZENvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxGaXhlZENhcmRMYXlvdXRJdGVtQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbignZHJvcExpc3QnLCB7IHJlYWQ6IENka0Ryb3BMaXN0IH0pXG4gICAgX2NhcmRXcmFwcGVyczogUXVlcnlMaXN0PENka0Ryb3BMaXN0PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnbGF5b3V0JylcbiAgICBfbGF5b3V0OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2FyZHNBcnJheTogQXJyYXk8Q2FyZERlZmluaXRpb25EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gTnVtYmVyIG9mIENvbHVtbnMgaW4gbGF5b3V0ICovXG4gICAgX251bWJlck9mQ29sdW1uczogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2FyZENvbHVtbnM6IENhcmRDb2x1bW5bXTtcblxuICAgIC8qKiBAaGlkZGVuKi9cbiAgICBfY29udGFpbmVySGVpZ2h0OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiBoYW5kbGVzIHJ0bCBzZXJ2aWNlICovXG4gICAgX2RpciA9ICdsdHInO1xuXG4gICAgLyoqIEBoaWRkZW4gZmlyc3QgbnVtYmVyIGlzIHRoZSBDYXJkRGVmaW5pdGlvbiByYW5rLCBpLmUuIGlkICovXG4gICAgX2dyb3VwSW5kZXhlcyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBmaXJzdCBudW1iZXIgaXMgdGhlIENhcmREZWZpbml0aW9uIHJhbmssIGkuZS4gaWQgKi9cbiAgICBfaXRlbUluZGV4ZXMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gZmlyc3QgbnVtYmVyIGlzIHRoZSBDYXJkRGVmaW5pdGlvbiByYW5rLCBpLmUuIGlkICovXG4gICAgX3NpbmdsZUl0ZW1Db2x1bW5zID0gbmV3IFNldDxudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb2x1bW5zV2lkdGggPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gUmV0dXJuIGF2YWlsYWJsZSB3aWR0aCBmb3IgZml4ZWQgY2FyZCBsYXlvdXQgKi9cbiAgICBnZXQgX2F2YWlsYWJsZVdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sYXlvdXQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wbGFjZWhvbGRlck1hcmdpbjogeyBba2xhc3M6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcmV2aW91c051bWJlck9mQ29sdW1uczogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gRm9jdXNLZXlNYW5hZ2VyIGluc3RhbmNlICovXG4gICAgcHJpdmF0ZSBfa2V5Ym9hcmRFdmVudHNNYW5hZ2VyOiBGb2N1c0tleU1hbmFnZXI8Rml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhcmRNaW5pbXVtV2lkdGggPSBDQVJEX01JTklNVU1fV0lEVEg7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3VsZENhbGN1bGF0ZUNvbnRhaW5lckhlaWdodCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKSAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZVxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVRvUnRsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uQ2FyZHNDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0NhcmRzKCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uUmVzaXplKCk7XG4gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlTZXR1cCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICAvKipcbiAgICAgICAgICogVXBkYXRlIGNvbHVtbiBsYXlvdXQgd2hlbiBvcmllbnRhdGlvbiBvZiBzY3JlZW4gY2hhbmdlcy5cbiAgICAgICAgICogYWN0dWFsIHdpZHRoIGlzIHJldHVybmVkIHdoZW4gdmlldyBpcyBzdGFibGUuIEluIEFmdGVyVmlld0luaXQsIGNvcnJlY3QgdmFsdWUgZG9lcyBub3QgY29tZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICgnY29sdW1uc1dpZHRoQ29uZmlnJyBpbiBjaGFuZ2VzICYmIHRoaXMuX2NhcmRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldENvbHVtbnNXaWR0aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlcikge1xuICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRGlzdHJpYnV0ZSBjYXJkcyBvbiB3aW5kb3cgcmVzaXplICovXG4gICAgdXBkYXRlTGF5b3V0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2NhcmRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcG9zc2libGVOdW1iZXJPZkNvbHVtbnMgPSBnZXROdW1iZXJPZkNvbHVtbnModGhpcy5fYXZhaWxhYmxlV2lkdGgsIHRoaXMuY2FyZE1pbmltdW1XaWR0aCk7XG5cbiAgICAgICAgdGhpcy5fbnVtYmVyT2ZDb2x1bW5zID0gTWF0aC5taW4ocG9zc2libGVOdW1iZXJPZkNvbHVtbnMsIHRoaXMuX2NhcmRzLmxlbmd0aCk7XG5cbiAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBudW1iZXJPZkNvbHVtbnM6IHRoaXMuX251bWJlck9mQ29sdW1ucyxcbiAgICAgICAgICAgIHNjcmVlblNpemU6IHRoaXMuX2F2YWlsYWJsZVdpZHRoXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLl9wcmV2aW91c051bWJlck9mQ29sdW1ucyAhPT0gdGhpcy5fbnVtYmVyT2ZDb2x1bW5zKSB7XG4gICAgICAgICAgICB0aGlzLl9wcmV2aW91c051bWJlck9mQ29sdW1ucyA9IHRoaXMuX251bWJlck9mQ29sdW1ucztcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbnMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NldENvbHVtbnNXaWR0aCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIENhbGN1bGF0ZSBjb250YWluZXIgaGVpZ2h0IGJhc2luZyBvbiB0aGUgY2FyZCB3cmFwcGVyIGNvbHVtbnMgKi9cbiAgICBfY2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0KGFkZGl0aW9uYWxTcGFjZTogbnVtYmVyID0gMCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgY29uc3Qgd3JhcHBlckNvbHVtbnMgPSB0aGlzLl9jYXJkQ29sdW1ucy5tYXAoKGNvbHVtbikgPT5cbiAgICAgICAgICAgIGNvbHVtbi5tYXAoXG4gICAgICAgICAgICAgICAgKGNhcmQpID0+IHRoaXMuX2NhcmRXcmFwcGVycy5maW5kKCh3cmFwcGVyKSA9PiB3cmFwcGVyLmdldFNvcnRlZEl0ZW1zKClbMF0uZGF0YSA9PT0gY2FyZCkuZWxlbWVudFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbnNIZWlnaHRzID0gd3JhcHBlckNvbHVtbnNcbiAgICAgICAgICAgIC5tYXAoKGNvbHVtbikgPT4gY29sdW1uLm1hcCgoY2FyZCkgPT4gY2FyZC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCkpXG4gICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IGNvbHVtbi5yZWR1Y2UoKGhlaWdodCwgY2FyZEhlaWdodCkgPT4gKGhlaWdodCArPSBjYXJkSGVpZ2h0KSwgMCkpO1xuXG4gICAgICAgIC8vICs0cHggYmVjYXVzZSBpdCdzIHRoZSB0b3AgJiBib3R0b20gYm9yZGVycyBvZiBjYXJkIHBsYWNlaG9sZGVyXG4gICAgICAgIHRoaXMuX2NvbnRhaW5lckhlaWdodCA9IE1hdGgubWF4KC4uLmNvbHVtbnNIZWlnaHRzKSArIDQgKyBhZGRpdGlvbmFsU3BhY2U7XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2VudGVyUHJlZGljYXRlID0gKF86IENka0RyYWcsIGRyb3A6IENka0Ryb3BMaXN0KTogYm9vbGVhbiA9PiB7XG4gICAgICAgIC8vIFdlIHNob3VsZCB1cGRhdGUgY29udGFpbmVyJ3MgaGVpZ2h0ICYgaXRzIGNoaWxkcmVuIHJlY3RzICh0byByZWFjdCB3aGVuIGRyYWcgbW92ZXMgaW50byB0aGUgbGlzdCkgYmVmb3JlIHdlIGVudGVyZWQgYW55IGRyb3AgbGlzdC5cbiAgICAgICAgLy8gVGhhdCdzIHdoeSBpdCdzIGRvbmUgaGVyZSBpbnN0ZWFkIG9mIGNka0Ryb3BMaXN0RW50ZXJlZC4gQXMgdGhpcyBwcmVkaWNhdGUgYmVpbmcgY2FsbGVkIG1hbnkgdGltZXMgaGVyZSBpcyB0aGUgb3B0aW1pemF0aW9uLlxuICAgICAgICBpZiAodGhpcy5fc2hvdWxkQ2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLl9zaG91bGRDYWxjdWxhdGVDb250YWluZXJIZWlnaHQgPSBmYWxzZTtcblxuICAgICAgICAgICAgLy8gUGxhY2Vob2xkZXIgZG9lc24ndCBoYXZlIG1hcmdpbiBzZXQgeWV0IGJ1dCB3ZSBuZWVkIHRvIGNvdW50IGl0XG4gICAgICAgICAgICAvLyBNYXJnaW4gd2lsbCBiZSBzZXQgb25seSBpZiB0aGVyZSBhcmUgYWxyZWFkeSBpdGVtcyBpbiBjb250YWluZXJcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxTcGFjZSA9IGRyb3AuZ2V0U29ydGVkSXRlbXMoKS5sZW5ndGggPyBQWF9JTl9SRU0gOiAwO1xuXG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVDb250YWluZXJIZWlnaHQoYWRkaXRpb25hbFNwYWNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRyb3BMaXN0RXhpdGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zaG91bGRDYWxjdWxhdGVDb250YWluZXJIZWlnaHQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uRHJvcExpc3RFbnRlcmVkKGV2ZW50OiBDZGtEcmFnRW50ZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVySXRlbUNhcmREZWYgPSAoZXZlbnQuY29udGFpbmVyLmdldFNvcnRlZEl0ZW1zKClbMF0uZGF0YSBhcyBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSkuZmRDYXJkRGVmO1xuICAgICAgICBjb25zdCBkcmFnSXRlbUNhcmREZWYgPSAoZXZlbnQuaXRlbS5kYXRhIGFzIENhcmREZWZpbml0aW9uRGlyZWN0aXZlKS5mZENhcmREZWY7XG5cbiAgICAgICAgdGhpcy5fc2V0UGxhY2Vob2xkZXJTdHlsZShjb250YWluZXJJdGVtQ2FyZERlZiAhPT0gZHJhZ0l0ZW1DYXJkRGVmKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRyYWdEcm9wcGVkKGV2ZW50OiBDZGtEcmFnRHJvcDxudW1iZXIsIG51bWJlcj4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmNvbnRhaW5lci5kYXRhID09PSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb3ZlZENhcmQgPSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGE7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZCA9IGV2ZW50LmNvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGE7XG5cbiAgICAgICAgY29uc3QgbW92ZWRDYXJkQ29sdW1uID0gdGhpcy5fY2FyZENvbHVtbnMuZmluZCgoY29sdW1uKSA9PlxuICAgICAgICAgICAgY29sdW1uLmZpbmQoKGNhcmQpID0+IGNhcmQuZmRDYXJkRGVmID09PSBtb3ZlZENhcmQuZmRDYXJkRGVmKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmRDb2x1bW4gPSB0aGlzLl9jYXJkQ29sdW1ucy5maW5kKChjb2x1bW4pID0+XG4gICAgICAgICAgICBjb2x1bW4uZmluZCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gSWYgd2UgZHJhZ2dlZCB0aGUgY2FyZCBmcm9tIHRoZSBzYW1lIGNvbHVtbiBhcyB0aGUgY29sdW1uIHdlJ3JlIGRyb3BwaW5nIGludG9cbiAgICAgICAgLy8gVGhlcmUgbWF5IGJlIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBvcmRlciBzaG91bGRuJ3QgY2hhbmdlIGJ1dCBzaW5jZSB0aGVyZSBhcmUgYSBkaWZmZXJlbnQgZHJvcCBsaXN0cyBpdCB3aWxsIGNoYW5nZVxuICAgICAgICAvLyBXZSBzaG91bGQgcHJldmVudCB0aGlzXG4gICAgICAgIGlmIChtb3ZlZENhcmRDb2x1bW4gPT09IHJlcGxhY2VkQ2FyZENvbHVtbiAmJiBtb3ZlZENhcmRDb2x1bW4ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICBpZiAobW92ZWRDYXJkLmZkQ2FyZERlZiA8IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYgJiYgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSA8IGV2ZW50LmNvbnRhaW5lci5kYXRhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobW92ZWRDYXJkLmZkQ2FyZERlZiA+IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYgJiYgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSA+IGV2ZW50LmNvbnRhaW5lci5kYXRhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcHJvY2Vzc0RyYWdEcm9wKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsIGV2ZW50LmNvbnRhaW5lci5kYXRhLCBtb3ZlZENhcmQsIHJlcGxhY2VkQ2FyZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRm9yIHRoZSBrZXlib2FyZCBkcmFnJmRyb3AgZGlyZWN0aXZlICovXG4gICAgX2N1c3RvbU1vdmVGbiA9IChncm91cDogQ2FyZENvbHVtbiwgaW5kZXhGcm9tOiBudW1iZXIsIGluZGV4VG86IG51bWJlcik6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBtb3ZlZENhcmQgPSBncm91cFtpbmRleEZyb21dO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmQgPSBncm91cFtpbmRleFRvXTtcblxuICAgICAgICBjb25zdCBpbmRleEZyb21BcnJheSA9IHRoaXMuX2NhcmRzQXJyYXkuZmluZEluZGV4KChjYXJkKSA9PiBjYXJkLmZkQ2FyZERlZiA9PT0gbW92ZWRDYXJkLmZkQ2FyZERlZik7XG4gICAgICAgIGNvbnN0IGluZGV4VG9BcnJheSA9IHRoaXMuX2NhcmRzQXJyYXkuZmluZEluZGV4KChjYXJkKSA9PiBjYXJkLmZkQ2FyZERlZiA9PT0gcmVwbGFjZWRDYXJkLmZkQ2FyZERlZik7XG5cbiAgICAgICAgdGhpcy5fcHJvY2Vzc0RyYWdEcm9wKGluZGV4RnJvbUFycmF5LCBpbmRleFRvQXJyYXksIG1vdmVkQ2FyZCwgcmVwbGFjZWRDYXJkKTtcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gRm9yIHRoZSBrZXlib2FyZCBkcmFnJmRyb3AgZGlyZWN0aXZlICovXG4gICAgX2N1c3RvbVRyYW5zZmVyRm4gPSAocHJldkdyb3VwOiBDYXJkQ29sdW1uLCBuZXh0R3JvdXA6IENhcmRDb2x1bW4sIGluZGV4RnJvbTogbnVtYmVyLCBpbmRleFRvOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgbW92ZWRDYXJkID0gcHJldkdyb3VwW2luZGV4RnJvbV07XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZCA9IG5leHRHcm91cFtpbmRleFRvXTtcblxuICAgICAgICBjb25zdCBpbmRleEZyb21BcnJheSA9IHRoaXMuX2NhcmRzQXJyYXkuZmluZEluZGV4KChjYXJkKSA9PiBjYXJkLmZkQ2FyZERlZiA9PT0gbW92ZWRDYXJkLmZkQ2FyZERlZik7XG4gICAgICAgIGNvbnN0IGluZGV4VG9BcnJheSA9IHRoaXMuX2NhcmRzQXJyYXkuZmluZEluZGV4KChjYXJkKSA9PiBjYXJkLmZkQ2FyZERlZiA9PT0gcmVwbGFjZWRDYXJkLmZkQ2FyZERlZik7XG5cbiAgICAgICAgdGhpcy5fcHJvY2Vzc0RyYWdEcm9wKGluZGV4RnJvbUFycmF5LCBpbmRleFRvQXJyYXksIG1vdmVkQ2FyZCwgcmVwbGFjZWRDYXJkKTtcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0UGxhY2Vob2xkZXJTdHlsZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlck1hcmdpbiA9IHZhbHVlID8geyAnbWFyZ2luLWJvdHRvbSc6ICcxcmVtJyB9IDoge307XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQXJyYW5nZXMgY2FyZHMgb24gZHJvcCBvZiBkcmFnZ2VkIGNhcmQgKi9cbiAgICBwcml2YXRlIF9wcm9jZXNzRHJhZ0Ryb3AoXG4gICAgICAgIHByZXZJbmRleDogbnVtYmVyLFxuICAgICAgICBuZXdJbmRleDogbnVtYmVyLFxuICAgICAgICBwcmV2Q2FyZDogQ2FyZERlZmluaXRpb25EaXJlY3RpdmUsXG4gICAgICAgIG5ld0NhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlXG4gICAgKTogdm9pZCB7XG4gICAgICAgIC8vIG1vdmVJdGVtSW5BcnJheSBmcm9tIENESyB3b24ndCB3b3JrIGFzIGl0IGNoYW5nZXMgb3JkZXIgb2Ygb3RoZXIgY2FyZHNcbiAgICAgICAgY29uc3QgcmVwbGFjZWRDYXJkID0gdGhpcy5fY2FyZHNBcnJheVtuZXdJbmRleF07XG4gICAgICAgIHRoaXMuX2NhcmRzQXJyYXlbbmV3SW5kZXhdID0gdGhpcy5fY2FyZHNBcnJheVtwcmV2SW5kZXhdO1xuICAgICAgICB0aGlzLl9jYXJkc0FycmF5W3ByZXZJbmRleF0gPSByZXBsYWNlZENhcmQ7XG5cbiAgICAgICAgYWRqdXN0Q2FyZFJhbmsocHJldkNhcmQsIG5ld0NhcmQpO1xuXG4gICAgICAgIHRoaXMuY2FyZERyYWdnZWREcm9wcGVkLmVtaXQoe1xuICAgICAgICAgICAgcHJldmlvdXNJbmRleDogcHJldkluZGV4LFxuICAgICAgICAgICAgY3VycmVudEluZGV4OiBuZXdJbmRleCxcbiAgICAgICAgICAgIGxheW91dENvbHVtbnM6IHRoaXMuX251bWJlck9mQ29sdW1ucyxcbiAgICAgICAgICAgIGl0ZW1zOiB0aGlzLl9jYXJkcy50b0FycmF5KClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlQ29sdW1ucygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWNjZXNzaWJpbGl0eVNldHVwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyKHRoaXMuX2NhcmRDb250YWluZXJzKS53aXRoV3JhcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJ0bCBjaGFuZ2Ugc3Vic2NyaXB0aW9uICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9SdGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpc1J0bCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZGlyID0gaXNSdGwgPyAncnRsJyA6ICdsdHInO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBMaXN0ZW4gd2luZG93IHJlc2l6ZSBhbmQgZGlzdHJpYnV0ZSBjYXJkcyBvbiBjb2x1bW4gY2hhbmdlICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHJlc2l6ZU9ic2VydmFibGUodGhpcy5fbGF5b3V0Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNjApLCB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlTGF5b3V0KCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIExpc3RlbiBjYXJkIGNoYW5nZSBhbmQgZGlzdHJpYnV0ZSBjYXJkcyBvbiBjb2x1bW4gY2hhbmdlICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25DYXJkc0NoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FyZHMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc0NhcmRzKCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDb2x1bW5zKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlbmRlcnMgbGF5b3V0IG9uIGNvbHVtbiBjaGFuZ2VzICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlQ29sdW1ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0Q2FyZENvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5fc2V0Q29sdW1uc1dpZHRoKGZhbHNlKTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcm9jZXNzQ2FyZHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhcmRzQXJyYXkgPSB0aGlzLl9jYXJkc1xuICAgICAgICAgICAgLnRvQXJyYXkoKVxuICAgICAgICAgICAgLnNvcnQoKGZpcnN0Q2FyZCwgc2Vjb25kQ2FyZCkgPT4gZmlyc3RDYXJkLmZkQ2FyZERlZiAtIHNlY29uZENhcmQuZmRDYXJkRGVmKTtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBEaXN0cmlidXRlIGNhcmRzIGFtb25nIGNvbHVtbnMgdG8gYXJyYW5nZSB0aGVtIGluIFwiWlwiIGZsb3cgKi9cbiAgICBwcml2YXRlIF9zZXRDYXJkQ29sdW1ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZ3JvdXBJbmRleGVzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgICAgICAgdGhpcy5faXRlbUluZGV4ZXMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuICAgICAgICB0aGlzLl9zaW5nbGVJdGVtQ29sdW1ucyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbnM6IENhcmRDb2x1bW5bXSA9IG5ldyBBcnJheSh0aGlzLl9udW1iZXJPZkNvbHVtbnMpLmZpbGwoMCkubWFwKCgpID0+IG5ldyBBcnJheSgwKSk7XG5cbiAgICAgICAgdGhpcy5fY2FyZHNBcnJheS5mb3JFYWNoKChjYXJkLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyQ29sdW1uSW5kZXggPSBpICUgdGhpcy5fbnVtYmVyT2ZDb2x1bW5zO1xuICAgICAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gY29sdW1uc1tjdXJyQ29sdW1uSW5kZXhdLmxlbmd0aDtcblxuICAgICAgICAgICAgY29sdW1uc1tjdXJyQ29sdW1uSW5kZXhdLnB1c2goY2FyZCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2dyb3VwSW5kZXhlcy5zZXQoY2FyZC5mZENhcmREZWYsIGN1cnJDb2x1bW5JbmRleCk7XG4gICAgICAgICAgICB0aGlzLl9pdGVtSW5kZXhlcy5zZXQoY2FyZC5mZENhcmREZWYsIGl0ZW1JbmRleCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2NhcmRDb2x1bW5zID0gY29sdW1ucztcblxuICAgICAgICB0aGlzLl9jYXJkQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgIGlmIChjb2x1bW4ubGVuZ3RoID4gMCAmJiBjb2x1bW4ubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NpbmdsZUl0ZW1Db2x1bW5zLmFkZChjb2x1bW5bMF0uZmRDYXJkRGVmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRDb2x1bW5zV2lkdGgoZGV0ZWN0Q2hhbmdlcyA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29sdW1uc1dpZHRoID0gbmV3IE1hcCgpO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZ1ByZXNlbnQgPVxuICAgICAgICAgICAgdGhpcy5jb2x1bW5zV2lkdGhDb25maWcgJiZcbiAgICAgICAgICAgIHR5cGVvZiB0aGlzLmNvbHVtbnNXaWR0aENvbmZpZyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnKS5sZW5ndGg7XG5cbiAgICAgICAgaWYgKCFjb25maWdQcmVzZW50IHx8ICF0aGlzLl9sYXlvdXQgfHwgdGhpcy5fbnVtYmVyT2ZDb2x1bW5zID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaXhlZFdpZHRoTW9kaWZpZXJzID0gZml4V2lkdGhNb2RpZmllcnModGhpcy5jb2x1bW5zV2lkdGhDb25maWcsIHRoaXMuX251bWJlck9mQ29sdW1ucyk7XG4gICAgICAgIGNvbnN0IHRvdGFsV2lkdGhNb2RpZmllcnMgPSBmaXhlZFdpZHRoTW9kaWZpZXJzLnJlZHVjZSgoc3VtLCB3aWR0aCkgPT4gKHN1bSArPSB3aWR0aCksIDApO1xuICAgICAgICBjb25zdCBmcmVlU3BhY2UgPSB0aGlzLl9hdmFpbGFibGVXaWR0aCAtIHRoaXMuY2FyZE1pbmltdW1XaWR0aCAqIHRoaXMuX251bWJlck9mQ29sdW1ucztcblxuICAgICAgICB0aGlzLl9jYXJkQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW5XaWR0aCA9IE1hdGgucm91bmQoXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJkTWluaW11bVdpZHRoICsgKGZyZWVTcGFjZSAvIHRvdGFsV2lkdGhNb2RpZmllcnMpICogZml4ZWRXaWR0aE1vZGlmaWVyc1tpbmRleF1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbHVtbi5mb3JFYWNoKChjYXJkKSA9PiB0aGlzLl9jb2x1bW5zV2lkdGguc2V0KGNhcmQuZmRDYXJkRGVmLCBjb2x1bW5XaWR0aCkpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoZGV0ZWN0Q2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiogQGhpZGRlbiAqL1xuZnVuY3Rpb24gZml4V2lkdGhNb2RpZmllcnMoY29uZmlnOiBDb2x1bW5zV2lkdGhDb25maWcsIG51bWJlck9mQ29sdW1uczogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IG1vZGlmaWVycyA9IG5ldyBBcnJheShudW1iZXJPZkNvbHVtbnMpLmZpbGwoMCk7XG5cbiAgICByZXR1cm4gbW9kaWZpZXJzLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgY29sdW1uV2lkdGhNb2RpZmllciA9IGNvbmZpZ1tpbmRleCArIDFdO1xuXG4gICAgICAgIGlmICghY29sdW1uV2lkdGhNb2RpZmllciB8fCBjb2x1bW5XaWR0aE1vZGlmaWVyIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29sdW1uV2lkdGhNb2RpZmllcjtcbiAgICB9KTtcbn1cblxuLyoqIEBoaWRkZW4gUmV0dXJucyBudW1iZXIgb2YgY29sdW1ucyB0aGF0IGNhbiBmaXQgaW4gY3VycmVudCBhdmFpbGFibGUgd2lkdGggZm9yIGZkLWNhcmQtbGF5b3V0ICovXG5mdW5jdGlvbiBnZXROdW1iZXJPZkNvbHVtbnMoY29udGFpbmVyV2lkdGg6IG51bWJlciwgY2FyZFdpZHRoOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnRhaW5lcldpZHRoID0gY29udGFpbmVyV2lkdGggfHwgMTtcbiAgICBjYXJkV2lkdGggPSBjYXJkV2lkdGggfHwgMTtcblxuICAgIGNvbnN0IG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgPSBNYXRoLm1heChNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoIC8gY2FyZFdpZHRoKSwgMSk7IC8vIEV4YW1wbGU6IDk2MCAvIDMyMCA9IDNcbiAgICBjb25zdCByZXF1aXJlZFdpZHRoV2l0aEdhcCA9IG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgKiBjYXJkV2lkdGggKyAobnVtYmVyT2ZDYXJkc1dpdGhOb0dhcCAtIDEpICogQ0FSRF9HQVBfV0lEVEg7XG4gICAgY29uc3QgY29sdW1uQ291bnQgPSByZXF1aXJlZFdpZHRoV2l0aEdhcCA+IGNvbnRhaW5lcldpZHRoID8gbnVtYmVyT2ZDYXJkc1dpdGhOb0dhcCAtIDEgOiBudW1iZXJPZkNhcmRzV2l0aE5vR2FwO1xuXG4gICAgcmV0dXJuIE1hdGgubWF4KGNvbHVtbkNvdW50LCAxKTtcbn1cblxuLyoqIEBoaWRkZW4gTWV0aG9kIHRvIHVwZGF0ZSByYW5rIGFmdGVyIGNhcmRzIGFyZSBkcmFnZ2VkICovXG5mdW5jdGlvbiBhZGp1c3RDYXJkUmFuayhkcmFnZ2VkQ2FyZDogQ2FyZERlZmluaXRpb25EaXJlY3RpdmUsIHJlcGxhY2VkQ2FyZDogQ2FyZERlZmluaXRpb25EaXJlY3RpdmUpOiB2b2lkIHtcbiAgICBjb25zdCBkcmFnZ2VkQ2FyZFJhbmsgPSBkcmFnZ2VkQ2FyZC5mZENhcmREZWY7XG4gICAgZHJhZ2dlZENhcmQuZmRDYXJkRGVmID0gcmVwbGFjZWRDYXJkLmZkQ2FyZERlZjtcbiAgICByZXBsYWNlZENhcmQuZmRDYXJkRGVmID0gZHJhZ2dlZENhcmRSYW5rO1xufVxuIiwiPGRpdlxuICAgICNsYXlvdXRcbiAgICBjZGtEcm9wTGlzdEdyb3VwXG4gICAgZmREbmRLZXlib2FyZEdyb3VwXG4gICAgY2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2FyZC1sYXlvdXQgZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtbGF5b3V0LS1jb2x1bW5zLXt7IHRoaXMuX251bWJlck9mQ29sdW1ucyB9fVwiXG4gICAgW3N0eWxlLmhlaWdodF09XCJfY29udGFpbmVySGVpZ2h0ICsgJ3B4J1wiXG4gICAgW2dyb3Vwc109XCJfY2FyZENvbHVtbnNcIlxuICAgIG9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgW2N1c3RvbU1vdmVGbl09XCJfY3VzdG9tTW92ZUZuXCJcbiAgICBbY3VzdG9tVHJhbnNmZXJGbl09XCJfY3VzdG9tVHJhbnNmZXJGblwiXG4gICAgW2Rpc2FibGVLZXlib2FyZERyYWdEcm9wXT1cImRpc2FibGVEcmFnRHJvcFwiXG4gICAgW2Nka0Ryb3BMaXN0R3JvdXBEaXNhYmxlZF09XCJkaXNhYmxlRHJhZ0Ryb3BcIlxuICAgIFthdHRyLmRpcl09XCJfZGlyXCJcbj5cbiAgICA8ZGl2XG4gICAgICAgICNkcm9wTGlzdFxuICAgICAgICAqbmdGb3I9XCJsZXQgY2FyZCBvZiBfY2FyZHNBcnJheTsgbGV0IGNhcmRJbmRleCA9IGluZGV4XCJcbiAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRcbiAgICAgICAgY2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2FyZFwiXG4gICAgICAgIFtjbGFzcy5mZC1maXhlZC1jYXJkLWxheW91dF9fY2FyZC0tc2luZ2xlXT1cIl9zaW5nbGVJdGVtQ29sdW1ucy5oYXMoY2FyZC5mZENhcmREZWYpXCJcbiAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJfY29sdW1uc1dpZHRoLmdldChjYXJkLmZkQ2FyZERlZilcIlxuICAgICAgICBbc3R5bGUubWF4LXdpZHRoLnB4XT1cIl9jb2x1bW5zV2lkdGguZ2V0KGNhcmQuZmRDYXJkRGVmKVwiXG4gICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiY2FyZEluZGV4XCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwiX2VudGVyUHJlZGljYXRlXCJcbiAgICAgICAgKGNka0Ryb3BMaXN0RW50ZXJlZCk9XCJfb25Ecm9wTGlzdEVudGVyZWQoJGV2ZW50KVwiXG4gICAgICAgIChjZGtEcm9wTGlzdEV4aXRlZCk9XCJfb25Ecm9wTGlzdEV4aXRlZCgpXCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgIGZkRG5kS2V5Ym9hcmRJdGVtXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgY2RrRHJhZ1ByZXZpZXdDbGFzcz1cImZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLXByZXZpZXdcIlxuICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNhcmRcIlxuICAgICAgICAgICAgW2Nka0RyYWdTdGFydERlbGF5XT1cImRyYWdTdGFydERlbGF5XCJcbiAgICAgICAgICAgIFtpdGVtSW5kZXhdPVwiX2l0ZW1JbmRleGVzLmdldChjYXJkLmZkQ2FyZERlZilcIlxuICAgICAgICAgICAgW2dyb3VwSW5kZXhdPVwiX2dyb3VwSW5kZXhlcy5nZXQoY2FyZC5mZENhcmREZWYpXCJcbiAgICAgICAgICAgIChjZGtEcmFnRHJvcHBlZCk9XCJfb25EcmFnRHJvcHBlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJfc2V0UGxhY2Vob2xkZXJTdHlsZShmYWxzZSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZmQtZml4ZWQtY2FyZC1sYXlvdXQtaXRlbT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FyZD8udGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2ZkLWZpeGVkLWNhcmQtbGF5b3V0LWl0ZW0+XG5cbiAgICAgICAgICAgIDxkaXYgKmNka0RyYWdQbGFjZWhvbGRlciBjbGFzcz1cImZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLXBsYWNlaG9sZGVyXCIgW3N0eWxlXT1cIl9wbGFjZWhvbGRlck1hcmdpblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXJkPy50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIF9jYXJkQ29sdW1uczsgbGV0IGxhc3QgPSBsYXN0OyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWxhc3RcIiBjbGFzcz1cImZkLWZpeGVkLWNhcmQtbGF5b3V0X19jbGVhcmZpeFwiIFtzdHlsZS5vcmRlcl09XCJpbmRleCArIDFcIj48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
397
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFzQyxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBZSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFFMUUsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ3JCLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLENBQUMsZ0JBQWdCO0FBQ2hELE1BQU0sY0FBYyxHQUFH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LElBQUksQ0FBQyxDQUFDO0lBQ3JDLFNBQVMsR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDO0lBRTNCLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtJQUM3RyxNQUFNLG9CQUFvQixHQUFHLHNCQUFzQixHQUFHLFNBQVMsR0FBRyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQztJQUNoSCxNQUFNLFdBQVcsR0FBRyxvQkFBb0IsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUM7SUFFaEgsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsNERBQTREO0FBQzVELFNBQVMsY0FBYyxDQUFDLFdBQW9DLEVBQUUsWUFBcUM7SUFDL0YsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUM5QyxXQUFXLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7SUFDL0MsWUFBWSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ2RrRHJhZywgQ2RrRHJhZ0Ryb3AsIENka0RyYWdFbnRlciwgQ2RrRHJvcExpc3QgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyByZXNpemVPYnNlcnZhYmxlLCBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEZpeGVkQ2FyZExheW91dEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2ZpeGVkLWNhcmQtbGF5b3V0LWl0ZW0vZml4ZWQtY2FyZC1sYXlvdXQtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHksIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuY29uc3QgUFhfSU5fUkVNID0gMTY7XG5jb25zdCBDQVJEX01JTklNVU1fV0lEVEggPSAzMjA7IC8vIDMyMHB4ID0gMjByZW1cbmNvbnN0IENBUkRfR0FQX1dJRFRIID0gMTY7IC8vIDE2cHggPSAxcmVtXG5jb25zdCBEUkFHX1NUQVJUX0RFTEFZID0gMjAwOyAvLyBpbiBtc1xuY29uc3QgTUFYX0NPTFVNTlMgPSAxMDtcblxubGV0IGNhcmRSYW5rID0gMTtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2ZkQ2FyZERlZl0nIH0pXG5leHBvcnQgY2xhc3MgQ2FyZERlZmluaXRpb25EaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIEJlaGF2ZXMgbGlrZSByYW5rIG9mIGNhcmQuXG4gICAgICogVXNlZnVsIGluIGNyZWF0aW5nIGxheW91dCBhZ2FpbiBhZnRlciBkcmFnIGFuZCBkcm9wLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZkQ2FyZERlZih2YWx1ZTogTnVtYmVySW5wdXQpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZmRDYXJkRGVmID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgZmRDYXJkRGVmKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mZENhcmREZWY7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mZENhcmREZWY6IG51bWJlciA9IGNhcmRSYW5rKys7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXlvdXQge1xuICAgIG51bWJlck9mQ29sdW1ucz86IG51bWJlcjtcbiAgICBzY3JlZW5TaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZERyb3BwZWQge1xuICAgIHByZXZpb3VzSW5kZXg6IG51bWJlcjtcbiAgICBjdXJyZW50SW5kZXg6IG51bWJlcjtcbiAgICBsYXlvdXRDb2x1bW5zOiBudW1iZXI7XG4gICAgaXRlbXM6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlW107XG59XG5cbnR5cGUgQ29sdW1ucyA9IDEgfCAyIHwgMyB8IDQgfCA1IHwgNiB8IDcgfCA4IHwgOSB8IDEwO1xuXG5leHBvcnQgdHlwZSBDb2x1bW5zV2lkdGhDb25maWcgPSB7IFtDIGluIENvbHVtbnNdPzogbnVtYmVyIH07XG5cbnR5cGUgQ2FyZENvbHVtbiA9IENhcmREZWZpbml0aW9uRGlyZWN0aXZlW107XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtZml4ZWQtY2FyZC1sYXlvdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maXhlZC1jYXJkLWxheW91dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC1maXhlZC1jYXJkLWxheW91dCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEZpeGVkQ2FyZExheW91dENvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICAgIC8qKiBEcmFnIGRyb3AgYmVoYXZpb3IgY2FuIGJlIGRpc2FibGVkICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlRHJhZ0Ryb3A6IGJvb2xlYW47XG5cbiAgICAvKiogRHJhZyBzdGFydCBkZWxheSBpbiBtaWxsaXNlY29uZHMsIGRlZmF1bHQgdG8gMjAwbXMgZm9yIHNhZmUgc2Nyb2xsaW5nIG9uIG1vYmlsZSB3aXRoIHRvdWNoc2NyZWVuICovXG4gICAgQElucHV0KClcbiAgICBkcmFnU3RhcnREZWxheSA9IERSQUdfU1RBUlRfREVMQVk7XG5cbiAgICAvKiogQ2FyZCdzIG1pbmltdW0gd2lkdGggaW4gcGl4ZWxzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNhcmRNaW5pbXVtV2lkdGgodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcblxuICAgICAgICBpZiAoY29lcmNlZFZhbHVlIDwgQ0FSRF9NSU5JTVVNX1dJRFRIKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jYXJkTWluaW11bVdpZHRoID0gY29lcmNlZFZhbHVlO1xuXG4gICAgICAgIC8vIElmIGNvbXBvbmVudCBpcyByZWFkeSwgZG8gdGhlIHJlY2FsY3VsYXRpb24uXG4gICAgICAgIGlmICh0aGlzLl9sYXlvdXQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGNhcmRNaW5pbXVtV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcmRNaW5pbXVtV2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIENvbmZpZyB3aXRoIHRoZSB3aWR0aCByYXRpb3MgdGhhdCBzaG91bGQgdGFrZSBldmVyeSBjb2x1bW4uIEZsZXgtZ3JvdyBwcmluY2lwZS4gTWlzc2VkIHZhbHVlcyBzZXQgdG8gMC4gcyovXG4gICAgQElucHV0KClcbiAgICBjb2x1bW5zV2lkdGhDb25maWc6IENvbHVtbnNXaWR0aENvbmZpZztcblxuICAgIC8qKiBMaW1pdCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMuIERlZmF1bHQgaXMgMTAuICovXG4gICAgQElucHV0KClcbiAgICBtYXhDb2x1bW5zID0gTUFYX0NPTFVNTlM7XG5cbiAgICAvKiogRXZlbnQgdG8gZW1pdCwgd2hlbiBsYXlvdXQgY2hhbmdlcyAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGxheW91dENoYW5nZTogRXZlbnRFbWl0dGVyPExheW91dD4gPSBuZXcgRXZlbnRFbWl0dGVyPExheW91dD4oKTtcblxuICAgIC8qKiBFdmVudCB0byBlbWl0IG9uIENhcmQgZHJhZ2dlZCBhbmQgZHJvcHBlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNhcmREcmFnZ2VkRHJvcHBlZDogRXZlbnRFbWl0dGVyPENhcmREcm9wcGVkPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FyZERyb3BwZWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oQ2FyZERlZmluaXRpb25EaXJlY3RpdmUpXG4gICAgX2NhcmRzOiBRdWVyeUxpc3Q8Q2FyZERlZmluaXRpb25EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKEZpeGVkQ2FyZExheW91dEl0ZW1Db21wb25lbnQpXG4gICAgX2NhcmRDb250YWluZXJzOiBRdWVyeUxpc3Q8Rml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oJ2Ryb3BMaXN0JywgeyByZWFkOiBDZGtEcm9wTGlzdCB9KVxuICAgIF9jYXJkV3JhcHBlcnM6IFF1ZXJ5TGlzdDxDZGtEcm9wTGlzdD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2xheW91dCcpXG4gICAgX2xheW91dDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NhcmRzQXJyYXk6IEFycmF5PENhcmREZWZpbml0aW9uRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuIE51bWJlciBvZiBDb2x1bW5zIGluIGxheW91dCAqL1xuICAgIF9udW1iZXJPZkNvbHVtbnM6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NhcmRDb2x1bW5zOiBDYXJkQ29sdW1uW107XG5cbiAgICAvKiogQGhpZGRlbiovXG4gICAgX2NvbnRhaW5lckhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gaGFuZGxlcyBydGwgc2VydmljZSAqL1xuICAgIF9kaXIgPSAnbHRyJztcblxuICAgIC8qKiBAaGlkZGVuIGZpcnN0IG51bWJlciBpcyB0aGUgQ2FyZERlZmluaXRpb24gcmFuaywgaS5lLiBpZCAqL1xuICAgIF9ncm91cEluZGV4ZXMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gZmlyc3QgbnVtYmVyIGlzIHRoZSBDYXJkRGVmaW5pdGlvbiByYW5rLCBpLmUuIGlkICovXG4gICAgX2l0ZW1JbmRleGVzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuIGZpcnN0IG51bWJlciBpcyB0aGUgQ2FyZERlZmluaXRpb24gcmFuaywgaS5lLiBpZCAqL1xuICAgIF9zaW5nbGVJdGVtQ29sdW1ucyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29sdW1uc1dpZHRoID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuIFJldHVybiBhdmFpbGFibGUgd2lkdGggZm9yIGZpeGVkIGNhcmQgbGF5b3V0ICovXG4gICAgZ2V0IF9hdmFpbGFibGVXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGF5b3V0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGxhY2Vob2xkZXJNYXJnaW46IHsgW2tsYXNzOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldmlvdXNOdW1iZXJPZkNvbHVtbnM6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuIEZvY3VzS2V5TWFuYWdlciBpbnN0YW5jZSAqL1xuICAgIHByaXZhdGUgX2tleWJvYXJkRXZlbnRzTWFuYWdlcjogRm9jdXNLZXlNYW5hZ2VyPEZpeGVkQ2FyZExheW91dEl0ZW1Db21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYXJkTWluaW11bVdpZHRoID0gQ0FSRF9NSU5JTVVNX1dJRFRIO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaG91bGRDYWxjdWxhdGVDb250YWluZXJIZWlnaHQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuIEFuIFJ4SlMgU3ViamVjdCB0aGF0IHdpbGwga2lsbCB0aGUgZGF0YSBzdHJlYW0gdXBvbiBjb21wb25lbnTigJlzIGRlc3RydWN0aW9uIChmb3IgdW5zdWJzY3JpYmluZykgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb1J0bCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saXN0ZW5PbkNhcmRzQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NDYXJkcygpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PblJlc2l6ZSgpO1xuICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5U2V0dXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVwZGF0ZSBjb2x1bW4gbGF5b3V0IHdoZW4gb3JpZW50YXRpb24gb2Ygc2NyZWVuIGNoYW5nZXMuXG4gICAgICAgICAqIGFjdHVhbCB3aWR0aCBpcyByZXR1cm5lZCB3aGVuIHZpZXcgaXMgc3RhYmxlLiBJbiBBZnRlclZpZXdJbml0LCBjb3JyZWN0IHZhbHVlIGRvZXMgbm90IGNvbWUuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2NhcmRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgnbWF4Q29sdW1ucycgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICAgICAgfSBlbHNlIGlmICgnY29sdW1uc1dpZHRoQ29uZmlnJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRDb2x1bW5zV2lkdGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIGlmICh0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIERpc3RyaWJ1dGUgY2FyZHMgb24gd2luZG93IHJlc2l6ZSAqL1xuICAgIHVwZGF0ZUxheW91dCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jYXJkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvc3NpYmxlTnVtYmVyT2ZDb2x1bW5zID0gZ2V0TnVtYmVyT2ZDb2x1bW5zKHRoaXMuX2F2YWlsYWJsZVdpZHRoLCB0aGlzLmNhcmRNaW5pbXVtV2lkdGgpO1xuXG4gICAgICAgIHRoaXMuX251bWJlck9mQ29sdW1ucyA9IE1hdGgubWluKFxuICAgICAgICAgICAgcG9zc2libGVOdW1iZXJPZkNvbHVtbnMsXG4gICAgICAgICAgICB0aGlzLl9jYXJkcy5sZW5ndGgsXG4gICAgICAgICAgICB0aGlzLm1heENvbHVtbnMgfHwgTUFYX0NPTFVNTlMsXG4gICAgICAgICAgICBNQVhfQ09MVU1OU1xuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMubGF5b3V0Q2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgbnVtYmVyT2ZDb2x1bW5zOiB0aGlzLl9udW1iZXJPZkNvbHVtbnMsXG4gICAgICAgICAgICBzY3JlZW5TaXplOiB0aGlzLl9hdmFpbGFibGVXaWR0aFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNOdW1iZXJPZkNvbHVtbnMgIT09IHRoaXMuX251bWJlck9mQ29sdW1ucykge1xuICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNOdW1iZXJPZkNvbHVtbnMgPSB0aGlzLl9udW1iZXJPZkNvbHVtbnM7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDb2x1bW5zKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZXRDb2x1bW5zV2lkdGgoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBDYWxjdWxhdGUgY29udGFpbmVyIGhlaWdodCBiYXNpbmcgb24gdGhlIGNhcmQgd3JhcHBlciBjb2x1bW5zICovXG4gICAgX2NhbGN1bGF0ZUNvbnRhaW5lckhlaWdodChhZGRpdGlvbmFsU3BhY2U6IG51bWJlciA9IDApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIGNvbnN0IHdyYXBwZXJDb2x1bW5zID0gdGhpcy5fY2FyZENvbHVtbnMubWFwKChjb2x1bW4pID0+XG4gICAgICAgICAgICBjb2x1bW4ubWFwKFxuICAgICAgICAgICAgICAgIChjYXJkKSA9PiB0aGlzLl9jYXJkV3JhcHBlcnMuZmluZCgod3JhcHBlcikgPT4gd3JhcHBlci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGEgPT09IGNhcmQpLmVsZW1lbnRcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zSGVpZ2h0cyA9IHdyYXBwZXJDb2x1bW5zXG4gICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IGNvbHVtbi5tYXAoKGNhcmQpID0+IGNhcmQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpKVxuICAgICAgICAgICAgLm1hcCgoY29sdW1uKSA9PiBjb2x1bW4ucmVkdWNlKChoZWlnaHQsIGNhcmRIZWlnaHQpID0+IChoZWlnaHQgKz0gY2FyZEhlaWdodCksIDApKTtcblxuICAgICAgICAvLyArNHB4IGJlY2F1c2UgaXQncyB0aGUgdG9wICYgYm90dG9tIGJvcmRlcnMgb2YgY2FyZCBwbGFjZWhvbGRlclxuICAgICAgICB0aGlzLl9jb250YWluZXJIZWlnaHQgPSBNYXRoLm1heCguLi5jb2x1bW5zSGVpZ2h0cykgKyA0ICsgYWRkaXRpb25hbFNwYWNlO1xuXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9lbnRlclByZWRpY2F0ZSA9IChfOiBDZGtEcmFnLCBkcm9wOiBDZGtEcm9wTGlzdCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICAvLyBXZSBzaG91bGQgdXBkYXRlIGNvbnRhaW5lcidzIGhlaWdodCAmIGl0cyBjaGlsZHJlbiByZWN0cyAodG8gcmVhY3Qgd2hlbiBkcmFnIG1vdmVzIGludG8gdGhlIGxpc3QpIGJlZm9yZSB3ZSBlbnRlcmVkIGFueSBkcm9wIGxpc3QuXG4gICAgICAgIC8vIFRoYXQncyB3aHkgaXQncyBkb25lIGhlcmUgaW5zdGVhZCBvZiBjZGtEcm9wTGlzdEVudGVyZWQuIEFzIHRoaXMgcHJlZGljYXRlIGJlaW5nIGNhbGxlZCBtYW55IHRpbWVzIGhlcmUgaXMgdGhlIG9wdGltaXphdGlvbi5cbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZENhbGN1bGF0ZUNvbnRhaW5lckhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5fc2hvdWxkQ2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0ID0gZmFsc2U7XG5cbiAgICAgICAgICAgIC8vIFBsYWNlaG9sZGVyIGRvZXNuJ3QgaGF2ZSBtYXJnaW4gc2V0IHlldCBidXQgd2UgbmVlZCB0byBjb3VudCBpdFxuICAgICAgICAgICAgLy8gTWFyZ2luIHdpbGwgYmUgc2V0IG9ubHkgaWYgdGhlcmUgYXJlIGFscmVhZHkgaXRlbXMgaW4gY29udGFpbmVyXG4gICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsU3BhY2UgPSBkcm9wLmdldFNvcnRlZEl0ZW1zKCkubGVuZ3RoID8gUFhfSU5fUkVNIDogMDtcblxuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0KGFkZGl0aW9uYWxTcGFjZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25Ecm9wTGlzdEV4aXRlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2hvdWxkQ2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRyb3BMaXN0RW50ZXJlZChldmVudDogQ2RrRHJhZ0VudGVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckl0ZW1DYXJkRGVmID0gKGV2ZW50LmNvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGEgYXMgQ2FyZERlZmluaXRpb25EaXJlY3RpdmUpLmZkQ2FyZERlZjtcbiAgICAgICAgY29uc3QgZHJhZ0l0ZW1DYXJkRGVmID0gKGV2ZW50Lml0ZW0uZGF0YSBhcyBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSkuZmRDYXJkRGVmO1xuXG4gICAgICAgIHRoaXMuX3NldFBsYWNlaG9sZGVyU3R5bGUoY29udGFpbmVySXRlbUNhcmREZWYgIT09IGRyYWdJdGVtQ2FyZERlZik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25EcmFnRHJvcHBlZChldmVudDogQ2RrRHJhZ0Ryb3A8bnVtYmVyLCBudW1iZXI+KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5jb250YWluZXIuZGF0YSA9PT0gZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbW92ZWRDYXJkID0gZXZlbnQucHJldmlvdXNDb250YWluZXIuZ2V0U29ydGVkSXRlbXMoKVswXS5kYXRhO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmQgPSBldmVudC5jb250YWluZXIuZ2V0U29ydGVkSXRlbXMoKVswXS5kYXRhO1xuXG4gICAgICAgIGNvbnN0IG1vdmVkQ2FyZENvbHVtbiA9IHRoaXMuX2NhcmRDb2x1bW5zLmZpbmQoKGNvbHVtbikgPT5cbiAgICAgICAgICAgIGNvbHVtbi5maW5kKChjYXJkKSA9PiBjYXJkLmZkQ2FyZERlZiA9PT0gbW92ZWRDYXJkLmZkQ2FyZERlZilcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWRDYXJkQ29sdW1uID0gdGhpcy5fY2FyZENvbHVtbnMuZmluZCgoY29sdW1uKSA9PlxuICAgICAgICAgICAgY29sdW1uLmZpbmQoKGNhcmQpID0+IGNhcmQuZmRDYXJkRGVmID09PSByZXBsYWNlZENhcmQuZmRDYXJkRGVmKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIElmIHdlIGRyYWdnZWQgdGhlIGNhcmQgZnJvbSB0aGUgc2FtZSBjb2x1bW4gYXMgdGhlIGNvbHVtbiB3ZSdyZSBkcm9wcGluZyBpbnRvXG4gICAgICAgIC8vIFRoZXJlIG1heSBiZSBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgb3JkZXIgc2hvdWxkbid0IGNoYW5nZSBidXQgc2luY2UgdGhlcmUgYXJlIGEgZGlmZmVyZW50IGRyb3AgbGlzdHMgaXQgd2lsbCBjaGFuZ2VcbiAgICAgICAgLy8gV2Ugc2hvdWxkIHByZXZlbnQgdGhpc1xuICAgICAgICBpZiAobW92ZWRDYXJkQ29sdW1uID09PSByZXBsYWNlZENhcmRDb2x1bW4gJiYgbW92ZWRDYXJkQ29sdW1uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgaWYgKG1vdmVkQ2FyZC5mZENhcmREZWYgPCByZXBsYWNlZENhcmQuZmRDYXJkRGVmICYmIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEgPCBldmVudC5jb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1vdmVkQ2FyZC5mZENhcmREZWYgPiByZXBsYWNlZENhcmQuZmRDYXJkRGVmICYmIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEgPiBldmVudC5jb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLCBldmVudC5jb250YWluZXIuZGF0YSwgbW92ZWRDYXJkLCByZXBsYWNlZENhcmQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEZvciB0aGUga2V5Ym9hcmQgZHJhZyZkcm9wIGRpcmVjdGl2ZSAqL1xuICAgIF9jdXN0b21Nb3ZlRm4gPSAoZ3JvdXA6IENhcmRDb2x1bW4sIGluZGV4RnJvbTogbnVtYmVyLCBpbmRleFRvOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgbW92ZWRDYXJkID0gZ3JvdXBbaW5kZXhGcm9tXTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWRDYXJkID0gZ3JvdXBbaW5kZXhUb107XG5cbiAgICAgICAgY29uc3QgaW5kZXhGcm9tQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IG1vdmVkQ2FyZC5mZENhcmREZWYpO1xuICAgICAgICBjb25zdCBpbmRleFRvQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChpbmRleEZyb21BcnJheSwgaW5kZXhUb0FycmF5LCBtb3ZlZENhcmQsIHJlcGxhY2VkQ2FyZCk7XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuIEZvciB0aGUga2V5Ym9hcmQgZHJhZyZkcm9wIGRpcmVjdGl2ZSAqL1xuICAgIF9jdXN0b21UcmFuc2ZlckZuID0gKHByZXZHcm91cDogQ2FyZENvbHVtbiwgbmV4dEdyb3VwOiBDYXJkQ29sdW1uLCBpbmRleEZyb206IG51bWJlciwgaW5kZXhUbzogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IG1vdmVkQ2FyZCA9IHByZXZHcm91cFtpbmRleEZyb21dO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmQgPSBuZXh0R3JvdXBbaW5kZXhUb107XG5cbiAgICAgICAgY29uc3QgaW5kZXhGcm9tQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IG1vdmVkQ2FyZC5mZENhcmREZWYpO1xuICAgICAgICBjb25zdCBpbmRleFRvQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChpbmRleEZyb21BcnJheSwgaW5kZXhUb0FycmF5LCBtb3ZlZENhcmQsIHJlcGxhY2VkQ2FyZCk7XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldFBsYWNlaG9sZGVyU3R5bGUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXJNYXJnaW4gPSB2YWx1ZSA/IHsgJ21hcmdpbi1ib3R0b20nOiAnMXJlbScgfSA6IHt9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEFycmFuZ2VzIGNhcmRzIG9uIGRyb3Agb2YgZHJhZ2dlZCBjYXJkICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0RyYWdEcm9wKFxuICAgICAgICBwcmV2SW5kZXg6IG51bWJlcixcbiAgICAgICAgbmV3SW5kZXg6IG51bWJlcixcbiAgICAgICAgcHJldkNhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlLFxuICAgICAgICBuZXdDYXJkOiBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZVxuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBtb3ZlSXRlbUluQXJyYXkgZnJvbSBDREsgd29uJ3Qgd29yayBhcyBpdCBjaGFuZ2VzIG9yZGVyIG9mIG90aGVyIGNhcmRzXG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZCA9IHRoaXMuX2NhcmRzQXJyYXlbbmV3SW5kZXhdO1xuICAgICAgICB0aGlzLl9jYXJkc0FycmF5W25ld0luZGV4XSA9IHRoaXMuX2NhcmRzQXJyYXlbcHJldkluZGV4XTtcbiAgICAgICAgdGhpcy5fY2FyZHNBcnJheVtwcmV2SW5kZXhdID0gcmVwbGFjZWRDYXJkO1xuXG4gICAgICAgIGFkanVzdENhcmRSYW5rKHByZXZDYXJkLCBuZXdDYXJkKTtcblxuICAgICAgICB0aGlzLmNhcmREcmFnZ2VkRHJvcHBlZC5lbWl0KHtcbiAgICAgICAgICAgIHByZXZpb3VzSW5kZXg6IHByZXZJbmRleCxcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleDogbmV3SW5kZXgsXG4gICAgICAgICAgICBsYXlvdXRDb2x1bW5zOiB0aGlzLl9udW1iZXJPZkNvbHVtbnMsXG4gICAgICAgICAgICBpdGVtczogdGhpcy5fY2FyZHMudG9BcnJheSgpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjY2Vzc2liaWxpdHlTZXR1cCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyID0gbmV3IEZvY3VzS2V5TWFuYWdlcih0aGlzLl9jYXJkQ29udGFpbmVycykud2l0aFdyYXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSdGwgY2hhbmdlIHN1YnNjcmlwdGlvbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvUnRsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ydGxTZXJ2aWNlPy5ydGwucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoaXNSdGwpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2RpciA9IGlzUnRsID8gJ3J0bCcgOiAnbHRyJztcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTGlzdGVuIHdpbmRvdyByZXNpemUgYW5kIGRpc3RyaWJ1dGUgY2FyZHMgb24gY29sdW1uIGNoYW5nZSAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICByZXNpemVPYnNlcnZhYmxlKHRoaXMuX2xheW91dC5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDYwKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUxheW91dCgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBMaXN0ZW4gY2FyZCBjaGFuZ2UgYW5kIGRpc3RyaWJ1dGUgY2FyZHMgb24gY29sdW1uIGNoYW5nZSAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uQ2FyZHNDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhcmRzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NDYXJkcygpO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29sdW1ucygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZW5kZXJzIGxheW91dCBvbiBjb2x1bW4gY2hhbmdlcyAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZUNvbHVtbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldENhcmRDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMuX3NldENvbHVtbnNXaWR0aChmYWxzZSk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbnRhaW5lckhlaWdodCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0NhcmRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYXJkc0FycmF5ID0gdGhpcy5fY2FyZHNcbiAgICAgICAgICAgIC50b0FycmF5KClcbiAgICAgICAgICAgIC5zb3J0KChmaXJzdENhcmQsIHNlY29uZENhcmQpID0+IGZpcnN0Q2FyZC5mZENhcmREZWYgLSBzZWNvbmRDYXJkLmZkQ2FyZERlZik7XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRGlzdHJpYnV0ZSBjYXJkcyBhbW9uZyBjb2x1bW5zIHRvIGFycmFuZ2UgdGhlbSBpbiBcIlpcIiBmbG93ICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZENvbHVtbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2dyb3VwSW5kZXhlcyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG4gICAgICAgIHRoaXMuX2l0ZW1JbmRleGVzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgICAgICAgdGhpcy5fc2luZ2xlSXRlbUNvbHVtbnMgPSBuZXcgU2V0PG51bWJlcj4oKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zOiBDYXJkQ29sdW1uW10gPSBuZXcgQXJyYXkodGhpcy5fbnVtYmVyT2ZDb2x1bW5zKS5maWxsKDApLm1hcCgoKSA9PiBuZXcgQXJyYXkoMCkpO1xuXG4gICAgICAgIHRoaXMuX2NhcmRzQXJyYXkuZm9yRWFjaCgoY2FyZCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VyckNvbHVtbkluZGV4ID0gaSAlIHRoaXMuX251bWJlck9mQ29sdW1ucztcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IGNvbHVtbnNbY3VyckNvbHVtbkluZGV4XS5sZW5ndGg7XG5cbiAgICAgICAgICAgIGNvbHVtbnNbY3VyckNvbHVtbkluZGV4XS5wdXNoKGNhcmQpO1xuXG4gICAgICAgICAgICB0aGlzLl9ncm91cEluZGV4ZXMuc2V0KGNhcmQuZmRDYXJkRGVmLCBjdXJyQ29sdW1uSW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5faXRlbUluZGV4ZXMuc2V0KGNhcmQuZmRDYXJkRGVmLCBpdGVtSW5kZXgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jYXJkQ29sdW1ucyA9IGNvbHVtbnM7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmxlbmd0aCA+IDAgJiYgY29sdW1uLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaW5nbGVJdGVtQ29sdW1ucy5hZGQoY29sdW1uWzBdLmZkQ2FyZERlZik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0Q29sdW1uc1dpZHRoKGRldGVjdENoYW5nZXMgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbHVtbnNXaWR0aCA9IG5ldyBNYXAoKTtcblxuICAgICAgICBjb25zdCBjb25maWdQcmVzZW50ID1cbiAgICAgICAgICAgIHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnICYmXG4gICAgICAgICAgICB0eXBlb2YgdGhpcy5jb2x1bW5zV2lkdGhDb25maWcgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmNvbHVtbnNXaWR0aENvbmZpZykubGVuZ3RoO1xuXG4gICAgICAgIGlmICghY29uZmlnUHJlc2VudCB8fCAhdGhpcy5fbGF5b3V0IHx8IHRoaXMuX251bWJlck9mQ29sdW1ucyA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZml4ZWRXaWR0aE1vZGlmaWVycyA9IGZpeFdpZHRoTW9kaWZpZXJzKHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnLCB0aGlzLl9udW1iZXJPZkNvbHVtbnMpO1xuICAgICAgICBjb25zdCB0b3RhbFdpZHRoTW9kaWZpZXJzID0gZml4ZWRXaWR0aE1vZGlmaWVycy5yZWR1Y2UoKHN1bSwgd2lkdGgpID0+IChzdW0gKz0gd2lkdGgpLCAwKTtcbiAgICAgICAgY29uc3QgZnJlZVNwYWNlID0gdGhpcy5fYXZhaWxhYmxlV2lkdGggLSB0aGlzLmNhcmRNaW5pbXVtV2lkdGggKiB0aGlzLl9udW1iZXJPZkNvbHVtbnM7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICAgIHRoaXMuY2FyZE1pbmltdW1XaWR0aCArIChmcmVlU3BhY2UgLyB0b3RhbFdpZHRoTW9kaWZpZXJzKSAqIGZpeGVkV2lkdGhNb2RpZmllcnNbaW5kZXhdXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb2x1bW4uZm9yRWFjaCgoY2FyZCkgPT4gdGhpcy5fY29sdW1uc1dpZHRoLnNldChjYXJkLmZkQ2FyZERlZiwgY29sdW1uV2lkdGgpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqIEBoaWRkZW4gKi9cbmZ1bmN0aW9uIGZpeFdpZHRoTW9kaWZpZXJzKGNvbmZpZzogQ29sdW1uc1dpZHRoQ29uZmlnLCBudW1iZXJPZkNvbHVtbnM6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBjb25zdCBtb2RpZmllcnMgPSBuZXcgQXJyYXkobnVtYmVyT2ZDb2x1bW5zKS5maWxsKDApO1xuXG4gICAgcmV0dXJuIG1vZGlmaWVycy5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbldpZHRoTW9kaWZpZXIgPSBjb25maWdbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAoIWNvbHVtbldpZHRoTW9kaWZpZXIgfHwgY29sdW1uV2lkdGhNb2RpZmllciA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbHVtbldpZHRoTW9kaWZpZXI7XG4gICAgfSk7XG59XG5cbi8qKiBAaGlkZGVuIFJldHVybnMgbnVtYmVyIG9mIGNvbHVtbnMgdGhhdCBjYW4gZml0IGluIGN1cnJlbnQgYXZhaWxhYmxlIHdpZHRoIGZvciBmZC1jYXJkLWxheW91dCAqL1xuZnVuY3Rpb24gZ2V0TnVtYmVyT2ZDb2x1bW5zKGNvbnRhaW5lcldpZHRoOiBudW1iZXIsIGNhcmRXaWR0aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb250YWluZXJXaWR0aCA9IGNvbnRhaW5lcldpZHRoIHx8IDE7XG4gICAgY2FyZFdpZHRoID0gY2FyZFdpZHRoIHx8IDE7XG5cbiAgICBjb25zdCBudW1iZXJPZkNhcmRzV2l0aE5vR2FwID0gTWF0aC5tYXgoTWF0aC5mbG9vcihjb250YWluZXJXaWR0aCAvIGNhcmRXaWR0aCksIDEpOyAvLyBFeGFtcGxlOiA5NjAgLyAzMjAgPSAzXG4gICAgY29uc3QgcmVxdWlyZWRXaWR0aFdpdGhHYXAgPSBudW1iZXJPZkNhcmRzV2l0aE5vR2FwICogY2FyZFdpZHRoICsgKG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgLSAxKSAqIENBUkRfR0FQX1dJRFRIO1xuICAgIGNvbnN0IGNvbHVtbkNvdW50ID0gcmVxdWlyZWRXaWR0aFdpdGhHYXAgPiBjb250YWluZXJXaWR0aCA/IG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgLSAxIDogbnVtYmVyT2ZDYXJkc1dpdGhOb0dhcDtcblxuICAgIHJldHVybiBNYXRoLm1heChjb2x1bW5Db3VudCwgMSk7XG59XG5cbi8qKiBAaGlkZGVuIE1ldGhvZCB0byB1cGRhdGUgcmFuayBhZnRlciBjYXJkcyBhcmUgZHJhZ2dlZCAqL1xuZnVuY3Rpb24gYWRqdXN0Q2FyZFJhbmsoZHJhZ2dlZENhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlLCByZXBsYWNlZENhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlKTogdm9pZCB7XG4gICAgY29uc3QgZHJhZ2dlZENhcmRSYW5rID0gZHJhZ2dlZENhcmQuZmRDYXJkRGVmO1xuICAgIGRyYWdnZWRDYXJkLmZkQ2FyZERlZiA9IHJlcGxhY2VkQ2FyZC5mZENhcmREZWY7XG4gICAgcmVwbGFjZWRDYXJkLmZkQ2FyZERlZiA9IGRyYWdnZWRDYXJkUmFuaztcbn1cbiIsIjxkaXZcbiAgICAjbGF5b3V0XG4gICAgY2RrRHJvcExpc3RHcm91cFxuICAgIGZkRG5kS2V5Ym9hcmRHcm91cFxuICAgIGNsYXNzPVwiZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtbGF5b3V0IGZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLWxheW91dC0tY29sdW1ucy17eyB0aGlzLl9udW1iZXJPZkNvbHVtbnMgfX1cIlxuICAgIFtzdHlsZS5oZWlnaHRdPVwiX2NvbnRhaW5lckhlaWdodCArICdweCdcIlxuICAgIFtncm91cHNdPVwiX2NhcmRDb2x1bW5zXCJcbiAgICBvcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgIFtjdXN0b21Nb3ZlRm5dPVwiX2N1c3RvbU1vdmVGblwiXG4gICAgW2N1c3RvbVRyYW5zZmVyRm5dPVwiX2N1c3RvbVRyYW5zZmVyRm5cIlxuICAgIFtkaXNhYmxlS2V5Ym9hcmREcmFnRHJvcF09XCJkaXNhYmxlRHJhZ0Ryb3BcIlxuICAgIFtjZGtEcm9wTGlzdEdyb3VwRGlzYWJsZWRdPVwiZGlzYWJsZURyYWdEcm9wXCJcbiAgICBbYXR0ci5kaXJdPVwiX2RpclwiXG4+XG4gICAgPGRpdlxuICAgICAgICAjZHJvcExpc3RcbiAgICAgICAgKm5nRm9yPVwibGV0IGNhcmQgb2YgX2NhcmRzQXJyYXk7IGxldCBjYXJkSW5kZXggPSBpbmRleFwiXG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgIGNka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXG4gICAgICAgIGNsYXNzPVwiZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmRcIlxuICAgICAgICBbY2xhc3MuZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtLXNpbmdsZV09XCJfc2luZ2xlSXRlbUNvbHVtbnMuaGFzKGNhcmQuZmRDYXJkRGVmKVwiXG4gICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiX2NvbHVtbnNXaWR0aC5nZXQoY2FyZC5mZENhcmREZWYpXCJcbiAgICAgICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJfY29sdW1uc1dpZHRoLmdldChjYXJkLmZkQ2FyZERlZilcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImNhcmRJbmRleFwiXG4gICAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cIl9lbnRlclByZWRpY2F0ZVwiXG4gICAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwiX29uRHJvcExpc3RFbnRlcmVkKCRldmVudClcIlxuICAgICAgICAoY2RrRHJvcExpc3RFeGl0ZWQpPVwiX29uRHJvcExpc3RFeGl0ZWQoKVwiXG4gICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICBmZERuZEtleWJvYXJkSXRlbVxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIGNka0RyYWdQcmV2aWV3Q2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2FyZC1wcmV2aWV3XCJcbiAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjYXJkXCJcbiAgICAgICAgICAgIFtjZGtEcmFnU3RhcnREZWxheV09XCJkcmFnU3RhcnREZWxheVwiXG4gICAgICAgICAgICBbaXRlbUluZGV4XT1cIl9pdGVtSW5kZXhlcy5nZXQoY2FyZC5mZENhcmREZWYpXCJcbiAgICAgICAgICAgIFtncm91cEluZGV4XT1cIl9ncm91cEluZGV4ZXMuZ2V0KGNhcmQuZmRDYXJkRGVmKVwiXG4gICAgICAgICAgICAoY2RrRHJhZ0Ryb3BwZWQpPVwiX29uRHJhZ0Ryb3BwZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwiX3NldFBsYWNlaG9sZGVyU3R5bGUoZmFsc2UpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGZkLWZpeGVkLWNhcmQtbGF5b3V0LWl0ZW0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcmQ/LnRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9mZC1maXhlZC1jYXJkLWxheW91dC1pdGVtPlxuXG4gICAgICAgICAgICA8ZGl2ICpjZGtEcmFnUGxhY2Vob2xkZXIgY2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2FyZC1wbGFjZWhvbGRlclwiIFtzdHlsZV09XCJfcGxhY2Vob2xkZXJNYXJnaW5cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FyZD8udGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBfY2FyZENvbHVtbnM7IGxldCBsYXN0ID0gbGFzdDsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFsYXN0XCIgY2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2xlYXJmaXhcIiBbc3R5bGUub3JkZXJdPVwiaW5kZXggKyAxXCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/facets",
3
- "version": "0.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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/feed-input",
3
- "version": "0.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
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/feed-list-item",
3
- "version": "0.34.3-rc.21",
3
+ "version": "0.34.3-rc.24",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"