@gravitee/ui-components 3.24.5-renovate-github-markdown-css-5-x-6cd8067 → 3.25.1

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 (115) hide show
  1. package/assets/css/github-markdown-css/github-markdown.css +545 -500
  2. package/assets/i18n/en.json +3 -0
  3. package/assets/i18n/fr.json +3 -0
  4. package/assets/icons/design.svg +1 -1
  5. package/package.json +2 -9
  6. package/src/atoms/gv-autocomplete.js +132 -156
  7. package/src/atoms/gv-button.js +73 -248
  8. package/src/atoms/gv-checkbox.js +45 -103
  9. package/src/atoms/gv-date-picker-calendar.js +312 -393
  10. package/src/atoms/gv-date-picker-cell.js +57 -81
  11. package/src/atoms/gv-date-picker.js +180 -319
  12. package/src/atoms/gv-file-upload.js +85 -195
  13. package/src/atoms/gv-icon.js +13 -34
  14. package/src/atoms/gv-image.js +31 -66
  15. package/src/atoms/gv-input-message.js +12 -37
  16. package/src/atoms/gv-input.js +117 -148
  17. package/src/atoms/gv-link.js +47 -125
  18. package/src/atoms/gv-message.js +18 -69
  19. package/src/atoms/gv-metric.js +19 -68
  20. package/src/atoms/gv-relative-time.js +67 -38
  21. package/src/atoms/gv-select-native.js +96 -215
  22. package/src/atoms/gv-select.js +110 -230
  23. package/src/atoms/gv-spinner.js +5 -26
  24. package/src/atoms/gv-state.js +25 -66
  25. package/src/atoms/gv-switch.js +40 -160
  26. package/src/atoms/gv-tag.js +26 -78
  27. package/src/atoms/gv-text.js +22 -83
  28. package/src/charts/gv-chart-bar.js +22 -18
  29. package/src/charts/gv-chart-gauge.js +28 -31
  30. package/src/charts/gv-chart-histogram.js +18 -10
  31. package/src/charts/gv-chart-line.js +70 -59
  32. package/src/charts/gv-chart-map.js +44 -42
  33. package/src/charts/gv-chart-pie.js +18 -14
  34. package/src/index.js +1 -0
  35. package/src/lib/cron-expression.js +40 -35
  36. package/src/lib/date.js +10 -1
  37. package/src/lib/events.js +3 -1
  38. package/src/lib/http-client-schema-form.js +13 -12
  39. package/src/lib/http.js +57 -56
  40. package/src/lib/i18n.js +30 -22
  41. package/src/lib/item.js +13 -12
  42. package/src/lib/properties.js +77 -42
  43. package/src/lib/schema-form.js +4 -5
  44. package/src/lib/studio.js +13 -60
  45. package/src/lib/style.js +8 -8
  46. package/src/lib/text-format.js +14 -7
  47. package/src/lib/theme.js +8 -5
  48. package/src/lib/utils.js +17 -18
  49. package/src/mixins/chart-element.js +31 -54
  50. package/src/mixins/input-element.js +60 -47
  51. package/src/mixins/item-resource.js +34 -32
  52. package/src/mixins/keyboard-element.js +6 -5
  53. package/src/mixins/update-after-browser.js +4 -1
  54. package/src/mixins/with-resize-observer.js +23 -13
  55. package/src/mixins/with-skeleton-attribute.js +54 -48
  56. package/src/molecules/gv-card-full.js +26 -147
  57. package/src/molecules/gv-card-list.js +13 -42
  58. package/src/molecules/gv-card.js +17 -91
  59. package/src/molecules/gv-category-list.js +6 -17
  60. package/src/molecules/gv-category.js +23 -103
  61. package/src/molecules/gv-code.js +81 -143
  62. package/src/molecules/gv-confirm.js +41 -71
  63. package/src/molecules/gv-cron-editor.js +143 -389
  64. package/src/molecules/gv-dropdown-menu.js +14 -46
  65. package/src/molecules/gv-expandable.js +31 -59
  66. package/src/molecules/gv-expression-language.js +176 -138
  67. package/src/molecules/gv-identity-picture.js +42 -65
  68. package/src/molecules/gv-list.js +42 -134
  69. package/src/molecules/gv-metrics.js +37 -49
  70. package/src/molecules/gv-modal.js +28 -95
  71. package/src/molecules/gv-nav.js +49 -75
  72. package/src/molecules/gv-option.js +57 -130
  73. package/src/molecules/gv-plans.js +86 -209
  74. package/src/molecules/gv-popover.js +57 -177
  75. package/src/molecules/gv-promote.js +28 -146
  76. package/src/molecules/gv-rating-list.js +69 -195
  77. package/src/molecules/gv-rating.js +52 -105
  78. package/src/molecules/gv-row-expandable.js +5 -11
  79. package/src/molecules/gv-row.js +21 -147
  80. package/src/molecules/gv-stats.js +23 -48
  81. package/src/molecules/gv-stepper.js +43 -187
  82. package/src/molecules/gv-table.js +199 -309
  83. package/src/molecules/gv-tree.js +33 -156
  84. package/src/organisms/gv-documentation.js +45 -128
  85. package/src/organisms/gv-header.js +37 -195
  86. package/src/organisms/gv-http-client.js +32 -168
  87. package/src/organisms/gv-menu.js +37 -158
  88. package/src/organisms/gv-newsletter-subscription.js +48 -189
  89. package/src/organisms/gv-pagination.js +49 -77
  90. package/src/organisms/gv-properties.js +271 -492
  91. package/src/organisms/gv-resizable-views.js +41 -259
  92. package/src/organisms/gv-resources.js +168 -275
  93. package/src/organisms/gv-schema-form-array.js +49 -159
  94. package/src/organisms/gv-schema-form-control-object.js +59 -73
  95. package/src/organisms/gv-schema-form-control.js +107 -134
  96. package/src/organisms/gv-schema-form.js +219 -280
  97. package/src/organisms/gv-tabs.js +66 -98
  98. package/src/organisms/gv-user-menu.js +36 -201
  99. package/src/organisms/gv-vertical-menu.js +20 -61
  100. package/src/policy-studio/gv-flow-step.js +106 -245
  101. package/src/policy-studio/gv-flow.js +125 -304
  102. package/src/policy-studio/gv-policy-studio-menu.js +157 -471
  103. package/src/policy-studio/gv-policy-studio.js +714 -760
  104. package/src/styles/empty.js +3 -20
  105. package/src/styles/input.js +3 -247
  106. package/src/styles/link.js +3 -16
  107. package/src/styles/shapes.js +1 -0
  108. package/src/styles/skeleton.js +3 -37
  109. package/src/styles/zoom.js +3 -24
  110. package/src/theme/gv-theme.js +21 -60
  111. package/CHANGELOG.md +0 -1260
  112. package/LICENSE.txt +0 -202
  113. package/README.md +0 -195
  114. package/src/.eslintrc.js +0 -19
  115. package/src/theme/definition.json +0 -1762
@@ -15,7 +15,6 @@
15
15
  */
16
16
  import { css, LitElement, html } from 'lit';
17
17
  import { classMap } from 'lit/directives/class-map';
18
-
19
18
  /**
20
19
  * Popover component
21
20
  *
@@ -37,174 +36,52 @@ import { classMap } from 'lit/directives/class-map';
37
36
  * @cssprop {Color} [--gv-popover--bdc=var(--gv-theme-neutral-color, #f5f5f5)] - Border color
38
37
  * @cssprop {Length} [--gv-popover--p=0.5rem] - Padding
39
38
  */
39
+
40
40
  export class GvPopover extends LitElement {
41
41
  static get properties() {
42
42
  return {
43
- event: { type: String },
44
- delay: { type: Number },
45
- arrow: { type: Boolean, reflect: true },
46
- small: { type: Boolean, reflect: true },
47
- medium: { type: Boolean, reflect: true },
48
- large: { type: Boolean, reflect: true },
49
- width: { type: String },
50
- position: { type: String, reflect: true },
51
- auto: { type: Boolean },
52
- _opened: { type: Boolean, attribute: false },
43
+ event: {
44
+ type: String
45
+ },
46
+ delay: {
47
+ type: Number
48
+ },
49
+ arrow: {
50
+ type: Boolean,
51
+ reflect: true
52
+ },
53
+ small: {
54
+ type: Boolean,
55
+ reflect: true
56
+ },
57
+ medium: {
58
+ type: Boolean,
59
+ reflect: true
60
+ },
61
+ large: {
62
+ type: Boolean,
63
+ reflect: true
64
+ },
65
+ width: {
66
+ type: String
67
+ },
68
+ position: {
69
+ type: String,
70
+ reflect: true
71
+ },
72
+ auto: {
73
+ type: Boolean
74
+ },
75
+ _opened: {
76
+ type: Boolean,
77
+ attribute: false
78
+ }
53
79
  };
54
80
  }
55
81
 
56
82
  static get styles() {
57
- return [
58
- // language=CSS
59
- css`
60
- :host {
61
- cursor: pointer;
62
- box-sizing: border-box;
63
- display: inline-block;
64
- position: relative;
65
- }
66
-
67
- .popover {
68
- --bgc: var(--gv-popover--bgc, var(--gv-theme-neutral-color-lighter, #fafafa));
69
- color: var(--gv-popover--c, var(--gv-theme-font-color-dark, #262626));
70
- position: absolute;
71
- background-color: var(--bgc);
72
- padding: var(--gv-popover--p, 0.5rem);
73
- border-radius: 4px;
74
- z-index: 1000;
75
- margin: 0 auto;
76
- text-align: center;
77
- width: auto;
78
- box-sizing: content-box;
79
- }
80
-
81
- :host([position='bottom']) .popover {
82
- top: calc(100% + 0.4rem);
83
- transform: translateX(-50%);
84
- left: 50%;
85
- box-shadow: 1px 0 0 0 var(--gv-theme-neutral-color, #f5f5f5), 0 2px 3px var(--gv-theme-neutral-color-dark, #bfbfbf);
86
- }
87
-
88
- :host([position='bottom'][arrow]) .popover {
89
- top: calc(100% + 0.4rem + 10px);
90
- }
91
-
92
- :host([position='bottom'][arrow]) .arrow {
93
- top: calc(100% - 8px);
94
- transform: translateX(-50%);
95
- left: 50%;
96
- }
97
-
98
- :host([position='top']) .popover {
99
- bottom: calc(100% + 0.4rem);
100
- transform: translateX(-50%);
101
- left: 50%;
102
- box-shadow: 1px 0 0 0 var(--gv-theme-neutral-color, #f5f5f5), 0 -2px 3px var(--gv-theme-neutral-color-dark, #bfbfbf);
103
- }
104
-
105
- :host([position='top'][arrow]) .popover {
106
- bottom: calc(100% + 0.4rem + 10px);
107
- }
108
-
109
- :host([position='top'][arrow]) .arrow {
110
- bottom: calc(100% - 8px);
111
- transform: translateX(-50%) rotate(180deg);
112
- left: 50%;
113
- }
114
-
115
- :host([position='left']) .popover {
116
- top: 50%;
117
- transform: translateY(-50%);
118
- right: calc(100% + 0.4rem);
119
- box-shadow: -1px 0 0 0 var(--gv-theme-neutral-color, #f5f5f5), -1px 2px 3px var(--gv-theme-neutral-color-dark, #bfbfbf);
120
- }
121
-
122
- :host([position='left'][arrow]) .popover {
123
- right: calc(100% + 0.4rem + 10px);
124
- }
125
-
126
- :host([position='left'][arrow]) .arrow {
127
- top: 50%;
128
- transform: translateY(-50%) rotate(90deg);
129
- right: calc(100% - 8px);
130
- }
131
-
132
- :host([position='right']) .popover {
133
- top: 50%;
134
- transform: translateY(-50%);
135
- left: calc(100% + 0.4rem);
136
- box-shadow: 1px 0 0 1px var(--gv-theme-neutral-color, #f5f5f5), 1px 1px 1px var(--gv-theme-neutral-color-dark, #bfbfbf);
137
- }
138
-
139
- :host([position='right'][arrow]) .popover {
140
- left: calc(100% + 0.4rem + 10px);
141
- }
142
-
143
- :host([position='right'][arrow]) .arrow {
144
- left: calc(100% - 8px);
145
- top: 50%;
146
- transform: translateY(-50%) rotate(-90deg);
147
- }
148
-
149
- .inline .popover {
150
- white-space: nowrap;
151
- }
152
-
153
- :host([small]) .popover {
154
- width: 200px;
155
- }
156
-
157
- :host([medium]) .popover {
158
- width: 350px;
159
- }
160
-
161
- :host([large]) .popover {
162
- width: 500px;
163
- }
164
-
165
- .content {
166
- width: 100%;
167
- }
168
-
169
- .popover,
170
- .arrow {
171
- opacity: 0;
172
- visibility: hidden;
173
- transition: opacity 0.3s ease-in-out;
174
- }
175
-
176
- .open .popover,
177
- .open .arrow {
178
- display: block;
179
- opacity: 1;
180
- visibility: visible;
181
- }
182
-
183
- .close .popover,
184
- .close .arrow {
185
- }
186
-
187
- .arrow {
188
- width: 25px;
189
- height: 25px;
190
- z-index: 101;
191
- position: absolute;
192
- overflow: hidden;
193
- }
194
-
195
- .arrow:after {
196
- content: '';
197
- position: absolute;
198
- width: 12px;
199
- height: 12px;
200
- background: var(--gv-popover--bgc, var(--gv-theme-neutral-color-lighter, #fafafa));
201
- transform: rotate(45deg);
202
- top: 19px;
203
- left: 6px;
204
- border: 1px solid var(--gv-popover--bdc, var(--gv-theme-neutral-color, #f5f5f5));
205
- }
206
- `,
207
- ];
83
+ return [// language=CSS
84
+ css`:host{cursor:pointer;box-sizing:border-box;display:inline-block;position:relative}.popover{--bgc:var(--gv-popover--bgc, var(--gv-theme-neutral-color-lighter, #fafafa));color:var(--gv-popover--c,var(--gv-theme-font-color-dark,#262626));position:absolute;background-color:var(--bgc);padding:var(--gv-popover--p,.5rem);border-radius:4px;z-index:1000;margin:0 auto;text-align:center;width:auto;box-sizing:content-box}:host([position=bottom]) .popover{top:calc(100% + .4rem);transform:translateX(-50%);left:50%;box-shadow:1px 0 0 0 var(--gv-theme-neutral-color,#f5f5f5),0 2px 3px var(--gv-theme-neutral-color-dark,#bfbfbf)}:host([position=bottom][arrow]) .popover{top:calc(100% + .4rem + 10px)}:host([position=bottom][arrow]) .arrow{top:calc(100% - 8px);transform:translateX(-50%);left:50%}:host([position=top]) .popover{bottom:calc(100% + .4rem);transform:translateX(-50%);left:50%;box-shadow:1px 0 0 0 var(--gv-theme-neutral-color,#f5f5f5),0 -2px 3px var(--gv-theme-neutral-color-dark,#bfbfbf)}:host([position=top][arrow]) .popover{bottom:calc(100% + .4rem + 10px)}:host([position=top][arrow]) .arrow{bottom:calc(100% - 8px);transform:translateX(-50%) rotate(180deg);left:50%}:host([position=left]) .popover{top:50%;transform:translateY(-50%);right:calc(100% + .4rem);box-shadow:-1px 0 0 0 var(--gv-theme-neutral-color,#f5f5f5),-1px 2px 3px var(--gv-theme-neutral-color-dark,#bfbfbf)}:host([position=left][arrow]) .popover{right:calc(100% + .4rem + 10px)}:host([position=left][arrow]) .arrow{top:50%;transform:translateY(-50%) rotate(90deg);right:calc(100% - 8px)}:host([position=right]) .popover{top:50%;transform:translateY(-50%);left:calc(100% + .4rem);box-shadow:1px 0 0 1px var(--gv-theme-neutral-color,#f5f5f5),1px 1px 1px var(--gv-theme-neutral-color-dark,#bfbfbf)}:host([position=right][arrow]) .popover{left:calc(100% + .4rem + 10px)}:host([position=right][arrow]) .arrow{left:calc(100% - 8px);top:50%;transform:translateY(-50%) rotate(-90deg)}.inline .popover{white-space:nowrap}:host([small]) .popover{width:200px}:host([medium]) .popover{width:350px}:host([large]) .popover{width:500px}.content{width:100%}.arrow,.popover{opacity:0;visibility:hidden;transition:opacity .3s ease-in-out}.open .arrow,.open .popover{display:block;opacity:1;visibility:visible}.arrow{width:25px;height:25px;z-index:101;position:absolute;overflow:hidden}.arrow:after{content:'';position:absolute;width:12px;height:12px;background:var(--gv-popover--bgc,var(--gv-theme-neutral-color-lighter,#fafafa));transform:rotate(45deg);top:19px;left:6px;border:1px solid var(--gv-popover--bdc,var(--gv-theme-neutral-color,#f5f5f5))}`];
208
85
  }
209
86
 
210
87
  constructor() {
@@ -221,7 +98,9 @@ export class GvPopover extends LitElement {
221
98
  if (this.event === 'click') {
222
99
  window.removeEventListener(this.event, this._closeHandler);
223
100
  }
101
+
224
102
  this._opened = true;
103
+
225
104
  if (this.event === 'click') {
226
105
  setTimeout(() => window.addEventListener(this.event, this._closeHandler));
227
106
  }
@@ -248,12 +127,12 @@ export class GvPopover extends LitElement {
248
127
 
249
128
  render() {
250
129
  const inline = this.width == null && !this.small && !this.medium && !this.large;
251
- const classes = { open: this._opened, content: true, inline };
252
- return html` <div class="${classMap(classes)}">
253
- <slot></slot>
254
- ${this.arrow ? html`<div class="arrow"></div>` : ''}
255
- <div class="popover">${this.renderContent()}</div>
256
- </div>`;
130
+ const classes = {
131
+ open: this._opened,
132
+ content: true,
133
+ inline
134
+ };
135
+ return html` <div class="${classMap(classes)}"> <slot></slot> ${this.arrow ? html`<div class="arrow"></div>` : ''} <div class="popover">${this.renderContent()}</div> </div>`;
257
136
  }
258
137
 
259
138
  renderContent() {
@@ -263,6 +142,7 @@ export class GvPopover extends LitElement {
263
142
  firstUpdated(_changedProperties) {
264
143
  setTimeout(() => {
265
144
  this.addEventListener(this.event, this._open.bind(this));
145
+
266
146
  if (this.event.startsWith('mouse') && this.delay === 0) {
267
147
  this.addEventListener('mouseleave', this._close.bind(this));
268
148
  }
@@ -273,7 +153,7 @@ export class GvPopover extends LitElement {
273
153
  const popover = this.shadowRoot.querySelector('.popover');
274
154
  return {
275
155
  width: popover.offsetWidth,
276
- height: popover.offsetHeight,
156
+ height: popover.offsetHeight
277
157
  };
278
158
  }
279
159
 
@@ -284,22 +164,20 @@ export class GvPopover extends LitElement {
284
164
  _getCenterPosition() {
285
165
  return {
286
166
  x: this.target.x + this.target.width / 2 + window.scrollX,
287
- y: this.target.y + this.target.height / 2 + window.scrollY,
167
+ y: this.target.y + this.target.height / 2 + window.scrollY
288
168
  };
289
169
  }
290
170
 
291
171
  _updatePosition() {
292
172
  if (this.position != null && this.auto) {
293
173
  const popover = this.shadowRoot.querySelector('.popover');
174
+
294
175
  if (popover) {
295
176
  this.target = this.firstElementChild.getBoundingClientRect();
296
- if (
297
- (this.position === 'top' && !this._hasTopSpace()) ||
298
- (this.position === 'bottom' && !this._hasBottomSpace()) ||
299
- (this.position === 'left' && !this._hasLeftSpace()) ||
300
- (this.position === 'right' && !this._hasRightSpace())
301
- ) {
177
+
178
+ if (this.position === 'top' && !this._hasTopSpace() || this.position === 'bottom' && !this._hasBottomSpace() || this.position === 'left' && !this._hasLeftSpace() || this.position === 'right' && !this._hasRightSpace()) {
302
179
  const index = [this._hasTopSpace(), this._hasRightSpace(), this._hasBottomSpace(), this._hasLeftSpace()].indexOf(true);
180
+
303
181
  if (index > -1) {
304
182
  this.position = ['top', 'right', 'bottom', 'left'][index];
305
183
  }
@@ -344,8 +222,10 @@ export class GvPopover extends LitElement {
344
222
  if (props.has('width')) {
345
223
  this.shadowRoot.querySelector('.popover').style.setProperty('width', this.width);
346
224
  }
225
+
347
226
  this._updatePosition();
348
227
  }
349
- }
350
228
 
229
+ }
351
230
  window.customElements.define('gv-popover', GvPopover);
231
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL21vbGVjdWxlcy9ndi1wb3BvdmVyLmpzIl0sIm5hbWVzIjpbImNzcyIsIkxpdEVsZW1lbnQiLCJodG1sIiwiY2xhc3NNYXAiLCJHdlBvcG92ZXIiLCJwcm9wZXJ0aWVzIiwiZXZlbnQiLCJ0eXBlIiwiU3RyaW5nIiwiZGVsYXkiLCJOdW1iZXIiLCJhcnJvdyIsIkJvb2xlYW4iLCJyZWZsZWN0Iiwic21hbGwiLCJtZWRpdW0iLCJsYXJnZSIsIndpZHRoIiwicG9zaXRpb24iLCJhdXRvIiwiX29wZW5lZCIsImF0dHJpYnV0ZSIsInN0eWxlcyIsImNvbnN0cnVjdG9yIiwiX2Nsb3NlSGFuZGxlciIsIl9jbG9zZSIsImJpbmQiLCJfb3BlbiIsImUiLCJ3aW5kb3ciLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2V0VGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjbG9zZSIsInRhcmdldCIsImZpcnN0RWxlbWVudENoaWxkIiwib3BlbkVsZW1lbnQiLCJzaGFkb3dSb290IiwicXVlcnlTZWxlY3RvciIsImNsYXNzTGlzdCIsImFkZCIsInJlbW92ZSIsInJlbmRlciIsImlubGluZSIsImNsYXNzZXMiLCJvcGVuIiwiY29udGVudCIsInJlbmRlckNvbnRlbnQiLCJmaXJzdFVwZGF0ZWQiLCJfY2hhbmdlZFByb3BlcnRpZXMiLCJzdGFydHNXaXRoIiwiX2dldENvbnRlbnRTaXplIiwicG9wb3ZlciIsIm9mZnNldFdpZHRoIiwiaGVpZ2h0Iiwib2Zmc2V0SGVpZ2h0IiwiX2dldFBvc2l0aW9uUGFkZGluZyIsIl9nZXRDZW50ZXJQb3NpdGlvbiIsIngiLCJzY3JvbGxYIiwieSIsInNjcm9sbFkiLCJfdXBkYXRlUG9zaXRpb24iLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJfaGFzVG9wU3BhY2UiLCJfaGFzQm90dG9tU3BhY2UiLCJfaGFzTGVmdFNwYWNlIiwiX2hhc1JpZ2h0U3BhY2UiLCJpbmRleCIsImluZGV4T2YiLCJfZ2V0TWF4WCIsImlubmVyV2lkdGgiLCJfZ2V0TWF4WSIsImlubmVySGVpZ2h0IiwidXBkYXRlZCIsInByb3BzIiwiaGFzIiwic3R5bGUiLCJzZXRQcm9wZXJ0eSIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxHQUFULEVBQWNDLFVBQWQsRUFBMEJDLElBQTFCLFFBQXNDLEtBQXRDO0FBQ0EsU0FBU0MsUUFBVCxRQUF5QiwwQkFBekI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxTQUFOLFNBQXdCSCxVQUF4QixDQUFtQztBQUNuQixhQUFWSSxVQUFVLEdBQUc7QUFDdEIsV0FBTztBQUNMQyxNQUFBQSxLQUFLLEVBQUU7QUFBRUMsUUFBQUEsSUFBSSxFQUFFQztBQUFSLE9BREY7QUFFTEMsTUFBQUEsS0FBSyxFQUFFO0FBQUVGLFFBQUFBLElBQUksRUFBRUc7QUFBUixPQUZGO0FBR0xDLE1BQUFBLEtBQUssRUFBRTtBQUFFSixRQUFBQSxJQUFJLEVBQUVLLE9BQVI7QUFBaUJDLFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQUhGO0FBSUxDLE1BQUFBLEtBQUssRUFBRTtBQUFFUCxRQUFBQSxJQUFJLEVBQUVLLE9BQVI7QUFBaUJDLFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQUpGO0FBS0xFLE1BQUFBLE1BQU0sRUFBRTtBQUFFUixRQUFBQSxJQUFJLEVBQUVLLE9BQVI7QUFBaUJDLFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQUxIO0FBTUxHLE1BQUFBLEtBQUssRUFBRTtBQUFFVCxRQUFBQSxJQUFJLEVBQUVLLE9BQVI7QUFBaUJD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LE9BQVYsQ0FBSixFQUF3QjtBQUN0QixXQUFLdkMsVUFBTCxDQUFnQkMsYUFBaEIsQ0FBOEIsVUFBOUIsRUFBMEN1QyxLQUExQyxDQUFnREMsV0FBaEQsQ0FBNEQsT0FBNUQsRUFBcUUsS0FBSzdELEtBQTFFO0FBQ0Q7O0FBQ0QsU0FBSzZDLGVBQUw7QUFDRDs7QUFwVHVDO0FBdVQxQ2pDLE1BQU0sQ0FBQ2tELGNBQVAsQ0FBc0JDLE1BQXRCLENBQTZCLFlBQTdCLEVBQTJDNUUsU0FBM0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBMaXRFbGVtZW50LCBodG1sIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvY2xhc3MtbWFwJztcblxuLyoqXG4gKiBQb3BvdmVyIGNvbXBvbmVudFxuICpcbiAqICMjIERldGFpbHNcbiAqICogaGFzIEB0aGVtZSBmYWNldFxuICpcbiAqIEBhdHRyIHtTdHJpbmd9IGV2ZW50IC0gdGhlIGV2ZW50IHRoYXQgdHJpZ2dlcnMgdGhlIG9wZW5pbmcuXG4gKiBAYXR0ciB7U3RyaW5nfSBkZWxheSAtIHRoZSB0aW1lIGJlZm9yZSBjbG9zaW5nLCB1c2VmdWwgZm9yIGEgY2xpY2sgZXZlbnRcbiAqIEBhdHRyIHtTdHJpbmd9IGFycm93IC0gaWYgbmVlZCBhcnJvd1xuICogQGF0dHIge1N0cmluZ30gc21hbGwgLSBTbWFsbCBwb3BvdmVyXG4gKiBAYXR0ciB7U3RyaW5nfSBtZWRpdW0gLSBNZWRpdW0gcG9wb3ZlclxuICogQGF0dHIge1N0cmluZ30gbGFyZ2UgLSBMYXJnZSBwb3BvdmVyXG4gKiBAYXR0ciB7U3RyaW5nfSB3aWR0aCAtIFRoZSB3aWR0aCBvZiBwb3BvdmVyXG4gKiBAYXR0ciB7U3RyaW5nfSBwb3NpdGlvbiAtIFRoZSBwb3NpdGlvbiB0b3AsIHJpZ2h0LCBib3R0b20gb3IgbGVmdFxuICogQGF0dHIge0Jvb2xlYW59IGF1dG8gLSB0byBsZXQgdGhlIGNvbXBvbmVudCBjaG9vc2UgdGhlIHBvc2l0aW9uXG4gKlxuICogQGNzc3Byb3Age0NvbG9yfSBbLS1ndi1wb3BvdmVyLS1iZ2M9dmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvci1saWdodGVyLCAjZmFmYWZhKV0gLSBCYWNrZ3JvdW5kIGNvbG9yXG4gKiBAY3NzcHJvcCB7Q29sb3J9IFstLWd2LXBvcG92ZXItLWM9dmFyKC0tZ3YtdGhlbWUtZm9udC1jb2xvci1kYXJrLCAjMjYyNjI2KV0gLSBDb2xvclxuICogQGNzc3Byb3Age0NvbG9yfSBbLS1ndi1wb3BvdmVyLS1iZGM9dmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvciwgI2Y1ZjVmNSldIC0gQm9yZGVyIGNvbG9yXG4gKiBAY3NzcHJvcCB7TGVuZ3RofSBbLS1ndi1wb3BvdmVyLS1wPTAuNXJlbV0gLSBQYWRkaW5nXG4gKi9cbmV4cG9ydCBjbGFzcyBHdlBvcG92ZXIgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBldmVudDogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICAgIGRlbGF5OiB7IHR5cGU6IE51bWJlciB9LFxuICAgICAgYXJyb3c6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgc21hbGw6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgbWVkaXVtOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGxhcmdlOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHdpZHRoOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgICAgcG9zaXRpb246IHsgdHlwZTogU3RyaW5nLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBhdXRvOiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICAgIF9vcGVuZWQ6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnBvcG92ZXIge1xuICAgICAgICAgIC0tYmdjOiB2YXIoLS1ndi1wb3BvdmVyLS1iZ2MsIHZhcigtLWd2LXRoZW1lLW5ldXRyYWwtY29sb3ItbGlnaHRlciwgI2ZhZmFmYSkpO1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ndi1wb3BvdmVyLS1jLCB2YXIoLS1ndi10aGVtZS1mb250LWNvbG9yLWRhcmssICMyNjI2MjYpKTtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmdjKTtcbiAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1ndi1wb3BvdmVyLS1wLCAwLjVyZW0pO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtwb3NpdGlvbj0nYm90dG9tJ10pIC5wb3BvdmVyIHtcbiAgICAgICAgICB0b3A6IGNhbGMoMTAwJSArIDAuNHJlbSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICBib3gtc2hhZG93OiAxcHggMCAwIDAgdmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvciwgI2Y1ZjVmNSksIDAgMnB4IDNweCB2YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLWRhcmssICNiZmJmYmYpO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3Bvc2l0aW9uPSdib3R0b20nXVthcnJvd10pIC5wb3BvdmVyIHtcbiAgICAgICAgICB0b3A6IGNhbGMoMTAwJSArIDAuNHJlbSArIDEwcHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3Bvc2l0aW9uPSdib3R0b20nXVthcnJvd10pIC5hcnJvdyB7XG4gICAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSA4cHgpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbcG9zaXRpb249J3RvcCddKSAucG9wb3ZlciB7XG4gICAgICAgICAgYm90dG9tOiBjYWxjKDEwMCUgKyAwLjRyZW0pO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgYm94LXNoYWRvdzogMXB4IDAgMCAwIHZhcigtLWd2LXRoZW1lLW5ldXRyYWwtY29sb3IsICNmNWY1ZjUpLCAwIC0ycHggM3B4IHZhcigtLWd2LXRoZW1lLW5ldXRyYWwtY29sb3ItZGFyaywgI2JmYmZiZik7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbcG9zaXRpb249J3RvcCddW2Fycm93XSkgLnBvcG92ZXIge1xuICAgICAgICAgIGJvdHRvbTogY2FsYygxMDAlICsgMC40cmVtICsgMTBweCk7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbcG9zaXRpb249J3RvcCddW2Fycm93XSkgLmFycm93IHtcbiAgICAgICAgICBib3R0b206IGNhbGMoMTAwJSAtIDhweCk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHJvdGF0ZSgxODBkZWcpO1xuICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtwb3NpdGlvbj0nbGVmdCddKSAucG9wb3ZlciB7XG4gICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIHJpZ2h0OiBjYWxjKDEwMCUgKyAwLjRyZW0pO1xuICAgICAgICAgIGJveC1zaGFkb3c6IC0xcHggMCAwIDAgdmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvciwgI2Y1ZjVmNSksIC0xcHggMnB4IDNweCB2YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLWRhcmssICNiZmJmYmYpO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3Bvc2l0aW9uPSdsZWZ0J11bYXJyb3ddKSAucG9wb3ZlciB7XG4gICAgICAgICAgcmlnaHQ6IGNhbGMoMTAwJSArIDAuNHJlbSArIDEwcHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3Bvc2l0aW9uPSdsZWZ0J11bYXJyb3ddKSAuYXJyb3cge1xuICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoOTBkZWcpO1xuICAgICAgICAgIHJpZ2h0OiBjYWxjKDEwMCUgLSA4cHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3Bvc2l0aW9uPSdyaWdodCddKSAucG9wb3ZlciB7XG4gICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIGxlZnQ6IGNhbGMoMTAwJSArIDAuNHJlbSk7XG4gICAgICAgICAgYm94LXNoYWRvdzogMXB4IDAgMCAxcHggdmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvciwgI2Y1ZjVmNSksIDFweCAxcHggMXB4IHZhcigtLWd2LXRoZW1lLW5ldXRyYWwtY29sb3ItZGFyaywgI2JmYmZiZik7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbcG9zaXRpb249J3JpZ2h0J11bYXJyb3ddKSAucG9wb3ZlciB7XG4gICAgICAgICAgbGVmdDogY2FsYygxMDAlICsgMC40cmVtICsgMTBweCk7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbcG9zaXRpb249J3JpZ2h0J11bYXJyb3ddKSAuYXJyb3cge1xuICAgICAgICAgIGxlZnQ6IGNhbGMoMTAwJSAtIDhweCk7XG4gICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSgtOTBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmlubGluZSAucG9wb3ZlciB7XG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtzbWFsbF0pIC5wb3BvdmVyIHtcbiAgICAgICAgICB3aWR0aDogMjAwcHg7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbbWVkaXVtXSkgLnBvcG92ZXIge1xuICAgICAgICAgIHdpZHRoOiAzNTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtsYXJnZV0pIC5wb3BvdmVyIHtcbiAgICAgICAgICB3aWR0aDogNTAwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGVudCB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAucG9wb3ZlcixcbiAgICAgICAgLmFycm93IHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZS1pbi1vdXQ7XG4gICAgICAgIH1cblxuICAgICAgICAub3BlbiAucG9wb3ZlcixcbiAgICAgICAgLm9wZW4gLmFycm93IHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICAuY2xvc2UgLnBvcG92ZXIsXG4gICAgICAgIC5jbG9zZSAuYXJyb3cge1xuICAgICAgICB9XG5cbiAgICAgICAgLmFycm93IHtcbiAgICAgICAgICB3aWR0aDogMjVweDtcbiAgICAgICAgICBoZWlnaHQ6IDI1cHg7XG4gICAgICAgICAgei1pbmRleDogMTAxO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgLmFycm93OmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgd2lkdGg6IDEycHg7XG4gICAgICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWd2LXBvcG92ZXItLWJnYywgdmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvci1saWdodGVyLCAjZmFmYWZhKSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgICAgICAgIHRvcDogMTlweDtcbiAgICAgICAgICBsZWZ0OiA2cHg7XG4gICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ3YtcG9wb3Zlci0tYmRjLCB2YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLCAjZjVmNWY1KSk7XG4gICAgICAgIH1cbiAgICAgIGAsXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5ldmVudCA9ICdtb3VzZW92ZXInO1xuICAgIHRoaXMuX2Nsb3NlSGFuZGxlciA9IHRoaXMuX2Nsb3NlLmJpbmQodGhpcyk7XG4gICAgdGhpcy5kZWxheSA9IDA7XG4gICAgdGhpcy5hcnJvdyA9IGZhbHNlO1xuICAgIHRoaXMucG9zaXRpb24gPSAnYm90dG9tJztcbiAgICB0aGlzLmF1dG8gPSBmYWxzZTtcbiAgfVxuXG4gIF9vcGVuKGUpIHtcbiAgICBpZiAodGhpcy5ldmVudCA9PT0gJ2NsaWNrJykge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcy5ldmVudCwgdGhpcy5fY2xvc2VIYW5kbGVyKTtcbiAgICB9XG4gICAgdGhpcy5fb3BlbmVkID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5ldmVudCA9PT0gJ2NsaWNrJykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmV2ZW50LCB0aGlzLl9jbG9zZUhhbmRsZXIpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZWxheSA+IDApIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fY2xvc2Uoe30pLCB0aGlzLmRlbGF5KTtcbiAgICB9XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLl9jbG9zZSh7fSk7XG4gIH1cblxuICBfY2xvc2UoZSkge1xuICAgIGlmICh0aGlzLl9vcGVuZWQgJiYgKGUudGFyZ2V0ICE9PSB0aGlzLmZpcnN0RWxlbWVudENoaWxkIHx8IHRoaXMuZXZlbnQgIT09ICdjbGljaycpKSB7XG4gICAgICBjb25zdCBvcGVuRWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcub3BlbicpO1xuICAgICAgb3BlbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnY2xvc2UnKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBvcGVuRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdjbG9zZScpO1xuICAgICAgICB0aGlzLl9vcGVuZWQgPSBmYWxzZTtcbiAgICAgIH0sIDIwMCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IGlubGluZSA9IHRoaXMud2lkdGggPT0gbnVsbCAmJiAhdGhpcy5zbWFsbCAmJiAhdGhpcy5tZWRpdW0gJiYgIXRoaXMubGFyZ2U7XG4gICAgY29uc3QgY2xhc3NlcyA9IHsgb3BlbjogdGhpcy5fb3BlbmVkLCBjb250ZW50OiB0cnVlLCBpbmxpbmUgfTtcbiAgICByZXR1cm4gaHRtbGAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoY2xhc3Nlcyl9XCI+XG4gICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAke3RoaXMuYXJyb3cgPyBodG1sYDxkaXYgY2xhc3M9XCJhcnJvd1wiPjwvZGl2PmAgOiAnJ31cbiAgICAgIDxkaXYgY2xhc3M9XCJwb3BvdmVyXCI+JHt0aGlzLnJlbmRlckNvbnRlbnQoKX08L2Rpdj5cbiAgICA8L2Rpdj5gO1xuICB9XG5cbiAgcmVuZGVyQ29udGVudCgpIHtcbiAgICByZXR1cm4gaHRtbGA8c2xvdCBuYW1lPVwicG9wb3ZlclwiPjwvc2xvdD5gO1xuICB9XG5cbiAgZmlyc3RVcGRhdGVkKF9jaGFuZ2VkUHJvcGVydGllcykge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKHRoaXMuZXZlbnQsIHRoaXMuX29wZW4uYmluZCh0aGlzKSk7XG4gICAgICBpZiAodGhpcy5ldmVudC5zdGFydHNXaXRoKCdtb3VzZScpICYmIHRoaXMuZGVsYXkgPT09IDApIHtcbiAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5fY2xvc2UuYmluZCh0aGlzKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBfZ2V0Q29udGVudFNpemUoKSB7XG4gICAgY29uc3QgcG9wb3ZlciA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcucG9wb3ZlcicpO1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogcG9wb3Zlci5vZmZzZXRXaWR0aCxcbiAgICAgIGhlaWdodDogcG9wb3Zlci5vZmZzZXRIZWlnaHQsXG4gICAgfTtcbiAgfVxuXG4gIF9nZXRQb3NpdGlvblBhZGRpbmcoKSB7XG4gICAgcmV0dXJuIDEwO1xuICB9XG5cbiAgX2dldENlbnRlclBvc2l0aW9uKCkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiB0aGlzLnRhcmdldC54ICsgdGhpcy50YXJnZXQud2lkdGggLyAyICsgd2luZG93LnNjcm9sbFgsXG4gICAgICB5OiB0aGlzLnRhcmdldC55ICsgdGhpcy50YXJnZXQuaGVpZ2h0IC8gMiArIHdpbmRvdy5zY3JvbGxZLFxuICAgIH07XG4gIH1cblxuICBfdXBkYXRlUG9zaXRpb24oKSB7XG4gICAgaWYgKHRoaXMucG9zaXRpb24gIT0gbnVsbCAmJiB0aGlzLmF1dG8pIHtcbiAgICAgIGNvbnN0IHBvcG92ZXIgPSB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignLnBvcG92ZXInKTtcbiAgICAgIGlmIChwb3BvdmVyKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGhpcy5maXJzdEVsZW1lbnRDaGlsZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICh0aGlzLnBvc2l0aW9uID09PSAndG9wJyAmJiAhdGhpcy5faGFzVG9wU3BhY2UoKSkgfHxcbiAgICAgICAgICAodGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbScgJiYgIXRoaXMuX2hhc0JvdHRvbVNwYWNlKCkpIHx8XG4gICAgICAgICAgKHRoaXMucG9zaXRpb24gPT09ICdsZWZ0JyAmJiAhdGhpcy5faGFzTGVmdFNwYWNlKCkpIHx8XG4gICAgICAgICAgKHRoaXMucG9zaXRpb24gPT09ICdyaWdodCcgJiYgIXRoaXMuX2hhc1JpZ2h0U3BhY2UoKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBbdGhpcy5faGFzVG9wU3BhY2UoKSwgdGhpcy5faGFzUmlnaHRTcGFjZSgpLCB0aGlzLl9oYXNCb3R0b21TcGFjZSgpLCB0aGlzLl9oYXNMZWZ0U3BhY2UoKV0uaW5kZXhPZih0cnVlKTtcbiAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J11baW5kZXhdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9nZXRNYXhYKCkge1xuICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aCAtIHRoaXMuX2dldFBvc2l0aW9uUGFkZGluZygpO1xuICB9XG5cbiAgX2dldE1heFkoKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodCAtIHRoaXMuX2dldFBvc2l0aW9uUGFkZGluZygpO1xuICB9XG5cbiAgX2hhc0JvdHRvbVNwYWNlKCkge1xuICAgIGNvbnN0IHkgPSB0aGlzLnRhcmdldC55ICsgdGhpcy50YXJnZXQuaGVpZ2h0ICsgdGhpcy5fZ2V0Q29udGVudFNpemUoKS5oZWlnaHQgKyB0aGlzLl9nZXRQb3NpdGlvblBhZGRpbmcoKTtcblxuICAgIHJldHVybiB5IDw9IHRoaXMuX2dldE1heFkoKTtcbiAgfVxuXG4gIF9oYXNSaWdodFNwYWNlKCkge1xuICAgIGNvbnN0IHkgPSB0aGlzLnRhcmdldC54ICsgdGhpcy50YXJnZXQud2lkdGggKyB0aGlzLl9nZXRDb250ZW50U2l6ZSgpLndpZHRoICsgdGhpcy5fZ2V0UG9zaXRpb25QYWRkaW5nKCk7XG5cbiAgICByZXR1cm4geSA8PSB0aGlzLl9nZXRNYXhYKCk7XG4gIH1cblxuICBfaGFzVG9wU3BhY2UoKSB7XG4gICAgY29uc3QgeSA9IHRoaXMudGFyZ2V0LnkgLSB0aGlzLl9nZXRDb250ZW50U2l6ZSgpLmhlaWdodCAtIHRoaXMuX2dldFBvc2l0aW9uUGFkZGluZygpO1xuXG4gICAgcmV0dXJuIHkgPj0gdGhpcy5fZ2V0UG9zaXRpb25QYWRkaW5nKCk7XG4gIH1cblxuICBfaGFzTGVmdFNwYWNlKCkge1xuICAgIGNvbnN0IHkgPSB0aGlzLnRhcmdldC54IC0gdGhpcy5fZ2V0Q29udGVudFNpemUoKS53aWR0aCAtIHRoaXMuX2dldFBvc2l0aW9uUGFkZGluZygpO1xuXG4gICAgcmV0dXJuIHkgPj0gdGhpcy5fZ2V0UG9zaXRpb25QYWRkaW5nKCk7XG4gIH1cblxuICB1cGRhdGVkKHByb3BzKSB7XG4gICAgaWYgKHByb3BzLmhhcygnd2lkdGgnKSkge1xuICAgICAgdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy5wb3BvdmVyJykuc3R5bGUuc2V0UHJvcGVydHkoJ3dpZHRoJywgdGhpcy53aWR0aCk7XG4gICAgfVxuICAgIHRoaXMuX3VwZGF0ZVBvc2l0aW9uKCk7XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3YtcG9wb3ZlcicsIEd2UG9wb3Zlcik7XG4iXX0=
@@ -20,12 +20,10 @@ import { i18n } from '../lib/i18n';
20
20
  import { ItemResource } from '../mixins/item-resource';
21
21
  import { getTitle, getDescription, getVersion, getOwner } from '../lib/item';
22
22
  import { truncate } from '../lib/utils';
23
-
24
23
  import '../atoms/gv-image';
25
24
  import '../atoms/gv-button';
26
25
  import '../molecules/gv-rating';
27
26
  import '../molecules/gv-metrics';
28
-
29
27
  /**
30
28
  * Promote component
31
29
  *
@@ -44,166 +42,50 @@ import '../molecules/gv-metrics';
44
42
  * @cssprop {Length} [--gv-promote-button--p=19px 80px] - Button padding
45
43
  * @cssprop {Length} [--gv-promote-button--fz=var(--gv-theme-font-size-l, 16px)] - Button font size
46
44
  */
45
+
47
46
  export class GvPromote extends ItemResource(LitElement) {
48
47
  static get properties() {
49
- return {
50
- ...super.properties,
51
- limit: { type: Number },
48
+ return { ...super.properties,
49
+ limit: {
50
+ type: Number
51
+ }
52
52
  };
53
53
  }
54
54
 
55
55
  static get styles() {
56
- return [
57
- ...super.styles,
58
- // language=CSS
59
- css`
60
- :host {
61
- box-sizing: border-box;
62
- display: inline-block;
63
- margin: 0.2rem;
64
- vertical-align: middle;
65
- --gv-button--p: var(--gv-promote-button--p, 19px 80px);
66
- --gv-button--fz: var(--gv-promote-button--fz, var(--gv-theme-font-size-l, 16px));
67
- --gv-preview-button: 'none';
68
- width: 100%;
69
- --gv-icon--s: 20px;
70
- --gv-rating--s: 20px;
71
- }
72
-
73
- gv-identity-picture {
74
- height: var(--gv-promote-image--h, 300px);
75
- width: var(--gv-promote-image--w, 300px);
76
- --gv-image--of: contain;
77
- }
78
-
79
- .container {
80
- display: flex;
81
- min-height: 420px;
82
- max-height: 420px;
83
- }
84
-
85
- .image {
86
- background-color: var(--gv-promote-image--bgc, var(--gv-theme-color-light, #86c3d0));
87
- min-height: 0;
88
- min-width: 0;
89
- width: 480px;
90
- display: flex;
91
- align-items: center;
92
- justify-content: center;
93
- border-radius: 4px 0 0 4px;
94
- }
95
-
96
- .title {
97
- text-transform: capitalize;
98
- min-height: 32px;
99
- display: flex;
100
- align-items: center;
101
- }
102
-
103
- .title h2 {
104
- font-size: var(--gv-theme-font-size-xl, 26px);
105
- flex: 1;
106
- }
107
-
108
- .title .version {
109
- font-size: var(--gv-theme-font-size-s, 12px);
110
- color: var(--gv-theme-neutral-color-dark, #d9d9d9);
111
- }
112
-
113
- .owner {
114
- --gv-icon--c: var(--gv-theme-neutral-color-dark, #bfbfbf);
115
- --gv-icon--s: 16px;
116
- color: var(--gv-theme-neutral-color-dark, #bfbfbf);
117
- display: flex;
118
- padding-bottom: 2px;
119
- margin-top: -8px;
120
- line-height: initial;
121
- }
122
-
123
- .content {
124
- flex: 1;
125
- padding: 1.5rem;
126
- background-color: var(--gv-promote--bgc, var(--gv-theme-neutral-color-lightest, #ffffff));
127
- color: var(--gv-theme-font-color-dark, #262626);
128
- font-size: var(--gv-theme-font-size-l, 16px);
129
- line-height: 24px;
130
- border-radius: 0 4px 4px 0;
131
- display: flex;
132
- flex-direction: column;
133
- }
134
-
135
- .description {
136
- margin: 24px 0px;
137
- flex-grow: 1;
138
- }
139
-
140
- .description-large {
141
- text-align: justify;
142
- }
143
-
144
- .infos {
145
- display: flex;
146
- justify-content: flex-end;
147
- margin: 0.5rem 0.2rem;
148
- align-items: center;
149
- }
150
-
151
- gv-metrics {
152
- display: flex;
153
- height: 100%;
154
- justify-content: flex-end;
155
- align-items: stretch;
156
- }
157
-
158
- .labels {
159
- text-align: right;
160
- }
161
- `,
162
- ];
56
+ return [...super.styles, // language=CSS
57
+ css`:host{box-sizing:border-box;display:inline-block;margin:.2rem;vertical-align:middle;--gv-button--p:var(--gv-promote-button--p, 19px 80px);--gv-button--fz:var(--gv-promote-button--fz, var(--gv-theme-font-size-l, 16px));--gv-preview-button:'none';width:100%;--gv-icon--s:20px;--gv-rating--s:20px}gv-identity-picture{height:var(--gv-promote-image--h,300px);width:var(--gv-promote-image--w,300px);--gv-image--of:contain}.container{display:flex;min-height:420px;max-height:420px}.image{background-color:var(--gv-promote-image--bgc,var(--gv-theme-color-light,#86c3d0));min-height:0;min-width:0;width:480px;display:flex;align-items:center;justify-content:center;border-radius:4px 0 0 4px}.title{text-transform:capitalize;min-height:32px;display:flex;align-items:center}.title h2{font-size:var(--gv-theme-font-size-xl,26px);flex:1}.title .version{font-size:var(--gv-theme-font-size-s,12px);color:var(--gv-theme-neutral-color-dark,#d9d9d9)}.owner{--gv-icon--c:var(--gv-theme-neutral-color-dark, #bfbfbf);--gv-icon--s:16px;color:var(--gv-theme-neutral-color-dark,#bfbfbf);display:flex;padding-bottom:2px;margin-top:-8px;line-height:initial}.content{flex:1;padding:1.5rem;background-color:var(--gv-promote--bgc,var(--gv-theme-neutral-color-lightest,#fff));color:var(--gv-theme-font-color-dark,#262626);font-size:var(--gv-theme-font-size-l,16px);line-height:24px;border-radius:0 4px 4px 0;display:flex;flex-direction:column}.description{margin:24px 0;flex-grow:1}.description-large{text-align:justify}.infos{display:flex;justify-content:flex-end;margin:.5rem .2rem;align-items:center}gv-metrics{display:flex;height:100%;justify-content:flex-end;align-items:stretch}.labels{text-align:right}`];
163
58
  }
164
59
 
165
60
  _onClick() {
166
- dispatchCustomEvent(this, 'click', { data: this._item, href: this.href });
61
+ dispatchCustomEvent(this, 'click', {
62
+ data: this._item,
63
+ href: this.href
64
+ });
167
65
  }
168
66
 
169
67
  render() {
170
68
  if (this._invisible) {
171
69
  return '';
172
70
  }
71
+
173
72
  const owner = getOwner(this._item);
174
- return html`<div class="container">
175
- <div class="${classMap({ skeleton: this._skeleton, image: true })}">${this._renderImage()}</div>
176
- <div class="content">
177
- ${this._error && !this._skeleton
178
- ? html`<p class="description error">${i18n('gv-promote.error')}</p>`
179
- : html`
180
- ${this._empty && !this._skeleton
181
- ? html`<p class="description empty">${i18n('gv-promote.empty')}</p>`
182
- : html` <div class=${classMap({ skeleton: this._skeleton, title: true })}>
183
- <h2>${getTitle(this._item)}</h2>
184
- <span class="version">${getVersion(this._item)}</span>
185
- </div>
186
- ${owner != null && owner.trim().length > 0
187
- ? html`<div class="owner"><gv-icon shape="general:user" size="8px"></gv-icon>${owner}</div>`
188
- : ''}
189
- <p
190
- class=${classMap({
191
- skeleton: this._skeleton,
192
- description: true,
193
- 'description-large': getDescription(this._item).split(' ').length > 10,
194
- })}
195
- >
196
- ${truncate(getDescription(this._item), this.limit)}
197
- </p>
198
- <div class=${classMap({ skeleton: this._skeleton, infos: true })}>${this._renderMetricsWithRating()}</div>
199
- <div class="labels">${this._renderLabels(true)}</div>
200
- <gv-button ?skeleton=${this._skeleton} .href="${this.href}" @click="${this._onClick}"
201
- >${i18n('gv-promote.view')}</gv-button
202
- >`}
203
- `}
204
- </div>
205
- </div>`;
73
+ return html`<div class="container"> <div class="${classMap({
74
+ skeleton: this._skeleton,
75
+ image: true
76
+ })}">${this._renderImage()}</div> <div class="content"> ${this._error && !this._skeleton ? html`<p class="description error">${i18n('gv-promote.error')}</p>` : html` ${this._empty && !this._skeleton ? html`<p class="description empty">${i18n('gv-promote.empty')}</p>` : html` <div class="${classMap({
77
+ skeleton: this._skeleton,
78
+ title: true
79
+ })}"> <h2>${getTitle(this._item)}</h2> <span class="version">${getVersion(this._item)}</span> </div> ${owner != null && owner.trim().length > 0 ? html`<div class="owner"><gv-icon shape="general:user" size="8px"></gv-icon>${owner}</div>` : ''} <p class="${classMap({
80
+ skeleton: this._skeleton,
81
+ description: true,
82
+ 'description-large': getDescription(this._item).split(' ').length > 10
83
+ })}"> ${truncate(getDescription(this._item), this.limit)} </p> <div class="${classMap({
84
+ skeleton: this._skeleton,
85
+ infos: true
86
+ })}">${this._renderMetricsWithRating()}</div> <div class="labels">${this._renderLabels(true)}</div> <gv-button ?skeleton="${this._skeleton}" .href="${this.href}" @click="${this._onClick}">${i18n('gv-promote.view')}</gv-button>`} `} </div> </div>`;
206
87
  }
207
- }
208
88
 
89
+ }
209
90
  window.customElements.define('gv-promote', GvPromote);
91
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL21vbGVjdWxlcy9ndi1wcm9tb3RlLmpzIl0sIm5hbWVzIjpbImNzcyIsIkxpdEVsZW1lbnQiLCJodG1sIiwiY2xhc3NNYXAiLCJkaXNwYXRjaEN1c3RvbUV2ZW50IiwiaTE4biIsIkl0ZW1SZXNvdXJjZSIsImdldFRpdGxlIiwiZ2V0RGVzY3JpcHRpb24iLCJnZXRWZXJzaW9uIiwiZ2V0T3duZXIiLCJ0cnVuY2F0ZSIsIkd2UHJvbW90ZSIsInByb3BlcnRpZXMiLCJsaW1pdCIsInR5cGUiLCJOdW1iZXIiLCJzdHlsZXMiLCJfb25DbGljayIsImRhdGEiLCJfaXRlbSIsImhyZWYiLCJyZW5kZXIiLCJfaW52aXNpYmxlIiwib3duZXIiLCJza2VsZXRvbiIsIl9za2VsZXRvbiIsImltYWdlIiwiX3JlbmRlckltYWdlIiwiX2Vycm9yIiwiX2VtcHR5IiwidGl0bGUiLCJ0cmltIiwibGVuZ3RoIiwiZGVzY3JpcHRpb24iLCJzcGxpdCIsImluZm9zIiwiX3JlbmRlck1ldHJpY3NXaXRoUmF0aW5nIiwiX3JlbmRlckxhYmVscyIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxHQUFULEVBQWNDLFVBQWQsRUFBMEJDLElBQTFCLFFBQXNDLEtBQXRDO0FBQ0EsU0FBU0MsUUFBVCxRQUF5QiwwQkFBekI7QUFDQSxTQUFTQyxtQkFBVCxRQUFvQyxlQUFwQztBQUNBLFNBQVNDLElBQVQsUUFBcUIsYUFBckI7QUFDQSxTQUFTQyxZQUFULFFBQTZCLHlCQUE3QjtBQUNBLFNBQVNDLFFBQVQsRUFBbUJDLGNBQW5CLEVBQW1DQyxVQUFuQyxFQUErQ0MsUUFBL0MsUUFBK0QsYUFBL0Q7QUFDQSxTQUFTQyxRQUFULFFB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Y0FITixHQUxELGdCQUFYO0FBZ0NEOztBQS9KcUQ7QUFrS3hEa0MsTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2QixZQUE3QixFQUEyQzdCLFNBQTNDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IGNzcywgTGl0RWxlbWVudCwgaHRtbCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjbGFzc01hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL2NsYXNzLW1hcCc7XG5pbXBvcnQgeyBkaXNwYXRjaEN1c3RvbUV2ZW50IH0gZnJvbSAnLi4vbGliL2V2ZW50cyc7XG5pbXBvcnQgeyBpMThuIH0gZnJvbSAnLi4vbGliL2kxOG4nO1xuaW1wb3J0IHsgSXRlbVJlc291cmNlIH0gZnJvbSAnLi4vbWl4aW5zL2l0ZW0tcmVzb3VyY2UnO1xuaW1wb3J0IHsgZ2V0VGl0bGUsIGdldERlc2NyaXB0aW9uLCBnZXRWZXJzaW9uLCBnZXRPd25lciB9IGZyb20gJy4uL2xpYi9pdGVtJztcbmltcG9ydCB7IHRydW5jYXRlIH0gZnJvbSAnLi4vbGliL3V0aWxzJztcblxuaW1wb3J0ICcuLi9hdG9tcy9ndi1pbWFnZSc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LWJ1dHRvbic7XG5pbXBvcnQgJy4uL21vbGVjdWxlcy9ndi1yYXRpbmcnO1xuaW1wb3J0ICcuLi9tb2xlY3VsZXMvZ3YtbWV0cmljcyc7XG5cbi8qKlxuICogUHJvbW90ZSBjb21wb25lbnRcbiAqXG4gKiAjIyBEZXRhaWxzXG4gKiAqIGhhcyBAdGhlbWUgZmFjZXRcbiAqXG4gKiBAZmlyZXMgZ3YtcHJvbW90ZTpjbGljayAtIFdoZW4gY2xpY2sgb24gYnV0dG9uIGZvciB2aWV3IGl0ZW1cbiAqIEBmaXJlcyBndi10YWc6Y2xpY2sgLSBXaGVuIG9uZSBvZiB0aGUgbGFiZWwgaXMgY2xpY2tlZFxuICpcbiAqIEBhdHRyIHtQcm9taXNlPGFueT59IGl0ZW0gLSBhbiBpdGVtLlxuICpcbiAqIEBjc3Nwcm9wIHtDb2xvcn0gWy0tZ3YtcHJvbW90ZS1pbWFnZS0tYmdjPXZhcigtLWd2LXRoZW1lLWNvbG9yLWxpZ2h0LCAjODZjM2QwKV0gLSBJbWFnZSBiYWNrZ3JvdW5kIGNvbG9yXG4gKiBAY3NzcHJvcCB7Q29sb3J9IFstLWd2LXByb21vdGUtLWJnYz12YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLWxpZ2h0ZXN0LCAjZmZmZmZmKV0gLSBCYWNrZ3JvdW5kIGNvbG9yXG4gKiBAY3NzcHJvcCB7TGVuZ3RofSBbLS1ndi1wcm9tb3RlLWltYWdlLS1oPTMwMHB4XSAtIEltYWdlIGhlaWdodFxuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3YtcHJvbW90ZS1pbWFnZS0tdz0zMDBweF0gLSBJbWFnZSB3aWR0aFxuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3YtcHJvbW90ZS1idXR0b24tLXA9MTlweCA4MHB4XSAtIEJ1dHRvbiBwYWRkaW5nXG4gKiBAY3NzcHJvcCB7TGVuZ3RofSBbLS1ndi1wcm9tb3RlLWJ1dHRvbi0tZno9dmFyKC0tZ3YtdGhlbWUtZm9udC1zaXplLWwsIDE2cHgpXSAtIEJ1dHRvbiBmb250IHNpemVcbiAqL1xuZXhwb3J0IGNsYXNzIEd2UHJvbW90ZSBleHRlbmRzIEl0ZW1SZXNvdXJjZShMaXRFbGVtZW50KSB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIucHJvcGVydGllcyxcbiAgICAgIGxpbWl0OiB7IHR5cGU6IE51bWJlciB9LFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uc3VwZXIuc3R5bGVzLFxuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICBtYXJnaW46IDAuMnJlbTtcbiAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgIC0tZ3YtYnV0dG9uLS1wOiB2YXIoLS1ndi1wcm9tb3RlLWJ1dHRvbi0tcCwgMTlweCA4MHB4KTtcbiAgICAgICAgICAtLWd2LWJ1dHRvbi0tZno6IHZhcigtLWd2LXByb21vdGUtYnV0dG9uLS1meiwgdmFyKC0tZ3YtdGhlbWUtZm9udC1zaXplLWwsIDE2cHgpKTtcbiAgICAgICAgICAtLWd2LXByZXZpZXctYnV0dG9uOiAnbm9uZSc7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgLS1ndi1pY29uLS1zOiAyMHB4O1xuICAgICAgICAgIC0tZ3YtcmF0aW5nLS1zOiAyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgZ3YtaWRlbnRpdHktcGljdHVyZSB7XG4gICAgICAgICAgaGVpZ2h0OiB2YXIoLS1ndi1wcm9tb3RlLWltYWdlLS1oLCAzMDBweCk7XG4gICAgICAgICAgd2lkdGg6IHZhcigtLWd2LXByb21vdGUtaW1hZ2UtLXcsIDMwMHB4KTtcbiAgICAgICAgICAtLWd2LWltYWdlLS1vZjogY29udGFpbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb250YWluZXIge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgbWluLWhlaWdodDogNDIwcHg7XG4gICAgICAgICAgbWF4LWhlaWdodDogNDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuaW1hZ2Uge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWd2LXByb21vdGUtaW1hZ2UtLWJnYywgdmFyKC0tZ3YtdGhlbWUtY29sb3ItbGlnaHQsICM4NmMzZDApKTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgICB3aWR0aDogNDgwcHg7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweCAwIDAgNHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiAzMnB4O1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC50aXRsZSBoMiB7XG4gICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1ndi10aGVtZS1mb250LXNpemUteGwsIDI2cHgpO1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAudGl0bGUgLnZlcnNpb24ge1xuICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZ3YtdGhlbWUtZm9udC1zaXplLXMsIDEycHgpO1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLWRhcmssICNkOWQ5ZDkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm93bmVyIHtcbiAgICAgICAgICAtLWd2LWljb24tLWM6IHZhcigtLWd2LXRoZW1lLW5ldXRyYWwtY29sb3ItZGFyaywgI2JmYmZiZik7XG4gICAgICAgICAgLS1ndi1pY29uLS1zOiAxNnB4O1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLWRhcmssICNiZmJmYmYpO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgcGFkZGluZy1ib3R0b206IDJweDtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAtOHB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiBpbml0aWFsO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQge1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWd2LXByb21vdGUtLWJnYywgdmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvci1saWdodGVzdCwgI2ZmZmZmZikpO1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ndi10aGVtZS1mb250LWNvbG9yLWRhcmssICMyNjI2MjYpO1xuICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZ3YtdGhlbWUtZm9udC1zaXplLWwsIDE2cHgpO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgNHB4IDRweCAwO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgbWFyZ2luOiAyNHB4IDBweDtcbiAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAuZGVzY3JpcHRpb24tbGFyZ2Uge1xuICAgICAgICAgIHRleHQtYWxpZ246IGp1c3RpZnk7XG4gICAgICAgIH1cblxuICAgICAgICAuaW5mb3Mge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgICBtYXJnaW46IDAuNXJlbSAwLjJyZW07XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LW1ldHJpY3Mge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICAgIH1cblxuICAgICAgICAubGFiZWxzIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG5cbiAgX29uQ2xpY2soKSB7XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnY2xpY2snLCB7IGRhdGE6IHRoaXMuX2l0ZW0sIGhyZWY6IHRoaXMuaHJlZiB9KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5faW52aXNpYmxlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IG93bmVyID0gZ2V0T3duZXIodGhpcy5faXRlbSk7XG4gICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyBza2VsZXRvbjogdGhpcy5fc2tlbGV0b24sIGltYWdlOiB0cnVlIH0pfVwiPiR7dGhpcy5fcmVuZGVySW1hZ2UoKX08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgICR7dGhpcy5fZXJyb3IgJiYgIXRoaXMuX3NrZWxldG9uXG4gICAgICAgICAgPyBodG1sYDxwIGNsYXNzPVwiZGVzY3JpcHRpb24gZXJyb3JcIj4ke2kxOG4oJ2d2LXByb21vdGUuZXJyb3InKX08L3A+YFxuICAgICAgICAgIDogaHRtbGBcbiAgICAgICAgICAgICAgJHt0aGlzLl9lbXB0eSAmJiAhdGhpcy5fc2tlbGV0b25cbiAgICAgICAgICAgICAgICA/IGh0bWxgPHAgY2xhc3M9XCJkZXNjcmlwdGlvbiBlbXB0eVwiPiR7aTE4bignZ3YtcHJvbW90ZS5lbXB0eScpfTwvcD5gXG4gICAgICAgICAgICAgICAgOiBodG1sYCA8ZGl2IGNsYXNzPSR7Y2xhc3NNYXAoeyBza2VsZXRvbjogdGhpcy5fc2tlbGV0b24sIHRpdGxlOiB0cnVlIH0pfT5cbiAgICAgICAgICAgICAgICAgICAgICA8aDI+JHtnZXRUaXRsZSh0aGlzLl9pdGVtKX08L2gyPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmVyc2lvblwiPiR7Z2V0VmVyc2lvbih0aGlzLl9pdGVtKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAke293bmVyICE9IG51bGwgJiYgb3duZXIudHJpbSgpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICA/IGh0bWxgPGRpdiBjbGFzcz1cIm93bmVyXCI+PGd2LWljb24gc2hhcGU9XCJnZW5lcmFsOnVzZXJcIiBzaXplPVwiOHB4XCI+PC9ndi1pY29uPiR7b3duZXJ9PC9kaXY+YFxuICAgICAgICAgICAgICAgICAgICAgIDogJyd9XG4gICAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9JHtjbGFzc01hcCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBza2VsZXRvbjogdGhpcy5fc2tlbGV0b24sXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbi1sYXJnZSc6IGdldERlc2NyaXB0aW9uKHRoaXMuX2l0ZW0pLnNwbGl0KCcgJykubGVuZ3RoID4gMTAsXG4gICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAke3RydW5jYXRlKGdldERlc2NyaXB0aW9uKHRoaXMuX2l0ZW0pLCB0aGlzLmxpbWl0KX1cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSR7Y2xhc3NNYXAoeyBza2VsZXRvbjogdGhpcy5fc2tlbGV0b24sIGluZm9zOiB0cnVlIH0pfT4ke3RoaXMuX3JlbmRlck1ldHJpY3NXaXRoUmF0aW5nKCl9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbHNcIj4ke3RoaXMuX3JlbmRlckxhYmVscyh0cnVlKX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGd2LWJ1dHRvbiA/c2tlbGV0b249JHt0aGlzLl9za2VsZXRvbn0gLmhyZWY9XCIke3RoaXMuaHJlZn1cIiBAY2xpY2s9XCIke3RoaXMuX29uQ2xpY2t9XCJcbiAgICAgICAgICAgICAgICAgICAgICA+JHtpMThuKCdndi1wcm9tb3RlLnZpZXcnKX08L2d2LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICA+YH1cbiAgICAgICAgICAgIGB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5gO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LXByb21vdGUnLCBHdlByb21vdGUpO1xuIl19