@gravitee/ui-components 3.17.0 → 3.17.4

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 (89) hide show
  1. package/package.json +18 -24
  2. package/src/atoms/gv-autocomplete.js +6 -5
  3. package/src/atoms/gv-button.js +4 -4
  4. package/src/atoms/gv-checkbox.js +3 -3
  5. package/src/atoms/gv-date-picker-calendar.js +5 -4
  6. package/src/atoms/gv-date-picker-cell.js +4 -4
  7. package/src/atoms/gv-date-picker.js +5 -4
  8. package/src/atoms/gv-file-upload.js +5 -4
  9. package/src/atoms/gv-icon.js +7 -15
  10. package/src/atoms/gv-image.js +4 -4
  11. package/src/atoms/gv-input-message.js +3 -2
  12. package/src/atoms/gv-input.js +3 -3
  13. package/src/atoms/gv-link.js +6 -6
  14. package/src/atoms/gv-message.js +3 -3
  15. package/src/atoms/gv-metric.js +3 -3
  16. package/src/atoms/gv-relative-time.js +4 -6
  17. package/src/atoms/gv-select.js +5 -5
  18. package/src/atoms/gv-spinner.js +2 -2
  19. package/src/atoms/gv-state.js +3 -3
  20. package/src/atoms/gv-switch.js +4 -4
  21. package/src/atoms/gv-tag.js +3 -3
  22. package/src/atoms/gv-text.js +4 -4
  23. package/src/charts/gv-chart-bar.js +2 -2
  24. package/src/charts/gv-chart-gauge.js +2 -2
  25. package/src/charts/gv-chart-histogram.js +2 -2
  26. package/src/charts/gv-chart-line.js +2 -2
  27. package/src/charts/gv-chart-map.js +2 -2
  28. package/src/charts/gv-chart-pie.js +2 -2
  29. package/src/lib/item.js +2 -2
  30. package/src/lib/studio.js +3 -3
  31. package/src/mixins/chart-element.js +4 -3
  32. package/src/mixins/input-element.js +3 -3
  33. package/src/mixins/item-resource.js +3 -3
  34. package/src/mixins/with-skeleton-attribute.js +2 -2
  35. package/src/molecules/gv-card-full.js +3 -3
  36. package/src/molecules/gv-card-list.js +4 -3
  37. package/src/molecules/gv-card.js +3 -3
  38. package/src/molecules/gv-category-list.js +3 -2
  39. package/src/molecules/gv-category.js +3 -3
  40. package/src/molecules/gv-code-hint.js +2 -2
  41. package/src/molecules/gv-code.js +3 -3
  42. package/src/molecules/gv-confirm.js +3 -2
  43. package/src/molecules/gv-cron-editor.js +3 -3
  44. package/src/molecules/gv-dropdown-menu.js +3 -2
  45. package/src/molecules/gv-expandable.js +3 -3
  46. package/src/molecules/gv-expression-language.js +3 -2
  47. package/src/molecules/gv-identity-picture.js +4 -3
  48. package/src/molecules/gv-list.js +4 -4
  49. package/src/molecules/gv-metrics.js +4 -4
  50. package/src/molecules/gv-modal.js +2 -2
  51. package/src/molecules/gv-nav.js +5 -5
  52. package/src/molecules/gv-option.js +6 -6
  53. package/src/molecules/gv-plans.js +6 -5
  54. package/src/molecules/gv-popover.js +4 -3
  55. package/src/molecules/gv-promote.js +3 -3
  56. package/src/molecules/gv-rating-list.js +5 -4
  57. package/src/molecules/gv-rating.js +4 -4
  58. package/src/molecules/gv-row-expandable.js +2 -2
  59. package/src/molecules/gv-row.js +3 -3
  60. package/src/molecules/gv-stats.js +4 -4
  61. package/src/molecules/gv-stepper.js +4 -4
  62. package/src/molecules/gv-table.js +8 -7
  63. package/src/molecules/gv-tree.js +4 -4
  64. package/src/organisms/gv-documentation.js +2 -2
  65. package/src/organisms/gv-header.js +6 -6
  66. package/src/organisms/gv-http-client.js +2 -2
  67. package/src/organisms/gv-menu.js +3 -3
  68. package/src/organisms/gv-newsletter-subscription.js +2 -2
  69. package/src/organisms/gv-pagination.js +2 -2
  70. package/src/organisms/gv-properties.js +3 -3
  71. package/src/organisms/gv-resizable-views.js +4 -3
  72. package/src/organisms/gv-resources.js +2 -2
  73. package/src/organisms/gv-schema-form-array.js +3 -3
  74. package/src/organisms/gv-schema-form-control-object.js +3 -3
  75. package/src/organisms/gv-schema-form-control.js +3 -2
  76. package/src/organisms/gv-schema-form.js +3 -3
  77. package/src/organisms/gv-tabs.js +3 -2
  78. package/src/organisms/gv-user-menu.js +4 -4
  79. package/src/organisms/gv-vertical-menu.js +2 -2
  80. package/src/policy-studio/gv-flow-step.js +3 -3
  81. package/src/policy-studio/gv-flow.js +3 -3
  82. package/src/policy-studio/gv-policy-studio-menu.js +4 -4
  83. package/src/policy-studio/gv-policy-studio.js +3 -3
  84. package/src/styles/empty.js +2 -2
  85. package/src/styles/input.js +2 -2
  86. package/src/styles/link.js +2 -2
  87. package/src/styles/skeleton.js +2 -2
  88. package/src/styles/zoom.js +2 -2
  89. package/src/theme/gv-theme.js +2 -2
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { LitElement, html, css } from 'lit';
16
+ import { LitElement, html, css } from 'lit-element';
17
17
  import { dispatchCustomEvent } from '../lib/events';
18
18
  import '../atoms/gv-button';
19
19
  import { i18n } from '../lib/i18n';
@@ -167,4 +167,4 @@ export class GvPagination extends LitElement {
167
167
 
168
168
  }
169
169
  window.customElements.define('gv-pagination', GvPagination);
170
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1wYWdpbmF0aW9uLmpzIl0sIm5hbWVzIjpbIkxpdEVsZW1lbnQiLCJodG1sIiwiY3NzIiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsImkxOG4iLCJHdlBhZ2luYXRpb24iLCJwcm9wZXJ0aWVzIiwiZGF0YSIsInR5cGUiLCJPYmplY3QiLCJoaWRlRW1wdHkiLCJCb29sZWFuIiwiYXR0cmlidXRlIiwid2lkZ2V0IiwiZGlzYWJsZWQiLCJfZmlyc3QiLCJOdW1iZXIiLCJfbGFzdCIsIl9jdXJyZW50IiwiX3RvdGFsIiwic3R5bGVzIiwiY29uc3RydWN0b3IiLCJoYXNJbnB1dCIsIm1heCIsImNlbnRlciIsInNpemVzIiwibGlua3MiLCJsYXN0IiwicGFyc2VJbnQiLCJjdXJyZW50X3BhZ2UiLCJfcGFnZXMiLCJ0b3RhbF9wYWdlcyIsIl9nb1RvUGFnZSIsInBhZ2UiLCJfb25TdWJtaXQiLCJlIiwidGFyZ2V0IiwidmFsdWUiLCJfb25DbGlja1RvU2VhcmNoIiwic2hhZG93Um9vdCIsInF1ZXJ5U2VsZWN0b3IiLCJfcmVuZGVyUGFnaW5hdGlvbiIsInBhZ2luYXRpb24iLCJpIiwicHVzaCIsImxlZnQiLCJzbGljZSIsInJpZ2h0IiwibGVuZ3RoIiwiZEwiLCJyZW1vdmVMIiwiYWRkUmlnaHQiLCJkaWZmIiwibGVmdFAiLCJtYXAiLCJiaW5kIiwicmlnaHRQIiwidW5zaGlmdCIsIl9oYXNEYXRhIiwiX2hpZGVFbXB0eSIsInJlbmRlciIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxVQUFULEVBQXFCQyxJQUFyQixFQUEyQkMsR0FBM0IsUUFBc0MsS0FBdEM7QUFDQSxTQUFTQyxt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LE1BQXRCLENBQTZCLGVBQTdCLEVBQThDMUQsWUFBOUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgTGl0RWxlbWVudCwgaHRtbCwgY3NzIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGRpc3BhdGNoQ3VzdG9tRXZlbnQgfSBmcm9tICcuLi9saWIvZXZlbnRzJztcbmltcG9ydCAnLi4vYXRvbXMvZ3YtYnV0dG9uJztcbmltcG9ydCB7IGkxOG4gfSBmcm9tICcuLi9saWIvaTE4bic7XG5cbi8qKlxuICogQSBwYWdpbmF0aW9uXG4gKlxuICogIyMgRGV0YWlsc1xuICogKiBoYXMgQHRoZW1lIGZhY2V0XG4gKlxuICogQGZpcmVzIGd2LXBhZ2luYXRpb246cGFnaW5hdGUgLSBDdXN0b20gZXZlbnQgd2l0aCBwYWdpbmF0aW9uIGxpbmtcbiAqXG4gKiBAYXR0ciB7T2JqZWN0fSBkYXRhIC0gUGFnaW5hdGlvbiBpbmZvcm1hdGlvbiB7Zmlyc3QsIGxhc3QsIHRvdGFsLCBjdXJyZW50X3BhZ2V9XG4gKiBAYXR0ciB7Qm9vbGVhbn0gaGlkZS1lbXB0eSAtIGhpZGUgY29tcG9uZW50IGlmIG5vIHBhZ2Ugb3Igbm8gZGF0YS5cbiAqIEBhdHRyIHtCb29sZWFufSB3aWRnZXQgLSBkaXNwbGF5IHdpZGdldCBwYWdpbmF0aW9uICh3aXRoIGFycm93cykuXG4gKiBAYXR0ciB7Qm9vbGVhbn0gZGlzYWJsZWQgLSBzYW1lIGFzIG5hdGl2ZSBidXR0b24gZWxlbWVudCBgZGlzYWJsZWRgIGF0dHJpYnV0ZVxuICpcbiAqIEBjc3Nwcm9wIHtMZW5ndGh9IFstLWd2LXBhZ2luYXRpb24tLWZ6PXZhcigtLWd2LXRoZW1lLWZvbnQtc2l6ZS1zLCAxMnB4KV0gLSBGb250IHNpemVcbiAqIEBjc3Nwcm9wIHtMZW5ndGh9IFstLWd2LXBhZ2luYXRpb24taWNvbi0tcz0xOHB4XSAtIEhlaWdodCBhbmQgaWNvbiB3aWR0aFxuICovXG5leHBvcnQgY2xhc3MgR3ZQYWdpbmF0aW9uIGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIGhpZGVFbXB0eTogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6ICdoaWRlLWVtcHR5JyB9LFxuICAgICAgd2lkZ2V0OiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICAgIGRpc2FibGVkOiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICAgIF9maXJzdDogeyB0eXBlOiBOdW1iZXIgfSxcbiAgICAgIF9sYXN0OiB7IHR5cGU6IE51bWJlciB9LFxuICAgICAgX2N1cnJlbnQ6IHsgdHlwZTogTnVtYmVyIH0sXG4gICAgICBfdG90YWw6IHsgdHlwZTogTnVtYmVyIH0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc3R5bGVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICAvLyBsYW5ndWFnZT1jc3NcbiAgICAgIGNzc2BcbiAgICAgICAgLnBhZ2luYXRpb24ge1xuICAgICAgICAgIC0tZm9udC1zaXplOiB2YXIoLS1ndi1wYWdpbmF0aW9uLS1meiwgdmFyKC0tZ3YtdGhlbWUtZm9udC1zaXplLXMsIDEycHgpKTtcbiAgICAgICAgICBmb250LXNpemU6IHZhcigtLWZ6KTtcbiAgICAgICAgICAtLWd2LWJ1dHRvbi0tZno6IHZhcigtLWZ6KTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBndi1idXR0b24ge1xuICAgICAgICAgIC0tZ3YtaWNvbi0tczogdmFyKC0tZ3YtcGFnaW5hdGlvbi1pY29uLS1zLCAxOHB4KTtcbiAgICAgICAgICBtaW4td2lkdGg6IDI5cHg7XG4gICAgICAgIH1cblxuICAgICAgICBndi1pbnB1dCB7XG4gICAgICAgICAgd2lkdGg6IDUwcHg7XG4gICAgICAgIH1cbiAgICAgIGAsXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5oaWRlRW1wdHkgPSBmYWxzZTtcbiAgICB0aGlzLmhhc0lucHV0ID0gZmFsc2U7XG4gICAgdGhpcy5tYXggPSAxMDtcbiAgICB0aGlzLmNlbnRlciA9IHRoaXMubWF4IC8gMiAtIDE7XG4gICAgdGhpcy5zaXplcyA9IFtdO1xuICAgIHRoaXMubGlua3MgPSB7fTtcbiAgfVxuXG4gIHNldCBkYXRhKGRhdGEpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5fbGFzdCA9IGRhdGEubGFzdDtcbiAgICAgIHRoaXMuX2N1cnJlbnQgPSBwYXJzZUludChkYXRhLmN1cnJlbnRfcGFnZSk7XG4gICAgICB0aGlzLl9wYWdlcyA9IGRhdGEudG90YWxfcGFnZXM7XG4gICAgICBpZiAodGhpcy5fcGFnZXMgPCB0aGlzLm1heCkge1xuICAgICAgICB0aGlzLm1heCA9IHRoaXMuX3BhZ2VzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9nb1RvUGFnZShwYWdlKSB7XG4gICAgdGhpcy5fY3VycmVudCA9IHBhcnNlSW50KHBhZ2UpO1xuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ3BhZ2luYXRlJywgeyBwYWdlOiBwYWdlIH0pO1xuICB9XG5cbiAgX29uU3VibWl0KGUpIHtcbiAgICBjb25zdCBwYWdlID0gZS50YXJnZXQudmFsdWU7XG4gICAgdGhpcy5fZ29Ub1BhZ2UocGFnZSk7XG4gIH1cblxuICBfb25DbGlja1RvU2VhcmNoKCkge1xuICAgIGNvbnN0IHBhZ2UgPSB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignZ3YtaW5wdXQnKS52YWx1ZTtcbiAgICBpZiAocGFnZSkge1xuICAgICAgdGhpcy5fZ29Ub1BhZ2UocGFnZSk7XG4gICAgfVxuICB9XG5cbiAgX3JlbmRlclBhZ2luYXRpb24oKSB7XG4gICAgY29uc3QgcGFnaW5hdGlvbiA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fcGFnZXM7IGkrKykge1xuICAgICAgcGFnaW5hdGlvbi5wdXNoKGkgKyAxKTtcbiAgICB9XG5cbiAgICBsZXQgbGVmdCA9IHBhZ2luYXRpb24uc2xpY2UoMCwgdGhpcy5fY3VycmVudCAtIDEpO1xuICAgIGxldCByaWdodCA9IHBhZ2luYXRpb24uc2xpY2UodGhpcy5fY3VycmVudCk7XG5cbiAgICBpZiAocGFnaW5hdGlvbi5sZW5ndGggPiB0aGlzLm1heCkge1xuICAgICAgY29uc3QgZEwgPSBsZWZ0Lmxlbmd0aDtcbiAgICAgIGxldCByZW1vdmVMID0gZEwgLSB0aGlzLmNlbnRlciAtIDE7XG4gICAgICBsZXQgYWRkUmlnaHQgPSB0aGlzLm1heCAtIHRoaXMuX2N1cnJlbnQgPiB0aGlzLmNlbnRlciA/IHRoaXMubWF4IC0gdGhpcy5fY3VycmVudCA6IHRoaXMuY2VudGVyO1xuICAgICAgaWYgKHJlbW92ZUwgPiAwKSB7XG4gICAgICAgIGFkZFJpZ2h0ID0gdGhpcy5jZW50ZXI7XG4gICAgICAgIGNvbnN0IGRpZmYgPSB0aGlzLl9sYXN0IC0gdGhpcy5fY3VycmVudCAtIGFkZFJpZ2h0O1xuICAgICAgICBpZiAoZGlmZiA8IDApIHtcbiAgICAgICAgICByZW1vdmVMICs9IGRpZmY7XG4gICAgICAgIH1cbiAgICAgICAgbGVmdCA9IGxlZnQuc2xpY2UocmVtb3ZlTCk7XG4gICAgICB9XG4gICAgICByaWdodCA9IHJpZ2h0LnNsaWNlKDAsIGFkZFJpZ2h0KTtcbiAgICB9XG4gICAgY29uc3QgbGVmdFAgPSBsZWZ0Lm1hcCgoaSkgPT4gaHRtbGA8Z3YtYnV0dG9uIHNtYWxsIG91dGxpbmVkIEBjbGljaz1cIiR7dGhpcy5fZ29Ub1BhZ2UuYmluZCh0aGlzLCBpKX1cIj4ke2l9PC9ndi1idXR0b24+YCk7XG4gICAgY29uc3QgcmlnaHRQID0gcmlnaHQubWFwKChpKSA9PiBodG1sYDxndi1idXR0b24gc21hbGwgb3V0bGluZWQgQGNsaWNrPVwiJHt0aGlzLl9nb1RvUGFnZS5iaW5kKHRoaXMsIGkpfVwiPiR7aX08L2d2LWJ1dHRvbj5gKTtcblxuICAgIGxlZnRQLnVuc2hpZnQoXG4gICAgICBodG1sYDxndi1idXR0b25cbiAgICAgICAgc21hbGxcbiAgICAgICAgLmRpc2FibGVkPVwiJHt0aGlzLmRpc2FibGVkIHx8IGxlZnRQLmxlbmd0aCA9PT0gMH1cIlxuICAgICAgICAuaWNvbj1cIiR7dGhpcy53aWRnZXQgPyAnbmF2aWdhdGlvbjphbmdsZS1sZWZ0JyA6IG51bGx9XCJcbiAgICAgICAgLnRpdGxlPVwiJHtpMThuKCdndi1wYWdpbmF0aW9uLnByZXZpb3VzJyl9XCJcbiAgICAgICAgb3V0bGluZWRcbiAgICAgICAgQGNsaWNrPVwiJHtsZWZ0UC5sZW5ndGggPT09IDAgPyAoKSA9PiB7fSA6IHRoaXMuX2dvVG9QYWdlLmJpbmQodGhpcywgdGhpcy5fY3VycmVudCAtIDEpfVwiXG4gICAgICAgID4ke3RoaXMud2lkZ2V0ID8gJycgOiBpMThuKCdndi1wYWdpbmF0aW9uLnByZXZpb3VzJyl9PC9ndi1idXR0b25cbiAgICAgID5gLFxuICAgICk7XG4gICAgcmlnaHRQLnB1c2goXG4gICAgICBodG1sYDxndi1idXR0b25cbiAgICAgICAgc21hbGxcbiAgICAgICAgLmRpc2FibGVkPVwiJHt0aGlzLmRpc2FibGVkIHx8IHJpZ2h0UC5sZW5ndGggPT09IDB9XCJcbiAgICAgICAgLmljb249XCIke3RoaXMud2lkZ2V0ID8gJ25hdmlnYXRpb246YW5nbGUtcmlnaHQnIDogbnVsbH1cIlxuICAgICAgICAudGl0bGU9XCIke2kxOG4oJ2d2LXBhZ2luYXRpb24ubmV4dCcpfVwiXG4gICAgICAgIG91dGxpbmVkXG4gICAgICAgIEBjbGljaz1cIiR7cmlnaHRQLmxlbmd0aCA9PT0gMCA/ICgpID0+IHt9IDogdGhpcy5fZ29Ub1BhZ2UuYmluZCh0aGlzLCB0aGlzLl9jdXJyZW50ICsgMSl9XCJcbiAgICAgICAgPiR7dGhpcy53aWRnZXQgPyAnJyA6IGkxOG4oJ2d2LXBhZ2luYXRpb24ubmV4dCcpfTwvZ3YtYnV0dG9uXG4gICAgICA+YCxcbiAgICApO1xuICAgIHJldHVybiBodG1sYCR7dGhpcy53aWRnZXQgPyBsZWZ0UC5zbGljZSgwLCAxKSA6IGxlZnRQfVxuICAgICR7aHRtbGA8Z3YtYnV0dG9uIC5kaXNhYmxlZD1cIiR7dGhpcy5kaXNhYmxlZH1cIiBzbWFsbCBwcmltYXJ5XG4gICAgICA+JHt0aGlzLndpZGdldCA/IHRoaXMuX2N1cnJlbnQgKyAnIC8gJyArIHBhZ2luYXRpb24ubGVuZ3RoIDogdGhpcy5fY3VycmVudH08L2d2LWJ1dHRvblxuICAgID5gfVxuICAgICR7dGhpcy53aWRnZXQgPyByaWdodFAuc2xpY2UocmlnaHRQLmxlbmd0aCAtIDEsIHJpZ2h0UC5sZW5ndGgpIDogcmlnaHRQfWA7XG4gIH1cblxuICBfaGFzRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZXMgJiYgdGhpcy5fbGFzdCAmJiB0aGlzLl9jdXJyZW50O1xuICB9XG5cbiAgX2hpZGVFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5faGFzRGF0YSgpICYmIHRoaXMuaGlkZUVtcHR5ICYmIHRoaXMuX3BhZ2VzIDwgMjtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5faGFzRGF0YSgpICYmICF0aGlzLl9oaWRlRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cInBhZ2luYXRpb25cIj5cbiAgICAgICAgJHt0aGlzLmhhc0lucHV0XG4gICAgICAgICAgPyBodG1sYDxndi1pbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZ290b1wiXG4gICAgICAgICAgICAgICAgQGd2LWlucHV0OnN1Ym1pdD1cIiR7dGhpcy5fb25TdWJtaXR9XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICBtaW49XCIxXCJcbiAgICAgICAgICAgICAgICBtYXg9XCIke3RoaXMuX3BhZ2VzfVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQYWdlXCJcbiAgICAgICAgICAgICAgICBzbWFsbFxuICAgICAgICAgICAgICA+PC9ndi1pbnB1dD5cbiAgICAgICAgICAgICAgPGd2LWJ1dHRvbiBzbWFsbCBvdXRsaW5lZCBAY2xpY2s9XCIke3RoaXMuX29uQ2xpY2tUb1NlYXJjaH1cIiBpY29uPVwiZ2VuZXJhbDpzZWFyY2hcIj48L2d2LWJ1dHRvbj5gXG4gICAgICAgICAgOiAnJ31cbiAgICAgICAgJHt0aGlzLl9yZW5kZXJQYWdpbmF0aW9uKCl9XG4gICAgICA8L2Rpdj4gYDtcbiAgICB9XG4gICAgcmV0dXJuIGh0bWxgYDtcbiAgfVxufVxuXG53aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdndi1wYWdpbmF0aW9uJywgR3ZQYWdpbmF0aW9uKTtcbiJdfQ==
170
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1wYWdpbmF0aW9uLmpzIl0sIm5hbWVzIjpbIkxpdEVsZW1lbnQiLCJodG1sIiwiY3NzIiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsImkxOG4iLCJHdlBhZ2luYXRpb24iLCJwcm9wZXJ0aWVzIiwiZGF0YSIsInR5cGUiLCJPYmplY3QiLCJoaWRlRW1wdHkiLCJCb29sZWFuIiwiYXR0cmlidXRlIiwid2lkZ2V0IiwiZGlzYWJsZWQiLCJfZmlyc3QiLCJOdW1iZXIiLCJfbGFzdCIsIl9jdXJyZW50IiwiX3RvdGFsIiwic3R5bGVzIiwiY29uc3RydWN0b3IiLCJoYXNJbnB1dCIsIm1heCIsImNlbnRlciIsInNpemVzIiwibGlua3MiLCJsYXN0IiwicGFyc2VJbnQiLCJjdXJyZW50X3BhZ2UiLCJfcGFnZXMiLCJ0b3RhbF9wYWdlcyIsIl9nb1RvUGFnZSIsInBhZ2UiLCJfb25TdWJtaXQiLCJlIiwidGFyZ2V0IiwidmFsdWUiLCJfb25DbGlja1RvU2VhcmNoIiwic2hhZG93Um9vdCIsInF1ZXJ5U2VsZWN0b3IiLCJfcmVuZGVyUGFnaW5hdGlvbiIsInBhZ2luYXRpb24iLCJpIiwicHVzaCIsImxlZnQiLCJzbGljZSIsInJpZ2h0IiwibGVuZ3RoIiwiZEwiLCJyZW1vdmVMIiwiYWRkUmlnaHQiLCJkaWZmIiwibGVmdFAiLCJtYXAiLCJiaW5kIiwicmlnaHRQIiwidW5zaGlmdCIsIl9oYXNEYXRhIiwiX2hpZGVFbXB0eSIsInJlbmRlciIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxVQUFULEVBQXFCQyxJQUFyQixFQUEyQkMsR0FBM0IsUUFBc0MsYUFBdEM7QUFDQSxTQUFTQyxt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LE1BQXRCLENBQTZCLGVBQTdCLEVBQThDMUQsWUFBOUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgTGl0RWxlbWVudCwgaHRtbCwgY3NzIH0gZnJvbSAnbGl0LWVsZW1lbnQnO1xuaW1wb3J0IHsgZGlzcGF0Y2hDdXN0b21FdmVudCB9IGZyb20gJy4uL2xpYi9ldmVudHMnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1idXR0b24nO1xuaW1wb3J0IHsgaTE4biB9IGZyb20gJy4uL2xpYi9pMThuJztcblxuLyoqXG4gKiBBIHBhZ2luYXRpb25cbiAqXG4gKiAjIyBEZXRhaWxzXG4gKiAqIGhhcyBAdGhlbWUgZmFjZXRcbiAqXG4gKiBAZmlyZXMgZ3YtcGFnaW5hdGlvbjpwYWdpbmF0ZSAtIEN1c3RvbSBldmVudCB3aXRoIHBhZ2luYXRpb24gbGlua1xuICpcbiAqIEBhdHRyIHtPYmplY3R9IGRhdGEgLSBQYWdpbmF0aW9uIGluZm9ybWF0aW9uIHtmaXJzdCwgbGFzdCwgdG90YWwsIGN1cnJlbnRfcGFnZX1cbiAqIEBhdHRyIHtCb29sZWFufSBoaWRlLWVtcHR5IC0gaGlkZSBjb21wb25lbnQgaWYgbm8gcGFnZSBvciBubyBkYXRhLlxuICogQGF0dHIge0Jvb2xlYW59IHdpZGdldCAtIGRpc3BsYXkgd2lkZ2V0IHBhZ2luYXRpb24gKHdpdGggYXJyb3dzKS5cbiAqIEBhdHRyIHtCb29sZWFufSBkaXNhYmxlZCAtIHNhbWUgYXMgbmF0aXZlIGJ1dHRvbiBlbGVtZW50IGBkaXNhYmxlZGAgYXR0cmlidXRlXG4gKlxuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3YtcGFnaW5hdGlvbi0tZno9dmFyKC0tZ3YtdGhlbWUtZm9udC1zaXplLXMsIDEycHgpXSAtIEZvbnQgc2l6ZVxuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3YtcGFnaW5hdGlvbi1pY29uLS1zPTE4cHhdIC0gSGVpZ2h0IGFuZCBpY29uIHdpZHRoXG4gKi9cbmV4cG9ydCBjbGFzcyBHdlBhZ2luYXRpb24gZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgaGlkZUVtcHR5OiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogJ2hpZGUtZW1wdHknIH0sXG4gICAgICB3aWRnZXQ6IHsgdHlwZTogQm9vbGVhbiB9LFxuICAgICAgZGlzYWJsZWQ6IHsgdHlwZTogQm9vbGVhbiB9LFxuICAgICAgX2ZpcnN0OiB7IHR5cGU6IE51bWJlciB9LFxuICAgICAgX2xhc3Q6IHsgdHlwZTogTnVtYmVyIH0sXG4gICAgICBfY3VycmVudDogeyB0eXBlOiBOdW1iZXIgfSxcbiAgICAgIF90b3RhbDogeyB0eXBlOiBOdW1iZXIgfSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIGxhbmd1YWdlPWNzc1xuICAgICAgY3NzYFxuICAgICAgICAucGFnaW5hdGlvbiB7XG4gICAgICAgICAgLS1mb250LXNpemU6IHZhcigtLWd2LXBhZ2luYXRpb24tLWZ6LCB2YXIoLS1ndi10aGVtZS1mb250LXNpemUtcywgMTJweCkpO1xuICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZnopO1xuICAgICAgICAgIC0tZ3YtYnV0dG9uLS1mejogdmFyKC0tZnopO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LWJ1dHRvbiB7XG4gICAgICAgICAgLS1ndi1pY29uLS1zOiB2YXIoLS1ndi1wYWdpbmF0aW9uLWljb24tLXMsIDE4cHgpO1xuICAgICAgICAgIG1pbi13aWR0aDogMjlweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LWlucHV0IHtcbiAgICAgICAgICB3aWR0aDogNTBweDtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmhpZGVFbXB0eSA9IGZhbHNlO1xuICAgIHRoaXMuaGFzSW5wdXQgPSBmYWxzZTtcbiAgICB0aGlzLm1heCA9IDEwO1xuICAgIHRoaXMuY2VudGVyID0gdGhpcy5tYXggLyAyIC0gMTtcbiAgICB0aGlzLnNpemVzID0gW107XG4gICAgdGhpcy5saW5rcyA9IHt9O1xuICB9XG5cbiAgc2V0IGRhdGEoZGF0YSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLl9sYXN0ID0gZGF0YS5sYXN0O1xuICAgICAgdGhpcy5fY3VycmVudCA9IHBhcnNlSW50KGRhdGEuY3VycmVudF9wYWdlKTtcbiAgICAgIHRoaXMuX3BhZ2VzID0gZGF0YS50b3RhbF9wYWdlcztcbiAgICAgIGlmICh0aGlzLl9wYWdlcyA8IHRoaXMubWF4KSB7XG4gICAgICAgIHRoaXMubWF4ID0gdGhpcy5fcGFnZXM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2dvVG9QYWdlKHBhZ2UpIHtcbiAgICB0aGlzLl9jdXJyZW50ID0gcGFyc2VJbnQocGFnZSk7XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAncGFnaW5hdGUnLCB7IHBhZ2U6IHBhZ2UgfSk7XG4gIH1cblxuICBfb25TdWJtaXQoZSkge1xuICAgIGNvbnN0IHBhZ2UgPSBlLnRhcmdldC52YWx1ZTtcbiAgICB0aGlzLl9nb1RvUGFnZShwYWdlKTtcbiAgfVxuXG4gIF9vbkNsaWNrVG9TZWFyY2goKSB7XG4gICAgY29uc3QgcGFnZSA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdndi1pbnB1dCcpLnZhbHVlO1xuICAgIGlmIChwYWdlKSB7XG4gICAgICB0aGlzLl9nb1RvUGFnZShwYWdlKTtcbiAgICB9XG4gIH1cblxuICBfcmVuZGVyUGFnaW5hdGlvbigpIHtcbiAgICBjb25zdCBwYWdpbmF0aW9uID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9wYWdlczsgaSsrKSB7XG4gICAgICBwYWdpbmF0aW9uLnB1c2goaSArIDEpO1xuICAgIH1cblxuICAgIGxldCBsZWZ0ID0gcGFnaW5hdGlvbi5zbGljZSgwLCB0aGlzLl9jdXJyZW50IC0gMSk7XG4gICAgbGV0IHJpZ2h0ID0gcGFnaW5hdGlvbi5zbGljZSh0aGlzLl9jdXJyZW50KTtcblxuICAgIGlmIChwYWdpbmF0aW9uLmxlbmd0aCA+IHRoaXMubWF4KSB7XG4gICAgICBjb25zdCBkTCA9IGxlZnQubGVuZ3RoO1xuICAgICAgbGV0IHJlbW92ZUwgPSBkTCAtIHRoaXMuY2VudGVyIC0gMTtcbiAgICAgIGxldCBhZGRSaWdodCA9IHRoaXMubWF4IC0gdGhpcy5fY3VycmVudCA+IHRoaXMuY2VudGVyID8gdGhpcy5tYXggLSB0aGlzLl9jdXJyZW50IDogdGhpcy5jZW50ZXI7XG4gICAgICBpZiAocmVtb3ZlTCA+IDApIHtcbiAgICAgICAgYWRkUmlnaHQgPSB0aGlzLmNlbnRlcjtcbiAgICAgICAgY29uc3QgZGlmZiA9IHRoaXMuX2xhc3QgLSB0aGlzLl9jdXJyZW50IC0gYWRkUmlnaHQ7XG4gICAgICAgIGlmIChkaWZmIDwgMCkge1xuICAgICAgICAgIHJlbW92ZUwgKz0gZGlmZjtcbiAgICAgICAgfVxuICAgICAgICBsZWZ0ID0gbGVmdC5zbGljZShyZW1vdmVMKTtcbiAgICAgIH1cbiAgICAgIHJpZ2h0ID0gcmlnaHQuc2xpY2UoMCwgYWRkUmlnaHQpO1xuICAgIH1cbiAgICBjb25zdCBsZWZ0UCA9IGxlZnQubWFwKChpKSA9PiBodG1sYDxndi1idXR0b24gc21hbGwgb3V0bGluZWQgQGNsaWNrPVwiJHt0aGlzLl9nb1RvUGFnZS5iaW5kKHRoaXMsIGkpfVwiPiR7aX08L2d2LWJ1dHRvbj5gKTtcbiAgICBjb25zdCByaWdodFAgPSByaWdodC5tYXAoKGkpID0+IGh0bWxgPGd2LWJ1dHRvbiBzbWFsbCBvdXRsaW5lZCBAY2xpY2s9XCIke3RoaXMuX2dvVG9QYWdlLmJpbmQodGhpcywgaSl9XCI+JHtpfTwvZ3YtYnV0dG9uPmApO1xuXG4gICAgbGVmdFAudW5zaGlmdChcbiAgICAgIGh0bWxgPGd2LWJ1dHRvblxuICAgICAgICBzbWFsbFxuICAgICAgICAuZGlzYWJsZWQ9XCIke3RoaXMuZGlzYWJsZWQgfHwgbGVmdFAubGVuZ3RoID09PSAwfVwiXG4gICAgICAgIC5pY29uPVwiJHt0aGlzLndpZGdldCA/ICduYXZpZ2F0aW9uOmFuZ2xlLWxlZnQnIDogbnVsbH1cIlxuICAgICAgICAudGl0bGU9XCIke2kxOG4oJ2d2LXBhZ2luYXRpb24ucHJldmlvdXMnKX1cIlxuICAgICAgICBvdXRsaW5lZFxuICAgICAgICBAY2xpY2s9XCIke2xlZnRQLmxlbmd0aCA9PT0gMCA/ICgpID0+IHt9IDogdGhpcy5fZ29Ub1BhZ2UuYmluZCh0aGlzLCB0aGlzLl9jdXJyZW50IC0gMSl9XCJcbiAgICAgICAgPiR7dGhpcy53aWRnZXQgPyAnJyA6IGkxOG4oJ2d2LXBhZ2luYXRpb24ucHJldmlvdXMnKX08L2d2LWJ1dHRvblxuICAgICAgPmAsXG4gICAgKTtcbiAgICByaWdodFAucHVzaChcbiAgICAgIGh0bWxgPGd2LWJ1dHRvblxuICAgICAgICBzbWFsbFxuICAgICAgICAuZGlzYWJsZWQ9XCIke3RoaXMuZGlzYWJsZWQgfHwgcmlnaHRQLmxlbmd0aCA9PT0gMH1cIlxuICAgICAgICAuaWNvbj1cIiR7dGhpcy53aWRnZXQgPyAnbmF2aWdhdGlvbjphbmdsZS1yaWdodCcgOiBudWxsfVwiXG4gICAgICAgIC50aXRsZT1cIiR7aTE4bignZ3YtcGFnaW5hdGlvbi5uZXh0Jyl9XCJcbiAgICAgICAgb3V0bGluZWRcbiAgICAgICAgQGNsaWNrPVwiJHtyaWdodFAubGVuZ3RoID09PSAwID8gKCkgPT4ge30gOiB0aGlzLl9nb1RvUGFnZS5iaW5kKHRoaXMsIHRoaXMuX2N1cnJlbnQgKyAxKX1cIlxuICAgICAgICA+JHt0aGlzLndpZGdldCA/ICcnIDogaTE4bignZ3YtcGFnaW5hdGlvbi5uZXh0Jyl9PC9ndi1idXR0b25cbiAgICAgID5gLFxuICAgICk7XG4gICAgcmV0dXJuIGh0bWxgJHt0aGlzLndpZGdldCA/IGxlZnRQLnNsaWNlKDAsIDEpIDogbGVmdFB9XG4gICAgJHtodG1sYDxndi1idXR0b24gLmRpc2FibGVkPVwiJHt0aGlzLmRpc2FibGVkfVwiIHNtYWxsIHByaW1hcnlcbiAgICAgID4ke3RoaXMud2lkZ2V0ID8gdGhpcy5fY3VycmVudCArICcgLyAnICsgcGFnaW5hdGlvbi5sZW5ndGggOiB0aGlzLl9jdXJyZW50fTwvZ3YtYnV0dG9uXG4gICAgPmB9XG4gICAgJHt0aGlzLndpZGdldCA/IHJpZ2h0UC5zbGljZShyaWdodFAubGVuZ3RoIC0gMSwgcmlnaHRQLmxlbmd0aCkgOiByaWdodFB9YDtcbiAgfVxuXG4gIF9oYXNEYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9wYWdlcyAmJiB0aGlzLl9sYXN0ICYmIHRoaXMuX2N1cnJlbnQ7XG4gIH1cblxuICBfaGlkZUVtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLl9oYXNEYXRhKCkgJiYgdGhpcy5oaWRlRW1wdHkgJiYgdGhpcy5fcGFnZXMgPCAyO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLl9oYXNEYXRhKCkgJiYgIXRoaXMuX2hpZGVFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvblwiPlxuICAgICAgICAke3RoaXMuaGFzSW5wdXRcbiAgICAgICAgICA/IGh0bWxgPGd2LWlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJnb3RvXCJcbiAgICAgICAgICAgICAgICBAZ3YtaW5wdXQ6c3VibWl0PVwiJHt0aGlzLl9vblN1Ym1pdH1cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgIG1pbj1cIjFcIlxuICAgICAgICAgICAgICAgIG1heD1cIiR7dGhpcy5fcGFnZXN9XCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBhZ2VcIlxuICAgICAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICAgID48L2d2LWlucHV0PlxuICAgICAgICAgICAgICA8Z3YtYnV0dG9uIHNtYWxsIG91dGxpbmVkIEBjbGljaz1cIiR7dGhpcy5fb25DbGlja1RvU2VhcmNofVwiIGljb249XCJnZW5lcmFsOnNlYXJjaFwiPjwvZ3YtYnV0dG9uPmBcbiAgICAgICAgICA6ICcnfVxuICAgICAgICAke3RoaXMuX3JlbmRlclBhZ2luYXRpb24oKX1cbiAgICAgIDwvZGl2PiBgO1xuICAgIH1cbiAgICByZXR1cm4gaHRtbGBgO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LXBhZ2luYXRpb24nLCBHdlBhZ2luYXRpb24pO1xuIl19
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { css, html, LitElement } from 'lit';
16
+ import { css, html, LitElement } from 'lit-element';
17
17
  import './gv-schema-form';
18
18
  import './gv-resizable-views';
19
19
  import '../molecules/gv-table';
@@ -26,7 +26,7 @@ import '../atoms/gv-select';
26
26
  import { dispatchCustomEvent } from '../lib/events';
27
27
  import { ERROR_TYPES, parseRaw, toNameEqualsValueString } from '../lib/properties';
28
28
  import { i18n } from '../lib/i18n';
29
- import { classMap } from 'lit/directives/class-map';
29
+ import { classMap } from 'lit-html/directives/class-map';
30
30
  import { KeyboardElement, KEYS } from '../mixins/keyboard-element';
31
31
  import { empty } from '../styles/empty';
32
32
  /**
@@ -696,4 +696,4 @@ export class GvProperties extends KeyboardElement(LitElement) {
696
696
 
697
697
  }
698
698
  window.customElements.define('gv-properties', GvProperties);
699
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1wcm9wZXJ0aWVzLmpzIl0sIm5hbWVzIjpbImNzcyIsImh0bWwiLCJMaXRFbGVtZW50IiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsIkVSUk9SX1RZUEVTIiwicGFyc2VSYXciLCJ0b05hbWVFcXVhbHNWYWx1ZVN0cmluZyIsImkxOG4iLCJjbGFzc01hcCIsIktleWJvYXJkRWxlbWVudCIsIktFWVMiLCJlbXB0eSIsIkd2UHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJkeW5hbWljUHJvcGVydHlTY2hlbWEiLCJ0eXBlIiwiT2JqZWN0IiwiQXJyYXkiLCJfcHJvcGVydGllcyIsImF0dHJpYnV0ZSIsInByb3ZpZGVyIiwicHJvdmlkZXJzIiwiX3Byb3BlcnR5U2NoZW1hRm9ybSIsImV4cGVydCIsIkJvb2xlYW4iLCJfZm9ybWF0dGVkRXJyb3JzIiwiYXR0cmlidXRlcyIsIl9maWx0ZXIiLCJTdHJpbmciLCJfcGFnaW5hdGlvbkRhdGEiLCJfcGFnZVNpemUiLCJOdW1iZXIiLCJfbmV3SXRlbSIsIl9wcm92aWRlckRvY3VtZW50YXRpb24iLCJfc2hvd0RvY3VtZW50YXRpb24iLCJfdGV4dFJvd3MiLCJyZWFkb25seSIsInJlZmxlY3QiLCJlbmNyeXB0YWJsZSIsImNvbnN0cnVjdG9yIiwidHlwZXMiLCJfY3VycmVudFJlc291cmNlIiwia2V5IiwidmFsdWUiLCJfbmV3IiwiX3BhZ2VTaXplcyIsIl9lcnJvcnMiLCJvbktleWJvYXJkIiwiaXNQcmVzc2VkIiwiRXNjIiwiX29uQ2xvc2VQcm9wZXJ0eVNjaGVtYUZvcm0iLCJTaGlmdCIsIkN0cmwiLCJTcGFjZSIsInNlYXJjaCIsInNoYWRvd1Jvb3QiLCJxdWVyeVNlbGVjdG9yIiwiZm9jdXMiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwibWFwIiwicHJvcGVydHkiLCJlbmNyeXB0ZWQiLCJfZ2V0UmVzaXphYmxlVmlld3MiLCJfbWF4aW1pemVUb3BWaWV3Iiwidmlld3MiLCJtYXhpbWl6ZVRvcCIsIl9tYXhpbWl6ZUJvdHRvbVZpZXciLCJyZXNpemUiLCJfc3BsaXRNYWluVmlld3MiLCJzcGxpdCIsIl9pc05ld0xpbmVUYWJsZSIsImxpbmUiLCJfb25JbnB1dE5ldyIsIm5hbWUiLCJldmVudCIsInRhcmdldCIsImRldGFpbCIsImVycm9ycyIsInNldFRpbWVvdXQiLCJidG4iLCJsZW5ndGgiLCJfZGlzYWJsZWROZXdMaW5lIiwic2V0QXR0cmlidXRlIiwicmVtb3ZlQXR0cmlidXRlIiwiX29uSW5wdXQiLCJfb25Td2l0Y2hFbmNyeXB0ZWQiLCJpdGVtIiwiZW5jcnlwdGlvbldhcm5pbmciLCJyZXF1ZXN0VXBkYXRlIiwiX2FkZFByb3BlcnR5IiwiX3JlbW92ZVByb3BlcnR5IiwiZmlsdGVyIiwidHJpbSIsIl9zdWJtaXRFeHBlcnRNb2RlIiwiX2hhbmRsZUV4cGVydE1vZGVJbnB1dCIsIl9vbkV4cGVydE1vZGVUZXh0SW5wdXQiLCJleHBlcnRNb2RlSW5wdXRTdHJpbmciLCJhbGxQcm9wZXJ0aWVzIiwicHJvdmlkZXJFbmFibGVkIiwiZW5hYmxlZCIsImR5bmFtaWNQcm9wZXJ0aWVzIiwicHJvcCIsImR5bmFtaWMiLCJlbmNyeXB0ZWRQcm9wZXJ0aWVzIiwiYWxsUHJvcGVydGllc1N0cmluZyIsInZhcmlhYmxlcyIsIl9vblN1Ym1pdFByb3BlcnR5Rm9ybSIsInZhbHVlcyIsInN1Ym1pdCIsIl9vblN1Ym1pdCIsImludmFsaWRDb250cm9scyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmaW5kIiwiY29udHJvbCIsImludmFsaWQiLCJfb25Db25maWd1cmVEeW5hbWljUHJvcGVydGllcyIsInByb3ZpZGVyc1RpdGxlTWFwIiwicmVkdWNlIiwiaWQiLCJwcm92aWRlcnNFbnVtIiwia2V5cyIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJzY2hlZHVsZSIsImVudW0iLCJkZWZhdWx0IiwidGl0bGVNYXAiLCJyZXF1aXJlZCIsImRlZmF1bHRQcm92aWRlciIsImNvbmZpZ3VyYXRpb24iLCJzY2hlbWEiLCJkb2N1bWVudGF0aW9uIiwiX29uU2VhcmNoUHJvcGVydHkiLCJfb25DbGVhclByb3BlcnR5IiwicmF3RXJyb3JzIiwicG9zIiwiSU5WQUxJRF9OQU1FIiwibXNnIiwiRFVQTElDQVRFRF9OQU1FIiwiSU5WQUxJRF9MSU5FIiwiSU5WQUxJRF9WQUxVRSIsIl9yZW5kZXJFcnJvcnMiLCJ3aXRoTGluZSIsIl9yZW5kZXJUYWJsZSIsIl9jb21wdXRlVGV4dFJvd3MiLCJzdGF0aWNQcm9wZXJ0aWVzIiwiZXhwZXJ0UHJvcGVydGllcyIsImNvbnRlbnQiLCJqb2luIiwib3B0aW9ucyIsImRhdGEiLCJmaWVsZCIsImxhYmVsIiwid2lkdGgiLCJzaGFwZSIsInN0eWxlIiwiY2xpcGJvYXJkIiwicGxhY2Vob2xkZXIiLCJkaXNhYmxlZCIsImljb24iLCJiaW5kIiwicHVzaCIsImRhbmdlciIsIm91dGxpbmVkIiwiZmlsdGVyZWRQcm9wZXJ0aWVzIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImxhc3QiLCJNYXRoIiwiY2VpbCIsInRvdGFsIiwidG90YWxfcGFnZXMiLCJpbmRleCIsImN1cnJlbnRfcGFnZSIsInNwbGljZSIsImFkZFByb3BlcnR5Rm9ybUdyaWRDbGFzcyIsImFkZFByb3BlcnR5Rm9ybSIsIl9vbkNoYW5nZU1vZGUiLCJfb25QYWdpbmF0ZSIsInBhZ2UiLCJ1cGRhdGVkIiwicHJvcHMiLCJoYXMiLCJmaXJzdCIsIl9vbkNoYW5nZVBhZ2VTaXplIiwidmFsdWVPZiIsIl9yZW5kZXJUYWJsZUZvcm0iLCJfZmV0Y2hEb2N1bWVudGF0aW9uIiwiX2hpZGVEb2N1bWVudGF0aW9uIiwiZGlydHkiLCJmb3JtIiwiY29uZmlybSIsInRoZW4iLCJQcm9taXNlIiwicmVzb2x2ZSIsIl9yZW5kZXJGb3JtIiwiX3JlbmRlckJvdHRvbSIsIl9yZW5kZXJEeW5hbWljQ29uZmlndXJhdGlvbiIsImhhc0R5bmFtaWNDb25maWd1cmF0aW9uIiwiY29uZmlndXJlQWN0aW9uIiwiX29uTW92ZSIsInBhcmVudCIsImhlaWdodCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInJvdW5kIiwicmVuZGVyIiwic3R5bGVzIiwid2luZG93IiwiY3VzdG9tRWxlbWVudHMiLCJkZWZpbmUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLEdBQVQsRUFBY0MsSUFBZCxFQUFvQkMsVUFBcEIsUUFBc0MsS0FBdEM7QUFFQSxPQUFPLGtCQUFQO0FBQ0EsT0FBTyxzQkFBUDtBQUNBLE9BQU8sdUJBQVA7QUFDQSxPQUFPLG9CQUFQO0FBQ0EsT0FBTyxtQkFBUDtBQUNBLE9BQU8sa0JBQVA7QUFDQSxPQUFPLGtCQUFQO0FBQ0EsT0FBTywyQkFBUDtBQUNBLE9BQU8sb0JBQVA7QUFDQSxTQUFTQyxtQkFBVCxRQUFvQyxlQUFwQztBQUNBLFNBQVNDLFdBQVQsRUFBc0JDLFFBQXRCLEVBQWdDQyx1QkFBaEMsUUFBK0QsbUJBQS9EO0FBQ0EsU0FBU0MsSUFBVCxRQUFxQixhQUFyQjtBQUNBLFNBQVNDLFFBQVQsUUFBeUIsMEJBQXpCO0FBQ0EsU0FBU0MsZUFBVCxFQUEwQkMsSUFBMUIsUUFBc0MsNEJBQXRDO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQixpQkFBdEI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxZQUFOLFNBQTJCSCxlQUFlLENBQUNQLFVBQUQsQ0FBMUMsQ0FBdUQ7QUFDdkMsYUFBVlcsVUFBVSxHQUFHO0FBQ3RCLFdBQU87QUFDTEMsTUFBQUEscUJBQXFCLEVBQUU7QUFBRUMsUUFBQUEsSUFBSSxFQUFFQztBQUFSLE9BRGxCO0FBRUxILE1BQUFBLFVBQVUsRUFBRTtBQUFFRSxRQUFBQSxJQUFJLEVBQUVFO0FB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Y2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcblxuaW1wb3J0ICcuL2d2LXNjaGVtYS1mb3JtJztcbmltcG9ydCAnLi9ndi1yZXNpemFibGUtdmlld3MnO1xuaW1wb3J0ICcuLi9tb2xlY3VsZXMvZ3YtdGFibGUnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1idXR0b24nO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1pbnB1dCc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LWljb24nO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi10ZXh0JztcbmltcG9ydCAnLi4vYXRvbXMvZ3YtaW5wdXQtbWVzc2FnZSc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LXNlbGVjdCc7XG5pbXBvcnQgeyBkaXNwYXRjaEN1c3RvbUV2ZW50IH0gZnJvbSAnLi4vbGliL2V2ZW50cyc7XG5pbXBvcnQgeyBFUlJPUl9UWVBFUywgcGFyc2VSYXcsIHRvTmFtZUVxdWFsc1ZhbHVlU3RyaW5nIH0gZnJvbSAnLi4vbGliL3Byb3BlcnRpZXMnO1xuaW1wb3J0IHsgaTE4biB9IGZyb20gJy4uL2xpYi9pMThuJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvY2xhc3MtbWFwJztcbmltcG9ydCB7IEtleWJvYXJkRWxlbWVudCwgS0VZUyB9IGZyb20gJy4uL21peGlucy9rZXlib2FyZC1lbGVtZW50JztcbmltcG9ydCB7IGVtcHR5IH0gZnJvbSAnLi4vc3R5bGVzL2VtcHR5JztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0byBtYW5hZ2UgcHJvcGVydGllc1xuICpcbiAqIEBmaXJlcyBndi1wcm9wZXJ0aWVzOmNoYW5nZSAtIFdoZW4gbGlzdCBvZiBwcm9wZXJ0aWVzIGNoYW5nZVxuICogQGZpcmVzIGd2LXByb3BlcnRpZXM6c2F2ZS1wcm92aWRlciAtIFdoZW4gdXNlciB2YWxpZGF0ZXMgcHJvdmlkZXIgY29uZmlndXJhdGlvblxuICogQGZpcmVzIGd2LXByb3BlcnRpZXM6c3dpdGNoLWVuY3J5cHRlZCAtIFdoZW4gdXNlciBzd2l0Y2hlcyBlbmNyeXB0aW9uIHRvZ2dsZVxuICpcbiAqIEBhdHRyIHtBcnJheX0gcHJvcGVydGllcyAtIEFycmF5IG9mIFByb3BlcnRpZXMge2tleSwgdmFsdWUsIGR5bmFtaWM/fVxuICogQGF0dHIge09iamVjdH0gcHJvdmlkZXIgLSBDb25maWd1cmF0aW9uIG9mIHByb3ZpZGVyXG4gKiBAYXR0ciB7QXJyYXl9IHByb3ZpZGVycyAtIExpc3Qgb2YgYXZhaWxhYmxlIHByb3ZpZGVycyAob25seSBodHRwIGZvciB0aGUgbW9tZW50KVxuICogQGF0dHIge0Jvb2xlYW59IGV4cGVydCAtIEZvciBkaXNwbGF5IGV4cGVydCBtb2RlIGJ5IGRlZmF1bHRcbiAqIEBhdHRyIHtCb29sZWFufSBlbmNyeXB0YWJsZSAtIFRvIGRpc3BsYXkgdGhlICdlbmNyeXB0ZWQnIHRvZ2dsZSBvbiBlYWNoIHByb3BlcnR5XG4gKlxuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3YtcHJvcGVydGllcy10YWJsZS0tY29sbWc9MC4ycmVtXSAtIFRhYmxlIGNlbGxzIG1hcmdpblxuICovXG5leHBvcnQgY2xhc3MgR3ZQcm9wZXJ0aWVzIGV4dGVuZHMgS2V5Ym9hcmRFbGVtZW50KExpdEVsZW1lbnQpIHtcbiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkeW5hbWljUHJvcGVydHlTY2hlbWE6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBwcm9wZXJ0aWVzOiB7IHR5cGU6IEFycmF5IH0sXG4gICAgICBfcHJvcGVydGllczogeyB0eXBlOiBBcnJheSwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgcHJvdmlkZXI6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBwcm92aWRlcnM6IHsgdHlwZTogQXJyYXkgfSxcbiAgICAgIF9wcm9wZXJ0eVNjaGVtYUZvcm06IHsgdHlwZTogT2JqZWN0LCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBleHBlcnQ6IHsgdHlwZTogQm9vbGVhbiB9LFxuICAgICAgX2Zvcm1hdHRlZEVycm9yczogeyB0eXBlOiBBcnJheSwgYXR0cmlidXRlczogZmFsc2UgfSxcbiAgICAgIF9maWx0ZXI6IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgICBfcGFnaW5hdGlvbkRhdGE6IHsgdHlwZTogT2JqZWN0LCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBfcGFnZVNpemU6IHsgdHlwZTogTnVtYmVyLCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBfbmV3SXRlbTogeyB0eXBlOiBPYmplY3QsIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIF9wcm92aWRlckRvY3VtZW50YXRpb246IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgX3Nob3dEb2N1bWVudGF0aW9uOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIF90ZXh0Um93czogeyB0eXBlOiBOdW1iZXIsIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIHJlYWRvbmx5OiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGVuY3J5cHRhYmxlOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBbXTtcbiAgICB0aGlzLnR5cGVzID0gW107XG4gICAgdGhpcy5wcm92aWRlciA9IHt9O1xuICAgIHRoaXMuX2N1cnJlbnRSZXNvdXJjZSA9IG51bGw7XG4gICAgdGhpcy5fZm9ybWF0dGVkRXJyb3JzID0gW107XG4gICAgdGhpcy5fc2hvd0RvY3VtZW50YXRpb24gPSB0cnVlO1xuICAgIHRoaXMuX25ld0l0ZW0gPSB7IGtleTogJycsIHZhbHVlOiAnJywgX25ldzogdHJ1ZSB9O1xuICAgIHRoaXMuX3BhZ2VTaXplID0gMTA7XG4gICAgdGhpcy5fdGV4dFJvd3MgPSAxMDtcbiAgICB0aGlzLl9wYWdlU2l6ZXMgPSBbNSwgMTAsIDI1LCA1MCwgMTAwXTtcbiAgICB0aGlzLl9lcnJvcnMgPSBbXTtcbiAgfVxuXG4gIG9uS2V5Ym9hcmQoKSB7XG4gICAgaWYgKHRoaXMuaXNQcmVzc2VkKEtFWVMuRXNjKSkge1xuICAgICAgdGhpcy5fb25DbG9zZVByb3BlcnR5U2NoZW1hRm9ybSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1ByZXNzZWQoS0VZUy5TaGlmdCwgS0VZUy5DdHJsLCBLRVlTLlNwYWNlKSkge1xuICAgICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gtcHJvcGVydHknKTtcbiAgICAgIGlmIChzZWFyY2gpIHtcbiAgICAgICAgc2VhcmNoLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0IHByb3BlcnRpZXMocHJvcGVydGllcykge1xuICAgIHRoaXMuX3Byb3BlcnRpZXMgPSBwcm9wZXJ0aWVzXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5rZXkubG9jYWxlQ29tcGFyZShiLmtleSkpXG4gICAgICAubWFwKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBpZiAocHJvcGVydHkuZW5jcnlwdGVkKSB7XG4gICAgICAgICAgcHJvcGVydHkuZW5jcnlwdGFibGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0IHByb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Byb3BlcnRpZXM7XG4gIH1cblxuICBfZ2V0UmVzaXphYmxlVmlld3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdndi1yZXNpemFibGUtdmlld3MnKTtcbiAgfVxuXG4gIF9tYXhpbWl6ZVRvcFZpZXcoKSB7XG4gICAgY29uc3Qgdmlld3MgPSB0aGlzLl9nZXRSZXNpemFibGVWaWV3cygpO1xuICAgIGlmICh2aWV3cykge1xuICAgICAgdmlld3MubWF4aW1pemVUb3AoOTUsIDUpO1xuICAgIH1cbiAgfVxuXG4gIF9tYXhpbWl6ZUJvdHRvbVZpZXcoKSB7XG4gICAgY29uc3Qgdmlld3MgPSB0aGlzLl9nZXRSZXNpemFibGVWaWV3cygpO1xuICAgIGlmICh2aWV3cykge1xuICAgICAgdmlld3MucmVzaXplKDMwLCA3MCk7XG4gICAgfVxuICB9XG5cbiAgX3NwbGl0TWFpblZpZXdzKCkge1xuICAgIGNvbnN0IHZpZXdzID0gdGhpcy5fZ2V0UmVzaXphYmxlVmlld3MoKTtcbiAgICBpZiAodmlld3MpIHtcbiAgICAgIHZpZXdzLnNwbGl0KCk7XG4gICAgfVxuICB9XG5cbiAgX2lzTmV3TGluZVRhYmxlKGxpbmUpIHtcbiAgICByZXR1cm4gbGluZS5fbmV3ID09PSB0cnVlO1xuICB9XG5cbiAgX29uSW5wdXROZXcobmFtZSwgZXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgdGhpcy5fbmV3SXRlbVtuYW1lXSA9IGV2ZW50LmRldGFpbDtcbiAgICBjb25zdCB7IGVycm9ycyB9ID0gcGFyc2VSYXcodG9OYW1lRXF1YWxzVmFsdWVTdHJpbmcoWy4uLnRoaXMucHJvcGVydGllcywgdGhpcy5fbmV3SXRlbV0pKTtcbiAgICB0aGlzLl9lcnJvcnMgPSBlcnJvcnM7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBidG4gPSB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignZ3YtYnV0dG9uI2FkZC1wcm9wZXJ0eScpO1xuICAgICAgaWYgKGVycm9ycy5sZW5ndGggPiAwIHx8IHRoaXMuX2Rpc2FibGVkTmV3TGluZSh0aGlzLl9uZXdJdGVtKSkge1xuICAgICAgICBidG4uc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnRuLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcbiAgICAgIH1cbiAgICAgIGlmIChuYW1lID09PSAna2V5Jykge1xuICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRhcmdldC5yZW1vdmVBdHRyaWJ1dGUoJ2ludmFsaWQnKTtcbiAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKCd2YWxpZCcsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldC5yZW1vdmVBdHRyaWJ1dGUoJ3ZhbGlkJyk7XG4gICAgICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgnaW52YWxpZCcsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgMCk7XG4gIH1cblxuICBfb25JbnB1dCgpIHtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdjaGFuZ2UnLCB7IHByb3BlcnRpZXM6IHRoaXMucHJvcGVydGllcyB9KTtcbiAgfVxuXG4gIF9vblN3aXRjaEVuY3J5cHRlZChpdGVtKSB7XG4gICAgaWYgKGl0ZW0uZW5jcnlwdGVkID09PSB0cnVlKSB7XG4gICAgICBpdGVtLnZhbHVlID0gJyc7XG4gICAgICBpdGVtLmVuY3J5cHRlZCA9IGZhbHNlO1xuICAgICAgaXRlbS5lbmNyeXB0aW9uV2FybmluZyA9IGkxOG4oJ2d2LXByb3BlcnRpZXMuaW5mb3Mub3ZlcndyaXRlLWVuY3J5cHRpb24nKTtcbiAgICAgIHRoaXMucmVxdWVzdFVwZGF0ZSgpO1xuICAgIH1cbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdzd2l0Y2gtZW5jcnlwdGVkJywgeyBwcm9wZXJ0aWVzOiB0aGlzLnByb3BlcnRpZXMgfSk7XG4gIH1cblxuICBfYWRkUHJvcGVydHkoaXRlbSkge1xuICAgIGRlbGV0ZSBpdGVtLl9uZXc7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gW2l0ZW0sIC4uLnRoaXMuX3Byb3BlcnRpZXNdO1xuICAgIHRoaXMuX25ld0l0ZW0gPSB7IGtleTogJycsIHZhbHVlOiAnJywgX25ldzogdHJ1ZSwgZW5jcnlwdGFibGU6IGZhbHNlLCBlbmNyeXB0ZWQ6IGZhbHNlIH07XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnY2hhbmdlJywgeyBwcm9wZXJ0aWVzOiB0aGlzLnByb3BlcnRpZXMgfSk7XG4gIH1cblxuICBfcmVtb3ZlUHJvcGVydHkoaXRlbSkge1xuICAgIHRoaXMuX3Byb3BlcnRpZXMgPSB0aGlzLl9wcm9wZXJ0aWVzLmZpbHRlcigocHJvcGVydHkpID0+IHByb3BlcnR5LmtleSAhPT0gaXRlbS5rZXkpO1xuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2NoYW5nZScsIHsgcHJvcGVydGllczogdGhpcy5wcm9wZXJ0aWVzIH0pO1xuICB9XG5cbiAgX2Rpc2FibGVkTmV3TGluZShpdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0ua2V5ID09IG51bGwgfHwgaXRlbS52YWx1ZSA9PSBudWxsIHx8IGl0ZW0ua2V5LnRyaW0oKSA9PT0gJycgfHwgaXRlbS52YWx1ZS50cmltKCkgPT09ICcnO1xuICB9XG5cbiAgX3N1Ym1pdEV4cGVydE1vZGUoKSB7XG4gICAgaWYgKHRoaXMuZXhwZXJ0KSB7XG4gICAgICB0aGlzLnByb3BlcnRpZXMgPSB0aGlzLl9oYW5kbGVFeHBlcnRNb2RlSW5wdXQodGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJyNleHBlcnQtaW5wdXQnKS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgX29uRXhwZXJ0TW9kZVRleHRJbnB1dCh7IGRldGFpbCB9KSB7XG4gICAgdGhpcy5faGFuZGxlRXhwZXJ0TW9kZUlucHV0KGRldGFpbCk7XG4gIH1cblxuICBfaGFuZGxlRXhwZXJ0TW9kZUlucHV0KGV4cGVydE1vZGVJbnB1dFN0cmluZykge1xuICAgIGxldCBhbGxQcm9wZXJ0aWVzID0gdGhpcy5fcHJvcGVydGllcztcbiAgICBjb25zdCBwcm92aWRlckVuYWJsZWQgPSB0aGlzLnByb3ZpZGVyICYmIHRoaXMucHJvdmlkZXIuZW5hYmxlZDtcbiAgICBjb25zdCBkeW5hbWljUHJvcGVydGllcyA9IGFsbFByb3BlcnRpZXMuZmlsdGVyKChwcm9wKSA9PiBwcm92aWRlckVuYWJsZWQgJiYgcHJvcC5keW5hbWljKTtcbiAgICBjb25zdCBlbmNyeXB0ZWRQcm9wZXJ0aWVzID0gYWxsUHJvcGVydGllcy5maWx0ZXIoKHByb3ApID0+IHByb3AuZW5jcnlwdGVkKTtcblxuICAgIGNvbnN0IGFsbFByb3BlcnRpZXNTdHJpbmcgPSBgJHtleHBlcnRNb2RlSW5wdXRTdHJpbmd9XFxuJHt0b05hbWVFcXVhbHNWYWx1ZVN0cmluZyhkeW5hbWljUHJvcGVydGllcyl9XFxuJHt0b05hbWVFcXVhbHNWYWx1ZVN0cmluZyhcbiAgICAgIGVuY3J5cHRlZFByb3BlcnRpZXMsXG4gICAgKX1gO1xuICAgIGNvbnN0IHsgZXJyb3JzIH0gPSBwYXJzZVJhdyhhbGxQcm9wZXJ0aWVzU3RyaW5nKTtcbiAgICB0aGlzLl9lcnJvcnMgPSBlcnJvcnM7XG4gICAgaWYgKGVycm9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IHsgdmFyaWFibGVzIH0gPSBwYXJzZVJhdyhleHBlcnRNb2RlSW5wdXRTdHJpbmcpO1xuICAgICAgYWxsUHJvcGVydGllcyA9IFsuLi52YXJpYWJsZXMsIC4uLmR5bmFtaWNQcm9wZXJ0aWVzLCAuLi5lbmNyeXB0ZWRQcm9wZXJ0aWVzXTtcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2NoYW5nZScsIHsgcHJvcGVydGllczogYWxsUHJvcGVydGllcyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWxsUHJvcGVydGllcztcbiAgfVxuXG4gIF9vblN1Ym1pdFByb3BlcnR5Rm9ybSh7IGRldGFpbCB9KSB7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBkZXRhaWwudmFsdWVzO1xuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ3NhdmUtcHJvdmlkZXInLCB7IHByb3ZpZGVyIH0pO1xuICAgIHRoaXMucmVxdWVzdFVwZGF0ZSgpO1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIGlmICh0aGlzLmV4cGVydCkge1xuICAgICAgdGhpcy5fc3VibWl0RXhwZXJ0TW9kZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9vblN1Ym1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIF9vblN1Ym1pdCgpIHtcbiAgICBjb25zdCBpbnZhbGlkQ29udHJvbHMgPSBbLi4udGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2Zvcm0gLmNvbnRyb2wnKV0uZmluZCgoY29udHJvbCkgPT4gY29udHJvbC5pbnZhbGlkKTtcbiAgICBpZiAoaW52YWxpZENvbnRyb2xzID09IG51bGwpIHtcbiAgICAgIHRoaXMuX2FkZFByb3BlcnR5KHRoaXMuX25ld0l0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIF9vbkNvbmZpZ3VyZUR5bmFtaWNQcm9wZXJ0aWVzKCkge1xuICAgIGlmICh0aGlzLmR5bmFtaWNQcm9wZXJ0eVNjaGVtYSA9PSBudWxsKSB7XG4gICAgICAvLyBkeW5hbWljUHJvcGVydHlTY2hlbWEgaGFzIGJlZW4gaW50cm9kdWNlZCB0byBlbnN1cmUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCB2ZXJzaW9ucy4gSWYgbm8gc2NoZW1hIGlzIHByb3ZpZGVkIGEgZGVmYXVsdCBzY2hlbWEgd2lsbCBiZSB1c2VkLlxuICAgICAgY29uc3QgcHJvdmlkZXJzVGl0bGVNYXAgPSB0aGlzLnByb3ZpZGVycy5yZWR1Y2UoKG1hcCwgcHJvdmlkZXIpID0+IHtcbiAgICAgICAgbWFwW3Byb3ZpZGVyLmlkXSA9IHByb3ZpZGVyLmtleTtcbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgIH0sIHt9KTtcblxuICAgICAgY29uc3QgcHJvdmlkZXJzRW51bSA9IE9iamVjdC5rZXlzKHByb3ZpZGVyc1RpdGxlTWFwKTtcbiAgICAgIHRoaXMuZHluYW1pY1Byb3BlcnR5U2NoZW1hID0ge1xuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZW5hYmxlZDoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgdGl0bGU6ICdFbmFibGVkJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnIFRoaXMgc2VydmljZSBpcyByZXF1aXJpbmcgYW4gQVBJIGRlcGxveW1lbnQuIERvIG5vdCBmb3JnZXQgdG8gZGVwbG95IEFQSSB0byBzdGFydCBkeW5hbWljLXByb3BlcnRpZXMgc2VydmljZS4nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2NoZWR1bGU6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgdGl0bGU6ICdTY2hlZHVsZScsXG4gICAgICAgICAgICAneC1zY2hlbWEtZm9ybSc6IHtcbiAgICAgICAgICAgICAgJ2Nyb24tZXhwcmVzc2lvbic6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHJvdmlkZXI6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgdGl0bGU6ICdQcm92aWRlciB0eXBlJyxcbiAgICAgICAgICAgIGVudW06IHByb3ZpZGVyc0VudW0sXG4gICAgICAgICAgICBkZWZhdWx0OiBwcm92aWRlcnNFbnVtWzBdLFxuICAgICAgICAgICAgJ3gtc2NoZW1hLWZvcm0nOiB7XG4gICAgICAgICAgICAgIHRpdGxlTWFwOiBwcm92aWRlcnNUaXRsZU1hcCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IFsnc2NoZWR1bGUnLCAncHJvdmlkZXInXSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFByb3ZpZGVyID0gdGhpcy5wcm92aWRlcnNbMF07XG5cbiAgICB0aGlzLl9wcm9wZXJ0eVNjaGVtYUZvcm0gPSB7XG4gICAgICBwcm9wZXJ0aWVzOiB7IC4uLnRoaXMuZHluYW1pY1Byb3BlcnR5U2NoZW1hLnByb3BlcnRpZXMsIGNvbmZpZ3VyYXRpb246IGRlZmF1bHRQcm92aWRlci5zY2hlbWEgfSxcbiAgICAgIHJlcXVpcmVkOiB0aGlzLmR5bmFtaWNQcm9wZXJ0eVNjaGVtYS5yZXF1aXJlZCxcbiAgICB9O1xuICAgIHRoaXMuX3Byb3ZpZGVyRG9jdW1lbnRhdGlvbiA9IGRlZmF1bHRQcm92aWRlci5kb2N1bWVudGF0aW9uO1xuICAgIHRoaXMuX21heGltaXplQm90dG9tVmlldygpO1xuICB9XG5cbiAgX29uQ2xvc2VQcm9wZXJ0eVNjaGVtYUZvcm0oKSB7XG4gICAgdGhpcy5fcHJvcGVydHlTY2hlbWFGb3JtID0gbnVsbDtcbiAgICB0aGlzLl9tYXhpbWl6ZVRvcFZpZXcoKTtcbiAgfVxuXG4gIF9vblNlYXJjaFByb3BlcnR5KHsgZGV0YWlsIH0pIHtcbiAgICB0aGlzLl9maWx0ZXIgPSBkZXRhaWw7XG4gICAgdGhpcy5fb25DbG9zZVByb3BlcnR5U2NoZW1hRm9ybSgpO1xuICB9XG5cbiAgX29uQ2xlYXJQcm9wZXJ0eSgpIHtcbiAgICB0aGlzLl9maWx0ZXIgPSBudWxsO1xuICAgIHRoaXMuX29uQ2xvc2VQcm9wZXJ0eVNjaGVtYUZvcm0oKTtcbiAgfVxuXG4gIGdldCBfZXJyb3JzKCkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWRFcnJvcnM7XG4gIH1cblxuICBzZXQgX2Vycm9ycyhyYXdFcnJvcnMpIHtcbiAgICB0aGlzLl9mb3JtYXR0ZWRFcnJvcnMgPSByYXdFcnJvcnMubWFwKCh7IHR5cGUsIGtleSwgcG9zIH0pID0+IHtcbiAgICAgIGlmICh0eXBlID09PSBFUlJPUl9UWVBFUy5JTlZBTElEX05BTUUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lOiBwb3MubGluZSxcbiAgICAgICAgICBtc2c6IGkxOG4oJ2d2LXByb3BlcnRpZXMuZXJyb3JzLmludmFsaWQta2V5JywgeyBrZXkgfSksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gRVJST1JfVFlQRVMuRFVQTElDQVRFRF9OQU1FKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGluZTogcG9zLmxpbmUsXG4gICAgICAgICAgbXNnOiBpMThuKCdndi1wcm9wZXJ0aWVzLmVycm9ycy5kdXBsaWNhdGVkLWtleScsIHsga2V5IH0pLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09IEVSUk9SX1RZUEVTLklOVkFMSURfTElORSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmU6IHBvcy5saW5lLFxuICAgICAgICAgIG1zZzogaTE4bignZ3YtcHJvcGVydGllcy5lcnJvcnMuaW52YWxpZC1saW5lJyksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gRVJST1JfVFlQRVMuSU5WQUxJRF9WQUxVRSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmU6IHBvcy5saW5lLFxuICAgICAgICAgIG1zZzogaTE4bignZ3YtcHJvcGVydGllcy5lcnJvcnMuaW52YWxpZC12YWx1ZScpLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgbGluZTogJz8nLCBtc2c6IGkxOG4oJ2d2LXByb3BlcnRpZXMuZXJyb3JzLnVua25vd24nKSB9O1xuICAgIH0pO1xuICB9XG5cbiAgX3JlbmRlckVycm9ycyh3aXRoTGluZSA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuX2Zvcm1hdHRlZEVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwiJHtjbGFzc01hcCh7ICdhZGQtZm9ybS1lcnJvcic6IHRydWUsICdhZGQtZm9ybS1lcnJvcl9leHBlcnQnOiB0aGlzLmV4cGVydCB9KX1cIj5cbiAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yLWxpc3RcIj5cbiAgICAgICAgICAke3RoaXMuX2Zvcm1hdHRlZEVycm9ycy5tYXAoXG4gICAgICAgICAgICAoeyBsaW5lLCBtc2cgfSkgPT4gaHRtbGBcbiAgICAgICAgICAgICAgPGd2LWlucHV0LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICA+JHt3aXRoTGluZSA/IGh0bWxgPHN0cm9uZyAuaW5uZXJIVE1MPVwiJHtpMThuKCdndi1wcm9wZXJ0aWVzLmVycm9ycy5saW5lJyl9ICR7bGluZX06Jm5ic3A7XCI+PC9zdHJvbmc+YCA6ICcnfVxuICAgICAgICAgICAgICAgIDxzcGFuIC5pbm5lckhUTUw9XCIke21zZ31cIj48L3NwYW5cbiAgICAgICAgICAgICAgPjwvZ3YtaW5wdXQtbWVzc2FnZT5cbiAgICAgICAgICAgIGAsXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5gO1xuICAgIH1cbiAgICByZXR1cm4gaHRtbGBgO1xuICB9XG5cbiAgX3JlbmRlclRhYmxlKCkge1xuICAgIGNvbnN0IHByb3ZpZGVyRW5hYmxlZCA9IHRoaXMucHJvdmlkZXIgJiYgdGhpcy5wcm92aWRlci5lbmFibGVkO1xuICAgIGlmICh0aGlzLmV4cGVydCkge1xuICAgICAgdGhpcy5fY29tcHV0ZVRleHRSb3dzKCk7XG5cbiAgICAgIGNvbnN0IHN0YXRpY1Byb3BlcnRpZXMgPSBwcm92aWRlckVuYWJsZWQgPyB0aGlzLl9wcm9wZXJ0aWVzLmZpbHRlcigocHJvcCkgPT4gIShwcm92aWRlckVuYWJsZWQgJiYgcHJvcC5keW5hbWljKSkgOiB0aGlzLl9wcm9wZXJ0aWVzO1xuICAgICAgY29uc3QgZXhwZXJ0UHJvcGVydGllcyA9IHN0YXRpY1Byb3BlcnRpZXMuZmlsdGVyKChwcm9wKSA9PiAhcHJvcC5lbmNyeXB0ZWQpO1xuICAgICAgY29uc3QgY29udGVudCA9IGV4cGVydFByb3BlcnRpZXMubWFwKChwcm9wKSA9PiBgJHtwcm9wLmtleX09XCIke3Byb3AudmFsdWV9XCJgKS5qb2luKCdcXG4nKTtcblxuICAgICAgcmV0dXJuIGh0bWxgPGd2LXRleHRcbiAgICAgICAgICBpZD1cImV4cGVydC1pbnB1dFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCIke2kxOG4oJ2d2LXByb3BlcnRpZXMucGxhY2Vob2xkZXIuaW5wdXQnKX1cIlxuICAgICAgICAgIEBndi10ZXh0OmlucHV0PVwiJHt0aGlzLl9vbkV4cGVydE1vZGVUZXh0SW5wdXR9XCJcbiAgICAgICAgICAudmFsdWU9XCIke2NvbnRlbnR9XCJcbiAgICAgICAgICA/cmVhZG9ubHk9XCIke3RoaXMucmVhZG9ubHl9XCJcbiAgICAgICAgICAucm93cz1cIiR7dGhpcy5fdGV4dFJvd3N9XCJcbiAgICAgICAgPjwvZ3YtdGV4dD5cbiAgICAgICAgJHt0aGlzLl9yZW5kZXJFcnJvcnModHJ1ZSl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgZGF0YTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpZWxkOiAnZHluYW1pYycsXG4gICAgICAgICAgICBsYWJlbDogJ0R5bmFtaWMnLFxuICAgICAgICAgICAgd2lkdGg6ICc0MHB4JyxcbiAgICAgICAgICAgIHR5cGU6IChpdGVtKSA9PiAoaXRlbS5keW5hbWljICYmIHByb3ZpZGVyRW5hYmxlZCA/ICdndi1pY29uJyA6ICdkaXYnKSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgc2hhcGU6IChpdGVtKSA9PiAoaXRlbS5keW5hbWljICYmIHByb3ZpZGVyRW5hYmxlZCA/ICdjb2RlOnRpbWUtc2NoZWR1bGUnIDogJycpLFxuICAgICAgICAgICAgICB0aXRsZTogKGl0ZW0pID0+IChpdGVtLmR5bmFtaWMgJiYgcHJvdmlkZXJFbmFibGVkID8gJ0R5bmFtaWMgcHJvcGVydGllcyBzZXJ2aWNlIGlzIGFjdHVhbGx5IGluIHJ1bm5pbmcnIDogJycpLFxuICAgICAgICAgICAgICBzdHlsZTogJ2p1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyOyBoZWlnaHQ6IDEwMCU7JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZDogJ2tleScsXG4gICAgICAgICAgICBsYWJlbDogJ0tleScsXG4gICAgICAgICAgICB0eXBlOiAnZ3YtaW5wdXQnLFxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICBjbGlwYm9hcmQ6IHRydWUsXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBpMThuKCdndi1wcm9wZXJ0aWVzLnBsYWNlaG9sZGVyLmtleScpLFxuICAgICAgICAgICAgICBuYW1lOiAna2V5JyxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgIHJlYWRvbmx5OiB0aGlzLnJlYWRvbmx5LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpZWxkOiAndmFsdWUnLFxuICAgICAgICAgICAgbGFiZWw6ICdWYWx1ZScsXG4gICAgICAgICAgICB0eXBlOiAnZ3YtaW5wdXQnLFxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICBuYW1lOiAndmFsdWUnLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1Byb3BlcnR5IHZhbHVlJyxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgIHJlYWRvbmx5OiB0aGlzLnJlYWRvbmx5LFxuICAgICAgICAgICAgICBkaXNhYmxlZDogKGl0ZW0pID0+IChpdGVtLmR5bmFtaWMgJiYgcHJvdmlkZXJFbmFibGVkKSB8fCBpdGVtLmVuY3J5cHRlZCxcbiAgICAgICAgICAgICAgdHlwZTogKGl0ZW0pID0+IChpdGVtLmVuY3J5cHRlZCA/ICdwYXNzd29yZCcgOiAndGV4dCcpLFxuICAgICAgICAgICAgICB0aXRsZTogKGl0ZW0pID0+IChpdGVtLmVuY3J5cHRlZCA/IGkxOG4oJ2d2LXByb3BlcnRpZXMuaW5mb3MuZW5jcnlwdGVkLXZhbHVlJykgOiAnJyksXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAoaXRlbSkgPT4gaXRlbS5lbmNyeXB0aW9uV2FybmluZyxcbiAgICAgICAgICAgICAgaWNvbjogbnVsbCxcbiAgICAgICAgICAgICAgJ29uZ3YtaW5wdXQ6aW5wdXQnOiB0aGlzLl9vbklucHV0LmJpbmQodGhpcyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5lbmNyeXB0YWJsZSA9PT0gdHJ1ZSkge1xuICAgICAgICBvcHRpb25zLmRhdGEucHVzaCh7XG4gICAgICAgICAgZmllbGQ6ICdlbmNyeXB0YWJsZScsXG4gICAgICAgICAgdHlwZTogJ2d2LXN3aXRjaCcsXG4gICAgICAgICAgc3R5bGU6ICctLWd2LXN3aXRjaC0tdGE6IHJpZ2h0OycsXG4gICAgICAgICAgd2lkdGg6ICcxMDVweCcsXG4gICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IGkxOG4oJ2d2LXByb3BlcnRpZXMuZW5jcnlwdGVkLXRvZ2dsZScpLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICByZWFkb25seTogdGhpcy5yZWFkb25seSxcbiAgICAgICAgICAgIGRpc2FibGVkOiAoaXRlbSkgPT4gaXRlbS5keW5hbWljICYmIHByb3ZpZGVyRW5hYmxlZCxcbiAgICAgICAgICAgICdvbmd2LXN3aXRjaDppbnB1dCc6IHRoaXMuX29uU3dpdGNoRW5jcnlwdGVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICBzdHlsZTogJ2Rpc3BsYXk6IGlubGluZS1mbGV4OyBmb250LXNpemU6IDEycHg7IGhlaWdodDogNDBweDsnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5yZWFkb25seSAhPT0gdHJ1ZSkge1xuICAgICAgICBvcHRpb25zLmRhdGEucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ2d2LWJ1dHRvbicsXG4gICAgICAgICAgd2lkdGg6ICc0MHB4JyxcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAnb25ndi1idXR0b246Y2xpY2snOiAoaXRlbSwgZXZlbnQsIHRhcmdldCkgPT4gdGhpcy5fcmVtb3ZlUHJvcGVydHkoaXRlbSwgdGFyZ2V0KSxcbiAgICAgICAgICAgIHRpdGxlOiAnUmVtb3ZlJyxcbiAgICAgICAgICAgIGRpc2FibGVkOiAoaXRlbSkgPT4gaXRlbS5keW5hbWljICYmIHByb3ZpZGVyRW5hYmxlZCxcbiAgICAgICAgICAgIGRhbmdlcjogdHJ1ZSxcbiAgICAgICAgICAgIG91dGxpbmVkOiB0cnVlLFxuICAgICAgICAgICAgaWNvbjogJ2hvbWU6dHJhc2gnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWx0ZXJlZFByb3BlcnRpZXMgPVxuICAgICAgICB0aGlzLl9maWx0ZXIgIT0gbnVsbFxuICAgICAgICAgID8gdGhpcy5fcHJvcGVydGllcy5maWx0ZXIoKHByb3ApID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIChwcm9wLmtleS50b0xvd2VyQ2FzZSgpICsgcHJvcC52YWx1ZS50b0xvd2VyQ2FzZSgpKS5pbmNsdWRlcyh0aGlzLl9maWx0ZXIpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICA6IHRoaXMuX3Byb3BlcnRpZXM7XG4gICAgICBsZXQgcHJvcGVydGllcyA9IFsuLi5maWx0ZXJlZFByb3BlcnRpZXNdO1xuICAgICAgaWYgKHRoaXMuX3BhZ2luYXRpb25EYXRhKSB7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRpb25EYXRhLmxhc3QgPSBNYXRoLmNlaWwoZmlsdGVyZWRQcm9wZXJ0aWVzLmxlbmd0aCAvIHRoaXMuX3BhZ2VTaXplKTtcbiAgICAgICAgdGhpcy5fcGFnaW5hdGlvbkRhdGEudG90YWwgPSBmaWx0ZXJlZFByb3BlcnRpZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uRGF0YS50b3RhbF9wYWdlcyA9IE1hdGguY2VpbChmaWx0ZXJlZFByb3BlcnRpZXMubGVuZ3RoIC8gdGhpcy5fcGFnZVNpemUpO1xuICAgICAgICBjb25zdCBpbmRleCA9ICh0aGlzLl9wYWdpbmF0aW9uRGF0YS5jdXJyZW50X3BhZ2UgLSAxKSAqIHRoaXMuX3BhZ2VTaXplO1xuICAgICAgICBwcm9wZXJ0aWVzID0gWy4uLmZpbHRlcmVkUHJvcGVydGllc10uc3BsaWNlKGluZGV4LCB0aGlzLl9wYWdlU2l6ZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFkZFByb3BlcnR5Rm9ybUdyaWRDbGFzcyA9IHRoaXMuZW5jcnlwdGFibGUgPyAnYWRkLWZvcm0tZ3JpZC13aXRoLWVuY3J5cHRlZC10b2dnbGUnIDogJ2FkZC1mb3JtLWdyaWQnO1xuXG4gICAgICBjb25zdCBhZGRQcm9wZXJ0eUZvcm0gPVxuICAgICAgICB0aGlzLnJlYWRvbmx5ICE9PSB0cnVlXG4gICAgICAgICAgPyBodG1sYDxmb3JtIGlkPVwiYWRkLXByb3BlcnR5LWZvcm1cIiBjbGFzcz1cImFkZC1mb3JtICR7YWRkUHJvcGVydHlGb3JtR3JpZENsYXNzfVwiIEBzdWJtaXQ9XCIke3RoaXMuX29uU3VibWl0fVwiPlxuICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGd2LWlucHV0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIke2kxOG4oJ2d2LXByb3BlcnRpZXMucGxhY2Vob2xkZXIua2V5Jyl9XCJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICBAZ3YtaW5wdXQ6aW5wdXQ9XCIke3RoaXMuX29uSW5wdXROZXcuYmluZCh0aGlzLCAna2V5Jyl9XCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJHt0aGlzLl9uZXdJdGVtLmtleX1cIlxuICAgICAgICAgICAgICAgID48L2d2LWlucHV0PlxuICAgICAgICAgICAgICAgIDxndi1pbnB1dFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiJHtpMThuKCdndi1wcm9wZXJ0aWVzLnBsYWNlaG9sZGVyLnZhbHVlJyl9XCJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICBAZ3YtaW5wdXQ6aW5wdXQ9XCIke3RoaXMuX29uSW5wdXROZXcuYmluZCh0aGlzLCAndmFsdWUnKX1cIlxuICAgICAgICAgICAgICAgICAgLnZhbHVlPVwiJHt0aGlzLl9uZXdJdGVtLnZhbHVlfVwiXG4gICAgICAgICAgICAgICAgPjwvZ3YtaW5wdXQ+XG4gICAgICAgICAgICAgICAgJHt0aGlzLmVuY3J5cHRhYmxlXG4gICAgICAgICAgICAgICAgICA/IGh0bWxgIDxndi1zd2l0Y2hcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249XCIke2kxOG4oJ2d2LXByb3BlcnRpZXMuZW5jcnlwdGVkLXRvZ2dsZScpfVwiXG4gICAgICAgICAgICAgICAgICAgICAgQGd2LXN3aXRjaDppbnB1dD1cIiR7dGhpcy5fb25JbnB1dE5ldy5iaW5kKHRoaXMsICdlbmNyeXB0YWJsZScpfVwiXG4gICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPVwiJHt0aGlzLl9uZXdJdGVtLmVuY3J5cHRhYmxlfVwiXG4gICAgICAgICAgICAgICAgICAgID48L2d2LXN3aXRjaD5gXG4gICAgICAgICAgICAgICAgICA6ICcnfVxuICAgICAgICAgICAgICAgIDxndi1idXR0b25cbiAgICAgICAgICAgICAgICAgIGlkPVwiYWRkLXByb3BlcnR5XCJcbiAgICAgICAgICAgICAgICAgIGljb249XCJjb2RlOnBsdXNcIlxuICAgICAgICAgICAgICAgICAgb3V0bGluZWRcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkXG4gICAgICAgICAgICAgICAgICBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9hZGRQcm9wZXJ0eS5iaW5kKHRoaXMsIHRoaXMuX25ld0l0ZW0pfVwiXG4gICAgICAgICAgICAgICAgICB0aXRsZT1cIiR7aTE4bignZ3YtcHJvcGVydGllcy5hZGQnKX1cIlxuICAgICAgICAgICAgICAgID48L2d2LWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAke3RoaXMuX3JlbmRlckVycm9ycygpfVxuICAgICAgICAgICAgICA8aHIgLz5gXG4gICAgICAgICAgOiAnJztcblxuICAgICAgcmV0dXJuIGh0bWxgICR7YWRkUHJvcGVydHlGb3JtfVxuICAgICAgICA8Z3YtdGFibGUgLm9wdGlvbnM9XCIke29wdGlvbnN9XCIgLml0ZW1zPVwiJHtwcm9wZXJ0aWVzfVwiIG5vaGVhZGVyIG5vc29ydCBvcmRlcj1cImtleVwiIHJvd2hlaWdodD1cIjU3cHhcIj48L2d2LXRhYmxlPmA7XG4gICAgfVxuICB9XG5cbiAgX29uQ2hhbmdlTW9kZSh7IGRldGFpbCB9KSB7XG4gICAgdGhpcy5fc3VibWl0RXhwZXJ0TW9kZSgpO1xuICAgIHRoaXMuZXhwZXJ0ID0gZGV0YWlsO1xuICAgIHRoaXMuX2Vycm9ycyA9IFtdO1xuICAgIHRoaXMuX25ld0l0ZW0gPSB7IGtleTogJycsIHZhbHVlOiAnJywgX25ldzogdHJ1ZSB9O1xuICAgIHRoaXMuX29uQ2xvc2VQcm9wZXJ0eVNjaGVtYUZvcm0oKTtcbiAgfVxuXG4gIF9vblBhZ2luYXRlKHsgZGV0YWlsIH0pIHtcbiAgICB0aGlzLl9wYWdpbmF0aW9uRGF0YS5jdXJyZW50X3BhZ2UgPSBkZXRhaWwucGFnZTtcbiAgICB0aGlzLl9vbkNsb3NlUHJvcGVydHlTY2hlbWFGb3JtKCk7XG4gICAgdGhpcy5yZXF1ZXN0VXBkYXRlKCk7XG4gIH1cblxuICB1cGRhdGVkKHByb3BzKSB7XG4gICAgaWYgKHByb3BzLmhhcygnX3Byb3BlcnRpZXMnKSB8fCBwcm9wcy5oYXMoJ19wYWdlU2l6ZScpKSB7XG4gICAgICB0aGlzLl9wYWdpbmF0aW9uRGF0YSA9IHtcbiAgICAgICAgZmlyc3Q6IDEsXG4gICAgICAgIGxhc3Q6IE1hdGguY2VpbCh0aGlzLl9wcm9wZXJ0aWVzLmxlbmd0aCAvIHRoaXMuX3BhZ2VTaXplKSxcbiAgICAgICAgdG90YWw6IHRoaXMuX3Byb3BlcnRpZXMubGVuZ3RoLFxuICAgICAgICBjdXJyZW50X3BhZ2U6IDEsXG4gICAgICAgIHRvdGFsX3BhZ2VzOiBNYXRoLmNlaWwodGhpcy5fcHJvcGVydGllcy5sZW5ndGggLyB0aGlzLl9wYWdlU2l6ZSksXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIF9vbkNoYW5nZVBhZ2VTaXplKHsgZGV0YWlsIH0pIHtcbiAgICB0aGlzLl9wYWdlU2l6ZSA9IE51bWJlcihkZXRhaWwpLnZhbHVlT2YoKTtcbiAgICB0aGlzLl9vbkNsb3NlUHJvcGVydHlTY2hlbWFGb3JtKCk7XG4gIH1cblxuICBfcmVuZGVyVGFibGVGb3JtKCkge1xuICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+TWFuYWdlIGdsb2JhbCBwcm9wZXJ0aWVzIDxzcGFuPigke3RoaXMuX3Byb3BlcnRpZXMgPyB0aGlzLl9wcm9wZXJ0aWVzLmxlbmd0aCA6IDB9KTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgPGd2LXN3aXRjaFxuICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgLmRlc2NyaXB0aW9uPVwiJHt0aGlzLmV4cGVydCA/ICdFeHBlcnQnIDogJ1NpbXBsZSd9XCJcbiAgICAgICAgICAudmFsdWU9XCIke3RoaXMuZXhwZXJ0fVwiXG4gICAgICAgICAgQGd2LXN3aXRjaDppbnB1dD1cIiR7dGhpcy5fb25DaGFuZ2VNb2RlfVwiXG4gICAgICAgID48L2d2LXN3aXRjaD5cbiAgICAgICAgPGd2LWlucHV0XG4gICAgICAgICAgaWQ9XCJzZWFyY2gtcHJvcGVydHlcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIHByb3BlcnRpZXMgKFNoaWZ0ICsgQ3RybCArIFNwYWNlKVwiXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgc21hbGxcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgLmRpc2FibGVkPVwiJHt0aGlzLmV4cGVydH1cIlxuICAgICAgICAgIEBndi1pbnB1dDppbnB1dD1cIiR7dGhpcy5fb25TZWFyY2hQcm9wZXJ0eX1cIlxuICAgICAgICAgIEBndi1pbnB1dDpjbGVhcj1cIiR7dGhpcy5fb25DbGVhclByb3BlcnR5fVwiXG4gICAgICAgID48L2d2LWlucHV0PlxuICAgICAgICA8Z3Ytc2VsZWN0XG4gICAgICAgICAgY2xhc3M9XCJwYWdlLXNpemVfX3NlbGVjdFwiXG4gICAgICAgICAgQGd2LXNlbGVjdDppbnB1dD1cIiR7dGhpcy5fb25DaGFuZ2VQYWdlU2l6ZX1cIlxuICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgLm9wdGlvbnM9XCIke3RoaXMuX3BhZ2VTaXplc31cIlxuICAgICAgICAgIC52YWx1ZT1cIiR7dGhpcy5fcGFnZVNpemV9XCJcbiAgICAgICAgICAuZGlzYWJsZWQ9XCIke3RoaXMuZXhwZXJ0IHx8IHRoaXMuX3BhZ2luYXRpb25EYXRhID09IG51bGx9XCJcbiAgICAgICAgPjwvZ3Ytc2VsZWN0PlxuICAgICAgICA8Z3YtcGFnaW5hdGlvblxuICAgICAgICAgIEBndi1wYWdpbmF0aW9uOnBhZ2luYXRlPVwiJHt0aGlzLl9vblBhZ2luYXRlfVwiXG4gICAgICAgICAgLmRpc2FibGVkPVwiJHt0aGlzLmV4cGVydCB8fCB0aGlzLl9wYWdpbmF0aW9uRGF0YSA9PSBudWxsfVwiXG4gICAgICAgICAgLmRhdGE9XCIke3RoaXMuX3BhZ2luYXRpb25EYXRhfVwiXG4gICAgICAgICAgd2lkZ2V0XG4gICAgICAgID48L2d2LXBhZ2luYXRpb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+PGRpdiBjbGFzcz1cImZvcm0tY29udGVudFwiPiR7dGhpcy5fcmVuZGVyVGFibGUoKX08L2Rpdj48L2Rpdj5cbiAgICA8L2Rpdj5gO1xuICB9XG5cbiAgX2ZldGNoRG9jdW1lbnRhdGlvbigpIHtcbiAgICB0aGlzLl9zaG93RG9jdW1lbnRhdGlvbiA9IHRydWU7XG4gIH1cblxuICBfaGlkZURvY3VtZW50YXRpb24oKSB7XG4gICAgdGhpcy5fc2hvd0RvY3VtZW50YXRpb24gPSBmYWxzZTtcbiAgfVxuXG4gIGdldCBkaXJ0eSgpIHtcbiAgICBjb25zdCBmb3JtID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2d2LXNjaGVtYS1mb3JtJyk7XG4gICAgcmV0dXJuIGZvcm0gJiYgZm9ybS5kaXJ0eTtcbiAgfVxuXG4gIGNvbmZpcm0oKSB7XG4gICAgY29uc3QgZm9ybSA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdndi1zY2hlbWEtZm9ybScpO1xuICAgIGlmIChmb3JtKSB7XG4gICAgICByZXR1cm4gZm9ybS5jb25maXJtKCkudGhlbigoKSA9PiB0aGlzLl9vbkNsb3NlUHJvcGVydHlTY2hlbWFGb3JtKCkpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICBfcmVuZGVyRm9ybSgpIHtcbiAgICByZXR1cm4gaHRtbGA8Z3Ytc2NoZW1hLWZvcm1cbiAgICAgIHNsb3Q9XCJ0b3BcIlxuICAgICAgc2Nyb2xsYWJsZVxuICAgICAgLnNjaGVtYT1cIiR7dGhpcy5fcHJvcGVydHlTY2hlbWFGb3JtfVwiXG4gICAgICAudmFsdWVzPVwiJHt0aGlzLnByb3ZpZGVyfVwiXG4gICAgICAuaWNvbj1cImRlc2lnbjplZGl0XCJcbiAgICAgIGhhcy1oZWFkZXJcbiAgICAgID9yZWFkb25seT1cIiR7dGhpcy5yZWFkb25seX1cIlxuICAgICAgQGd2LXNjaGVtYS1mb3JtOnN1Ym1pdD1cIiR7dGhpcy5fb25TdWJtaXRQcm9wZXJ0eUZvcm19XCJcbiAgICA+XG4gICAgICA8ZGl2IHNsb3Q9XCJ0aXRsZVwiIGNsYXNzPVwicHJvcGVydGllcy10aXRsZVwiPkNvbmZpZ3VyZSBkeW5hbWljIHByb3BlcnRpZXM8L2Rpdj5cbiAgICAgIDxndi1idXR0b25cbiAgICAgICAgc2xvdD1cImhlYWRlci1sZWZ0XCJcbiAgICAgICAgaWNvbj1cImdlbmVyYWw6Y2xvc2VcIlxuICAgICAgICBvdXRsaW5lZFxuICAgICAgICBzbWFsbFxuICAgICAgICBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vbkNsb3NlUHJvcGVydHlTY2hlbWFGb3JtfVwiXG4gICAgICAgIHRpdGxlPVwiQ2xvc2UgKGVzYylcIlxuICAgICAgPjwvZ3YtYnV0dG9uPlxuICAgICAgPGd2LWJ1dHRvblxuICAgICAgICBzbG90PVwiaGVhZGVyLWxlZnRcIlxuICAgICAgICBpY29uPVwiaG9tZTpib29rXCJcbiAgICAgICAgP2Rpc2FibGVkPVwiJHt0aGlzLl9zaG93RG9jdW1lbnRhdGlvbn1cIlxuICAgICAgICBvdXRsaW5lZFxuICAgICAgICBzbWFsbFxuICAgICAgICBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9mZXRjaERvY3VtZW50YXRpb259XCJcbiAgICAgICAgdGl0bGU9XCJPcGVuIGRvY3VtZW50YXRpb25cIlxuICAgICAgPjwvZ3YtYnV0dG9uPlxuICAgIDwvZ3Ytc2NoZW1hLWZvcm0+YDtcbiAgfVxuXG4gIF9yZW5kZXJCb3R0b20oKSB7XG4gICAgaWYgKHRoaXMuX3Byb3BlcnR5U2NoZW1hRm9ybSAmJiB0aGlzLl9zaG93RG9jdW1lbnRhdGlvbikge1xuICAgICAgcmV0dXJuIGh0bWxgPGd2LXJlc2l6YWJsZS12aWV3cyBuby1vdmVyZmxvdyBkaXJlY3Rpb249XCJob3Jpem9udGFsXCI+XG4gICAgICAgICR7dGhpcy5fcmVuZGVyRm9ybSgpfVxuICAgICAgICA8Z3YtZG9jdW1lbnRhdGlvblxuICAgICAgICAgIHNsb3Q9XCJib3R0b21cIlxuICAgICAgICAgIC50ZXh0PVwiJHt0aGlzLl9wcm92aWRlckRvY3VtZW50YXRpb259XCJcbiAgICAgICAgICBAZ3YtZG9jdW1lbnRhdGlvbjpjbG9zZT1cIiR7dGhpcy5faGlkZURvY3VtZW50YXRpb259XCJcbiAgICAgICAgPjwvZ3YtZG9jdW1lbnRhdGlvbj5cbiAgICAgIDwvZ3YtcmVzaXphYmxlLXZpZXdzPmA7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9wcm9wZXJ0eVNjaGVtYUZvcm0pIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJGb3JtKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCJwcm9wZXJ0aWVzLWJvdHRvbS1jb250YWluZXJcIj4ke3RoaXMuX3JlbmRlckR5bmFtaWNDb25maWd1cmF0aW9uKCl9PC9kaXY+YDtcbiAgICB9XG4gIH1cblxuICBfcmVuZGVyRHluYW1pY0NvbmZpZ3VyYXRpb24oKSB7XG4gICAgY29uc3QgaGFzRHluYW1pY0NvbmZpZ3VyYXRpb24gPSB0aGlzLnByb3ZpZGVyICYmIHRoaXMucHJvdmlkZXIuZW5hYmxlZDtcblxuICAgIGxldCBjb25maWd1cmVBY3Rpb24gPSAnJztcbiAgICBpZiAoaGFzRHluYW1pY0NvbmZpZ3VyYXRpb24gfHwgdGhpcy5yZWFkb25seSAhPT0gdHJ1ZSkge1xuICAgICAgY29uZmlndXJlQWN0aW9uID0gaHRtbGA8Z3YtYnV0dG9uXG4gICAgICAgIGljb249XCJ0b29sczp0b29sc1wiXG4gICAgICAgIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uQ29uZmlndXJlRHluYW1pY1Byb3BlcnRpZXN9XCJcbiAgICAgICAgb3V0bGluZWRcbiAgICAgICAgLmRpc2FibGVkPVwiJHt0aGlzLmV4cGVydH1cIlxuICAgICAgICA+Q29uZmlndXJlIGR5bmFtaWMgcHJvcGVydGllczwvZ3YtYnV0dG9uXG4gICAgICA+YDtcbiAgICB9XG5cbiAgICBpZiAoaGFzRHluYW1pY0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCJwcm9wZXJ0aWVzLW1lc3NhZ2VcIj5cbiAgICAgICAgICBEeW5hbWljIHByb3BlcnRpZXMgc2VydmljZSBpcyBhY3R1YWxseSBpbiA8Y29kZT5ydW5uaW5nPC9jb2RlPiBzdGF0ZSBhbmQgcnVuIHdpdGggY3JvbiBleHByZXNzaW9uXG4gICAgICAgICAgPGNvZGU+JHt0aGlzLnByb3ZpZGVyLnNjaGVkdWxlfTwvY29kZT4gdXNpbmcgPGNvZGU+JHt0aGlzLnByb3ZpZGVyLnByb3ZpZGVyfTwvY29kZT4gcHJvdmlkZXIuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICAke2NvbmZpZ3VyZUFjdGlvbn1gO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cImVtcHR5XCI+Tm8gZHluYW1pYyBwcm9wZXJ0aWVzIHNlcnZpY2UgY29uZmlndXJlZDwvZGl2PmA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjb25maWd1cmVBY3Rpb247XG4gICAgfVxuICB9XG5cbiAgX29uTW92ZSgpIHtcbiAgICB0aGlzLl9jb21wdXRlVGV4dFJvd3MoKTtcbiAgfVxuXG4gIF9jb21wdXRlVGV4dFJvd3MoKSB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy5jb250ZW50Jyk7XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgY29uc3QgeyBoZWlnaHQgfSA9IHBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIC8vIC0tZ3YtdGV4dC0tbGg9MzBweFxuICAgICAgdGhpcy5fdGV4dFJvd3MgPSBNYXRoLnJvdW5kKE1hdGgucm91bmQoaGVpZ2h0IC0gMjApIC8gMzApIC0gMjtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMucHJvdmlkZXJzICYmIHRoaXMucHJvdmlkZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCJwcm9wZXJ0aWVzXCI+XG4gICAgICAgIDxndi1yZXNpemFibGUtdmlld3Mgbm8tb3ZlcmZsb3cgQGd2LXJlc2l6YWJsZS12aWV3czptb3ZlPVwiJHt0aGlzLl9vbk1vdmV9XCIgQGd2LXJlc2l6YWJsZS12aWV3czpyZXNpemU9XCIke3RoaXMuX29uTW92ZX1cIj5cbiAgICAgICAgICA8ZGl2IHNsb3Q9XCJ0b3BcIiBjbGFzcz1cImJveFwiPiR7dGhpcy5fcmVuZGVyVGFibGVGb3JtKCl9PC9kaXY+XG4gICAgICAgICAgPGRpdiBzbG90PVwiYm90dG9tXCI+JHt0aGlzLl9yZW5kZXJCb3R0b20oKX08L2Rpdj5cbiAgICAgICAgPC9ndi1yZXNpemFibGUtdmlld3M+XG4gICAgICA8L2Rpdj5gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwicHJvcGVydGllc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYm94XCI+JHt0aGlzLl9yZW5kZXJUYWJsZUZvcm0oKX08L2Rpdj5cbiAgICAgIDwvZGl2PmA7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGVtcHR5LFxuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9wZXJ0aWVzIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LXJlc2l6YWJsZS12aWV3cyB7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3Ytc2NoZW1hLWZvcm0ge1xuICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50YWJsZS1ib3gge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2JmYmZiZjtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgZ3YtdGFibGUge1xuICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1MHB4O1xuICAgICAgICAgIC0tZ3YtdGFibGUtcm93cy0tb3Y6IG5vbmU7XG4gICAgICAgICAgLS1ndi10YWJsZS0tY29sbWc6IHZhcigtLWd2LXByb3BlcnRpZXMtdGFibGUtLWNvbG1nLCAwLjJyZW0pO1xuICAgICAgICAgIC0tZ3YtdGFibGUtY2VsbC0tZDogaW5saW5lO1xuICAgICAgICAgIC0tZ3YtdGFibGUtcm93LS1haTogZmxleC1zdGFydDtcbiAgICAgICAgICAtLWd2LXRhYmxlLXJvdy0tYWM6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgLS1ndi10YWJsZS1ob3Zlci0tYmdjOiB2YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLWxpZ2h0ZXN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9wZXJ0aWVzLXRpdGxlIHtcbiAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjJyZW07XG4gICAgICAgIH1cblxuICAgICAgICAucHJvcGVydGllcy1ib3R0b20tY29udGFpbmVyIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyIHtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDQ1cHg7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gICAgICAgICAgcGFkZGluZzogMCAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyIC50aXRsZSB7XG4gICAgICAgICAgY29sb3I6ICMyODQ0NGY7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyIC50aXRsZSBzcGFuIHtcbiAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICAgIH1cblxuICAgICAgICAuYm94IHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb250YWluZXIge1xuICAgICAgICAgIGZsZXgtZ3JvdzogMTtcblxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAgIC8qIGZvciBGaXJlZm94ICovXG4gICAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGVudCB7XG4gICAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgICAgZmxleC1ncm93OiAxO1xuXG4gICAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG5cbiAgICAgICAgICAvKiBmb3IgRmlyZWZveCAqL1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgICAgcGFkZGluZzogMC41cmVtO1xuXG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBndi10ZXh0IHtcbiAgICAgICAgICAtLWd2LXRleHQtLWZ6OiAyMHB4O1xuICAgICAgICAgIC0tZ3YtdGV4dC0tbGg6IDI1cHg7XG4gICAgICAgIH1cblxuICAgICAgICBndi1zd2l0Y2gge1xuICAgICAgICAgIC0tZ3Ytc3dpdGNoLS10YTogcmlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyIGd2LWlucHV0IHtcbiAgICAgICAgICBtYXJnaW46IDAgMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hZGQtZm9ybSxcbiAgICAgICAgLmFkZC1mb3JtLWVycm9yIHtcbiAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgIG1hcmdpbjogYXV0byA1MHB4IGF1dG8gMDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB9XG5cbiAgICAgICAgLmFkZC1mb3JtIHtcbiAgICAgICAgICBjb2x1bW4tZ2FwOiB2YXIoLS1ndi1wcm9wZXJ0aWVzLXRhYmxlLS1jb2xtZywgMC4ycmVtKTtcbiAgICAgICAgICBib3JkZXItcmlnaHQ6IHNvbGlkIHRoaWNrIHRyYW5zcGFyZW50O1xuICAgICAgICAgIGhlaWdodDogNTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hZGQtZm9ybSBndi1pbnB1dCxcbiAgICAgICAgZ3YtYnV0dG9uLFxuICAgICAgICBndi1zd2l0Y2gge1xuICAgICAgICAgIG1hcmdpbjogYXV0byAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmFkZC1mb3JtIGd2LXN3aXRjaCB7XG4gICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmFkZC1mb3JtLWdyaWQge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNDBweCBhdXRvIGF1dG8gNDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hZGQtZm9ybS1ncmlkLXdpdGgtZW5jcnlwdGVkLXRvZ2dsZSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA0MHB4IGF1dG8gYXV0byAxMDVweCA0MHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmFkZC1mb3JtLWVycm9yX2V4cGVydCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hZGQtZm9ybS1lcnJvciB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA0MHB4IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvZGUge1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ndi10aGVtZS1jb2xvci13YXJuaW5nLWRhcmssICNmNTdjMDApO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY29udGVudCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnByb3BlcnRpZXMtbWVzc2FnZSB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wYWdlLXNpemVfX3NlbGVjdCB7XG4gICAgICAgICAgbWF4LXdpZHRoOiA1MHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnNlYXJjaC1pbnB1dCB7XG4gICAgICAgICAgd2lkdGg6IDMwMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgaHIge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWd2LXRoZW1lLW5ldXRyYWwtY29sb3IpO1xuICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBoZWlnaHQ6IDJweDtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LXByb3BlcnRpZXMnLCBHdlByb3BlcnRpZXMpO1xuIl19
699
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1wcm9wZXJ0aWVzLmpzIl0sIm5hbWVzIjpbImNzcyIsImh0bWwiLCJMaXRFbGVtZW50IiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsIkVSUk9SX1RZUEVTIiwicGFyc2VSYXciLCJ0b05hbWVFcXVhbHNWYWx1ZVN0cmluZyIsImkxOG4iLCJjbGFzc01hcCIsIktleWJvYXJkRWxlbWVudCIsIktFWVMiLCJlbXB0eSIsIkd2UHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJkeW5hbWljUHJvcGVydHlTY2hlbWEiLCJ0eXBlIiwiT2JqZWN0IiwiQXJyYXkiLCJfcHJvcGVydGllcyIsImF0dHJpYnV0ZSIsInByb3ZpZGVyIiwicHJvdmlkZXJzIiwiX3Byb3BlcnR5U2NoZW1hRm9ybSIsImV4cGVydCIsIkJvb2xlYW4iLCJfZm9ybWF0dGVkRXJyb3JzIiwiYXR0cmlidXRlcyIsIl9maWx0ZXIiLCJTdHJpbmciLCJfcGFnaW5hdGlvbkRhdGEiLCJfcGFnZVNpemUiLCJOdW1iZXIiLCJfbmV3SXRlbSIsIl9wcm92aWRlckRvY3VtZW50YXRpb24iLCJfc2hvd0RvY3VtZW50YXRpb24iLCJfdGV4dFJvd3MiLCJyZWFkb25seSIsInJlZmxlY3QiLCJlbmNyeXB0YWJsZSIsImNvbnN0cnVjdG9yIiwidHlwZXMiLCJfY3VycmVudFJlc291cmNlIiwia2V5IiwidmFsdWUiLCJfbmV3IiwiX3BhZ2VTaXplcyIsIl9lcnJvcnMiLCJvbktleWJvYXJkIiwiaXNQcmVzc2VkIiwiRXNjIiwiX29uQ2xvc2VQcm9wZXJ0eVNjaGVtYUZvcm0iLCJTaGlmdCIsIkN0cmwiLCJTcGFjZSIsInNlYXJjaCIsInNoYWRvd1Jvb3QiLCJxdWVyeVNlbGVjdG9yIiwiZm9jdXMiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwibWFwIiwicHJvcGVydHkiLCJlbmNyeXB0ZWQiLCJfZ2V0UmVzaXphYmxlVmlld3MiLCJfbWF4aW1pemVUb3BWaWV3Iiwidmlld3MiLCJtYXhpbWl6ZVRvcCIsIl9tYXhpbWl6ZUJvdHRvbVZpZXciLCJyZXNpemUiLCJfc3BsaXRNYWluVmlld3MiLCJzcGxpdCIsIl9pc05ld0xpbmVUYWJsZSIsImxpbmUiLCJfb25JbnB1dE5ldyIsIm5hbWUiLCJldmVudCIsInRhcmdldCIsImRldGFpbCIsImVycm9ycyIsInNldFRpbWVvdXQiLCJidG4iLCJsZW5ndGgiLCJfZGlzYWJsZWROZXdMaW5lIiwic2V0QXR0cmlidXRlIiwicmVtb3ZlQXR0cmlidXRlIiwiX29uSW5wdXQiLCJfb25Td2l0Y2hFbmNyeXB0ZWQiLCJpdGVtIiwiZW5jcnlwdGlvbldhcm5pbmciLCJyZXF1ZXN0VXBkYXRlIiwiX2FkZFByb3BlcnR5IiwiX3JlbW92ZVByb3BlcnR5IiwiZmlsdGVyIiwidHJpbSIsIl9zdWJtaXRFeHBlcnRNb2RlIiwiX2hhbmRsZUV4cGVydE1vZGVJbnB1dCIsIl9vbkV4cGVydE1vZGVUZXh0SW5wdXQiLCJleHBlcnRNb2RlSW5wdXRTdHJpbmciLCJhbGxQcm9wZXJ0aWVzIiwicHJvdmlkZXJFbmFibGVkIiwiZW5hYmxlZCIsImR5bmFtaWNQcm9wZXJ0aWVzIiwicHJvcCIsImR5bmFtaWMiLCJlbmNyeXB0ZWRQcm9wZXJ0aWVzIiwiYWxsUHJvcGVydGllc1N0cmluZyIsInZhcmlhYmxlcyIsIl9vblN1Ym1pdFByb3BlcnR5Rm9ybSIsInZhbHVlcyIsInN1Ym1pdCIsIl9vblN1Ym1pdCIsImludmFsaWRDb250cm9scyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmaW5kIiwiY29udHJvbCIsImludmFsaWQiLCJfb25Db25maWd1cmVEeW5hbWljUHJvcGVydGllcyIsInByb3ZpZGVyc1RpdGxlTWFwIiwicmVkdWNlIiwiaWQiLCJwcm92aWRlcnNFbnVtIiwia2V5cyIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJzY2hlZHVsZSIsImVudW0iLCJkZWZhdWx0IiwidGl0bGVNYXAiLCJyZXF1aXJlZCIsImRlZmF1bHRQcm92aWRlciIsImNvbmZpZ3VyYXRpb24iLCJzY2hlbWEiLCJkb2N1bWVudGF0aW9uIiwiX29uU2VhcmNoUHJvcGVydHkiLCJfb25DbGVhclByb3BlcnR5IiwicmF3RXJyb3JzIiwicG9zIiwiSU5WQUxJRF9OQU1FIiwibXNnIiwiRFVQTElDQVRFRF9OQU1FIiwiSU5WQUxJRF9MSU5FIiwiSU5WQUxJRF9WQUxVRSIsIl9yZW5kZXJFcnJvcnMiLCJ3aXRoTGluZSIsIl9yZW5kZXJUYWJsZSIsIl9jb21wdXRlVGV4dFJvd3MiLCJzdGF0aWNQcm9wZXJ0aWVzIiwiZXhwZXJ0UHJvcGVydGllcyIsImNvbnRlbnQiLCJqb2luIiwib3B0aW9ucyIsImRhdGEiLCJmaWVsZCIsImxhYmVsIiwid2lkdGgiLCJzaGFwZSIsInN0eWxlIiwiY2xpcGJvYXJkIiwicGxhY2Vob2xkZXIiLCJkaXNhYmxlZCIsImljb24iLCJiaW5kIiwicHVzaCIsImRhbmdlciIsIm91dGxpbmVkIiwiZmlsdGVyZWRQcm9wZXJ0aWVzIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImxhc3QiLCJNYXRoIiwiY2VpbCIsInRvdGFsIiwidG90YWxfcGFnZXMiLCJpbmRleCIsImN1cnJlbnRfcGFnZSIsInNwbGljZSIsImFkZFByb3BlcnR5Rm9ybUdyaWRDbGFzcyIsImFkZFByb3BlcnR5Rm9ybSIsIl9vbkNoYW5nZU1vZGUiLCJfb25QYWdpbmF0ZSIsInBhZ2UiLCJ1cGRhdGVkIiwicHJvcHMiLCJoYXMiLCJmaXJzdCIsIl9vbkNoYW5nZVBhZ2VTaXplIiwidmFsdWVPZiIsIl9yZW5kZXJUYWJsZUZvcm0iLCJfZmV0Y2hEb2N1bWVudGF0aW9uIiwiX2hpZGVEb2N1bWVudGF0aW9uIiwiZGlydHkiLCJmb3JtIiwiY29uZmlybSIsInRoZW4iLCJQcm9taXNlIiwicmVzb2x2ZSIsIl9yZW5kZXJGb3JtIiwiX3JlbmRlckJvdHRvbSIsIl9yZW5kZXJEeW5hbWljQ29uZmlndXJhdGlvbiIsImhhc0R5bmFtaWNDb25maWd1cmF0aW9uIiwiY29uZmlndXJlQWN0aW9uIiwiX29uTW92ZSIsInBhcmVudCIsImhlaWdodCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInJvdW5kIiwicmVuZGVyIiwic3R5bGVzIiwid2luZG93IiwiY3VzdG9tRWxlbWVudHMiLCJkZWZpbmUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLEdBQVQsRUFBY0MsSUFBZCxFQUFvQkMsVUFBcEIsUUFBc0MsYUFBdEM7QUFFQSxPQUFPLGtCQUFQO0FBQ0EsT0FBTyxzQkFBUDtBQUNBLE9BQU8sdUJBQVA7QUFDQSxPQUFPLG9CQUFQO0FBQ0EsT0FBTyxtQkFBUDtBQUNBLE9BQU8sa0JBQVA7QUFDQSxPQUFPLGtCQUFQO0FBQ0EsT0FBTywyQkFBUDtBQUNBLE9BQU8sb0JBQVA7QUFDQSxTQUFTQyxtQkFBVCxRQUFvQyxlQUFwQztBQUNBLFNBQVNDLFdBQVQsRUFBc0JDLFFBQXRCLEVBQWdDQyx1QkFBaEMsUUFBK0QsbUJBQS9EO0FBQ0EsU0FBU0MsSUFBVCxRQUFxQixhQUFyQjtBQUNBLFNBQVNDLFFBQVQsUUFBeUIsK0JBQXpCO0FBQ0EsU0FBU0MsZUFBVCxFQUEwQkMsSUFBMUIsUUFBc0MsNEJBQXRDO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQixpQkFBdEI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxZQUFOLFNBQTJCSCxlQUFlLENBQUNQLFVBQUQsQ0FBMUMsQ0FBdUQ7QUFDdkMsYUFBVlcsVUFBVSxHQUFHO0FBQ3RCLFdBQU87QUFDTEMsTUFBQUEscUJBQXFCLEVBQUU7QUFBRUMsUUFBQUEsSUFBSSxFQUFFQztBQUFSLE9BRGxCO0FBRUxILE1BQUFBLFVBQVUsRUFBRTtBQUFFRSxRQUFBQSxJQUFJLEVBQUVFO0FB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Y2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0LWVsZW1lbnQnO1xuXG5pbXBvcnQgJy4vZ3Ytc2NoZW1hLWZvcm0nO1xuaW1wb3J0ICcuL2d2LXJlc2l6YWJsZS12aWV3cyc7XG5pbXBvcnQgJy4uL21vbGVjdWxlcy9ndi10YWJsZSc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LWJ1dHRvbic7XG5pbXBvcnQgJy4uL2F0b21zL2d2LWlucHV0JztcbmltcG9ydCAnLi4vYXRvbXMvZ3YtaWNvbic7XG5pbXBvcnQgJy4uL2F0b21zL2d2LXRleHQnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1pbnB1dC1tZXNzYWdlJztcbmltcG9ydCAnLi4vYXRvbXMvZ3Ytc2VsZWN0JztcbmltcG9ydCB7IGRpc3BhdGNoQ3VzdG9tRXZlbnQgfSBmcm9tICcuLi9saWIvZXZlbnRzJztcbmltcG9ydCB7IEVSUk9SX1RZUEVTLCBwYXJzZVJhdywgdG9OYW1lRXF1YWxzVmFsdWVTdHJpbmcgfSBmcm9tICcuLi9saWIvcHJvcGVydGllcyc7XG5pbXBvcnQgeyBpMThuIH0gZnJvbSAnLi4vbGliL2kxOG4nO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQtaHRtbC9kaXJlY3RpdmVzL2NsYXNzLW1hcCc7XG5pbXBvcnQgeyBLZXlib2FyZEVsZW1lbnQsIEtFWVMgfSBmcm9tICcuLi9taXhpbnMva2V5Ym9hcmQtZWxlbWVudCc7XG5pbXBvcnQgeyBlbXB0eSB9IGZyb20gJy4uL3N0eWxlcy9lbXB0eSc7XG5cbi8qKlxuICogQSBjb21wb25lbnQgdG8gbWFuYWdlIHByb3BlcnRpZXNcbiAqXG4gKiBAZmlyZXMgZ3YtcHJvcGVydGllczpjaGFuZ2UgLSBXaGVuIGxpc3Qgb2YgcHJvcGVydGllcyBjaGFuZ2VcbiAqIEBmaXJlcyBndi1wcm9wZXJ0aWVzOnNhdmUtcHJvdmlkZXIgLSBXaGVuIHVzZXIgdmFsaWRhdGVzIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb25cbiAqIEBmaXJlcyBndi1wcm9wZXJ0aWVzOnN3aXRjaC1lbmNyeXB0ZWQgLSBXaGVuIHVzZXIgc3dpdGNoZXMgZW5jcnlwdGlvbiB0b2dnbGVcbiAqXG4gKiBAYXR0ciB7QXJyYXl9IHByb3BlcnRpZXMgLSBBcnJheSBvZiBQcm9wZXJ0aWVzIHtrZXksIHZhbHVlLCBkeW5hbWljP31cbiAqIEBhdHRyIHtPYmplY3R9IHByb3ZpZGVyIC0gQ29uZmlndXJhdGlvbiBvZiBwcm92aWRlclxuICogQGF0dHIge0FycmF5fSBwcm92aWRlcnMgLSBMaXN0IG9mIGF2YWlsYWJsZSBwcm92aWRlcnMgKG9ubHkgaHR0cCBmb3IgdGhlIG1vbWVudClcbiAqIEBhdHRyIHtCb29sZWFufSBleHBlcnQgLSBGb3IgZGlzcGxheSBleHBlcnQgbW9kZSBieSBkZWZhdWx0XG4gKiBAYXR0ciB7Qm9vbGVhbn0gZW5jcnlwdGFibGUgLSBUbyBkaXNwbGF5IHRoZSAnZW5jcnlwdGVkJyB0b2dnbGUgb24gZWFjaCBwcm9wZXJ0eVxuICpcbiAqIEBjc3Nwcm9wIHtMZW5ndGh9IFstLWd2LXByb3BlcnRpZXMtdGFibGUtLWNvbG1nPTAuMnJlbV0gLSBUYWJsZSBjZWxscyBtYXJnaW5cbiAqL1xuZXhwb3J0IGNsYXNzIEd2UHJvcGVydGllcyBleHRlbmRzIEtleWJvYXJkRWxlbWVudChMaXRFbGVtZW50KSB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZHluYW1pY1Byb3BlcnR5U2NoZW1hOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgcHJvcGVydGllczogeyB0eXBlOiBBcnJheSB9LFxuICAgICAgX3Byb3BlcnRpZXM6IHsgdHlwZTogQXJyYXksIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIHByb3ZpZGVyOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgcHJvdmlkZXJzOiB7IHR5cGU6IEFycmF5IH0sXG4gICAgICBfcHJvcGVydHlTY2hlbWFGb3JtOiB7IHR5cGU6IE9iamVjdCwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgZXhwZXJ0OiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICAgIF9mb3JtYXR0ZWRFcnJvcnM6IHsgdHlwZTogQXJyYXksIGF0dHJpYnV0ZXM6IGZhbHNlIH0sXG4gICAgICBfZmlsdGVyOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgICAgX3BhZ2luYXRpb25EYXRhOiB7IHR5cGU6IE9iamVjdCwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgX3BhZ2VTaXplOiB7IHR5cGU6IE51bWJlciwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgX25ld0l0ZW06IHsgdHlwZTogT2JqZWN0LCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBfcHJvdmlkZXJEb2N1bWVudGF0aW9uOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIF9zaG93RG9jdW1lbnRhdGlvbjogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBfdGV4dFJvd3M6IHsgdHlwZTogTnVtYmVyLCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICByZWFkb25seTogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBlbmNyeXB0YWJsZTogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gW107XG4gICAgdGhpcy50eXBlcyA9IFtdO1xuICAgIHRoaXMucHJvdmlkZXIgPSB7fTtcbiAgICB0aGlzLl9jdXJyZW50UmVzb3VyY2UgPSBudWxsO1xuICAgIHRoaXMuX2Zvcm1hdHRlZEVycm9ycyA9IFtdO1xuICAgIHRoaXMuX3Nob3dEb2N1bWVudGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLl9uZXdJdGVtID0geyBrZXk6ICcnLCB2YWx1ZTogJycsIF9uZXc6IHRydWUgfTtcbiAgICB0aGlzLl9wYWdlU2l6ZSA9IDEwO1xuICAgIHRoaXMuX3RleHRSb3dzID0gMTA7XG4gICAgdGhpcy5fcGFnZVNpemVzID0gWzUsIDEwLCAyNSwgNTAsIDEwMF07XG4gICAgdGhpcy5fZXJyb3JzID0gW107XG4gIH1cblxuICBvbktleWJvYXJkKCkge1xuICAgIGlmICh0aGlzLmlzUHJlc3NlZChLRVlTLkVzYykpIHtcbiAgICAgIHRoaXMuX29uQ2xvc2VQcm9wZXJ0eVNjaGVtYUZvcm0oKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNQcmVzc2VkKEtFWVMuU2hpZnQsIEtFWVMuQ3RybCwgS0VZUy5TcGFjZSkpIHtcbiAgICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcjc2VhcmNoLXByb3BlcnR5Jyk7XG4gICAgICBpZiAoc2VhcmNoKSB7XG4gICAgICAgIHNlYXJjaC5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldCBwcm9wZXJ0aWVzKHByb3BlcnRpZXMpIHtcbiAgICB0aGlzLl9wcm9wZXJ0aWVzID0gcHJvcGVydGllc1xuICAgICAgLnNvcnQoKGEsIGIpID0+IGEua2V5LmxvY2FsZUNvbXBhcmUoYi5rZXkpKVxuICAgICAgLm1hcCgocHJvcGVydHkpID0+IHtcbiAgICAgICAgaWYgKHByb3BlcnR5LmVuY3J5cHRlZCkge1xuICAgICAgICAgIHByb3BlcnR5LmVuY3J5cHRhYmxlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcGVydHk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0aWVzO1xuICB9XG5cbiAgX2dldFJlc2l6YWJsZVZpZXdzKCkge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignZ3YtcmVzaXphYmxlLXZpZXdzJyk7XG4gIH1cblxuICBfbWF4aW1pemVUb3BWaWV3KCkge1xuICAgIGNvbnN0IHZpZXdzID0gdGhpcy5fZ2V0UmVzaXphYmxlVmlld3MoKTtcbiAgICBpZiAodmlld3MpIHtcbiAgICAgIHZpZXdzLm1heGltaXplVG9wKDk1LCA1KTtcbiAgICB9XG4gIH1cblxuICBfbWF4aW1pemVCb3R0b21WaWV3KCkge1xuICAgIGNvbnN0IHZpZXdzID0gdGhpcy5fZ2V0UmVzaXphYmxlVmlld3MoKTtcbiAgICBpZiAodmlld3MpIHtcbiAgICAgIHZpZXdzLnJlc2l6ZSgzMCwgNzApO1xuICAgIH1cbiAgfVxuXG4gIF9zcGxpdE1haW5WaWV3cygpIHtcbiAgICBjb25zdCB2aWV3cyA9IHRoaXMuX2dldFJlc2l6YWJsZVZpZXdzKCk7XG4gICAgaWYgKHZpZXdzKSB7XG4gICAgICB2aWV3cy5zcGxpdCgpO1xuICAgIH1cbiAgfVxuXG4gIF9pc05ld0xpbmVUYWJsZShsaW5lKSB7XG4gICAgcmV0dXJuIGxpbmUuX25ldyA9PT0gdHJ1ZTtcbiAgfVxuXG4gIF9vbklucHV0TmV3KG5hbWUsIGV2ZW50KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgIHRoaXMuX25ld0l0ZW1bbmFtZV0gPSBldmVudC5kZXRhaWw7XG4gICAgY29uc3QgeyBlcnJvcnMgfSA9IHBhcnNlUmF3KHRvTmFtZUVxdWFsc1ZhbHVlU3RyaW5nKFsuLi50aGlzLnByb3BlcnRpZXMsIHRoaXMuX25ld0l0ZW1dKSk7XG4gICAgdGhpcy5fZXJyb3JzID0gZXJyb3JzO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgYnRuID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2d2LWJ1dHRvbiNhZGQtcHJvcGVydHknKTtcbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCB8fCB0aGlzLl9kaXNhYmxlZE5ld0xpbmUodGhpcy5fbmV3SXRlbSkpIHtcbiAgICAgICAgYnRuLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJ0bi5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XG4gICAgICB9XG4gICAgICBpZiAobmFtZSA9PT0gJ2tleScpIHtcbiAgICAgICAgaWYgKGVycm9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0YXJnZXQucmVtb3ZlQXR0cmlidXRlKCdpbnZhbGlkJyk7XG4gICAgICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgndmFsaWQnLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXQucmVtb3ZlQXR0cmlidXRlKCd2YWxpZCcpO1xuICAgICAgICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUoJ2ludmFsaWQnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDApO1xuICB9XG5cbiAgX29uSW5wdXQoKSB7XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnY2hhbmdlJywgeyBwcm9wZXJ0aWVzOiB0aGlzLnByb3BlcnRpZXMgfSk7XG4gIH1cblxuICBfb25Td2l0Y2hFbmNyeXB0ZWQoaXRlbSkge1xuICAgIGlmIChpdGVtLmVuY3J5cHRlZCA9PT0gdHJ1ZSkge1xuICAgICAgaXRlbS52YWx1ZSA9ICcnO1xuICAgICAgaXRlbS5lbmNyeXB0ZWQgPSBmYWxzZTtcbiAgICAgIGl0ZW0uZW5jcnlwdGlvbldhcm5pbmcgPSBpMThuKCdndi1wcm9wZXJ0aWVzLmluZm9zLm92ZXJ3cml0ZS1lbmNyeXB0aW9uJyk7XG4gICAgICB0aGlzLnJlcXVlc3RVcGRhdGUoKTtcbiAgICB9XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnc3dpdGNoLWVuY3J5cHRlZCcsIHsgcHJvcGVydGllczogdGhpcy5wcm9wZXJ0aWVzIH0pO1xuICB9XG5cbiAgX2FkZFByb3BlcnR5KGl0ZW0pIHtcbiAgICBkZWxldGUgaXRlbS5fbmV3O1xuICAgIHRoaXMucHJvcGVydGllcyA9IFtpdGVtLCAuLi50aGlzLl9wcm9wZXJ0aWVzXTtcbiAgICB0aGlzLl9uZXdJdGVtID0geyBrZXk6ICcnLCB2YWx1ZTogJycsIF9uZXc6IHRydWUsIGVuY3J5cHRhYmxlOiBmYWxzZSwgZW5jcnlwdGVkOiBmYWxzZSB9O1xuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2NoYW5nZScsIHsgcHJvcGVydGllczogdGhpcy5wcm9wZXJ0aWVzIH0pO1xuICB9XG5cbiAgX3JlbW92ZVByb3BlcnR5KGl0ZW0pIHtcbiAgICB0aGlzLl9wcm9wZXJ0aWVzID0gdGhpcy5fcHJvcGVydGllcy5maWx0ZXIoKHByb3BlcnR5KSA9PiBwcm9wZXJ0eS5rZXkgIT09IGl0ZW0ua2V5KTtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdjaGFuZ2UnLCB7IHByb3BlcnRpZXM6IHRoaXMucHJvcGVydGllcyB9KTtcbiAgfVxuXG4gIF9kaXNhYmxlZE5ld0xpbmUoaXRlbSkge1xuICAgIHJldHVybiBpdGVtLmtleSA9PSBudWxsIHx8IGl0ZW0udmFsdWUgPT0gbnVsbCB8fCBpdGVtLmtleS50cmltKCkgPT09ICcnIHx8IGl0ZW0udmFsdWUudHJpbSgpID09PSAnJztcbiAgfVxuXG4gIF9zdWJtaXRFeHBlcnRNb2RlKCkge1xuICAgIGlmICh0aGlzLmV4cGVydCkge1xuICAgICAgdGhpcy5wcm9wZXJ0aWVzID0gdGhpcy5faGFuZGxlRXhwZXJ0TW9kZUlucHV0KHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcjZXhwZXJ0LWlucHV0JykudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIF9vbkV4cGVydE1vZGVUZXh0SW5wdXQoeyBkZXRhaWwgfSkge1xuICAgIHRoaXMuX2hhbmRsZUV4cGVydE1vZGVJbnB1dChkZXRhaWwpO1xuICB9XG5cbiAgX2hhbmRsZUV4cGVydE1vZGVJbnB1dChleHBlcnRNb2RlSW5wdXRTdHJpbmcpIHtcbiAgICBsZXQgYWxsUHJvcGVydGllcyA9IHRoaXMuX3Byb3BlcnRpZXM7XG4gICAgY29uc3QgcHJvdmlkZXJFbmFibGVkID0gdGhpcy5wcm92aWRlciAmJiB0aGlzLnByb3ZpZGVyLmVuYWJsZWQ7XG4gICAgY29uc3QgZHluYW1pY1Byb3BlcnRpZXMgPSBhbGxQcm9wZXJ0aWVzLmZpbHRlcigocHJvcCkgPT4gcHJvdmlkZXJFbmFibGVkICYmIHByb3AuZHluYW1pYyk7XG4gICAgY29uc3QgZW5jcnlwdGVkUHJvcGVydGllcyA9IGFsbFByb3BlcnRpZXMuZmlsdGVyKChwcm9wKSA9PiBwcm9wLmVuY3J5cHRlZCk7XG5cbiAgICBjb25zdCBhbGxQcm9wZXJ0aWVzU3RyaW5nID0gYCR7ZXhwZXJ0TW9kZUlucHV0U3RyaW5nfVxcbiR7dG9OYW1lRXF1YWxzVmFsdWVTdHJpbmcoZHluYW1pY1Byb3BlcnRpZXMpfVxcbiR7dG9OYW1lRXF1YWxzVmFsdWVTdHJpbmcoXG4gICAgICBlbmNyeXB0ZWRQcm9wZXJ0aWVzLFxuICAgICl9YDtcbiAgICBjb25zdCB7IGVycm9ycyB9ID0gcGFyc2VSYXcoYWxsUHJvcGVydGllc1N0cmluZyk7XG4gICAgdGhpcy5fZXJyb3JzID0gZXJyb3JzO1xuICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCB7IHZhcmlhYmxlcyB9ID0gcGFyc2VSYXcoZXhwZXJ0TW9kZUlucHV0U3RyaW5nKTtcbiAgICAgIGFsbFByb3BlcnRpZXMgPSBbLi4udmFyaWFibGVzLCAuLi5keW5hbWljUHJvcGVydGllcywgLi4uZW5jcnlwdGVkUHJvcGVydGllc107XG4gICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdjaGFuZ2UnLCB7IHByb3BlcnRpZXM6IGFsbFByb3BlcnRpZXMgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbFByb3BlcnRpZXM7XG4gIH1cblxuICBfb25TdWJtaXRQcm9wZXJ0eUZvcm0oeyBkZXRhaWwgfSkge1xuICAgIGNvbnN0IHByb3ZpZGVyID0gZGV0YWlsLnZhbHVlcztcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdzYXZlLXByb3ZpZGVyJywgeyBwcm92aWRlciB9KTtcbiAgICB0aGlzLnJlcXVlc3RVcGRhdGUoKTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICBpZiAodGhpcy5leHBlcnQpIHtcbiAgICAgIHRoaXMuX3N1Ym1pdEV4cGVydE1vZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb25TdWJtaXQoKTtcbiAgICB9XG4gIH1cblxuICBfb25TdWJtaXQoKSB7XG4gICAgY29uc3QgaW52YWxpZENvbnRyb2xzID0gWy4uLnRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdmb3JtIC5jb250cm9sJyldLmZpbmQoKGNvbnRyb2wpID0+IGNvbnRyb2wuaW52YWxpZCk7XG4gICAgaWYgKGludmFsaWRDb250cm9scyA9PSBudWxsKSB7XG4gICAgICB0aGlzLl9hZGRQcm9wZXJ0eSh0aGlzLl9uZXdJdGVtKTtcbiAgICB9XG4gIH1cblxuICBfb25Db25maWd1cmVEeW5hbWljUHJvcGVydGllcygpIHtcbiAgICBpZiAodGhpcy5keW5hbWljUHJvcGVydHlTY2hlbWEgPT0gbnVsbCkge1xuICAgICAgLy8gZHluYW1pY1Byb3BlcnR5U2NoZW1hIGhhcyBiZWVuIGludHJvZHVjZWQgdG8gZW5zdXJlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgdmVyc2lvbnMuIElmIG5vIHNjaGVtYSBpcyBwcm92aWRlZCBhIGRlZmF1bHQgc2NoZW1hIHdpbGwgYmUgdXNlZC5cbiAgICAgIGNvbnN0IHByb3ZpZGVyc1RpdGxlTWFwID0gdGhpcy5wcm92aWRlcnMucmVkdWNlKChtYXAsIHByb3ZpZGVyKSA9PiB7XG4gICAgICAgIG1hcFtwcm92aWRlci5pZF0gPSBwcm92aWRlci5rZXk7XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgICB9LCB7fSk7XG5cbiAgICAgIGNvbnN0IHByb3ZpZGVyc0VudW0gPSBPYmplY3Qua2V5cyhwcm92aWRlcnNUaXRsZU1hcCk7XG4gICAgICB0aGlzLmR5bmFtaWNQcm9wZXJ0eVNjaGVtYSA9IHtcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGVuYWJsZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICAgIHRpdGxlOiAnRW5hYmxlZCcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJyBUaGlzIHNlcnZpY2UgaXMgcmVxdWlyaW5nIGFuIEFQSSBkZXBsb3ltZW50LiBEbyBub3QgZm9yZ2V0IHRvIGRlcGxveSBBUEkgdG8gc3RhcnQgZHluYW1pYy1wcm9wZXJ0aWVzIHNlcnZpY2UuJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNjaGVkdWxlOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIHRpdGxlOiAnU2NoZWR1bGUnLFxuICAgICAgICAgICAgJ3gtc2NoZW1hLWZvcm0nOiB7XG4gICAgICAgICAgICAgICdjcm9uLWV4cHJlc3Npb24nOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByb3ZpZGVyOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIHRpdGxlOiAnUHJvdmlkZXIgdHlwZScsXG4gICAgICAgICAgICBlbnVtOiBwcm92aWRlcnNFbnVtLFxuICAgICAgICAgICAgZGVmYXVsdDogcHJvdmlkZXJzRW51bVswXSxcbiAgICAgICAgICAgICd4LXNjaGVtYS1mb3JtJzoge1xuICAgICAgICAgICAgICB0aXRsZU1hcDogcHJvdmlkZXJzVGl0bGVNYXAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVpcmVkOiBbJ3NjaGVkdWxlJywgJ3Byb3ZpZGVyJ10sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmF1bHRQcm92aWRlciA9IHRoaXMucHJvdmlkZXJzWzBdO1xuXG4gICAgdGhpcy5fcHJvcGVydHlTY2hlbWFGb3JtID0ge1xuICAgICAgcHJvcGVydGllczogeyAuLi50aGlzLmR5bmFtaWNQcm9wZXJ0eVNjaGVtYS5wcm9wZXJ0aWVzLCBjb25maWd1cmF0aW9uOiBkZWZhdWx0UHJvdmlkZXIuc2NoZW1hIH0sXG4gICAgICByZXF1aXJlZDogdGhpcy5keW5hbWljUHJvcGVydHlTY2hlbWEucmVxdWlyZWQsXG4gICAgfTtcbiAgICB0aGlzLl9wcm92aWRlckRvY3VtZW50YXRpb24gPSBkZWZhdWx0UHJvdmlkZXIuZG9jdW1lbnRhdGlvbjtcbiAgICB0aGlzLl9tYXhpbWl6ZUJvdHRvbVZpZXcoKTtcbiAgfVxuXG4gIF9vbkNsb3NlUHJvcGVydHlTY2hlbWFGb3JtKCkge1xuICAgIHRoaXMuX3Byb3BlcnR5U2NoZW1hRm9ybSA9IG51bGw7XG4gICAgdGhpcy5fbWF4aW1pemVUb3BWaWV3KCk7XG4gIH1cblxuICBfb25TZWFyY2hQcm9wZXJ0eSh7IGRldGFpbCB9KSB7XG4gICAgdGhpcy5fZmlsdGVyID0gZGV0YWlsO1xuICAgIHRoaXMuX29uQ2xvc2VQcm9wZXJ0eVNjaGVtYUZvcm0oKTtcbiAgfVxuXG4gIF9vbkNsZWFyUHJvcGVydHkoKSB7XG4gICAgdGhpcy5fZmlsdGVyID0gbnVsbDtcbiAgICB0aGlzLl9vbkNsb3NlUHJvcGVydHlTY2hlbWFGb3JtKCk7XG4gIH1cblxuICBnZXQgX2Vycm9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybWF0dGVkRXJyb3JzO1xuICB9XG5cbiAgc2V0IF9lcnJvcnMocmF3RXJyb3JzKSB7XG4gICAgdGhpcy5fZm9ybWF0dGVkRXJyb3JzID0gcmF3RXJyb3JzLm1hcCgoeyB0eXBlLCBrZXksIHBvcyB9KSA9PiB7XG4gICAgICBpZiAodHlwZSA9PT0gRVJST1JfVFlQRVMuSU5WQUxJRF9OQU1FKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGluZTogcG9zLmxpbmUsXG4gICAgICAgICAgbXNnOiBpMThuKCdndi1wcm9wZXJ0aWVzLmVycm9ycy5pbnZhbGlkLWtleScsIHsga2V5IH0pLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09IEVSUk9SX1RZUEVTLkRVUExJQ0FURURfTkFNRSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmU6IHBvcy5saW5lLFxuICAgICAgICAgIG1zZzogaTE4bignZ3YtcHJvcGVydGllcy5lcnJvcnMuZHVwbGljYXRlZC1rZXknLCB7IGtleSB9KSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSBFUlJPUl9UWVBFUy5JTlZBTElEX0xJTkUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lOiBwb3MubGluZSxcbiAgICAgICAgICBtc2c6IGkxOG4oJ2d2LXByb3BlcnRpZXMuZXJyb3JzLmludmFsaWQtbGluZScpLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09IEVSUk9SX1RZUEVTLklOVkFMSURfVkFMVUUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lOiBwb3MubGluZSxcbiAgICAgICAgICBtc2c6IGkxOG4oJ2d2LXByb3BlcnRpZXMuZXJyb3JzLmludmFsaWQtdmFsdWUnKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGxpbmU6ICc/JywgbXNnOiBpMThuKCdndi1wcm9wZXJ0aWVzLmVycm9ycy51bmtub3duJykgfTtcbiAgICB9KTtcbiAgfVxuXG4gIF9yZW5kZXJFcnJvcnMod2l0aExpbmUgPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLl9mb3JtYXR0ZWRFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyAnYWRkLWZvcm0tZXJyb3InOiB0cnVlLCAnYWRkLWZvcm0tZXJyb3JfZXhwZXJ0JzogdGhpcy5leHBlcnQgfSl9XCI+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvci1saXN0XCI+XG4gICAgICAgICAgJHt0aGlzLl9mb3JtYXR0ZWRFcnJvcnMubWFwKFxuICAgICAgICAgICAgKHsgbGluZSwgbXNnIH0pID0+IGh0bWxgXG4gICAgICAgICAgICAgIDxndi1pbnB1dC1tZXNzYWdlXG4gICAgICAgICAgICAgICAgPiR7d2l0aExpbmUgPyBodG1sYDxzdHJvbmcgLmlubmVySFRNTD1cIiR7aTE4bignZ3YtcHJvcGVydGllcy5lcnJvcnMubGluZScpfSAke2xpbmV9OiZuYnNwO1wiPjwvc3Ryb25nPmAgOiAnJ31cbiAgICAgICAgICAgICAgICA8c3BhbiAuaW5uZXJIVE1MPVwiJHttc2d9XCI+PC9zcGFuXG4gICAgICAgICAgICAgID48L2d2LWlucHV0LW1lc3NhZ2U+XG4gICAgICAgICAgICBgLFxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+YDtcbiAgICB9XG4gICAgcmV0dXJuIGh0bWxgYDtcbiAgfVxuXG4gIF9yZW5kZXJUYWJsZSgpIHtcbiAgICBjb25zdCBwcm92aWRlckVuYWJsZWQgPSB0aGlzLnByb3ZpZGVyICYmIHRoaXMucHJvdmlkZXIuZW5hYmxlZDtcbiAgICBpZiAodGhpcy5leHBlcnQpIHtcbiAgICAgIHRoaXMuX2NvbXB1dGVUZXh0Um93cygpO1xuXG4gICAgICBjb25zdCBzdGF0aWNQcm9wZXJ0aWVzID0gcHJvdmlkZXJFbmFibGVkID8gdGhpcy5fcHJvcGVydGllcy5maWx0ZXIoKHByb3ApID0+ICEocHJvdmlkZXJFbmFibGVkICYmIHByb3AuZHluYW1pYykpIDogdGhpcy5fcHJvcGVydGllcztcbiAgICAgIGNvbnN0IGV4cGVydFByb3BlcnRpZXMgPSBzdGF0aWNQcm9wZXJ0aWVzLmZpbHRlcigocHJvcCkgPT4gIXByb3AuZW5jcnlwdGVkKTtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBleHBlcnRQcm9wZXJ0aWVzLm1hcCgocHJvcCkgPT4gYCR7cHJvcC5rZXl9PVwiJHtwcm9wLnZhbHVlfVwiYCkuam9pbignXFxuJyk7XG5cbiAgICAgIHJldHVybiBodG1sYDxndi10ZXh0XG4gICAgICAgICAgaWQ9XCJleHBlcnQtaW5wdXRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiJHtpMThuKCdndi1wcm9wZXJ0aWVzLnBsYWNlaG9sZGVyLmlucHV0Jyl9XCJcbiAgICAgICAgICBAZ3YtdGV4dDppbnB1dD1cIiR7dGhpcy5fb25FeHBlcnRNb2RlVGV4dElucHV0fVwiXG4gICAgICAgICAgLnZhbHVlPVwiJHtjb250ZW50fVwiXG4gICAgICAgICAgP3JlYWRvbmx5PVwiJHt0aGlzLnJlYWRvbmx5fVwiXG4gICAgICAgICAgLnJvd3M9XCIke3RoaXMuX3RleHRSb3dzfVwiXG4gICAgICAgID48L2d2LXRleHQ+XG4gICAgICAgICR7dGhpcy5fcmVuZGVyRXJyb3JzKHRydWUpfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIGRhdGE6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZDogJ2R5bmFtaWMnLFxuICAgICAgICAgICAgbGFiZWw6ICdEeW5hbWljJyxcbiAgICAgICAgICAgIHdpZHRoOiAnNDBweCcsXG4gICAgICAgICAgICB0eXBlOiAoaXRlbSkgPT4gKGl0ZW0uZHluYW1pYyAmJiBwcm92aWRlckVuYWJsZWQgPyAnZ3YtaWNvbicgOiAnZGl2JyksXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgIHNoYXBlOiAoaXRlbSkgPT4gKGl0ZW0uZHluYW1pYyAmJiBwcm92aWRlckVuYWJsZWQgPyAnY29kZTp0aW1lLXNjaGVkdWxlJyA6ICcnKSxcbiAgICAgICAgICAgICAgdGl0bGU6IChpdGVtKSA9PiAoaXRlbS5keW5hbWljICYmIHByb3ZpZGVyRW5hYmxlZCA/ICdEeW5hbWljIHByb3BlcnRpZXMgc2VydmljZSBpcyBhY3R1YWxseSBpbiBydW5uaW5nJyA6ICcnKSxcbiAgICAgICAgICAgICAgc3R5bGU6ICdqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgaGVpZ2h0OiAxMDAlOycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmllbGQ6ICdrZXknLFxuICAgICAgICAgICAgbGFiZWw6ICdLZXknLFxuICAgICAgICAgICAgdHlwZTogJ2d2LWlucHV0JyxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgY2xpcGJvYXJkOiB0cnVlLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogaTE4bignZ3YtcHJvcGVydGllcy5wbGFjZWhvbGRlci5rZXknKSxcbiAgICAgICAgICAgICAgbmFtZTogJ2tleScsXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICByZWFkb25seTogdGhpcy5yZWFkb25seSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZDogJ3ZhbHVlJyxcbiAgICAgICAgICAgIGxhYmVsOiAnVmFsdWUnLFxuICAgICAgICAgICAgdHlwZTogJ2d2LWlucHV0JyxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgbmFtZTogJ3ZhbHVlJyxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdQcm9wZXJ0eSB2YWx1ZScsXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICByZWFkb25seTogdGhpcy5yZWFkb25seSxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IChpdGVtKSA9PiAoaXRlbS5keW5hbWljICYmIHByb3ZpZGVyRW5hYmxlZCkgfHwgaXRlbS5lbmNyeXB0ZWQsXG4gICAgICAgICAgICAgIHR5cGU6IChpdGVtKSA9PiAoaXRlbS5lbmNyeXB0ZWQgPyAncGFzc3dvcmQnIDogJ3RleHQnKSxcbiAgICAgICAgICAgICAgdGl0bGU6IChpdGVtKSA9PiAoaXRlbS5lbmNyeXB0ZWQgPyBpMThuKCdndi1wcm9wZXJ0aWVzLmluZm9zLmVuY3J5cHRlZC12YWx1ZScpIDogJycpLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogKGl0ZW0pID0+IGl0ZW0uZW5jcnlwdGlvbldhcm5pbmcsXG4gICAgICAgICAgICAgIGljb246IG51bGwsXG4gICAgICAgICAgICAgICdvbmd2LWlucHV0OmlucHV0JzogdGhpcy5fb25JbnB1dC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuZW5jcnlwdGFibGUgPT09IHRydWUpIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhLnB1c2goe1xuICAgICAgICAgIGZpZWxkOiAnZW5jcnlwdGFibGUnLFxuICAgICAgICAgIHR5cGU6ICdndi1zd2l0Y2gnLFxuICAgICAgICAgIHN0eWxlOiAnLS1ndi1zd2l0Y2gtLXRhOiByaWdodDsnLFxuICAgICAgICAgIHdpZHRoOiAnMTA1cHgnLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpMThuKCdndi1wcm9wZXJ0aWVzLmVuY3J5cHRlZC10b2dnbGUnKSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgcmVhZG9ubHk6IHRoaXMucmVhZG9ubHksXG4gICAgICAgICAgICBkaXNhYmxlZDogKGl0ZW0pID0+IGl0ZW0uZHluYW1pYyAmJiBwcm92aWRlckVuYWJsZWQsXG4gICAgICAgICAgICAnb25ndi1zd2l0Y2g6aW5wdXQnOiB0aGlzLl9vblN3aXRjaEVuY3J5cHRlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgc3R5bGU6ICdkaXNwbGF5OiBpbmxpbmUtZmxleDsgZm9udC1zaXplOiAxMnB4OyBoZWlnaHQ6IDQwcHg7JyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucmVhZG9ubHkgIT09IHRydWUpIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdndi1idXR0b24nLFxuICAgICAgICAgIHdpZHRoOiAnNDBweCcsXG4gICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgJ29uZ3YtYnV0dG9uOmNsaWNrJzogKGl0ZW0sIGV2ZW50LCB0YXJnZXQpID0+IHRoaXMuX3JlbW92ZVByb3BlcnR5KGl0ZW0sIHRhcmdldCksXG4gICAgICAgICAgICB0aXRsZTogJ1JlbW92ZScsXG4gICAgICAgICAgICBkaXNhYmxlZDogKGl0ZW0pID0+IGl0ZW0uZHluYW1pYyAmJiBwcm92aWRlckVuYWJsZWQsXG4gICAgICAgICAgICBkYW5nZXI6IHRydWUsXG4gICAgICAgICAgICBvdXRsaW5lZDogdHJ1ZSxcbiAgICAgICAgICAgIGljb246ICdob21lOnRyYXNoJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsdGVyZWRQcm9wZXJ0aWVzID1cbiAgICAgICAgdGhpcy5fZmlsdGVyICE9IG51bGxcbiAgICAgICAgICA/IHRoaXMuX3Byb3BlcnRpZXMuZmlsdGVyKChwcm9wKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAocHJvcC5rZXkudG9Mb3dlckNhc2UoKSArIHByb3AudmFsdWUudG9Mb3dlckNhc2UoKSkuaW5jbHVkZXModGhpcy5fZmlsdGVyKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiB0aGlzLl9wcm9wZXJ0aWVzO1xuICAgICAgbGV0IHByb3BlcnRpZXMgPSBbLi4uZmlsdGVyZWRQcm9wZXJ0aWVzXTtcbiAgICAgIGlmICh0aGlzLl9wYWdpbmF0aW9uRGF0YSkge1xuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uRGF0YS5sYXN0ID0gTWF0aC5jZWlsKGZpbHRlcmVkUHJvcGVydGllcy5sZW5ndGggLyB0aGlzLl9wYWdlU2l6ZSk7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRpb25EYXRhLnRvdGFsID0gZmlsdGVyZWRQcm9wZXJ0aWVzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5fcGFnaW5hdGlvbkRhdGEudG90YWxfcGFnZXMgPSBNYXRoLmNlaWwoZmlsdGVyZWRQcm9wZXJ0aWVzLmxlbmd0aCAvIHRoaXMuX3BhZ2VTaXplKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSAodGhpcy5fcGFnaW5hdGlvbkRhdGEuY3VycmVudF9wYWdlIC0gMSkgKiB0aGlzLl9wYWdlU2l6ZTtcbiAgICAgICAgcHJvcGVydGllcyA9IFsuLi5maWx0ZXJlZFByb3BlcnRpZXNdLnNwbGljZShpbmRleCwgdGhpcy5fcGFnZVNpemUpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhZGRQcm9wZXJ0eUZvcm1HcmlkQ2xhc3MgPSB0aGlzLmVuY3J5cHRhYmxlID8gJ2FkZC1mb3JtLWdyaWQtd2l0aC1lbmNyeXB0ZWQtdG9nZ2xlJyA6ICdhZGQtZm9ybS1ncmlkJztcblxuICAgICAgY29uc3QgYWRkUHJvcGVydHlGb3JtID1cbiAgICAgICAgdGhpcy5yZWFkb25seSAhPT0gdHJ1ZVxuICAgICAgICAgID8gaHRtbGA8Zm9ybSBpZD1cImFkZC1wcm9wZXJ0eS1mb3JtXCIgY2xhc3M9XCJhZGQtZm9ybSAke2FkZFByb3BlcnR5Rm9ybUdyaWRDbGFzc31cIiBAc3VibWl0PVwiJHt0aGlzLl9vblN1Ym1pdH1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICAgICAgICAgIDxndi1pbnB1dFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiJHtpMThuKCdndi1wcm9wZXJ0aWVzLnBsYWNlaG9sZGVyLmtleScpfVwiXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgQGd2LWlucHV0OmlucHV0PVwiJHt0aGlzLl9vbklucHV0TmV3LmJpbmQodGhpcywgJ2tleScpfVwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cIiR7dGhpcy5fbmV3SXRlbS5rZXl9XCJcbiAgICAgICAgICAgICAgICA+PC9ndi1pbnB1dD5cbiAgICAgICAgICAgICAgICA8Z3YtaW5wdXRcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIiR7aTE4bignZ3YtcHJvcGVydGllcy5wbGFjZWhvbGRlci52YWx1ZScpfVwiXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgQGd2LWlucHV0OmlucHV0PVwiJHt0aGlzLl9vbklucHV0TmV3LmJpbmQodGhpcywgJ3ZhbHVlJyl9XCJcbiAgICAgICAgICAgICAgICAgIC52YWx1ZT1cIiR7dGhpcy5fbmV3SXRlbS52YWx1ZX1cIlxuICAgICAgICAgICAgICAgID48L2d2LWlucHV0PlxuICAgICAgICAgICAgICAgICR7dGhpcy5lbmNyeXB0YWJsZVxuICAgICAgICAgICAgICAgICAgPyBodG1sYCA8Z3Ytc3dpdGNoXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPVwiJHtpMThuKCdndi1wcm9wZXJ0aWVzLmVuY3J5cHRlZC10b2dnbGUnKX1cIlxuICAgICAgICAgICAgICAgICAgICAgIEBndi1zd2l0Y2g6aW5wdXQ9XCIke3RoaXMuX29uSW5wdXROZXcuYmluZCh0aGlzLCAnZW5jcnlwdGFibGUnKX1cIlxuICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZT1cIiR7dGhpcy5fbmV3SXRlbS5lbmNyeXB0YWJsZX1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9ndi1zd2l0Y2g+YFxuICAgICAgICAgICAgICAgICAgOiAnJ31cbiAgICAgICAgICAgICAgICA8Z3YtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBpZD1cImFkZC1wcm9wZXJ0eVwiXG4gICAgICAgICAgICAgICAgICBpY29uPVwiY29kZTpwbHVzXCJcbiAgICAgICAgICAgICAgICAgIG91dGxpbmVkXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fYWRkUHJvcGVydHkuYmluZCh0aGlzLCB0aGlzLl9uZXdJdGVtKX1cIlxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCIke2kxOG4oJ2d2LXByb3BlcnRpZXMuYWRkJyl9XCJcbiAgICAgICAgICAgICAgICA+PC9ndi1idXR0b24+XG4gICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgJHt0aGlzLl9yZW5kZXJFcnJvcnMoKX1cbiAgICAgICAgICAgICAgPGhyIC8+YFxuICAgICAgICAgIDogJyc7XG5cbiAgICAgIHJldHVybiBodG1sYCAke2FkZFByb3BlcnR5Rm9ybX1cbiAgICAgICAgPGd2LXRhYmxlIC5vcHRpb25zPVwiJHtvcHRpb25zfVwiIC5pdGVtcz1cIiR7cHJvcGVydGllc31cIiBub2hlYWRlciBub3NvcnQgb3JkZXI9XCJrZXlcIiByb3doZWlnaHQ9XCI1N3B4XCI+PC9ndi10YWJsZT5gO1xuICAgIH1cbiAgfVxuXG4gIF9vbkNoYW5nZU1vZGUoeyBkZXRhaWwgfSkge1xuICAgIHRoaXMuX3N1Ym1pdEV4cGVydE1vZGUoKTtcbiAgICB0aGlzLmV4cGVydCA9IGRldGFpbDtcbiAgICB0aGlzLl9lcnJvcnMgPSBbXTtcbiAgICB0aGlzLl9uZXdJdGVtID0geyBrZXk6ICcnLCB2YWx1ZTogJycsIF9uZXc6IHRydWUgfTtcbiAgICB0aGlzLl9vbkNsb3NlUHJvcGVydHlTY2hlbWFGb3JtKCk7XG4gIH1cblxuICBfb25QYWdpbmF0ZSh7IGRldGFpbCB9KSB7XG4gICAgdGhpcy5fcGFnaW5hdGlvbkRhdGEuY3VycmVudF9wYWdlID0gZGV0YWlsLnBhZ2U7XG4gICAgdGhpcy5fb25DbG9zZVByb3BlcnR5U2NoZW1hRm9ybSgpO1xuICAgIHRoaXMucmVxdWVzdFVwZGF0ZSgpO1xuICB9XG5cbiAgdXBkYXRlZChwcm9wcykge1xuICAgIGlmIChwcm9wcy5oYXMoJ19wcm9wZXJ0aWVzJykgfHwgcHJvcHMuaGFzKCdfcGFnZVNpemUnKSkge1xuICAgICAgdGhpcy5fcGFnaW5hdGlvbkRhdGEgPSB7XG4gICAgICAgIGZpcnN0OiAxLFxuICAgICAgICBsYXN0OiBNYXRoLmNlaWwodGhpcy5fcHJvcGVydGllcy5sZW5ndGggLyB0aGlzLl9wYWdlU2l6ZSksXG4gICAgICAgIHRvdGFsOiB0aGlzLl9wcm9wZXJ0aWVzLmxlbmd0aCxcbiAgICAgICAgY3VycmVudF9wYWdlOiAxLFxuICAgICAgICB0b3RhbF9wYWdlczogTWF0aC5jZWlsKHRoaXMuX3Byb3BlcnRpZXMubGVuZ3RoIC8gdGhpcy5fcGFnZVNpemUpLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBfb25DaGFuZ2VQYWdlU2l6ZSh7IGRldGFpbCB9KSB7XG4gICAgdGhpcy5fcGFnZVNpemUgPSBOdW1iZXIoZGV0YWlsKS52YWx1ZU9mKCk7XG4gICAgdGhpcy5fb25DbG9zZVByb3BlcnR5U2NoZW1hRm9ybSgpO1xuICB9XG5cbiAgX3JlbmRlclRhYmxlRm9ybSgpIHtcbiAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPk1hbmFnZSBnbG9iYWwgcHJvcGVydGllcyA8c3Bhbj4oJHt0aGlzLl9wcm9wZXJ0aWVzID8gdGhpcy5fcHJvcGVydGllcy5sZW5ndGggOiAwfSk8L3NwYW4+PC9kaXY+XG4gICAgICAgIDxndi1zd2l0Y2hcbiAgICAgICAgICBzbWFsbFxuICAgICAgICAgIC5kZXNjcmlwdGlvbj1cIiR7dGhpcy5leHBlcnQgPyAnRXhwZXJ0JyA6ICdTaW1wbGUnfVwiXG4gICAgICAgICAgLnZhbHVlPVwiJHt0aGlzLmV4cGVydH1cIlxuICAgICAgICAgIEBndi1zd2l0Y2g6aW5wdXQ9XCIke3RoaXMuX29uQ2hhbmdlTW9kZX1cIlxuICAgICAgICA+PC9ndi1zd2l0Y2g+XG4gICAgICAgIDxndi1pbnB1dFxuICAgICAgICAgIGlkPVwic2VhcmNoLXByb3BlcnR5XCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlciBwcm9wZXJ0aWVzIChTaGlmdCArIEN0cmwgKyBTcGFjZSlcIlxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxuICAgICAgICAgIC5kaXNhYmxlZD1cIiR7dGhpcy5leHBlcnR9XCJcbiAgICAgICAgICBAZ3YtaW5wdXQ6aW5wdXQ9XCIke3RoaXMuX29uU2VhcmNoUHJvcGVydHl9XCJcbiAgICAgICAgICBAZ3YtaW5wdXQ6Y2xlYXI9XCIke3RoaXMuX29uQ2xlYXJQcm9wZXJ0eX1cIlxuICAgICAgICA+PC9ndi1pbnB1dD5cbiAgICAgICAgPGd2LXNlbGVjdFxuICAgICAgICAgIGNsYXNzPVwicGFnZS1zaXplX19zZWxlY3RcIlxuICAgICAgICAgIEBndi1zZWxlY3Q6aW5wdXQ9XCIke3RoaXMuX29uQ2hhbmdlUGFnZVNpemV9XCJcbiAgICAgICAgICBzbWFsbFxuICAgICAgICAgIC5vcHRpb25zPVwiJHt0aGlzLl9wYWdlU2l6ZXN9XCJcbiAgICAgICAgICAudmFsdWU9XCIke3RoaXMuX3BhZ2VTaXplfVwiXG4gICAgICAgICAgLmRpc2FibGVkPVwiJHt0aGlzLmV4cGVydCB8fCB0aGlzLl9wYWdpbmF0aW9uRGF0YSA9PSBudWxsfVwiXG4gICAgICAgID48L2d2LXNlbGVjdD5cbiAgICAgICAgPGd2LXBhZ2luYXRpb25cbiAgICAgICAgICBAZ3YtcGFnaW5hdGlvbjpwYWdpbmF0ZT1cIiR7dGhpcy5fb25QYWdpbmF0ZX1cIlxuICAgICAgICAgIC5kaXNhYmxlZD1cIiR7dGhpcy5leHBlcnQgfHwgdGhpcy5fcGFnaW5hdGlvbkRhdGEgPT0gbnVsbH1cIlxuICAgICAgICAgIC5kYXRhPVwiJHt0aGlzLl9wYWdpbmF0aW9uRGF0YX1cIlxuICAgICAgICAgIHdpZGdldFxuICAgICAgICA+PC9ndi1wYWdpbmF0aW9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPjxkaXYgY2xhc3M9XCJmb3JtLWNvbnRlbnRcIj4ke3RoaXMuX3JlbmRlclRhYmxlKCl9PC9kaXY+PC9kaXY+XG4gICAgPC9kaXY+YDtcbiAgfVxuXG4gIF9mZXRjaERvY3VtZW50YXRpb24oKSB7XG4gICAgdGhpcy5fc2hvd0RvY3VtZW50YXRpb24gPSB0cnVlO1xuICB9XG5cbiAgX2hpZGVEb2N1bWVudGF0aW9uKCkge1xuICAgIHRoaXMuX3Nob3dEb2N1bWVudGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICBnZXQgZGlydHkoKSB7XG4gICAgY29uc3QgZm9ybSA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdndi1zY2hlbWEtZm9ybScpO1xuICAgIHJldHVybiBmb3JtICYmIGZvcm0uZGlydHk7XG4gIH1cblxuICBjb25maXJtKCkge1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignZ3Ytc2NoZW1hLWZvcm0nKTtcbiAgICBpZiAoZm9ybSkge1xuICAgICAgcmV0dXJuIGZvcm0uY29uZmlybSgpLnRoZW4oKCkgPT4gdGhpcy5fb25DbG9zZVByb3BlcnR5U2NoZW1hRm9ybSgpKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgX3JlbmRlckZvcm0oKSB7XG4gICAgcmV0dXJuIGh0bWxgPGd2LXNjaGVtYS1mb3JtXG4gICAgICBzbG90PVwidG9wXCJcbiAgICAgIHNjcm9sbGFibGVcbiAgICAgIC5zY2hlbWE9XCIke3RoaXMuX3Byb3BlcnR5U2NoZW1hRm9ybX1cIlxuICAgICAgLnZhbHVlcz1cIiR7dGhpcy5wcm92aWRlcn1cIlxuICAgICAgLmljb249XCJkZXNpZ246ZWRpdFwiXG4gICAgICBoYXMtaGVhZGVyXG4gICAgICA/cmVhZG9ubHk9XCIke3RoaXMucmVhZG9ubHl9XCJcbiAgICAgIEBndi1zY2hlbWEtZm9ybTpzdWJtaXQ9XCIke3RoaXMuX29uU3VibWl0UHJvcGVydHlGb3JtfVwiXG4gICAgPlxuICAgICAgPGRpdiBzbG90PVwidGl0bGVcIiBjbGFzcz1cInByb3BlcnRpZXMtdGl0bGVcIj5Db25maWd1cmUgZHluYW1pYyBwcm9wZXJ0aWVzPC9kaXY+XG4gICAgICA8Z3YtYnV0dG9uXG4gICAgICAgIHNsb3Q9XCJoZWFkZXItbGVmdFwiXG4gICAgICAgIGljb249XCJnZW5lcmFsOmNsb3NlXCJcbiAgICAgICAgb3V0bGluZWRcbiAgICAgICAgc21hbGxcbiAgICAgICAgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25DbG9zZVByb3BlcnR5U2NoZW1hRm9ybX1cIlxuICAgICAgICB0aXRsZT1cIkNsb3NlIChlc2MpXCJcbiAgICAgID48L2d2LWJ1dHRvbj5cbiAgICAgIDxndi1idXR0b25cbiAgICAgICAgc2xvdD1cImhlYWRlci1sZWZ0XCJcbiAgICAgICAgaWNvbj1cImhvbWU6Ym9va1wiXG4gICAgICAgID9kaXNhYmxlZD1cIiR7dGhpcy5fc2hvd0RvY3VtZW50YXRpb259XCJcbiAgICAgICAgb3V0bGluZWRcbiAgICAgICAgc21hbGxcbiAgICAgICAgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fZmV0Y2hEb2N1bWVudGF0aW9ufVwiXG4gICAgICAgIHRpdGxlPVwiT3BlbiBkb2N1bWVudGF0aW9uXCJcbiAgICAgID48L2d2LWJ1dHRvbj5cbiAgICA8L2d2LXNjaGVtYS1mb3JtPmA7XG4gIH1cblxuICBfcmVuZGVyQm90dG9tKCkge1xuICAgIGlmICh0aGlzLl9wcm9wZXJ0eVNjaGVtYUZvcm0gJiYgdGhpcy5fc2hvd0RvY3VtZW50YXRpb24pIHtcbiAgICAgIHJldHVybiBodG1sYDxndi1yZXNpemFibGUtdmlld3Mgbm8tb3ZlcmZsb3cgZGlyZWN0aW9uPVwiaG9yaXpvbnRhbFwiPlxuICAgICAgICAke3RoaXMuX3JlbmRlckZvcm0oKX1cbiAgICAgICAgPGd2LWRvY3VtZW50YXRpb25cbiAgICAgICAgICBzbG90PVwiYm90dG9tXCJcbiAgICAgICAgICAudGV4dD1cIiR7dGhpcy5fcHJvdmlkZXJEb2N1bWVudGF0aW9ufVwiXG4gICAgICAgICAgQGd2LWRvY3VtZW50YXRpb246Y2xvc2U9XCIke3RoaXMuX2hpZGVEb2N1bWVudGF0aW9ufVwiXG4gICAgICAgID48L2d2LWRvY3VtZW50YXRpb24+XG4gICAgICA8L2d2LXJlc2l6YWJsZS12aWV3cz5gO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fcHJvcGVydHlTY2hlbWFGb3JtKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyRm9ybSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwicHJvcGVydGllcy1ib3R0b20tY29udGFpbmVyXCI+JHt0aGlzLl9yZW5kZXJEeW5hbWljQ29uZmlndXJhdGlvbigpfTwvZGl2PmA7XG4gICAgfVxuICB9XG5cbiAgX3JlbmRlckR5bmFtaWNDb25maWd1cmF0aW9uKCkge1xuICAgIGNvbnN0IGhhc0R5bmFtaWNDb25maWd1cmF0aW9uID0gdGhpcy5wcm92aWRlciAmJiB0aGlzLnByb3ZpZGVyLmVuYWJsZWQ7XG5cbiAgICBsZXQgY29uZmlndXJlQWN0aW9uID0gJyc7XG4gICAgaWYgKGhhc0R5bmFtaWNDb25maWd1cmF0aW9uIHx8IHRoaXMucmVhZG9ubHkgIT09IHRydWUpIHtcbiAgICAgIGNvbmZpZ3VyZUFjdGlvbiA9IGh0bWxgPGd2LWJ1dHRvblxuICAgICAgICBpY29uPVwidG9vbHM6dG9vbHNcIlxuICAgICAgICBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vbkNvbmZpZ3VyZUR5bmFtaWNQcm9wZXJ0aWVzfVwiXG4gICAgICAgIG91dGxpbmVkXG4gICAgICAgIC5kaXNhYmxlZD1cIiR7dGhpcy5leHBlcnR9XCJcbiAgICAgICAgPkNvbmZpZ3VyZSBkeW5hbWljIHByb3BlcnRpZXM8L2d2LWJ1dHRvblxuICAgICAgPmA7XG4gICAgfVxuXG4gICAgaWYgKGhhc0R5bmFtaWNDb25maWd1cmF0aW9uKSB7XG4gICAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwicHJvcGVydGllcy1tZXNzYWdlXCI+XG4gICAgICAgICAgRHluYW1pYyBwcm9wZXJ0aWVzIHNlcnZpY2UgaXMgYWN0dWFsbHkgaW4gPGNvZGU+cnVubmluZzwvY29kZT4gc3RhdGUgYW5kIHJ1biB3aXRoIGNyb24gZXhwcmVzc2lvblxuICAgICAgICAgIDxjb2RlPiR7dGhpcy5wcm92aWRlci5zY2hlZHVsZX08L2NvZGU+IHVzaW5nIDxjb2RlPiR7dGhpcy5wcm92aWRlci5wcm92aWRlcn08L2NvZGU+IHByb3ZpZGVyLlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgJHtjb25maWd1cmVBY3Rpb259YDtcbiAgICB9IGVsc2UgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCJlbXB0eVwiPk5vIGR5bmFtaWMgcHJvcGVydGllcyBzZXJ2aWNlIGNvbmZpZ3VyZWQ8L2Rpdj5gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY29uZmlndXJlQWN0aW9uO1xuICAgIH1cbiAgfVxuXG4gIF9vbk1vdmUoKSB7XG4gICAgdGhpcy5fY29tcHV0ZVRleHRSb3dzKCk7XG4gIH1cblxuICBfY29tcHV0ZVRleHRSb3dzKCkge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcuY29udGVudCcpO1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIGNvbnN0IHsgaGVpZ2h0IH0gPSBwYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAvLyAtLWd2LXRleHQtLWxoPTMwcHhcbiAgICAgIHRoaXMuX3RleHRSb3dzID0gTWF0aC5yb3VuZChNYXRoLnJvdW5kKGhlaWdodCAtIDIwKSAvIDMwKSAtIDI7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLnByb3ZpZGVycyAmJiB0aGlzLnByb3ZpZGVycy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwicHJvcGVydGllc1wiPlxuICAgICAgICA8Z3YtcmVzaXphYmxlLXZpZXdzIG5vLW92ZXJmbG93IEBndi1yZXNpemFibGUtdmlld3M6bW92ZT1cIiR7dGhpcy5fb25Nb3ZlfVwiIEBndi1yZXNpemFibGUtdmlld3M6cmVzaXplPVwiJHt0aGlzLl9vbk1vdmV9XCI+XG4gICAgICAgICAgPGRpdiBzbG90PVwidG9wXCIgY2xhc3M9XCJib3hcIj4ke3RoaXMuX3JlbmRlclRhYmxlRm9ybSgpfTwvZGl2PlxuICAgICAgICAgIDxkaXYgc2xvdD1cImJvdHRvbVwiPiR7dGhpcy5fcmVuZGVyQm90dG9tKCl9PC9kaXY+XG4gICAgICAgIDwvZ3YtcmVzaXphYmxlLXZpZXdzPlxuICAgICAgPC9kaXY+YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cInByb3BlcnRpZXNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJveFwiPiR7dGhpcy5fcmVuZGVyVGFibGVGb3JtKCl9PC9kaXY+XG4gICAgICA8L2Rpdj5gO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXQgc3R5bGVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICBlbXB0eSxcbiAgICAgIC8vIGxhbmd1YWdlPUNTU1xuICAgICAgY3NzYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICAucHJvcGVydGllcyB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICBndi1yZXNpemFibGUtdmlld3Mge1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LXNjaGVtYS1mb3JtIHtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cblxuICAgICAgICAudGFibGUtYm94IHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNiZmJmYmY7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LXRhYmxlIHtcbiAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogNTBweDtcbiAgICAgICAgICAtLWd2LXRhYmxlLXJvd3MtLW92OiBub25lO1xuICAgICAgICAgIC0tZ3YtdGFibGUtLWNvbG1nOiB2YXIoLS1ndi1wcm9wZXJ0aWVzLXRhYmxlLS1jb2xtZywgMC4ycmVtKTtcbiAgICAgICAgICAtLWd2LXRhYmxlLWNlbGwtLWQ6IGlubGluZTtcbiAgICAgICAgICAtLWd2LXRhYmxlLXJvdy0tYWk6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgLS1ndi10YWJsZS1yb3ctLWFjOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgIC0tZ3YtdGFibGUtaG92ZXItLWJnYzogdmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvci1saWdodGVzdCk7XG4gICAgICAgIH1cblxuICAgICAgICAucHJvcGVydGllcy10aXRsZSB7XG4gICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4ycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLnByb3BlcnRpZXMtYm90dG9tLWNvbnRhaW5lciB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlciB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA0NXB4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAgMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlciAudGl0bGUge1xuICAgICAgICAgIGNvbG9yOiAjMjg0NDRmO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlciAudGl0bGUgc3BhbiB7XG4gICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gICAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgICB9XG5cbiAgICAgICAgLmJveCB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICBmbGV4LWdyb3c6IDE7XG5cbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgICAvKiBmb3IgRmlyZWZveCAqL1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICAgIGZsZXgtZ3JvdzogMTtcblxuICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuXG4gICAgICAgICAgLyogZm9yIEZpcmVmb3ggKi9cbiAgICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcblxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3YtdGV4dCB7XG4gICAgICAgICAgLS1ndi10ZXh0LS1mejogMjBweDtcbiAgICAgICAgICAtLWd2LXRleHQtLWxoOiAyNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgZ3Ytc3dpdGNoIHtcbiAgICAgICAgICAtLWd2LXN3aXRjaC0tdGE6IHJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlciBndi1pbnB1dCB7XG4gICAgICAgICAgbWFyZ2luOiAwIDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuYWRkLWZvcm0sXG4gICAgICAgIC5hZGQtZm9ybS1lcnJvciB7XG4gICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICBtYXJnaW46IGF1dG8gNTBweCBhdXRvIDA7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hZGQtZm9ybSB7XG4gICAgICAgICAgY29sdW1uLWdhcDogdmFyKC0tZ3YtcHJvcGVydGllcy10YWJsZS0tY29sbWcsIDAuMnJlbSk7XG4gICAgICAgICAgYm9yZGVyLXJpZ2h0OiBzb2xpZCB0aGljayB0cmFuc3BhcmVudDtcbiAgICAgICAgICBoZWlnaHQ6IDUwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuYWRkLWZvcm0gZ3YtaW5wdXQsXG4gICAgICAgIGd2LWJ1dHRvbixcbiAgICAgICAgZ3Ytc3dpdGNoIHtcbiAgICAgICAgICBtYXJnaW46IGF1dG8gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hZGQtZm9ybSBndi1zd2l0Y2gge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hZGQtZm9ybS1ncmlkIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDQwcHggYXV0byBhdXRvIDQwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuYWRkLWZvcm0tZ3JpZC13aXRoLWVuY3J5cHRlZC10b2dnbGUge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNDBweCBhdXRvIGF1dG8gMTA1cHggNDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hZGQtZm9ybS1lcnJvcl9leHBlcnQge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIH1cblxuICAgICAgICAuYWRkLWZvcm0tZXJyb3Ige1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNDBweCAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICBjb2RlIHtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tZ3YtdGhlbWUtY29sb3Itd2FybmluZy1kYXJrLCAjZjU3YzAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNvbnRlbnQge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9wZXJ0aWVzLW1lc3NhZ2Uge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIH1cblxuICAgICAgICAucGFnZS1zaXplX19zZWxlY3Qge1xuICAgICAgICAgIG1heC13aWR0aDogNTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWFyY2gtaW5wdXQge1xuICAgICAgICAgIHdpZHRoOiAzMDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGhyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yKTtcbiAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgaGVpZ2h0OiAycHg7XG4gICAgICAgIH1cbiAgICAgIGAsXG4gICAgXTtcbiAgfVxufVxuXG53aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdndi1wcm9wZXJ0aWVzJywgR3ZQcm9wZXJ0aWVzKTtcbiJdfQ==
@@ -13,8 +13,9 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { css, LitElement, html } from 'lit';
17
- import { classMap } from 'lit/directives/class-map';
16
+ import { css, LitElement } from 'lit-element';
17
+ import { html } from 'lit-html';
18
+ import { classMap } from 'lit-html/directives/class-map';
18
19
  import { dispatchCustomEvent } from '../lib/events';
19
20
  /**
20
21
  * Resizable views component
@@ -175,4 +176,4 @@ export class GvResizableViews extends LitElement {
175
176
 
176
177
  }
177
178
  window.customElements.define('gv-resizable-views', GvResizableViews);
178
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1yZXNpemFibGUtdmlld3MuanMiXSwibmFtZXMiOlsiY3NzIiwiTGl0RWxlbWVudCIsImh0bWwiLCJjbGFzc01hcCIsImRpc3BhdGNoQ3VzdG9tRXZlbnQiLCJHdlJlc2l6YWJsZVZpZXdzIiwicHJvcGVydGllcyIsImRpcmVjdGlvbiIsInR5cGUiLCJTdHJpbmciLCJyZWZsZWN0Iiwibm9PdmVyZmxvdyIsIkJvb2xlYW4iLCJhdHRyaWJ1dGUiLCJjb25zdHJ1Y3RvciIsInNwbGl0IiwicmVzaXplIiwibWF4aW1pemVUb3AiLCJtYXhpbWl6ZUJvdHRvbSIsInRvcCIsImJvdHRvbSIsInNoYWRvd1Jvb3QiLCJxdWVyeVNlbGVjdG9yIiwic3R5bGUiLCJoZWlnaHQiLCJzZXRUaW1lb3V0IiwicmVzaXphYmxlIiwicmVzaXplciIsImdldEF0dHJpYnV0ZSIsInByZXZTaWJsaW5nIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsIm5leHRTaWJsaW5nIiwibmV4dEVsZW1lbnRTaWJsaW5nIiwieCIsInkiLCJwcmV2U2libGluZ0hlaWdodCIsInByZXZTaWJsaW5nV2lkdGgiLCJtZSIsIm1vdXNlRG93bkhhbmRsZXIiLCJlIiwidGFyZ2V0IiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJyZW1vdmUiLCJjbGllbnRYIiwiY2xpZW50WSIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aWR0aCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsIm1vdXNlTW92ZUhhbmRsZXIiLCJtb3VzZVVwSGFuZGxlciIsImR4IiwiZHkiLCJwYXJlbnROb2RlIiwiY3Vyc29yIiwiYWRkIiwiYm9keSIsInVzZXJTZWxlY3QiLCJwb2ludGVyRXZlbnRzIiwicmVtb3ZlUHJvcGVydHkiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZmlyc3RVcGRhdGVkIiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJlbHQiLCJzaGFwZSIsInJlbmRlciIsImJveCIsInRyYW5zaXRpb24iLCJzdHlsZXMiLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsR0FBVCxFQUFjQyxVQUFkLEVBQTBCQyxJQUExQixRQUFzQyxLQUF0QztBQUNBLFNBQVNDLFFBQVQsUUFBeUIsMEJBQXpCO0FBQ0EsU0FBU0MsbUJBQVQsUUFBb0MsZUFBcEM7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxnQkFBTixTQUErQkosVUFBL0IsQ0FBMEM7QUFDMUIsYUFBVkssVUFBVSxHQUFHO0FBQ3RCLFdBQU87QUFDTEMsTUFBQUEsU0FBUyxFQUFFO0FBQUVDLFFBQUFBLElBQUksRUFBRUMsTUFBUjtBQUFnQkMsUUFBQUEsT0FBTyxFQUFFO0FBQXpCLE9BRE47QUFFTEMsTUFBQUEsVUFBVSxFQUFFO0FBQUVILFFBQUFBLElBQUksRUFBRUksT0FBUjtBQUFpQkMsUUFBQUEsU0FBUyxFQUFFO0FBQTVCO0FBRlAsS0FBUDtBQUlEOztBQUVEQyxFQUFBQSxXQUFXLEdBQUc7QUFDWjtBQUNBLFNBQUtQLFNBQUwsR0FBaUIsVUFBakI7QUFDRDs7QUFFRFEsRUFBQUEsS0FBSyxHQUFHO0FBQ04sU0FBS0MsTUFBTDtBQUNEOztBQUVEQyxFQUFBQSxXQUFXLEdBQUc7QUFDWixTQUFLRCxNQUFMLENBQVksRUFBWixFQUFnQixFQUFoQjtBQUNEOztBQUVERSxFQUFBQSxjQUFjLEdBQUc7QUFDZixTQUFLRixNQUFMLENBQVksRUFBWixFQUFnQixFQUFoQjtBQUNEOztBQUVEQSxFQUFBQSxNQUFNLENBQUNHLEdBQUcsR0FBRyxFQUFQLEVBQVdDLE1BQU0s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QUQsQ0FEYiwyRkFHZ0MsS0FBS0osU0FIckMsc0JBSWEsS0FBSzRELEtBSmxCLGdPQWFtQixLQUFLbEQsV0FieEIsZ0lBcUJtQixLQUFLRixLQXJCeEIsa0lBNkJtQixLQUFLRyxjQTdCeEIsNEZBQVg7QUFvQ0Q7O0FBRWdCLGFBQU5xRCxNQUFNLEdBQUc7QUFDbEIsV0FBTyxDQUNMO0FBQ0F2RSxJQUFBQSxHQUFHLG11RUFGRSxDQUFQO0FBbU1EOztBQXpXOEM7QUE0V2pEd0UsTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2QixvQkFBN0IsRUFBbURyRSxnQkFBbkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBMaXRFbGVtZW50LCBodG1sIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvY2xhc3MtbWFwJztcbmltcG9ydCB7IGRpc3BhdGNoQ3VzdG9tRXZlbnQgfSBmcm9tICcuLi9saWIvZXZlbnRzJztcblxuLyoqXG4gKiBSZXNpemFibGUgdmlld3MgY29tcG9uZW50XG4gKlxuICogQGZpcmVzIGd2LXJlc2l6YWJsZS12aWV3czpyZXNpemUgLSB3aGVuIHVzZXIgY2xpY2sgdG8gcmVzaXplIGFjdGlvblxuICogQGZpcmVzIGd2LXJlc2l6YWJsZS12aWV3czptb3ZlIC0gd2hlbiB1c2VyIG1vdmUgdGhlIHJlc2l6ZSBjdXJzb3JcbiAqXG4gKiBAc2xvdCB0b3AgLSBUaGUgdG9wIGNvbnRlbnRcbiAqIEBzbG90IGJvdHRvbSAtIFRoZSBib3R0b20gY29udGVudFxuICpcbiAqIEBhdHRyIHtTdHJpbmd9IGRpcmVjdGlvbiAtIHRoZSBkaXJlY3Rpb24gW3ZlcnRpY2FsfGhvcml6b25hbF1cbiAqIEBhdHRyIHtCb29sZWFufSBuby1vdmVyZmxvdyAtIHRydWUgaWYgc2xvdCBjb250YWluZXJzIHNob3VsZCBoYXZlIGBvdmVyZmxvdzogaGlkZGVuYFxuICovXG5leHBvcnQgY2xhc3MgR3ZSZXNpemFibGVWaWV3cyBleHRlbmRzIExpdEVsZW1lbnQge1xuICBzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpcmVjdGlvbjogeyB0eXBlOiBTdHJpbmcsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIG5vT3ZlcmZsb3c6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAnbm8tb3ZlcmZsb3cnIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kaXJlY3Rpb24gPSAndmVydGljYWwnO1xuICB9XG5cbiAgc3BsaXQoKSB7XG4gICAgdGhpcy5yZXNpemUoKTtcbiAgfVxuXG4gIG1heGltaXplVG9wKCkge1xuICAgIHRoaXMucmVzaXplKDg1LCAxNSk7XG4gIH1cblxuICBtYXhpbWl6ZUJvdHRvbSgpIHtcbiAgICB0aGlzLnJlc2l6ZSgyMCwgODApO1xuICB9XG5cbiAgcmVzaXplKHRvcCA9IDUwLCBib3R0b20gPSA1MCkge1xuICAgIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcudG9wJykuc3R5bGUuaGVpZ2h0ID0gYCR7dG9wfSVgO1xuICAgIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcuYm90dG9tJykuc3R5bGUuaGVpZ2h0ID0gYCR7Ym90dG9tfSVgO1xuICAgIC8vIERpc3BhdGNoIGV2ZW50IGFmdGVyIHRyYW5zaXRpb25cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ3Jlc2l6ZScsIHsgdG9wLCBib3R0b20gfSk7XG4gICAgfSwgMzUwKTtcbiAgfVxuXG4gIHJlc2l6YWJsZShyZXNpemVyKSB7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gcmVzaXplci5nZXRBdHRyaWJ1dGUoJ2RhdGEtZGlyZWN0aW9uJykgfHwgJ2hvcml6b250YWwnO1xuICAgIGNvbnN0IHByZXZTaWJsaW5nID0gcmVzaXplci5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICAgIGNvbnN0IG5leHRTaWJsaW5nID0gcmVzaXplci5uZXh0RWxlbWVudFNpYmxpbmc7XG5cbiAgICAvLyBUaGUgY3VycmVudCBwb3NpdGlvbiBvZiBtb3VzZVxuICAgIGxldCB4ID0gMDtcbiAgICBsZXQgeSA9IDA7XG4gICAgbGV0IHByZXZTaWJsaW5nSGVpZ2h0ID0gMDtcbiAgICBsZXQgcHJldlNpYmxpbmdXaWR0aCA9IDA7XG4gICAgY29uc3Qgc2hhZG93Um9vdCA9IHRoaXMuc2hhZG93Um9vdDtcbiAgICBjb25zdCBtZSA9IHRoaXM7XG5cbiAgICAvLyBIYW5kbGUgdGhlIG1vdXNlZG93biBldmVudFxuICAgIC8vIHRoYXQncyB0cmlnZ2VyZWQgd2hlbiB1c2VyIGRyYWdzIHRoZSByZXNpemVyXG4gICAgY29uc3QgbW91c2VEb3duSGFuZGxlciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoIWUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnYWN0aW9uJykpIHtcbiAgICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IG1vdXNlIHBvc2l0aW9uXG4gICAgICAgIHNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignLmJveCcpLmNsYXNzTGlzdC5yZW1vdmUoJ3RyYW5zaXRpb24nKTtcbiAgICAgICAgeCA9IGUuY2xpZW50WDtcbiAgICAgICAgeSA9IGUuY2xpZW50WTtcbiAgICAgICAgY29uc3QgcmVjdCA9IHByZXZTaWJsaW5nLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBwcmV2U2libGluZ0hlaWdodCA9IHJlY3QuaGVpZ2h0O1xuICAgICAgICBwcmV2U2libGluZ1dpZHRoID0gcmVjdC53aWR0aDtcblxuICAgICAgICAvLyBBdHRhY2ggdGhlIGxpc3RlbmVycyB0byBgZG9jdW1lbnRgXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcEhhbmRsZXIpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBtb3VzZU1vdmVIYW5kbGVyID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIC8vIEhvdyBmYXIgdGhlIG1vdXNlIGhhcyBiZWVuIG1vdmVkXG4gICAgICBjb25zdCBkeCA9IGUuY2xpZW50WCAtIHg7XG4gICAgICBjb25zdCBkeSA9IGUuY2xpZW50WSAtIHk7XG4gICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KG1lLCAnbW92ZScsIHsgZGlyZWN0aW9uIH0pO1xuICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgICAgY2FzZSAndmVydGljYWwnOlxuICAgICAgICAgIHByZXZTaWJsaW5nLnN0eWxlLmhlaWdodCA9IGAkeygocHJldlNpYmxpbmdIZWlnaHQgKyBkeSkgKiAxMDApIC8gcmVzaXplci5wYXJlbnROb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH0lYDtcbiAgICAgICAgICBuZXh0U2libGluZy5zdHlsZS5oZWlnaHQgPSBgJHsxMDAgLSAoKHByZXZTaWJsaW5nSGVpZ2h0ICsgZHkpICogMTAwKSAvIHJlc2l6ZXIucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHR9JWA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2hvcml6b250YWwnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHByZXZTaWJsaW5nLnN0eWxlLndpZHRoID0gYCR7KChwcmV2U2libGluZ1dpZHRoICsgZHgpICogMTAwKSAvIHJlc2l6ZXIucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aH0lYDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY29uc3QgY3Vyc29yID0gZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgPyAnY29sLXJlc2l6ZScgOiAncm93LXJlc2l6ZSc7XG4gICAgICByZXNpemVyLnN0eWxlLmN1cnNvciA9IGN1cnNvcjtcbiAgICAgIHJlc2l6ZXIuY2xhc3NMaXN0LmFkZCgnZHJhZycpO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSBjdXJzb3I7XG5cbiAgICAgIHByZXZTaWJsaW5nLnN0eWxlLnVzZXJTZWxlY3QgPSAnbm9uZSc7XG4gICAgICBwcmV2U2libGluZy5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuXG4gICAgICBuZXh0U2libGluZy5zdHlsZS51c2VyU2VsZWN0ID0gJ25vbmUnO1xuICAgICAgbmV4dFNpYmxpbmcuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICB9O1xuXG4gICAgY29uc3QgbW91c2VVcEhhbmRsZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXNpemVyLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdjdXJzb3InKTtcbiAgICAgIHJlc2l6ZXIuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZycpO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnY3Vyc29yJyk7XG5cbiAgICAgIHByZXZTaWJsaW5nLnN0eWxlLnJlbW92ZVByb3BlcnR5KCd1c2VyLXNlbGVjdCcpO1xuICAgICAgcHJldlNpYmxpbmcuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3BvaW50ZXItZXZlbnRzJyk7XG5cbiAgICAgIG5leHRTaWJsaW5nLnN0eWxlLnJlbW92ZVByb3BlcnR5KCd1c2VyLXNlbGVjdCcpO1xuICAgICAgbmV4dFNpYmxpbmcuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3BvaW50ZXItZXZlbnRzJyk7XG5cbiAgICAgIC8vIFJlbW92ZSB0aGUgaGFuZGxlcnMgb2YgYG1vdXNlbW92ZWAgYW5kIGBtb3VzZXVwYFxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlSGFuZGxlcik7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcEhhbmRsZXIpO1xuXG4gICAgICBzaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy5ib3gnKS5jbGFzc0xpc3QuYWRkKCd0cmFuc2l0aW9uJyk7XG4gICAgfTtcblxuICAgIC8vIEF0dGFjaCB0aGUgaGFuZGxlclxuICAgIHJlc2l6ZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgbW91c2VEb3duSGFuZGxlcik7XG4gIH1cblxuICBmaXJzdFVwZGF0ZWQoKSB7XG4gICAgdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZXNpemVyJykuZm9yRWFjaCgoZWx0KSA9PiB0aGlzLnJlc2l6YWJsZShlbHQpKTtcbiAgfVxuXG4gIGdldCBzaGFwZSgpIHtcbiAgICBpZiAodGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykge1xuICAgICAgcmV0dXJuICdkZXNpZ246dmVydGljYWwnO1xuICAgIH1cbiAgICByZXR1cm4gJ2Rlc2lnbjpob3Jpem9udGFsJztcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgYm94OiB0cnVlLCB0cmFuc2l0aW9uOiB0cnVlLCAnbm8tb3ZlcmZsb3cnOiB0aGlzLm5vT3ZlcmZsb3cgfSl9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b3BcIj48c2xvdCBuYW1lPVwidG9wXCI+PC9zbG90PjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaXplclwiIGRhdGEtZGlyZWN0aW9uPVwiJHt0aGlzLmRpcmVjdGlvbn1cIj5cbiAgICAgICAgICA8Z3YtaWNvbiBzaGFwZT1cIiR7dGhpcy5zaGFwZX1cIj48L2d2LWljb24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxndi1pY29uIGNsYXNzPVwibGF5b3V0LWljb25cIiBzaGFwZT1cImxheW91dDpsYXlvdXQtcmlnaHQtcGFuZWwtMlwiPjwvZ3YtaWNvbj5cbiAgICAgICAgICAgIDxndi1idXR0b25cbiAgICAgICAgICAgICAgc21hbGxcbiAgICAgICAgICAgICAgbGlua1xuICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvblwiXG4gICAgICAgICAgICAgIGljb249XCJsYXlvdXQ6bGF5b3V0LWJvdHRvbS1wYW5lbFwiXG4gICAgICAgICAgICAgIHRpdGxlPVwiTWF4aW1pemUgdG9wXCJcbiAgICAgICAgICAgICAgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5tYXhpbWl6ZVRvcH1cIlxuICAgICAgICAgICAgPjwvZ3YtYnV0dG9uPlxuICAgICAgICAgICAgPGd2LWJ1dHRvblxuICAgICAgICAgICAgICBzbWFsbFxuICAgICAgICAgICAgICBsaW5rXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uXCJcbiAgICAgICAgICAgICAgaWNvbj1cImxheW91dDpsYXlvdXQtaG9yaXpvbnRhbC0yXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJTcGxpdCBzY3JlZW5cIlxuICAgICAgICAgICAgICBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLnNwbGl0fVwiXG4gICAgICAgICAgICA+PC9ndi1idXR0b24+XG4gICAgICAgICAgICA8Z3YtYnV0dG9uXG4gICAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICAgIGxpbmtcbiAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25cIlxuICAgICAgICAgICAgICBpY29uPVwibGF5b3V0OmxheW91dC10b3AtcGFuZWwtNlwiXG4gICAgICAgICAgICAgIHRpdGxlPVwiTWF4aW1pemUgYm90dG9tXCJcbiAgICAgICAgICAgICAgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5tYXhpbWl6ZUJvdHRvbX1cIlxuICAgICAgICAgICAgPjwvZ3YtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbVwiPjxzbG90IG5hbWU9XCJib3R0b21cIj48L3Nsb3Q+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG5cbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIGxhbmd1YWdlPWNzc1xuICAgICAgY3NzYFxuICAgICAgICAuYm94IHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICBmbGV4OiAxIDEgMDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW2RpcmVjdGlvbj0naG9yaXpvbnRhbCddKSAuYm94IHtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW2RpcmVjdGlvbj0naG9yaXpvbnRhbCddKSAubGF5b3V0LWljb24ge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAqIHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB9XG5cbiAgICAgICAgOjpzbG90dGVkKCopIHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAubm8tb3ZlcmZsb3cgOjpzbG90dGVkKCopIHtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRvcCxcbiAgICAgICAgLmJvdHRvbSB7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5vLW92ZXJmbG93IC50b3AsXG4gICAgICAgIC5uby1vdmVyZmxvdyAuYm90dG9tIHtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJvdHRvbSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAubGVmdCB7XG4gICAgICAgICAgd2lkdGg6IDcwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5sZWZ0LFxuICAgICAgICAucmlnaHQge1xuICAgICAgICAgIHBhZGRpbmc6IDAuMnJlbTtcbiAgICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIC50b3AsXG4gICAgICAgIC5ib3R0b20ge1xuICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2JmYmZiZjtcbiAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjYmZiZmJmO1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtkaXJlY3Rpb249J2hvcml6b250YWwnXSkgLnRvcCB7XG4gICAgICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW2RpcmVjdGlvbj0naG9yaXpvbnRhbCddKSAuYm90dG9tIHtcbiAgICAgICAgICBib3JkZXItbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50cmFuc2l0aW9uIC50b3AsXG4gICAgICAgIC50cmFuc2l0aW9uIC5ib3R0b20ge1xuICAgICAgICAgIHRyYW5zaXRpb246IGhlaWdodCAzNTBtcyBlYXNlLWluLW91dDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50b3Age1xuICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgICAgICAgIGhlaWdodDogNTAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJvdHRvbSB7XG4gICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgICAgICAgaGVpZ2h0OiA1MCU7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbZGlyZWN0aW9uPSdob3Jpem9udGFsJ10pIC50b3AsXG4gICAgICAgIDpob3N0KFtkaXJlY3Rpb249J2hvcml6b250YWwnXSkgLmJvdHRvbSB7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgIH1cblxuICAgICAgICAucmVzaXplciB7XG4gICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Q5ZDlkOTtcbiAgICAgICAgICAtLWd2LWljb24tLXM6IDIwcHg7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgICAgLS1ndi1pY29uLS1jOiAjMjg0NDRmO1xuICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0O1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yZXNpemVyLmRyYWcge1xuICAgICAgICAgIGJvcmRlci13aWR0aDogNHB4IDA7XG4gICAgICAgICAgYm9yZGVyLXN0eWxlOiBkb3VibGU7XG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiAjZDlkOWQ5O1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnJlc2l6ZXIgZ3YtaWNvbixcbiAgICAgICAgLnJlc2l6ZXIgLmFjdGlvbnMge1xuICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgLnJlc2l6ZXIuZHJhZyBndi1pY29uLFxuICAgICAgICAucmVzaXplci5kcmFnIC5hY3Rpb25zIHtcbiAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtkaXJlY3Rpb249J2hvcml6b250YWwnXSkgLnJlc2l6ZXIuZHJhZyB7XG4gICAgICAgICAgYm9yZGVyLXdpZHRoOiAwIDRweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yZXNpemVyID4gZ3YtaWNvbiB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW2RpcmVjdGlvbj0naG9yaXpvbnRhbCddKSAucmVzaXplciB7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbZGlyZWN0aW9uPSd2ZXJ0aWNhbCddKSAucmVzaXplciBndi1pY29uIHtcbiAgICAgICAgICByaWdodDogNDVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtkaXJlY3Rpb249J2hvcml6b250YWwnXSkgLnJlc2l6ZXIgZ3YtaWNvbiB7XG4gICAgICAgICAgbGVmdDogLTlweDtcbiAgICAgICAgICB0b3A6IDQ1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAucmVzaXplcltkYXRhLWRpcmVjdGlvbj0ndmVydGljYWwnXSB7XG4gICAgICAgICAgY3Vyc29yOiBucy1yZXNpemU7XG4gICAgICAgICAgaGVpZ2h0OiAycHg7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAucmVzaXplcltkYXRhLWRpcmVjdGlvbj0naG9yaXpvbnRhbCddIHtcbiAgICAgICAgICBjdXJzb3I6IGV3LXJlc2l6ZTtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgd2lkdGg6IDJweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hY3Rpb25zIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAtMjJweDtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgICAgICAgcGFkZGluZzogMCAwLjJyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Q5ZDlkOTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hY3Rpb25zIGd2LWJ1dHRvbiB7XG4gICAgICAgICAgbWFyZ2luOiAwLjJyZW0gMC4xcmVtO1xuICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDI1MG1zIGVhc2UtaW4tb3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmFjdGlvbnM6Zm9jdXMtd2l0aGluLFxuICAgICAgICAuYWN0aW9uczpob3ZlciB7XG4gICAgICAgICAgcGFkZGluZzogMC4ycmVtO1xuICAgICAgICAgIG1hcmdpbi10b3A6IC02NnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmFjdGlvbnM6Zm9jdXMtd2l0aGluIGd2LWJ1dHRvbixcbiAgICAgICAgLmFjdGlvbnM6aG92ZXIgZ3YtYnV0dG9uIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aW9uczpmb2N1cy13aXRoaW4gZ3YtaWNvbixcbiAgICAgICAgLmFjdGlvbnM6aG92ZXIgZ3YtaWNvbiB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LXJlc2l6YWJsZS12aWV3cycsIEd2UmVzaXphYmxlVmlld3MpO1xuIl19
179
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1yZXNpemFibGUtdmlld3MuanMiXSwibmFtZXMiOlsiY3NzIiwiTGl0RWxlbWVudCIsImh0bWwiLCJjbGFzc01hcCIsImRpc3BhdGNoQ3VzdG9tRXZlbnQiLCJHdlJlc2l6YWJsZVZpZXdzIiwicHJvcGVydGllcyIsImRpcmVjdGlvbiIsInR5cGUiLCJTdHJpbmciLCJyZWZsZWN0Iiwibm9PdmVyZmxvdyIsIkJvb2xlYW4iLCJhdHRyaWJ1dGUiLCJjb25zdHJ1Y3RvciIsInNwbGl0IiwicmVzaXplIiwibWF4aW1pemVUb3AiLCJtYXhpbWl6ZUJvdHRvbSIsInRvcCIsImJvdHRvbSIsInNoYWRvd1Jvb3QiLCJxdWVyeVNlbGVjdG9yIiwic3R5bGUiLCJoZWlnaHQiLCJzZXRUaW1lb3V0IiwicmVzaXphYmxlIiwicmVzaXplciIsImdldEF0dHJpYnV0ZSIsInByZXZTaWJsaW5nIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsIm5leHRTaWJsaW5nIiwibmV4dEVsZW1lbnRTaWJsaW5nIiwieCIsInkiLCJwcmV2U2libGluZ0hlaWdodCIsInByZXZTaWJsaW5nV2lkdGgiLCJtZSIsIm1vdXNlRG93bkhhbmRsZXIiLCJlIiwidGFyZ2V0IiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJyZW1vdmUiLCJjbGllbnRYIiwiY2xpZW50WSIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aWR0aCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsIm1vdXNlTW92ZUhhbmRsZXIiLCJtb3VzZVVwSGFuZGxlciIsImR4IiwiZHkiLCJwYXJlbnROb2RlIiwiY3Vyc29yIiwiYWRkIiwiYm9keSIsInVzZXJTZWxlY3QiLCJwb2ludGVyRXZlbnRzIiwicmVtb3ZlUHJvcGVydHkiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZmlyc3RVcGRhdGVkIiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJlbHQiLCJzaGFwZSIsInJlbmRlciIsImJveCIsInRyYW5zaXRpb24iLCJzdHlsZXMiLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsR0FBVCxFQUFjQyxVQUFkLFFBQWdDLGFBQWhDO0FBQ0EsU0FBU0MsSUFBVCxRQUFxQixVQUFyQjtBQUNBLFNBQVNDLFFBQVQsUUFBeUIsK0JBQXpCO0FBQ0EsU0FBU0MsbUJBQVQsUUFBb0MsZUFBcEM7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxnQkFBTixTQUErQkosVUFBL0IsQ0FBMEM7QUFDMUIsYUFBVkssVUFBVSxHQUFHO0FBQ3RCLFdBQU87QUFDTEMsTUFBQUEsU0FBUyxFQUFFO0FBQUVDLFFBQUFBLElBQUksRUFBRUMsTUFBUjtBQUFnQkMsUUFBQUEsT0FBTyxFQUFFO0FBQXpCLE9BRE47QUFFTEMsTUFBQUEsVUFBVSxFQUFFO0FBQUVILFFBQUFBLElBQUksRUFBRUksT0FBUjtBQUFpQkMsUUFBQUEsU0FBUyxFQUFFO0FBQTVCO0FBRlAsS0FBUDtBQUlEOztBQUVEQyxFQUFBQSxXQUFXLEdBQUc7QUFDWjtBQUNBLFNBQUtQLFNBQUwsR0FBaUIsVUFBakI7QUFDRDs7QUFFRFEsRUFBQUEsS0FBSyxHQUFHO0FBQ04sU0FBS0MsTUFBTDtBQUNEOztBQUVEQyxFQUFBQSxXQUFXLEdBQUc7QUFDWixTQUFLRCxNQUFMLENBQVksRUFBWixFQUFnQixFQUFoQjtBQUNEOztBQUVERSxFQUFBQSxjQUFjLEdBQUc7QUFDZixTQUFLRixNQUFMLENBQVksRUFBWixFQUFnQixFQUFoQjtBQUNEOztBQUVEQSxFQUFBQSxNQUFNLENBQUNHLEdBQUcsR0FBRyxF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S0FBSzNEO0FBQW5ELEtBQUQsQ0FEYiwyRkFHZ0MsS0FBS0osU0FIckMsc0JBSWEsS0FBSzRELEtBSmxCLGdPQWFtQixLQUFLbEQsV0FieEIsZ0lBcUJtQixLQUFLRixLQXJCeEIsa0lBNkJtQixLQUFLRyxjQTdCeEIsNEZBQVg7QUFvQ0Q7O0FBRWdCLGFBQU5xRCxNQUFNLEdBQUc7QUFDbEIsV0FBTyxDQUNMO0FBQ0F2RSxJQUFBQSxHQUFHLG11RUFGRSxDQUFQO0FBbU1EOztBQXpXOEM7QUE0V2pEd0UsTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2QixvQkFBN0IsRUFBbURyRSxnQkFBbkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0LWVsZW1lbnQnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdC1odG1sJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0LWh0bWwvZGlyZWN0aXZlcy9jbGFzcy1tYXAnO1xuaW1wb3J0IHsgZGlzcGF0Y2hDdXN0b21FdmVudCB9IGZyb20gJy4uL2xpYi9ldmVudHMnO1xuXG4vKipcbiAqIFJlc2l6YWJsZSB2aWV3cyBjb21wb25lbnRcbiAqXG4gKiBAZmlyZXMgZ3YtcmVzaXphYmxlLXZpZXdzOnJlc2l6ZSAtIHdoZW4gdXNlciBjbGljayB0byByZXNpemUgYWN0aW9uXG4gKiBAZmlyZXMgZ3YtcmVzaXphYmxlLXZpZXdzOm1vdmUgLSB3aGVuIHVzZXIgbW92ZSB0aGUgcmVzaXplIGN1cnNvclxuICpcbiAqIEBzbG90IHRvcCAtIFRoZSB0b3AgY29udGVudFxuICogQHNsb3QgYm90dG9tIC0gVGhlIGJvdHRvbSBjb250ZW50XG4gKlxuICogQGF0dHIge1N0cmluZ30gZGlyZWN0aW9uIC0gdGhlIGRpcmVjdGlvbiBbdmVydGljYWx8aG9yaXpvbmFsXVxuICogQGF0dHIge0Jvb2xlYW59IG5vLW92ZXJmbG93IC0gdHJ1ZSBpZiBzbG90IGNvbnRhaW5lcnMgc2hvdWxkIGhhdmUgYG92ZXJmbG93OiBoaWRkZW5gXG4gKi9cbmV4cG9ydCBjbGFzcyBHdlJlc2l6YWJsZVZpZXdzIGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlyZWN0aW9uOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgbm9PdmVyZmxvdzogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6ICduby1vdmVyZmxvdycgfSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmRpcmVjdGlvbiA9ICd2ZXJ0aWNhbCc7XG4gIH1cblxuICBzcGxpdCgpIHtcbiAgICB0aGlzLnJlc2l6ZSgpO1xuICB9XG5cbiAgbWF4aW1pemVUb3AoKSB7XG4gICAgdGhpcy5yZXNpemUoODUsIDE1KTtcbiAgfVxuXG4gIG1heGltaXplQm90dG9tKCkge1xuICAgIHRoaXMucmVzaXplKDIwLCA4MCk7XG4gIH1cblxuICByZXNpemUodG9wID0gNTAsIGJvdHRvbSA9IDUwKSB7XG4gICAgdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy50b3AnKS5zdHlsZS5oZWlnaHQgPSBgJHt0b3B9JWA7XG4gICAgdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy5ib3R0b20nKS5zdHlsZS5oZWlnaHQgPSBgJHtib3R0b219JWA7XG4gICAgLy8gRGlzcGF0Y2ggZXZlbnQgYWZ0ZXIgdHJhbnNpdGlvblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAncmVzaXplJywgeyB0b3AsIGJvdHRvbSB9KTtcbiAgICB9LCAzNTApO1xuICB9XG5cbiAgcmVzaXphYmxlKHJlc2l6ZXIpIHtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSByZXNpemVyLmdldEF0dHJpYnV0ZSgnZGF0YS1kaXJlY3Rpb24nKSB8fCAnaG9yaXpvbnRhbCc7XG4gICAgY29uc3QgcHJldlNpYmxpbmcgPSByZXNpemVyLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgY29uc3QgbmV4dFNpYmxpbmcgPSByZXNpemVyLm5leHRFbGVtZW50U2libGluZztcblxuICAgIC8vIFRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIG1vdXNlXG4gICAgbGV0IHggPSAwO1xuICAgIGxldCB5ID0gMDtcbiAgICBsZXQgcHJldlNpYmxpbmdIZWlnaHQgPSAwO1xuICAgIGxldCBwcmV2U2libGluZ1dpZHRoID0gMDtcbiAgICBjb25zdCBzaGFkb3dSb290ID0gdGhpcy5zaGFkb3dSb290O1xuICAgIGNvbnN0IG1lID0gdGhpcztcblxuICAgIC8vIEhhbmRsZSB0aGUgbW91c2Vkb3duIGV2ZW50XG4gICAgLy8gdGhhdCdzIHRyaWdnZXJlZCB3aGVuIHVzZXIgZHJhZ3MgdGhlIHJlc2l6ZXJcbiAgICBjb25zdCBtb3VzZURvd25IYW5kbGVyID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmICghZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdhY3Rpb24nKSkge1xuICAgICAgICAvLyBHZXQgdGhlIGN1cnJlbnQgbW91c2UgcG9zaXRpb25cbiAgICAgICAgc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcuYm94JykuY2xhc3NMaXN0LnJlbW92ZSgndHJhbnNpdGlvbicpO1xuICAgICAgICB4ID0gZS5jbGllbnRYO1xuICAgICAgICB5ID0gZS5jbGllbnRZO1xuICAgICAgICBjb25zdCByZWN0ID0gcHJldlNpYmxpbmcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHByZXZTaWJsaW5nSGVpZ2h0ID0gcmVjdC5oZWlnaHQ7XG4gICAgICAgIHByZXZTaWJsaW5nV2lkdGggPSByZWN0LndpZHRoO1xuXG4gICAgICAgIC8vIEF0dGFjaCB0aGUgbGlzdGVuZXJzIHRvIGBkb2N1bWVudGBcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlSGFuZGxlcik7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBtb3VzZVVwSGFuZGxlcik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG1vdXNlTW92ZUhhbmRsZXIgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgLy8gSG93IGZhciB0aGUgbW91c2UgaGFzIGJlZW4gbW92ZWRcbiAgICAgIGNvbnN0IGR4ID0gZS5jbGllbnRYIC0geDtcbiAgICAgIGNvbnN0IGR5ID0gZS5jbGllbnRZIC0geTtcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQobWUsICdtb3ZlJywgeyBkaXJlY3Rpb24gfSk7XG4gICAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgICBjYXNlICd2ZXJ0aWNhbCc6XG4gICAgICAgICAgcHJldlNpYmxpbmcuc3R5bGUuaGVpZ2h0ID0gYCR7KChwcmV2U2libGluZ0hlaWdodCArIGR5KSAqIDEwMCkgLyByZXNpemVyLnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0fSVgO1xuICAgICAgICAgIG5leHRTaWJsaW5nLnN0eWxlLmhlaWdodCA9IGAkezEwMCAtICgocHJldlNpYmxpbmdIZWlnaHQgKyBkeSkgKiAxMDApIC8gcmVzaXplci5wYXJlbnROb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH0lYDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaG9yaXpvbnRhbCc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcHJldlNpYmxpbmcuc3R5bGUud2lkdGggPSBgJHsoKHByZXZTaWJsaW5nV2lkdGggKyBkeCkgKiAxMDApIC8gcmVzaXplci5wYXJlbnROb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofSVgO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjdXJzb3IgPSBkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/ICdjb2wtcmVzaXplJyA6ICdyb3ctcmVzaXplJztcbiAgICAgIHJlc2l6ZXIuc3R5bGUuY3Vyc29yID0gY3Vyc29yO1xuICAgICAgcmVzaXplci5jbGFzc0xpc3QuYWRkKCdkcmFnJyk7XG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IGN1cnNvcjtcblxuICAgICAgcHJldlNpYmxpbmcuc3R5bGUudXNlclNlbGVjdCA9ICdub25lJztcbiAgICAgIHByZXZTaWJsaW5nLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG5cbiAgICAgIG5leHRTaWJsaW5nLnN0eWxlLnVzZXJTZWxlY3QgPSAnbm9uZSc7XG4gICAgICBuZXh0U2libGluZy5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgIH07XG5cbiAgICBjb25zdCBtb3VzZVVwSGFuZGxlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlc2l6ZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2N1cnNvcicpO1xuICAgICAgcmVzaXplci5jbGFzc0xpc3QucmVtb3ZlKCdkcmFnJyk7XG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdjdXJzb3InKTtcblxuICAgICAgcHJldlNpYmxpbmcuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3VzZXItc2VsZWN0Jyk7XG4gICAgICBwcmV2U2libGluZy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgncG9pbnRlci1ldmVudHMnKTtcblxuICAgICAgbmV4dFNpYmxpbmcuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3VzZXItc2VsZWN0Jyk7XG4gICAgICBuZXh0U2libGluZy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgncG9pbnRlci1ldmVudHMnKTtcblxuICAgICAgLy8gUmVtb3ZlIHRoZSBoYW5kbGVycyBvZiBgbW91c2Vtb3ZlYCBhbmQgYG1vdXNldXBgXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3VzZU1vdmVIYW5kbGVyKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBtb3VzZVVwSGFuZGxlcik7XG5cbiAgICAgIHNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignLmJveCcpLmNsYXNzTGlzdC5hZGQoJ3RyYW5zaXRpb24nKTtcbiAgICB9O1xuXG4gICAgLy8gQXR0YWNoIHRoZSBoYW5kbGVyXG4gICAgcmVzaXplci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBtb3VzZURvd25IYW5kbGVyKTtcbiAgfVxuXG4gIGZpcnN0VXBkYXRlZCgpIHtcbiAgICB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnLnJlc2l6ZXInKS5mb3JFYWNoKChlbHQpID0+IHRoaXMucmVzaXphYmxlKGVsdCkpO1xuICB9XG5cbiAgZ2V0IHNoYXBlKCkge1xuICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICByZXR1cm4gJ2Rlc2lnbjp2ZXJ0aWNhbCc7XG4gICAgfVxuICAgIHJldHVybiAnZGVzaWduOmhvcml6b250YWwnO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyBib3g6IHRydWUsIHRyYW5zaXRpb246IHRydWUsICduby1vdmVyZmxvdyc6IHRoaXMubm9PdmVyZmxvdyB9KX1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRvcFwiPjxzbG90IG5hbWU9XCJ0b3BcIj48L3Nsb3Q+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXNpemVyXCIgZGF0YS1kaXJlY3Rpb249XCIke3RoaXMuZGlyZWN0aW9ufVwiPlxuICAgICAgICAgIDxndi1pY29uIHNoYXBlPVwiJHt0aGlzLnNoYXBlfVwiPjwvZ3YtaWNvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGd2LWljb24gY2xhc3M9XCJsYXlvdXQtaWNvblwiIHNoYXBlPVwibGF5b3V0OmxheW91dC1yaWdodC1wYW5lbC0yXCI+PC9ndi1pY29uPlxuICAgICAgICAgICAgPGd2LWJ1dHRvblxuICAgICAgICAgICAgICBzbWFsbFxuICAgICAgICAgICAgICBsaW5rXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uXCJcbiAgICAgICAgICAgICAgaWNvbj1cImxheW91dDpsYXlvdXQtYm90dG9tLXBhbmVsXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJNYXhpbWl6ZSB0b3BcIlxuICAgICAgICAgICAgICBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLm1heGltaXplVG9wfVwiXG4gICAgICAgICAgICA+PC9ndi1idXR0b24+XG4gICAgICAgICAgICA8Z3YtYnV0dG9uXG4gICAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICAgIGxpbmtcbiAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25cIlxuICAgICAgICAgICAgICBpY29uPVwibGF5b3V0OmxheW91dC1ob3Jpem9udGFsLTJcIlxuICAgICAgICAgICAgICB0aXRsZT1cIlNwbGl0IHNjcmVlblwiXG4gICAgICAgICAgICAgIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuc3BsaXR9XCJcbiAgICAgICAgICAgID48L2d2LWJ1dHRvbj5cbiAgICAgICAgICAgIDxndi1idXR0b25cbiAgICAgICAgICAgICAgc21hbGxcbiAgICAgICAgICAgICAgbGlua1xuICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvblwiXG4gICAgICAgICAgICAgIGljb249XCJsYXlvdXQ6bGF5b3V0LXRvcC1wYW5lbC02XCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJNYXhpbWl6ZSBib3R0b21cIlxuICAgICAgICAgICAgICBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLm1heGltaXplQm90dG9tfVwiXG4gICAgICAgICAgICA+PC9ndi1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tXCI+PHNsb3QgbmFtZT1cImJvdHRvbVwiPjwvc2xvdD48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLy8gbGFuZ3VhZ2U9Y3NzXG4gICAgICBjc3NgXG4gICAgICAgIC5ib3gge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIGZsZXg6IDEgMSAwO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbZGlyZWN0aW9uPSdob3Jpem9udGFsJ10pIC5ib3gge1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbZGlyZWN0aW9uPSdob3Jpem9udGFsJ10pIC5sYXlvdXQtaWNvbiB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICoge1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIH1cblxuICAgICAgICA6OnNsb3R0ZWQoKikge1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5uby1vdmVyZmxvdyA6OnNsb3R0ZWQoKikge1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cblxuICAgICAgICAudG9wLFxuICAgICAgICAuYm90dG9tIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cblxuICAgICAgICAubm8tb3ZlcmZsb3cgLnRvcCxcbiAgICAgICAgLm5vLW92ZXJmbG93IC5ib3R0b20ge1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIH1cblxuICAgICAgICAuYm90dG9tIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5sZWZ0IHtcbiAgICAgICAgICB3aWR0aDogNzAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmxlZnQsXG4gICAgICAgIC5yaWdodCB7XG4gICAgICAgICAgcGFkZGluZzogMC4ycmVtO1xuICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRvcCxcbiAgICAgICAgLmJvdHRvbSB7XG4gICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjYmZiZmJmO1xuICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNiZmJmYmY7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW2RpcmVjdGlvbj0naG9yaXpvbnRhbCddKSAudG9wIHtcbiAgICAgICAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbZGlyZWN0aW9uPSdob3Jpem9udGFsJ10pIC5ib3R0b20ge1xuICAgICAgICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRyYW5zaXRpb24gLnRvcCxcbiAgICAgICAgLnRyYW5zaXRpb24gLmJvdHRvbSB7XG4gICAgICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDM1MG1zIGVhc2UtaW4tb3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgLnRvcCB7XG4gICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgICAgICAgaGVpZ2h0OiA1MCU7XG4gICAgICAgIH1cblxuICAgICAgICAuYm90dG9tIHtcbiAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICAgICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtkaXJlY3Rpb249J2hvcml6b250YWwnXSkgLnRvcCxcbiAgICAgICAgOmhvc3QoW2RpcmVjdGlvbj0naG9yaXpvbnRhbCddKSAuYm90dG9tIHtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yZXNpemVyIHtcbiAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDlkOWQ5O1xuICAgICAgICAgIC0tZ3YtaWNvbi0tczogMjBweDtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgICAtLWd2LWljb24tLWM6ICMyODQ0NGY7XG4gICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnJlc2l6ZXIuZHJhZyB7XG4gICAgICAgICAgYm9yZGVyLXdpZHRoOiA0cHggMDtcbiAgICAgICAgICBib3JkZXItc3R5bGU6IGRvdWJsZTtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICNkOWQ5ZDk7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgIH1cblxuICAgICAgICAucmVzaXplciBndi1pY29uLFxuICAgICAgICAucmVzaXplciAuYWN0aW9ucyB7XG4gICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG4gICAgICAgIH1cblxuICAgICAgICAucmVzaXplci5kcmFnIGd2LWljb24sXG4gICAgICAgIC5yZXNpemVyLmRyYWcgLmFjdGlvbnMge1xuICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW2RpcmVjdGlvbj0naG9yaXpvbnRhbCddKSAucmVzaXplci5kcmFnIHtcbiAgICAgICAgICBib3JkZXItd2lkdGg6IDAgNHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnJlc2l6ZXIgPiBndi1pY29uIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbZGlyZWN0aW9uPSdob3Jpem9udGFsJ10pIC5yZXNpemVyIHtcbiAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtkaXJlY3Rpb249J3ZlcnRpY2FsJ10pIC5yZXNpemVyIGd2LWljb24ge1xuICAgICAgICAgIHJpZ2h0OiA0NXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW2RpcmVjdGlvbj0naG9yaXpvbnRhbCddKSAucmVzaXplciBndi1pY29uIHtcbiAgICAgICAgICBsZWZ0OiAtOXB4O1xuICAgICAgICAgIHRvcDogNDVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yZXNpemVyW2RhdGEtZGlyZWN0aW9uPSd2ZXJ0aWNhbCddIHtcbiAgICAgICAgICBjdXJzb3I6IG5zLXJlc2l6ZTtcbiAgICAgICAgICBoZWlnaHQ6IDJweDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yZXNpemVyW2RhdGEtZGlyZWN0aW9uPSdob3Jpem9udGFsJ10ge1xuICAgICAgICAgIGN1cnNvcjogZXctcmVzaXplO1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICB3aWR0aDogMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmFjdGlvbnMge1xuICAgICAgICAgIG1hcmdpbi10b3A6IC0yMnB4O1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcbiAgICAgICAgICBwYWRkaW5nOiAwIDAuMnJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHggNHB4IDAgMDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDlkOWQ5O1xuICAgICAgICB9XG5cbiAgICAgICAgLmFjdGlvbnMgZ3YtYnV0dG9uIHtcbiAgICAgICAgICBtYXJnaW46IDAuMnJlbSAwLjFyZW07XG4gICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMjUwbXMgZWFzZS1pbi1vdXQ7XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aW9uczpmb2N1cy13aXRoaW4sXG4gICAgICAgIC5hY3Rpb25zOmhvdmVyIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjJyZW07XG4gICAgICAgICAgbWFyZ2luLXRvcDogLTY2cHg7XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aW9uczpmb2N1cy13aXRoaW4gZ3YtYnV0dG9uLFxuICAgICAgICAuYWN0aW9uczpob3ZlciBndi1idXR0b24ge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hY3Rpb25zOmZvY3VzLXdpdGhpbiBndi1pY29uLFxuICAgICAgICAuYWN0aW9uczpob3ZlciBndi1pY29uIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3YtcmVzaXphYmxlLXZpZXdzJywgR3ZSZXNpemFibGVWaWV3cyk7XG4iXX0=